pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmocom-bb/+/32497 )
Change subject: layer23: modem: Store P-TMSI independently in subscriber ......................................................................
layer23: modem: Store P-TMSI independently in subscriber
Change-Id: I6f6d230d8c3c4fce27ba87cf9f953dc9db83cb72 --- M src/host/layer23/include/osmocom/bb/common/subscriber.h M src/host/layer23/src/common/subscriber.c M src/host/layer23/src/modem/gmm.c M src/host/layer23/src/modem/sm.c 4 files changed, 18 insertions(+), 4 deletions(-)
Approvals: fixeria: Looks good to me, but someone else must approve osmith: Looks good to me, but someone else must approve Jenkins Builder: Verified pespin: Looks good to me, approved
diff --git a/src/host/layer23/include/osmocom/bb/common/subscriber.h b/src/host/layer23/include/osmocom/bb/common/subscriber.h index 3de8cda..1dd1869 100644 --- a/src/host/layer23/include/osmocom/bb/common/subscriber.h +++ b/src/host/layer23/include/osmocom/bb/common/subscriber.h @@ -46,6 +46,7 @@
/* TMSI / LAI */ uint32_t tmsi; /* invalid tmsi: GSM_RESERVED_TMSI */ + uint32_t ptmsi; /* invalid tmsi: GSM_RESERVED_TMSI */ uint16_t mcc, mnc, lac; /* invalid lac: 0x0000 */
diff --git a/src/host/layer23/src/common/subscriber.c b/src/host/layer23/src/common/subscriber.c index c75c3ce..0669598 100644 --- a/src/host/layer23/src/common/subscriber.c +++ b/src/host/layer23/src/common/subscriber.c @@ -79,6 +79,7 @@
/* set TMSI / LAC invalid */ subscr->tmsi = GSM_RESERVED_TMSI; + subscr->ptmsi = GSM_RESERVED_TMSI; subscr->lac = 0x0000;
/* set key invalid */ @@ -173,6 +174,7 @@ subscr->mnc = mnc; subscr->lac = lac; subscr->tmsi = tmsi; + subscr->ptmsi = GSM_RESERVED_TMSI; subscr->always_search_hplmn = set->test_always; subscr->t6m_hplmn = 1; /* try to find home network every 6 min */ strcpy(subscr->imsi, set->test_imsi); @@ -1155,6 +1157,8 @@ (subscr->imsi_attached) ? "attached" : "detached"); if (subscr->tmsi != GSM_RESERVED_TMSI) print(priv, " TMSI 0x%08x", subscr->tmsi); + if (subscr->ptmsi != GSM_RESERVED_TMSI) + print(priv, " P-TMSI 0x%08x", subscr->ptmsi); if (subscr->lac > 0x0000 && subscr->lac < 0xfffe) { print(priv, "\n"); print(priv, " LAI: MCC %s MNC %s LAC 0x%04x " diff --git a/src/host/layer23/src/modem/gmm.c b/src/host/layer23/src/modem/gmm.c index af8b060..6d1f518 100644 --- a/src/host/layer23/src/modem/gmm.c +++ b/src/host/layer23/src/modem/gmm.c @@ -147,8 +147,8 @@
gmm_prim = osmo_gprs_gmm_prim_alloc_gmmreg_attach_req(); gmm_prim->gmmreg.attach_req.attach_type = OSMO_GPRS_GMM_ATTACH_TYPE_GPRS; - gmm_prim->gmmreg.attach_req.ptmsi = subscr->tmsi; - gmm_prim->gmmreg.attach_req.attach_with_imsi = (subscr->tmsi == GSM_RESERVED_TMSI); + gmm_prim->gmmreg.attach_req.ptmsi = subscr->ptmsi; + gmm_prim->gmmreg.attach_req.attach_with_imsi = (subscr->ptmsi == GSM_RESERVED_TMSI); memcpy(gmm_prim->gmmreg.attach_req.imsi, subscr->imsi, ARRAY_SIZE(subscr->imsi)); memcpy(gmm_prim->gmmreg.attach_req.imei, ms->settings.imei, ARRAY_SIZE(ms->settings.imei)); memcpy(gmm_prim->gmmreg.attach_req.imeisv, ms->settings.imeisv, ARRAY_SIZE(ms->settings.imeisv)); @@ -165,7 +165,7 @@ int rc;
gmm_prim = osmo_gprs_gmm_prim_alloc_gmmreg_detach_req(); - gmm_prim->gmmreg.detach_req.ptmsi = subscr->tmsi; + gmm_prim->gmmreg.detach_req.ptmsi = subscr->ptmsi; gmm_prim->gmmreg.detach_req.detach_type = OSMO_GPRS_GMM_DETACH_MS_TYPE_GPRS; gmm_prim->gmmreg.detach_req.poweroff_type = OSMO_GPRS_GMM_DETACH_POWEROFF_TYPE_NORMAL; rc = osmo_gprs_gmm_prim_upper_down(gmm_prim); diff --git a/src/host/layer23/src/modem/sm.c b/src/host/layer23/src/modem/sm.c index 575321f..2a404d4 100644 --- a/src/host/layer23/src/modem/sm.c +++ b/src/host/layer23/src/modem/sm.c @@ -251,7 +251,7 @@ memcpy(sm_prim->smreg.pdp_act_req.pco, pco, sizeof(pco)); sm_prim->smreg.pdp_act_req.pco_len = 1; OSMO_STRLCPY_ARRAY(sm_prim->smreg.pdp_act_req.apn, apn->cfg.name); - sm_prim->smreg.pdp_act_req.gmm.ptmsi = subscr->tmsi; + sm_prim->smreg.pdp_act_req.gmm.ptmsi = subscr->ptmsi; OSMO_STRLCPY_ARRAY(sm_prim->smreg.pdp_act_req.gmm.imsi, subscr->imsi); OSMO_STRLCPY_ARRAY(sm_prim->smreg.pdp_act_req.gmm.imei, ms->settings.imei); OSMO_STRLCPY_ARRAY(sm_prim->smreg.pdp_act_req.gmm.imeisv, ms->settings.imeisv);