Add vty command 'show mgcp active'

With just one E1 line, the 'show mgcp' command outputs
several hundred lines to the vty. Add a 'active' parameter to
only show endpoints that are active.

Change-Id: I23a26b4fdc03d8b2469d293dd6c06ed83ce739e9
This commit is contained in:
Keith Whyte 2021-05-04 15:23:30 -05:00 committed by keith
parent 4f6a7ad5f8
commit fe53edd776
1 changed files with 38 additions and 14 deletions

View File

@ -301,9 +301,10 @@ static void dump_ratectr_trunk(struct vty *vty, struct mgcp_trunk *trunk)
}
static void dump_trunk(struct vty *vty, struct mgcp_trunk *trunk, int show_stats)
static void dump_trunk(struct vty *vty, struct mgcp_trunk *trunk, int show_stats, int active_only)
{
int i;
int active_count = 0;
vty_out(vty, "%s trunk %d with %d endpoints:%s",
trunk->trunk_type == MGCP_TRUNK_VIRTUAL ? "Virtual" : "E1",
@ -316,29 +317,30 @@ static void dump_trunk(struct vty *vty, struct mgcp_trunk *trunk, int show_stats
for (i = 0; i < trunk->number_endpoints; ++i) {
struct mgcp_endpoint *endp = trunk->endpoints[i];
dump_endpoint(vty, endp, trunk->trunk_nr, trunk->trunk_type,
show_stats);
if (i < trunk->number_endpoints - 1)
vty_out(vty, "%s", VTY_NEWLINE);
if (!active_only || !llist_empty(&endp->conns)) {
dump_endpoint(vty, endp, trunk->trunk_nr, trunk->trunk_type,
show_stats);
if (i < trunk->number_endpoints - 1)
vty_out(vty, "%s", VTY_NEWLINE);
}
if (!llist_empty(&endp->conns))
active_count++;
}
if (active_count == 0)
vty_out(vty, "No endpoints in use.%s", VTY_NEWLINE);
if (show_stats)
dump_ratectr_trunk(vty, trunk);
}
#define SHOW_MGCP_STR "Display information about the MGCP Media Gateway\n"
DEFUN(show_mcgp, show_mgcp_cmd,
"show mgcp [stats]",
SHOW_STR
SHOW_MGCP_STR
"Include Statistics\n")
static int mgcp_show(struct vty *vty, int argc, const char **argv,
int show_stats, int active_only)
{
struct mgcp_trunk *trunk;
int show_stats = argc >= 1;
llist_for_each_entry(trunk, &g_cfg->trunks, entry)
dump_trunk(vty, trunk, show_stats);
dump_trunk(vty, trunk, show_stats, active_only);
if (g_cfg->osmux)
vty_out(vty, "Osmux used CID: %d%s", osmux_cid_pool_count_used(),
@ -350,6 +352,27 @@ DEFUN(show_mcgp, show_mgcp_cmd,
return CMD_SUCCESS;
}
#define SHOW_MGCP_STR "Display information about the MGCP Media Gateway\n"
DEFUN(show_mgcp, show_mgcp_cmd,
"show mgcp [stats]",
SHOW_STR
SHOW_MGCP_STR
"Include statistics\n")
{
int show_stats = argc >= 1;
return mgcp_show(vty, argc, argv, show_stats, 0);
}
DEFUN(show_mgcp_active, show_mgcp_active_cmd,
"show mgcp active",
SHOW_STR
SHOW_MGCP_STR
"Show only endpoints with active connections\n")
{
return mgcp_show(vty, argc, argv, 0, 1);
}
static void
dump_mgcp_endpoint(struct vty *vty, struct mgcp_trunk *trunk, const char *epname)
{
@ -1606,6 +1629,7 @@ DEFUN(cfg_mgcp_conn_timeout,
int mgcp_vty_init(void)
{
install_element_ve(&show_mgcp_cmd);
install_element_ve(&show_mgcp_active_cmd);
install_element_ve(&show_mgcp_endpoint_cmd);
install_element_ve(&show_mgcp_trunk_endpoint_cmd);
install_element(ENABLE_NODE, &loop_conn_cmd);