]> git.puffer.fish Git - mirror/frr.git/commitdiff
lib: Fix `show running-config` and `write terminal`
authorQuentin Young <qlyoung@cumulusnetworks.com>
Fri, 7 Oct 2016 02:33:37 +0000 (02:33 +0000)
committerQuentin Young <qlyoung@cumulusnetworks.com>
Fri, 7 Oct 2016 02:33:37 +0000 (02:33 +0000)
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
vtysh/vtysh.c

index 8ab3243dbd58b3af472cd5c67e517466d3fa32ad..70b0d7832e85cf2654c643462a23e285b25f625d 100644 (file)
@@ -2160,34 +2160,41 @@ DEFUN (vtysh_write_terminal,
        vtysh_write_terminal_cmd,
        "write terminal [<zebra|ripd|ripngd|ospfd|ospf6d|bgpd|isisd|pimd>]",
        "Write running configuration to memory, network, or terminal\n"
-       "Write to terminal\n")
+       "Write to terminal\n"
+       "For the zebra daemon\n"
+       "For the rip daemon\n"
+       "For the ripng daemon\n"
+       "For the ospf daemon\n"
+       "For the ospfv6 daemon\n"
+       "For the bgp daemon\n"
+       "For the isis daemon\n"
+       "For the pim daemon\n")
 {
-  if (argc == 3)
-  {
-    for (unsigned int i = 0; i < array_size(vtysh_client); i++)
-      if (begins_with(vtysh_client[i].name, argv[2]->arg))
-        break;
-  }
-
+  u_int i;
+  char line[] = "write terminal\n";
   FILE *fp = NULL;
 
   if (vtysh_pager_name)
     {
       fp = popen (vtysh_pager_name, "w");
       if (fp == NULL)
-       {
-         perror ("popen");
-         exit (1);
-       }
+        {
+          perror ("popen");
+          exit (1);
+        }
     }
   else
     fp = stdout;
 
   vty_out (vty, "Building configuration...%s", VTY_NEWLINE);
   vty_out (vty, "%sCurrent configuration:%s", VTY_NEWLINE,
-          VTY_NEWLINE);
+           VTY_NEWLINE);
   vty_out (vty, "!%s", VTY_NEWLINE);
 
+  for (i = 0; i < array_size(vtysh_client); i++)
+    if ((argc < 3 ) || (strmatch (vtysh_client[i].name, argv[2]->text)))
+      vtysh_client_config (&vtysh_client[i], line);
+
   /* Integrate vtysh specific configuration. */
   vtysh_config_write ();
 
@@ -2197,15 +2204,14 @@ DEFUN (vtysh_write_terminal,
     {
       fflush (fp);
       if (pclose (fp) == -1)
-       {
-         perror ("pclose");
-         exit (1);
-       }
+        {
+          perror ("pclose");
+          exit (1);
+        }
       fp = NULL;
     }
 
   vty_out (vty, "end%s", VTY_NEWLINE);
-  
   return CMD_SUCCESS;
 }