From f91f89bcd6a7c0b26d9e5b9d7062a29451ab51b5 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Wed, 1 Jun 2016 15:31:02 -0400 Subject: [PATCH] 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. Ticket: CM-11257 Signed-off-by: Donald Sharp Reviewed-by: Daniel Walton Reviewed-by: Don Slice --- pimd/pim_static.c | 33 +++++++++++++++++++++++++++++++++ pimd/pim_static.h | 1 + pimd/pim_vty.c | 3 +++ 3 files changed, 37 insertions(+) diff --git a/pimd/pim_static.c b/pimd/pim_static.c index 26743b5961..5114901dad 100644 --- a/pimd/pim_static.c +++ b/pimd/pim_static.c @@ -20,6 +20,10 @@ $QuaggaId: $Format:%an, %ai, %h$ $ */ +#include + +#include "vty.h" + #include "pim_static.h" #include "pim_time.h" #include "pim_str.h" @@ -303,3 +307,32 @@ int pim_static_del(struct interface *iif, struct interface *oif, struct in_addr 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 ("", sroute->group, gbuf, sizeof (gbuf)); + pim_inet4_dump ("", 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; +} diff --git a/pimd/pim_static.h b/pimd/pim_static.h index 3a096932d2..b3be09e913 100644 --- a/pimd/pim_static.h +++ b/pimd/pim_static.h @@ -43,5 +43,6 @@ void pim_static_route_free(struct static_route *s_route); int pim_static_add(struct interface *iif, struct interface *oif, struct in_addr group, struct in_addr source); int pim_static_del(struct interface *iif, struct interface *oif, struct in_addr group, struct in_addr source); +int pim_static_write_mroute (struct vty *vty, struct interface *ifp); #endif /* PIM_STATIC_H_ */ diff --git a/pimd/pim_vty.c b/pimd/pim_vty.c index eeeda9d43f..beb0622a3f 100644 --- a/pimd/pim_vty.c +++ b/pimd/pim_vty.c @@ -33,6 +33,7 @@ #include "pim_str.h" #include "pim_ssmpingd.h" #include "pim_pim.h" +#include "pim_static.h" int pim_debug_config_write(struct vty *vty) { @@ -200,6 +201,8 @@ int pim_interface_config_write(struct vty *vty) ++writes; } } + + writes += pim_static_write_mroute (vty, ifp); } vty_out(vty, "!%s", VTY_NEWLINE); ++writes; -- 2.39.5