<p>dexter has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-mgw/+/24963">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">mgcp_trunk: use unsigned int instead of int as trunk_nr<br><br>the trunk_nr is in struct mgcp_trunk. The trunk number can not be<br>negative and there is no magic value that makes use of the fact that it<br>could be negative. Lets use unsigned int to make this less irretating.<br><br>Change-Id: I5d0e1d76adb8c92d84331a0aca2496908e41d621<br>---<br>M include/osmocom/mgcp/mgcp_trunk.h<br>M src/libosmo-mgcp/mgcp_endp.c<br>M src/libosmo-mgcp/mgcp_ratectr.c<br>M src/libosmo-mgcp/mgcp_trunk.c<br>M src/libosmo-mgcp/mgcp_vty.c<br>M src/osmo-mgw/mgw_main.c<br>M tests/mgcp/mgcp_test.c<br>7 files changed, 63 insertions(+), 52 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/63/24963/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/mgcp/mgcp_trunk.h b/include/osmocom/mgcp/mgcp_trunk.h</span><br><span>index 326b16a..048ac5b 100644</span><br><span>--- a/include/osmocom/mgcp/mgcp_trunk.h</span><br><span>+++ b/include/osmocom/mgcp/mgcp_trunk.h</span><br><span>@@ -22,7 +22,7 @@</span><br><span> </span><br><span>       struct mgcp_config *cfg;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    int trunk_nr;</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned int trunk_nr;</span><br><span>       enum mgcp_trunk_type trunk_type;</span><br><span> </span><br><span>         char *audio_fmtp_extra;</span><br><span>@@ -72,11 +72,11 @@</span><br><span>        };</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-struct mgcp_trunk *mgcp_trunk_alloc(struct mgcp_config *cfg, enum mgcp_trunk_type ttype, int nr);</span><br><span style="color: hsl(120, 100%, 40%);">+struct mgcp_trunk *mgcp_trunk_alloc(struct mgcp_config *cfg, enum mgcp_trunk_type ttype, unsigned int nr);</span><br><span> int mgcp_trunk_equip(struct mgcp_trunk *trunk);</span><br><span style="color: hsl(0, 100%, 40%);">-struct mgcp_trunk *mgcp_trunk_by_num(const struct mgcp_config *cfg, enum mgcp_trunk_type ttype, int nr);</span><br><span style="color: hsl(120, 100%, 40%);">+struct mgcp_trunk *mgcp_trunk_by_num(const struct mgcp_config *cfg, enum mgcp_trunk_type ttype, unsigned int nr);</span><br><span> struct mgcp_trunk *mgcp_trunk_by_name(const struct mgcp_config *cfg, const char *epname);</span><br><span style="color: hsl(0, 100%, 40%);">-int e1_trunk_nr_from_epname(const char *epname);</span><br><span style="color: hsl(120, 100%, 40%);">+int e1_trunk_nr_from_epname(unsigned int *trunk_nr, const char *epname);</span><br><span> struct mgcp_trunk *mgcp_trunk_by_line_num(const struct mgcp_config *cfg, unsigned int num);</span><br><span> </span><br><span> /* The virtual trunk is always created on trunk id 0 for historical reasons,</span><br><span>diff --git a/src/libosmo-mgcp/mgcp_endp.c b/src/libosmo-mgcp/mgcp_endp.c</span><br><span>index ddfd6cf..ae376b0 100644</span><br><span>--- a/src/libosmo-mgcp/mgcp_endp.c</span><br><span>+++ b/src/libosmo-mgcp/mgcp_endp.c</span><br><span>@@ -58,7 +58,7 @@</span><br><span> }</span><br><span> </span><br><span> /* Generate E1 endpoint name from given numeric parameters */</span><br><span style="color: hsl(0, 100%, 40%);">-static char *gen_e1_epname(void *ctx, const char *domain, uint8_t trunk_nr,</span><br><span style="color: hsl(120, 100%, 40%);">+static char *gen_e1_epname(void *ctx, const char *domain, unsigned int trunk_nr,</span><br><span>                       uint8_t ts_nr, uint8_t ss_nr)</span><br><span> {</span><br><span>        unsigned int rate;</span><br><span>diff --git a/src/libosmo-mgcp/mgcp_ratectr.c b/src/libosmo-mgcp/mgcp_ratectr.c</span><br><span>index af1526a..1f8b233 100644</span><br><span>--- a/src/libosmo-mgcp/mgcp_ratectr.c</span><br><span>+++ b/src/libosmo-mgcp/mgcp_ratectr.c</span><br><span>@@ -195,7 +195,7 @@</span><br><span>                rate_ctr_group_alloc(trunk, &mgcp_crcx_ctr_group_desc, crcx_rate_ctr_index);</span><br><span>                 if (!ratectr->mgcp_crcx_ctr_group)</span><br><span>                        return -EINVAL;</span><br><span style="color: hsl(0, 100%, 40%);">-         snprintf(ctr_name, sizeof(ctr_name), "%s-%d:crcx", mgcp_trunk_type_strs_str(trunk->trunk_type),</span><br><span style="color: hsl(120, 100%, 40%);">+          snprintf(ctr_name, sizeof(ctr_name), "%s-%u:crcx", mgcp_trunk_type_strs_str(trunk->trunk_type),</span><br><span>                          trunk->trunk_nr);</span><br><span>                rate_ctr_group_set_name(ratectr->mgcp_crcx_ctr_group, ctr_name);</span><br><span>          talloc_set_destructor(ratectr->mgcp_crcx_ctr_group, free_rate_counter_group);</span><br><span>@@ -206,7 +206,7 @@</span><br><span>                   rate_ctr_group_alloc(trunk, &mgcp_mdcx_ctr_group_desc, mdcx_rate_ctr_index);</span><br><span>                 if (!ratectr->mgcp_mdcx_ctr_group)</span><br><span>                        return -EINVAL;</span><br><span style="color: hsl(0, 100%, 40%);">-         snprintf(ctr_name, sizeof(ctr_name), "%s-%d:mdcx", mgcp_trunk_type_strs_str(trunk->trunk_type),</span><br><span style="color: hsl(120, 100%, 40%);">+          snprintf(ctr_name, sizeof(ctr_name), "%s-%u:mdcx", mgcp_trunk_type_strs_str(trunk->trunk_type),</span><br><span>                          trunk->trunk_nr);</span><br><span>                rate_ctr_group_set_name(ratectr->mgcp_mdcx_ctr_group, ctr_name);</span><br><span>          talloc_set_destructor(ratectr->mgcp_mdcx_ctr_group, free_rate_counter_group);</span><br><span>@@ -217,7 +217,7 @@</span><br><span>                   rate_ctr_group_alloc(trunk, &mgcp_dlcx_ctr_group_desc, dlcx_rate_ctr_index);</span><br><span>                 if (!ratectr->mgcp_dlcx_ctr_group)</span><br><span>                        return -EINVAL;</span><br><span style="color: hsl(0, 100%, 40%);">-         snprintf(ctr_name, sizeof(ctr_name), "%s-%d:dlcx", mgcp_trunk_type_strs_str(trunk->trunk_type),</span><br><span style="color: hsl(120, 100%, 40%);">+          snprintf(ctr_name, sizeof(ctr_name), "%s-%u:dlcx", mgcp_trunk_type_strs_str(trunk->trunk_type),</span><br><span>                          trunk->trunk_nr);</span><br><span>                rate_ctr_group_set_name(ratectr->mgcp_dlcx_ctr_group, ctr_name);</span><br><span>          talloc_set_destructor(ratectr->mgcp_dlcx_ctr_group, free_rate_counter_group);</span><br><span>@@ -228,7 +228,7 @@</span><br><span>                                                                  all_rtp_conn_rate_ctr_index);</span><br><span>             if (!ratectr->all_rtp_conn_stats)</span><br><span>                         return -EINVAL;</span><br><span style="color: hsl(0, 100%, 40%);">-         snprintf(ctr_name, sizeof(ctr_name), "%s-%d:rtp_conn", mgcp_trunk_type_strs_str(trunk->trunk_type),</span><br><span style="color: hsl(120, 100%, 40%);">+              snprintf(ctr_name, sizeof(ctr_name), "%s-%u:rtp_conn", mgcp_trunk_type_strs_str(trunk->trunk_type),</span><br><span>                      trunk->trunk_nr);</span><br><span>                rate_ctr_group_set_name(ratectr->all_rtp_conn_stats, ctr_name);</span><br><span>           talloc_set_destructor(ratectr->all_rtp_conn_stats, free_rate_counter_group);</span><br><span>@@ -240,7 +240,7 @@</span><br><span>                ratectr->e1_stats = rate_ctr_group_alloc(trunk, &e1_rate_ctr_group_desc, mdcx_rate_ctr_index);</span><br><span>                if (!ratectr->e1_stats)</span><br><span>                   return -EINVAL;</span><br><span style="color: hsl(0, 100%, 40%);">-         snprintf(ctr_name, sizeof(ctr_name), "%s-%d:e1", mgcp_trunk_type_strs_str(trunk->trunk_type),</span><br><span style="color: hsl(120, 100%, 40%);">+            snprintf(ctr_name, sizeof(ctr_name), "%s-%u:e1", mgcp_trunk_type_strs_str(trunk->trunk_type),</span><br><span>                    trunk->trunk_nr);</span><br><span>                rate_ctr_group_set_name(ratectr->e1_stats, ctr_name);</span><br><span>             talloc_set_destructor(ratectr->e1_stats, free_rate_counter_group);</span><br><span>diff --git a/src/libosmo-mgcp/mgcp_trunk.c b/src/libosmo-mgcp/mgcp_trunk.c</span><br><span>index 08f99b3..c88c0a8 100644</span><br><span>--- a/src/libosmo-mgcp/mgcp_trunk.c</span><br><span>+++ b/src/libosmo-mgcp/mgcp_trunk.c</span><br><span>@@ -40,7 +40,7 @@</span><br><span>  *  \param[in] ttype trunk type.</span><br><span>  *  \param[in] nr trunk number.</span><br><span>  *  \returns pointer to allocated trunk, NULL on failure. */</span><br><span style="color: hsl(0, 100%, 40%);">-struct mgcp_trunk *mgcp_trunk_alloc(struct mgcp_config *cfg, enum mgcp_trunk_type ttype, int nr)</span><br><span style="color: hsl(120, 100%, 40%);">+struct mgcp_trunk *mgcp_trunk_alloc(struct mgcp_config *cfg, enum mgcp_trunk_type ttype, unsigned int nr)</span><br><span> {</span><br><span>    struct mgcp_trunk *trunk;</span><br><span> </span><br><span>@@ -171,7 +171,7 @@</span><br><span>  *  \param[in] ttype trunk type.</span><br><span>  *  \param[in] nr trunk number.</span><br><span>  *  \returns pointer to trunk configuration, NULL on error. */</span><br><span style="color: hsl(0, 100%, 40%);">-struct mgcp_trunk *mgcp_trunk_by_num(const struct mgcp_config *cfg, enum mgcp_trunk_type ttype, int nr)</span><br><span style="color: hsl(120, 100%, 40%);">+struct mgcp_trunk *mgcp_trunk_by_num(const struct mgcp_config *cfg, enum mgcp_trunk_type ttype, unsigned int nr)</span><br><span> {</span><br><span>   struct mgcp_trunk *trunk;</span><br><span> </span><br><span>@@ -184,9 +184,9 @@</span><br><span> }</span><br><span> </span><br><span> /* Made public for unit-testing, do not use from outside this file */</span><br><span style="color: hsl(0, 100%, 40%);">-int e1_trunk_nr_from_epname(const char *epname)</span><br><span style="color: hsl(120, 100%, 40%);">+int e1_trunk_nr_from_epname(unsigned int *trunk_nr, const char *epname)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-      unsigned long int trunk_nr;</span><br><span style="color: hsl(120, 100%, 40%);">+   unsigned long int trunk_nr_temp;</span><br><span>     size_t prefix_len;</span><br><span>   char *str_trunk_nr_end;</span><br><span> </span><br><span>@@ -195,13 +195,15 @@</span><br><span>          return -EINVAL;</span><br><span> </span><br><span>  errno = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-      trunk_nr = strtoul(epname + prefix_len, &str_trunk_nr_end, 10);</span><br><span style="color: hsl(0, 100%, 40%);">-     if (errno == ERANGE || trunk_nr > 64</span><br><span style="color: hsl(120, 100%, 40%);">+       trunk_nr_temp = strtoul(epname + prefix_len, &str_trunk_nr_end, 10);</span><br><span style="color: hsl(120, 100%, 40%);">+      if (errno == ERANGE || trunk_nr_temp > 64</span><br><span>             || epname + prefix_len == str_trunk_nr_end</span><br><span>           || str_trunk_nr_end[0] != '/')</span><br><span>           return -EINVAL;</span><br><span style="color: hsl(0, 100%, 40%);">- else</span><br><span style="color: hsl(0, 100%, 40%);">-            return trunk_nr;</span><br><span style="color: hsl(120, 100%, 40%);">+      else {</span><br><span style="color: hsl(120, 100%, 40%);">+                *trunk_nr = (unsigned int)trunk_nr_temp;</span><br><span style="color: hsl(120, 100%, 40%);">+              return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> }</span><br><span> </span><br><span> /*! Find a trunk by the trunk prefix in the endpoint name.</span><br><span>@@ -212,7 +214,8 @@</span><br><span> {</span><br><span>  size_t prefix_len;</span><br><span>   char epname_lc[MGCP_ENDPOINT_MAXLEN];</span><br><span style="color: hsl(0, 100%, 40%);">-   int trunk_nr;</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned int trunk_nr;</span><br><span style="color: hsl(120, 100%, 40%);">+        int rc;</span><br><span> </span><br><span>  osmo_str_tolower_buf(epname_lc, sizeof(epname_lc), epname);</span><br><span>  epname = epname_lc;</span><br><span>@@ -222,8 +225,8 @@</span><br><span>            return mgcp_trunk_by_num(cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);</span><br><span>       }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   trunk_nr = e1_trunk_nr_from_epname(epname);</span><br><span style="color: hsl(0, 100%, 40%);">-     if (trunk_nr >= 0)</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = e1_trunk_nr_from_epname(&trunk_nr, epname);</span><br><span style="color: hsl(120, 100%, 40%);">+  if (rc == 0)</span><br><span>                 return mgcp_trunk_by_num(cfg, MGCP_TRUNK_E1, trunk_nr);</span><br><span> </span><br><span>  /* Earlier versions of osmo-mgw were accepting endpoint names</span><br><span>diff --git a/src/libosmo-mgcp/mgcp_vty.c b/src/libosmo-mgcp/mgcp_vty.c</span><br><span>index 369c1c1..6bc09d0 100644</span><br><span>--- a/src/libosmo-mgcp/mgcp_vty.c</span><br><span>+++ b/src/libosmo-mgcp/mgcp_vty.c</span><br><span>@@ -200,11 +200,11 @@</span><br><span> }</span><br><span> </span><br><span> static void dump_endpoint(struct vty *vty, struct mgcp_endpoint *endp,</span><br><span style="color: hsl(0, 100%, 40%);">-                         int trunk_nr, enum mgcp_trunk_type trunk_type, int show_stats)</span><br><span style="color: hsl(120, 100%, 40%);">+                        unsigned int trunk_nr, enum mgcp_trunk_type trunk_type, int show_stats)</span><br><span> {</span><br><span>       struct mgcp_conn *conn;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     vty_out(vty, "%s trunk %d endpoint %s:%s",</span><br><span style="color: hsl(120, 100%, 40%);">+  vty_out(vty, "%s trunk %u endpoint %s:%s",</span><br><span>                 trunk_type == MGCP_TRUNK_VIRTUAL ? "Virtual" : "E1", trunk_nr, endp->name, VTY_NEWLINE);</span><br><span>      vty_out(vty, "   Availability: %s%s",</span><br><span>              mgcp_endp_avail(endp) ? "available" : "not in service", VTY_NEWLINE);</span><br><span>@@ -382,7 +382,7 @@</span><br><span>              /* If a trunk is given, search on that specific trunk only */</span><br><span>                endp = mgcp_endp_by_name_trunk(NULL, epname, trunk);</span><br><span>                 if (!endp) {</span><br><span style="color: hsl(0, 100%, 40%);">-                    vty_out(vty, "endpoint %s not configured on trunk %d%s", epname, trunk->trunk_nr, VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+                  vty_out(vty, "endpoint %s not configured on trunk %u%s", epname, trunk->trunk_nr, VTY_NEWLINE);</span><br><span>                         return;</span><br><span>              }</span><br><span>    } else {</span><br><span>@@ -963,7 +963,7 @@</span><br><span>       "trunk <0-64>", "Configure a SS7 trunk\n" "Trunk Nr\n")</span><br><span> {</span><br><span>     struct mgcp_trunk *trunk;</span><br><span style="color: hsl(0, 100%, 40%);">-       int index = atoi(argv[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+    unsigned int index = atoi(argv[0]);</span><br><span> </span><br><span>      trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_E1, index);</span><br><span>      if (!trunk) {</span><br><span>@@ -995,7 +995,7 @@</span><br><span>              && trunk->trunk_nr == MGCP_VIRT_TRUNK_ID)</span><br><span>                     continue;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-           vty_out(vty, " trunk %d%s", trunk->trunk_nr, VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+               vty_out(vty, " trunk %u%s", trunk->trunk_nr, VTY_NEWLINE);</span><br><span>              vty_out(vty, "  line %u%s", trunk->e1.vty_line_nr, VTY_NEWLINE);</span><br><span>                vty_out(vty, "  %ssdp audio-payload send-ptime%s",</span><br><span>                         trunk->audio_send_ptime ? "" : "no ", VTY_NEWLINE);</span><br><span>@@ -1335,7 +1335,7 @@</span><br><span>   }</span><br><span> </span><br><span>        if (!trunk->endpoints) {</span><br><span style="color: hsl(0, 100%, 40%);">-             vty_out(vty, "%%Trunk %d has no endpoints allocated.%s",</span><br><span style="color: hsl(120, 100%, 40%);">+            vty_out(vty, "%%Trunk %u has no endpoints allocated.%s",</span><br><span>                   trunk->trunk_nr, VTY_NEWLINE);</span><br><span>            return CMD_WARNING;</span><br><span>  }</span><br><span>@@ -1396,7 +1396,7 @@</span><br><span>    }</span><br><span> </span><br><span>        if (!trunk->endpoints) {</span><br><span style="color: hsl(0, 100%, 40%);">-             vty_out(vty, "%%Trunk %d has no endpoints allocated.%s",</span><br><span style="color: hsl(120, 100%, 40%);">+            vty_out(vty, "%%Trunk %u has no endpoints allocated.%s",</span><br><span>                   trunk->trunk_nr, VTY_NEWLINE);</span><br><span>            return CMD_WARNING;</span><br><span>  }</span><br><span>@@ -1463,7 +1463,7 @@</span><br><span>    }</span><br><span> </span><br><span>        if (!trunk->endpoints) {</span><br><span style="color: hsl(0, 100%, 40%);">-             vty_out(vty, "%%Trunk %d has no endpoints allocated.%s",</span><br><span style="color: hsl(120, 100%, 40%);">+            vty_out(vty, "%%Trunk %u has no endpoints allocated.%s",</span><br><span>                   trunk->trunk_nr, VTY_NEWLINE);</span><br><span>            return CMD_WARNING;</span><br><span>  }</span><br><span>@@ -1496,7 +1496,7 @@</span><br><span>    }</span><br><span> </span><br><span>        if (!trunk->endpoints) {</span><br><span style="color: hsl(0, 100%, 40%);">-             vty_out(vty, "%%Trunk %d has no endpoints allocated.%s",</span><br><span style="color: hsl(120, 100%, 40%);">+            vty_out(vty, "%%Trunk %u has no endpoints allocated.%s",</span><br><span>                   trunk->trunk_nr, VTY_NEWLINE);</span><br><span>            return CMD_WARNING;</span><br><span>  }</span><br><span>@@ -1756,7 +1756,7 @@</span><br><span>    llist_for_each_entry(trunk, &g_cfg->trunks, entry) {</span><br><span>          if (mgcp_trunk_equip(trunk) != 0) {</span><br><span>                  LOGP(DLMGCP, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                             "Failed to initialize trunk %d (%d endpoints)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                           "Failed to initialize trunk %u (%d endpoints)\n",</span><br><span>                          trunk->trunk_nr, trunk->number_endpoints);</span><br><span>                        return -1;</span><br><span>           }</span><br><span>diff --git a/src/osmo-mgw/mgw_main.c b/src/osmo-mgw/mgw_main.c</span><br><span>index 113f691..52a1622 100644</span><br><span>--- a/src/osmo-mgw/mgw_main.c</span><br><span>+++ b/src/osmo-mgw/mgw_main.c</span><br><span>@@ -235,7 +235,7 @@</span><br><span>     /* reset endpoints */</span><br><span>        if (reset_endpoints) {</span><br><span>               LOGP(DLMGCP, LOGL_NOTICE,</span><br><span style="color: hsl(0, 100%, 40%);">-                    "Asked to reset endpoints: %d/%d\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                "Asked to reset endpoints: %u/%d\n",</span><br><span>               reset_trunk->trunk_nr, reset_trunk->trunk_type);</span><br><span> </span><br><span>              /* reset flag */</span><br><span>diff --git a/tests/mgcp/mgcp_test.c b/tests/mgcp/mgcp_test.c</span><br><span>index 7397f5c..02d54bf 100644</span><br><span>--- a/tests/mgcp/mgcp_test.c</span><br><span>+++ b/tests/mgcp/mgcp_test.c</span><br><span>@@ -2149,42 +2149,50 @@</span><br><span> </span><br><span> void test_e1_trunk_nr_from_epname()</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- int trunk_nr;</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned int trunk_nr;</span><br><span style="color: hsl(120, 100%, 40%);">+        int rc;</span><br><span> </span><br><span>  /* Note: e1_trunk_nr_from_epname does not check the text</span><br><span>      * after the E1 trunk number, after the delimiter</span><br><span>     * character "/" arbitrary text may follow. */</span><br><span style="color: hsl(0, 100%, 40%);">-        trunk_nr = e1_trunk_nr_from_epname("ds/e1-0/s-1/su16-0");</span><br><span style="color: hsl(120, 100%, 40%);">+   rc = e1_trunk_nr_from_epname(&trunk_nr, "ds/e1-0/s-1/su16-0");</span><br><span>         OSMO_ASSERT(trunk_nr == 0);</span><br><span style="color: hsl(0, 100%, 40%);">-     trunk_nr = e1_trunk_nr_from_epname("ds/e1-1/s-1/su16-0");</span><br><span style="color: hsl(120, 100%, 40%);">+   OSMO_ASSERT(rc == 0);</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = e1_trunk_nr_from_epname(&trunk_nr, "ds/e1-1/s-1/su16-0");</span><br><span>         OSMO_ASSERT(trunk_nr == 1);</span><br><span style="color: hsl(0, 100%, 40%);">-     trunk_nr = e1_trunk_nr_from_epname("ds/e1-2/s-2/su16-0");</span><br><span style="color: hsl(120, 100%, 40%);">+   OSMO_ASSERT(rc == 0);</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = e1_trunk_nr_from_epname(&trunk_nr, "ds/e1-2/s-2/su16-0");</span><br><span>         OSMO_ASSERT(trunk_nr == 2);</span><br><span style="color: hsl(0, 100%, 40%);">-     trunk_nr = e1_trunk_nr_from_epname("ds/e1-3/s-23/su32-0");</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_ASSERT(rc == 0);</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = e1_trunk_nr_from_epname(&trunk_nr, "ds/e1-3/s-23/su32-0");</span><br><span>        OSMO_ASSERT(trunk_nr == 3);</span><br><span style="color: hsl(0, 100%, 40%);">-     trunk_nr = e1_trunk_nr_from_epname("ds/e1-3/xxxxxxx");</span><br><span style="color: hsl(120, 100%, 40%);">+      OSMO_ASSERT(rc == 0);</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = e1_trunk_nr_from_epname(&trunk_nr, "ds/e1-3/xxxxxxx");</span><br><span>    OSMO_ASSERT(trunk_nr == 3);</span><br><span style="color: hsl(0, 100%, 40%);">-     trunk_nr = e1_trunk_nr_from_epname("ds/e1-24/s-1/su16-0");</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_ASSERT(rc == 0);</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = e1_trunk_nr_from_epname(&trunk_nr, "ds/e1-24/s-1/su16-0");</span><br><span>        OSMO_ASSERT(trunk_nr == 24);</span><br><span style="color: hsl(0, 100%, 40%);">-    trunk_nr = e1_trunk_nr_from_epname("ds/e1-64/s-1/su16-0");</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_ASSERT(rc == 0);</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = e1_trunk_nr_from_epname(&trunk_nr, "ds/e1-64/s-1/su16-0");</span><br><span>        OSMO_ASSERT(trunk_nr == 64);</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_ASSERT(rc == 0);</span><br><span> </span><br><span>    /* The following endpoint strings should fail, either the</span><br><span>     * trunk number exceeds the valid range or the trunk prefix</span><br><span>   * is wrong. Also when the delimiter character "/" at the</span><br><span>   * end of the trunk is wrong the parsing should fail. */</span><br><span style="color: hsl(0, 100%, 40%);">-        trunk_nr = e1_trunk_nr_from_epname("ds/e1-65/s-1/su16-0");</span><br><span style="color: hsl(0, 100%, 40%);">-    OSMO_ASSERT(trunk_nr == -EINVAL);</span><br><span style="color: hsl(0, 100%, 40%);">-       trunk_nr = e1_trunk_nr_from_epname("ds/e1--1/s-1/su16-0");</span><br><span style="color: hsl(0, 100%, 40%);">-    OSMO_ASSERT(trunk_nr == -EINVAL);</span><br><span style="color: hsl(0, 100%, 40%);">-       trunk_nr = e1_trunk_nr_from_epname("xxxxxx4zyz");</span><br><span style="color: hsl(0, 100%, 40%);">-     OSMO_ASSERT(trunk_nr == -EINVAL);</span><br><span style="color: hsl(0, 100%, 40%);">-       trunk_nr = e1_trunk_nr_from_epname("ds/e1+2/s-1/su16-0");</span><br><span style="color: hsl(0, 100%, 40%);">-     OSMO_ASSERT(trunk_nr == -EINVAL);</span><br><span style="color: hsl(0, 100%, 40%);">-       trunk_nr = e1_trunk_nr_from_epname("ds/e2-24/s-1/su16-0");</span><br><span style="color: hsl(0, 100%, 40%);">-    OSMO_ASSERT(trunk_nr == -EINVAL);</span><br><span style="color: hsl(0, 100%, 40%);">-       trunk_nr = e1_trunk_nr_from_epname("ds/e1-24s-1/su16-0");</span><br><span style="color: hsl(0, 100%, 40%);">-     OSMO_ASSERT(trunk_nr == -EINVAL);</span><br><span style="color: hsl(120, 100%, 40%);">+        rc = e1_trunk_nr_from_epname(&trunk_nr, "ds/e1-65/s-1/su16-0");</span><br><span style="color: hsl(120, 100%, 40%);">+      OSMO_ASSERT(rc == -EINVAL);</span><br><span style="color: hsl(120, 100%, 40%);">+   rc = e1_trunk_nr_from_epname(&trunk_nr, "ds/e1--1/s-1/su16-0");</span><br><span style="color: hsl(120, 100%, 40%);">+ OSMO_ASSERT(rc == -EINVAL);</span><br><span style="color: hsl(120, 100%, 40%);">+   rc = e1_trunk_nr_from_epname(&trunk_nr, "xxxxxx4zyz");</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_ASSERT(rc == -EINVAL);</span><br><span style="color: hsl(120, 100%, 40%);">+   rc = e1_trunk_nr_from_epname(&trunk_nr, "ds/e1+2/s-1/su16-0");</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_ASSERT(rc == -EINVAL);</span><br><span style="color: hsl(120, 100%, 40%);">+   rc = e1_trunk_nr_from_epname(&trunk_nr, "ds/e2-24/s-1/su16-0");</span><br><span style="color: hsl(120, 100%, 40%);">+ OSMO_ASSERT(rc == -EINVAL);</span><br><span style="color: hsl(120, 100%, 40%);">+   rc = e1_trunk_nr_from_epname(&trunk_nr, "ds/e1-24s-1/su16-0");</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_ASSERT(rc == -EINVAL);</span><br><span> </span><br><span>      return;</span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-mgw/+/24963">change 24963</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-mgw/+/24963"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-mgw </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I5d0e1d76adb8c92d84331a0aca2496908e41d621 </div>
<div style="display:none"> Gerrit-Change-Number: 24963 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>