<p>Max has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/12338">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Remove redundancy in LAC processing<br><br>Always use LAC which is part of Cell Global ID otherwise we might end up<br>in a situation where separately stored LAC differs.<br><br>Both are described in 3GPP TS 23.008 $2.4 as temporary subscriber data<br>to be stored in VLR. Both are defined in 3GPP TS 23.003. The LAC is part<br>of LAI which is part of CGI so there should be no case when those values<br>differ for a given subscriber.<br><br>Change-Id: I993ebc3e14f25e83124b6d3f8461a4b18f971f8e<br>---<br>M include/osmocom/msc/vlr.h<br>M src/libmsc/gsm_04_08_cc.c<br>M src/libmsc/gsm_09_11.c<br>M src/libmsc/gsm_subscriber.c<br>M src/libmsc/msc_vty.c<br>M src/libvlr/vlr_lu_fsm.c<br>M tests/msc_vlr/msc_vlr_test_call.c<br>M tests/msc_vlr/msc_vlr_test_ss.c<br>8 files changed, 9 insertions(+), 11 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/38/12338/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/msc/vlr.h b/include/osmocom/msc/vlr.h</span><br><span>index 2f31063..20a9c0f 100644</span><br><span>--- a/include/osmocom/msc/vlr.h</span><br><span>+++ b/include/osmocom/msc/vlr.h</span><br><span>@@ -142,9 +142,7 @@</span><br><span>    /* Newly allocated TMSI that was not yet acked by MS */</span><br><span>      uint32_t tmsi_new;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  /* some redundancy in information below? */</span><br><span>  struct osmo_cell_global_id cgi;                 /* 2.4.16 */</span><br><span style="color: hsl(0, 100%, 40%);">-    uint16_t lac;                                   /* 2.4.2 */</span><br><span> </span><br><span>      char imeisv[GSM23003_IMEISV_NUM_DIGITS+1];      /* 2.2.3 */</span><br><span>  char imei[GSM23003_IMEISV_NUM_DIGITS+1];        /* 2.1.9 */</span><br><span>diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c</span><br><span>index a172b47..70f5c29 100644</span><br><span>--- a/src/libmsc/gsm_04_08_cc.c</span><br><span>+++ b/src/libmsc/gsm_04_08_cc.c</span><br><span>@@ -1940,7 +1940,7 @@</span><br><span>                                                 GSM48_CC_CAUSE_UNASSIGNED_NR);</span><br><span>               }</span><br><span>            /* If subscriber is not "attached" */</span><br><span style="color: hsl(0, 100%, 40%);">-         if (!vsub->lac) {</span><br><span style="color: hsl(120, 100%, 40%);">+          if (!vsub->cgi.lai.lac) {</span><br><span>                         DEBUGP(DCC, "(bts - trx - ts - ti -- sub %s) "</span><br><span>                             "Received '%s' from MNCC with "</span><br><span>                            "detached subscriber %s\n", data->called.number,</span><br><span>@@ -1979,7 +1979,7 @@</span><br><span>                                        "unallocated channel, paging already "</span><br><span>                                     "started for lac %d.\n",</span><br><span>                                   data->called.number,</span><br><span style="color: hsl(0, 100%, 40%);">-                                 get_mncc_name(msg_type), vsub->lac);</span><br><span style="color: hsl(120, 100%, 40%);">+                                       get_mncc_name(msg_type), vsub->cgi.lai.lac);</span><br><span>                              vlr_subscr_put(vsub);</span><br><span>                                trans_free(trans);</span><br><span>                           return 0;</span><br><span>diff --git a/src/libmsc/gsm_09_11.c b/src/libmsc/gsm_09_11.c</span><br><span>index 43bf48c..3ee6e92 100644</span><br><span>--- a/src/libmsc/gsm_09_11.c</span><br><span>+++ b/src/libmsc/gsm_09_11.c</span><br><span>@@ -287,7 +287,7 @@</span><br><span>         }</span><br><span> </span><br><span>        /* If subscriber is not "attached" */</span><br><span style="color: hsl(0, 100%, 40%);">- if (!vsub->lac) {</span><br><span style="color: hsl(120, 100%, 40%);">+  if (!vsub->cgi.lai.lac) {</span><br><span>                 LOGP(DMM, LOGL_ERROR, "Network-originated session "</span><br><span>                        "rejected - subscriber is not attached\n");</span><br><span>                return NULL;</span><br><span>diff --git a/src/libmsc/gsm_subscriber.c b/src/libmsc/gsm_subscriber.c</span><br><span>index 188807e..0e76efc 100644</span><br><span>--- a/src/libmsc/gsm_subscriber.c</span><br><span>+++ b/src/libmsc/gsm_subscriber.c</span><br><span>@@ -116,12 +116,12 @@</span><br><span>         * SCCP connections (if any). */</span><br><span>     switch (vsub->cs.attached_via_ran) {</span><br><span>      case RAN_GERAN_A:</span><br><span style="color: hsl(0, 100%, 40%);">-               return a_iface_tx_paging(vsub->imsi, vsub->tmsi, vsub->lac);</span><br><span style="color: hsl(120, 100%, 40%);">+         return a_iface_tx_paging(vsub->imsi, vsub->tmsi, vsub->cgi.lai.lac);</span><br><span>        case RAN_UTRAN_IU:</span><br><span>           return ranap_iu_page_cs(vsub->imsi,</span><br><span>                                       vsub->tmsi == GSM_RESERVED_TMSI?</span><br><span>                                  NULL : &vsub->tmsi,</span><br><span style="color: hsl(0, 100%, 40%);">-                                      vsub->lac);</span><br><span style="color: hsl(120, 100%, 40%);">+                                        vsub->cgi.lai.lac);</span><br><span>       default:</span><br><span>             break;</span><br><span>       }</span><br><span>diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c</span><br><span>index 87adc82..59112a7 100644</span><br><span>--- a/src/libmsc/msc_vty.c</span><br><span>+++ b/src/libmsc/msc_vty.c</span><br><span>@@ -631,7 +631,7 @@</span><br><span>                 vty_out(vty, "    Extension: %s%s", vsub->msisdn,</span><br><span>                       VTY_NEWLINE);</span><br><span>        vty_out(vty, "    LAC: %d/0x%x%s",</span><br><span style="color: hsl(0, 100%, 40%);">-            vsub->lac, vsub->lac, VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+             vsub->cgi.lai.lac, vsub->cgi.lai.lac, VTY_NEWLINE);</span><br><span>    vty_out(vty, "    IMSI: %s%s", vsub->imsi, VTY_NEWLINE);</span><br><span>        if (vsub->tmsi != GSM_RESERVED_TMSI)</span><br><span>              vty_out(vty, "    TMSI: %08X%s", vsub->tmsi,</span><br><span>diff --git a/src/libvlr/vlr_lu_fsm.c b/src/libvlr/vlr_lu_fsm.c</span><br><span>index 5d171d5..e635305 100644</span><br><span>--- a/src/libvlr/vlr_lu_fsm.c</span><br><span>+++ b/src/libvlr/vlr_lu_fsm.c</span><br><span>@@ -950,7 +950,7 @@</span><br><span>     vsub->lu_fsm = fi;</span><br><span>        vsub->msc_conn_ref = lfp->msc_conn_ref;</span><br><span>        /* FIXME: send new LAC to HLR? */</span><br><span style="color: hsl(0, 100%, 40%);">-       vsub->lac = lfp->new_lai.lac;</span><br><span style="color: hsl(120, 100%, 40%);">+   vsub->cgi.lai.lac = lfp->new_lai.lac;</span><br><span>  lfp->vsub = vsub;</span><br><span>         /* Tell MSC to associate this subscriber with the given</span><br><span>       * connection */</span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_call.c b/tests/msc_vlr/msc_vlr_test_call.c</span><br><span>index 83bc84b..852ec32 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_call.c</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_call.c</span><br><span>@@ -154,7 +154,7 @@</span><br><span>      vsub = vlr_subscr_find_by_imsi(net->vlr, IMSI);</span><br><span>   VERBOSE_ASSERT(vsub != NULL, == true, "%d");</span><br><span>       VERBOSE_ASSERT(strcmp(vsub->imsi, IMSI), == 0, "%d");</span><br><span style="color: hsl(0, 100%, 40%);">-      V_ASSERT("LAC", vsub->lac, == 23, "%u");</span><br><span style="color: hsl(120, 100%, 40%);">+       V_ASSERT("LAC", vsub->cgi.lai.lac, == 23, "%u");</span><br><span>      vlr_subscr_put(vsub);</span><br><span> }</span><br><span> </span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_ss.c b/tests/msc_vlr/msc_vlr_test_ss.c</span><br><span>index d8167bd..70b7b1f 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_ss.c</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_ss.c</span><br><span>@@ -68,7 +68,7 @@</span><br><span>  vsub = vlr_subscr_find_by_imsi(net->vlr, IMSI);</span><br><span>   VERBOSE_ASSERT(vsub != NULL, == true, "%d");</span><br><span>       VERBOSE_ASSERT(strcmp(vsub->imsi, IMSI), == 0, "%d");</span><br><span style="color: hsl(0, 100%, 40%);">-      V_ASSERT("LAC", vsub->lac, == 23, "%u");</span><br><span style="color: hsl(120, 100%, 40%);">+       V_ASSERT("LAC", vsub->cgi.lai.lac, == 23, "%u");</span><br><span>      vlr_subscr_put(vsub);</span><br><span> </span><br><span>    bss_sends_clear_complete();</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12338">change 12338</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/12338"/><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-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I993ebc3e14f25e83124b6d3f8461a4b18f971f8e </div>
<div style="display:none"> Gerrit-Change-Number: 12338 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Max <msuraev@sysmocom.de> </div>