1
0
mirror of https://github.com/CumulusNetworks/ifupdown2.git synced 2024-05-06 15:54:50 +00:00

Fix reserved vlan check + change switchd ifupdown reserved vlan script

to return reserved vlan range from /etc/cumulus/switchd.conf

Ticket: CM-4367
Reviewed By: wkok
Testing Done: Tested using reserved vlans in old and new bridge
(cherry picked from commit 8626feb08703392b29e234b2f81f4df536ad7f7b)
This commit is contained in:
Roopa Prabhu
2014-12-03 14:03:34 -08:00
parent 4b08367ba3
commit f59b5c656b
3 changed files with 22 additions and 10 deletions

View File

@@ -345,14 +345,9 @@ class bridge(moduleBase):
if '-' in part:
a, b = part.split('-')
a, b = int(a), int(b)
if (self._handle_reserved_vlan(a) or
self._handle_reserved_vlan(b)):
continue
result.extend(range(a, b + 1))
else:
a = int(part)
if self._handle_reserved_vlan(a):
continue
result.append(a)
return result
@@ -594,8 +589,25 @@ class bridge(moduleBase):
except Exception, e:
self.log_warn(str(e))
def _check_vids(self, ifaceobj, vids):
ret = True
for v in vids:
if '-' in v:
va, vb = v.split('-')
va, vb = int(va), int(vb)
if (self._handle_reserved_vlan(va, ifaceobj.name) or
self._handle_reserved_vlan(vb, ifaceobj.name)):
ret = False
else:
va = int(v)
if self._handle_reserved_vlan(va, ifaceobj.name):
ret = False
return ret
def _apply_bridge_vids(self, bportifaceobj, vids, running_vids, isbridge):
try:
if not self._check_vids(bportifaceobj, vids):
return
if running_vids:
(vids_to_del, vids_to_add) = \
self._diff_vids(vids, running_vids)

View File

@@ -124,7 +124,7 @@ class vlan(moduleBase):
vlanid = self._get_vlan_id(ifaceobj)
if vlanid == -1:
raise Exception('could not determine vlanid')
if self._handle_reserved_vlan(vlanid):
if self._handle_reserved_vlan(vlanid, ifaceobj.name):
return
vlanrawdevice = self._get_vlan_raw_device(ifaceobj)
if not vlanrawdevice:

View File

@@ -337,13 +337,13 @@ class moduleBase(object):
pass
return (start, end)
def _handle_reserved_vlan(self, vlanid):
def _handle_reserved_vlan(self, vlanid, logprefix=''):
""" Helper function to check and warn if the vlanid falls in the
reserved vlan range """
if vlanid in range(self._resv_vlan_range[0],
self._resv_vlan_range[1]):
self.logger.warn('skipping reserved vlan %d' %vlanid +
' (reserved vlan range %d-%d)' %(self._resv_vlan_range[0],
self._resv_vlan_range[1]))
self.logger.error('%s: reserved vlan %d being used'
%(logprefix, vlanid) + ' (reserved vlan range %d-%d)'
%(self._resv_vlan_range[0], self._resv_vlan_range[1]))
return True
return False