]> git.proxmox.com Git - mirror_frr.git/commitdiff
bgpd: interface based peers should automatically override it's peer group
authorDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 28 Nov 2018 23:46:36 +0000 (18:46 -0500)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Sat, 26 Jan 2019 01:40:05 +0000 (20:40 -0500)
When a interface based peer is setup and if it is part of a peer
group we should ignore this and just use the PEER_FLAG_CAPABILITY_ENHE
no matter what.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
bgpd/bgp_vty.c
bgpd/bgpd.c
tests/bgpd/test_peer_attr.py

index e8610b0168b09265a74c7c08ed0dacbc300c4a4e..f887ef7665d84d7b1b034dd7026c780d10151280 100644 (file)
@@ -2974,7 +2974,7 @@ static int peer_conf_interface_get(struct vty *vty, const char *conf_if,
        if (!CHECK_FLAG(peer->flags_invert, PEER_FLAG_CAPABILITY_ENHE)) {
                SET_FLAG(peer->flags, PEER_FLAG_CAPABILITY_ENHE);
                SET_FLAG(peer->flags_invert, PEER_FLAG_CAPABILITY_ENHE);
-               UNSET_FLAG(peer->flags_override, PEER_FLAG_CAPABILITY_ENHE);
+               SET_FLAG(peer->flags_override, PEER_FLAG_CAPABILITY_ENHE);
        }
 
        if (peer_group_name) {
index 0b6e05fff60709379362c9a936da892ad018eab4..0fe1f8ed514e05fa1ac5259aff1ea7c5f12d0106 100644 (file)
@@ -7020,14 +7020,17 @@ static void bgp_config_write_peer_global(struct vty *vty, struct bgp *bgp,
 
        /* capability extended-nexthop */
        if (peergroup_flag_check(peer, PEER_FLAG_CAPABILITY_ENHE)) {
-               if (CHECK_FLAG(peer->flags_invert, PEER_FLAG_CAPABILITY_ENHE))
-                       vty_out(vty,
-                               " no neighbor %s capability extended-nexthop\n",
-                               addr);
-               else
-                       vty_out(vty,
-                               " neighbor %s capability extended-nexthop\n",
-                               addr);
+               if (!peer->conf_if) {
+                       if (CHECK_FLAG(peer->flags_invert,
+                                      PEER_FLAG_CAPABILITY_ENHE))
+                               vty_out(vty,
+                                       " no neighbor %s capability extended-nexthop\n",
+                                       addr);
+                       else
+                               vty_out(vty,
+                                       " neighbor %s capability extended-nexthop\n",
+                                       addr);
+               }
        }
 
        /* dont-capability-negotiation */
index bafd131b78b8cb844a302feb897bca8bec917eb6..44068605eee8a0a178cf799084340f699a965eb2 100644 (file)
@@ -9,7 +9,7 @@ class TestFlag(frrtest.TestMultiOut):
 TestFlag.okfail('peer\\advertisement-interval')
 TestFlag.okfail('peer\\capability dynamic')
 TestFlag.okfail('peer\\capability extended-nexthop')
-TestFlag.okfail('peer\\capability extended-nexthop')
+#TestFlag.okfail('peer\\capability extended-nexthop')
 TestFlag.okfail('peer\\description')
 TestFlag.okfail('peer\\disable-connected-check')
 TestFlag.okfail('peer\\dont-capability-negotiate')