From b1ff5529c7836ea9006bc89b58b70d300d039d69 Mon Sep 17 00:00:00 2001 From: Philippe Guibert Date: Fri, 24 Feb 2023 14:26:59 +0100 Subject: [PATCH] bgpd: debug trace retrieve real peer origin of path info The BGP path info debugging information should dump the real peer information for imported prefixes. Signed-off-by: Philippe Guibert --- bgpd/bgp_route.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index f9028422eb..1e9f9429c5 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -515,11 +515,19 @@ static uint32_t bgp_med_value(struct attr *attr, struct bgp *bgp) void bgp_path_info_path_with_addpath_rx_str(struct bgp_path_info *pi, char *buf, size_t buf_len) { - if (pi->addpath_rx_id) - snprintf(buf, buf_len, "path %s (addpath rxid %d)", - pi->peer->host, pi->addpath_rx_id); + struct peer *peer; + + if (pi->sub_type == BGP_ROUTE_IMPORTED && + bgp_get_imported_bpi_ultimate(pi)) + peer = bgp_get_imported_bpi_ultimate(pi)->peer; else - snprintf(buf, buf_len, "path %s", pi->peer->host); + peer = pi->peer; + + if (pi->addpath_rx_id) + snprintf(buf, buf_len, "path %s (addpath rxid %d)", peer->host, + pi->addpath_rx_id); + else + snprintf(buf, buf_len, "path %s", peer->host); }