From 48ebba0476ee79b7e722f00e7a0016fa5e26dc78 Mon Sep 17 00:00:00 2001 From: Donatas Abraitis Date: Thu, 13 Jan 2022 10:39:15 +0200 Subject: [PATCH] bgpd: Show Long-lived Graceful Restart timer remaining per prefix ``` exit1-debian-11# sh ip bgp 100.100.100.100/32 BGP routing table entry for 100.100.100.100/32, version 7 Paths: (2 available, best #2, table default) Advertised to non peer-group peers: home-spine1.donatas.net(192.168.0.2) 65002, (stale) 192.168.10.17 from donatas-pc(192.168.10.17) (0.0.0.0) Origin incomplete, valid, external Community: llgr-stale Last update: Thu Jan 13 08:58:08 2022 Time until Long-lived stale route deleted: 18 65001 192.168.0.2 from home-spine1.donatas.net(192.168.0.2) (2.2.2.2) Origin incomplete, metric 0, valid, external, best (First path received) Last update: Thu Jan 13 08:57:56 2022 ``` ``` ~# vtysh -c 'show ip bgp 100.100.100.100/32 json' | jq '."paths"[] | ."llgrSecondsRemaining"' 17 ``` Signed-off-by: Donatas Abraitis --- bgpd/bgp_route.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index d25f4d4b71..689e7a7fa3 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -10725,6 +10725,19 @@ void route_vty_out_detail(struct vty *vty, struct bgp *bgp, struct bgp_dest *bn, str, label2vni(&attr->label)); } + if (path->peer->t_llgr_stale[afi][safi] && attr->community && + community_include(attr->community, COMMUNITY_LLGR_STALE)) { + unsigned long llgr_remaining = thread_timer_remain_second( + path->peer->t_llgr_stale[afi][safi]); + if (json_paths) { + json_object_int_add(json_path, "llgrSecondsRemaining", + llgr_remaining); + } else + vty_out(vty, + " Time until Long-lived stale route deleted: %lu\n", + llgr_remaining); + } + /* Output some debug about internal state of the dest flags */ if (json_paths) { if (CHECK_FLAG(bn->flags, BGP_NODE_PROCESS_SCHEDULED)) -- 2.39.5