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: if '-' in part:
a, b = part.split('-') a, b = part.split('-')
a, b = int(a), int(b) 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)) result.extend(range(a, b + 1))
else: else:
a = int(part) a = int(part)
if self._handle_reserved_vlan(a):
continue
result.append(a) result.append(a)
return result return result
@@ -594,8 +589,25 @@ class bridge(moduleBase):
except Exception, e: except Exception, e:
self.log_warn(str(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): def _apply_bridge_vids(self, bportifaceobj, vids, running_vids, isbridge):
try: try:
if not self._check_vids(bportifaceobj, vids):
return
if running_vids: if running_vids:
(vids_to_del, vids_to_add) = \ (vids_to_del, vids_to_add) = \
self._diff_vids(vids, running_vids) self._diff_vids(vids, running_vids)

View File

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

View File

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