pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/32803 )
Change subject: sm: Forward forth and back the P-TMSI signature ......................................................................
sm: Forward forth and back the P-TMSI signature
Change-Id: Ia69b6f885d612c42ab015822031e4c7262f4714e --- 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/03/32803/1
diff --git a/include/osmocom/gprs/sm/sm_prim.h b/include/osmocom/gprs/sm/sm_prim.h index d9be348..d4e17a4 100644 --- a/include/osmocom/gprs/sm/sm_prim.h +++ b/include/osmocom/gprs/sm/sm_prim.h @@ -65,6 +65,7 @@ uint8_t pco_len; struct { uint32_t ptmsi; + uint32_t ptmsi_sig; bool attach_with_imsi; char imsi[OSMO_IMSI_BUF_SIZE]; char imei[GSM23003_IMEI_NUM_DIGITS + 1]; @@ -89,6 +90,7 @@ uint8_t qos_len; struct { uint32_t allocated_ptmsi; + uint32_t allocated_ptmsi_sig; uint32_t allocated_tlli; struct gprs_ra_id rai; } gmm; diff --git a/include/osmocom/gprs/sm/sm_private.h b/include/osmocom/gprs/sm/sm_private.h index 6bf456f..98eaf79 100644 --- a/include/osmocom/gprs/sm/sm_private.h +++ b/include/osmocom/gprs/sm/sm_private.h @@ -127,6 +127,7 @@
struct { uint32_t ptmsi; + uint32_t ptmsi_sig; uint32_t tlli; char imsi[OSMO_IMSI_BUF_SIZE]; char imei[GSM23003_IMEI_NUM_DIGITS + 1]; diff --git a/src/sm/sm.c b/src/sm/sm.c index c5520bf..79fbc7d 100644 --- a/src/sm/sm.c +++ b/src/sm/sm.c @@ -193,6 +193,7 @@ gmm_prim_tx->gmmsm.establish_req.attach_type = OSMO_GPRS_GMM_ATTACH_TYPE_GPRS; gmm_prim_tx->gmmsm.establish_req.attach_with_imsi = (ms->gmm.ptmsi == GSM_RESERVED_TMSI); gmm_prim_tx->gmmsm.establish_req.ptmsi = ms->gmm.ptmsi; + gmm_prim_tx->gmmsm.establish_req.ptmsi_sig = ms->gmm.ptmsi_sig; 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); @@ -224,6 +225,7 @@ if (sme->qos_len) memcpy(sm_prim_tx->smreg.pdp_act_cnf.acc.qos, &sme->qos, sme->qos_len); sm_prim_tx->smreg.pdp_act_cnf.acc.gmm.allocated_ptmsi = sme->ms->gmm.ptmsi; + sm_prim_tx->smreg.pdp_act_cnf.acc.gmm.allocated_ptmsi_sig = sme->ms->gmm.ptmsi_sig; sm_prim_tx->smreg.pdp_act_cnf.acc.gmm.allocated_tlli = sme->ms->gmm.tlli; memcpy(&sm_prim_tx->smreg.pdp_act_cnf.acc.gmm.rai, &sme->ms->gmm.ra, sizeof(sme->ms->gmm.ra)); } else { diff --git a/src/sm/sm_prim.c b/src/sm/sm_prim.c index ea84d3e..158959e 100644 --- a/src/sm/sm_prim.c +++ b/src/sm/sm_prim.c @@ -270,6 +270,7 @@
/* Info required to establish GMM: */ ms->gmm.ptmsi = sm_prim->smreg.pdp_act_req.gmm.ptmsi; + ms->gmm.ptmsi_sig = sm_prim->smreg.pdp_act_req.gmm.ptmsi_sig; if (sm_prim->smreg.pdp_act_req.gmm.imsi[0] != '\0') OSMO_STRLCPY_ARRAY(ms->gmm.imsi, sm_prim->smreg.pdp_act_req.gmm.imsi); if (sm_prim->smreg.pdp_act_req.gmm.imei[0] != '\0') @@ -479,6 +480,7 @@ /* Update allocated PTMSI: */ if (gmm_prim->gmmsm.establish_cnf.acc.allocated_ptmsi != GSM_RESERVED_TMSI) sme->ms->gmm.ptmsi = gmm_prim->gmmsm.establish_cnf.acc.allocated_ptmsi; + sme->ms->gmm.ptmsi_sig = gmm_prim->gmmsm.establish_cnf.acc.allocated_ptmsi_sig; /* Set allocated TLLI: */ sme->ms->gmm.tlli = gmm_prim->gmmsm.establish_cnf.acc.allocated_tlli; /* Set the current RAI: */