pimd: Add support for displaying ip mroute

When you enter a static mroute under an interface
the 'show run' is not displaying this information.
Add code to allow this.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
Tested-by: NetDEF CI System <cisystem@netdef.org>
Acked-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
diff --git a/pimd/pim_static.c b/pimd/pim_static.c
index cbbcaaa..5114901 100644
--- a/pimd/pim_static.c
+++ b/pimd/pim_static.c
@@ -22,6 +22,8 @@
 
 #include <zebra.h>
 
+#include "vty.h"
+
 #include "pim_static.h"
 #include "pim_time.h"
 #include "pim_str.h"
@@ -305,3 +307,32 @@
 
    return 0;
 }
+
+int
+pim_static_write_mroute (struct vty *vty, struct interface *ifp)
+{
+  struct listnode *node;
+  struct static_route *sroute;
+  int count = 0;
+  char sbuf[100];
+  char gbuf[100];
+
+  for (ALL_LIST_ELEMENTS_RO (qpim_static_route_list, node, sroute))
+    {
+      pim_inet4_dump ("<ifaddr?>", sroute->group, gbuf, sizeof (gbuf));
+      pim_inet4_dump ("<ifaddr?>", sroute->source, sbuf, sizeof (sbuf));
+      if (sroute->iif == ifp->ifindex)
+	{
+	  int i;
+	  for (i = 0; i < MAXVIFS; i++)
+	    if (sroute->oif_ttls[i])
+	      {
+		struct interface *oifp = if_lookup_by_index (i);
+		vty_out (vty, " ip mroute %s %s %s%s", oifp->name, gbuf, sbuf, VTY_NEWLINE);
+		count ++;
+	      }
+	}
+    }
+
+  return count;
+}