summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDinesh G Dutt <ddutt@cumulusnetworks.com>2016-07-17 23:08:05 -0700
committerDinesh G Dutt <ddutt@cumulusnetworks.com>2016-07-18 20:43:48 -0700
commit5be7afc8bb6dce6f6bcf77faad3a754e52812408 (patch)
tree6d6813408a7725bd5c6bbacb9ee7da5a3917aabb
parent07fc159679d3d2511dd938246d41b50bf9a9c9ce (diff)
Don't print empty sections as they clutter the output of show-running
Ticket: CM-11808 Reviewed By: CCR-4971 Testing Done: Usual stuff including doing show running with multiple daemons Interface and VRF are both sections of the config that could possibly be empty. This unnecessarily clutters the output of show running. This patch fixes that by not displaying empty sections of interface, and vrf. Routemaps have a genuine empty stanza and so we cannot add routemap to this list. Unfortunately this means a "show running-config ospfd" may have empty route-maps if the route-maps all correspond to BGP, for example. This is not a concern for the entire "show running-config". The trick in fixing this is on the vtysh side rather than on the client side. The reason for this is that its quite tricky given the number of options to ensure that a daemon never printed a section header unless there was something to print. On the vtysh side, however, its easy to check if a section is empty and not print it.
-rw-r--r--vtysh/vtysh.c5
-rw-r--r--vtysh/vtysh_config.c9
2 files changed, 11 insertions, 3 deletions
diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c
index ecb6c5c6ac..abd5d04f44 100644
--- a/vtysh/vtysh.c
+++ b/vtysh/vtysh.c
@@ -2097,7 +2097,8 @@ DEFUN (vtysh_write_terminal,
vty_out (vty, "!%s", VTY_NEWLINE);
for (i = 0; i < array_size(vtysh_client); i++)
- vtysh_client_config (&vtysh_client[i], line);
+ if ((argc < 1 ) || (begins_with(vtysh_client[i].name, argv[0])))
+ vtysh_client_config (&vtysh_client[i], line);
/* Integrate vtysh specific configuration. */
vtysh_config_write ();
@@ -2317,7 +2318,7 @@ ALIAS (vtysh_write_terminal,
SHOW_STR
"Current operating configuration\n")
-ALIAS (vtysh_write_terminal_daemon,
+ALIAS (vtysh_write_terminal,
vtysh_show_running_config_daemon_cmd,
"show running-config (zebra|ripd|ripngd|ospfd|ospf6d|bgpd|isisd|pimd)",
SHOW_STR
diff --git a/vtysh/vtysh_config.c b/vtysh/vtysh_config.c
index eeb635419c..e678fc1a8b 100644
--- a/vtysh/vtysh_config.c
+++ b/vtysh/vtysh_config.c
@@ -318,7 +318,14 @@ vtysh_config_dump (FILE *fp)
if ((master = vector_slot (configvec, i)) != NULL)
{
for (ALL_LIST_ELEMENTS (master, node, nnode, config))
- {
+ {
+ /* Don't print empty sections for interface/vrf. Route maps on the
+ * other hand could have a legitimate empty section at the end.
+ */
+ if ((config->index == INTERFACE_NODE || (config->index == VRF_NODE))
+ && list_isempty (config->line))
+ continue;
+
fprintf (fp, "%s\n", config->name);
fflush (fp);