import ptf from ptf.base_tests import BaseTest from ptf.testutils import * from scapy.all import * from mrzcpd import Mrzcpd from common_pkt import * import ptf.mask as mask icmp_conf = """ [device] device=veth0 sz_tunnel=8192 sz_buffer=0 [device:veth0] in_addr=172.17.16.1 in_mask=255.255.255.0 promisc=1 mtu=1500 driver=2 role=3 [service] iocore=1 distmode=2 hashmode=0 [limits] nr_max_ef_adapters=32 nr_max_vwires=32 nr_max_tera_adapters=32 nr_max_link_dbs=32 [eal] virtaddr=0x600000000000 loglevel=7 nohuge=1 mem=65535 [keepalive] check_spinlock=1 [http_server] listen_addr=127.0.0.1 [ctrlzone] ctrlzone0=tunnat,128 [pool] create_mode=3 sz_direct_pktmbuf=4096 sz_indirect_pktmbuf=4096 sz_cache=256 sz_data=3000 [ctrlmsg] listen_addr=0.0.0.0 listen_port=46789 [rpc] addr=127.0.0.1 port=56789 # sid [ef_adapters] sid_start=100 sid_end=200 max_rules=256 [vwires] sid_start=300 sid_end=400 max_rules=256 # vwire [vwire:0] interface_int=veth0 [service_lb] sid_start=1000 sid_end=2000 """ """ +------------+ +-------------------------+ | PTF | | MRZCPD | +------------+ icmp +-------------------------+ | veth0-ptf0 | <---> | veth0 (172.17.16.1) | +------------+ +-------------------------+ """ @group("icmp_reply_test") class IcmpReplyTest(BaseTest): def setUp(self): self.dataplane = ptf.dataplane_instance def __init__(self): BaseTest.__init__(self) def runTest(self): try: # Init & Start mrzcpd mrzcpd = Mrzcpd(icmp_conf,"") mrzcpd.start() send_pkt = simple_icmp_packet(eth_dst='00:01:02:03:04:05',eth_src='00:06:07:08:09:0a',ip_src='172.17.16.2', ip_dst='172.17.16.1', icmp_type=8, icmp_code=0,icmp_data='icmp test\n') send_packet(self, 0,send_pkt) # Verify exp_pkt = simple_icmp_packet(eth_dst='00:06:07:08:09:0a',eth_src='00:01:02:03:04:05',ip_src='172.17.16.1', ip_dst='172.17.16.2', icmp_type=0, icmp_code=0,icmp_data='icmp test\n') verify_packet(self, exp_pkt, 0) finally: mrzcpd.stop()