diff --git a/lib/memory_vty.c b/lib/memory_vty.c index 01a41fe02e..6d63bc2d53 100644 --- a/lib/memory_vty.c +++ b/lib/memory_vty.c @@ -121,7 +121,7 @@ DEFUN (show_modules, struct frrmod_runtime *plug = frrmod_list; vty_out (vty, "%-12s %-25s %s%s%s", - "Plugin Name", "Version", "Description", + "Module Name", "Version", "Description", VTY_NEWLINE, VTY_NEWLINE); while (plug) { diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c index 114022d199..1182944f8f 100644 --- a/vtysh/vtysh.c +++ b/vtysh/vtysh.c @@ -2010,6 +2010,24 @@ DEFUNSH (VTYSH_ZEBRA, return CMD_SUCCESS; } +static int +show_per_daemon (const char *line, const char *headline) +{ + unsigned int i; + int ret = CMD_SUCCESS; + + for (i = 0; i < array_size(vtysh_client); i++) + if ( vtysh_client[i].fd >= 0 ) + { + fprintf (stdout, headline, + vtysh_client[i].name); + ret = vtysh_client_execute (&vtysh_client[i], line, stdout); + fprintf (stdout,"\n"); + } + + return ret; +} + /* Memory */ DEFUN (vtysh_show_memory, vtysh_show_memory_cmd, @@ -2017,20 +2035,16 @@ DEFUN (vtysh_show_memory, SHOW_STR "Memory statistics\n") { - unsigned int i; - int ret = CMD_SUCCESS; - char line[] = "show memory\n"; - - for (i = 0; i < array_size(vtysh_client); i++) - if ( vtysh_client[i].fd >= 0 ) - { - fprintf (stdout, "Memory statistics for %s:\n", - vtysh_client[i].name); - ret = vtysh_client_execute (&vtysh_client[i], line, stdout); - fprintf (stdout,"\n"); - } - - return ret; + return show_per_daemon ("show memory\n", "Memory statistics for %s:\n"); +} + +DEFUN (vtysh_show_modules, + vtysh_show_modules_cmd, + "show modules", + SHOW_STR + "Loaded modules\n") +{ + return show_per_daemon ("show modules\n", "Module information for %s:\n"); } /* Logging commands. */ @@ -3388,6 +3402,7 @@ vtysh_init_vty (void) #endif install_element (VIEW_NODE, &vtysh_show_memory_cmd); + install_element (VIEW_NODE, &vtysh_show_modules_cmd); install_element (VIEW_NODE, &vtysh_show_work_queues_cmd); install_element (VIEW_NODE, &vtysh_show_work_queues_daemon_cmd);