mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 14:17:20 +00:00
Merge pull request #3139 from adharkar/frr-bgp_cli
bgpd: BGP JSON show commands enhancements
This commit is contained in:
commit
e008da8e9e
@ -6664,7 +6664,8 @@ void route_vty_out(struct vty *vty, struct prefix *p,
|
|||||||
inet_ntoa(attr->nexthop));
|
inet_ntoa(attr->nexthop));
|
||||||
json_object_string_add(json_nexthop_global,
|
json_object_string_add(json_nexthop_global,
|
||||||
"afi", "ipv4");
|
"afi", "ipv4");
|
||||||
json_object_boolean_true_add(json_nexthop_global,
|
json_object_boolean_true_add(
|
||||||
|
json_nexthop_global,
|
||||||
"used");
|
"used");
|
||||||
} else {
|
} else {
|
||||||
vty_out(vty, "%-16s", inet_ntoa(attr->nexthop));
|
vty_out(vty, "%-16s", inet_ntoa(attr->nexthop));
|
||||||
@ -6791,19 +6792,32 @@ void route_vty_out(struct vty *vty, struct prefix *p,
|
|||||||
|
|
||||||
/* MED/Metric */
|
/* MED/Metric */
|
||||||
if (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MULTI_EXIT_DISC))
|
if (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MULTI_EXIT_DISC))
|
||||||
if (json_paths)
|
if (json_paths) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Adding "metric" field to match with corresponding
|
||||||
|
* CLI. "med" will be deprecated in future.
|
||||||
|
*/
|
||||||
json_object_int_add(json_path, "med", attr->med);
|
json_object_int_add(json_path, "med", attr->med);
|
||||||
else
|
json_object_int_add(json_path, "metric", attr->med);
|
||||||
|
} else
|
||||||
vty_out(vty, "%10u", attr->med);
|
vty_out(vty, "%10u", attr->med);
|
||||||
else if (!json_paths)
|
else if (!json_paths)
|
||||||
vty_out(vty, " ");
|
vty_out(vty, " ");
|
||||||
|
|
||||||
/* Local Pref */
|
/* Local Pref */
|
||||||
if (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LOCAL_PREF))
|
if (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LOCAL_PREF))
|
||||||
if (json_paths)
|
if (json_paths) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Adding "locPrf" field to match with corresponding
|
||||||
|
* CLI. "localPref" will be deprecated in future.
|
||||||
|
*/
|
||||||
json_object_int_add(json_path, "localpref",
|
json_object_int_add(json_path, "localpref",
|
||||||
attr->local_pref);
|
attr->local_pref);
|
||||||
else
|
json_object_int_add(json_path, "locPrf",
|
||||||
|
attr->local_pref);
|
||||||
|
} else
|
||||||
vty_out(vty, "%7u", attr->local_pref);
|
vty_out(vty, "%7u", attr->local_pref);
|
||||||
else if (!json_paths)
|
else if (!json_paths)
|
||||||
vty_out(vty, " ");
|
vty_out(vty, " ");
|
||||||
@ -6822,10 +6836,17 @@ void route_vty_out(struct vty *vty, struct prefix *p,
|
|||||||
|
|
||||||
/* Print aspath */
|
/* Print aspath */
|
||||||
if (attr->aspath) {
|
if (attr->aspath) {
|
||||||
if (json_paths)
|
if (json_paths) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Adding "path" field to match with corresponding
|
||||||
|
* CLI. "aspath" will be deprecated in future.
|
||||||
|
*/
|
||||||
json_object_string_add(json_path, "aspath",
|
json_object_string_add(json_path, "aspath",
|
||||||
attr->aspath->str);
|
attr->aspath->str);
|
||||||
else
|
json_object_string_add(json_path, "path",
|
||||||
|
attr->aspath->str);
|
||||||
|
} else
|
||||||
aspath_print_vty(vty, "%s", attr->aspath, " ");
|
aspath_print_vty(vty, "%s", attr->aspath, " ");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6941,16 +6962,34 @@ void route_vty_out_tmp(struct vty *vty, struct prefix *p, struct attr *attr,
|
|||||||
json_object_int_add(json_net, "metric",
|
json_object_int_add(json_net, "metric",
|
||||||
attr->med);
|
attr->med);
|
||||||
|
|
||||||
if (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LOCAL_PREF))
|
if (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LOCAL_PREF)) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Adding "locPrf" field to match with
|
||||||
|
* corresponding CLI. "localPref" will be
|
||||||
|
* deprecated in future.
|
||||||
|
*/
|
||||||
json_object_int_add(json_net, "localPref",
|
json_object_int_add(json_net, "localPref",
|
||||||
attr->local_pref);
|
attr->local_pref);
|
||||||
|
json_object_int_add(json_net, "locPrf",
|
||||||
|
attr->local_pref);
|
||||||
|
}
|
||||||
|
|
||||||
json_object_int_add(json_net, "weight", attr->weight);
|
json_object_int_add(json_net, "weight", attr->weight);
|
||||||
|
|
||||||
/* Print aspath */
|
/* Print aspath */
|
||||||
if (attr->aspath)
|
if (attr->aspath) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Adding "path" field to match with
|
||||||
|
* corresponding CLI. "localPref" will be
|
||||||
|
* deprecated in future.
|
||||||
|
*/
|
||||||
json_object_string_add(json_net, "asPath",
|
json_object_string_add(json_net, "asPath",
|
||||||
attr->aspath->str);
|
attr->aspath->str);
|
||||||
|
json_object_string_add(json_net, "path",
|
||||||
|
attr->aspath->str);
|
||||||
|
}
|
||||||
|
|
||||||
/* Print origin */
|
/* Print origin */
|
||||||
json_object_string_add(json_net, "bgpOriginCode",
|
json_object_string_add(json_net, "bgpOriginCode",
|
||||||
@ -7853,10 +7892,18 @@ void route_vty_out_detail(struct vty *vty, struct bgp *bgp, struct prefix *p,
|
|||||||
bgp_origin_long_str[attr->origin]);
|
bgp_origin_long_str[attr->origin]);
|
||||||
|
|
||||||
if (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MULTI_EXIT_DISC)) {
|
if (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MULTI_EXIT_DISC)) {
|
||||||
if (json_paths)
|
if (json_paths) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Adding "metric" field to match with
|
||||||
|
* corresponding CLI. "med" will be
|
||||||
|
* deprecated in future.
|
||||||
|
*/
|
||||||
json_object_int_add(json_path, "med",
|
json_object_int_add(json_path, "med",
|
||||||
attr->med);
|
attr->med);
|
||||||
else
|
json_object_int_add(json_path, "metric",
|
||||||
|
attr->med);
|
||||||
|
} else
|
||||||
vty_out(vty, ", metric %u", attr->med);
|
vty_out(vty, ", metric %u", attr->med);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7982,8 +7982,17 @@ static int bgp_show_summary(struct vty *vty, struct bgp *bgp, int afi, int safi,
|
|||||||
json_object_int_add(json_peer, "inq", 0);
|
json_object_int_add(json_peer, "inq", 0);
|
||||||
peer_uptime(peer->uptime, timebuf, BGP_UPTIME_LEN,
|
peer_uptime(peer->uptime, timebuf, BGP_UPTIME_LEN,
|
||||||
use_json, json_peer);
|
use_json, json_peer);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Adding "pfxRcd" field to match with the corresponding
|
||||||
|
* CLI. "prefixReceivedCount" will be deprecated in
|
||||||
|
* future.
|
||||||
|
*/
|
||||||
json_object_int_add(json_peer, "prefixReceivedCount",
|
json_object_int_add(json_peer, "prefixReceivedCount",
|
||||||
peer->pcount[afi][pfx_rcd_safi]);
|
peer->pcount[afi][pfx_rcd_safi]);
|
||||||
|
json_object_int_add(json_peer, "pfxRcd",
|
||||||
|
peer->pcount[afi][pfx_rcd_safi]);
|
||||||
|
|
||||||
paf = peer_af_find(peer, afi, pfx_rcd_safi);
|
paf = peer_af_find(peer, afi, pfx_rcd_safi);
|
||||||
if (paf && PAF_SUBGRP(paf))
|
if (paf && PAF_SUBGRP(paf))
|
||||||
json_object_int_add(json_peer,
|
json_object_int_add(json_peer,
|
||||||
|
Loading…
Reference in New Issue
Block a user