diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2017-10-09 10:31:24 -0400 |
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2017-10-09 10:56:54 -0400 |
| commit | 48f41fe8298c05cd9f99f1cc25dbfa0bcec1c15f (patch) | |
| tree | 155ad20e09aaf72ebe0b3e7fe5a397f1b18287a9 | |
| parent | f4dd8c46200b91fd589cb462739f3aca6b1a766f (diff) | |
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 <sharpd@cumulusnetworks.com>
| -rw-r--r-- | pimd/pim_cmd.c | 24 |
1 files changed, 24 insertions, 0 deletions
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("<rpf?>", + 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); |
