]> git.puffer.fish Git - matthieu/frr.git/commitdiff
babeld: add command: "show_babel_running_config".
authorMatthieu Boutier <boutier@pps.jussieu.fr>
Thu, 19 Jan 2012 21:36:56 +0000 (22:36 +0100)
committerPaul Jakma <paul@quagga.net>
Sun, 25 Mar 2012 16:06:52 +0000 (17:06 +0100)
babeld/babel_interface.c
babeld/babel_main.c
babeld/babel_main.h
babeld/babeld.c
babeld/babeld.h
babeld/util.c
babeld/util.h

index d4c84b353206ce032eaf1234bed037ff94d172a7..3f5800460cfa3116fc2cf2750efb8debd85aebdb 100644 (file)
@@ -43,6 +43,7 @@ THE SOFTWARE.
 #include "command.h"
 #include "prefix.h"
 #include "vector.h"
+#include "distribute.h"
 
 #include "babel_main.h"
 #include "util.h"
@@ -829,6 +830,24 @@ DEFUN (show_babel_database,
     return CMD_SUCCESS;
 }
 
+DEFUN (show_babel_running_config,
+       show_babel_running_config_cmd,
+       "show babel running-config",
+       SHOW_STR
+       IP_STR
+       "Babel information\n"
+       "Configuration information\n"
+       "No attributes\n")
+{
+    vty_out(vty, "    -- Babel running configuration --%s", VTY_NEWLINE);
+    show_babel_main_configuration(vty);
+    show_babeld_configuration(vty);
+    vty_out(vty, "    -- ditribution lists --%s", VTY_NEWLINE);
+    config_show_distribute(vty);
+
+    return CMD_SUCCESS;
+}
+
 void
 babel_if_init ()
 {
@@ -864,6 +883,8 @@ babel_if_init ()
     install_element(ENABLE_NODE, &show_babel_neighbour_cmd);
     install_element(VIEW_NODE, &show_babel_database_cmd);
     install_element(ENABLE_NODE, &show_babel_database_cmd);
+    install_element(VIEW_NODE, &show_babel_running_config_cmd);
+    install_element(ENABLE_NODE, &show_babel_running_config_cmd);
 }
 
 /* hooks: functions called respectively when struct interface is
index 2ae8b917a15827738ab7cb80751721c3cddb2253..0a958e606c6f0b778294c5ef2097102dfbb00158 100644 (file)
@@ -527,3 +527,69 @@ babel_save_state_file(void)
         close(fd);
     }
 }
+
+void
+show_babel_main_configuration (struct vty *vty)
+{
+#ifdef NO_DEBUG
+    vty_out(vty, "No debug.%s", VTY_NEWLINE);
+#else
+    vty_out(vty, "Activated debug options:");
+    if (debug == BABEL_DEBUG_ALL) {
+        vty_out(vty, " all%s", VTY_NEWLINE);
+    } else {
+        vty_out(vty, "%s%s%s%s%s%s%s%s%s%s%s%s%s",
+                debug & BABEL_DEBUG_COMMON  ? VTY_NEWLINE    : "",
+                debug & BABEL_DEBUG_COMMON  ? "    common"   : "",
+                debug & BABEL_DEBUG_KERNEL  ? VTY_NEWLINE    : "",
+                debug & BABEL_DEBUG_KERNEL  ? "    kernel"   : "",
+                debug & BABEL_DEBUG_FILTER  ? VTY_NEWLINE    : "",
+                debug & BABEL_DEBUG_FILTER  ? "    filter"   : "",
+                debug & BABEL_DEBUG_TIMEOUT ? VTY_NEWLINE    : "",
+                debug & BABEL_DEBUG_TIMEOUT ? "    timeout"  : "",
+                debug & BABEL_DEBUG_IF      ? VTY_NEWLINE    : "",
+                debug & BABEL_DEBUG_IF      ? "    interface": "",
+                debug & BABEL_DEBUG_ROUTE   ? VTY_NEWLINE    : "",
+                debug & BABEL_DEBUG_ROUTE   ? "    route"    : "",
+                VTY_NEWLINE);
+    }
+#endif
+
+    vty_out(vty,
+            "pid file                = %s%s"
+            "state file              = %s%s"
+            "configuration file      = %s%s"
+            "protocol informations:%s"
+            "  multicast address     = %s%s"
+            "  port                  = %d%s"
+            "vty address             = %s%s"
+            "vty port                = %d%s"
+            "id                      = %s%s"
+            "idle time               = %d%s"
+            "wireless hello interval = %d%s"
+            "wired hello interval    = %d%s"
+            "idle hello interval     = %d%s"
+            "parasitic               = %s%s"
+            "split-horizon           = %s%s"
+            "allow_duplicates        = %s%s"
+            "kernel_metric           = %d%s",
+            pidfile, VTY_NEWLINE,
+            state_file, VTY_NEWLINE,
+            babel_config_file ? babel_config_file : babel_config_default,
+            VTY_NEWLINE,
+            VTY_NEWLINE,
+            format_address(protocol_group), VTY_NEWLINE,
+            protocol_port, VTY_NEWLINE,
+            babel_vty_addr ? babel_vty_addr : "None",
+            VTY_NEWLINE,
+            babel_vty_port, VTY_NEWLINE,
+            format_eui64(myid), VTY_NEWLINE,
+            idle_time, VTY_NEWLINE,
+            wireless_hello_interval, VTY_NEWLINE,
+            wired_hello_interval, VTY_NEWLINE,
+            idle_hello_interval, VTY_NEWLINE,
+            format_bool(parasitic), VTY_NEWLINE,
+            format_bool(split_horizon), VTY_NEWLINE,
+            format_bool(allow_duplicates), VTY_NEWLINE,
+            kernel_metric, VTY_NEWLINE);
+}
index 2bacfabfec9dc7f0c8a242ed12c47bc91203e4f5..a21a52747a1778300650a72daec1848992d80d7e 100644 (file)
@@ -36,6 +36,8 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 */
 
