diff options
| author | Donald Sharp <donaldsharp72@gmail.com> | 2022-03-15 15:13:23 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-15 15:13:23 -0400 |
| commit | 30119c81d2f7200924eda1c52d015db1ac95b211 (patch) | |
| tree | a85ac72779eff96c89f9b101fa42896e2c07288f /pimd/pim_cmd.c | |
| parent | a19134542429c7e8b76af8fa805504dd88639a78 (diff) | |
| parent | 42982834d4959772d6026ebc488263aa1885c0b2 (diff) | |
Merge pull request #10794 from opensourcerouting/fix/do_not_print_empty_stats_for_non_existing_interface
pimd: Return empty JSON if we query non existing interface for IGMP s…
Diffstat (limited to 'pimd/pim_cmd.c')
| -rw-r--r-- | pimd/pim_cmd.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index 78dbbf9326..49e18ddb72 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -1285,9 +1285,14 @@ static void igmp_show_statistics(struct pim_instance *pim, struct vty *vty, { struct interface *ifp; struct igmp_stats igmp_stats; + bool found_ifname = false; + json_object *json = NULL; igmp_stats_init(&igmp_stats); + if (uj) + json = json_object_new_object(); + FOR_ALL_INTERFACES (pim->vrf, ifp) { struct pim_interface *pim_ifp; struct listnode *sock_node, *source_node, *group_node; @@ -1303,6 +1308,8 @@ static void igmp_show_statistics(struct pim_instance *pim, struct vty *vty, if (ifname && strcmp(ifname, ifp->name)) continue; + found_ifname = true; + igmp_stats.joins_failed += pim_ifp->igmp_ifstat_joins_failed; igmp_stats.joins_sent += pim_ifp->igmp_ifstat_joins_sent; igmp_stats.total_groups += @@ -1326,15 +1333,20 @@ static void igmp_show_statistics(struct pim_instance *pim, struct vty *vty, igmp_stats_add(&igmp_stats, &igmp->igmp_stats); } } - if (uj) { - json_object *json = NULL; - json_object *json_row = NULL; - json = json_object_new_object(); - json_row = json_object_new_object(); + if (!found_ifname) { + if (uj) + vty_json(vty, json); + else + vty_out(vty, "%% No such interface\n"); + return; + } + + if (uj) { + json_object *json_row = json_object_new_object(); - json_object_string_add(json_row, "name", ifname ? ifname : - "global"); + json_object_string_add(json_row, "name", + ifname ? ifname : "global"); json_object_int_add(json_row, "queryV1", igmp_stats.query_v1); json_object_int_add(json_row, "queryV2", igmp_stats.query_v2); json_object_int_add(json_row, "queryV3", igmp_stats.query_v3); |
