lynxis lazus has uploaded this change for review.
libvlr: lu_fsm: split off creation and start of the LU FSM
Change-Id: I2ed3d7cc79b208d1810b4c03c4cb2d6cab83020f
---
M include/osmocom/vlr/vlr.h
M src/libvlr/vlr_lu_fsm.c
M src/sgsn/gprs_rau_fsm.c
3 files changed, 25 insertions(+), 5 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-sgsn refs/changes/75/43475/1
diff --git a/include/osmocom/vlr/vlr.h b/include/osmocom/vlr/vlr.h
index d40d680..a931d48 100644
--- a/include/osmocom/vlr/vlr.h
+++ b/include/osmocom/vlr/vlr.h
@@ -312,6 +312,8 @@
bool is_r99, bool is_utran,
bool assign_tmsi);
+int vlr_loc_start(struct osmo_fsm_inst *fi);
+
struct osmo_fsm_inst *
vlr_ra_update(struct osmo_fsm_inst *parent,
uint32_t parent_event_success,
@@ -328,6 +330,8 @@
bool is_r99, bool is_utran,
bool assign_tmsi);
+int vlr_ra_start(struct osmo_fsm_inst *fi);
+
void vlr_loc_update_cancel(struct osmo_fsm_inst *fi,
enum osmo_fsm_term_cause fsm_cause,
uint8_t gsm48_cause);
diff --git a/src/libvlr/vlr_lu_fsm.c b/src/libvlr/vlr_lu_fsm.c
index e2b714b..1b1a1d2 100644
--- a/src/libvlr/vlr_lu_fsm.c
+++ b/src/libvlr/vlr_lu_fsm.c
@@ -1750,11 +1750,17 @@
LOGPFSML(fi, LOGL_ERROR,
"Authentication off on UTRAN network. Good luck.\n");
- osmo_fsm_inst_dispatch(fi, VLR_ULA_E_UPDATE_LA, NULL);
-
return fi;
}
+int vlr_loc_start(struct osmo_fsm_inst *fi)
+{
+ if (fi)
+ return osmo_fsm_inst_dispatch(fi, VLR_ULA_E_UPDATE_LA, NULL);
+
+ return -ENOENT;
+}
+
struct osmo_fsm_inst *
vlr_ra_update(struct osmo_fsm_inst *parent,
uint32_t parent_event_success,
@@ -1808,11 +1814,17 @@
LOGPFSML(fi, LOGL_ERROR,
"Authentication off on UTRAN network. Good luck.\n");
- osmo_fsm_inst_dispatch(fi, VLR_ULA_E_UPDATE_LA, NULL);
-
return fi;
}
+int vlr_ra_start(struct osmo_fsm_inst *fi)
+{
+ if (fi)
+ return osmo_fsm_inst_dispatch(fi, VLR_ULA_E_UPDATE_LA, NULL);
+
+ return -ENOENT;
+}
+
void vlr_loc_update_cancel(struct osmo_fsm_inst *fi,
enum osmo_fsm_term_cause fsm_cause,
uint8_t gsm48_cause)
diff --git a/src/sgsn/gprs_rau_fsm.c b/src/sgsn/gprs_rau_fsm.c
index a9a79e6..1253975 100644
--- a/src/sgsn/gprs_rau_fsm.c
+++ b/src/sgsn/gprs_rau_fsm.c
@@ -77,10 +77,11 @@
static void gmm_rau_fsm_s_init(struct osmo_fsm_inst *fi, uint32_t event, void *data)
{
struct sgsn_mm_ctx *mmctx = gmm_rau_fsm_priv(fi);
+ struct osmo_fsm_inst *inst;
switch (event) {
case GMM_RAU_E_UE_RAU_REQUEST:
- mmctx->vsub->lu_fsm = vlr_ra_update(
+ inst = vlr_ra_update(
mmctx->attach_rau.rau_fsm, GMM_RAU_E_VLR_TERM_SUCCESS, GMM_RAU_E_VLR_TERM_FAIL, NULL,
sgsn->vlr,
mmctx,
@@ -99,6 +100,9 @@
osmo_tdef_fsm_inst_state_chg(fi, GMM_RAU_S_WAIT_VLR_ANSWER, gmm_rau_tdef_states, gmm_rau_tdefs, 0);
osmo_fsm_inst_dispatch(mmctx->gmm_fsm, E_GMM_COMMON_PROC_INIT_REQ, NULL);
+ if (inst)
+ vlr_ra_start(inst);
+
break;
default:
OSMO_ASSERT(0);
To view, visit change 43475. To unsubscribe, or for help writing mail filters, visit settings.