1
0
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:
Roopa Prabhu
2016-04-13 23:56:49 -07:00
parent 39ee399b45
commit 96a71b65cb

View File

@@ -993,38 +993,47 @@ class bridge(moduleBase):
bridgename = self._get_bridgename(ifaceobj)
add_port = True
if bridgename:
if self.ipcmd.bridge_is_vlan_aware(bridgename):
if add_port:
# add ifaceobj to bridge
self.ipcmd.link_set(ifaceobj.name, 'master', bridgename)
bridge_vids = self._get_bridge_vids(bridgename,
ifaceobj_getfunc)
bridge_pvid = self._get_bridge_pvid(bridgename,
ifaceobj_getfunc)
self._apply_bridge_vlan_aware_port_settings_all(ifaceobj,
bridge_vids,
bridge_pvid)
self._apply_bridge_port_settings(ifaceobj, bridgename=bridgename)
ifaceobj.module_flags[self.name] = ifaceobj.module_flags.setdefault(self.name,0) | \
if self.ipcmd.bridge_is_vlan_aware(bridgename):
if add_port:
# add ifaceobj to bridge
self.ipcmd.link_set(ifaceobj.name, 'master', bridgename)
bridge_vids = self._get_bridge_vids(bridgename,
ifaceobj_getfunc)
bridge_pvid = self._get_bridge_pvid(bridgename,
ifaceobj_getfunc)
self._apply_bridge_vlan_aware_port_settings_all(ifaceobj,
bridge_vids,
bridge_pvid)
self._apply_bridge_port_settings(ifaceobj, bridgename=bridgename)
ifaceobj.module_flags[self.name] = ifaceobj.module_flags.setdefault(self.name,0) | \
bridgeFlags.PORT_PROCESSED
return
return
if not self._is_bridge(ifaceobj):
return
err = False
errstr = ''
running_ports = ''
bridge_just_created = False
try:
if not self.PERFMODE:
if not self.ipcmd.link_exists(ifaceobj.name):
self.ipcmd.link_create(ifaceobj.name, 'bridge')
bridge_just_created = True
else:
self.ipcmd.link_create(ifaceobj.name, 'bridge')
bridge_just_created = True
except Exception, e:
raise Exception(str(e))
try:
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:
raise Exception(str(e))