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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gprs_ns2: Give NS-VC FSMs a proper name/identifier<br><br>Log output without a proper identifier is mostly useless.<br><br>Change-Id: Id9d5b0684584d03685900c6298fe70246793de14<br>Closes: OS#4876<br>---<br>M src/gb/gprs_ns2.c<br>M src/gb/gprs_ns2_fr.c<br>M src/gb/gprs_ns2_internal.h<br>M src/gb/gprs_ns2_udp.c<br>M tests/gb/gprs_ns2_test.c<br>5 files changed, 25 insertions(+), 9 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/gb/gprs_ns2.c b/src/gb/gprs_ns2.c</span><br><span>index 813bd58..7c517aa 100644</span><br><span>--- a/src/gb/gprs_ns2.c</span><br><span>+++ b/src/gb/gprs_ns2.c</span><br><span>@@ -486,9 +486,10 @@</span><br><span>  * \param[in] bind The 'bind' on which we operate</span><br><span>  * \param[in] nse The NS Entity on which we operate</span><br><span>  * \param[in] initiater - if this is an incoming remote (!initiater) or a local outgoing connection (initater)</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[in] id - human-readable identifier</span><br><span>  * \return newly allocated NS-VC on success; NULL on error */</span><br><span> struct gprs_ns2_vc *ns2_vc_alloc(struct gprs_ns2_vc_bind *bind, struct gprs_ns2_nse *nse, bool initiater,</span><br><span style="color: hsl(0, 100%, 40%);">-                              enum gprs_ns2_vc_mode vc_mode)</span><br><span style="color: hsl(120, 100%, 40%);">+                                enum gprs_ns2_vc_mode vc_mode, const char *id)</span><br><span> {</span><br><span>         /* Sanity check */</span><br><span>   OSMO_ASSERT(bind->ll == nse->ll);</span><br><span>@@ -511,7 +512,7 @@</span><br><span>        nsvc->statg = osmo_stat_item_group_alloc(nsvc, &nsvc_statg_desc, bind->nsi->rate_ctr_idx);</span><br><span>      if (!nsvc->statg)</span><br><span>                 goto err_group;</span><br><span style="color: hsl(0, 100%, 40%);">- if (!gprs_ns2_vc_fsm_alloc(nsvc, NULL, initiater))</span><br><span style="color: hsl(120, 100%, 40%);">+    if (!gprs_ns2_vc_fsm_alloc(nsvc, id, initiater))</span><br><span>             goto err_statg;</span><br><span> </span><br><span>  bind->nsi->rate_ctr_idx++;</span><br><span>@@ -791,6 +792,7 @@</span><br><span>       enum gprs_ns2_vc_mode vc_mode;</span><br><span>       uint16_t nsvci;</span><br><span>      uint16_t nsei;</span><br><span style="color: hsl(120, 100%, 40%);">+        char idbuf[32];</span><br><span> </span><br><span>  int rc, tlv;</span><br><span> </span><br><span>@@ -907,8 +909,11 @@</span><br><span>              return GPRS_NS2_CS_SKIPPED;</span><br><span>  }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ nsvci = tlvp_val16be(&tp, NS_IE_VCI);</span><br><span>    vc_mode = gprs_ns2_dialect_to_vc_mode(dialect);</span><br><span style="color: hsl(0, 100%, 40%);">- nsvc = ns2_vc_alloc(bind, nse, false, vc_mode);</span><br><span style="color: hsl(120, 100%, 40%);">+       snprintf(idbuf, sizeof(idbuf), "%s-NSE%05u-NSVC%05u", gprs_ns2_lltype_str(nse->ll),</span><br><span style="color: hsl(120, 100%, 40%);">+               nse->nsei, nsvci);</span><br><span style="color: hsl(120, 100%, 40%);">+        nsvc = ns2_vc_alloc(bind, nse, false, vc_mode, idbuf);</span><br><span>       if (!nsvc)</span><br><span>           return GPRS_NS2_CS_SKIPPED;</span><br><span> </span><br><span>diff --git a/src/gb/gprs_ns2_fr.c b/src/gb/gprs_ns2_fr.c</span><br><span>index bb55381..c1bed6c 100644</span><br><span>--- a/src/gb/gprs_ns2_fr.c</span><br><span>+++ b/src/gb/gprs_ns2_fr.c</span><br><span>@@ -737,13 +737,17 @@</span><br><span> {</span><br><span>    struct gprs_ns2_vc *nsvc = NULL;</span><br><span>     struct priv_vc *priv = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+  struct priv_bind *bpriv = bind->priv;</span><br><span style="color: hsl(120, 100%, 40%);">+      char idbuf[64];</span><br><span> </span><br><span>  nsvc = gprs_ns2_fr_nsvc_by_dlci(bind, dlci);</span><br><span>         if (nsvc) {</span><br><span>          goto err;</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   nsvc = ns2_vc_alloc(bind, nse, true, NS2_VC_MODE_BLOCKRESET);</span><br><span style="color: hsl(120, 100%, 40%);">+ snprintf(idbuf, sizeof(idbuf), "%s-%s-DLCI%u-NSE%05u-NSVC%05u", gprs_ns2_lltype_str(nse->ll),</span><br><span style="color: hsl(120, 100%, 40%);">+             bpriv->netif, dlci, nse->nsei, nsvci);</span><br><span style="color: hsl(120, 100%, 40%);">+ nsvc = ns2_vc_alloc(bind, nse, true, NS2_VC_MODE_BLOCKRESET, idbuf);</span><br><span>         if (!nsvc)</span><br><span>           goto err;</span><br><span> </span><br><span>diff --git a/src/gb/gprs_ns2_internal.h b/src/gb/gprs_ns2_internal.h</span><br><span>index c33f7f8..5dbc349 100644</span><br><span>--- a/src/gb/gprs_ns2_internal.h</span><br><span>+++ b/src/gb/gprs_ns2_internal.h</span><br><span>@@ -233,7 +233,8 @@</span><br><span> struct gprs_ns2_vc *ns2_vc_alloc(struct gprs_ns2_vc_bind *bind,</span><br><span>                           struct gprs_ns2_nse *nse,</span><br><span>                            bool initiater,</span><br><span style="color: hsl(0, 100%, 40%);">-                                 enum gprs_ns2_vc_mode vc_mode);</span><br><span style="color: hsl(120, 100%, 40%);">+                               enum gprs_ns2_vc_mode vc_mode,</span><br><span style="color: hsl(120, 100%, 40%);">+                                const char *id);</span><br><span> </span><br><span> struct msgb *gprs_ns2_msgb_alloc(void);</span><br><span> </span><br><span>diff --git a/src/gb/gprs_ns2_udp.c b/src/gb/gprs_ns2_udp.c</span><br><span>index 370937f..d93b66d 100644</span><br><span>--- a/src/gb/gprs_ns2_udp.c</span><br><span>+++ b/src/gb/gprs_ns2_udp.c</span><br><span>@@ -394,6 +394,8 @@</span><br><span>  struct gprs_ns2_vc *nsvc;</span><br><span>    struct priv_vc *priv;</span><br><span>        enum gprs_ns2_vc_mode vc_mode;</span><br><span style="color: hsl(120, 100%, 40%);">+        char *sockaddr_str;</span><br><span style="color: hsl(120, 100%, 40%);">+   char idbuf[64];</span><br><span> </span><br><span>  vc_mode = gprs_ns2_dialect_to_vc_mode(nse->dialect);</span><br><span>      if ((int) vc_mode == -1) {</span><br><span>@@ -402,7 +404,11 @@</span><br><span>            return NULL;</span><br><span>         }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   nsvc = ns2_vc_alloc(bind, nse, true, vc_mode);</span><br><span style="color: hsl(120, 100%, 40%);">+        sockaddr_str = (char *)osmo_sockaddr_to_str(remote);</span><br><span style="color: hsl(120, 100%, 40%);">+  osmo_identifier_sanitize_buf(sockaddr_str, NULL, '_');</span><br><span style="color: hsl(120, 100%, 40%);">+        snprintf(idbuf, sizeof(idbuf), "%s-NSE%05u-remote-%s", gprs_ns2_lltype_str(nse->ll),</span><br><span style="color: hsl(120, 100%, 40%);">+              nse->nsei, sockaddr_str);</span><br><span style="color: hsl(120, 100%, 40%);">+ nsvc = ns2_vc_alloc(bind, nse, true, vc_mode, idbuf);</span><br><span>        if (!nsvc)</span><br><span>           return NULL;</span><br><span> </span><br><span>diff --git a/tests/gb/gprs_ns2_test.c b/tests/gb/gprs_ns2_test.c</span><br><span>index d53dc88..7c28dca 100644</span><br><span>--- a/tests/gb/gprs_ns2_test.c</span><br><span>+++ b/tests/gb/gprs_ns2_test.c</span><br><span>@@ -113,7 +113,7 @@</span><br><span>  OSMO_ASSERT(nse);</span><br><span> </span><br><span>        printf("---- Test with NSVC[0]\n");</span><br><span style="color: hsl(0, 100%, 40%);">-   nsvc[0] = ns2_vc_alloc(bind[0], nse, false, NS2_VC_MODE_ALIVE);</span><br><span style="color: hsl(120, 100%, 40%);">+       nsvc[0] = ns2_vc_alloc(bind[0], nse, false, NS2_VC_MODE_ALIVE, NULL);</span><br><span>        OSMO_ASSERT(nsvc[0]);</span><br><span>        OSMO_ASSERT(ns2_count_transfer_cap(nse, 0) == 0);</span><br><span>    nsvc[0]->fi->state = 3;   /* HACK: 3 = GPRS_NS2_ST_UNBLOCKED */</span><br><span>@@ -121,7 +121,7 @@</span><br><span>  OSMO_ASSERT(ns2_count_transfer_cap(nse, 0) == 42);</span><br><span> </span><br><span>       printf("---- Test with NSVC[1]\n");</span><br><span style="color: hsl(0, 100%, 40%);">-   nsvc[1] = ns2_vc_alloc(bind[0], nse, false, NS2_VC_MODE_ALIVE);</span><br><span style="color: hsl(120, 100%, 40%);">+       nsvc[1] = ns2_vc_alloc(bind[0], nse, false, NS2_VC_MODE_ALIVE, NULL);</span><br><span>        OSMO_ASSERT(nsvc[1]);</span><br><span>        OSMO_ASSERT(ns2_count_transfer_cap(nse, 0) == 42);</span><br><span>   nsvc[1]->fi->state = 3; /* HACK: 3 = GPRS_NS2_ST_UNBLOCKED */</span><br><span>@@ -129,7 +129,7 @@</span><br><span>    OSMO_ASSERT(ns2_count_transfer_cap(nse, 0) == 42);</span><br><span> </span><br><span>       printf("---- Test with NSVC[2]\n");</span><br><span style="color: hsl(0, 100%, 40%);">-   nsvc[2] = ns2_vc_alloc(bind[1], nse, false, NS2_VC_MODE_ALIVE);</span><br><span style="color: hsl(120, 100%, 40%);">+       nsvc[2] = ns2_vc_alloc(bind[1], nse, false, NS2_VC_MODE_ALIVE, NULL);</span><br><span>        OSMO_ASSERT(nsvc[2]);</span><br><span>        OSMO_ASSERT(ns2_count_transfer_cap(nse, 0) == 42);</span><br><span>   nsvc[2]->fi->state = 3; /* HACK: 3 = GPRS_NS2_ST_UNBLOCKED */</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/21400">change 21400</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/+/21400"/><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: Id9d5b0684584d03685900c6298fe70246793de14 </div>
<div style="display:none"> Gerrit-Change-Number: 21400 </div>
<div style="display:none"> Gerrit-PatchSet: 6 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-CC: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>