babeld: add command: "show_babel_neighbour".
diff --git a/babeld/babel_interface.c b/babeld/babel_interface.c
index edfa2b4..bd32d26 100644
--- a/babeld/babel_interface.c
+++ b/babeld/babel_interface.c
@@ -51,6 +51,7 @@
 #include "message.h"
 #include "route.h"
 #include "babel_zebra.h"
+#include "neighbour.h"
 
 
 static int babel_enable_if_lookup (const char *ifname);
@@ -727,6 +728,51 @@
   return CMD_SUCCESS;
 }
 
+static void
+show_babel_neighbour_sub (struct vty *vty, struct neighbour *neigh)
+{
+    vty_out (vty,
+             "Neighbour %s dev %s reach %04x rxcost %d txcost %d %s.%s",
+             format_address(neigh->address),
+             neigh->ifp->name,
+             neigh->reach,
+             neighbour_rxcost(neigh),
+             neigh->txcost,
+             if_up(neigh->ifp) ? "" : " (down)",
+             VTY_NEWLINE);
+}
+
+DEFUN (show_babel_neighbour,
+       show_babel_neighbour_cmd,
+       "show babel neighbour [INTERFACE]",
+       SHOW_STR
+       IP_STR
+       "Babel information\n"
+       "Print neighbours\n"
+       "Interface name\n")
+{
+    struct neighbour *neigh;
+    struct interface *ifp;
+
+    if (argc == 0) {
+        FOR_ALL_NEIGHBOURS(neigh) {
+            show_babel_neighbour_sub(vty, neigh);
+        }
+        return CMD_SUCCESS;
+    }
+    if ((ifp = if_lookup_by_name (argv[0])) == NULL)
+    {
+        vty_out (vty, "No such interface name%s", VTY_NEWLINE);
+        return CMD_WARNING;
+    }
+    FOR_ALL_NEIGHBOURS(neigh) {
+        if(ifp->ifindex == neigh->ifp->ifindex) {
+            show_babel_neighbour_sub(vty, neigh);
+        }
+    }
+    return CMD_SUCCESS;
+}
+
 void
 babel_if_init ()
 {
@@ -758,6 +804,8 @@
   /* "show babel ..." commands */
   install_element (VIEW_NODE, &show_babel_interface_cmd);
   install_element (ENABLE_NODE, &show_babel_interface_cmd);
+    install_element(VIEW_NODE, &show_babel_neighbour_cmd);
+    install_element(ENABLE_NODE, &show_babel_neighbour_cmd);
 }
 
 /* hooks: functions called respectively when struct interface is