mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-13 22:57:45 +00:00
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 <wcoakley@cumulusnetworks.com>
This commit is contained in:
parent
010dd8edcb
commit
81c0078ef4
@ -1003,25 +1003,25 @@ void nexthop_group_json_nexthop(json_object *j, struct nexthop *nh)
|
|||||||
|
|
||||||
switch (nh->type) {
|
switch (nh->type) {
|
||||||
case NEXTHOP_TYPE_IFINDEX:
|
case NEXTHOP_TYPE_IFINDEX:
|
||||||
json_object_string_add(j, "nexthop",
|
json_object_string_add(j, "target",
|
||||||
ifindex2ifname(nh->ifindex, nh->vrf_id));
|
ifindex2ifname(nh->ifindex, nh->vrf_id));
|
||||||
break;
|
break;
|
||||||
case NEXTHOP_TYPE_IPV4:
|
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;
|
break;
|
||||||
case NEXTHOP_TYPE_IPV4_IFINDEX:
|
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",
|
json_object_string_add(j, "vrfId",
|
||||||
ifindex2ifname(nh->ifindex, nh->vrf_id));
|
ifindex2ifname(nh->ifindex, nh->vrf_id));
|
||||||
break;
|
break;
|
||||||
case NEXTHOP_TYPE_IPV6:
|
case NEXTHOP_TYPE_IPV6:
|
||||||
json_object_string_add(
|
json_object_string_add(
|
||||||
j, "nexthop",
|
j, "target",
|
||||||
inet_ntop(AF_INET6, &nh->gate.ipv6, buf, sizeof(buf)));
|
inet_ntop(AF_INET6, &nh->gate.ipv6, buf, sizeof(buf)));
|
||||||
break;
|
break;
|
||||||
case NEXTHOP_TYPE_IPV6_IFINDEX:
|
case NEXTHOP_TYPE_IPV6_IFINDEX:
|
||||||
json_object_string_add(
|
json_object_string_add(
|
||||||
j, "nexthop",
|
j, "target",
|
||||||
inet_ntop(AF_INET6, &nh->gate.ipv6, buf, sizeof(buf)));
|
inet_ntop(AF_INET6, &nh->gate.ipv6, buf, sizeof(buf)));
|
||||||
json_object_string_add(j, "vrfId",
|
json_object_string_add(j, "vrfId",
|
||||||
ifindex2ifname(nh->ifindex, nh->vrf_id));
|
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) {
|
if (nh->vrf_id != VRF_DEFAULT) {
|
||||||
vrf = vrf_lookup_by_id(nh->vrf_id);
|
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) {
|
if (nh->nh_label && nh->nh_label->num_labels > 0) {
|
||||||
|
@ -1037,8 +1037,8 @@ static void pbr_nht_json_nhg_nexthops(struct hash_bucket *b, void *data)
|
|||||||
json_object *this_hop;
|
json_object *this_hop;
|
||||||
|
|
||||||
this_hop = json_object_new_object();
|
this_hop = json_object_new_object();
|
||||||
json_object_boolean_add(this_hop, "valid", pnhc->valid);
|
|
||||||
nexthop_group_json_nexthop(this_hop, pnhc->nexthop);
|
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);
|
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)
|
if (!j || !this_group)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
json_object_string_add(this_group, "name", pnhgc->name);
|
|
||||||
json_object_int_add(this_group, "id", pnhgc->table_id);
|
json_object_int_add(this_group, "id", pnhgc->table_id);
|
||||||
json_object_boolean_add(this_group, "valid", pnhgc->valid);
|
json_object_string_add(this_group, "name", pnhgc->name);
|
||||||
json_object_boolean_add(this_group, "installed", pnhgc->installed);
|
json_object_boolean_add(this_group, "isValid", pnhgc->valid);
|
||||||
|
json_object_boolean_add(this_group, "isInstalled", pnhgc->installed);
|
||||||
|
|
||||||
group_hops = json_object_new_array();
|
group_hops = json_object_new_array();
|
||||||
|
|
||||||
|
@ -594,7 +594,7 @@ static void vty_show_pbrms(struct vty *vty,
|
|||||||
static void vty_json_pbrms(json_object *j, struct vty *vty,
|
static void vty_json_pbrms(json_object *j, struct vty *vty,
|
||||||
const struct pbr_map_sequence *pbrms)
|
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
|
char *nhg_name = pbrms->nhgrp_name ? pbrms->nhgrp_name
|
||||||
: pbrms->internal_nhg_name;
|
: pbrms->internal_nhg_name;
|
||||||
char buf[PREFIX_STRLEN];
|
char buf[PREFIX_STRLEN];
|
||||||
@ -602,56 +602,46 @@ static void vty_json_pbrms(json_object *j, struct vty *vty,
|
|||||||
|
|
||||||
jpbrm = json_object_new_object();
|
jpbrm = json_object_new_object();
|
||||||
|
|
||||||
|
json_object_int_add(jpbrm, "id", pbrms->unique);
|
||||||
|
|
||||||
if (pbrms->reason)
|
if (pbrms->reason)
|
||||||
pbr_map_reason_string(pbrms->reason, rbuf, sizeof(rbuf));
|
pbr_map_reason_string(pbrms->reason, rbuf, sizeof(rbuf));
|
||||||
|
|
||||||
json_object_int_add(jpbrm, "sequenceNumber", pbrms->seqno);
|
json_object_int_add(jpbrm, "sequenceNumber", pbrms->seqno);
|
||||||
json_object_int_add(jpbrm, "ruleNumber", pbrms->ruleno);
|
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, "vrfUnchanged", pbrms->vrf_unchanged);
|
||||||
|
json_object_boolean_add(jpbrm, "isInstalled",
|
||||||
json_object_boolean_add(jpbrm, "installed",
|
|
||||||
pbr_nht_get_installed(nhg_name));
|
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();
|
nexthop_group = json_object_new_object();
|
||||||
|
|
||||||
json_object_string_add(nexthop_group, "name", nhg_name);
|
json_object_int_add(nexthop_group, "id",
|
||||||
|
|
||||||
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",
|
|
||||||
pbr_nht_get_table(nhg_name));
|
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));
|
pbr_nht_get_installed(nhg_name));
|
||||||
|
json_object_int_add(nexthop_group, "isInstalledInternally",
|
||||||
|
pbrms->nhs_installed);
|
||||||
|
|
||||||
json_object_object_add(jpbrm, "nexthopGroup", nexthop_group);
|
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) {
|
if (pbrms->vrf_lookup)
|
||||||
matches = json_object_new_object();
|
json_object_string_add(jpbrm, "vrfName", pbrms->vrf_name);
|
||||||
|
|
||||||
if (pbrms->src)
|
if (pbrms->src)
|
||||||
json_object_string_add(
|
json_object_string_add(
|
||||||
matches, "src",
|
jpbrm, "matchSrc",
|
||||||
prefix2str(pbrms->src, buf, sizeof(buf)));
|
prefix2str(pbrms->src, buf, sizeof(buf)));
|
||||||
if (pbrms->dst)
|
if (pbrms->dst)
|
||||||
json_object_string_add(
|
json_object_string_add(
|
||||||
matches, "dst",
|
jpbrm, "matchDst",
|
||||||
prefix2str(pbrms->dst, buf, sizeof(buf)));
|
prefix2str(pbrms->dst, buf, sizeof(buf)));
|
||||||
if (pbrms->mark)
|
if (pbrms->mark)
|
||||||
json_object_int_add(matches, "mark", pbrms->mark);
|
json_object_int_add(jpbrm, "matchMark", pbrms->mark);
|
||||||
|
|
||||||
json_object_object_add(jpbrm, "matchRule", matches);
|
|
||||||
}
|
|
||||||
|
|
||||||
json_object_array_add(j, jpbrm);
|
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 *jpbrms;
|
||||||
|
|
||||||
json_object_string_add(j, "name", pbrm->name);
|
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();
|
jpbrms = json_object_new_array();
|
||||||
|
|
||||||
@ -805,7 +795,7 @@ DEFPY (show_pbr_interface,
|
|||||||
ifp->ifindex);
|
ifp->ifindex);
|
||||||
json_object_string_add(this_iface, "policy",
|
json_object_string_add(this_iface, "policy",
|
||||||
pbr_ifp->mapname);
|
pbr_ifp->mapname);
|
||||||
json_object_boolean_add(this_iface, "valid",
|
json_object_boolean_add(this_iface, "isValid",
|
||||||
pbrm);
|
pbrm);
|
||||||
|
|
||||||
json_object_object_add(j, ifp->name,
|
json_object_object_add(j, ifp->name,
|
||||||
|
Loading…
Reference in New Issue
Block a user