<p>laforge <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/13395">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  laforge: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Use libosmocore for IMSI parsing<br><br>Change-Id: Iec5c65776fc54b2f9e5dd55c711ace2471662db1<br>---<br>M src/gprs_bssgp_pcu.cpp<br>1 file changed, 4 insertions(+), 32 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/gprs_bssgp_pcu.cpp b/src/gprs_bssgp_pcu.cpp</span><br><span>index 22abc6b..a4a5875 100644</span><br><span>--- a/src/gprs_bssgp_pcu.cpp</span><br><span>+++ b/src/gprs_bssgp_pcu.cpp</span><br><span>@@ -54,35 +54,6 @@</span><br><span> static void bvc_timeout(void *_priv);</span><br><span> static int gprs_ns_reconnect(struct gprs_nsvc *nsvc);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int parse_imsi(struct tlv_parsed *tp, char *imsi)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-     uint8_t imsi_len;</span><br><span style="color: hsl(0, 100%, 40%);">-       uint8_t *bcd_imsi;</span><br><span style="color: hsl(0, 100%, 40%);">-      int i, j;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       if (!TLVP_PRESENT(tp, BSSGP_IE_IMSI))</span><br><span style="color: hsl(0, 100%, 40%);">-           return -EINVAL;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- imsi_len = TLVP_LEN(tp, BSSGP_IE_IMSI);</span><br><span style="color: hsl(0, 100%, 40%);">- bcd_imsi = (uint8_t *) TLVP_VAL(tp, BSSGP_IE_IMSI);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     if ((bcd_imsi[0] & 0x08))</span><br><span style="color: hsl(0, 100%, 40%);">-           imsi_len = imsi_len * 2 - 1;</span><br><span style="color: hsl(0, 100%, 40%);">-    else</span><br><span style="color: hsl(0, 100%, 40%);">-            imsi_len = (imsi_len - 1) * 2;</span><br><span style="color: hsl(0, 100%, 40%);">-  for (i = 0, j = 0; j < imsi_len && j < 15; j++)</span><br><span style="color: hsl(0, 100%, 40%);">-   {</span><br><span style="color: hsl(0, 100%, 40%);">-               if (!(j & 1)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                     imsi[j] = (bcd_imsi[i] >> 4) + '0';</span><br><span style="color: hsl(0, 100%, 40%);">-                       i++;</span><br><span style="color: hsl(0, 100%, 40%);">-            } else</span><br><span style="color: hsl(0, 100%, 40%);">-                  imsi[j] = (bcd_imsi[i] & 0xf) + '0';</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-       imsi[j] = '\0';</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> #if 0</span><br><span> static int parse_ra_cap(struct tlv_parsed *tp, MS_Radio_Access_capability_t *rac)</span><br><span> {</span><br><span>@@ -147,7 +118,7 @@</span><br><span>  /* read IMSI. if no IMSI exists, use first paging block (any paging),</span><br><span>         * because during attachment the IMSI might not be known, so the MS</span><br><span>   * will listen to all paging blocks. */</span><br><span style="color: hsl(0, 100%, 40%);">- parse_imsi(tp, imsi);</span><br><span style="color: hsl(120, 100%, 40%);">+ gsm48_mi_to_string(imsi, sizeof(imsi), TLVP_VAL(tp, BSSGP_IE_IMSI), TLVP_LEN(tp, BSSGP_IE_IMSI));</span><br><span> </span><br><span> #if 0 /* Do not rely on this IE. TODO: make this configurable */</span><br><span>    /* parse ms radio access capability */</span><br><span>@@ -205,12 +176,13 @@</span><br><span>       }</span><br><span>    LOGPC(DBSSGP, LOGL_NOTICE, "\n");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- if (parse_imsi(tp, imsi))</span><br><span style="color: hsl(0, 100%, 40%);">-       {</span><br><span style="color: hsl(120, 100%, 40%);">+     if (!TLVP_PRESENT(tp, BSSGP_IE_IMSI)) {</span><br><span>              LOGP(DBSSGP, LOGL_ERROR, "No IMSI\n");</span><br><span>             return -EINVAL;</span><br><span>      }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ gsm48_mi_to_string(imsi, sizeof(imsi), TLVP_VAL(tp, BSSGP_IE_IMSI), TLVP_LEN(tp, BSSGP_IE_IMSI));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  return gprs_rlcmac_paging_request(ptmsi, ptmsi_len, imsi);</span><br><span> }</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/13395">change 13395</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/+/13395"/><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: Iec5c65776fc54b2f9e5dd55c711ace2471662db1 </div>
<div style="display:none"> Gerrit-Change-Number: 13395 </div>
<div style="display:none"> Gerrit-PatchSet: 5 </div>
<div style="display:none"> Gerrit-Owner: Max <suraev@alumni.ntnu.no> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-Reviewer: msuraev <suraev@alumni.ntnu.no> </div>
<div style="display:none"> Gerrit-CC: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>