mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-26 04:54:44 +00:00
bgpd: Clear graceful-restart per AFI/SAFI capability flags when receiving unset
We flushed the main capability received flag, but missed flushing per AFI/SAFI. Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
This commit is contained in:
parent
eceb1cab6d
commit
f793136d18
@ -2957,6 +2957,8 @@ static void bgp_dynamic_capability_graceful_restart(uint8_t *pnt, int action,
|
|||||||
uint8_t *data = pnt + 3;
|
uint8_t *data = pnt + 3;
|
||||||
uint8_t *end = pnt + hdr->length;
|
uint8_t *end = pnt + hdr->length;
|
||||||
size_t len = end - data;
|
size_t len = end - data;
|
||||||
|
afi_t afi;
|
||||||
|
safi_t safi;
|
||||||
|
|
||||||
if (action == CAPABILITY_ACTION_SET) {
|
if (action == CAPABILITY_ACTION_SET) {
|
||||||
if (len < sizeof(gr_restart_flag_time)) {
|
if (len < sizeof(gr_restart_flag_time)) {
|
||||||
@ -3031,6 +3033,15 @@ static void bgp_dynamic_capability_graceful_restart(uint8_t *pnt, int action,
|
|||||||
data += GRACEFUL_RESTART_CAPABILITY_PER_AFI_SAFI_SIZE;
|
data += GRACEFUL_RESTART_CAPABILITY_PER_AFI_SAFI_SIZE;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
FOREACH_AFI_SAFI (afi, safi) {
|
||||||
|
UNSET_FLAG(peer->af_cap[afi][safi],
|
||||||
|
PEER_CAP_RESTART_AF_RCV);
|
||||||
|
UNSET_FLAG(peer->af_cap[afi][safi],
|
||||||
|
PEER_CAP_RESTART_AF_PRESERVE_RCV);
|
||||||
|
}
|
||||||
|
|
||||||
|
UNSET_FLAG(peer->cap, PEER_CAP_GRACEFUL_RESTART_R_BIT_RCV);
|
||||||
|
UNSET_FLAG(peer->cap, PEER_CAP_GRACEFUL_RESTART_N_BIT_RCV);
|
||||||
UNSET_FLAG(peer->cap, PEER_CAP_RESTART_RCV);
|
UNSET_FLAG(peer->cap, PEER_CAP_RESTART_RCV);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user