From 6a1110e3ed7c69241b6eb02ec566415c28aba4f8 Mon Sep 17 00:00:00 2001 From: Julien Fortin Date: Mon, 14 Sep 2020 13:28:07 +0200 Subject: [PATCH] addons: bridge: detect VXLAN mis-config VNI "bridge-learning=on" and print log message Signed-off-by: Julien Fortin --- ifupdown2/addons/bridge.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/ifupdown2/addons/bridge.py b/ifupdown2/addons/bridge.py index 045b119..998cbbb 100644 --- a/ifupdown2/addons/bridge.py +++ b/ifupdown2/addons/bridge.py @@ -869,7 +869,20 @@ class bridge(Bridge, moduleBase): retval = False c1 = self.syntax_check_vxlan_in_vlan_aware_br(ifaceobj, ifaceobj_getfunc) c2 = self.syntax_check_bridge_allow_multiple_vlans(ifaceobj, ifaceobj_getfunc) - return retval and c1 #and c2 + c3 = self.syntax_check_learning_l2_vni_evpn(ifaceobj) + return retval and c1 and c3 #and c2 + + def syntax_check_learning_l2_vni_evpn(self, ifaceobj): + result = True + if ifaceobj.link_privflags & ifaceLinkPrivFlags.BRIDGE_PORT and ifaceobj.link_kind & ifaceLinkKind.VXLAN: + if utils.get_boolean_from_string(ifaceobj.get_attr_value_first("bridge-learning")): + self.logger.warning( + "%s: possible mis-configuration detected: l2-vni configured with bridge-learning ON " + "while EVPN is also configured - these two parameters conflict with each other." + % ifaceobj.name + ) + result = False + return result def syntax_check_bridge_allow_multiple_vlans(self, ifaceobj, ifaceobj_getfunc): result = True @@ -1911,6 +1924,9 @@ class bridge(Bridge, moduleBase): # bridge doesn't exist return + # check for bridge-learning on l2 vni in evpn setup + self.syntax_check_learning_l2_vni_evpn(ifaceobj) + vlan_aware_bridge = self.cache.bridge_is_vlan_aware(bridge_name) if vlan_aware_bridge: self.up_bridge_port_vlan_aware_bridge(ifaceobj,