diff options
| author | Russ White <russ@riw.us> | 2025-04-01 10:21:07 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-01 10:21:07 -0400 |
| commit | cd854223a42bd961533611853d082fd60cacc8a9 (patch) | |
| tree | 13135a64984002478290a859084c135a0c3314e3 /bgpd/bgp_packet.c | |
| parent | e55d6f149cf22426f6d13cc8783e6113f01c11e5 (diff) | |
| parent | b5e40d4554a68297b4f4d4187c01c06b796288a4 (diff) | |
Merge pull request #18518 from opensourcerouting/fix/backport_18498_10.0stable/10.0
bgpd: Retain the routes if we do a clear with N-bit set for Graceful-Restart (backport)
Diffstat (limited to 'bgpd/bgp_packet.c')
| -rw-r--r-- | bgpd/bgp_packet.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c index 24742b4c07..f372d419b6 100644 --- a/bgpd/bgp_packet.c +++ b/bgpd/bgp_packet.c @@ -1037,6 +1037,13 @@ static void bgp_notify_send_internal(struct peer_connection *connection, /* Add packet to peer's output queue */ stream_fifo_push(connection->obuf, s); + /* If Graceful-Restart N-bit (Notification) is exchanged, + * and it's not a Hard Reset, let's retain the routes. + */ + if (bgp_has_graceful_restart_notification(peer) && !hard_reset && + CHECK_FLAG(peer->sflags, PEER_STATUS_NSF_MODE)) + SET_FLAG(peer->sflags, PEER_STATUS_NSF_WAIT); + bgp_peer_gr_flags_update(peer); BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA(peer->bgp, peer->bgp->peer); |
