From 848e8cf6c69a26e2ad5b3a8d4f08b5ddda78684c Mon Sep 17 00:00:00 2001 From: Donatas Abraitis Date: Wed, 19 Jan 2022 19:02:01 +0200 Subject: [PATCH 1/2] bgpd: Show Graceful Restart seconds remaining per prefix ``` exit1-debian-11# sh ip bgp 10.10.10.10/32 BGP routing table entry for 10.10.10.10/32, version 14 Paths: (1 available, best #1, table default) Not advertised to any peer 65000, (stale) 192.168.0.2 from 192.168.0.2 (0.0.0.0) Origin incomplete, metric 0, valid, external, best (First path received) Last update: Wed Jan 19 17:13:51 2022 Time until Graceful Restart stale route deleted: 117 ``` Signed-off-by: Donatas Abraitis --- bgpd/bgp_route.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index 8569cbc102..e10e7dcd62 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -10725,6 +10725,21 @@ void route_vty_out_detail(struct vty *vty, struct bgp *bgp, struct bgp_dest *bn, str, label2vni(&attr->label)); } + if (path->peer->t_gr_restart && + CHECK_FLAG(path->flags, BGP_PATH_STALE)) { + unsigned long gr_remaining = + thread_timer_remain_second(path->peer->t_gr_restart); + + if (json_paths) { + json_object_int_add(json_path, + "gracefulRestartSecondsRemaining", + gr_remaining); + } else + vty_out(vty, + " Time until Graceful Restart stale route deleted: %lu\n", + gr_remaining); + } + 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( From d92646a4b795f843e84e790ee7533d11d2cc31cb Mon Sep 17 00:00:00 2001 From: Donatas Abraitis Date: Wed, 19 Jan 2022 19:03:42 +0200 Subject: [PATCH 2/2] bgpd: Add an empty line after new variable assignment Signed-off-by: Donatas Abraitis --- bgpd/bgp_route.c | 1 + 1 file changed, 1 insertion(+) diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index e10e7dcd62..6a546cdbe1 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -10744,6 +10744,7 @@ void route_vty_out_detail(struct vty *vty, struct bgp *bgp, struct bgp_dest *bn, 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);