diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2018-11-28 18:46:36 -0500 |
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2019-01-25 20:40:05 -0500 |
| commit | dc2f50f378c0dc77ce3a8cf5c7abc59e509b455d (patch) | |
| tree | 38f360e8684ceb3e95aa3f40709776770ea2171d | |
| parent | b77004d63213111525727ec6974899b441b6aca9 (diff) | |
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 <sharpd@cumulusnetworks.com>
| -rw-r--r-- | bgpd/bgp_vty.c | 2 | ||||
| -rw-r--r-- | bgpd/bgpd.c | 19 | ||||
| -rw-r--r-- | 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 e8610b0168..f887ef7665 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -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) { diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index 0b6e05fff6..0fe1f8ed51 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -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 */ diff --git a/tests/bgpd/test_peer_attr.py b/tests/bgpd/test_peer_attr.py index bafd131b78..44068605ee 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') |
