From 61bd60b984056796e9910deadbf7374bfedf075e Mon Sep 17 00:00:00 2001 From: Donatas Abraitis Date: Fri, 22 Sep 2023 20:37:56 +0300 Subject: [PATCH] bgpd: Flush per AFI/SAFI capabilities flags, stale_time for LLGR cap Clear to defaults if receiving dynamic capability with UNSET action. Signed-off-by: Donatas Abraitis --- bgpd/bgp_packet.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c index 1c2f8eb2da..abbc298e47 100644 --- a/bgpd/bgp_packet.c +++ b/bgpd/bgp_packet.c @@ -2878,6 +2878,8 @@ static void bgp_dynamic_capability_llgr(uint8_t *pnt, int action, uint8_t *data = pnt + 3; uint8_t *end = data + hdr->length; size_t len = end - data; + afi_t afi; + safi_t safi; if (action == CAPABILITY_ACTION_SET) { if (len < BGP_CAP_LLGR_MIN_PACKET_LEN) { @@ -2944,6 +2946,15 @@ static void bgp_dynamic_capability_llgr(uint8_t *pnt, int action, data += BGP_CAP_LLGR_MIN_PACKET_LEN; } } else { + FOREACH_AFI_SAFI (afi, safi) { + UNSET_FLAG(peer->af_cap[afi][safi], + PEER_CAP_LLGR_AF_RCV); + + peer->llgr[afi][safi].flags = 0; + peer->llgr[afi][safi].stale_time = + BGP_DEFAULT_LLGR_STALE_TIME; + } + UNSET_FLAG(peer->cap, PEER_CAP_LLGR_RCV); } }