+#include "vty.h"
+
 extern struct timeval babel_now;         /* current time             */
 extern struct thread_master *master;     /* quagga's threads handler */
 extern int debug;
@@ -52,3 +54,5 @@ extern unsigned char protocol_group[16];
 extern int protocol_socket;
 extern int kernel_socket;
 extern int max_request_hopcount;
+
+void show_babel_main_configuration (struct vty *vty);
index 3dc35b5d55440b23fa3a0bea06d51412f44f76f2..9f2ab5d9a0a8b8c7f047fc99450ed63370d83688 100644 (file)
@@ -764,3 +764,10 @@ redistribute_filter(const unsigned char *prefix, unsigned short plen,
 
     return babel_filter_redistribute(&p, NULL);
 }
+
+void
+show_babeld_configuration (struct vty *vty)
+{
+    vty_out(vty, "babeld running process %s.%s",
+            babel_routing_process ? "enable" : "disable", VTY_NEWLINE);
+}
index 87b4de7b1fd32da894968c5e5ad8501368b86302..29bc5e8fd29b11af8881e6c29f3e787feaadb21c 100644 (file)
@@ -41,6 +41,7 @@ THE SOFTWARE.
 #define BABEL_BABELD_H
 
 #include <zebra.h>
+#include "vty.h"
 
 #define INFINITY ((unsigned short)(~0))
 
@@ -131,6 +132,7 @@ extern int redistribute_filter(const unsigned char *prefix, unsigned short plen,
                                unsigned int ifindex, int proto);
 extern int resize_receive_buffer(int size);
 extern void schedule_neighbours_check(int msecs, int override);
+extern void show_babeld_configuration (struct vty *vty);
 
 
 #endif /* BABEL_BABELD_H */
index f1ac0f1551d2007b39b58f8fcd313888f088e915..514e0ff395952979c8f4e13b45a62097e702d586 100644 (file)
@@ -298,6 +298,10 @@ format_eui64(const unsigned char *eui)
     return buf[i];
 }
 
+const char *format_bool(const int b) {
+    return b ? "true" : "false";
+}
+
 int
 parse_address(const char *address, unsigned char *addr_r, int *af_r)
 {
index 4e7635f63a1a680bdaf000eb19b0244d531b3181..d64169b0c6355b0a9a24de1be6246fa19a9f630f 100644 (file)
@@ -111,6 +111,7 @@ unsigned char *mask_prefix(unsigned char *restrict ret,
 const char *format_address(const unsigned char *address);
 const char *format_prefix(const unsigned char *address, unsigned char prefix);
 const char *format_eui64(const unsigned char *eui);
+const char *format_bool(const int b);
 int parse_address(const char *address, unsigned char *addr_r, int *af_r);
 int parse_net(const char *ifp, unsigned char *prefix_r, unsigned char *plen_r,
               int *af_r);