]> 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 9cfdab44abe919ee2460bce7334a5674176be2b0..9b844d67f25d0aa427d945c51d4d7a75d52710fb 100644 (file)
@@ -40,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);
 
@@ -101,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};
@@ -134,4 +167,7 @@ void watchfrr_vty_init(void)
 {
        integrated_write_pid = -1;
        install_element(ENABLE_NODE, &config_write_integrated_cmd);
+       install_element(ENABLE_NODE, &show_debugging_watchfrr_cmd);
+       install_element(CONFIG_NODE, &show_debugging_watchfrr_cmd);
+       install_element(VIEW_NODE, &show_watchfrr_cmd);
 }