<p>dexter has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/12679">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bsc_vty: add vty command to display all lchans<br><br>Currently the VTY only displays the lchans that are currently in use<br>(show lchan summary). In some situations (debugging) it can be useful<br>to list all lchans, regardless of their state. So lets add a command<br>for that.<br><br>Change-Id: Ie4d763476905fa8f84b4d7cdad4cc7dd879f84a5<br>Related: OS#3503<br>---<br>M src/osmo-bsc/bsc_vty.c<br>1 file changed, 29 insertions(+), 14 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/79/12679/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c</span><br><span>index 791aebe..31e1c71 100644</span><br><span>--- a/src/osmo-bsc/bsc_vty.c</span><br><span>+++ b/src/osmo-bsc/bsc_vty.c</span><br><span>@@ -1441,11 +1441,12 @@</span><br><span> </span><br><span> </span><br><span> static int dump_lchan_trx_ts(struct gsm_bts_trx_ts *ts, struct vty *vty,</span><br><span style="color: hsl(0, 100%, 40%);">-                           void (*dump_cb)(struct vty *, struct gsm_lchan *))</span><br><span style="color: hsl(120, 100%, 40%);">+                            void (*dump_cb)(struct vty *, struct gsm_lchan *),</span><br><span style="color: hsl(120, 100%, 40%);">+                            bool all)</span><br><span> {</span><br><span>  struct gsm_lchan *lchan;</span><br><span>     ts_for_each_lchan(lchan, ts) {</span><br><span style="color: hsl(0, 100%, 40%);">-          if (lchan_state_is(lchan, LCHAN_ST_UNUSED))</span><br><span style="color: hsl(120, 100%, 40%);">+           if (lchan_state_is(lchan, LCHAN_ST_UNUSED) && all == false)</span><br><span>                  continue;</span><br><span>            dump_cb(vty, lchan);</span><br><span>         }</span><br><span>@@ -1454,33 +1455,36 @@</span><br><span> }</span><br><span> </span><br><span> static int dump_lchan_trx(struct gsm_bts_trx *trx, struct vty *vty,</span><br><span style="color: hsl(0, 100%, 40%);">-                       void (*dump_cb)(struct vty *, struct gsm_lchan *))</span><br><span style="color: hsl(120, 100%, 40%);">+                    void (*dump_cb)(struct vty *, struct gsm_lchan *),</span><br><span style="color: hsl(120, 100%, 40%);">+                    bool all)</span><br><span> {</span><br><span>     int ts_nr;</span><br><span> </span><br><span>       for (ts_nr = 0; ts_nr < TRX_NR_TS; ts_nr++) {</span><br><span>             struct gsm_bts_trx_ts *ts = &trx->ts[ts_nr];</span><br><span style="color: hsl(0, 100%, 40%);">-             dump_lchan_trx_ts(ts, vty, dump_cb);</span><br><span style="color: hsl(120, 100%, 40%);">+          dump_lchan_trx_ts(ts, vty, dump_cb, all);</span><br><span>    }</span><br><span> </span><br><span>        return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span> static int dump_lchan_bts(struct gsm_bts *bts, struct vty *vty,</span><br><span style="color: hsl(0, 100%, 40%);">-                   void (*dump_cb)(struct vty *, struct gsm_lchan *))</span><br><span style="color: hsl(120, 100%, 40%);">+                    void (*dump_cb)(struct vty *, struct gsm_lchan *),</span><br><span style="color: hsl(120, 100%, 40%);">+                    bool all)</span><br><span> {</span><br><span>     int trx_nr;</span><br><span> </span><br><span>      for (trx_nr = 0; trx_nr < bts->num_trx; trx_nr++) {</span><br><span>            struct gsm_bts_trx *trx = gsm_bts_trx_num(bts, trx_nr);</span><br><span style="color: hsl(0, 100%, 40%);">-         dump_lchan_trx(trx, vty, dump_cb);</span><br><span style="color: hsl(120, 100%, 40%);">+            dump_lchan_trx(trx, vty, dump_cb, all);</span><br><span>      }</span><br><span> </span><br><span>        return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span> static int lchan_summary(struct vty *vty, int argc, const char **argv,</span><br><span style="color: hsl(0, 100%, 40%);">-                   void (*dump_cb)(struct vty *, struct gsm_lchan *))</span><br><span style="color: hsl(120, 100%, 40%);">+                    void (*dump_cb)(struct vty *, struct gsm_lchan *),</span><br><span style="color: hsl(120, 100%, 40%);">+                    bool all)</span><br><span> {</span><br><span>      struct gsm_network *net = gsmnet_from_vty(vty);</span><br><span>      struct gsm_bts *bts = NULL;</span><br><span>@@ -1500,7 +1504,7 @@</span><br><span>          bts = gsm_bts_num(net, bts_nr);</span><br><span> </span><br><span>          if (argc == 1)</span><br><span style="color: hsl(0, 100%, 40%);">-                  return dump_lchan_bts(bts, vty, dump_cb);</span><br><span style="color: hsl(120, 100%, 40%);">+                     return dump_lchan_bts(bts, vty, dump_cb, all);</span><br><span>       }</span><br><span>    if (argc >= 2) {</span><br><span>          trx_nr = atoi(argv[1]);</span><br><span>@@ -1512,7 +1516,7 @@</span><br><span>              trx = gsm_bts_trx_num(bts, trx_nr);</span><br><span> </span><br><span>              if (argc == 2)</span><br><span style="color: hsl(0, 100%, 40%);">-                  return dump_lchan_trx(trx, vty, dump_cb);</span><br><span style="color: hsl(120, 100%, 40%);">+                     return dump_lchan_trx(trx, vty, dump_cb, all);</span><br><span>       }</span><br><span>    if (argc >= 3) {</span><br><span>          ts_nr = atoi(argv[2]);</span><br><span>@@ -1524,7 +1528,7 @@</span><br><span>               ts = &trx->ts[ts_nr];</span><br><span> </span><br><span>             if (argc == 3)</span><br><span style="color: hsl(0, 100%, 40%);">-                  return dump_lchan_trx_ts(ts, vty, dump_cb);</span><br><span style="color: hsl(120, 100%, 40%);">+                   return dump_lchan_trx_ts(ts, vty, dump_cb, all);</span><br><span>     }</span><br><span>    if (argc >= 4) {</span><br><span>          lchan_nr = atoi(argv[3]);</span><br><span>@@ -1541,7 +1545,7 @@</span><br><span> </span><br><span>        for (bts_nr = 0; bts_nr < net->num_bts; bts_nr++) {</span><br><span>            bts = gsm_bts_num(net, bts_nr);</span><br><span style="color: hsl(0, 100%, 40%);">-         dump_lchan_bts(bts, vty, dump_cb);</span><br><span style="color: hsl(120, 100%, 40%);">+            dump_lchan_bts(bts, vty, dump_cb, all);</span><br><span>      }</span><br><span> </span><br><span>        return CMD_SUCCESS;</span><br><span>@@ -1554,17 +1558,27 @@</span><br><span>        SHOW_STR "Display information about a logical channel\n"</span><br><span>   BTS_TRX_TS_LCHAN_STR)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-      return lchan_summary(vty, argc, argv, lchan_dump_full_vty);</span><br><span style="color: hsl(120, 100%, 40%);">+   return lchan_summary(vty, argc, argv, lchan_dump_full_vty, true);</span><br><span> }</span><br><span> </span><br><span> DEFUN(show_lchan_summary,</span><br><span>       show_lchan_summary_cmd,</span><br><span>       "show lchan summary [<0-255>] [<0-255>] [<0-7>] [<0-7>]",</span><br><span>        SHOW_STR "Display information about a logical channel\n"</span><br><span style="color: hsl(0, 100%, 40%);">-        "Short summary\n"</span><br><span style="color: hsl(120, 100%, 40%);">+        "Short summary (in use lchans)\n"</span><br><span>   BTS_TRX_TS_LCHAN_STR)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-      return lchan_summary(vty, argc, argv, lchan_dump_short_vty);</span><br><span style="color: hsl(120, 100%, 40%);">+  return lchan_summary(vty, argc, argv, lchan_dump_short_vty, false);</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%);">+DEFUN(show_lchan_all,</span><br><span style="color: hsl(120, 100%, 40%);">+      show_lchan_all_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+      "show lchan all [<0-255>] [<0-255>] [<0-7>] [<0-7>]",</span><br><span style="color: hsl(120, 100%, 40%);">+     SHOW_STR "Display information about a logical channel\n"</span><br><span style="color: hsl(120, 100%, 40%);">+        "Short summary (all lchans)\n"</span><br><span style="color: hsl(120, 100%, 40%);">+  BTS_TRX_TS_LCHAN_STR)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      return lchan_summary(vty, argc, argv, lchan_dump_short_vty, true);</span><br><span> }</span><br><span> </span><br><span> static void dump_one_subscr_conn(struct vty *vty, const struct gsm_subscriber_connection *conn)</span><br><span>@@ -5085,6 +5099,7 @@</span><br><span>       install_element_ve(&show_ts_cmd);</span><br><span>        install_element_ve(&show_lchan_cmd);</span><br><span>     install_element_ve(&show_lchan_summary_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+      install_element_ve(&show_lchan_all_cmd);</span><br><span> </span><br><span>     install_element_ve(&show_subscr_conn_cmd);</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12679">change 12679</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/12679"/><meta itemprop="name" content="View Change"/></div></div>

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