Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
 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