]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: Allow dynamically disable graceful-restart/long-lived graceful-restart 15521/head
authorDonatas Abraitis <donatas@opensourcerouting.org>
Sun, 10 Mar 2024 16:25:30 +0000 (18:25 +0200)
committerDonatas Abraitis <donatas@opensourcerouting.org>
Tue, 12 Mar 2024 07:47:46 +0000 (09:47 +0200)
If we enter `bgp graceful-restart-disable`, make sure we disable the capabilities.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
(cherry picked from commit 78757362f23f947527fe60327cf813b187fe0bdb)

bgpd/bgp_packet.c
bgpd/bgp_vty.c

index 9f3a0ef375ba7be3199c11e566f4b4f20c66a5d0..7d6a6b55e8d8aefd751e8b05cb5d4d199955388d 100644 (file)
@@ -1291,10 +1291,6 @@ void bgp_capability_send(struct peer *peer, afi_t afi, safi_t safi,
                                   iana_safi2str(pkt_safi));
                break;
        case CAPABILITY_CODE_RESTART:
-               if (!CHECK_FLAG(peer->flags, PEER_FLAG_GRACEFUL_RESTART) &&
-                   !CHECK_FLAG(peer->flags, PEER_FLAG_GRACEFUL_RESTART_HELPER))
-                       return;
-
                stream_putc(s, action);
                stream_putc(s, CAPABILITY_CODE_RESTART);
                cap_len = stream_get_endp(s);
@@ -1347,9 +1343,6 @@ void bgp_capability_send(struct peer *peer, afi_t afi, safi_t safi,
                          action == CAPABILITY_ACTION_SET);
                break;
        case CAPABILITY_CODE_LLGR:
-               if (!CHECK_FLAG(peer->cap, PEER_CAP_RESTART_ADV))
-                       return;
-
                stream_putc(s, action);
                stream_putc(s, CAPABILITY_CODE_LLGR);
                cap_len = stream_get_endp(s);
index 31524e2221b95b233bb106b957a0592458a6ba03..b322e4ddde529be8241d245e9cc21e2a52662b64 100644 (file)
@@ -3260,6 +3260,8 @@ DEFUN (bgp_graceful_restart_disable,
        GR_DISABLE)
 {
        int ret = BGP_GR_FAILURE;
+       struct listnode *node, *nnode;
+       struct peer *peer;
 
        if (BGP_DEBUG(graceful_restart, GRACEFUL_RESTART))
                zlog_debug(
@@ -3278,6 +3280,15 @@ DEFUN (bgp_graceful_restart_disable,
        vty_out(vty,
                "Graceful restart configuration changed, reset all peers to take effect\n");
 
+       for (ALL_LIST_ELEMENTS(bgp->peer, node, nnode, peer)) {
+               bgp_capability_send(peer, AFI_IP, SAFI_UNICAST,
+                                   CAPABILITY_CODE_RESTART,
+                                   CAPABILITY_ACTION_UNSET);
+               bgp_capability_send(peer, AFI_IP, SAFI_UNICAST,
+                                   CAPABILITY_CODE_LLGR,
+                                   CAPABILITY_ACTION_UNSET);
+       }
+
        return bgp_vty_return(vty, ret);
 }