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))
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))