From 81c0078ef4d0bb6471447e6eecd28663e0620cb3 Mon Sep 17 00:00:00 2001 From: Wesley Coakley Date: Thu, 21 May 2020 15:18:34 -0400 Subject: [PATCH] pbrd, lib: verbosity++ for json `show` directives Increased the verbosity of the json keys and flattened the returned structure by removing superfluous keys. Signed-off-by: Wesley Coakley --- lib/nexthop_group.c | 12 ++++----- pbrd/pbr_nht.c | 8 +++--- pbrd/pbr_vty.c | 62 +++++++++++++++++++-------------------------- 3 files changed, 36 insertions(+), 46 deletions(-) diff --git a/lib/nexthop_group.c b/lib/nexthop_group.c index f9e337d753..ab04fb904e 100644 --- a/lib/nexthop_group.c +++ b/lib/nexthop_group.c @@ -1003,25 +1003,25 @@ void nexthop_group_json_nexthop(json_object *j, struct nexthop *nh) switch (nh->type) { case NEXTHOP_TYPE_IFINDEX: - json_object_string_add(j, "nexthop", + json_object_string_add(j, "target", ifindex2ifname(nh->ifindex, nh->vrf_id)); break; case NEXTHOP_TYPE_IPV4: - json_object_string_add(j, "nexthop", inet_ntoa(nh->gate.ipv4)); + json_object_string_add(j, "target", inet_ntoa(nh->gate.ipv4)); break; case NEXTHOP_TYPE_IPV4_IFINDEX: - json_object_string_add(j, "nexthop", inet_ntoa(nh->gate.ipv4)); + json_object_string_add(j, "target", inet_ntoa(nh->gate.ipv4)); json_object_string_add(j, "vrfId", ifindex2ifname(nh->ifindex, nh->vrf_id)); break; case NEXTHOP_TYPE_IPV6: json_object_string_add( - j, "nexthop", + j, "target", inet_ntop(AF_INET6, &nh->gate.ipv6, buf, sizeof(buf))); break; case NEXTHOP_TYPE_IPV6_IFINDEX: json_object_string_add( - j, "nexthop", + j, "target", inet_ntop(AF_INET6, &nh->gate.ipv6, buf, sizeof(buf))); json_object_string_add(j, "vrfId", ifindex2ifname(nh->ifindex, nh->vrf_id)); @@ -1032,7 +1032,7 @@ void nexthop_group_json_nexthop(json_object *j, struct nexthop *nh) if (nh->vrf_id != VRF_DEFAULT) { vrf = vrf_lookup_by_id(nh->vrf_id); - json_object_string_add(j, "nexthopVrf", vrf->name); + json_object_string_add(j, "targetVrf", vrf->name); } if (nh->nh_label && nh->nh_label->num_labels > 0) { diff --git a/pbrd/pbr_nht.c b/pbrd/pbr_nht.c index ae7a8017c2..30135dd9a4 100644 --- a/pbrd/pbr_nht.c +++ b/pbrd/pbr_nht.c @@ -1037,8 +1037,8 @@ static void pbr_nht_json_nhg_nexthops(struct hash_bucket *b, void *data) json_object *this_hop; this_hop = json_object_new_object(); - json_object_boolean_add(this_hop, "valid", pnhc->valid); nexthop_group_json_nexthop(this_hop, pnhc->nexthop); + json_object_boolean_add(this_hop, "isValid", pnhc->valid); json_object_array_add(all_hops, this_hop); } @@ -1080,10 +1080,10 @@ static void pbr_nht_json_nhg(struct hash_bucket *b, void *data) if (!j || !this_group) return; - json_object_string_add(this_group, "name", pnhgc->name); json_object_int_add(this_group, "id", pnhgc->table_id); - json_object_boolean_add(this_group, "valid", pnhgc->valid); - json_object_boolean_add(this_group, "installed", pnhgc->installed); + json_object_string_add(this_group, "name", pnhgc->name); + json_object_boolean_add(this_group, "isValid", pnhgc->valid); + json_object_boolean_add(this_group, "isInstalled", pnhgc->installed); group_hops = json_object_new_array(); diff --git a/pbrd/pbr_vty.c b/pbrd/pbr_vty.c index f94a4d43b0..505c600184 100644 --- a/pbrd/pbr_vty.c +++ b/pbrd/pbr_vty.c @@ -594,7 +594,7 @@ static void vty_show_pbrms(struct vty *vty, static void vty_json_pbrms(json_object *j, struct vty *vty, const struct pbr_map_sequence *pbrms) { - json_object *jpbrm, *matches, *nexthop_group; + json_object *jpbrm, *nexthop_group; char *nhg_name = pbrms->nhgrp_name ? pbrms->nhgrp_name : pbrms->internal_nhg_name; char buf[PREFIX_STRLEN]; @@ -602,56 +602,46 @@ static void vty_json_pbrms(json_object *j, struct vty *vty, jpbrm = json_object_new_object(); + json_object_int_add(jpbrm, "id", pbrms->unique); + if (pbrms->reason) pbr_map_reason_string(pbrms->reason, rbuf, sizeof(rbuf)); json_object_int_add(jpbrm, "sequenceNumber", pbrms->seqno); json_object_int_add(jpbrm, "ruleNumber", pbrms->ruleno); - - json_object_int_add(jpbrm, "identifier", pbrms->unique); json_object_boolean_add(jpbrm, "vrfUnchanged", pbrms->vrf_unchanged); - - json_object_boolean_add(jpbrm, "installed", + json_object_boolean_add(jpbrm, "isInstalled", pbr_nht_get_installed(nhg_name)); - json_object_string_add(jpbrm, "reason", pbrms->reason ? rbuf : "Valid"); + json_object_string_add(jpbrm, "installedReason", + pbrms->reason ? rbuf : "Valid"); - if (pbrms->nhgrp_name || pbrms->mark) { + if (nhg_name) { nexthop_group = json_object_new_object(); - json_object_string_add(nexthop_group, "name", nhg_name); - - json_object_int_add(nexthop_group, "nhsInstalled", - pbrms->nhs_installed); - json_object_int_add(nexthop_group, "nhtInstalled", - pbr_nht_get_installed(nhg_name)); - - json_object_int_add(nexthop_group, "tableId", + json_object_int_add(nexthop_group, "id", pbr_nht_get_table(nhg_name)); - json_object_boolean_add(nexthop_group, "installed", + json_object_string_add(nexthop_group, "name", nhg_name); + json_object_boolean_add(nexthop_group, "isInstalled", pbr_nht_get_installed(nhg_name)); + json_object_int_add(nexthop_group, "isInstalledInternally", + pbrms->nhs_installed); json_object_object_add(jpbrm, "nexthopGroup", nexthop_group); - - } else if (pbrms->vrf_lookup) { - json_object_string_add(jpbrm, "vrf", pbrms->vrf_name); } - if (pbrms->src || pbrms->dst || pbrms->mark) { - matches = json_object_new_object(); - - if (pbrms->src) - json_object_string_add( - matches, "src", - prefix2str(pbrms->src, buf, sizeof(buf))); - if (pbrms->dst) - json_object_string_add( - matches, "dst", - prefix2str(pbrms->dst, buf, sizeof(buf))); - if (pbrms->mark) - json_object_int_add(matches, "mark", pbrms->mark); + if (pbrms->vrf_lookup) + json_object_string_add(jpbrm, "vrfName", pbrms->vrf_name); - json_object_object_add(jpbrm, "matchRule", matches); - } + if (pbrms->src) + json_object_string_add( + jpbrm, "matchSrc", + prefix2str(pbrms->src, buf, sizeof(buf))); + if (pbrms->dst) + json_object_string_add( + jpbrm, "matchDst", + prefix2str(pbrms->dst, buf, sizeof(buf))); + if (pbrms->mark) + json_object_int_add(jpbrm, "matchMark", pbrms->mark); json_object_array_add(j, jpbrm); } @@ -677,7 +667,7 @@ static void vty_json_pbr_map(json_object *j, struct vty *vty, json_object *jpbrms; json_object_string_add(j, "name", pbrm->name); - json_object_boolean_add(j, "valid", pbrm->valid); + json_object_boolean_add(j, "isValid", pbrm->valid); jpbrms = json_object_new_array(); @@ -805,7 +795,7 @@ DEFPY (show_pbr_interface, ifp->ifindex); json_object_string_add(this_iface, "policy", pbr_ifp->mapname); - json_object_boolean_add(this_iface, "valid", + json_object_boolean_add(this_iface, "isValid", pbrm); json_object_object_add(j, ifp->name, -- 2.39.5