<p>neels has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/19767">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">use new osmo_mobile_identity api (avoid deprecation)<br><br>Note: subsequent patch Iad845acb0096b75dc453105c9c16b2252879b4ca will change to<br>passing a struct osmo_mobile_identity in the Paging code path, instead of<br>passing the encoded IE data.<br><br>Change-Id: Ibb03b8e601160427944f434761ca59811d1fc12f<br>---<br>M src/bts.cpp<br>M src/gprs_bssgp_pcu.cpp<br>M src/gprs_rlcmac.cpp<br>M src/pdch.cpp<br>4 files changed, 37 insertions(+), 21 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/67/19767/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/bts.cpp b/src/bts.cpp</span><br><span>index 22b4c08..c415dd4 100644</span><br><span>--- a/src/bts.cpp</span><br><span>+++ b/src/bts.cpp</span><br><span>@@ -369,9 +369,13 @@</span><br><span>           NULL</span><br><span>         };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  LOGP(DRLCMAC, LOGL_INFO, "Add RR paging: chan-needed=%d MI=%s\n",</span><br><span style="color: hsl(0, 100%, 40%);">-             chan_needed, osmo_mi_name(mi, mi_len));</span><br><span style="color: hsl(120, 100%, 40%);">+       if (log_check_level(DRLCMAC, LOGL_INFO)) {</span><br><span style="color: hsl(120, 100%, 40%);">+            struct osmo_mobile_identity omi = {};</span><br><span style="color: hsl(120, 100%, 40%);">+         char str[64];</span><br><span style="color: hsl(120, 100%, 40%);">+         osmo_mobile_identity_decode(&omi, mi, mi_len, true);</span><br><span style="color: hsl(120, 100%, 40%);">+              osmo_mobile_identity_to_str_buf(str, sizeof(str), &omi);</span><br><span style="color: hsl(120, 100%, 40%);">+          LOGP(DRLCMAC, LOGL_INFO, "Add RR paging: chan-needed=%d MI=%s\n", chan_needed, str);</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span> </span><br><span>        /* collect slots to page</span><br><span>      * Mark slots for every TBF, but only mark one of it.</span><br><span>diff --git a/src/gprs_bssgp_pcu.cpp b/src/gprs_bssgp_pcu.cpp</span><br><span>index a4bcff3..4fb5989 100644</span><br><span>--- a/src/gprs_bssgp_pcu.cpp</span><br><span>+++ b/src/gprs_bssgp_pcu.cpp</span><br><span>@@ -87,7 +87,12 @@</span><br><span>      uint32_t tlli_old = 0;</span><br><span>       uint8_t *data;</span><br><span>       uint16_t len;</span><br><span style="color: hsl(0, 100%, 40%);">-   char imsi[OSMO_IMSI_BUF_SIZE] = "000";</span><br><span style="color: hsl(120, 100%, 40%);">+      /* TODO: is it really necessary to initialize this as a "000" IMSI? It seems, the function should just return an</span><br><span style="color: hsl(120, 100%, 40%);">+     * error if no IMSI IE was found. */</span><br><span style="color: hsl(120, 100%, 40%);">+  struct osmo_mobile_identity mi_imsi = {</span><br><span style="color: hsl(120, 100%, 40%);">+               .type = GSM_MI_TYPE_TMSI,</span><br><span style="color: hsl(120, 100%, 40%);">+             .imsi = { '0', '0', '0', '\0' },</span><br><span style="color: hsl(120, 100%, 40%);">+      };</span><br><span>   uint8_t ms_class = 0;</span><br><span>        uint8_t egprs_ms_class = 0;</span><br><span>  int rc;</span><br><span>@@ -116,10 +121,9 @@</span><br><span>        * will listen to all paging blocks. */</span><br><span>      if (TLVP_PRESENT(tp, BSSGP_IE_IMSI))</span><br><span>         {</span><br><span style="color: hsl(0, 100%, 40%);">-               /* gsm48_mi_to_string() returns number of bytes written, including '\0' */</span><br><span style="color: hsl(0, 100%, 40%);">-              rc = gsm48_mi_to_string(imsi, sizeof(imsi), TLVP_VAL(tp, BSSGP_IE_IMSI),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                            TLVP_LEN(tp, BSSGP_IE_IMSI));</span><br><span style="color: hsl(0, 100%, 40%);">-               if (rc != GSM23003_IMSI_MAX_DIGITS + 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+             rc = osmo_mobile_identity_decode(&mi_imsi, TLVP_VAL(tp, BSSGP_IE_IMSI), TLVP_LEN(tp, BSSGP_IE_IMSI),</span><br><span style="color: hsl(120, 100%, 40%);">+                                               true);</span><br><span style="color: hsl(120, 100%, 40%);">+               if (rc < 0 || mi_imsi.type != GSM_MI_TYPE_TMSI) {</span><br><span>                         LOGP(DBSSGP, LOGL_NOTICE, "Failed to parse IMSI IE (rc=%d)\n", rc);</span><br><span>                        return bssgp_tx_status(BSSGP_CAUSE_COND_IE_ERR, NULL, msg);</span><br><span>          }</span><br><span>@@ -160,9 +164,9 @@</span><br><span>                              "TLLI (old) IE\n");</span><br><span>        }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   LOGP(DBSSGP, LOGL_INFO, "LLC [SGSN -> PCU] = TLLI: 0x%08x IMSI: %s len: %d\n", tlli, imsi, len);</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(DBSSGP, LOGL_INFO, "LLC [SGSN -> PCU] = TLLI: 0x%08x IMSI: %s len: %d\n", tlli, mi_imsi.imsi, len);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       return gprs_rlcmac_dl_tbf::handle(the_pcu.bts, tlli, tlli_old, imsi,</span><br><span style="color: hsl(120, 100%, 40%);">+  return gprs_rlcmac_dl_tbf::handle(the_pcu.bts, tlli, tlli_old, mi_imsi.imsi,</span><br><span>                         ms_class, egprs_ms_class, delay_csec, data, len);</span><br><span> }</span><br><span> </span><br><span>@@ -212,7 +216,7 @@</span><br><span> </span><br><span> static int gprs_bssgp_pcu_rx_paging_ps(struct msgb *msg, struct tlv_parsed *tp)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    char imsi[OSMO_IMSI_BUF_SIZE];</span><br><span style="color: hsl(120, 100%, 40%);">+        struct osmo_mobile_identity mi_imsi;</span><br><span>         uint16_t pgroup;</span><br><span>     const uint8_t *mi;</span><br><span>   uint8_t mi_len;</span><br><span>@@ -223,16 +227,14 @@</span><br><span>              return bssgp_tx_status(BSSGP_CAUSE_MISSING_MAND_IE, NULL, msg);</span><br><span>      }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   /* gsm48_mi_to_string() returns number of bytes written, including '\0' */</span><br><span style="color: hsl(0, 100%, 40%);">-      rc = gsm48_mi_to_string(imsi, sizeof(imsi), TLVP_VAL(tp, BSSGP_IE_IMSI),</span><br><span style="color: hsl(0, 100%, 40%);">-                                TLVP_LEN(tp, BSSGP_IE_IMSI));</span><br><span style="color: hsl(0, 100%, 40%);">-   if (rc != GSM23003_IMSI_MAX_DIGITS + 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+     rc = osmo_mobile_identity_decode(&mi_imsi, TLVP_VAL(tp, BSSGP_IE_IMSI), TLVP_LEN(tp, BSSGP_IE_IMSI), true);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (rc < 0 || mi_imsi.type != GSM_MI_TYPE_IMSI) {</span><br><span>                 LOGP(DBSSGP, LOGL_NOTICE, "Failed to parse IMSI IE (rc=%d)\n", rc);</span><br><span>                return bssgp_tx_status(BSSGP_CAUSE_INV_MAND_INF, NULL, msg);</span><br><span>         }</span><br><span style="color: hsl(0, 100%, 40%);">-       pgroup = imsi2paging_group(imsi);</span><br><span style="color: hsl(120, 100%, 40%);">+     pgroup = imsi2paging_group(mi_imsi.imsi);</span><br><span>    if (pgroup > 999) {</span><br><span style="color: hsl(0, 100%, 40%);">-          LOGP(DBSSGP, LOGL_NOTICE, "Failed to compute IMSI %s paging group\n", imsi);</span><br><span style="color: hsl(120, 100%, 40%);">+                LOGP(DBSSGP, LOGL_NOTICE, "Failed to compute IMSI %s paging group\n", mi_imsi.imsi);</span><br><span>               return bssgp_tx_status(BSSGP_CAUSE_INV_MAND_INF, NULL, msg);</span><br><span>         }</span><br><span> </span><br><span>diff --git a/src/gprs_rlcmac.cpp b/src/gprs_rlcmac.cpp</span><br><span>index c890021..879ea85 100644</span><br><span>--- a/src/gprs_rlcmac.cpp</span><br><span>+++ b/src/gprs_rlcmac.cpp</span><br><span>@@ -34,8 +34,13 @@</span><br><span> </span><br><span> int gprs_rlcmac_paging_request(const uint8_t *mi, uint8_t mi_len, uint16_t pgroup)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-      LOGP(DRLCMAC, LOGL_NOTICE, "TX: [PCU -> BTS] Paging Request (CCCH) MI=%s\n",</span><br><span style="color: hsl(0, 100%, 40%);">-           osmo_mi_name(mi, mi_len));</span><br><span style="color: hsl(120, 100%, 40%);">+        if (log_check_level(DRLCMAC, LOGL_NOTICE)) {</span><br><span style="color: hsl(120, 100%, 40%);">+          struct osmo_mobile_identity omi = {};</span><br><span style="color: hsl(120, 100%, 40%);">+         char str[64];</span><br><span style="color: hsl(120, 100%, 40%);">+         osmo_mobile_identity_decode(&omi, mi, mi_len, true);</span><br><span style="color: hsl(120, 100%, 40%);">+              osmo_mobile_identity_to_str_buf(str, sizeof(str), &omi);</span><br><span style="color: hsl(120, 100%, 40%);">+          LOGP(DRLCMAC, LOGL_NOTICE, "TX: [PCU -> BTS] Paging Request (CCCH) MI=%s\n", str);</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span>    bitvec *paging_request = bitvec_alloc(22, tall_pcu_ctx);</span><br><span>     bitvec_unhex(paging_request, DUMMY_VEC);</span><br><span>     int plen = Encoding::write_paging_request(paging_request, mi, mi_len);</span><br><span>diff --git a/src/pdch.cpp b/src/pdch.cpp</span><br><span>index b34f532..af84724 100644</span><br><span>--- a/src/pdch.cpp</span><br><span>+++ b/src/pdch.cpp</span><br><span>@@ -205,8 +205,13 @@</span><br><span> </span><br><span>       /* loop until message is full */</span><br><span>     while (pag) {</span><br><span style="color: hsl(0, 100%, 40%);">-           LOGP(DRLCMAC, LOGL_DEBUG, "Paging MI - %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">-              osmo_mi_name(pag->identity_lv + 1, pag->identity_lv[0]));</span><br><span style="color: hsl(120, 100%, 40%);">+          if (log_check_level(DRLCMAC, LOGL_DEBUG)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   struct osmo_mobile_identity omi = {};</span><br><span style="color: hsl(120, 100%, 40%);">+                 char str[64];</span><br><span style="color: hsl(120, 100%, 40%);">+                 osmo_mobile_identity_decode(&omi, pag->identity_lv + 1, pag->identity_lv[0], true);</span><br><span style="color: hsl(120, 100%, 40%);">+                 osmo_mobile_identity_to_str_buf(str, sizeof(str), &omi);</span><br><span style="color: hsl(120, 100%, 40%);">+                  LOGP(DRLCMAC, LOGL_DEBUG, "Paging MI - %s\n", str);</span><br><span style="color: hsl(120, 100%, 40%);">+         }</span><br><span> </span><br><span>                /* try to add paging */</span><br><span>              if ((pag->identity_lv[1] & GSM_MI_TYPE_MASK) == GSM_MI_TYPE_TMSI) {</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/19767">change 19767</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-pcu/+/19767"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-pcu </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ibb03b8e601160427944f434761ca59811d1fc12f </div>
<div style="display:none"> Gerrit-Change-Number: 19767 </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>