]> git.proxmox.com Git - mirror_frr.git/blobdiff - watchfrr/watchfrr_vty.c
isisd: implement the 'rejected-adjacency' notification
[mirror_frr.git] / watchfrr / watchfrr_vty.c
index fd9c017512c6edf690ffe3417f8ba40793a5dc7e..9b844d67f25d0aa427d945c51d4d7a75d52710fb 100644 (file)
 pid_t integrated_write_pid;
 static int integrated_result_fd;
 
-DEFUN_NOSH(show_watchfrr_debugging,
-          show_watchfrr_debugging_cmd,
-          "show debugging [watchfrr]",
-          SHOW_STR
-          DEBUG_STR
-          "WatchFRR\n")
-{
-       return CMD_SUCCESS;
-}
-
 DEFUN(config_write_integrated,
       config_write_integrated_cmd,
       "write integrated",
@@ -50,11 +40,24 @@ DEFUN(config_write_integrated,
        pid_t child;
        sigset_t oldmask, sigmask;
 
+       const char *e_inprog = "Configuration write already in progress.";
+       const char *e_dmn = "Not all daemons are up, cannot write config.";
+
        if (integrated_write_pid != -1) {
-               vty_out(vty, "%% configuration write already in progress.\n");
+               vty_out(vty, "%% %s\n", e_inprog);
                return CMD_WARNING;
        }
 
+       /* check that all daemons are up before clobbering config */
+       if (!check_all_up()) {
+               vty_out(vty, "%% %s\n", e_dmn);
+               /*
+                * vtysh interprets this return value to mean that it should
+                * not try to write the config itself
+                */
+               return CMD_WARNING_CONFIG_FAILED;
+       }
+
        fflush(stdout);
        fflush(stderr);
 
@@ -111,6 +114,26 @@ DEFUN(config_write_integrated,
        exit(1);
 }
 
+DEFUN_NOSH (show_debugging_watchfrr,
+            show_debugging_watchfrr_cmd,
+            "show debugging [watchfrr]",
+            SHOW_STR
+            DEBUG_STR
+            WATCHFRR_STR)
+{
+       return CMD_SUCCESS;
+}
+
+DEFUN (show_watchfrr,
+       show_watchfrr_cmd,
+       "show watchfrr",
+       SHOW_STR
+       WATCHFRR_STR)
+{
+       watchfrr_status(vty);
+       return CMD_SUCCESS;
+}
+
 void integrated_write_sigchld(int status)
 {
        uint8_t reply[4] = {0, 0, 0, CMD_WARNING};
@@ -144,5 +167,7 @@ void watchfrr_vty_init(void)
 {
        integrated_write_pid = -1;
        install_element(ENABLE_NODE, &config_write_integrated_cmd);
-       install_element(ENABLE_NODE, &show_watchfrr_debugging_cmd);
+       install_element(ENABLE_NODE, &show_debugging_watchfrr_cmd);
+       install_element(CONFIG_NODE, &show_debugging_watchfrr_cmd);
+       install_element(VIEW_NODE, &show_watchfrr_cmd);
 }