<p>neels has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-msc/+/18715">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">use new osmo_mobile_identity API everywhere<br><br>Depends: Ic3f969e739654c1e8c387aedeeba5cce07fe2307 (libosmocore)<br>Change-Id: Idfc8e576e10756aeaacf5569f6178068313eb7ea<br>---<br>M include/osmocom/msc/gsm_04_08.h<br>M include/osmocom/msc/msub.h<br>M include/osmocom/msc/vlr.h<br>M src/libmsc/gsm_04_08.c<br>M src/libmsc/msc_a.c<br>M src/libmsc/msub.c<br>M src/libmsc/ran_msg_a.c<br>M src/libmsc/sgs_iface.c<br>M src/libvlr/vlr.c<br>M src/libvlr/vlr_access_req_fsm.c<br>M tests/msc_vlr/msc_vlr_test_authen_reuse.err<br>M tests/msc_vlr/msc_vlr_test_call.err<br>M tests/msc_vlr/msc_vlr_test_gsm_authen.err<br>M tests/msc_vlr/msc_vlr_test_gsm_ciph.err<br>M tests/msc_vlr/msc_vlr_test_ms_timeout.err<br>M tests/msc_vlr/msc_vlr_test_no_authen.err<br>M tests/msc_vlr/msc_vlr_test_reject_concurrency.err<br>M tests/msc_vlr/msc_vlr_test_rest.err<br>M tests/msc_vlr/msc_vlr_test_ss.err<br>M tests/msc_vlr/msc_vlr_test_umts_authen.err<br>20 files changed, 231 insertions(+), 256 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/15/18715/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/msc/gsm_04_08.h b/include/osmocom/msc/gsm_04_08.h</span><br><span>index 661da42..bfc8027 100644</span><br><span>--- a/include/osmocom/msc/gsm_04_08.h</span><br><span>+++ b/include/osmocom/msc/gsm_04_08.h</span><br><span>@@ -54,8 +54,6 @@</span><br><span>                int h_len);</span><br><span> </span><br><span> int send_siemens_mrpci(struct gsm_lchan *lchan, uint8_t *classmark2_lv);</span><br><span style="color: hsl(0, 100%, 40%);">-int gsm48_extract_mi(uint8_t *classmark2, int length, char *mi_string, uint8_t *mi_type);</span><br><span style="color: hsl(0, 100%, 40%);">-int gsm48_paging_extract_mi(struct gsm48_pag_resp *pag, int length, char *mi_string, uint8_t *mi_type);</span><br><span> </span><br><span> int gsm48_lchan_modify(struct gsm_lchan *lchan, uint8_t lchan_mode);</span><br><span> int gsm48_rx_rr_modif_ack(struct msgb *msg);</span><br><span>diff --git a/include/osmocom/msc/msub.h b/include/osmocom/msc/msub.h</span><br><span>index 2418feb..10673ca 100644</span><br><span>--- a/include/osmocom/msc/msub.h</span><br><span>+++ b/include/osmocom/msc/msub.h</span><br><span>@@ -8,6 +8,7 @@</span><br><span> enum gsm48_gsm_cause;</span><br><span> enum complete_layer3_type;</span><br><span> enum osmo_gsup_access_network_protocol;</span><br><span style="color: hsl(120, 100%, 40%);">+struct osmo_mobile_identity;</span><br><span> </span><br><span> #define VSUB_USE_MSUB "active-conn"</span><br><span> </span><br><span>@@ -64,7 +65,7 @@</span><br><span>                    const char *file, int line);</span><br><span> int msub_tx_an_apdu(struct msub *msub, enum msc_role from_role, enum msc_role to_role, struct an_apdu *an_apdu);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-void msub_update_id_from_mi(struct msub *msub, const uint8_t mi[], uint8_t mi_len);</span><br><span style="color: hsl(120, 100%, 40%);">+void msub_update_id_from_mi(struct msub *msub, const struct osmo_mobile_identity *mi);</span><br><span> void msub_update_id(struct msub *msub);</span><br><span> void msub_update_id_for_vsub(struct vlr_subscr *for_vsub);</span><br><span> </span><br><span>diff --git a/include/osmocom/msc/vlr.h b/include/osmocom/msc/vlr.h</span><br><span>index 615c6c8..83f83c7 100644</span><br><span>--- a/include/osmocom/msc/vlr.h</span><br><span>+++ b/include/osmocom/msc/vlr.h</span><br><span>@@ -23,6 +23,7 @@</span><br><span>    LOGP(DVLR, level, "SUBSCR(%s) " fmt, vlr_subscr_name(vsub), ## args)</span><br><span> </span><br><span> struct log_target;</span><br><span style="color: hsl(120, 100%, 40%);">+struct osmo_mobile_identity;</span><br><span> </span><br><span> #define VLR_SUBSCRIBER_NO_EXPIRATION      0</span><br><span> #define VLR_SUBSCRIBER_LU_EXPIRATION_INTERVAL      60      /* in seconds */</span><br><span>@@ -302,7 +303,7 @@</span><br><span> /* tell the VLR that the RAN connection is gone */</span><br><span> int vlr_subscr_disconnected(struct vlr_subscr *vsub);</span><br><span> bool vlr_subscr_expire(struct vlr_subscr *vsub);</span><br><span style="color: hsl(0, 100%, 40%);">-int vlr_subscr_rx_id_resp(struct vlr_subscr *vsub, const uint8_t *mi, size_t mi_len);</span><br><span style="color: hsl(120, 100%, 40%);">+int vlr_subscr_rx_id_resp(struct vlr_subscr *vsub, const struct osmo_mobile_identity *mi);</span><br><span> int vlr_subscr_rx_auth_resp(struct vlr_subscr *vsub, bool is_r99, bool is_utran,</span><br><span>                           const uint8_t *res, uint8_t res_len);</span><br><span> int vlr_subscr_rx_auth_fail(struct vlr_subscr *vsub, const uint8_t *auts);</span><br><span>@@ -440,7 +441,7 @@</span><br><span>                 void *parent_event_data,</span><br><span>             struct vlr_instance *vlr, void *msc_conn_ref,</span><br><span>                enum vlr_parq_type type, enum osmo_cm_service_type cm_service_type,</span><br><span style="color: hsl(0, 100%, 40%);">-             const uint8_t *mi_lv,</span><br><span style="color: hsl(120, 100%, 40%);">+                 const struct osmo_mobile_identity *mi,</span><br><span>               const struct osmo_location_area_id *lai,</span><br><span>             bool authentication_required,</span><br><span>                bool ciphering_required,</span><br><span>diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c</span><br><span>index d612e40..e4db3ca 100644</span><br><span>--- a/src/libmsc/gsm_04_08.c</span><br><span>+++ b/src/libmsc/gsm_04_08.c</span><br><span>@@ -116,13 +116,15 @@</span><br><span>       struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 LOC UPD ACC");</span><br><span>         struct gsm48_hdr *gh;</span><br><span>        struct gsm48_loc_area_id *lai;</span><br><span style="color: hsl(0, 100%, 40%);">-  uint8_t *mid;</span><br><span>        struct gsm_network *net = msc_a_net(msc_a);</span><br><span>  struct vlr_subscr *vsub = msc_a_vsub(msc_a);</span><br><span>         struct osmo_location_area_id laid = {</span><br><span>                .plmn = net->plmn,</span><br><span>                .lac = vsub->cgi.lai.lac,</span><br><span>         };</span><br><span style="color: hsl(120, 100%, 40%);">+    uint8_t *l;</span><br><span style="color: hsl(120, 100%, 40%);">+   int rc;</span><br><span style="color: hsl(120, 100%, 40%);">+       struct osmo_mobile_identity mi = {};</span><br><span> </span><br><span>     gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh));</span><br><span>        gh->proto_discr = GSM48_PDISC_MM;</span><br><span>@@ -135,23 +137,28 @@</span><br><span>                 /* we did not allocate a TMSI to the MS, so we need to</span><br><span>                * include the IMSI in order for the MS to delete any</span><br><span>                 * old TMSI that might still be allocated */</span><br><span style="color: hsl(0, 100%, 40%);">-            uint8_t mi[10];</span><br><span style="color: hsl(0, 100%, 40%);">-         int len;</span><br><span style="color: hsl(0, 100%, 40%);">-                len = gsm48_generate_mid_from_imsi(mi, vsub->imsi);</span><br><span style="color: hsl(0, 100%, 40%);">-          mid = msgb_put(msg, len);</span><br><span style="color: hsl(0, 100%, 40%);">-               memcpy(mid, mi, len);</span><br><span style="color: hsl(120, 100%, 40%);">+         mi.type = GSM_MI_TYPE_IMSI;</span><br><span style="color: hsl(120, 100%, 40%);">+           OSMO_STRLCPY_ARRAY(mi.imsi, vsub->imsi);</span><br><span>          DEBUGP(DMM, "-> %s LOCATION UPDATE ACCEPT\n",</span><br><span>                  vlr_subscr_name(vsub));</span><br><span>       } else {</span><br><span>             /* Include the TMSI, which means that the MS will send a</span><br><span>              * TMSI REALLOCATION COMPLETE, and we should wait for</span><br><span>                 * that until T3250 expiration */</span><br><span style="color: hsl(0, 100%, 40%);">-               mid = msgb_put(msg, GSM48_MID_TMSI_LEN);</span><br><span style="color: hsl(0, 100%, 40%);">-                gsm48_generate_mid_from_tmsi(mid, send_tmsi);</span><br><span style="color: hsl(120, 100%, 40%);">+         mi.type = GSM_MI_TYPE_TMSI;</span><br><span style="color: hsl(120, 100%, 40%);">+           mi.tmsi = send_tmsi;</span><br><span>                 DEBUGP(DMM, "-> %s LOCATION UPDATE ACCEPT (TMSI = 0x%08x)\n",</span><br><span>                  vlr_subscr_name(vsub),</span><br><span>                       send_tmsi);</span><br><span>   }</span><br><span style="color: hsl(120, 100%, 40%);">+     l = msgb_tl_put(msg, GSM48_IE_MOBILE_ID);</span><br><span style="color: hsl(120, 100%, 40%);">+     rc = osmo_mobile_identity_encode_msgb(msg, &mi, false);</span><br><span style="color: hsl(120, 100%, 40%);">+   if (rc < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+              msgb_free(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+               return -EINVAL;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+     *l = rc;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>   /* TODO: Follow-on proceed */</span><br><span>        /* TODO: CTS permission */</span><br><span>   /* TODO: Equivalent PLMNs */</span><br><span>@@ -180,10 +187,11 @@</span><br><span> static int mm_rx_id_resp(struct msc_a *msc_a, struct msgb *msg)</span><br><span> {</span><br><span>         struct gsm48_hdr *gh = msgb_l3(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-    uint8_t *mi = gh->data+1;</span><br><span style="color: hsl(120, 100%, 40%);">+  uint8_t *mi_data = gh->data+1;</span><br><span>    uint8_t mi_len = gh->data[0];</span><br><span style="color: hsl(0, 100%, 40%);">-        uint8_t mi_type;</span><br><span>     struct vlr_subscr *vsub = msc_a_vsub(msc_a);</span><br><span style="color: hsl(120, 100%, 40%);">+  struct osmo_mobile_identity mi;</span><br><span style="color: hsl(120, 100%, 40%);">+       int rc;</span><br><span> </span><br><span>  if (!vsub) {</span><br><span>                 LOGP(DMM, LOGL_ERROR,</span><br><span>@@ -198,26 +206,26 @@</span><br><span>                return -EINVAL;</span><br><span>      }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   /* Make sure we got what we expected */</span><br><span style="color: hsl(0, 100%, 40%);">- mi_type = mi[0] & GSM_MI_TYPE_MASK;</span><br><span style="color: hsl(0, 100%, 40%);">- if (mi_type == GSM_MI_TYPE_NONE) {</span><br><span style="color: hsl(0, 100%, 40%);">-              LOGP(DMM, LOGL_NOTICE, "MM Identity Response contains no identity, "</span><br><span style="color: hsl(0, 100%, 40%);">-                                 "perhaps the MS has no Mobile Identity type %s?\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                                   gsm48_mi_type_name(msc_a->mm_id_req_type));</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = osmo_mobile_identity_decode(&mi, mi_data, mi_len, false);</span><br><span style="color: hsl(120, 100%, 40%);">+    if (rc) {</span><br><span style="color: hsl(120, 100%, 40%);">+             LOGP(DMM, LOGL_ERROR, "Failure to decode Mobile Identity in MM Identity Response (rc=%d)\n", rc);</span><br><span>          return -EINVAL;</span><br><span style="color: hsl(0, 100%, 40%);">- } else if (mi_type != msc_a->mm_id_req_type) {</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Make sure we got what we expected */</span><br><span style="color: hsl(120, 100%, 40%);">+       if (mi.type != msc_a->mm_id_req_type) {</span><br><span>           LOGP(DMM, LOGL_NOTICE, "MM Identity Response contains unexpected "</span><br><span>                                        "Mobile Identity type %s (extected %s)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                                    gsm48_mi_type_name(mi_type),</span><br><span style="color: hsl(120, 100%, 40%);">+                                  gsm48_mi_type_name(mi.type),</span><br><span>                                 gsm48_mi_type_name(msc_a->mm_id_req_type));</span><br><span>                return -EINVAL;</span><br><span>      }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   DEBUGP(DMM, "IDENTITY RESPONSE: MI=%s\n", osmo_mi_name(mi, mi_len));</span><br><span style="color: hsl(120, 100%, 40%);">+        DEBUGP(DMM, "IDENTITY RESPONSE: %s\n", osmo_mobile_identity_name_c(OTC_SELECT, &mi));</span><br><span> </span><br><span>      osmo_signal_dispatch(SS_SUBSCR, S_SUBSCR_IDENTITY, gh->data);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    return vlr_subscr_rx_id_resp(vsub, mi, mi_len);</span><br><span style="color: hsl(120, 100%, 40%);">+       return vlr_subscr_rx_id_resp(vsub, &mi);</span><br><span> }</span><br><span> </span><br><span> /* 9.2.5 CM service accept */</span><br><span>@@ -311,8 +319,6 @@</span><br><span> {</span><br><span>    struct gsm48_hdr *gh = msgb_l3(msg);</span><br><span>         struct gsm48_loc_upd_req *lu;</span><br><span style="color: hsl(0, 100%, 40%);">-   uint8_t mi_type;</span><br><span style="color: hsl(0, 100%, 40%);">-        char mi_string[GSM48_MI_SIZE];</span><br><span>       enum vlr_lu_type vlr_lu_type = VLR_LU_TYPE_REGULAR;</span><br><span>  uint32_t tmsi;</span><br><span>       char *imsi;</span><br><span>@@ -321,6 +327,15 @@</span><br><span>   bool is_utran;</span><br><span>       struct gsm_network *net = msc_a_net(msc_a);</span><br><span>  struct vlr_subscr *vsub;</span><br><span style="color: hsl(120, 100%, 40%);">+      struct osmo_mobile_identity mi;</span><br><span style="color: hsl(120, 100%, 40%);">+       int rc;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     rc = osmo_mobile_identity_decode_from_l3(&mi, msg, false);</span><br><span style="color: hsl(120, 100%, 40%);">+        if (rc) {</span><br><span style="color: hsl(120, 100%, 40%);">+             LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+                       "Failed to decode Mobile Identity in Location Updating Request\n");</span><br><span style="color: hsl(120, 100%, 40%);">+           return -EINVAL;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> </span><br><span>        lu = (struct gsm48_loc_upd_req *) gh->data;</span><br><span> </span><br><span>@@ -328,7 +343,7 @@</span><br><span>             LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR,</span><br><span>                             "Cannot accept another LU, conn already busy establishing authenticity;"</span><br><span>                           " extraneous LOCATION UPDATING REQUEST: MI=%s LU-type=%s\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                          osmo_mi_name(lu->mi, lu->mi_len), osmo_lu_type_name(lu->type));</span><br><span style="color: hsl(120, 100%, 40%);">+                      osmo_mobile_identity_name_c(OTC_SELECT, &mi), osmo_lu_type_name(lu->type));</span><br><span>              return -EINVAL;</span><br><span>      }</span><br><span> </span><br><span>@@ -336,17 +351,18 @@</span><br><span>                LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR,</span><br><span>                             "Cannot accept another LU, conn already established;"</span><br><span>                              " extraneous LOCATION UPDATING REQUEST: MI=%s LU-type=%s\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                          osmo_mi_name(lu->mi, lu->mi_len), osmo_lu_type_name(lu->type));</span><br><span style="color: hsl(120, 100%, 40%);">+                      osmo_mobile_identity_name_c(OTC_SELECT, &mi), osmo_lu_type_name(lu->type));</span><br><span>              return -EINVAL;</span><br><span>      }</span><br><span> </span><br><span>        msc_a->complete_layer3_type = COMPLETE_LAYER3_LU;</span><br><span style="color: hsl(0, 100%, 40%);">-    msub_update_id_from_mi(msc_a->c.msub, lu->mi, lu->mi_len);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ msub_update_id_from_mi(msc_a->c.msub, &mi);</span><br><span> </span><br><span>       LOG_MSC_A_CAT(msc_a, DMM, LOGL_DEBUG, "LOCATION UPDATING REQUEST: MI=%s LU-type=%s\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                     osmo_mi_name(lu->mi, lu->mi_len), osmo_lu_type_name(lu->type));</span><br><span style="color: hsl(120, 100%, 40%);">+              osmo_mobile_identity_name_c(OTC_SELECT, &mi), osmo_lu_type_name(lu->type));</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     osmo_signal_dispatch(SS_SUBSCR, S_SUBSCR_IDENTITY, &lu->mi_len);</span><br><span style="color: hsl(120, 100%, 40%);">+       osmo_signal_dispatch(SS_SUBSCR, S_SUBSCR_IDENTITY, &mi);</span><br><span> </span><br><span>     switch (lu->type) {</span><br><span>       case GSM48_LUPD_NORMAL:</span><br><span>@@ -368,15 +384,13 @@</span><br><span>      /* TODO: 10.5.7.8 Device properties */</span><br><span>       /* TODO: 10.5.1.15 MS network feature support */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    mi_type = lu->mi[0] & GSM_MI_TYPE_MASK;</span><br><span style="color: hsl(0, 100%, 40%);">-  gsm48_mi_to_string(mi_string, sizeof(mi_string), lu->mi, lu->mi_len);</span><br><span style="color: hsl(0, 100%, 40%);">-     switch (mi_type) {</span><br><span style="color: hsl(120, 100%, 40%);">+    switch (mi.type) {</span><br><span>   case GSM_MI_TYPE_IMSI:</span><br><span>               tmsi = GSM_RESERVED_TMSI;</span><br><span style="color: hsl(0, 100%, 40%);">-               imsi = mi_string;</span><br><span style="color: hsl(120, 100%, 40%);">+             imsi = mi.imsi;</span><br><span>              break;</span><br><span>       case GSM_MI_TYPE_TMSI:</span><br><span style="color: hsl(0, 100%, 40%);">-          tmsi = tmsi_from_string(mi_string);</span><br><span style="color: hsl(120, 100%, 40%);">+           tmsi = mi.tmsi;</span><br><span>              imsi = NULL;</span><br><span>                 break;</span><br><span>       default:</span><br><span>@@ -654,37 +668,30 @@</span><br><span> static int msc_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum osmo_cm_service_type cm_service_type,</span><br><span>                                   enum gsm48_reject_value cause);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int cm_serv_reuse_conn(struct msc_a *msc_a, const uint8_t *mi_lv, enum osmo_cm_service_type cm_serv_type)</span><br><span style="color: hsl(120, 100%, 40%);">+static int cm_serv_reuse_conn(struct msc_a *msc_a, const struct osmo_mobile_identity *mi, enum osmo_cm_service_type cm_serv_type)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-   uint8_t mi_type;</span><br><span style="color: hsl(0, 100%, 40%);">-        char mi_string[GSM48_MI_SIZE];</span><br><span style="color: hsl(0, 100%, 40%);">-  uint32_t tmsi;</span><br><span>       struct gsm_network *net = msc_a_net(msc_a);</span><br><span>  struct vlr_subscr *vsub = msc_a_vsub(msc_a);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        gsm48_mi_to_string(mi_string, sizeof(mi_string), mi_lv+1, mi_lv[0]);</span><br><span style="color: hsl(0, 100%, 40%);">-    mi_type = mi_lv[1] & GSM_MI_TYPE_MASK;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      switch (mi_type) {</span><br><span style="color: hsl(120, 100%, 40%);">+    switch (mi->type) {</span><br><span>       case GSM_MI_TYPE_IMSI:</span><br><span style="color: hsl(0, 100%, 40%);">-          if (vlr_subscr_matches_imsi(vsub, mi_string))</span><br><span style="color: hsl(120, 100%, 40%);">+         if (vlr_subscr_matches_imsi(vsub, mi->imsi))</span><br><span>                      goto accept_reuse;</span><br><span>           break;</span><br><span>       case GSM_MI_TYPE_TMSI:</span><br><span style="color: hsl(0, 100%, 40%);">-          tmsi = osmo_load32be(mi_lv+2);</span><br><span style="color: hsl(0, 100%, 40%);">-          if (vlr_subscr_matches_tmsi(vsub, tmsi))</span><br><span style="color: hsl(120, 100%, 40%);">+              if (vlr_subscr_matches_tmsi(vsub, mi->tmsi))</span><br><span>                      goto accept_reuse;</span><br><span>           break;</span><br><span>       case GSM_MI_TYPE_IMEI:</span><br><span style="color: hsl(0, 100%, 40%);">-          if (vlr_subscr_matches_imei(vsub, mi_string))</span><br><span style="color: hsl(120, 100%, 40%);">+         if (vlr_subscr_matches_imei(vsub, mi->imei))</span><br><span>                      goto accept_reuse;</span><br><span>           break;</span><br><span>       default:</span><br><span>             break;</span><br><span>       }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR, "CM Service Request with mismatching mobile identity: %s %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">-               gsm48_mi_type_name(mi_type), mi_string);</span><br><span style="color: hsl(120, 100%, 40%);">+        LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR, "CM Service Request with mismatching mobile identity: %s\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                osmo_mobile_identity_name_c(OTC_SELECT, mi));</span><br><span>  msc_vlr_tx_cm_serv_rej(msc_a, cm_serv_type, GSM48_REJECT_ILLEGAL_MS);</span><br><span>        return -EINVAL;</span><br><span> </span><br><span>@@ -714,10 +721,10 @@</span><br><span>  struct gsm48_service_request *req;</span><br><span>   struct gsm48_classmark2 *cm2;</span><br><span>        uint8_t *cm2_buf, cm2_len;</span><br><span style="color: hsl(0, 100%, 40%);">-      uint8_t *mi_buf, mi_len;</span><br><span style="color: hsl(0, 100%, 40%);">-        uint8_t *mi, mi_type;</span><br><span>        bool is_utran;</span><br><span>       struct vlr_subscr *vsub;</span><br><span style="color: hsl(120, 100%, 40%);">+      struct osmo_mobile_identity mi;</span><br><span style="color: hsl(120, 100%, 40%);">+       int rc;</span><br><span> </span><br><span>  /* Make sure that both header and CM Service Request fit into the buffer */</span><br><span>  if (msgb_l3len(msg) < sizeof(*gh) + sizeof(*req)) {</span><br><span>@@ -726,6 +733,12 @@</span><br><span>                return msc_gsm48_tx_mm_serv_rej(msc_a, GSM48_REJECT_INCORRECT_MESSAGE);</span><br><span>      }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ rc = osmo_mobile_identity_decode_from_l3(&mi, msg, false);</span><br><span style="color: hsl(120, 100%, 40%);">+        if (rc) {</span><br><span style="color: hsl(120, 100%, 40%);">+             LOG_MSC_A(msc_a, LOGL_ERROR, "Rx CM SERVICE REQUEST: unable to decode Mobile Identity\n");</span><br><span style="color: hsl(120, 100%, 40%);">+          return msc_gsm48_tx_mm_serv_rej(msc_a, GSM48_REJECT_INCORRECT_MESSAGE);</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  gh = (struct gsm48_hdr *) msgb_l3(msg);</span><br><span>      req = (struct gsm48_service_request *) gh->data;</span><br><span> </span><br><span>@@ -742,18 +755,6 @@</span><br><span>               return msc_gsm48_tx_mm_serv_rej(msc_a, GSM48_REJECT_INCORRECT_MESSAGE);</span><br><span>      }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   /* MI (Mobile Identity) LV follows the Classmark2 */</span><br><span style="color: hsl(0, 100%, 40%);">-    mi_buf = cm2_buf + cm2_len;</span><br><span style="color: hsl(0, 100%, 40%);">-     mi_len = mi_buf[0];</span><br><span style="color: hsl(0, 100%, 40%);">-     mi = mi_buf + 1;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        /* Prevent buffer overrun: check the length of MI */</span><br><span style="color: hsl(0, 100%, 40%);">-    if (mi_buf + mi_len > msg->tail) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOG_MSC_A(msc_a, LOGL_ERROR, "Rx CM SERVICE REQUEST: Mobile Identity "</span><br><span style="color: hsl(0, 100%, 40%);">-                                             "length=%u is too big\n", cm2_len);</span><br><span style="color: hsl(0, 100%, 40%);">-              return msc_gsm48_tx_mm_serv_rej(msc_a, GSM48_REJECT_INCORRECT_MESSAGE);</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>    if (msc_a_is_establishing_auth_ciph(msc_a)) {</span><br><span>                LOG_MSC_A(msc_a, LOGL_ERROR,</span><br><span>                           "Cannot accept CM Service Request, conn already busy establishing authenticity\n");</span><br><span>@@ -762,12 +763,11 @@</span><br><span>      }</span><br><span> </span><br><span>        msc_a->complete_layer3_type = COMPLETE_LAYER3_CM_SERVICE_REQ;</span><br><span style="color: hsl(0, 100%, 40%);">-        msub_update_id_from_mi(msc_a->c.msub, mi, mi_len);</span><br><span style="color: hsl(120, 100%, 40%);">+ msub_update_id_from_mi(msc_a->c.msub, &mi);</span><br><span>   LOG_MSC_A_CAT(msc_a, DMM, LOGL_DEBUG, "Rx CM SERVICE REQUEST cm_service_type=%s\n",</span><br><span>                     osmo_cm_service_type_name(req->cm_service_type));</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   mi_type = (mi && mi_len) ? (mi[0] & GSM_MI_TYPE_MASK) : GSM_MI_TYPE_NONE;</span><br><span style="color: hsl(0, 100%, 40%);">-   switch (mi_type) {</span><br><span style="color: hsl(120, 100%, 40%);">+    switch (mi.type) {</span><br><span>   case GSM_MI_TYPE_IMSI:</span><br><span>       case GSM_MI_TYPE_TMSI:</span><br><span>               /* continue below */</span><br><span>@@ -781,7 +781,7 @@</span><br><span>           }</span><br><span>            /* fall-through for non-emergency setup */</span><br><span>   default:</span><br><span style="color: hsl(0, 100%, 40%);">-                LOG_MSC_A(msc_a, LOGL_ERROR, "MI type is not expected: %s\n", gsm48_mi_type_name(mi_type));</span><br><span style="color: hsl(120, 100%, 40%);">+         LOG_MSC_A(msc_a, LOGL_ERROR, "MI type is not expected: %s\n", gsm48_mi_type_name(mi.type));</span><br><span>                return msc_gsm48_tx_mm_serv_rej(msc_a, GSM48_REJECT_INCORRECT_MESSAGE);</span><br><span>      }</span><br><span> </span><br><span>@@ -789,9 +789,9 @@</span><br><span>          return msc_gsm48_tx_mm_serv_rej(msc_a, GSM48_REJECT_SRV_OPT_NOT_SUPPORTED);</span><br><span> </span><br><span>      if (msc_a_is_accepted(msc_a))</span><br><span style="color: hsl(0, 100%, 40%);">-           return cm_serv_reuse_conn(msc_a, mi_buf, req->cm_service_type);</span><br><span style="color: hsl(120, 100%, 40%);">+            return cm_serv_reuse_conn(msc_a, &mi, req->cm_service_type);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- osmo_signal_dispatch(SS_SUBSCR, S_SUBSCR_IDENTITY, mi_buf);</span><br><span style="color: hsl(120, 100%, 40%);">+   osmo_signal_dispatch(SS_SUBSCR, S_SUBSCR_IDENTITY, &mi);</span><br><span> </span><br><span>     msc_a_get(msc_a, msc_a_cm_service_type_to_use(req->cm_service_type));</span><br><span> </span><br><span>@@ -801,7 +801,7 @@</span><br><span>                    net->vlr, msc_a,</span><br><span>                          VLR_PR_ARQ_T_CM_SERV_REQ,</span><br><span>                    req->cm_service_type,</span><br><span style="color: hsl(0, 100%, 40%);">-                        mi-1, &msc_a->via_cell.lai,</span><br><span style="color: hsl(120, 100%, 40%);">+                    &mi, &msc_a->via_cell.lai,</span><br><span>                        is_utran || net->authentication_required,</span><br><span>                         is_utran ? net->uea_encryption : net->a5_encryption_mask > 0x01,</span><br><span>                    req->cipher_key_seq,</span><br><span>@@ -824,18 +824,9 @@</span><br><span> /* Receive a CM Re-establish Request */</span><br><span> static int gsm48_rx_cm_reest_req(struct msc_a *msc_a, struct msgb *msg)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-      uint8_t mi_type;</span><br><span style="color: hsl(0, 100%, 40%);">-        char mi_string[GSM48_MI_SIZE];</span><br><span style="color: hsl(0, 100%, 40%);">-  struct gsm48_hdr *gh = msgb_l3(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    uint8_t classmark2_len = gh->data[1];</span><br><span style="color: hsl(0, 100%, 40%);">-        uint8_t *classmark2 = gh->data+2;</span><br><span style="color: hsl(0, 100%, 40%);">-    uint8_t mi_len = *(classmark2 + classmark2_len);</span><br><span style="color: hsl(0, 100%, 40%);">-        uint8_t *mi = (classmark2 + classmark2_len + 1);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-        gsm48_mi_to_string(mi_string, sizeof(mi_string), mi, mi_len);</span><br><span style="color: hsl(0, 100%, 40%);">-   mi_type = mi[0] & GSM_MI_TYPE_MASK;</span><br><span style="color: hsl(0, 100%, 40%);">- DEBUGP(DMM, "<- CM RE-ESTABLISH REQUEST MI(%s)=%s\n", gsm48_mi_type_name(mi_type), mi_string);</span><br><span style="color: hsl(120, 100%, 40%);">+   struct osmo_mobile_identity mi;</span><br><span style="color: hsl(120, 100%, 40%);">+       osmo_mobile_identity_decode_from_l3(&mi, msg, false);</span><br><span style="color: hsl(120, 100%, 40%);">+     DEBUGP(DMM, "<- CM RE-ESTABLISH REQUEST %s\n", osmo_mobile_identity_name_c(OTC_SELECT, &mi));</span><br><span> </span><br><span>   /* we don't support CM call re-establishment */</span><br><span>  return msc_gsm48_tx_mm_serv_rej(msc_a, GSM48_REJECT_SRV_OPT_NOT_SUPPORTED);</span><br><span>@@ -847,39 +838,41 @@</span><br><span>  struct gsm48_hdr *gh = msgb_l3(msg);</span><br><span>         struct gsm48_imsi_detach_ind *idi =</span><br><span>                          (struct gsm48_imsi_detach_ind *) gh->data;</span><br><span style="color: hsl(0, 100%, 40%);">-   uint8_t mi_type = idi->mi[0] & GSM_MI_TYPE_MASK;</span><br><span style="color: hsl(0, 100%, 40%);">- char mi_string[GSM48_MI_SIZE];</span><br><span style="color: hsl(120, 100%, 40%);">+        struct osmo_mobile_identity mi;</span><br><span>      struct vlr_subscr *vsub = NULL;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     gsm48_mi_to_string(mi_string, sizeof(mi_string), idi->mi, idi->mi_len);</span><br><span style="color: hsl(0, 100%, 40%);">-   DEBUGP(DMM, "IMSI DETACH INDICATION: MI(%s)=%s\n",</span><br><span style="color: hsl(0, 100%, 40%);">-           gsm48_mi_type_name(mi_type), mi_string);</span><br><span style="color: hsl(120, 100%, 40%);">+       int rc = osmo_mobile_identity_decode_from_l3(&mi, msg, false);</span><br><span style="color: hsl(120, 100%, 40%);">+    if (rc) {</span><br><span style="color: hsl(120, 100%, 40%);">+             LOGP(DMM, LOGL_ERROR, "IMSI DETACH INDICATION: cannot decode Mobile Identity\n");</span><br><span style="color: hsl(120, 100%, 40%);">+           return -EINVAL;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   DEBUGP(DMM, "IMSI DETACH INDICATION: %s\n", osmo_mobile_identity_name_c(OTC_SELECT, &mi));</span><br><span> </span><br><span>         rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_DETACH]);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        switch (mi_type) {</span><br><span style="color: hsl(120, 100%, 40%);">+    switch (mi.type) {</span><br><span>   case GSM_MI_TYPE_TMSI:</span><br><span style="color: hsl(0, 100%, 40%);">-          vsub = vlr_subscr_find_by_tmsi(net->vlr,</span><br><span style="color: hsl(0, 100%, 40%);">-                                            tmsi_from_string(mi_string), __func__);</span><br><span style="color: hsl(120, 100%, 40%);">+                vsub = vlr_subscr_find_by_tmsi(net->vlr, mi.tmsi, __func__);</span><br><span>              break;</span><br><span>       case GSM_MI_TYPE_IMSI:</span><br><span style="color: hsl(0, 100%, 40%);">-          vsub = vlr_subscr_find_by_imsi(net->vlr, mi_string, __func__);</span><br><span style="color: hsl(120, 100%, 40%);">+             vsub = vlr_subscr_find_by_imsi(net->vlr, mi.imsi, __func__);</span><br><span>              break;</span><br><span>       case GSM_MI_TYPE_IMEI:</span><br><span>       case GSM_MI_TYPE_IMEISV:</span><br><span>             /* no sim card... FIXME: what to do ? */</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DMM, LOGL_ERROR, "MI(%s)=%s: unimplemented mobile identity type\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                   gsm48_mi_type_name(mi_type), mi_string);</span><br><span style="color: hsl(120, 100%, 40%);">+         LOGP(DMM, LOGL_ERROR, "%s: unimplemented mobile identity type\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                osmo_mobile_identity_name_c(OTC_SELECT, &mi));</span><br><span>              break;</span><br><span>       default:</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DMM, LOGL_ERROR, "MI(%s)=%s: unknown mobile identity type\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                 gsm48_mi_type_name(mi_type), mi_string);</span><br><span style="color: hsl(120, 100%, 40%);">+         LOGP(DMM, LOGL_ERROR, "%s: unknown mobile identity type\n",</span><br><span style="color: hsl(120, 100%, 40%);">+              osmo_mobile_identity_name_c(OTC_SELECT, &mi));</span><br><span>              break;</span><br><span>       }</span><br><span> </span><br><span>        if (!vsub) {</span><br><span style="color: hsl(0, 100%, 40%);">-            LOGP(DMM, LOGL_ERROR, "IMSI DETACH for unknown subscriber MI(%s)=%s\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                    gsm48_mi_type_name(mi_type), mi_string);</span><br><span style="color: hsl(120, 100%, 40%);">+         LOGP(DMM, LOGL_ERROR, "IMSI DETACH for unknown subscriber %s\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                 osmo_mobile_identity_name_c(OTC_SELECT, &mi));</span><br><span>      } else {</span><br><span>             LOGP(DMM, LOGL_INFO, "IMSI DETACH for %s\n", vlr_subscr_name(vsub));</span><br><span>               msub_set_vsub(msc_a->c.msub, vsub);</span><br><span>@@ -1148,9 +1141,10 @@</span><br><span>      uint8_t classmark2_len = gh->data[1];</span><br><span>     uint8_t *classmark2_buf = gh->data+2;</span><br><span>     struct gsm48_classmark2 *cm2 = (void*)classmark2_buf;</span><br><span style="color: hsl(0, 100%, 40%);">-   uint8_t *mi_lv = classmark2_buf + classmark2_len;</span><br><span>    bool is_utran;</span><br><span>       struct vlr_subscr *vsub;</span><br><span style="color: hsl(120, 100%, 40%);">+      struct osmo_mobile_identity mi;</span><br><span style="color: hsl(120, 100%, 40%);">+       int rc;</span><br><span> </span><br><span>  if (msc_a_is_establishing_auth_ciph(msc_a)) {</span><br><span>                LOG_MSC_A_CAT(msc_a, DRR, LOGL_ERROR,</span><br><span>@@ -1163,9 +1157,15 @@</span><br><span>               return 0;</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ rc = osmo_mobile_identity_decode_from_l3(&mi, msg, false);</span><br><span style="color: hsl(120, 100%, 40%);">+        if (rc) {</span><br><span style="color: hsl(120, 100%, 40%);">+             LOG_MSC_A_CAT(msc_a, DRR, LOGL_ERROR, "Paging Response: cannot decode Mobile Identity\n");</span><br><span style="color: hsl(120, 100%, 40%);">+          return -EINVAL;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  msc_a->complete_layer3_type = COMPLETE_LAYER3_PAGING_RESP;</span><br><span style="color: hsl(0, 100%, 40%);">-   msub_update_id_from_mi(msc_a->c.msub, mi_lv + 1, *mi_lv);</span><br><span style="color: hsl(0, 100%, 40%);">-    LOG_MSC_A_CAT(msc_a, DRR, LOGL_DEBUG, "Rx PAGING RESPONSE\n");</span><br><span style="color: hsl(120, 100%, 40%);">+      msub_update_id_from_mi(msc_a->c.msub, &mi);</span><br><span style="color: hsl(120, 100%, 40%);">+    LOG_MSC_A_CAT(msc_a, DRR, LOGL_DEBUG, "Rx PAGING RESPONSE %s\n", osmo_mobile_identity_name_c(OTC_SELECT, &mi));</span><br><span> </span><br><span>    msc_a_get(msc_a, MSC_A_USE_PAGING_RESPONSE);</span><br><span> </span><br><span>@@ -1173,7 +1173,7 @@</span><br><span>     vlr_proc_acc_req(msc_a->c.fi,</span><br><span>                      MSC_A_EV_AUTHENTICATED, MSC_A_EV_CN_CLOSE, NULL,</span><br><span>                     net->vlr, msc_a,</span><br><span style="color: hsl(0, 100%, 40%);">-                     VLR_PR_ARQ_T_PAGING_RESP, 0, mi_lv, &msc_a->via_cell.lai,</span><br><span style="color: hsl(120, 100%, 40%);">+                      VLR_PR_ARQ_T_PAGING_RESP, 0, &mi, &msc_a->via_cell.lai,</span><br><span>                   is_utran || net->authentication_required,</span><br><span>                         is_utran ? net->uea_encryption : net->a5_encryption_mask > 0x01,</span><br><span>                    pr->key_seq,</span><br><span>@@ -1200,30 +1200,37 @@</span><br><span>   struct gsm48_hdr *gh = msgb_l3(msg);</span><br><span>         unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);</span><br><span>    struct tlv_parsed tp;</span><br><span style="color: hsl(0, 100%, 40%);">-   struct tlv_p_entry *mi;</span><br><span style="color: hsl(120, 100%, 40%);">+       struct tlv_p_entry *mi_tlv;</span><br><span style="color: hsl(120, 100%, 40%);">+   struct osmo_mobile_identity mi;</span><br><span> </span><br><span>  tlv_parse(&tp, &gsm48_att_tlvdef, gh->data, payload_len, 0, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-      mi = TLVP_GET(&tp, GSM48_IE_MOBILE_ID);</span><br><span style="color: hsl(120, 100%, 40%);">+   mi_tlv = TLVP_GET(&tp, GSM48_IE_MOBILE_ID);</span><br><span> </span><br><span>  /* IMEI(SV) is optional for this message */</span><br><span style="color: hsl(0, 100%, 40%);">-     if (!mi)</span><br><span style="color: hsl(120, 100%, 40%);">+      if (!mi_tlv)</span><br><span>                 return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-       if (!mi->len)</span><br><span style="color: hsl(120, 100%, 40%);">+      if (!mi_tlv->len)</span><br><span>                 return -EINVAL;</span><br><span style="color: hsl(0, 100%, 40%);">- if ((mi->val[0] & GSM_MI_TYPE_MASK) != GSM_MI_TYPE_IMEISV) {</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ if (osmo_mobile_identity_decode(&mi, mi_tlv->val, mi_tlv->len, false)) {</span><br><span style="color: hsl(120, 100%, 40%);">+            LOGP(DMM, LOGL_ERROR, "RR Ciphering Mode Complete contains invalid Mobile Identity %s\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                osmo_hexdump(mi_tlv->val, mi_tlv->len));</span><br><span style="color: hsl(120, 100%, 40%);">+           return -EINVAL;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+     if (mi.type != GSM_MI_TYPE_IMEISV) {</span><br><span>                 LOGP(DMM, LOGL_ERROR, "RR Ciphering Mode Complete contains "</span><br><span>                                     "unexpected Mobile Identity type %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                               gsm48_mi_type_name(mi->val[0] & GSM_MI_TYPE_MASK));</span><br><span style="color: hsl(120, 100%, 40%);">+                                    osmo_mobile_identity_name_c(OTC_SELECT, &mi));</span><br><span>             return -EINVAL;</span><br><span>      }</span><br><span> </span><br><span>        LOG_MSC_A(msc_a, LOGL_DEBUG, "RR Ciphering Mode Complete contains Mobile Identity: %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">-               osmo_mi_name(mi->val, mi->len));</span><br><span style="color: hsl(120, 100%, 40%);">+                osmo_mobile_identity_name_c(OTC_SELECT, &mi));</span><br><span> </span><br><span>     if (!vsub)</span><br><span>           return 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   return vlr_subscr_rx_id_resp(vsub, mi->val, mi->len);</span><br><span style="color: hsl(120, 100%, 40%);">+   return vlr_subscr_rx_id_resp(vsub, &mi);</span><br><span> }</span><br><span> </span><br><span> static int gsm48_rx_rr_app_info(struct msc_a *msc_a, struct msgb *msg)</span><br><span>@@ -1460,27 +1467,3 @@</span><br><span>     gh->data[0] = cause;</span><br><span>      return msg;</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int gsm48_extract_mi(uint8_t *classmark2_lv, int length, char *mi_string, uint8_t *mi_type)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-    /* Check the size for the classmark */</span><br><span style="color: hsl(0, 100%, 40%);">-  if (length < 1 + *classmark2_lv)</span><br><span style="color: hsl(0, 100%, 40%);">-             return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      uint8_t *mi_lv = classmark2_lv + *classmark2_lv + 1;</span><br><span style="color: hsl(0, 100%, 40%);">-    if (length < 2 + *classmark2_lv + mi_lv[0])</span><br><span style="color: hsl(0, 100%, 40%);">-          return -2;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      *mi_type = mi_lv[1] & GSM_MI_TYPE_MASK;</span><br><span style="color: hsl(0, 100%, 40%);">-     return gsm48_mi_to_string(mi_string, GSM48_MI_SIZE, mi_lv+1, *mi_lv);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-int gsm48_paging_extract_mi(struct gsm48_pag_resp *resp, int length,</span><br><span style="color: hsl(0, 100%, 40%);">-                          char *mi_string, uint8_t *mi_type)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- static const uint32_t classmark_offset =</span><br><span style="color: hsl(0, 100%, 40%);">-                offsetof(struct gsm48_pag_resp, classmark2);</span><br><span style="color: hsl(0, 100%, 40%);">-    uint8_t *classmark2_lv = (uint8_t *) &resp->classmark2;</span><br><span style="color: hsl(0, 100%, 40%);">-  return gsm48_extract_mi(classmark2_lv, length - classmark_offset,</span><br><span style="color: hsl(0, 100%, 40%);">-                               mi_string, mi_type);</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span>diff --git a/src/libmsc/msc_a.c b/src/libmsc/msc_a.c</span><br><span>index bc5b7ea..d437dda 100644</span><br><span>--- a/src/libmsc/msc_a.c</span><br><span>+++ b/src/libmsc/msc_a.c</span><br><span>@@ -1100,9 +1100,9 @@</span><br><span> </span><br><span> </span><br><span> /* Compose an ID almost like gsm48_mi_to_string(), but print the MI type along, and print a TMSI as hex. */</span><br><span style="color: hsl(0, 100%, 40%);">-void msc_a_update_id_from_mi(struct msc_a *msc_a, const uint8_t mi[], uint8_t mi_len)</span><br><span style="color: hsl(120, 100%, 40%);">+void msc_a_update_id_from_mi(struct msc_a *msc_a, const struct osmo_mobile_identity *mi)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-   _msc_a_update_id(msc_a, "%s", osmo_mi_name(mi, mi_len));</span><br><span style="color: hsl(120, 100%, 40%);">+    _msc_a_update_id(msc_a, "%s", osmo_mobile_identity_name_c(OTC_SELECT, mi));</span><br><span> }</span><br><span> </span><br><span> /* Update msc_a->fi id string from current msc_a->vsub and msc_a->complete_layer3_type. */</span><br><span>diff --git a/src/libmsc/msub.c b/src/libmsc/msub.c</span><br><span>index 2021ed8..1109f1e 100644</span><br><span>--- a/src/libmsc/msub.c</span><br><span>+++ b/src/libmsc/msub.c</span><br><span>@@ -488,9 +488,9 @@</span><br><span> }</span><br><span> </span><br><span> /* Compose an ID almost like gsm48_mi_to_string(), but print the MI type along, and print a TMSI as hex. */</span><br><span style="color: hsl(0, 100%, 40%);">-void msub_update_id_from_mi(struct msub *msub, const uint8_t mi[], uint8_t mi_len)</span><br><span style="color: hsl(120, 100%, 40%);">+void msub_update_id_from_mi(struct msub *msub, const struct osmo_mobile_identity *mi)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-      _msub_update_id(msub, osmo_mi_name(mi, mi_len));</span><br><span style="color: hsl(120, 100%, 40%);">+      _msub_update_id(msub, osmo_mobile_identity_name_c(OTC_SELECT, mi));</span><br><span> }</span><br><span> </span><br><span> /* Update msub->fi id string from current msub->vsub and msub->complete_layer3_type. */</span><br><span>diff --git a/src/libmsc/ran_msg_a.c b/src/libmsc/ran_msg_a.c</span><br><span>index cb228ef..28f99ce 100644</span><br><span>--- a/src/libmsc/ran_msg_a.c</span><br><span>+++ b/src/libmsc/ran_msg_a.c</span><br><span>@@ -497,7 +497,6 @@</span><br><span>  struct gsm0808_encrypt_info encr_info;</span><br><span>       struct gsm0808_speech_codec_list scl;</span><br><span>        struct geran_encr geran_encr = {};</span><br><span style="color: hsl(0, 100%, 40%);">-      char imsi[OSMO_IMSI_BUF_SIZE];</span><br><span>       struct osmo_sockaddr_str rtp_ran_local;</span><br><span> </span><br><span>  if (!ie_channel_type) {</span><br><span>@@ -608,8 +607,12 @@</span><br><span>       }</span><br><span> </span><br><span>        if (ie_imsi) {</span><br><span style="color: hsl(0, 100%, 40%);">-          gsm48_mi_to_string(imsi, sizeof(imsi), ie_imsi->val, ie_imsi->len);</span><br><span style="color: hsl(0, 100%, 40%);">-               r->imsi = imsi;</span><br><span style="color: hsl(120, 100%, 40%);">+            struct osmo_mobile_identity mi;</span><br><span style="color: hsl(120, 100%, 40%);">+               if (osmo_mobile_identity_decode(&mi, ie_imsi->val, ie_imsi->len, false)</span><br><span style="color: hsl(120, 100%, 40%);">+                 || mi.type != GSM_MI_TYPE_IMSI)</span><br><span style="color: hsl(120, 100%, 40%);">+                   LOG_RAN_A_DEC_MSG(LOGL_ERROR, "IE IMSI: cannot decode IMSI identity\n");</span><br><span style="color: hsl(120, 100%, 40%);">+            else</span><br><span style="color: hsl(120, 100%, 40%);">+                  r->imsi = mi.imsi;</span><br><span>        }</span><br><span> </span><br><span>        if (ie_aoip_transp_addr) {</span><br><span>diff --git a/src/libmsc/sgs_iface.c b/src/libmsc/sgs_iface.c</span><br><span>index 422ce72..b792e46 100644</span><br><span>--- a/src/libmsc/sgs_iface.c</span><br><span>+++ b/src/libmsc/sgs_iface.c</span><br><span>@@ -373,7 +373,7 @@</span><br><span>        struct sgs_mme_ctx *mme;</span><br><span>     uint8_t new_id[2 + GSM48_TMSI_LEN];</span><br><span>  uint8_t *new_id_ptr = new_id;</span><br><span style="color: hsl(0, 100%, 40%);">-   unsigned int new_id_len = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+  int new_id_len = 0;</span><br><span>  uint8_t resp_msg_type;</span><br><span> </span><br><span>   /* Determine message type that is sent next (needed for logging) */</span><br><span>@@ -398,9 +398,13 @@</span><br><span>   /* Handle LU accept/reject */</span><br><span>        if (response->accepted) {</span><br><span>                 if (vsub->tmsi_new != GSM_RESERVED_TMSI) {</span><br><span style="color: hsl(0, 100%, 40%);">-                   new_id_len = gsm48_generate_mid_from_tmsi(new_id, vsub->tmsi_new);</span><br><span style="color: hsl(0, 100%, 40%);">-                   new_id_ptr = new_id + 2;</span><br><span style="color: hsl(0, 100%, 40%);">-                        new_id_len -= 2;</span><br><span style="color: hsl(120, 100%, 40%);">+                      struct osmo_mobile_identity tmsi_mi = {</span><br><span style="color: hsl(120, 100%, 40%);">+                               .type = GSM_MI_TYPE_TMSI,</span><br><span style="color: hsl(120, 100%, 40%);">+                             .tmsi = vsub->tmsi_new,</span><br><span style="color: hsl(120, 100%, 40%);">+                    };</span><br><span style="color: hsl(120, 100%, 40%);">+                    new_id_len = osmo_mobile_identity_encode_buf(new_id, sizeof(new_id), &tmsi_mi, false);</span><br><span style="color: hsl(120, 100%, 40%);">+                    if (new_id_len > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                                new_id_ptr = new_id;</span><br><span>                 }</span><br><span>            resp = gsm29118_create_lu_ack(vsub->imsi, &vsub->sgs.lai, new_id_ptr, new_id_len);</span><br><span>                 sgs_tx(mme->conn, resp);</span><br><span>@@ -958,12 +962,16 @@</span><br><span>  }</span><br><span> </span><br><span>        if (TLVP_PRESENT(&tp, SGSAP_IE_IMSI)) {</span><br><span style="color: hsl(0, 100%, 40%);">-             gsm48_mi_to_string(imsi, sizeof(imsi), TLVP_VAL(&tp, SGSAP_IE_IMSI), TLVP_LEN(&tp, SGSAP_IE_IMSI));</span><br><span style="color: hsl(0, 100%, 40%);">-             if (strlen(imsi) < GSM23003_IMSI_MIN_DIGITS) {</span><br><span style="color: hsl(120, 100%, 40%);">+             struct osmo_mobile_identity mi;</span><br><span style="color: hsl(120, 100%, 40%);">+               if (osmo_mobile_identity_decode(&mi,</span><br><span style="color: hsl(120, 100%, 40%);">+                                              TLVP_VAL(&tp, SGSAP_IE_IMSI),</span><br><span style="color: hsl(120, 100%, 40%);">+                                             TLVP_LEN(&tp, SGSAP_IE_IMSI), false)</span><br><span style="color: hsl(120, 100%, 40%);">+                  ||  mi.type != GSM_MI_TYPE_IMSI) {</span><br><span>                       TX_STATUS_AND_LOG(sgc, msg_type, SGSAP_SGS_CAUSE_INVALID_MAND_IE,</span><br><span style="color: hsl(0, 100%, 40%);">-                                         "SGsAP Message %s with short IMSI, dropping\n");</span><br><span style="color: hsl(120, 100%, 40%);">+                                    "SGsAP Message %s with invalid IMSI, dropping\n");</span><br><span>                       goto error;</span><br><span>          }</span><br><span style="color: hsl(120, 100%, 40%);">+             OSMO_STRLCPY_ARRAY(imsi, mi.imsi);</span><br><span>   }</span><br><span> </span><br><span>        /* Some messages contain an MME-NAME as mandatore IE, parse it right here. The</span><br><span>diff --git a/src/libvlr/vlr.c b/src/libvlr/vlr.c</span><br><span>index 019e657..3a44d30 100644</span><br><span>--- a/src/libvlr/vlr.c</span><br><span>+++ b/src/libvlr/vlr.c</span><br><span>@@ -1117,64 +1117,49 @@</span><br><span> }</span><br><span> </span><br><span> /* MSC->VLR: Subscriber has provided IDENTITY RESPONSE */</span><br><span style="color: hsl(0, 100%, 40%);">-int vlr_subscr_rx_id_resp(struct vlr_subscr *vsub,</span><br><span style="color: hsl(0, 100%, 40%);">-                          const uint8_t *mi, size_t mi_len)</span><br><span style="color: hsl(120, 100%, 40%);">+int vlr_subscr_rx_id_resp(struct vlr_subscr *vsub, const struct osmo_mobile_identity *mi)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-     char mi_string[GSM48_MI_SIZE];</span><br><span style="color: hsl(0, 100%, 40%);">-  uint8_t mi_type = mi[0] & GSM_MI_TYPE_MASK;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- gsm48_mi_to_string(mi_string, sizeof(mi_string), mi, mi_len);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>        /* update the vlr_subscr with the given identity */</span><br><span style="color: hsl(0, 100%, 40%);">-     switch (mi_type) {</span><br><span style="color: hsl(120, 100%, 40%);">+    switch (mi->type) {</span><br><span>       case GSM_MI_TYPE_IMSI:</span><br><span style="color: hsl(0, 100%, 40%);">-          if (strlen(mi_string) >= sizeof(vsub->imsi)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                    LOGVSUBP(LOGL_ERROR, vsub, "IMSI in ID RESP too long (>%zu bytes): %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                           sizeof(vsub->imsi) - 1, mi_string);</span><br><span style="color: hsl(0, 100%, 40%);">-                 return -ENOSPC; /* ignore message; do not avance LU FSM */</span><br><span style="color: hsl(0, 100%, 40%);">-              } else if (vsub->imsi[0]</span><br><span style="color: hsl(0, 100%, 40%);">-                 && !vlr_subscr_matches_imsi(vsub, mi_string)) {</span><br><span style="color: hsl(120, 100%, 40%);">+           if (vsub->imsi[0]</span><br><span style="color: hsl(120, 100%, 40%);">+              && !vlr_subscr_matches_imsi(vsub, mi->imsi)) {</span><br><span>                        LOGVSUBP(LOGL_ERROR, vsub, "IMSI in ID RESP differs:"</span><br><span style="color: hsl(0, 100%, 40%);">-                          " %s\n", mi_string);</span><br><span style="color: hsl(120, 100%, 40%);">+                                " %s\n", mi->imsi);</span><br><span>                    /* XXX Should we return an error, e.g. -EINVAL ? */</span><br><span>          } else</span><br><span style="color: hsl(0, 100%, 40%);">-                  vlr_subscr_set_imsi(vsub, mi_string);</span><br><span style="color: hsl(120, 100%, 40%);">+                 vlr_subscr_set_imsi(vsub, mi->imsi);</span><br><span>              break;</span><br><span>       case GSM_MI_TYPE_IMEI:</span><br><span style="color: hsl(0, 100%, 40%);">-          vlr_subscr_set_imei(vsub, mi_string);</span><br><span style="color: hsl(120, 100%, 40%);">+         vlr_subscr_set_imei(vsub, mi->imei);</span><br><span>              break;</span><br><span>       case GSM_MI_TYPE_IMEISV:</span><br><span style="color: hsl(0, 100%, 40%);">-                vlr_subscr_set_imeisv(vsub, mi_string);</span><br><span style="color: hsl(120, 100%, 40%);">+               vlr_subscr_set_imeisv(vsub, mi->imeisv);</span><br><span>          break;</span><br><span>       default:</span><br><span>             return -EINVAL;</span><br><span>      }</span><br><span> </span><br><span>        if (vsub->auth_fsm) {</span><br><span style="color: hsl(0, 100%, 40%);">-                switch (mi_type) {</span><br><span style="color: hsl(120, 100%, 40%);">+            switch (mi->type) {</span><br><span>               case GSM_MI_TYPE_IMSI:</span><br><span style="color: hsl(0, 100%, 40%);">-                  osmo_fsm_inst_dispatch(vsub->auth_fsm,</span><br><span style="color: hsl(0, 100%, 40%);">-                                       VLR_AUTH_E_MS_ID_IMSI, mi_string);</span><br><span style="color: hsl(120, 100%, 40%);">+                    return osmo_fsm_inst_dispatch(vsub->auth_fsm,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                    VLR_AUTH_E_MS_ID_IMSI, (void*)mi->imsi);</span><br><span>                    break;</span><br><span>               }</span><br><span>    }</span><br><span> </span><br><span>        if (vsub->lu_fsm) {</span><br><span style="color: hsl(0, 100%, 40%);">-          uint32_t event = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-             switch (mi_type) {</span><br><span style="color: hsl(120, 100%, 40%);">+            switch (mi->type) {</span><br><span>               case GSM_MI_TYPE_IMSI:</span><br><span style="color: hsl(0, 100%, 40%);">-                  event = VLR_ULA_E_ID_IMSI;</span><br><span style="color: hsl(0, 100%, 40%);">-                      break;</span><br><span style="color: hsl(120, 100%, 40%);">+                        return osmo_fsm_inst_dispatch(vsub->lu_fsm, VLR_ULA_E_ID_IMSI, (void*)mi->imsi);</span><br><span>               case GSM_MI_TYPE_IMEI:</span><br><span style="color: hsl(0, 100%, 40%);">-                  event = VLR_ULA_E_ID_IMEI;</span><br><span style="color: hsl(0, 100%, 40%);">-                      break;</span><br><span style="color: hsl(120, 100%, 40%);">+                        return osmo_fsm_inst_dispatch(vsub->lu_fsm, VLR_ULA_E_ID_IMEI, (void*)mi->imei);</span><br><span>               case GSM_MI_TYPE_IMEISV:</span><br><span style="color: hsl(0, 100%, 40%);">-                        event = VLR_ULA_E_ID_IMEISV;</span><br><span style="color: hsl(0, 100%, 40%);">-                    break;</span><br><span style="color: hsl(120, 100%, 40%);">+                        return osmo_fsm_inst_dispatch(vsub->lu_fsm, VLR_ULA_E_ID_IMEISV, (void*)mi->imeisv);</span><br><span>           default:</span><br><span>                     return -EINVAL;</span><br><span>              }</span><br><span style="color: hsl(0, 100%, 40%);">-               osmo_fsm_inst_dispatch(vsub->lu_fsm, event, mi_string);</span><br><span>   }</span><br><span> </span><br><span>        return 0;</span><br><span>diff --git a/src/libvlr/vlr_access_req_fsm.c b/src/libvlr/vlr_access_req_fsm.c</span><br><span>index 73f8955..73f3435 100644</span><br><span>--- a/src/libvlr/vlr_access_req_fsm.c</span><br><span>+++ b/src/libvlr/vlr_access_req_fsm.c</span><br><span>@@ -632,7 +632,7 @@</span><br><span>              void *parent_event_data,</span><br><span>             struct vlr_instance *vlr, void *msc_conn_ref,</span><br><span>                enum vlr_parq_type type, enum osmo_cm_service_type cm_service_type,</span><br><span style="color: hsl(0, 100%, 40%);">-             const uint8_t *mi_lv,</span><br><span style="color: hsl(120, 100%, 40%);">+                 const struct osmo_mobile_identity *mi,</span><br><span>               const struct osmo_location_area_id *lai,</span><br><span>             bool authentication_required,</span><br><span>                bool ciphering_required,</span><br><span>@@ -641,8 +641,6 @@</span><br><span> {</span><br><span>         struct osmo_fsm_inst *fi;</span><br><span>    struct proc_arq_priv *par;</span><br><span style="color: hsl(0, 100%, 40%);">-      char mi_string[GSM48_MI_SIZE];</span><br><span style="color: hsl(0, 100%, 40%);">-  uint8_t mi_type;</span><br><span> </span><br><span>         fi = osmo_fsm_inst_alloc_child(&proc_arq_vlr_fsm, parent,</span><br><span>                                       parent_event_failure);</span><br><span>@@ -678,16 +676,14 @@</span><br><span>                LOGPFSML(fi, LOGL_ERROR,</span><br><span>                      "Authentication off on UTRAN network. Good luck.\n");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    gsm48_mi_to_string(mi_string, sizeof(mi_string), mi_lv+1, mi_lv[0]);</span><br><span style="color: hsl(0, 100%, 40%);">-    mi_type = mi_lv[1] & GSM_MI_TYPE_MASK;</span><br><span style="color: hsl(0, 100%, 40%);">-      switch (mi_type) {</span><br><span style="color: hsl(120, 100%, 40%);">+    switch (mi->type) {</span><br><span>       case GSM_MI_TYPE_IMSI:</span><br><span style="color: hsl(0, 100%, 40%);">-          osmo_strlcpy(par->imsi, mi_string, sizeof(par->imsi));</span><br><span style="color: hsl(120, 100%, 40%);">+          OSMO_STRLCPY_ARRAY(par->imsi, mi->imsi);</span><br><span>               par->by_tmsi = false;</span><br><span>             break;</span><br><span>       case GSM_MI_TYPE_TMSI:</span><br><span>               par->by_tmsi = true;</span><br><span style="color: hsl(0, 100%, 40%);">-         par->tmsi = osmo_load32be(mi_lv+2);</span><br><span style="color: hsl(120, 100%, 40%);">+                par->tmsi = mi->tmsi;</span><br><span>          break;</span><br><span>       case GSM_MI_TYPE_IMEI:</span><br><span>               /* TODO: IMEI (emergency call) */</span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.err b/tests/msc_vlr/msc_vlr_test_authen_reuse.err</span><br><span>index 288040f..fc33b38 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_authen_reuse.err</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.err</span><br><span>@@ -458,7 +458,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000010650</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -990,7 +990,7 @@</span><br><span> DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000010650</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -1598,7 +1598,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000010650</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -2242,7 +2242,7 @@</span><br><span> DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000010650</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -2630,7 +2630,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000010650</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -3038,7 +3038,7 @@</span><br><span> DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000010650</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_call.err b/tests/msc_vlr/msc_vlr_test_call.err</span><br><span>index b651659..a8c7984 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_call.err</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_call.err</span><br><span>@@ -695,7 +695,7 @@</span><br><span> DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DRR msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE</span><br><span style="color: hsl(120, 100%, 40%);">+DRR msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE IMSI-901700000010650</span><br><span> DREF msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: Allocated</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP)</span><br><span>@@ -1166,7 +1166,7 @@</span><br><span> DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DRR msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE</span><br><span style="color: hsl(120, 100%, 40%);">+DRR msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE IMSI-901700000010650</span><br><span> DREF msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: Allocated</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP)</span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.err b/tests/msc_vlr/msc_vlr_test_gsm_authen.err</span><br><span>index ad2b80c..7042355 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_gsm_authen.err</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.err</span><br><span>@@ -352,7 +352,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE</span><br><span style="color: hsl(120, 100%, 40%);">+DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE IMSI-901700000004620</span><br><span> DREF msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP)</span><br><span>@@ -538,7 +538,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000004620</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -983,7 +983,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DRR msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE</span><br><span style="color: hsl(120, 100%, 40%);">+DRR msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE TMSI-0x03020100</span><br><span> DREF msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)</span><br><span> DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated</span><br><span> DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP)</span><br><span>@@ -1361,7 +1361,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(TMSI)=117835012</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: TMSI-0x07060504</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -1575,7 +1575,7 @@</span><br><span> DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)</span><br><span> DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP</span><br><span> DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IDENTITY RESPONSE: MI=IMEI-423423423423420</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IDENTITY RESPONSE: IMEI-423423423423420</span><br><span> DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=42342342342342</span><br><span> DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI</span><br><span> GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f0500807244332244332240a0101</span><br><span>@@ -1673,7 +1673,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000004620</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -1887,7 +1887,7 @@</span><br><span> DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)</span><br><span> DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP</span><br><span> DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IDENTITY RESPONSE: MI=IMEI-423423423423420</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IDENTITY RESPONSE: IMEI-423423423423420</span><br><span> DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=42342342342342</span><br><span> DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI</span><br><span> GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f0500807244332244332240a0101</span><br><span>@@ -2152,7 +2152,7 @@</span><br><span> DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)</span><br><span> DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP</span><br><span> DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IDENTITY RESPONSE: MI=IMEI-423423423423420</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IDENTITY RESPONSE: IMEI-423423423423420</span><br><span> DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=42342342342342</span><br><span> DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI</span><br><span> GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f0500807244332244332240a0101</span><br><span>@@ -2418,7 +2418,7 @@</span><br><span> DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)</span><br><span> DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP</span><br><span> DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IDENTITY RESPONSE: MI=IMEI-423423423423420</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IDENTITY RESPONSE: IMEI-423423423423420</span><br><span> DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=42342342342342</span><br><span> DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI</span><br><span> GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f0500807244332244332240a0101</span><br><span>@@ -2557,7 +2557,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(TMSI)=50462976</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: TMSI-0x03020100</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -2929,7 +2929,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DRR msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE</span><br><span style="color: hsl(120, 100%, 40%);">+DRR msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE IMSI-901700000010650</span><br><span> DREF msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP)</span><br><span>@@ -3115,7 +3115,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000010650</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err</span><br><span>index 5f6b370..e753096 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err</span><br><span>@@ -388,7 +388,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE</span><br><span style="color: hsl(120, 100%, 40%);">+DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE IMSI-901700000004620</span><br><span> DREF msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP)</span><br><span>@@ -606,7 +606,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000004620</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -1088,7 +1088,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DRR msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE</span><br><span style="color: hsl(120, 100%, 40%);">+DRR msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE TMSI-0x03020100</span><br><span> DREF msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)</span><br><span> DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated</span><br><span> DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP)</span><br><span>@@ -1306,7 +1306,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(TMSI)=50462976</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: TMSI-0x03020100</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -1527,7 +1527,7 @@</span><br><span> DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)</span><br><span> DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP</span><br><span> DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IDENTITY RESPONSE: MI=IMEI-423423423423420</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IDENTITY RESPONSE: IMEI-423423423423420</span><br><span> DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=42342342342342</span><br><span> DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI</span><br><span> GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f0500807244332244332240a0101</span><br><span>@@ -1625,7 +1625,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000004620</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -1790,7 +1790,7 @@</span><br><span> DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA</span><br><span> DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP</span><br><span> DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_CIPH_M_COMPL</span><br><span style="color: hsl(0, 100%, 40%);">-DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RR Ciphering Mode Complete contains Mobile Identity: IMEI-SV-4234234234234275F</span><br><span style="color: hsl(120, 100%, 40%);">+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RR Ciphering Mode Complete contains Mobile Identity: IMEI-SV-4234234234234275</span><br><span> DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=4234234234234275</span><br><span> DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=42342342342342</span><br><span> DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_ID_IMEISV</span><br><span>@@ -1909,7 +1909,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000004620</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -2130,7 +2130,7 @@</span><br><span> DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)</span><br><span> DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP</span><br><span> DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IDENTITY RESPONSE: MI=IMEI-423423423423420</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IDENTITY RESPONSE: IMEI-423423423423420</span><br><span> DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=42342342342342</span><br><span> DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI</span><br><span> GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f0500807244332244332240a0101</span><br><span>@@ -2269,7 +2269,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(TMSI)=50462976</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: TMSI-0x03020100</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -2666,7 +2666,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DRR msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE</span><br><span style="color: hsl(120, 100%, 40%);">+DRR msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE IMSI-901700000010650</span><br><span> DREF msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP)</span><br><span>@@ -2866,7 +2866,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000010650</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -3292,7 +3292,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE</span><br><span style="color: hsl(120, 100%, 40%);">+DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE IMSI-901700000004620</span><br><span> DREF msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP)</span><br><span>@@ -3510,7 +3510,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000004620</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-42342</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -3936,7 +3936,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE</span><br><span style="color: hsl(120, 100%, 40%);">+DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE IMSI-901700000004620</span><br><span> DREF msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP)</span><br><span>@@ -4132,7 +4132,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000004620</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-42342</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.err b/tests/msc_vlr/msc_vlr_test_ms_timeout.err</span><br><span>index 6ccc82a..66ea0bb 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_ms_timeout.err</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_ms_timeout.err</span><br><span>@@ -646,7 +646,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000004620</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 5 (attached,SMS-receiver,SMS,Paging,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 6 (attached,SMS-receiver,SMS,Paging,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.err b/tests/msc_vlr/msc_vlr_test_no_authen.err</span><br><span>index 3350431..2ee21da 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_no_authen.err</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_no_authen.err</span><br><span>@@ -264,7 +264,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE</span><br><span style="color: hsl(120, 100%, 40%);">+DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE IMSI-901700000004620</span><br><span> DREF msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP)</span><br><span>@@ -405,7 +405,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000004620</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -762,7 +762,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DRR msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE</span><br><span style="color: hsl(120, 100%, 40%);">+DRR msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE TMSI-0x03020100</span><br><span> DREF msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)</span><br><span> DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated</span><br><span> DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP)</span><br><span>@@ -1088,7 +1088,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(TMSI)=117835012</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: TMSI-0x07060504</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -1259,7 +1259,7 @@</span><br><span> DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)</span><br><span> DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP</span><br><span> DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IDENTITY RESPONSE: MI=IMEI-423423423423420</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IDENTITY RESPONSE: IMEI-423423423423420</span><br><span> DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=42342342342342</span><br><span> DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI</span><br><span> GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f0500807244332244332240a0101</span><br><span>@@ -1339,7 +1339,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000004620</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -1510,7 +1510,7 @@</span><br><span> DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)</span><br><span> DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP</span><br><span> DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IDENTITY RESPONSE: MI=IMEI-423423423423420</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IDENTITY RESPONSE: IMEI-423423423423420</span><br><span> DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=42342342342342</span><br><span> DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI</span><br><span> GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f0500807244332244332240a0101</span><br><span>@@ -1625,7 +1625,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000004620</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -1714,7 +1714,7 @@</span><br><span> DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)</span><br><span> DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP</span><br><span> DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IDENTITY RESPONSE: MI=IMEI-SV-4234234234234275</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IDENTITY RESPONSE: IMEI-SV-4234234234234275</span><br><span> DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=4234234234234275</span><br><span> DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=42342342342342</span><br><span> DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV</span><br><span>@@ -1846,7 +1846,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000004620</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -1935,7 +1935,7 @@</span><br><span> DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)</span><br><span> DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP</span><br><span> DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IDENTITY RESPONSE: MI=IMEI-SV-4234234234234275</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IDENTITY RESPONSE: IMEI-SV-4234234234234275</span><br><span> DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=4234234234234275</span><br><span> DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=42342342342342</span><br><span> DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV</span><br><span>@@ -2078,7 +2078,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000004620</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -2167,7 +2167,7 @@</span><br><span> DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)</span><br><span> DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP</span><br><span> DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IDENTITY RESPONSE: MI=IMEI-SV-4234234234234275</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IDENTITY RESPONSE: IMEI-SV-4234234234234275</span><br><span> DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=4234234234234275</span><br><span> DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=42342342342342</span><br><span> DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV</span><br><span>@@ -2366,7 +2366,7 @@</span><br><span> DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)</span><br><span> DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP</span><br><span> DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IDENTITY RESPONSE: MI=IMEI-SV-5234234234234276</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IDENTITY RESPONSE: IMEI-SV-5234234234234276</span><br><span> DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=5234234234234276</span><br><span> DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=52342342342342</span><br><span> DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV</span><br><span>@@ -2544,7 +2544,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(TMSI)=117835012</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: TMSI-0x07060504</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -2633,7 +2633,7 @@</span><br><span> DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)</span><br><span> DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP</span><br><span> DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IDENTITY RESPONSE: MI=IMEI-SV-4234234234234275</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IDENTITY RESPONSE: IMEI-SV-4234234234234275</span><br><span> DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=4234234234234275</span><br><span> DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=42342342342342</span><br><span> DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV</span><br><span>@@ -2813,7 +2813,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000004620</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err</span><br><span>index 8953c1d..48086a7 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err</span><br><span>@@ -803,7 +803,7 @@</span><br><span> DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)</span><br><span> DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP</span><br><span> DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000004620</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 3 (attached,active-conn,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)</span><br><span>@@ -1044,7 +1044,7 @@</span><br><span> DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 3 (2*cm_service_sms,rx_from_ms)</span><br><span> DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP</span><br><span> DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000004620</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 3 (attached,active-conn,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)</span><br><span>@@ -1480,7 +1480,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE</span><br><span style="color: hsl(120, 100%, 40%);">+DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE IMSI-901700000004620</span><br><span> DREF msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP)</span><br><span>@@ -1780,7 +1780,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE</span><br><span style="color: hsl(120, 100%, 40%);">+DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE IMSI-901700000004620</span><br><span> DREF msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP)</span><br><span>@@ -1893,7 +1893,7 @@</span><br><span> DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)</span><br><span> DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP</span><br><span> DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000004620</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 3 (attached,active-conn,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)</span><br><span>@@ -2104,7 +2104,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE</span><br><span style="color: hsl(120, 100%, 40%);">+DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE IMSI-901700000004620</span><br><span> DREF msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP)</span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_rest.err b/tests/msc_vlr/msc_vlr_test_rest.err</span><br><span>index 4121a26..ad8d822 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_rest.err</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_rest.err</span><br><span>@@ -358,7 +358,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000004620</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -466,7 +466,7 @@</span><br><span> DREF msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)</span><br><span> DBSSAP msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP</span><br><span> DRLL msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IDENTITY RESPONSE: MI=IMSI-901700000004620</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IDENTITY RESPONSE: IMSI-901700000004620</span><br><span> DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620</span><br><span> DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_WAIT_IMSI}: Received Event VLR_ULA_E_ID_IMSI</span><br><span> DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620</span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_ss.err b/tests/msc_vlr/msc_vlr_test_ss.err</span><br><span>index db158d6..cd4cf5c 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_ss.err</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_ss.err</span><br><span>@@ -399,7 +399,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE</span><br><span style="color: hsl(120, 100%, 40%);">+DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE IMSI-901700000004620</span><br><span> DREF msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP)</span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.err b/tests/msc_vlr/msc_vlr_test_umts_authen.err</span><br><span>index 3e5dbae..53cce79 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_umts_authen.err</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_umts_authen.err</span><br><span>@@ -369,7 +369,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DRR msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE</span><br><span style="color: hsl(120, 100%, 40%);">+DRR msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE IMSI-901700000010650</span><br><span> DREF msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP)</span><br><span>@@ -556,7 +556,7 @@</span><br><span> DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000010650</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -975,7 +975,7 @@</span><br><span> DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DRR msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE</span><br><span style="color: hsl(120, 100%, 40%);">+DRR msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE IMSI-901700000010650</span><br><span> DREF msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: Allocated</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP)</span><br><span>@@ -1164,7 +1164,7 @@</span><br><span> DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000010650</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span>@@ -1599,7 +1599,7 @@</span><br><span> DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP</span><br><span style="color: hsl(0, 100%, 40%);">-DRR msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE</span><br><span style="color: hsl(120, 100%, 40%);">+DRR msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE IMSI-901700000010650</span><br><span> DREF msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: Allocated</span><br><span> DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP)</span><br><span>@@ -1796,7 +1796,7 @@</span><br><span> DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)</span><br><span> DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3</span><br><span> DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND</span><br><span style="color: hsl(0, 100%, 40%);">-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650</span><br><span style="color: hsl(120, 100%, 40%);">+DMM IMSI DETACH INDICATION: IMSI-901700000010650</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)</span><br><span> DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100</span><br><span> DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-msc/+/18715">change 18715</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-msc/+/18715"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-msc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Idfc8e576e10756aeaacf5569f6178068313eb7ea </div>
<div style="display:none"> Gerrit-Change-Number: 18715 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>