summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--zebra/if_netlink.c3
-rw-r--r--zebra/zebra_l2.c2
-rw-r--r--zebra/zebra_l2.h1
3 files changed, 6 insertions, 0 deletions
diff --git a/zebra/if_netlink.c b/zebra/if_netlink.c
index 658b862e62..a78b7607a0 100644
--- a/zebra/if_netlink.c
+++ b/zebra/if_netlink.c
@@ -1756,6 +1756,9 @@ int netlink_link_change(struct nlmsghdr *h, ns_id_t ns_id, int startup)
"Intf %s(%u) has come UP",
name, ifp->ifindex);
if_up(ifp);
+ if (IS_ZEBRA_IF_BRIDGE(ifp))
+ chgflags =
+ ZEBRA_BRIDGE_MASTER_UP;
} else {
if (IS_ZEBRA_DEBUG_KERNEL)
zlog_debug(
diff --git a/zebra/zebra_l2.c b/zebra/zebra_l2.c
index ae630314be..5a02149611 100644
--- a/zebra/zebra_l2.c
+++ b/zebra/zebra_l2.c
@@ -434,6 +434,8 @@ void zebra_l2if_update_bridge_slave(struct interface *ifp,
if (ZEBRA_BRIDGE_MASTER_MAC_CHANGE)
zebra_vxlan_if_update(ifp,
ZEBRA_VXLIF_MASTER_MAC_CHANGE);
+ if (ZEBRA_BRIDGE_MASTER_UP)
+ zebra_vxlan_if_update(ifp, ZEBRA_VXLIF_MASTER_CHANGE);
}
old_bridge_ifindex = zif->brslave_info.bridge_ifindex;
old_ns_id = zif->brslave_info.ns_id;
diff --git a/zebra/zebra_l2.h b/zebra/zebra_l2.h
index de833ebdbc..98744f3c1f 100644
--- a/zebra/zebra_l2.h
+++ b/zebra/zebra_l2.h
@@ -35,6 +35,7 @@ extern "C" {
#define ZEBRA_BRIDGE_NO_ACTION (0)
#define ZEBRA_BRIDGE_MASTER_MAC_CHANGE (1 << 1)
+#define ZEBRA_BRIDGE_MASTER_UP (1 << 2)
/* zebra L2 interface information - bridge slave (linkage to bridge) */
struct zebra_l2info_brslave {