<p>neels has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/libosmo-sccp/+/17501">View Change</a></p><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>1 file changed, 28 insertions(+), 11 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmo-sccp refs/changes/01/17501/1</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></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: 1 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>