From 48f41fe8298c05cd9f99f1cc25dbfa0bcec1c15f Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Mon, 9 Oct 2017 10:31:24 -0400 Subject: [PATCH] pimd: Display RPF address as part of json output When displaying the 'show ip pim upstream' command. Display proper information about the RPF address choosen. Signed-off-by: Donald Sharp --- pimd/pim_cmd.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index 7ce345d8e3..30d3b35f9d 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -2400,6 +2400,30 @@ static void pim_show_upstream(struct pim_instance *pim, struct vty *vty, json_object_string_add( json_row, "inboundInterface", up->rpf.source_nexthop.interface->name); + + /* + * The RPF address we use is slightly different + * based upon what we are looking up. + * If we have a S, list that unless + * we are the FHR, else we just put + * the RP as the rpfAddress + */ + if (up->flags & PIM_UPSTREAM_FLAG_MASK_FHR || + up->sg.src.s_addr == INADDR_ANY) { + char rpf[PREFIX_STRLEN]; + struct pim_rpf *rpg; + + rpg = RP(pim, up->sg.grp); + pim_inet4_dump("", + rpg->rpf_addr.u.prefix4, + rpf, sizeof(rpf)); + json_object_string_add(json_row, + "rpfAddress", rpf); + } else { + json_object_string_add(json_row, + "rpfAddress", src_str); + } + json_object_string_add(json_row, "source", src_str); json_object_string_add(json_row, "group", grp_str); json_object_string_add(json_row, "state", state_str); -- 2.39.5