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);