pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-sccp/+/33518 )
Change subject: vty: Improve output of show cs7 instance <0-15> asp ......................................................................
vty: Improve output of show cs7 instance <0-15> asp
Role and SCTP Role are now printed. Several formatting issues are fixed or improved.
Related: SYS#6488 Change-Id: Id22bd4e74fb6f79950adba58862d379203d36760 --- M src/osmo_ss7_vty.c M tests/vty/ss7_asp_test.vty 2 files changed, 61 insertions(+), 25 deletions(-)
Approvals: Jenkins Builder: Verified osmith: Looks good to me, but someone else must approve laforge: Looks good to me, but someone else must approve pespin: Looks good to me, approved
diff --git a/src/osmo_ss7_vty.c b/src/osmo_ss7_vty.c index ebec5f6..9398bc1 100644 --- a/src/osmo_ss7_vty.c +++ b/src/osmo_ss7_vty.c @@ -790,6 +790,24 @@ return CMD_SUCCESS; }
+static char *as_list_for_asp(const struct osmo_ss7_asp *asp, char *buf, size_t buf_len) +{ + struct osmo_strbuf sb = { .buf = buf, .len = buf_len }; + const struct osmo_ss7_as *as; + unsigned int count = 0; + llist_for_each_entry(as, &asp->inst->as_list, list) { + if (!osmo_ss7_as_has_asp(as, asp)) + continue; + OSMO_STRBUF_PRINTF(sb, "%s%s", count != 0 ? "," : "", as->cfg.name); + count++; + break; + } + + if (count == 0) + OSMO_STRBUF_PRINTF(sb, "?"); + return buf; +} + DEFUN(show_cs7_asp, show_cs7_asp_cmd, "show cs7 instance <0-15> asp", SHOW_STR CS7_STR INST_STR INST_STR "Application Server Process (ASP)\n") @@ -797,6 +815,7 @@ struct osmo_ss7_instance *inst; struct osmo_ss7_asp *asp; char buf[512]; + char as_buf[64]; int id = atoi(argv[0]);
inst = osmo_ss7_instance_find(id); @@ -805,9 +824,9 @@ return CMD_WARNING; }
- vty_out(vty, " Effect Primary%s", VTY_NEWLINE); - vty_out(vty, "ASP Name AS Name State Type Remote IP Addr:Rmt Port SCTP%s", VTY_NEWLINE); - vty_out(vty, "------------ ------------ ------------- ---- ----------------------- ----------%s", VTY_NEWLINE); + vty_out(vty, " Current Primary Link%s", VTY_NEWLINE); + vty_out(vty, "ASP Name AS Name State Type Role Remote IPaddr & Port SCTP Role%s", VTY_NEWLINE); + vty_out(vty, "------------ ------------ ------------- ---- ---- ----------------------- ---------%s", VTY_NEWLINE);
llist_for_each_entry(asp, &inst->asp_list, list) { if (asp->cfg.proto == OSMO_SS7_ASP_PROT_IPA && asp->cfg.remote.port == 0 && asp->server) { @@ -819,11 +838,15 @@ snprintf(buf, sizeof(buf), "%s:%s", hostbuf, portbuf); } else osmo_ss7_asp_peer_snprintf(buf, sizeof(buf), &asp->cfg.remote); - vty_out(vty, "%-12s %-12s %-13s %-4s %-14s %-10s%s", - asp->cfg.name, "?", + vty_out(vty, "%-12s %-12s %-13s %-4s %-4s %-23s %-9s%s", + asp->cfg.name, + as_list_for_asp(asp, as_buf, sizeof(as_buf)), asp->fi? osmo_fsm_inst_state_name(asp->fi) : "uninitialized", get_value_string(osmo_ss7_asp_protocol_vals, asp->cfg.proto), - buf, "", VTY_NEWLINE); + osmo_str_tolower(get_value_string(osmo_ss7_asp_role_names, asp->cfg.role)), + buf, + asp->cfg.is_server ? "server" : "client", + VTY_NEWLINE); } return CMD_SUCCESS; } diff --git a/tests/vty/ss7_asp_test.vty b/tests/vty/ss7_asp_test.vty index ffa263f..f7d92bd 100644 --- a/tests/vty/ss7_asp_test.vty +++ b/tests/vty/ss7_asp_test.vty @@ -244,10 +244,10 @@ ss7_asp_vty_test(config-cs7-asp)# remote-ip 127.0.0.200 ss7_asp_vty_test(config-cs7-asp)# local-ip 127.0.0.100 ss7_asp_vty_test(config-cs7-asp)# do show cs7 instance 0 asp - Effect Primary -ASP Name AS Name State Type Remote IP Addr:Rmt Port SCTP ------------- ------------ ------------- ---- ----------------------- ---------- -my-asp ? uninitialized m3ua 127.0.0.200:12345 + Current Primary Link +ASP Name AS Name State Type Role Remote IPaddr & Port SCTP Role +------------ ------------ ------------- ---- ---- ----------------------- --------- +my-asp ? uninitialized m3ua sg 127.0.0.200:12345 server ss7_asp_vty_test(config-cs7-asp)# exit
ss7_asp_vty_test(config-cs7)# as my-ass m3ua @@ -308,26 +308,26 @@ ss7_asp_vty_test(config-cs7-as)# routing-key 0 3.2.1
ss7_asp_vty_test(config-cs7-as)# do show cs7 instance 0 asp - Effect Primary -ASP Name AS Name State Type Remote IP Addr:Rmt Port SCTP ------------- ------------ ------------- ---- ----------------------- ---------- -my-asp ? ASP_DOWN m3ua 127.0.0.200:12345 + Current Primary Link +ASP Name AS Name State Type Role Remote IPaddr & Port SCTP Role +------------ ------------ ------------- ---- ---- ----------------------- --------- +my-asp my-ass ASP_DOWN m3ua sg 127.0.0.200:12345 server
ss7_asp_vty_test(config-cs7-as)# exit ss7_asp_vty_test(config-cs7)# do show cs7 instance 0 asp - Effect Primary -ASP Name AS Name State Type Remote IP Addr:Rmt Port SCTP ------------- ------------ ------------- ---- ----------------------- ---------- -my-asp ? ASP_DOWN m3ua 127.0.0.200:12345 + Current Primary Link +ASP Name AS Name State Type Role Remote IPaddr & Port SCTP Role +------------ ------------ ------------- ---- ---- ----------------------- --------- +my-asp my-ass ASP_DOWN m3ua sg 127.0.0.200:12345 server
ss7_asp_vty_test(config-cs7)# exit
ss7_asp_vty_test(config)# do show cs7 instance 0 asp - Effect Primary -ASP Name AS Name State Type Remote IP Addr:Rmt Port SCTP ------------- ------------ ------------- ---- ----------------------- ---------- -my-asp ? ASP_DOWN m3ua 127.0.0.200:12345 + Current Primary Link +ASP Name AS Name State Type Role Remote IPaddr & Port SCTP Role +------------ ------------ ------------- ---- ---- ----------------------- --------- +my-asp my-ass ASP_DOWN m3ua sg 127.0.0.200:12345 server
ss7_asp_vty_test(config)# do show cs7 instance 0 as all Routing Routing Key Cic Cic Traffic @@ -368,9 +368,9 @@ ss7_asp_vty_test(config-cs7)# no asp my-asp
ss7_asp_vty_test(config-cs7)# do show cs7 instance 0 asp - Effect Primary -ASP Name AS Name State Type Remote IP Addr:Rmt Port SCTP ------------- ------------ ------------- ---- ----------------------- ---------- + Current Primary Link +ASP Name AS Name State Type Role Remote IPaddr & Port SCTP Role +------------ ------------ ------------- ---- ---- ----------------------- ---------
ss7_asp_vty_test(config-cs7)# do show cs7 instance 0 as all Routing Routing Key Cic Cic Traffic