]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Refuse to let interfaced peering to change capability extended-nexthop
authorDonald Sharp <sharpd@nvidia.com>
Tue, 3 May 2022 19:23:14 +0000 (15:23 -0400)
committerDonald Sharp <sharpd@nvidia.com>
Wed, 4 May 2022 11:51:20 +0000 (07:51 -0400)
Do not interface based peers change anything about when a
[no] neighbor <interface> capability extended-nexthop
is entered.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
bgpd/bgp_vty.c

index 5501ec46b77c58928b529f55cee804a5839c4153..65a053990ef981f0fdcfd707693361f69d74ef8e 100644 (file)
@@ -5273,6 +5273,12 @@ DEFUN (neighbor_capability_enhe,
        "Advertise extended next-hop capability to the peer\n")
 {
        int idx_peer = 1;
+       struct peer *peer;
+
+       peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg);
+       if (peer && peer->conf_if)
+               return CMD_SUCCESS;
+
        return peer_flag_set_vty(vty, argv[idx_peer]->arg,
                                 PEER_FLAG_CAPABILITY_ENHE);
 }
@@ -5287,6 +5293,16 @@ DEFUN (no_neighbor_capability_enhe,
        "Advertise extended next-hop capability to the peer\n")
 {
        int idx_peer = 2;
+       struct peer *peer;
+
+       peer = peer_and_group_lookup_vty(vty, argv[idx_peer]->arg);
+       if (peer && peer->conf_if) {
+               vty_out(vty,
+                       "Peer %s cannot have capability extended-nexthop turned off\n",
+                       argv[idx_peer]->arg);
+               return CMD_WARNING_CONFIG_FAILED;
+       }
+
        return peer_flag_unset_vty(vty, argv[idx_peer]->arg,
                                   PEER_FLAG_CAPABILITY_ENHE);
 }