def runTest(self): of_ports = config["port_map"].keys() of_ports.sort() ing_port = of_ports[0] egr_port = of_ports[3] # Remove all entries Add entry match all rc = testutils.delete_all_flows(self.controller, logging) self.assertEqual(rc, 0, "Failed to delete all flows") # Add entry match request = ofp.message.flow_mod() request.match.type = ofp.OFPMT_OXM port = ofp.match.in_port(of_ports[0]) eth_type = ofp.match.eth_type(IPV6_ETHERTYPE) ipv6_src = ofp.match.ipv6_src(ipaddr.IPv6Address('fe80::2420:52ff:fe8f:5189')) request.match_fields.tlvs.append(port) request.match_fields.tlvs.append(eth_type) request.match_fields.tlvs.append(ipv6_src) field_2b_set = ofp.match.ipv6_dst(ipaddr.IPv6Address('fe80::2420:52ff:fe8f:DDDD')) act_setfield = ofp.action.set_field() act_setfield.field = field_2b_set # TODO: insert action set field properly act_out = ofp.action.output() act_out.port = of_ports[3] inst = ofp.instruction.instruction_apply_actions() inst.actions.add(act_setfield) inst.actions.add(act_out) request.instructions.add(inst) request.buffer_id = 0xffffffff request.priority = 1000 logging.debug("Adding flow ") rv = self.controller.message_send(request) self.assertTrue(rv != -1, "Failed to insert test flow") #Send packet pkt = testutils.simple_ipv6_packet(ip_src='fe80::2420:52ff:fe8f:5189',ip_dst='fe80::2420:52ff:fe8f:5190') logging.info("Sending IPv6 packet to " + str(ing_port)) logging.debug("Data: " + str(pkt).encode('hex')) self.dataplane.send(ing_port, str(pkt)) #Receive packet exp_pkt = testutils.simple_ipv6_packet(ip_dst='fe80::2420:52ff:fe8f:DDDD') testutils.receive_pkt_verify(self, egr_port, exp_pkt) #See flow match response = testutils.flow_stats_get(self) logging.debug("Response" + response.show()) #Remove flows rc = testutils.delete_all_flows(self.controller, logging) self.assertEqual(rc, 0, "Failed to delete all flows")
def runTest(self): # Config of_ports = config["port_map"].keys() of_ports.sort() ing_port = of_ports[0] egr_port = of_ports[3] # Remove flows rc = testutils.delete_all_flows(self.controller, logging) self.assertEqual(rc, 0, "Failed to delete all flows") # Add entry match request = ofp.message.flow_add() request.match.type = ofp.OFPMT_OXM port = ofp.oxm.in_port(of_ports[0]) eth_type = ofp.oxm.eth_type(IPV6_ETHERTYPE) ipv6_src = ofp.oxm.ipv6_src( oftest.parse.parse_ipv6('fe80::2420:52ff:fe8f:5189')) ip_proto = ofp.oxm.ip_proto(TCP_PROTOCOL) tcp_port = ofp.oxm.tcp_src(80) request.match.oxm_list.append(port) request.match.oxm_list.append(eth_type) request.match.oxm_list.append(ipv6_src) request.match.oxm_list.append(ip_proto) request.match.oxm_list.append(tcp_port) act = ofp.action.output() act.port = of_ports[3] inst = ofp.instruction.apply_actions() inst.actions.append(act) request.instructions.append(inst) request.buffer_id = 0xffffffff request.priority = 1000 logging.debug("Adding flow ") rv = self.controller.message_send(request) self.assertTrue(rv != -1, "Failed to send test flow") #Send packet pkt = testutils.simple_ipv6_packet(tcp_sport=80, tcp_dport=8080) logging.info("Sending IPv6 packet to " + str(ing_port)) logging.debug("Data: " + str(pkt).encode('hex')) self.dataplane.send(ing_port, str(pkt)) #Receive packet exp_pkt = testutils.simple_ipv6_packet(tcp_sport=80, tcp_dport=8080) testutils.receive_pkt_verify(self, egr_port, exp_pkt) #Remove flows rc = testutils.delete_all_flows(self.controller, logging) self.assertEqual(rc, 0, "Failed to delete all flows")
def runTest(self): # Config of_ports = config["port_map"].keys() of_ports.sort() ing_port = of_ports[0] egr_port = of_ports[3] # Remove flows rc = testutils.delete_all_flows(self.controller, logging) self.assertEqual(rc, 0, "Failed to delete all flows") # Add entry match request = ofp.message.flow_add() request.match.type = ofp.OFPMT_OXM port = ofp.oxm.in_port(of_ports[0]) eth_type = ofp.oxm.eth_type(IPV6_ETHERTYPE) ipv6_src = ofp.oxm.ipv6_src(oftest.parse.parse_ipv6('fe80::2420:52ff:fe8f:5189')) ip_proto = ofp.oxm.ip_proto(TCP_PROTOCOL) tcp_port = ofp.oxm.tcp_src(80) request.match.oxm_list.append(port) request.match.oxm_list.append(eth_type) request.match.oxm_list.append(ipv6_src) request.match.oxm_list.append(ip_proto) request.match.oxm_list.append(tcp_port) act = ofp.action.output() act.port = of_ports[3] inst = ofp.instruction.apply_actions() inst.actions.append(act) request.instructions.append(inst) request.buffer_id = 0xffffffff request.priority = 1000 logging.debug("Adding flow ") rv = self.controller.message_send(request) self.assertTrue(rv != -1, "Failed to send test flow") #Send packet pkt = testutils.simple_ipv6_packet(tcp_sport=80, tcp_dport=8080) logging.info("Sending IPv6 packet to " + str(ing_port)) logging.debug("Data: " + str(pkt).encode('hex')) self.dataplane.send(ing_port, str(pkt)) #Receive packet exp_pkt = testutils.simple_ipv6_packet(tcp_sport=80, tcp_dport=8080) testutils.receive_pkt_verify(self, egr_port, exp_pkt) #Remove flows rc = testutils.delete_all_flows(self.controller, logging) self.assertEqual(rc, 0, "Failed to delete all flows")
def runTest(self): of_ports = config["port_map"].keys() of_ports.sort() ing_port = of_ports[0] egr_port = of_ports[3] # Remove all entries Add entry match all rc = testutils.delete_all_flows(self.controller, logging) self.assertEqual(rc, 0, "Failed to delete all flows") # Add entry match request = ofp.message.flow_add() port = ofp.oxm.in_port(of_ports[0]) eth_type = ofp.oxm.eth_type(IPV6_ETHERTYPE) ipv6_src = ofp.oxm.ipv6_src( oftest.parse.parse_ipv6('fe80::2420:52ff:fe8f:5189')) request.match.oxm_list.append(port) request.match.oxm_list.append(eth_type) request.match.oxm_list.append(ipv6_src) field_2b_set = ofp.oxm.ipv6_dst( oftest.parse.parse_ipv6('fe80::2420:52ff:fe8f:DDDD')) act_setfield = ofp.action.set_field() act_setfield.field = field_2b_set.pack() # HACK # TODO: insert action set field properly act_out = ofp.action.output() act_out.port = of_ports[3] inst = ofp.instruction.apply_actions() inst.actions.append(act_setfield) inst.actions.append(act_out) request.instructions.append(inst) request.buffer_id = 0xffffffff request.priority = 1000 logging.debug("Adding flow ") rv = self.controller.message_send(request) self.assertTrue(rv != -1, "Failed to insert test flow") #Send packet pkt = testutils.simple_ipv6_packet(ip_src='fe80::2420:52ff:fe8f:5189', ip_dst='fe80::2420:52ff:fe8f:5190') logging.info("Sending IPv6 packet to " + str(ing_port)) logging.debug("Data: " + str(pkt).encode('hex')) self.dataplane.send(ing_port, str(pkt)) #Receive packet exp_pkt = testutils.simple_ipv6_packet( ip_dst='fe80::2420:52ff:fe8f:DDDD') testutils.receive_pkt_verify(self, egr_port, exp_pkt) #See flow match response = testutils.flow_stats_get(self) logging.debug("Response" + response.show()) #Remove flows rc = testutils.delete_all_flows(self.controller, logging) self.assertEqual(rc, 0, "Failed to delete all flows")