bgpd: add 'detail' option to bestpath-routes

Introduce 'detail' keyword for 'show bgp <afi> <safi> bestpath-routes'.

Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
This commit is contained in:
Trey Aspelund 2023-02-03 20:44:27 +00:00
parent 5a77b9d61d
commit aa9bf57eb8

View file

@ -14199,6 +14199,8 @@ show_adj_route(struct vty *vty, struct peer *peer, struct bgp_table *table,
header2, json, json_scode, header2, json, json_scode,
json_ocode, wide, detail); json_ocode, wide, detail);
const struct prefix *rn_p = bgp_dest_get_prefix(dest);
for (pi = bgp_dest_get_bgp_path_info(dest); pi; for (pi = bgp_dest_get_bgp_path_info(dest); pi;
pi = pi->next) { pi = pi->next) {
if (pi->peer != peer) if (pi->peer != peer)
@ -14207,10 +14209,23 @@ show_adj_route(struct vty *vty, struct peer *peer, struct bgp_table *table,
if (!CHECK_FLAG(pi->flags, BGP_PATH_SELECTED)) if (!CHECK_FLAG(pi->flags, BGP_PATH_SELECTED))
continue; continue;
route_vty_out_tmp(vty, dest, if (detail) {
bgp_dest_get_prefix(dest), if (use_json)
pi->attr, safi, use_json, json_net =
json_ar, wide); json_object_new_object();
bgp_show_path_info(
NULL /* prefix_rd */, dest, vty,
bgp, afi, safi, json_net,
BGP_PATH_SHOW_BESTPATH,
&display, RPKI_NOT_BEING_USED);
if (use_json)
json_object_object_addf(
json_ar, json_net,
"%pFX", rn_p);
} else
route_vty_out_tmp(
vty, dest, rn_p, pi->attr, safi,
use_json, json_ar, wide);
(*output_count)++; (*output_count)++;
} }
} }
@ -14401,7 +14416,7 @@ CPP_NOTICE("Drop `bgpOriginCodes` from JSON outputs")
DEFPY (show_ip_bgp_instance_neighbor_bestpath_route, DEFPY (show_ip_bgp_instance_neighbor_bestpath_route,
show_ip_bgp_instance_neighbor_bestpath_route_cmd, show_ip_bgp_instance_neighbor_bestpath_route_cmd,
"show [ip] bgp [<view|vrf> VIEWVRFNAME] ["BGP_AFI_CMD_STR" ["BGP_SAFI_WITH_LABEL_CMD_STR"]] neighbors <A.B.C.D|X:X::X:X|WORD> bestpath-routes [json$uj | wide$wide]", "show [ip] bgp [<view|vrf> VIEWVRFNAME] [" BGP_AFI_CMD_STR " [" BGP_SAFI_WITH_LABEL_CMD_STR "]] neighbors <A.B.C.D|X:X::X:X|WORD> bestpath-routes [detail$detail] [json$uj | wide$wide]",
SHOW_STR SHOW_STR
IP_STR IP_STR
BGP_STR BGP_STR
@ -14413,6 +14428,7 @@ DEFPY (show_ip_bgp_instance_neighbor_bestpath_route,
"Neighbor to display information about\n" "Neighbor to display information about\n"
"Neighbor on BGP configured interface\n" "Neighbor on BGP configured interface\n"
"Display the routes selected by best path\n" "Display the routes selected by best path\n"
"Display detailed version of routes\n"
JSON_STR JSON_STR
"Increase table width for longer prefixes\n") "Increase table width for longer prefixes\n")
{ {
@ -14426,6 +14442,9 @@ DEFPY (show_ip_bgp_instance_neighbor_bestpath_route,
int idx = 0; int idx = 0;
uint16_t show_flags = 0; uint16_t show_flags = 0;
if (detail)
SET_FLAG(show_flags, BGP_SHOW_OPT_ROUTES_DETAIL);
if (uj) if (uj)
SET_FLAG(show_flags, BGP_SHOW_OPT_JSON); SET_FLAG(show_flags, BGP_SHOW_OPT_JSON);