ospf6d: use a new json_object per loop iteration

When redistributing multiple route types into ospfv3
the code must create a new array per route type into
the the json code.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
Donald Sharp 2021-01-24 07:48:22 -05:00
parent 4912deafad
commit 8f17f6eb2d

View file

@ -1439,8 +1439,7 @@ static void ospf6_redistribute_show_config(struct vty *vty, struct ospf6 *ospf6,
struct ospf6_redist *red; struct ospf6_redist *red;
total = 0; total = 0;
for (type = 0; type < ZEBRA_ROUTE_MAX; type++) memset(nroute, 0, sizeof(nroute));
nroute[type] = 0;
for (route = ospf6_route_head(ospf6->external_table); route; for (route = ospf6_route_head(ospf6->external_table); route;
route = ospf6_route_next(route)) { route = ospf6_route_next(route)) {
info = route->route_option; info = route->route_option;
@ -1448,12 +1447,11 @@ static void ospf6_redistribute_show_config(struct vty *vty, struct ospf6 *ospf6,
total++; total++;
} }
if (use_json) if (!use_json)
json_route = json_object_new_object();
else
vty_out(vty, "Redistributing External Routes from:\n"); vty_out(vty, "Redistributing External Routes from:\n");
for (type = 0; type < ZEBRA_ROUTE_MAX; type++) { for (type = 0; type < ZEBRA_ROUTE_MAX; type++) {
red = ospf6_redist_lookup(ospf6, type, 0); red = ospf6_redist_lookup(ospf6, type, 0);
if (!red) if (!red)
@ -1462,6 +1460,7 @@ static void ospf6_redistribute_show_config(struct vty *vty, struct ospf6 *ospf6,
continue; continue;
if (use_json) { if (use_json) {
json_route = json_object_new_object();
json_object_string_add(json_route, "routeType", json_object_string_add(json_route, "routeType",
ZROUTE_NAME(type)); ZROUTE_NAME(type));
json_object_int_add(json_route, "numberOfRoutes", json_object_int_add(json_route, "numberOfRoutes",