예제 #1
0
def _handle_ConnectionUp(event):
    msg = OutMessage()

    msg.set_policy("netasm.examples.netasm.controller_assisted.table_based_simple")
    event.connection.send(msg)

    msg.add_table_entry('match_table', 0,
                        {'eth_src': (0x000000000001, 0xFFFFFFFFFFFF)})
    event.connection.send(msg)
    msg.add_table_entry('params_table', 0,
                        {'outport_bitmap': ports_to_bitmap(2)})
    event.connection.send(msg)

    msg.add_table_entry('match_table', 1,
                        {'eth_src': (0x000000000002, 0xFFFFFFFFFFFF)})
    event.connection.send(msg)
    msg.add_table_entry('params_table', 1,
                        {'outport_bitmap': ports_to_bitmap(1)})
    event.connection.send(msg)

    msg = QueryMessage()

    msg.table_entry('match_table', 0)
    event.connection.send(msg)
    msg.table_entry('params_table', 0)
    event.connection.send(msg)

    msg.table_entry('match_table', 1)
    event.connection.send(msg)
    msg.table_entry('params_table', 1)
    event.connection.send(msg)

    msg.table_list()
    event.connection.send(msg)

    log.info("netasm.examples.netasm.controller_assisted.table_based_simple (pass through) for %s",
             dpidToStr(event.dpid))
예제 #2
0
    def rx_packet(self, packet, in_port, packet_data=None):
        if self.policy:
            state = execute.State(execute.Header(), execute.Packet())

            state.packet.append(BitArray(bytes=packet_data))

            port = ports_to_bitmap(in_port)
            state.header[Field('inport_bitmap')] = Value(port, Size(_MAX_PORTS))
            state.header[Field('outport_bitmap')] = Value(0, Size(_MAX_PORTS))
            state.header[Field('bit_length')] = Value(len(state.packet), Size(32))
            state.header[Field('DRP')] = Value(0, Size(1))
            state.header[Field('CTR')] = Value(0, Size(1))

            self.policy.put(state)
        self.tx_q.put((in_port, packet_data))
예제 #3
0
    def rx_packet(self, packet, in_port, packet_data=None):
        if self.policy:
            state = execute.State(execute.Header(), execute.Packet())

            state.packet.append(BitArray(bytes=packet_data))

            port = ports_to_bitmap(in_port)
            state.header[Field('inport_bitmap')] = Value(port, Size(_MAX_PORTS))
            state.header[Field('outport_bitmap')] = Value(0, Size(_MAX_PORTS))
            state.header[Field('bit_length')] = Value(len(state.packet), Size(32))
            state.header[Field('DRP')] = Value(0, Size(1))
            state.header[Field('CTR')] = Value(0, Size(1))

            self.policy.put(state)
        self.tx_q.put((in_port, packet_data))