mirror of
https://github.com/CumulusNetworks/ifupdown2.git
synced 2024-05-06 15:54:50 +00:00
addons: bridge: detect and warn when arp suppression is enabled and there is no vlan configured
Signed-off-by: Julien Fortin <jfortin@nvidia.com>
This commit is contained in:
committed by
Julien Fortin
parent
6a1110e3ed
commit
a037ffc5f0
@ -870,7 +870,37 @@ class bridge(Bridge, moduleBase):
|
|||||||
c1 = self.syntax_check_vxlan_in_vlan_aware_br(ifaceobj, ifaceobj_getfunc)
|
c1 = self.syntax_check_vxlan_in_vlan_aware_br(ifaceobj, ifaceobj_getfunc)
|
||||||
c2 = self.syntax_check_bridge_allow_multiple_vlans(ifaceobj, ifaceobj_getfunc)
|
c2 = self.syntax_check_bridge_allow_multiple_vlans(ifaceobj, ifaceobj_getfunc)
|
||||||
c3 = self.syntax_check_learning_l2_vni_evpn(ifaceobj)
|
c3 = self.syntax_check_learning_l2_vni_evpn(ifaceobj)
|
||||||
return retval and c1 and c3 #and c2
|
c4 = self.syntax_check_bridge_arp_vni_vlan(ifaceobj, ifaceobj_getfunc)
|
||||||
|
return retval and c1 and c3 and c4 #and c2
|
||||||
|
|
||||||
|
def syntax_check_bridge_arp_vni_vlan(self, ifaceobj, ifaceobj_getfunc):
|
||||||
|
"""
|
||||||
|
Detect and warn when arp suppression is enabled and there is no vlan configured
|
||||||
|
|
||||||
|
:param ifaceobj:
|
||||||
|
:param ifaceobj_getfunc:
|
||||||
|
:return boolean:
|
||||||
|
"""
|
||||||
|
if ifaceobj.link_kind & ifaceLinkKind.VXLAN \
|
||||||
|
and ifaceobj.link_privflags & ifaceLinkPrivFlags.BRIDGE_PORT \
|
||||||
|
and utils.get_boolean_from_string(ifaceobj.get_attr_value_first("bridge-arp-nd-suppress")):
|
||||||
|
|
||||||
|
bridge_access = ifaceobj.get_attr_value_first("bridge-access")
|
||||||
|
|
||||||
|
for obj in ifaceobj_getfunc(ifaceobj.upperifaces[0]) or []:
|
||||||
|
for upper_ifname in obj.upperifaces or []:
|
||||||
|
for upper_obj in ifaceobj_getfunc(upper_ifname) or []:
|
||||||
|
if upper_obj.link_kind & ifaceLinkKind.VLAN and upper_obj.get_attr_value_first("vlan-id") == bridge_access:
|
||||||
|
return True
|
||||||
|
|
||||||
|
self.logger.warning(
|
||||||
|
"ARP suppression configured on %s and associated %s not configured. "
|
||||||
|
"This may result in unexpected behavior"
|
||||||
|
% (ifaceobj.name, bridge_access)
|
||||||
|
)
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
def syntax_check_learning_l2_vni_evpn(self, ifaceobj):
|
def syntax_check_learning_l2_vni_evpn(self, ifaceobj):
|
||||||
result = True
|
result = True
|
||||||
@ -1927,6 +1957,9 @@ class bridge(Bridge, moduleBase):
|
|||||||
# check for bridge-learning on l2 vni in evpn setup
|
# check for bridge-learning on l2 vni in evpn setup
|
||||||
self.syntax_check_learning_l2_vni_evpn(ifaceobj)
|
self.syntax_check_learning_l2_vni_evpn(ifaceobj)
|
||||||
|
|
||||||
|
# detect and warn when arp suppression is enabled and there is no vlan configured
|
||||||
|
self.syntax_check_bridge_arp_vni_vlan(ifaceobj, ifaceobj_getfunc)
|
||||||
|
|
||||||
vlan_aware_bridge = self.cache.bridge_is_vlan_aware(bridge_name)
|
vlan_aware_bridge = self.cache.bridge_is_vlan_aware(bridge_name)
|
||||||
if vlan_aware_bridge:
|
if vlan_aware_bridge:
|
||||||
self.up_bridge_port_vlan_aware_bridge(ifaceobj,
|
self.up_bridge_port_vlan_aware_bridge(ifaceobj,
|
||||||
|
Reference in New Issue
Block a user