pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/32736 )
Change subject: sm: Allow passing old RAI during attach ......................................................................
sm: Allow passing old RAI during attach
This is stored by the MS and hence shall be passed by the application.
Change-Id: I13118bed3f7035ff9b4c2c21ed9557f48f5596e6 --- M include/osmocom/gprs/sm/sm_prim.h M include/osmocom/gprs/sm/sm_private.h M src/sm/sm.c M src/sm/sm_prim.c 4 files changed, 16 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-gprs refs/changes/36/32736/1
diff --git a/include/osmocom/gprs/sm/sm_prim.h b/include/osmocom/gprs/sm/sm_prim.h index baa85ed..0cfc5bb 100644 --- a/include/osmocom/gprs/sm/sm_prim.h +++ b/include/osmocom/gprs/sm/sm_prim.h @@ -13,6 +13,7 @@ #include <osmocom/core/prim.h> #include <osmocom/core/socket.h> #include <osmocom/gsm/protocol/gsm_23_003.h> +#include <osmocom/gsm/gsm48.h>
#include <osmocom/gprs/sm/sm.h>
@@ -68,6 +69,7 @@ char imsi[OSMO_IMSI_BUF_SIZE]; char imei[GSM23003_IMEI_NUM_DIGITS + 1]; char imeisv[GSM23003_IMEISV_NUM_DIGITS+1]; + struct gprs_ra_id old_rai; } gmm; } pdp_act_req;
diff --git a/include/osmocom/gprs/sm/sm_private.h b/include/osmocom/gprs/sm/sm_private.h index 99beaeb..6bf456f 100644 --- a/include/osmocom/gprs/sm/sm_private.h +++ b/include/osmocom/gprs/sm/sm_private.h @@ -131,6 +131,7 @@ char imsi[OSMO_IMSI_BUF_SIZE]; char imei[GSM23003_IMEI_NUM_DIGITS + 1]; char imeisv[GSM23003_IMEISV_NUM_DIGITS+1]; + struct gprs_ra_id ra; /* TS 24.008 10.5.5.15 (decoded) */ } gmm; };
diff --git a/src/sm/sm.c b/src/sm/sm.c index 3cddb58..b13559c 100644 --- a/src/sm/sm.c +++ b/src/sm/sm.c @@ -196,6 +196,7 @@ OSMO_STRLCPY_ARRAY(gmm_prim_tx->gmmsm.establish_req.imsi, ms->gmm.imsi); OSMO_STRLCPY_ARRAY(gmm_prim_tx->gmmsm.establish_req.imei, ms->gmm.imei); OSMO_STRLCPY_ARRAY(gmm_prim_tx->gmmsm.establish_req.imeisv, ms->gmm.imeisv); + memcpy(&gmm_prim_tx->gmmsm.establish_req.old_rai, &ms->gmm.ra, sizeof(ms->gmm.ra));
rc = gprs_sm_prim_call_gmm_down_cb(gmm_prim_tx); return rc; diff --git a/src/sm/sm_prim.c b/src/sm/sm_prim.c index bb5653e..db6b174 100644 --- a/src/sm/sm_prim.c +++ b/src/sm/sm_prim.c @@ -276,6 +276,7 @@ OSMO_STRLCPY_ARRAY(ms->gmm.imei, sm_prim->smreg.pdp_act_req.gmm.imei); if (sm_prim->smreg.pdp_act_req.gmm.imeisv[0] != '\0') OSMO_STRLCPY_ARRAY(ms->gmm.imeisv, sm_prim->smreg.pdp_act_req.gmm.imeisv); + memcpy(&ms->gmm.ra, &sm_prim->smreg.pdp_act_req.gmm.old_rai, sizeof(ms->gmm.ra));
rc = osmo_fsm_inst_dispatch(sme->ms_fsm.fi, GPRS_SM_MS_EV_TX_ACT_PDP_CTX_REQ, NULL);