From aa9bf57eb8b7bd46e7bad4ea40aa55b393ce695e Mon Sep 17 00:00:00 2001 From: Trey Aspelund Date: Fri, 3 Feb 2023 20:44:27 +0000 Subject: [PATCH] bgpd: add 'detail' option to bestpath-routes Introduce 'detail' keyword for 'show bgp bestpath-routes'. Signed-off-by: Trey Aspelund --- bgpd/bgp_route.c | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index 24f5725fe4..a86a524354 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -14199,6 +14199,8 @@ show_adj_route(struct vty *vty, struct peer *peer, struct bgp_table *table, header2, json, json_scode, json_ocode, wide, detail); + const struct prefix *rn_p = bgp_dest_get_prefix(dest); + for (pi = bgp_dest_get_bgp_path_info(dest); pi; pi = pi->next) { 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)) continue; - route_vty_out_tmp(vty, dest, - bgp_dest_get_prefix(dest), - pi->attr, safi, use_json, - json_ar, wide); + if (detail) { + if (use_json) + json_net = + 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)++; } } @@ -14401,7 +14416,7 @@ CPP_NOTICE("Drop `bgpOriginCodes` from JSON outputs") DEFPY (show_ip_bgp_instance_neighbor_bestpath_route, show_ip_bgp_instance_neighbor_bestpath_route_cmd, - "show [ip] bgp [ VIEWVRFNAME] ["BGP_AFI_CMD_STR" ["BGP_SAFI_WITH_LABEL_CMD_STR"]] neighbors bestpath-routes [json$uj | wide$wide]", + "show [ip] bgp [ VIEWVRFNAME] [" BGP_AFI_CMD_STR " [" BGP_SAFI_WITH_LABEL_CMD_STR "]] neighbors bestpath-routes [detail$detail] [json$uj | wide$wide]", SHOW_STR IP_STR BGP_STR @@ -14413,6 +14428,7 @@ DEFPY (show_ip_bgp_instance_neighbor_bestpath_route, "Neighbor to display information about\n" "Neighbor on BGP configured interface\n" "Display the routes selected by best path\n" + "Display detailed version of routes\n" JSON_STR "Increase table width for longer prefixes\n") { @@ -14426,6 +14442,9 @@ DEFPY (show_ip_bgp_instance_neighbor_bestpath_route, int idx = 0; uint16_t show_flags = 0; + if (detail) + SET_FLAG(show_flags, BGP_SHOW_OPT_ROUTES_DETAIL); + if (uj) SET_FLAG(show_flags, BGP_SHOW_OPT_JSON);