mirror of
https://github.com/CumulusNetworks/ifupdown2.git
synced 2024-05-06 15:54:50 +00:00
addons: bridge: re-visit bridge port vid settings when vlan filtering is toggled
Ticket: CM-9059 Reviewed By: julien, nikhil Testing Done: Tested with test case in the bridge
This commit is contained in:
@@ -993,38 +993,47 @@ class bridge(moduleBase):
|
|||||||
bridgename = self._get_bridgename(ifaceobj)
|
bridgename = self._get_bridgename(ifaceobj)
|
||||||
add_port = True
|
add_port = True
|
||||||
if bridgename:
|
if bridgename:
|
||||||
if self.ipcmd.bridge_is_vlan_aware(bridgename):
|
if self.ipcmd.bridge_is_vlan_aware(bridgename):
|
||||||
if add_port:
|
if add_port:
|
||||||
# add ifaceobj to bridge
|
# add ifaceobj to bridge
|
||||||
self.ipcmd.link_set(ifaceobj.name, 'master', bridgename)
|
self.ipcmd.link_set(ifaceobj.name, 'master', bridgename)
|
||||||
bridge_vids = self._get_bridge_vids(bridgename,
|
bridge_vids = self._get_bridge_vids(bridgename,
|
||||||
ifaceobj_getfunc)
|
ifaceobj_getfunc)
|
||||||
bridge_pvid = self._get_bridge_pvid(bridgename,
|
bridge_pvid = self._get_bridge_pvid(bridgename,
|
||||||
ifaceobj_getfunc)
|
ifaceobj_getfunc)
|
||||||
self._apply_bridge_vlan_aware_port_settings_all(ifaceobj,
|
self._apply_bridge_vlan_aware_port_settings_all(ifaceobj,
|
||||||
bridge_vids,
|
bridge_vids,
|
||||||
bridge_pvid)
|
bridge_pvid)
|
||||||
self._apply_bridge_port_settings(ifaceobj, bridgename=bridgename)
|
self._apply_bridge_port_settings(ifaceobj, bridgename=bridgename)
|
||||||
ifaceobj.module_flags[self.name] = ifaceobj.module_flags.setdefault(self.name,0) | \
|
ifaceobj.module_flags[self.name] = ifaceobj.module_flags.setdefault(self.name,0) | \
|
||||||
bridgeFlags.PORT_PROCESSED
|
bridgeFlags.PORT_PROCESSED
|
||||||
return
|
return
|
||||||
if not self._is_bridge(ifaceobj):
|
if not self._is_bridge(ifaceobj):
|
||||||
return
|
return
|
||||||
err = False
|
err = False
|
||||||
errstr = ''
|
errstr = ''
|
||||||
running_ports = ''
|
running_ports = ''
|
||||||
|
bridge_just_created = False
|
||||||
try:
|
try:
|
||||||
if not self.PERFMODE:
|
if not self.PERFMODE:
|
||||||
if not self.ipcmd.link_exists(ifaceobj.name):
|
if not self.ipcmd.link_exists(ifaceobj.name):
|
||||||
self.ipcmd.link_create(ifaceobj.name, 'bridge')
|
self.ipcmd.link_create(ifaceobj.name, 'bridge')
|
||||||
|
bridge_just_created = True
|
||||||
else:
|
else:
|
||||||
self.ipcmd.link_create(ifaceobj.name, 'bridge')
|
self.ipcmd.link_create(ifaceobj.name, 'bridge')
|
||||||
|
bridge_just_created = True
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
raise Exception(str(e))
|
raise Exception(str(e))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if ifaceobj.get_attr_value_first('bridge-vlan-aware') == 'yes':
|
if ifaceobj.get_attr_value_first('bridge-vlan-aware') == 'yes':
|
||||||
self.ipcmd.link_set(ifaceobj.name, 'vlan_filtering', '1', False, "bridge")
|
if (bridge_just_created or
|
||||||
|
not self.ipcmd.bridge_is_vlan_aware(ifaceobj.name)):
|
||||||
|
self.ipcmd.link_set(ifaceobj.name, 'vlan_filtering', '1',
|
||||||
|
False, "bridge")
|
||||||
|
if not bridge_just_created:
|
||||||
|
ifaceobj.module_flags[self.name] = ifaceobj.module_flags.setdefault(self.name,0) | bridgeFlags.PORT_PROCESSED_OVERRIDE
|
||||||
|
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
raise Exception(str(e))
|
raise Exception(str(e))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user