def _flood_stack_links(self, pkt_builder, vlan, multi_out=True, *args): """Return flood packet-out actions to stack ports for gw resolving""" ofmsgs = [] if self.stack_manager: ports = [] if self.stack_manager.stack.is_root(): ports = list(self.stack_manager.away_ports - self.stack_manager.inactive_away_ports - self.stack_manager.pruned_away_ports) else: if self.stack_manager.chosen_towards_port is not None: ports = [self.stack_manager.chosen_towards_port] if ports: running_port_nos = [ port.number for port in ports if port.running() ] pkt = pkt_builder(vlan.vid, *args) if running_port_nos: random.shuffle(running_port_nos) if multi_out: ofmsgs.append( valve_of.packetouts(running_port_nos, bytes(pkt.data))) else: ofmsgs.extend([ valve_of.packetout(port_no, bytes(pkt.data)) for port_no in running_port_nos ]) return ofmsgs
def flood_pkt(self, packet_builder, multi_out=True, *args): ofmsgs = [] for vid, ports in ( (self.vid, self.tagged_flood_ports(False)), (None, self.untagged_flood_ports(False))): if ports: pkt = packet_builder(vid, *args) exclude_ports = self.exclude_same_lag_member_ports() running_port_nos = [ port.number for port in ports if port.running() and port not in exclude_ports] if running_port_nos: random.shuffle(running_port_nos) if multi_out: ofmsgs.append(valve_of.packetouts(running_port_nos, pkt.data)) else: ofmsgs.extend( [valve_of.packetout(port_no, pkt.data) for port_no in running_port_nos]) return ofmsgs
def flood_pkt(self, packet_builder, multi_out=True, *args): """Return Packet-out actions via flooding""" ofmsgs = [] for vid, ports in ( (self.vid, self.tagged_flood_ports(False)), (None, self.untagged_flood_ports(False))): if ports: pkt = packet_builder(vid, *args) exclude_ports = self.excluded_lag_ports() running_port_nos = [ port.number for port in ports if port.running() and port not in exclude_ports] if running_port_nos: random.shuffle(running_port_nos) if multi_out: ofmsgs.append(valve_of.packetouts(running_port_nos, pkt.data)) else: ofmsgs.extend( [valve_of.packetout(port_no, pkt.data) for port_no in running_port_nos]) return ofmsgs
def flood_pkt(self, packet_builder, multi_out=True, *args): ofmsgs = [] for vid, ports in ( (self.vid, self.tagged_flood_ports(False)), (None, self.untagged_flood_ports(False))): if ports: pkt = packet_builder(vid, *args) exclude_ports = self.exclude_same_lag_member_ports() running_ports = [ port for port in ports if port.running() and port not in exclude_ports] random.shuffle(running_ports) if multi_out: ofmsgs.append(valve_of.packetouts( [port.number for port in running_ports], pkt.data)) else: ofmsgs.extend( [valve_of.packetout(port.number, pkt.data) for port in running_ports]) return ofmsgs
def _flood_stack_links(self, pkt_builder, vlan, multi_out=True, *args): """Return flood packet-out actions to stack ports for gw resolving""" ofmsgs = [] if isinstance(self.switch_manager, ValveSwitchStackManagerBase): ports = self.switch_manager._stack_flood_ports() if ports: running_port_nos = [ port.number for port in ports if port.running() ] pkt = pkt_builder(vlan.vid, *args) if running_port_nos: random.shuffle(running_port_nos) if multi_out: ofmsgs.append( valve_of.packetouts(running_port_nos, pkt.data)) else: ofmsgs.extend([ valve_of.packetout(port_no, pkt.data) for port_no in running_port_nos ]) return ofmsgs