From 048586179fe635ee01af371411b81c49238e3581 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Wed, 28 Nov 2018 18:46:36 -0500 Subject: [PATCH] bgpd: interface based peers should automatically override it's peer group 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 Signed-off-by: Donatas Abraitis --- bgpd/bgp_vty.c | 2 +- bgpd/bgpd.c | 19 +++++++++++-------- tests/bgpd/test_peer_attr.py | 2 +- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index bdac903b99..ff855b5cea 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -2872,7 +2872,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) { diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index 94aadda3d6..fd644e5fb0 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -6954,14 +6954,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 */ diff --git a/tests/bgpd/test_peer_attr.py b/tests/bgpd/test_peer_attr.py index 7a4dd2b04a..1ab1e46c2e 100644 --- a/tests/bgpd/test_peer_attr.py +++ b/tests/bgpd/test_peer_attr.py @@ -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') -- 2.39.5