]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: show ip igmp groups json output - Make group array for each interface
authorsaravanank <saravanank@vmware.com>
Wed, 1 Apr 2020 05:13:13 +0000 (22:13 -0700)
committersaravanank <saravanank@vmware.com>
Thu, 9 Apr 2020 04:39:21 +0000 (21:39 -0700)
JSON output for igmp group display is modified as follows for better python handling.
1. Under each interface make array of group as an object
2. Include source and group inside each group object

These improvements are required for the set of topotest cases which will be upstreamed shortly.

Signed-off-by: Saravanan K <saravanank@vmware.com>
pimd/pim_cmd.c

index 2958f720e7aed682c7c9b442129249cfc663a835..871606414e0a889cc19eeb16b765959a6c748e96 100644 (file)
@@ -3415,7 +3415,8 @@ static void igmp_show_groups(struct pim_instance *pim, struct vty *vty, bool uj)
        time_t now;
        json_object *json = NULL;
        json_object *json_iface = NULL;
-       json_object *json_row = NULL;
+       json_object *json_group = NULL;
+       json_object *json_groups = NULL;
 
        now = pim_time_monotonic_sec();
 
@@ -3478,37 +3479,44 @@ static void igmp_show_groups(struct pim_instance *pim, struct vty *vty, bool uj)
                                                json_object_object_add(
                                                        json, ifp->name,
                                                        json_iface);
+                                               json_groups =
+                                                       json_object_new_array();
+                                               json_object_object_add(
+                                                               json_iface,
+                                                               "groups",
+                                                               json_groups);
                                        }
 
-                                       json_row = json_object_new_object();
-                                       json_object_string_add(
-                                               json_row, "source", ifaddr_str);
-                                       json_object_string_add(
-                                               json_row, "group", group_str);
+                                       json_group = json_object_new_object();
+                                       json_object_string_add(json_group,
+                                                              "source",
+                                                              ifaddr_str);
+                                       json_object_string_add(json_group,
+                                                              "group",
+                                                              group_str);
 
                                        if (grp->igmp_version == 3)
                                                json_object_string_add(
-                                                       json_row, "mode",
+                                                       json_group, "mode",
                                                        grp->group_filtermode_isexcl
                                                                ? "EXCLUDE"
                                                                : "INCLUDE");
 
-                                       json_object_string_add(json_row,
+                                       json_object_string_add(json_group,
                                                               "timer", hhmmss);
                                        json_object_int_add(
-                                               json_row, "sourcesCount",
+                                               json_group, "sourcesCount",
                                                grp->group_source_list
                                                        ? listcount(
                                                                  grp->group_source_list)
                                                        : 0);
-                                       json_object_int_add(json_row, "version",
-                                                           grp->igmp_version);
+                                       json_object_int_add(
+                                                       json_group, "version",
+                                                       grp->igmp_version);
                                        json_object_string_add(
-                                               json_row, "uptime", uptime);
-                                       json_object_object_add(json_iface,
-                                                              group_str,
-                                                              json_row);
-
+                                               json_group, "uptime", uptime);
+                                       json_object_array_add(json_groups,
+                                                             json_group);
                                } else {
                                        vty_out(vty,
                                                "%-16s %-15s %-15s %4s %8s %4d %d %8s\n",