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 <donatas@opensourcerouting.org>
This commit is contained in:
Donatas Abraitis 2023-09-22 20:37:56 +03:00
parent f793136d18
commit 61bd60b984

View File

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