From 4b82b9548879ad3b888fd7d8b9cea99a55260c55 Mon Sep 17 00:00:00 2001 From: Stephen Worley Date: Tue, 15 Feb 2022 12:36:18 -0500 Subject: [PATCH] zebra: evpn-mh bonds protodown check for set When we are processing a bond member's protodown we get from the dataplane, check to make sure we haven't already queued up a set. If we have, it's likely this is just a notification we get from the kernel after we set protodown and before we have processed the result in our dplane pthread. This change is needed now that we set protodown via the dplane pthread. Signed-off-by: Stephen Worley --- zebra/if_netlink.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/zebra/if_netlink.c b/zebra/if_netlink.c index 3591106fed..47e0140256 100644 --- a/zebra/if_netlink.c +++ b/zebra/if_netlink.c @@ -872,6 +872,13 @@ static void netlink_proc_dplane_if_protodown(struct zebra_if *zif, zif->flags &= ~ZIF_FLAG_PROTODOWN; if (zebra_evpn_is_es_bond_member(zif->ifp)) { + /* Check it's not already being sent to the dplane first */ + if (protodown && (zif->flags & ZIF_FLAG_SET_PROTODOWN)) + return; + + if (!protodown && (zif->flags & ZIF_FLAG_UNSET_PROTODOWN)) + return; + if (IS_ZEBRA_DEBUG_EVPN_MH_ES || IS_ZEBRA_DEBUG_KERNEL) zlog_debug( "bond mbr %s re-instate protdown %s in the dplane",