summaryrefslogtreecommitdiff
path: root/pimd/pim_cmd.c
diff options
context:
space:
mode:
authorDaniel Walton <dwalton@cumulusnetworks.com>2016-09-17 04:10:44 +0000
committerDonald Sharp <sharpd@cumulusnetworks.com>2016-12-21 20:26:10 -0500
commit91c6aec45fa92cfa1d00e1d3701c6b87dcd22d4c (patch)
tree73100a26550e5681fc85a6ffb41983332fefce4c /pimd/pim_cmd.c
parentb3fb2c27cdea26f53ff361457dd391d5bbd7fca4 (diff)
pimd: "show ip mroute" skips entries without an OIF
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com> The entry for 230.10.10.4 was not being displayed root@superm-redxp-05[pimd]# ip mroute show (20.0.13.253, 230.10.10.4) Iif: br1 (20.0.13.253, 230.10.10.1) Iif: br1 Oifs: swp1 root@superm-redxp-05[pimd]# root@superm-redxp-05[pimd]# root@superm-redxp-05[pimd]# vtysh -c 'show ip mroute' Proto: I=IGMP P=PIM S=STATIC O=SOURCE Source Group Proto Input iVifI Output oVifI TTL Uptime 20.0.13.253 230.10.10.1 P br1 1 swp1 2 1 00:01:09 20.0.13.253 230.10.10.4 P br1 1 none 0 0 --:--:-- root@superm-redxp-05[pimd]#
Diffstat (limited to 'pimd/pim_cmd.c')
-rw-r--r--pimd/pim_cmd.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c
index e6851089d6..0c297271d0 100644
--- a/pimd/pim_cmd.c
+++ b/pimd/pim_cmd.c
@@ -2622,6 +2622,7 @@ static void show_mroute(struct vty *vty, u_char uj)
json_object *json_source = NULL;
json_object *json_ifp_in = NULL;
json_object *json_ifp_out = NULL;
+ int found_oif = 0;
if (uj) {
json = json_object_new_object();
@@ -2642,6 +2643,7 @@ static void show_mroute(struct vty *vty, u_char uj)
int oif_vif_index;
char proto[5];
struct interface *ifp_in;
+ found_oif = 0;
if (!c_oil->installed)
continue;
@@ -2693,6 +2695,7 @@ static void show_mroute(struct vty *vty, u_char uj)
ifp_out = pim_if_find_by_vif_index(oif_vif_index);
pim_time_uptime(oif_uptime, sizeof(oif_uptime), now - c_oil->oif_creation[oif_vif_index]);
+ found_oif = 1;
if (ifp_out)
strcpy(out_ifname, ifp_out->name);
@@ -2748,6 +2751,20 @@ static void show_mroute(struct vty *vty, u_char uj)
VTY_NEWLINE);
}
}
+
+ if (!uj && !found_oif) {
+ vty_out(vty, "%-15s %-15s %-5s %-5s %5d %-6s %5d %3d %8s %s",
+ src_str,
+ grp_str,
+ proto,
+ in_ifname,
+ c_oil->oil.mfcc_parent,
+ "none",
+ 0,
+ 0,
+ "--:--:--",
+ VTY_NEWLINE);
+ }
}
/* Print list of static routes */
@@ -2766,6 +2783,7 @@ static void show_mroute(struct vty *vty, u_char uj)
pim_inet4_dump("<group?>", s_route->group, grp_str, sizeof(grp_str));
pim_inet4_dump("<source?>", s_route->source, src_str, sizeof(src_str));
ifp_in = pim_if_find_by_vif_index(s_route->iif);
+ found_oif = 0;
if (ifp_in)
strcpy(in_ifname, ifp_in->name);
@@ -2814,6 +2832,7 @@ static void show_mroute(struct vty *vty, u_char uj)
ifp_out = pim_if_find_by_vif_index(oif_vif_index);
pim_time_uptime(oif_uptime, sizeof(oif_uptime), now - s_route->c_oil.oif_creation[oif_vif_index]);
+ found_oif = 1;
if (ifp_out)
strcpy(out_ifname, ifp_out->name);
@@ -2846,6 +2865,20 @@ static void show_mroute(struct vty *vty, u_char uj)
VTY_NEWLINE);
}
}
+
+ if (!uj && !found_oif) {
+ vty_out(vty, "%-15s %-15s %-5s %-5s %5d %-6s %5d %3d %8s %s",
+ src_str,
+ grp_str,
+ proto,
+ in_ifname,
+ c_oil->oil.mfcc_parent,
+ "none",
+ 0,
+ 0,
+ "--:--:--",
+ VTY_NEWLINE);
+ }
}
if (uj) {