Merge pull request #6589 from NaveenThanikachalam/gr_fixes

bgpd: GR fixes
This commit is contained in:
Donatas Abraitis 2020-09-04 18:39:26 +03:00 committed by GitHub
commit 08194f561e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 0 deletions

View File

@ -1872,6 +1872,30 @@ static int bgp_establish(struct peer *peer)
}
}
if (!CHECK_FLAG(peer->cap, PEER_CAP_RESTART_RCV)) {
if ((bgp_peer_gr_mode_get(peer) == PEER_GR)
|| ((bgp_peer_gr_mode_get(peer) == PEER_GLOBAL_INHERIT)
&& (bgp_global_gr_mode_get(peer->bgp) == GLOBAL_GR))) {
FOREACH_AFI_SAFI (afi, safi)
/* Send route processing complete
message to RIB */
bgp_zebra_update(
afi, safi, peer->bgp->vrf_id,
ZEBRA_CLIENT_ROUTE_UPDATE_COMPLETE);
}
} else {
/* Peer sends R-bit. In this case, we need to send
* ZEBRA_CLIENT_ROUTE_UPDATE_COMPLETE to Zebra. */
if (CHECK_FLAG(peer->cap, PEER_CAP_RESTART_BIT_RCV)) {
FOREACH_AFI_SAFI (afi, safi)
/* Send route processing complete
message to RIB */
bgp_zebra_update(
afi, safi, peer->bgp->vrf_id,
ZEBRA_CLIENT_ROUTE_UPDATE_COMPLETE);
}
}
peer->nsf_af_count = nsf_af_count;
if (nsf_af_count)

View File

@ -1102,6 +1102,9 @@ int bgp_open_option_parse(struct peer *peer, uint8_t length, int *mp_capability)
zlog_debug("%s rcv OPEN w/ OPTION parameter len: %u",
peer->host, length);
/* Unset any previously received GR capability. */
UNSET_FLAG(peer->cap, PEER_CAP_RESTART_RCV);
while (stream_get_getp(s) < end) {
uint8_t opt_type;
uint8_t opt_length;