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); } }