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:
@@ -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)
|
||||||
|
@@ -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:
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user