<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/22013">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  laforge: Looks good to me, approved
  dexter: Looks good to me, but someone else must approve
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Intoduce Packet Switch CGI<br><br>This structure is needed in order to identify a given cell within the<br>BSS during RIM transactions.<br>The naming was made up by myself since I couldn't find any naming<br>reference for this kind of data (RAI + CI).<br>Since LAI + CI = CGI, then RAI + CI = CGI-PS<br><br>osmo_rai_name2 family of functions get a "2" suffix due to already<br>existing functions handling struct struct gprs_ra_id in gsm48.h<br><br>Change-Id: If48f412c32e8e5a3e604a78d12b74787a4786374<br>---<br>M include/osmocom/gsm/gsm0808_utils.h<br>M include/osmocom/gsm/gsm23003.h<br>M include/osmocom/gsm/protocol/gsm_08_08.h<br>M src/gsm/gsm0808_utils.c<br>M src/gsm/gsm23003.c<br>M src/gsm/libosmogsm.map<br>6 files changed, 136 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/gsm/gsm0808_utils.h b/include/osmocom/gsm/gsm0808_utils.h</span><br><span>index 59db6ed..76e9064 100644</span><br><span>--- a/include/osmocom/gsm/gsm0808_utils.h</span><br><span>+++ b/include/osmocom/gsm/gsm0808_utils.h</span><br><span>@@ -44,6 +44,7 @@</span><br><span>  uint16_t                                ci;</span><br><span>  struct osmo_location_area_id            lai_and_lac;</span><br><span>         uint16_t                                lac;</span><br><span style="color: hsl(120, 100%, 40%);">+  struct osmo_cell_global_id_ps           global_ps;</span><br><span> };</span><br><span> </span><br><span> /*! Parsed representation of Cell Identifier IE (3GPP TS 48.008 3.2.2.17) */</span><br><span>diff --git a/include/osmocom/gsm/gsm23003.h b/include/osmocom/gsm/gsm23003.h</span><br><span>index 69f00f6..fbe0ca0 100644</span><br><span>--- a/include/osmocom/gsm/gsm23003.h</span><br><span>+++ b/include/osmocom/gsm/gsm23003.h</span><br><span>@@ -30,6 +30,11 @@</span><br><span>       uint16_t cell_identity;</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+struct osmo_cell_global_id_ps {</span><br><span style="color: hsl(120, 100%, 40%);">+    struct osmo_routing_area_id rai;</span><br><span style="color: hsl(120, 100%, 40%);">+      uint16_t cell_identity;</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*! Bitmask of items contained in a struct osmo_cell_global_id.</span><br><span>  * See also gsm0808_cell_id_to_cgi().</span><br><span>  */</span><br><span>@@ -37,6 +42,7 @@</span><br><span>         OSMO_CGI_PART_PLMN = 1,</span><br><span>      OSMO_CGI_PART_LAC = 2,</span><br><span>       OSMO_CGI_PART_CI = 4,</span><br><span style="color: hsl(120, 100%, 40%);">+ OSMO_CGI_PART_RAC = 8,</span><br><span> };</span><br><span> </span><br><span> /* Actually defined in 3GPP TS 48.008 3.2.2.27 Cell Identifier List,</span><br><span>@@ -117,10 +123,17 @@</span><br><span> const char *osmo_lai_name(const struct osmo_location_area_id *lai);</span><br><span> char *osmo_lai_name_buf(char *buf, size_t buf_len, const struct osmo_location_area_id *lai);</span><br><span> char *osmo_lai_name_c(const void *ctx, const struct osmo_location_area_id *lai);</span><br><span style="color: hsl(120, 100%, 40%);">+const char *osmo_rai_name2(const struct osmo_routing_area_id *rai);</span><br><span style="color: hsl(120, 100%, 40%);">+char *osmo_rai_name2_buf(char *buf, size_t buf_len, const struct osmo_routing_area_id *rai);</span><br><span style="color: hsl(120, 100%, 40%);">+char *osmo_rai_name2_c(const void *ctx, const struct osmo_routing_area_id *rai);</span><br><span> const char *osmo_cgi_name(const struct osmo_cell_global_id *cgi);</span><br><span> const char *osmo_cgi_name2(const struct osmo_cell_global_id *cgi);</span><br><span> char *osmo_cgi_name_buf(char *buf, size_t buf_len, const struct osmo_cell_global_id *cgi);</span><br><span> char *osmo_cgi_name_c(const void *ctx, const struct osmo_cell_global_id *cgi);</span><br><span style="color: hsl(120, 100%, 40%);">+const char *osmo_cgi_ps_name(const struct osmo_cell_global_id_ps *cgi_ps);</span><br><span style="color: hsl(120, 100%, 40%);">+const char *osmo_cgi_ps_name2(const struct osmo_cell_global_id_ps *cgi_ps);</span><br><span style="color: hsl(120, 100%, 40%);">+char *osmo_cgi_ps_name_buf(char *buf, size_t buf_len, const struct osmo_cell_global_id_ps *cgi_ps);</span><br><span style="color: hsl(120, 100%, 40%);">+char *osmo_cgi_ps_name_c(const void *ctx, const struct osmo_cell_global_id_ps *cgi_ps);</span><br><span> const char *osmo_gummei_name(const struct osmo_gummei *gummei);</span><br><span> char *osmo_gummei_name_buf(char *buf, size_t buf_len, const struct osmo_gummei *gummei);</span><br><span> char *osmo_gummei_name_c(const void *ctx, const struct osmo_gummei *gummei);</span><br><span>diff --git a/include/osmocom/gsm/protocol/gsm_08_08.h b/include/osmocom/gsm/protocol/gsm_08_08.h</span><br><span>index 1390f0e..fe7776b 100644</span><br><span>--- a/include/osmocom/gsm/protocol/gsm_08_08.h</span><br><span>+++ b/include/osmocom/gsm/protocol/gsm_08_08.h</span><br><span>@@ -25,6 +25,9 @@</span><br><span>   CELL_IDENT_UTRAN_PLMN_LAC_RNC   = 8,</span><br><span>         CELL_IDENT_UTRAN_RNC            = 9,</span><br><span>         CELL_IDENT_UTRAN_LAC_RNC        = 10,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Not in 03.03 nor 08.08 */</span><br><span style="color: hsl(120, 100%, 40%);">+  CELL_IDENT_WHOLE_GLOBAL_PS      = 11, /* CGI with + RAC */</span><br><span> };</span><br><span> /* Keep this misnamed CELL_IDENT for API backwards compatibility (see OS#3124). */</span><br><span> #define CELL_IDENT_LAI_AND_LAC CELL_IDENT_LAI</span><br><span>diff --git a/src/gsm/gsm0808_utils.c b/src/gsm/gsm0808_utils.c</span><br><span>index 6bf771f..c1b0a00 100644</span><br><span>--- a/src/gsm/gsm0808_utils.c</span><br><span>+++ b/src/gsm/gsm0808_utils.c</span><br><span>@@ -784,6 +784,8 @@</span><br><span>       case CELL_IDENT_BSS:</span><br><span>         case CELL_IDENT_NO_CELL:</span><br><span>             return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+     case CELL_IDENT_WHOLE_GLOBAL_PS:</span><br><span style="color: hsl(120, 100%, 40%);">+              return 8;</span><br><span>    default:</span><br><span>             return -EINVAL;</span><br><span>      }</span><br><span>@@ -828,6 +830,13 @@</span><br><span>     case CELL_IDENT_NO_CELL:</span><br><span>             /* Does not have any list items */</span><br><span>           break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case CELL_IDENT_WHOLE_GLOBAL_PS:</span><br><span style="color: hsl(120, 100%, 40%);">+              if (len < 8)</span><br><span style="color: hsl(120, 100%, 40%);">+                       return -EINVAL;</span><br><span style="color: hsl(120, 100%, 40%);">+               decode_lai(buf, (struct osmo_location_area_id *)&out->global_ps.rai); /* rai contains lai + non-decoded rac */</span><br><span style="color: hsl(120, 100%, 40%);">+         out->global_ps.rai.rac = *(buf + sizeof(struct gsm48_loc_area_id));</span><br><span style="color: hsl(120, 100%, 40%);">+                out->global_ps.cell_identity = osmo_load16be(buf + sizeof(struct gsm48_loc_area_id) + 1);</span><br><span style="color: hsl(120, 100%, 40%);">+          break;</span><br><span>       default:</span><br><span>             /* Remaining cell identification types are not implemented. */</span><br><span>               return -EINVAL;</span><br><span>@@ -869,6 +878,15 @@</span><br><span>       case CELL_IDENT_NO_CELL:</span><br><span>             /* Does not have any list items */</span><br><span>           break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case CELL_IDENT_WHOLE_GLOBAL_PS: {</span><br><span style="color: hsl(120, 100%, 40%);">+            const struct osmo_cell_global_id_ps *id = &u->global_ps;</span><br><span style="color: hsl(120, 100%, 40%);">+               struct gsm48_loc_area_id lai;</span><br><span style="color: hsl(120, 100%, 40%);">+         gsm48_generate_lai2(&lai, &id->rai.lac);</span><br><span style="color: hsl(120, 100%, 40%);">+           memcpy(msgb_put(msg, sizeof(lai)), &lai, sizeof(lai));</span><br><span style="color: hsl(120, 100%, 40%);">+            memcpy(msgb_put(msg, 1), &id->rai.rac, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+             msgb_put_u16(msg, id->cell_identity);</span><br><span style="color: hsl(120, 100%, 40%);">+              break;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span>    default:</span><br><span>             /* Support for other identifier list types is not implemented. */</span><br><span>            OSMO_ASSERT(false);</span><br><span>@@ -1592,6 +1610,8 @@</span><br><span>          return snprintf(buf, buflen, "%s", osmo_lai_name(&u->lai_and_lac));</span><br><span>         case CELL_IDENT_WHOLE_GLOBAL:</span><br><span>                return snprintf(buf, buflen, "%s", osmo_cgi_name(&u->global));</span><br><span style="color: hsl(120, 100%, 40%);">+       case CELL_IDENT_WHOLE_GLOBAL_PS:</span><br><span style="color: hsl(120, 100%, 40%);">+              return snprintf(buf, buflen, "%s", osmo_cgi_ps_name(&u->global_ps));</span><br><span>        default:</span><br><span>             /* For CELL_IDENT_BSS and CELL_IDENT_NO_CELL, just print the discriminator.</span><br><span>           * Same for kinds we have no string representation of yet. */</span><br><span>@@ -1613,6 +1633,11 @@</span><br><span>               *dst = u->global;</span><br><span>                 return;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+   case CELL_IDENT_WHOLE_GLOBAL_PS:</span><br><span style="color: hsl(120, 100%, 40%);">+              dst->lai = u->global_ps.rai.lac;</span><br><span style="color: hsl(120, 100%, 40%);">+                dst->cell_identity = u->global_ps.cell_identity;</span><br><span style="color: hsl(120, 100%, 40%);">+                return;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>    case CELL_IDENT_LAC_AND_CI:</span><br><span>          dst->lai.lac = u->lac_and_ci.lac;</span><br><span>              dst->cell_identity = u->lac_and_ci.ci;</span><br><span>@@ -1805,6 +1830,11 @@</span><br><span>                *cgi = cid->id.global;</span><br><span>            return OSMO_CGI_PART_PLMN | OSMO_CGI_PART_LAC | OSMO_CGI_PART_CI;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ case CELL_IDENT_WHOLE_GLOBAL_PS:</span><br><span style="color: hsl(120, 100%, 40%);">+              cgi->lai = cid->id.global_ps.rai.lac;</span><br><span style="color: hsl(120, 100%, 40%);">+           cgi->cell_identity = cid->id.global_ps.cell_identity;</span><br><span style="color: hsl(120, 100%, 40%);">+           return OSMO_CGI_PART_PLMN | OSMO_CGI_PART_LAC | OSMO_CGI_PART_CI;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  case CELL_IDENT_LAC_AND_CI:</span><br><span>          cgi->lai.lac = cid->id.lac_and_ci.lac;</span><br><span>                 cgi->cell_identity = cid->id.lac_and_ci.ci;</span><br><span>@@ -1844,6 +1874,7 @@</span><br><span>    { CELL_IDENT_UTRAN_PLMN_LAC_RNC, "UTRAN-PLMN-LAC-RNC" },</span><br><span>   { CELL_IDENT_UTRAN_RNC, "UTRAN-RNC" },</span><br><span>     { CELL_IDENT_UTRAN_LAC_RNC, "UTRAN-LAC-RNC" },</span><br><span style="color: hsl(120, 100%, 40%);">+      { CELL_IDENT_WHOLE_GLOBAL_PS, "CGI-PS"},</span><br><span>   { 0, NULL }</span><br><span> };</span><br><span> </span><br><span>diff --git a/src/gsm/gsm23003.c b/src/gsm/gsm23003.c</span><br><span>index e20afcb..ae498fa 100644</span><br><span>--- a/src/gsm/gsm23003.c</span><br><span>+++ b/src/gsm/gsm23003.c</span><br><span>@@ -247,6 +247,43 @@</span><br><span>    return osmo_lai_name_buf(buf, 32, lai);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Return MCC-MNC-LAC-RAC as string, in caller-provided output buffer.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[out] buf caller-allocated output buffer</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[in] buf_len size of buf in bytes</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[in] rai  RAI to encode, the rac member is ignored.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \returns buf</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+char *osmo_rai_name2_buf(char *buf, size_t buf_len, const struct osmo_routing_area_id *rai)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  char plmn[16];</span><br><span style="color: hsl(120, 100%, 40%);">+        snprintf(buf, buf_len, "%s-%u-%u", osmo_plmn_name_buf(plmn, sizeof(plmn),</span><br><span style="color: hsl(120, 100%, 40%);">+            &rai->lac.plmn), rai->lac.lac, rai->rac);</span><br><span style="color: hsl(120, 100%, 40%);">+       return buf;</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%);">+/*! Return MCC-MNC-LAC-RAC as string, in a static buffer.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[in] rai  RAI to encode, the rac member is ignored.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \returns Static string buffer.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+const char *osmo_rai_name2(const struct osmo_routing_area_id *rai)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      static __thread char buf[32];</span><br><span style="color: hsl(120, 100%, 40%);">+ return osmo_rai_name2_buf(buf, sizeof(buf), rai);</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%);">+/*! Return MCC-MNC-LAC-RAC as string, in a talloc-allocated output buffer.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[in] ctx talloc context from which to allocate output buffer</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[in] rai  RAI to encode, the rac member is ignored.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \returns string representation of lai in dynamically allocated buffer.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+char *osmo_rai_name2_c(const void *ctx, const struct osmo_routing_area_id *rai)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   char *buf = talloc_size(ctx, 32);</span><br><span style="color: hsl(120, 100%, 40%);">+     if (!buf)</span><br><span style="color: hsl(120, 100%, 40%);">+             return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+  return osmo_rai_name2_buf(buf, 32, rai);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*! Return MCC-MNC-LAC-CI as string, in caller-provided output buffer.</span><br><span>  * \param[out] buf caller-allocated output buffer</span><br><span>  * \param[in] buf_len size of buf in bytes</span><br><span>@@ -291,6 +328,50 @@</span><br><span>    return osmo_cgi_name_buf(buf, 32, cgi);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Return MCC-MNC-LAC-RAC-CI as string, in caller-provided output buffer.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[out] buf caller-allocated output buffer</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[in] buf_len size of buf in bytes</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[in] cgi_ps  CGI-PS to encode.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \returns buf</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+char *osmo_cgi_ps_name_buf(char *buf, size_t buf_len, const struct osmo_cell_global_id_ps *cgi_ps)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     snprintf(buf, buf_len, "%s-%u", osmo_rai_name2(&cgi_ps->rai), cgi_ps->cell_identity);</span><br><span style="color: hsl(120, 100%, 40%);">+     return buf;</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%);">+/*! Return MCC-MNC-LAC-RAC-CI as string, in a static buffer.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[in] cgi_ps  CGI-PS to encode.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \returns Static string buffer.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+const char *osmo_cgi_ps_name(const struct osmo_cell_global_id_ps *cgi_ps)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ static __thread char buf[32];</span><br><span style="color: hsl(120, 100%, 40%);">+ return osmo_cgi_ps_name_buf(buf, sizeof(buf), cgi_ps);</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%);">+/*! Same as osmo_cgi_ps_name(), but uses a different static buffer.</span><br><span style="color: hsl(120, 100%, 40%);">+ * Useful for printing two distinct CGI-PSs in the same printf format.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[in] cgi  CGI-PS to encode.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \returns Static string buffer.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+const char *osmo_cgi_ps_name2(const struct osmo_cell_global_id_ps *cgi_ps)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ static __thread char buf[32];</span><br><span style="color: hsl(120, 100%, 40%);">+ return osmo_cgi_ps_name_buf(buf, sizeof(buf), cgi_ps);</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%);">+/*! Return MCC-MNC-LAC-RAC-CI as string, in a talloc-allocated output buffer.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[in] ctx talloc context from which to allocate output buffer</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[in] cgi_ps  CGI-PS to encode.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \returns string representation of CGI in dynamically-allocated buffer.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+char *osmo_cgi_ps_name_c(const void *ctx, const struct osmo_cell_global_id_ps *cgi_ps)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ char *buf = talloc_size(ctx, 32);</span><br><span style="color: hsl(120, 100%, 40%);">+     return osmo_cgi_ps_name_buf(buf, 32, cgi_ps);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static void to_bcd(uint8_t *bcd, uint16_t val)</span><br><span> {</span><br><span>    bcd[2] = val % 10;</span><br><span>diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map</span><br><span>index bcded1c..eceb1c1 100644</span><br><span>--- a/src/gsm/libosmogsm.map</span><br><span>+++ b/src/gsm/libosmogsm.map</span><br><span>@@ -412,10 +412,17 @@</span><br><span> osmo_rai_name;</span><br><span> osmo_rai_name_buf;</span><br><span> osmo_rai_name_c;</span><br><span style="color: hsl(120, 100%, 40%);">+osmo_rai_name2;</span><br><span style="color: hsl(120, 100%, 40%);">+osmo_rai_name2_buf;</span><br><span style="color: hsl(120, 100%, 40%);">+osmo_rai_name2_c;</span><br><span> osmo_cgi_name;</span><br><span> osmo_cgi_name_buf;</span><br><span> osmo_cgi_name_c;</span><br><span> osmo_cgi_name2;</span><br><span style="color: hsl(120, 100%, 40%);">+osmo_cgi_ps_name;</span><br><span style="color: hsl(120, 100%, 40%);">+osmo_cgi_ps_name_buf;</span><br><span style="color: hsl(120, 100%, 40%);">+osmo_cgi_ps_name_c;</span><br><span style="color: hsl(120, 100%, 40%);">+osmo_cgi_ps_name2;</span><br><span> osmo_gummei_name;</span><br><span> osmo_gummei_name_buf;</span><br><span> osmo_gummei_name_c;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/22013">change 22013</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/libosmocore/+/22013"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: If48f412c32e8e5a3e604a78d12b74787a4786374 </div>
<div style="display:none"> Gerrit-Change-Number: 22013 </div>
<div style="display:none"> Gerrit-PatchSet: 7 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>