diff --git a/addons/bridge.py b/addons/bridge.py index 7cfdd5a..0f42585 100644 --- a/addons/bridge.py +++ b/addons/bridge.py @@ -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) diff --git a/addons/vlan.py b/addons/vlan.py index b3bde91..3ae9852 100644 --- a/addons/vlan.py +++ b/addons/vlan.py @@ -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: diff --git a/ifupdownaddons/modulebase.py b/ifupdownaddons/modulebase.py index a602eb5..1ea3311 100644 --- a/ifupdownaddons/modulebase.py +++ b/ifupdownaddons/modulebase.py @@ -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