diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2016-11-08 12:53:28 -0500 |
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2016-12-21 20:26:14 -0500 |
| commit | 5349cf9a09288e90cc30c43c0ff448a053dd2fe9 (patch) | |
| tree | 4e580f69f4112d6df86aea568c9b01f91c40b3f1 /pimd/pim_cmd.c | |
| parent | 637a61fa2b556f38f861e2d3fd2ba4110ddaef99 (diff) | |
pimd: Fix 'show ip pim join json' output
When we have multiple incoming joins for
a single group on a interface, we need to
allow proper output.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'pimd/pim_cmd.c')
| -rw-r--r-- | pimd/pim_cmd.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index fe8a113b4f..5b5bf8235d 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -1090,6 +1090,7 @@ static void pim_show_join(struct vty *vty, u_char uj) json_object *json = NULL; json_object *json_iface = NULL; json_object *json_row = NULL; + json_object *json_grp = NULL; now = pim_time_monotonic_sec(); @@ -1144,8 +1145,16 @@ static void pim_show_join(struct vty *vty, u_char uj) json_object_string_add(json_row, "channelJoinName", pim_ifchannel_ifjoin_name(ch->ifjoin_state)); if (PIM_IF_FLAG_TEST_S_G_RPT(ch->flags)) json_object_int_add(json_row, "SGRpt", 1); - json_object_object_add(json_iface, ch_src_str, json_row); + json_object_object_get_ex(json_iface, ch_grp_str, &json_grp); + if (!json_grp) + { + json_grp = json_object_new_object(); + json_object_object_add(json_grp, ch_src_str, json_row); + json_object_object_add(json_iface, ch_grp_str, json_grp); + } + else + json_object_object_add(json_grp, ch_src_str, json_row); } else { vty_out(vty, "%-9s %-15s %-15s %-15s %-6s %8s %-6s %5s%s", ch->interface->name, |
