babeld: add command: "show_babel_running_config".
diff --git a/babeld/babel_interface.c b/babeld/babel_interface.c
index d4c84b3..3f58004 100644
--- a/babeld/babel_interface.c
+++ b/babeld/babel_interface.c
@@ -43,6 +43,7 @@
#include "command.h"
#include "prefix.h"
#include "vector.h"
+#include "distribute.h"
#include "babel_main.h"
#include "util.h"
@@ -829,6 +830,24 @@
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 @@
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
diff --git a/babeld/babel_main.c b/babeld/babel_main.c
index 2ae8b91..0a958e6 100644
--- a/babeld/babel_main.c
+++ b/babeld/babel_main.c
@@ -527,3 +527,69 @@
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);
+}
diff --git a/babeld/babel_main.h b/babeld/babel_main.h
index 2bacfab..a21a527 100644
--- a/babeld/babel_main.h
+++ b/babeld/babel_main.h
@@ -36,6 +36,8 @@
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 int protocol_socket;
extern int kernel_socket;
extern int max_request_hopcount;
+
+void show_babel_main_configuration (struct vty *vty);
diff --git a/babeld/babeld.c b/babeld/babeld.c
index 3dc35b5..9f2ab5d 100644
--- a/babeld/babeld.c
+++ b/babeld/babeld.c
@@ -764,3 +764,10 @@
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);
+}
diff --git a/babeld/babeld.h b/babeld/babeld.h
index 87b4de7..29bc5e8 100644
--- a/babeld/babeld.h
+++ b/babeld/babeld.h
@@ -41,6 +41,7 @@
#define BABEL_BABELD_H
#include <zebra.h>
+#include "vty.h"
#define INFINITY ((unsigned short)(~0))
@@ -131,6 +132,7 @@
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 */
diff --git a/babeld/util.c b/babeld/util.c
index f1ac0f1..514e0ff 100644
--- a/babeld/util.c
+++ b/babeld/util.c
@@ -298,6 +298,10 @@
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)
{
diff --git a/babeld/util.h b/babeld/util.h
index 4e7635f..d64169b 100644
--- a/babeld/util.h
+++ b/babeld/util.h
@@ -111,6 +111,7 @@
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);