<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/22323">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">ns2: Properly indent VTY output<br><br>If multiple objects are printed in the VTY, only the first line of each<br>object should be on the first character of the line, all others should<br>be indented.  With  this patch the "snow ns entities" output becomes<br>much more readable:<br><br>OsmoGbProxy> show ns entities<br>NSEI 00102: UDP, DEAD<br> FSM Instance Name: 'GPRS-NS2-SNS-BSS(NSE00102-SNS)[0x6120000018a0]', ID: 'NSE00102-SNS'<br>  Log-Level: 'DEBUG', State: 'SIZE'<br>  Timer: 1<br> Maximum number of remote  NS-VCs: 8, IPv4 Endpoints: 4, IPv6 Endpoints: 0<br> NSVCI none: UNCONFIGURED DYNAMIC data_weight=1 sig_weight=1 udp)[127.0.0.1]:23000<>[127.0.0.11]:8888<br>NSEI 00101: UDP, DEAD<br> FSM Instance Name: 'GPRS-NS2-SNS-BSS(NSE00101-SNS)[0x6120000015a0]', ID: 'NSE00101-SNS'<br>  Log-Level: 'DEBUG', State: 'SIZE'<br>  Timer: 1<br> Maximum number of remote  NS-VCs: 8, IPv4 Endpoints: 4, IPv6 Endpoints: 0<br> NSVCI none: UNCONFIGURED DYNAMIC data_weight=1 sig_weight=1 udp)[127.0.0.1]:23000<>[127.0.0.10]:7777<br><br>Change-Id: Id1b4c80a6caef410076a68b4301adaa01ba7e57a<br>---<br>M src/gb/gprs_ns2_internal.h<br>M src/gb/gprs_ns2_sns.c<br>M src/gb/gprs_ns2_vty.c<br>M src/gb/gprs_ns2_vty2.c<br>4 files changed, 20 insertions(+), 19 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/23/22323/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/gb/gprs_ns2_internal.h b/src/gb/gprs_ns2_internal.h</span><br><span>index 5404ed3..6cd2ea1 100644</span><br><span>--- a/src/gb/gprs_ns2_internal.h</span><br><span>+++ b/src/gb/gprs_ns2_internal.h</span><br><span>@@ -245,7 +245,7 @@</span><br><span> struct msgb *gprs_ns2_msgb_alloc(void);</span><br><span> </span><br><span> void gprs_ns2_sns_write_vty(struct vty *vty, const struct gprs_ns2_nse *nse);</span><br><span style="color: hsl(0, 100%, 40%);">-void gprs_ns2_sns_dump_vty(struct vty *vty, const struct gprs_ns2_nse *nse, bool stats);</span><br><span style="color: hsl(120, 100%, 40%);">+void gprs_ns2_sns_dump_vty(struct vty *vty, const char *prefix, const struct gprs_ns2_nse *nse, bool stats);</span><br><span> void ns2_prim_status_ind(struct gprs_ns2_nse *nse,</span><br><span>                          struct gprs_ns2_vc *nsvc,</span><br><span>                    uint16_t bvci,</span><br><span>diff --git a/src/gb/gprs_ns2_sns.c b/src/gb/gprs_ns2_sns.c</span><br><span>index e574b44..72e4ea7 100644</span><br><span>--- a/src/gb/gprs_ns2_sns.c</span><br><span>+++ b/src/gb/gprs_ns2_sns.c</span><br><span>@@ -1499,28 +1499,29 @@</span><br><span> #include <osmocom/vty/vty.h></span><br><span> #include <osmocom/vty/misc.h></span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void vty_dump_sns_ip4(struct vty *vty, const struct gprs_ns_ie_ip4_elem *ip4)</span><br><span style="color: hsl(120, 100%, 40%);">+static void vty_dump_sns_ip4(struct vty *vty, const char *prefix, const struct gprs_ns_ie_ip4_elem *ip4)</span><br><span> {</span><br><span>       struct in_addr in = { .s_addr = ip4->ip_addr };</span><br><span style="color: hsl(0, 100%, 40%);">-      vty_out(vty, " %s:%u, Signalling Weight: %u, Data Weight: %u%s",</span><br><span style="color: hsl(120, 100%, 40%);">+    vty_out(vty, "%s %s:%u, Signalling Weight: %u, Data Weight: %u%s", prefix,</span><br><span>                 inet_ntoa(in), ntohs(ip4->udp_port), ip4->sig_weight, ip4->data_weight, VTY_NEWLINE);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void vty_dump_sns_ip6(struct vty *vty, const struct gprs_ns_ie_ip6_elem *ip6)</span><br><span style="color: hsl(120, 100%, 40%);">+static void vty_dump_sns_ip6(struct vty *vty, const char *prefix, const struct gprs_ns_ie_ip6_elem *ip6)</span><br><span> {</span><br><span>   char ip_addr[INET6_ADDRSTRLEN] = {};</span><br><span>         if (!inet_ntop(AF_INET6, &ip6->ip_addr, ip_addr, (INET6_ADDRSTRLEN)))</span><br><span>                 strcpy(ip_addr, "Invalid IPv6");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  vty_out(vty, " %s:%u, Signalling Weight: %u, Data Weight: %u%s",</span><br><span style="color: hsl(120, 100%, 40%);">+    vty_out(vty, "%s %s:%u, Signalling Weight: %u, Data Weight: %u%s", prefix,</span><br><span>                 ip_addr, ntohs(ip6->udp_port), ip6->sig_weight, ip6->data_weight, VTY_NEWLINE);</span><br><span> }</span><br><span> </span><br><span> /*! Dump the IP-SNS state to a vty.</span><br><span>  *  \param[in] vty VTY to which the state shall be printed</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] prefix prefix to print at start of each line (typically indenting)</span><br><span>  *  \param[in] nse NS Entity whose IP-SNS state shall be printed</span><br><span>  *  \param[in] stats Whether or not statistics shall also be printed */</span><br><span style="color: hsl(0, 100%, 40%);">-void gprs_ns2_sns_dump_vty(struct vty *vty, const struct gprs_ns2_nse *nse, bool stats)</span><br><span style="color: hsl(120, 100%, 40%);">+void gprs_ns2_sns_dump_vty(struct vty *vty, const char *prefix, const struct gprs_ns2_nse *nse, bool stats)</span><br><span> {</span><br><span>    struct ns2_sns_state *gss;</span><br><span>   unsigned int i;</span><br><span>@@ -1528,30 +1529,30 @@</span><br><span>    if (!nse->bss_sns_fi)</span><br><span>             return;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     vty_out_fsm_inst(vty, nse->bss_sns_fi);</span><br><span style="color: hsl(120, 100%, 40%);">+    vty_out_fsm_inst2(vty, prefix, nse->bss_sns_fi);</span><br><span>  gss = (struct ns2_sns_state *) nse->bss_sns_fi->priv;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- vty_out(vty, "Maximum number of remote  NS-VCs: %zu, IPv4 Endpoints: %zu, IPv6 Endpoints: %zu%s",</span><br><span style="color: hsl(0, 100%, 40%);">-             gss->num_max_nsvcs, gss->num_max_ip4_remote, gss->num_max_ip6_remote, VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+  vty_out(vty, "%sMaximum number of remote  NS-VCs: %zu, IPv4 Endpoints: %zu, IPv6 Endpoints: %zu%s",</span><br><span style="color: hsl(120, 100%, 40%);">+         prefix, gss->num_max_nsvcs, gss->num_max_ip4_remote, gss->num_max_ip6_remote, VTY_NEWLINE);</span><br><span> </span><br><span>     if (gss->num_ip4_local && gss->num_ip4_remote) {</span><br><span style="color: hsl(0, 100%, 40%);">-          vty_out(vty, "Local IPv4 Endpoints:%s", VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+               vty_out(vty, "%sLocal IPv4 Endpoints:%s", prefix, VTY_NEWLINE);</span><br><span>            for (i = 0; i < gss->num_ip4_local; i++)</span><br><span style="color: hsl(0, 100%, 40%);">-                  vty_dump_sns_ip4(vty, &gss->ip4_local[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+                     vty_dump_sns_ip4(vty, prefix, &gss->ip4_local[i]);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-           vty_out(vty, "Remote IPv4 Endpoints:%s", VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+              vty_out(vty, "%sRemote IPv4 Endpoints:%s", prefix, VTY_NEWLINE);</span><br><span>           for (i = 0; i < gss->num_ip4_remote; i++)</span><br><span style="color: hsl(0, 100%, 40%);">-                 vty_dump_sns_ip4(vty, &gss->ip4_remote[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+                    vty_dump_sns_ip4(vty, prefix, &gss->ip4_remote[i]);</span><br><span>   }</span><br><span> </span><br><span>        if (gss->num_ip6_local && gss->num_ip6_remote) {</span><br><span style="color: hsl(0, 100%, 40%);">-          vty_out(vty, "Local IPv6 Endpoints:%s", VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+               vty_out(vty, "%sLocal IPv6 Endpoints:%s", prefix, VTY_NEWLINE);</span><br><span>            for (i = 0; i < gss->num_ip6_local; i++)</span><br><span style="color: hsl(0, 100%, 40%);">-                  vty_dump_sns_ip6(vty, &gss->ip6_local[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+                     vty_dump_sns_ip6(vty, prefix, &gss->ip6_local[i]);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-           vty_out(vty, "Remote IPv6 Endpoints:%s", VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+              vty_out(vty, "%sRemote IPv6 Endpoints:%s", prefix, VTY_NEWLINE);</span><br><span>           for (i = 0; i < gss->num_ip6_remote; i++)</span><br><span style="color: hsl(0, 100%, 40%);">-                 vty_dump_sns_ip6(vty, &gss->ip6_remote[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+                    vty_dump_sns_ip6(vty, prefix, &gss->ip6_remote[i]);</span><br><span>   }</span><br><span> }</span><br><span> </span><br><span>diff --git a/src/gb/gprs_ns2_vty.c b/src/gb/gprs_ns2_vty.c</span><br><span>index 065f3ad..36a7f78 100644</span><br><span>--- a/src/gb/gprs_ns2_vty.c</span><br><span>+++ b/src/gb/gprs_ns2_vty.c</span><br><span>@@ -298,7 +298,7 @@</span><br><span>    vty_out(vty, "NSEI %05u: %s, %s%s", nse->nsei, gprs_ns2_lltype_str(nse->ll),</span><br><span>                 nse->alive ? "ALIVE" : "DEAD", VTY_NEWLINE);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- gprs_ns2_sns_dump_vty(vty, nse, stats);</span><br><span style="color: hsl(120, 100%, 40%);">+       gprs_ns2_sns_dump_vty(vty, " ", nse, stats);</span><br><span>       llist_for_each_entry(nsvc, &nse->nsvc, list) {</span><br><span>                if (persistent_only) {</span><br><span>                       if (nsvc->persistent)</span><br><span>diff --git a/src/gb/gprs_ns2_vty2.c b/src/gb/gprs_ns2_vty2.c</span><br><span>index 5af8fbc..e501d19 100644</span><br><span>--- a/src/gb/gprs_ns2_vty2.c</span><br><span>+++ b/src/gb/gprs_ns2_vty2.c</span><br><span>@@ -1349,7 +1349,7 @@</span><br><span>        vty_out(vty, "NSEI %05u: %s, %s%s", nse->nsei, gprs_ns2_lltype_str(nse->ll),</span><br><span>                 nse->alive ? "ALIVE" : "DEAD", VTY_NEWLINE);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- gprs_ns2_sns_dump_vty(vty, nse, stats);</span><br><span style="color: hsl(120, 100%, 40%);">+       gprs_ns2_sns_dump_vty(vty, " ", nse, stats);</span><br><span>       llist_for_each_entry(nsvc, &nse->nsvc, list) {</span><br><span>                if (persistent_only) {</span><br><span>                       if (nsvc->persistent)</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/22323">change 22323</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/+/22323"/><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: Id1b4c80a6caef410076a68b4301adaa01ba7e57a </div>
<div style="display:none"> Gerrit-Change-Number: 22323 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>