From 28168b1bf6f13a6ffe19934299518c07d8557770 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Tue, 3 May 2022 15:24:28 -0400 Subject: [PATCH] bgpd: peer groups should not toggle interface based nht tracking Peer groups when various forms of `bgp capability extended-nexthop` is entered on them are toggling the nexthop tracking status of peers in their peer group. This is ok when the peer is not interface based. But it is not ok when the peer is interface based as that it will turn off the ability of FRR to properly work with that peer type. Signed-off-by: Donald Sharp --- bgpd/bgpd.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index 38fc51f507..0b63dbe74b 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -4487,7 +4487,9 @@ static int peer_flag_modify(struct peer *peer, uint32_t flag, int set) if (set) { bgp_zebra_initiate_radv(peer->bgp, peer); } else if (peer_group_active(peer)) { - if (!CHECK_FLAG(peer->group->conf->flags, flag)) + if (!CHECK_FLAG(peer->group->conf->flags, + flag) && + !peer->conf_if) bgp_zebra_terminate_radv(peer->bgp, peer); } else @@ -4525,7 +4527,7 @@ static int peer_flag_modify(struct peer *peer, uint32_t flag, int set) /* Update flag on peer-group member. */ COND_FLAG(member->flags, flag, set != member_invert); - if (flag == PEER_FLAG_CAPABILITY_ENHE) + if (flag == PEER_FLAG_CAPABILITY_ENHE && !member->conf_if) set ? bgp_zebra_initiate_radv(member->bgp, member) : bgp_zebra_terminate_radv(member->bgp, member); -- 2.39.5