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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">cs7 vty: add 'show cs7 config'<br><br>When 'cs7' was added, it was generally possible to get the full automatic<br>configuration spelled out by using 'show running-config'. Later, the vty was<br>modified so that automatically configured parts were omitted.<br><br>Since figuring out the 'cs7' configuration is far from trivial, it is very<br>convenient to get the program's current configuration spelled out in detail,<br>whether it is automatic or not. For this purpose, add a new 'show' command<br>which simply calls the ss7 VTY's write function with a new switch to disable<br>all omissions.<br><br>Change-Id: I84707561a6f54851c5599c39ea9bf1d971a2a1d7<br>---<br>M src/osmo_ss7_vty.c<br>M tests/vty/ss7_asp_test.vty<br>2 files changed, 31 insertions(+), 11 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo_ss7_vty.c b/src/osmo_ss7_vty.c</span><br><span>index 2931fb9..9a2f8bb 100644</span><br><span>--- a/src/osmo_ss7_vty.c</span><br><span>+++ b/src/osmo_ss7_vty.c</span><br><span>@@ -202,18 +202,23 @@</span><br><span>    return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void write_one_cs7(struct vty *vty, struct osmo_ss7_instance *inst);</span><br><span style="color: hsl(120, 100%, 40%);">+static void write_one_cs7(struct vty *vty, struct osmo_ss7_instance *inst, bool show_dyn_config);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int config_write_cs7(struct vty *vty)</span><br><span style="color: hsl(120, 100%, 40%);">+static int write_all_cs7(struct vty *vty, bool show_dyn_config)</span><br><span> {</span><br><span>     struct osmo_ss7_instance *inst;</span><br><span> </span><br><span>  llist_for_each_entry(inst, &osmo_ss7_instances, list)</span><br><span style="color: hsl(0, 100%, 40%);">-               write_one_cs7(vty, inst);</span><br><span style="color: hsl(120, 100%, 40%);">+             write_one_cs7(vty, inst, show_dyn_config);</span><br><span> </span><br><span>       return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static int config_write_cs7(struct vty *vty)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   return write_all_cs7(vty, false);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> DEFUN(show_cs7_user, show_cs7_user_cmd,</span><br><span>    "show cs7 instance <0-15> users",</span><br><span>    SHOW_STR CS7_STR INST_STR INST_STR "User Table\n")</span><br><span>@@ -543,6 +548,14 @@</span><br><span>  return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN(show_cs7_config, show_cs7_config_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+      "show cs7 config",</span><br><span style="color: hsl(120, 100%, 40%);">+      SHOW_STR CS7_STR "Currently running cs7 configuration")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     write_all_cs7(vty, true);</span><br><span style="color: hsl(120, 100%, 40%);">+     return CMD_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> /***********************************************************************</span><br><span>  * Application Server Process</span><br><span>@@ -728,11 +741,12 @@</span><br><span>    return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void write_one_asp(struct vty *vty, struct osmo_ss7_asp *asp)</span><br><span style="color: hsl(120, 100%, 40%);">+static void write_one_asp(struct vty *vty, struct osmo_ss7_asp *asp, bool show_dyn_config)</span><br><span> {</span><br><span>    int i;</span><br><span>       /* skip any dynamically created ASPs (e.g. auto-created at connect time) */</span><br><span style="color: hsl(0, 100%, 40%);">-     if (asp->dyn_allocated || asp->simple_client_allocated)</span><br><span style="color: hsl(120, 100%, 40%);">+ if ((asp->dyn_allocated || asp->simple_client_allocated)</span><br><span style="color: hsl(120, 100%, 40%);">+            && !show_dyn_config)</span><br><span>             return;</span><br><span> </span><br><span>  vty_out(vty, " asp %s %u %u %s%s",</span><br><span>@@ -1025,13 +1039,14 @@</span><br><span>       return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void write_one_as(struct vty *vty, struct osmo_ss7_as *as)</span><br><span style="color: hsl(120, 100%, 40%);">+static void write_one_as(struct vty *vty, struct osmo_ss7_as *as, bool show_dyn_config)</span><br><span> {</span><br><span>  struct osmo_ss7_routing_key *rkey;</span><br><span>   unsigned int i;</span><br><span> </span><br><span>  /* skip any dynamically allocated AS definitions */</span><br><span style="color: hsl(0, 100%, 40%);">-     if (as->rkm_dyn_allocated || as->simple_client_allocated)</span><br><span style="color: hsl(120, 100%, 40%);">+       if ((as->rkm_dyn_allocated || as->simple_client_allocated)</span><br><span style="color: hsl(120, 100%, 40%);">+          && !show_dyn_config)</span><br><span>             return;</span><br><span> </span><br><span>  vty_out(vty, " as %s %s%s", as->cfg.name,</span><br><span>@@ -1043,7 +1058,8 @@</span><br><span>               if (!asp)</span><br><span>                    continue;</span><br><span>            /* skip any dynamically created ASPs (e.g. auto-created at connect time) */</span><br><span style="color: hsl(0, 100%, 40%);">-             if (asp->dyn_allocated || asp->simple_client_allocated)</span><br><span style="color: hsl(120, 100%, 40%);">+         if ((asp->dyn_allocated || asp->simple_client_allocated)</span><br><span style="color: hsl(120, 100%, 40%);">+                    && !show_dyn_config)</span><br><span>                     continue;</span><br><span>            vty_out(vty, "  asp %s%s", asp->cfg.name, VTY_NEWLINE);</span><br><span>         }</span><br><span>@@ -1700,7 +1716,7 @@</span><br><span>  * Common</span><br><span>  ***********************************************************************/</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void write_one_cs7(struct vty *vty, struct osmo_ss7_instance *inst)</span><br><span style="color: hsl(120, 100%, 40%);">+static void write_one_cs7(struct vty *vty, struct osmo_ss7_instance *inst, bool show_dyn_config)</span><br><span> {</span><br><span>     struct osmo_ss7_asp *asp;</span><br><span>    struct osmo_ss7_as *as;</span><br><span>@@ -1741,11 +1757,11 @@</span><br><span> </span><br><span>        /* first dump ASPs, as ASs reference them */</span><br><span>         llist_for_each_entry(asp, &inst->asp_list, list)</span><br><span style="color: hsl(0, 100%, 40%);">-         write_one_asp(vty, asp);</span><br><span style="color: hsl(120, 100%, 40%);">+              write_one_asp(vty, asp, show_dyn_config);</span><br><span> </span><br><span>        /* then dump ASPs, as routes reference them */</span><br><span>       llist_for_each_entry(as, &inst->as_list, list)</span><br><span style="color: hsl(0, 100%, 40%);">-           write_one_as(vty, as);</span><br><span style="color: hsl(120, 100%, 40%);">+                write_one_as(vty, as, show_dyn_config);</span><br><span> </span><br><span>  /* now dump everything that is relevent for the SG role */</span><br><span>   if (cs7_role == CS7_ROLE_SG) {</span><br><span>@@ -1880,6 +1896,7 @@</span><br><span> </span><br><span>   install_element_ve(&show_cs7_user_cmd);</span><br><span>  install_element_ve(&show_cs7_xua_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+    install_element_ve(&show_cs7_config_cmd);</span><br><span> </span><br><span>    /* the mother of all VTY config nodes */</span><br><span>     install_element(CONFIG_NODE, &cs7_instance_cmd);</span><br><span>diff --git a/tests/vty/ss7_asp_test.vty b/tests/vty/ss7_asp_test.vty</span><br><span>index a7fe492..9bafb02 100644</span><br><span>--- a/tests/vty/ss7_asp_test.vty</span><br><span>+++ b/tests/vty/ss7_asp_test.vty</span><br><span>@@ -2,6 +2,7 @@</span><br><span> ... !show cs7</span><br><span>   show cs7 instance <0-15> users</span><br><span>   show cs7 (sua|m3ua|ipa) [<0-65534>]</span><br><span style="color: hsl(120, 100%, 40%);">+  show cs7 config</span><br><span>   show cs7 instance <0-15> asp</span><br><span>   show cs7 instance <0-15> as (active|all|m3ua|sua)</span><br><span>   show cs7 instance <0-15> sccp addressbook</span><br><span>@@ -16,6 +17,7 @@</span><br><span> ... !show cs7</span><br><span>   show cs7 instance <0-15> users</span><br><span>   show cs7 (sua|m3ua|ipa) [<0-65534>]</span><br><span style="color: hsl(120, 100%, 40%);">+  show cs7 config</span><br><span>   show cs7 instance <0-15> asp</span><br><span>   show cs7 instance <0-15> as (active|all|m3ua|sua)</span><br><span>   show cs7 instance <0-15> sccp addressbook</span><br><span>@@ -35,6 +37,7 @@</span><br><span>   sua       SCCP User Adaptation</span><br><span>   m3ua      MTP3 User Adaptation</span><br><span>   ipa       IPA Multiplex (SCCP Lite)</span><br><span style="color: hsl(120, 100%, 40%);">+  config    Currently running cs7 configuration</span><br><span> </span><br><span> ss7_asp_vty_test# show cs7 m3ua ?</span><br><span>   [<0-65534>]  Port Number</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmo-sccp/+/17501">change 17501</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/libosmo-sccp/+/17501"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmo-sccp </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I84707561a6f54851c5599c39ea9bf1d971a2a1d7 </div>
<div style="display:none"> Gerrit-Change-Number: 17501 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>