pespin has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/libosmo-sccp/+/35275?usp=email )


Change subject: vty: show cs7 instance asp: Allow printing only a specific asp 
by name
......................................................................

vty: show cs7 instance asp: Allow printing only a specific asp by name

Change-Id: I08426272069ce5f3c8403b08dcaf686547bee336
---
M src/osmo_ss7_vty.c
M tests/vty/ss7_asp_test.vty
2 files changed, 60 insertions(+), 30 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/libosmo-sccp refs/changes/75/35275/1

diff --git a/src/osmo_ss7_vty.c b/src/osmo_ss7_vty.c
index 91a1eb7..94f3498 100644
--- a/src/osmo_ss7_vty.c
+++ b/src/osmo_ss7_vty.c
@@ -1160,14 +1160,45 @@
        return buf;
 }

+static void show_one_asp(struct vty *vty, struct osmo_ss7_asp *asp)
+{
+       char as_buf[64];
+       char buf_loc[OSMO_SOCK_MAX_ADDRS * INET6_ADDRSTRLEN + 
OSMO_SOCK_MAX_ADDRS + 2 + 6 + 1];
+       char buf_rem[sizeof(buf_loc)];
+
+       int fd = ss7_asp_get_fd(asp);
+       if (fd > 0) {
+               int proto = ss7_asp_proto_to_ip_proto(asp->cfg.proto);
+               if (!get_sockname_buf(buf_loc, sizeof(buf_loc), fd, proto, 
true))
+                       OSMO_STRLCPY_ARRAY(buf_loc, "<sockname-error>");
+               if (!get_sockname_buf(buf_rem, sizeof(buf_rem), fd, proto, 
false))
+                       OSMO_STRLCPY_ARRAY(buf_rem, "<sockname-error>");
+       } else {
+               osmo_ss7_asp_peer_snprintf(buf_loc, sizeof(buf_loc), 
&asp->cfg.local);
+               osmo_ss7_asp_peer_snprintf(buf_rem, sizeof(buf_rem), 
&asp->cfg.remote);
+       }
+
+       vty_out(vty, "%-12s  %-12s  %-13s  %-4s  %-4s  %-9s  %-23s  %-23s%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),
+               osmo_str_tolower(get_value_string(osmo_ss7_asp_role_names, 
asp->cfg.role)),
+               asp->cfg.is_server ? "server" : "client",
+               buf_loc, buf_rem,
+               VTY_NEWLINE);
+}
+
 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")
+       "show cs7 instance <0-15> asp [ASP_NAME]",
+       SHOW_STR CS7_STR INST_STR INST_STR
+       "Application Server Process (ASP)\n"
+       "Name of the Application Server Process (ASP)")
 {
        struct osmo_ss7_instance *inst;
-       struct osmo_ss7_asp *asp;
-       char as_buf[64];
+       struct osmo_ss7_asp *asp = NULL;
        int id = atoi(argv[0]);
+       const char *asp_name = argc >= 2 ? argv[1] : NULL;

        inst = osmo_ss7_instance_find(id);
        if (!inst) {
@@ -1175,34 +1206,24 @@
                return CMD_WARNING;
        }

+       if (asp_name) {
+               asp = osmo_ss7_asp_find_by_name(inst, asp_name);
+               if (!asp) {
+                       vty_out(vty, "No ASP %s found%s", asp_name, 
VTY_NEWLINE);
+                       return CMD_WARNING;
+               }
+       }
+
        vty_out(vty, "ASP Name      AS Name       State          Type  Role  
SCTP Role  Local Addresses          Remote Addresses%s", VTY_NEWLINE);
        vty_out(vty, "------------  ------------  -------------  ----  ----  
---------  -----------------------  -----------------------%s", VTY_NEWLINE);

-       llist_for_each_entry(asp, &inst->asp_list, list) {
-               char buf_loc[OSMO_SOCK_MAX_ADDRS * INET6_ADDRSTRLEN + 
OSMO_SOCK_MAX_ADDRS + 2 + 6 + 1];
-               char buf_rem[sizeof(buf_loc)];
-               int fd = ss7_asp_get_fd(asp);
-               if (fd > 0) {
-                       int proto = ss7_asp_proto_to_ip_proto(asp->cfg.proto);
-                       if (!get_sockname_buf(buf_loc, sizeof(buf_loc), fd, 
proto, true))
-                               OSMO_STRLCPY_ARRAY(buf_loc, "<sockname-error>");
-                       if (!get_sockname_buf(buf_rem, sizeof(buf_rem), fd, 
proto, false))
-                               OSMO_STRLCPY_ARRAY(buf_rem, "<sockname-error>");
-               } else {
-                       osmo_ss7_asp_peer_snprintf(buf_loc, sizeof(buf_loc), 
&asp->cfg.local);
-                       osmo_ss7_asp_peer_snprintf(buf_rem, sizeof(buf_rem), 
&asp->cfg.remote);
-               }
-
-               vty_out(vty, "%-12s  %-12s  %-13s  %-4s  %-4s  %-9s  %-23s  
%-23s%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),
-                       
osmo_str_tolower(get_value_string(osmo_ss7_asp_role_names, asp->cfg.role)),
-                       asp->cfg.is_server ? "server" : "client",
-                       buf_loc, buf_rem,
-                       VTY_NEWLINE);
+       if (asp) {
+               show_one_asp(vty, asp);
+               return CMD_SUCCESS;
        }
+
+       llist_for_each_entry(asp, &inst->asp_list, list)
+               show_one_asp(vty, asp);
        return CMD_SUCCESS;
 }

diff --git a/tests/vty/ss7_asp_test.vty b/tests/vty/ss7_asp_test.vty
index a767552..2022eb7 100644
--- a/tests/vty/ss7_asp_test.vty
+++ b/tests/vty/ss7_asp_test.vty
@@ -3,7 +3,7 @@
   show cs7 instance <0-15> users
   show cs7 (sua|m3ua|ipa) [<0-65534>]
   show cs7 config
-  show cs7 instance <0-15> asp
+  show cs7 instance <0-15> asp [ASP_NAME]
   show cs7 instance <0-15> as (active|all|m3ua|sua)
   show cs7 instance <0-15> route
   show cs7 instance <0-15> sccp addressbook
@@ -19,7 +19,7 @@
   show cs7 instance <0-15> users
   show cs7 (sua|m3ua|ipa) [<0-65534>]
   show cs7 config
-  show cs7 instance <0-15> asp
+  show cs7 instance <0-15> asp [ASP_NAME]
   show cs7 instance <0-15> as (active|all|m3ua|sua)
   show cs7 instance <0-15> route
   show cs7 instance <0-15> sccp addressbook

--
To view, visit https://gerrit.osmocom.org/c/libosmo-sccp/+/35275?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: libosmo-sccp
Gerrit-Branch: master
Gerrit-Change-Id: I08426272069ce5f3c8403b08dcaf686547bee336
Gerrit-Change-Number: 35275
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pes...@sysmocom.de>
Gerrit-MessageType: newchange

Reply via email to