def _checkDuplicateInterfacesSources(self, settings): """Assignment of interfaces/sources to zones is different from other zone settings in the sense that particular interface/zone can be part of only one zone. So make sure added interfaces/sources have not already been bound to another zone.""" old_settings = self.config.get_zone_config_dict(self.obj) old_ifaces = set(old_settings["interfaces"] ) if "interfaces" in old_settings else set() old_sources = set( old_settings["sources"]) if "sources" in old_settings else set() if isinstance(settings, tuple): added_ifaces = set( settings[Zone.index_of("interfaces")]) - old_ifaces added_sources = set( settings[Zone.index_of("sources")]) - old_sources else: # dict new_ifaces = set( settings["interfaces"]) if "interfaces" in settings else set() new_sources = set( settings["sources"]) if "sources" in settings else set() added_ifaces = new_ifaces - old_ifaces added_sources = new_sources - old_sources for iface in added_ifaces: if self.parent.getZoneOfInterface(iface): raise FirewallError(errors.ZONE_CONFLICT, iface) # or move to new zone ? for source in added_sources: if self.parent.getZoneOfSource(source): raise FirewallError(errors.ZONE_CONFLICT, source) # or move to new zone ?
def _checkDuplicateInterfacesSources(self, settings): """Assignment of interfaces/sources to zones is different from other zone settings in the sense that particular interface/zone can be part of only one zone. So make sure added interfaces/sources have not already been bound to another zone.""" old_settings = self.config.get_zone_config(self.obj) idx_i = Zone.index_of("interfaces") idx_s = Zone.index_of("sources") added_ifaces = set(settings[idx_i]) - set(old_settings[idx_i]) added_sources = set(settings[idx_s]) - set(old_settings[idx_s]) for iface in added_ifaces: if self.parent.getZoneOfInterface(iface): raise FirewallError(ZONE_CONFLICT) # or move to new zone ? for source in added_sources: if self.parent.getZoneOfSource(source): raise FirewallError(ZONE_CONFLICT) # or move to new zone ?
def _checkDuplicateInterfacesSources(self, settings): """Assignment of interfaces/sources to zones is different from other zone settings in the sense that particular interface/zone can be part of only one zone. So make sure added interfaces/sources have not already been bound to another zone.""" old_settings = self.config.get_zone_config(self.obj) idx_i = Zone.index_of("interfaces") idx_s = Zone.index_of("sources") added_ifaces = set(settings[idx_i]) - set(old_settings[idx_i]) added_sources = set(settings[idx_s]) - set(old_settings[idx_s]) for iface in added_ifaces: if self.parent.getZoneOfInterface(iface): raise FirewallError(errors.ZONE_CONFLICT, iface) # or move to new zone ? for source in added_sources: if self.parent.getZoneOfSource(source): raise FirewallError(errors.ZONE_CONFLICT, source) # or move to new zone ?