From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8603AA04DD; Thu, 2 Jan 2020 06:30:23 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 47B611BF9A; Thu, 2 Jan 2020 06:30:23 +0100 (CET) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 701CF1BF74 for ; Thu, 2 Jan 2020 06:30:20 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 01 Jan 2020 21:30:18 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,385,1571727600"; d="scan'208";a="244520650" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga004.fm.intel.com with ESMTP; 01 Jan 2020 21:30:18 -0800 Received: from fmsmsx163.amr.corp.intel.com (10.18.125.72) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 1 Jan 2020 21:30:18 -0800 Received: from shsmsx107.ccr.corp.intel.com (10.239.4.96) by fmsmsx163.amr.corp.intel.com (10.18.125.72) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 1 Jan 2020 21:30:17 -0800 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.30]) by SHSMSX107.ccr.corp.intel.com ([169.254.9.210]) with mapi id 14.03.0439.000; Thu, 2 Jan 2020 13:30:15 +0800 From: "Tu, Lijuan" To: "Lu, Nannan" , "dts@dpdk.org" CC: "Lu, Nannan" Thread-Topic: [dts] [PATCH V1 1/3] tests/cvl_switch_filter: add testsuite cvl_switch_filter Thread-Index: AQHVv8F1BAETrA32tkGDCeM9LbIVQKfW29zw Date: Thu, 2 Jan 2020 05:30:14 +0000 Message-ID: <8CE3E05A3F976642AAB0F4675D0AD20E0BBA1084@SHSMSX101.ccr.corp.intel.com> References: <20191231174915.22554-1-nannan.lu@intel.com> In-Reply-To: <20191231174915.22554-1-nannan.lu@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dts] [PATCH V1 1/3] tests/cvl_switch_filter: add testsuite cvl_switch_filter X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" Applied the patch set. > -----Original Message----- > From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of Nannan Lu > Sent: Wednesday, January 1, 2020 1:49 AM > To: dts@dpdk.org > Cc: Lu, Nannan > Subject: [dts] [PATCH V1 1/3] tests/cvl_switch_filter: add testsuite > cvl_switch_filter >=20 > add testsuite cvl_switch_filter to tests >=20 > Signed-off-by: Nannan Lu > --- > tests/TestSuite_cvl_switch_filter.py | 2617 ++++++++++++++++++++++++++ > 1 file changed, 2617 insertions(+) > create mode 100644 tests/TestSuite_cvl_switch_filter.py >=20 > diff --git a/tests/TestSuite_cvl_switch_filter.py > b/tests/TestSuite_cvl_switch_filter.py > new file mode 100644 > index 0000000..35a981e > --- /dev/null > +++ b/tests/TestSuite_cvl_switch_filter.py > @@ -0,0 +1,2617 @@ > +import json > +import time > +import re > +import copy > + > +from test_case import TestCase > +from pmd_output import PmdOutput > +from packet import Packet > +from utils import BLUE, RED, GREEN > +from collections import OrderedDict > +import rte_flow_common as rfc > + > +import os > + > +#vxlan non-pipeline mode > +#test vector mac_ipv4_vxlan_ipv4_frag > +tv_mac_ipv4_vxlan_ipv4_frag_in_queue_01 =3D { > + "name":"tv_mac_ipv4_vxlan_ipv4_frag_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is > 192.168.0.3 / end actions queue index 3 / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether()/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3",frag=3D5)/TCP()/Raw("= x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.3",frag=3D5)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":3= }}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/UDP()/VXLAN(v= ni > =3D2)/Ether()/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3",frag=3D5)/Raw("= x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D3)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.3",frag=3D5)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .4", dst=3D"192.168.0.3",frag=3D5)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.5",frag=3D5)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":3}}, > + "expect_results":{"expect_pkts":4}} > +} > + > +tv_mac_ipv4_vxlan_ipv4_frag_queue_region_02 =3D { > + "name":"tv_mac_ipv4_vxlan_ipv4_frag_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is > 192.168.0.3 / end actions rss queues 2 3 end / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether()/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3",frag=3D5)/TCP()/Raw("= x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.3",frag=3D5)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/UDP()/VXLAN(v= ni > =3D2)/Ether()/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3",frag=3D5)/Raw("= x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D3)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.3",frag=3D5)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .4", dst=3D"192.168.0.3",frag=3D5)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.5",frag=3D5)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":4}} > +} > + > +tv_mac_ipv4_vxlan_ipv4_frag_drop_03 =3D { > + "name":"tv_mac_ipv4_vxlan_ipv4_frag_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is > 192.168.0.3 / end actions drop / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether()/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3",frag=3D5)/TCP()/Raw("= x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.3",frag=3D5)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/UDP()/VXLAN(v= ni > =3D2)/Ether()/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3",frag=3D5)/Raw("= x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D3)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.3",frag=3D5)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .4", dst=3D"192.168.0.3",frag=3D5)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.5",frag=3D5)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":4}} > +} > + > +tvs_mac_ipv4_vxlan_ipv4_frag =3D [ > + tv_mac_ipv4_vxlan_ipv4_frag_in_queue_01, > + tv_mac_ipv4_vxlan_ipv4_frag_queue_region_02, > + tv_mac_ipv4_vxlan_ipv4_frag_drop_03 > + ] > + > +#test vector mac_ipv4_vxlan_ipv4_pay > +tv_mac_ipv4_vxlan_ipv4_pay_in_queue_01 =3D { > + "name":"tv_mac_ipv4_vxlan_ipv4_pay_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is > 192.168.0.3 / end actions queue index 3 / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether()/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3")/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.3")/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":3= }}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/UDP()/VXLAN(v= ni > =3D2)/Ether()/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3")/TCP()/Raw("x"*= 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D3)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.3")/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .4", dst=3D"192.168.0.3")/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.5")/TCP()/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":3}}, > + "expect_results":{"expect_pkts":4}} > +} > + > +tv_mac_ipv4_vxlan_ipv4_pay_queue_region_02 =3D { > + "name":"tv_mac_ipv4_vxlan_ipv4_pay_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is > 192.168.0.3 / end actions rss queues 4 5 end / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether()/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3")/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.3")/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 4, 5]}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/UDP()/VXLAN(v= ni > =3D2)/Ether()/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3")/TCP()/Raw("x"*= 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D3)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.3")/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .4", dst=3D"192.168.0.3")/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.5")/TCP()/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[4, 5]}}, > + "expect_results":{"expect_pkts":4}} > +} > + > +tv_mac_ipv4_vxlan_ipv4_pay_drop_03 =3D { > + "name":"tv_mac_ipv4_vxlan_ipv4_pay_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is > 192.168.0.3 / end actions drop / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether()/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3")/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.3")/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/UDP()/VXLAN(v= ni > =3D2)/Ether()/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3")/TCP()/Raw("x"*= 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D3)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.3")/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .4", dst=3D"192.168.0.3")/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.5")/TCP()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":4}} > +} > + > +tvs_mac_ipv4_vxlan_ipv4_pay =3D [ > + tv_mac_ipv4_vxlan_ipv4_pay_in_queue_01, > + tv_mac_ipv4_vxlan_ipv4_pay_queue_region_02, > + tv_mac_ipv4_vxlan_ipv4_pay_drop_03 > + ] > + > +#test vector mac_ipv4_vxlan_ipv4_udp_pay > +tv_mac_ipv4_vxlan_ipv4_udp_pay_in_queue_01 =3D { > + "name":"tv_mac_ipv4_vxlan_ipv4_udp_pay_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is > 192.168.0.3 / udp src is 50 dst is 23 / end actions queue index 4 / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":4= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(v= ni > =3D2)/Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D20,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.3")/UDP(sport=3D50,dport=3D19)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":4}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_vxlan_ipv4_udp_pay_queue_region_02 =3D { > + "name":"tv_mac_ipv4_vxlan_ipv4_udp_pay_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is > 192.168.0.3 / udp src is 50 dst is 23 / end actions rss queues 4 5 end / = end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 4, 5]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(v= ni > =3D2)/Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D20,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.3")/UDP(sport=3D50,dport=3D19)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[4, 5]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_vxlan_ipv4_udp_pay_drop_03 =3D { > + "name":"tv_mac_ipv4_vxlan_ipv4_udp_pay_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is > 192.168.0.3 / udp src is 50 dst is 23 / end actions drop / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(v= ni > =3D2)/Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D20,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.3")/UDP(sport=3D50,dport=3D19)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tvs_mac_ipv4_vxlan_ipv4_udp_pay =3D [ > + tv_mac_ipv4_vxlan_ipv4_udp_pay_in_queue_01, > + tv_mac_ipv4_vxlan_ipv4_udp_pay_queue_region_02, > + tv_mac_ipv4_vxlan_ipv4_udp_pay_drop_03 > +] > + > +#test vector mac_ipv4_vxlan_ipv4_tcp > +tv_mac_ipv4_vxlan_ipv4_tcp_in_queue_01 =3D { > + "name":"tv_mac_ipv4_vxlan_ipv4_tcp_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is > 192.168.0.3 / tcp src is 50 dst is 23 / end actions queue index 5 / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/TCP(sport=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":5= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(v= ni > =3D2)/Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/TCP(sport=3D29,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.3")/TCP(sport=3D50,dport=3D100)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":5}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_vxlan_ipv4_tcp_queue_region_02 =3D { > + "name":"tv_mac_ipv4_vxlan_ipv4_tcp_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is > 192.168.0.3 / tcp src is 50 dst is 23 / end actions rss queues 4 5 end / = end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/TCP(sport=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 4, 5]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(v= ni > =3D2)/Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/TCP(sport=3D29,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.3")/TCP(sport=3D50,dport=3D100)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[4, 5]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_vxlan_ipv4_tcp_drop_03 =3D { > + "name":"tv_mac_ipv4_vxlan_ipv4_tcp_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is > 192.168.0.3 / tcp src is 50 dst is 23 / end actions drop / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/TCP(sport=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(v= ni > =3D2)/Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/TCP(sport=3D29,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether()/IP(src=3D"1= 92.168.0 > .2", dst=3D"192.168.0.3")/TCP(sport=3D50,dport=3D100)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tvs_mac_ipv4_vxlan_ipv4_tcp =3D [ > + tv_mac_ipv4_vxlan_ipv4_tcp_in_queue_01, > + tv_mac_ipv4_vxlan_ipv4_tcp_queue_region_02, > + tv_mac_ipv4_vxlan_ipv4_tcp_drop_03 > + ] > + > +#test vector mac_ipv4_vxlan_mac_ipv4_frag > +tv_mac_ipv4_vxlan_mac_ipv4_frag_in_queue_01 =3D { > + "name":"tv_mac_ipv4_vxlan_mac_ipv4_frag_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 = src is > 192.168.0.2 dst is 192.168.0.3 / end actions queue index 2 / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3" ,frag=3D5)/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3" ,frag=3D5)/Raw("x"*80)= '], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":2= }}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/UDP()/VXLAN(v= ni > =3D2)/Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3" ,frag=3D5)/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D3)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3" ,frag=3D5)/TCP()/Raw("= x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a9")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3" ,frag=3D5)/TCP()/Raw("= x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.4", dst=3D"192.168.0.3" ,frag=3D5)/TCP()/Raw("= x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.5" ,frag=3D5)/TCP()/Raw("= x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":2}}, > + "expect_results":{"expect_pkts":5}} > +} > + > +tv_mac_ipv4_vxlan_mac_ipv4_frag_queue_region_02 =3D { > + "name":"tv_mac_ipv4_vxlan_mac_ipv4_frag_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 = src is > 192.168.0.2 dst is 192.168.0.3 / end actions rss queues 2 3 end / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3" ,frag=3D5)/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3" ,frag=3D5)/Raw("x"*80)= '], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/UDP()/VXLAN(v= ni > =3D2)/Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3" ,frag=3D5)/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D3)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3" ,frag=3D5)/TCP()/Raw("= x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a9")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3" ,frag=3D5)/TCP()/Raw("= x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.4", dst=3D"192.168.0.3" ,frag=3D5)/TCP()/Raw("= x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.5" ,frag=3D5)/TCP()/Raw("= x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":5}} > +} > + > +tv_mac_ipv4_vxlan_mac_ipv4_frag_drop_03 =3D { > + "name":"tv_mac_ipv4_vxlan_mac_ipv4_frag_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 = src is > 192.168.0.2 dst is 192.168.0.3 / end actions drop / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3" ,frag=3D5)/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3" ,frag=3D5)/Raw("x"*80)= '], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/UDP()/VXLAN(v= ni > =3D2)/Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3" ,frag=3D5)/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D3)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3" ,frag=3D5)/TCP()/Raw("= x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a9")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3" ,frag=3D5)/TCP()/Raw("= x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.4", dst=3D"192.168.0.3" ,frag=3D5)/TCP()/Raw("= x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.5" ,frag=3D5)/TCP()/Raw("= x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":5}} > +} > + > +tvs_mac_ipv4_vxlan_mac_ipv4_frag =3D [ > + tv_mac_ipv4_vxlan_mac_ipv4_frag_in_queue_01, > + tv_mac_ipv4_vxlan_mac_ipv4_frag_queue_region_02, > + tv_mac_ipv4_vxlan_mac_ipv4_frag_drop_03 > + ] > + > +#test vector mac_ipv4_vxlan_mac_ipv4_pay > +tv_mac_ipv4_vxlan_mac_ipv4_pay_in_queue_01 =3D { > + "name":"tv_mac_ipv4_vxlan_mac_ipv4_pay_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4= src is > 192.168.0.2 dst is 192.168.0.3 / end actions queue index 3 / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", dst=3D"192.168.0= .3") > /TCP()/Raw("x" * 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3")/Raw("x" * 80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":3= }}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/UDP()/VXLAN(v= ni > =3D2)/Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", dst=3D"192= .168.0.3") > /TCP()/Raw("x" * 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D3)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3") /TCP()/Raw("x" * 80)'= , > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a9")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3") /TCP()/Raw("x" * 80)'= , > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.4", dst=3D"192.168.0.3") /TCP()/Raw("x" * 80)'= , > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.5") /TCP()/Raw("x" * 80)'= ], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":3}}, > + "expect_results":{"expect_pkts":5}} > +} > + > +tv_mac_ipv4_vxlan_mac_ipv4_pay_queue_region_02 =3D { > + "name":"tv_mac_ipv4_vxlan_mac_ipv4_pay_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4= src is > 192.168.0.2 dst is 192.168.0.3 / end actions rss queues 4 5 end / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/TCP()/Raw("x" * 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3")/Raw("x" * 80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 4, 5]}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/UDP()/VXLAN(v= ni > =3D2)/Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/TCP()/Raw("x" * 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D3)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3")/TCP()/Raw("x" * 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a9")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3")/TCP()/Raw("x" * 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.4", dst=3D"192.168.0.3")/TCP()/Raw("x" * 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.5")/TCP()/Raw("x" * 80)']= , > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[4, 5]}}, > + "expect_results":{"expect_pkts":5}} > +} > + > +tv_mac_ipv4_vxlan_mac_ipv4_pay_drop_03 =3D { > + "name":"tv_mac_ipv4_vxlan_mac_ipv4_pay_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4= src is > 192.168.0.2 dst is 192.168.0.3 / end actions drop / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/TCP()/Raw("x" * 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3")/Raw("x" * 80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/UDP()/VXLAN(v= ni > =3D2)/Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/TCP()/Raw("x" * 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D3)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3")/TCP()/Raw("x" * 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a9")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3")/TCP()/Raw("x" * 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.4", dst=3D"192.168.0.3")/TCP()/Raw("x" * 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", dst=3D"192.168.0.5")/TCP()/Raw("x" * 80)']= , > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":5}} > +} > + > +tvs_mac_ipv4_vxlan_mac_ipv4_pay =3D [ > + tv_mac_ipv4_vxlan_mac_ipv4_pay_in_queue_01, > + tv_mac_ipv4_vxlan_mac_ipv4_pay_queue_region_02, > + tv_mac_ipv4_vxlan_mac_ipv4_pay_drop_03 > + ] > + > +#test vector mac_ipv4_vxlan_mac_ipv4_udp_pay > +tv_mac_ipv4_vxlan_mac_ipv4_udp_pay_in_queue_01 =3D { > + "name":"tv_mac_ipv4_vxlan_mac_ipv4_udp_pay_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4= src is > 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions qu= eue > index 1 / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D50,dport=3D23)/Raw("x" * 80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":1= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(v= ni > =3D2)/Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D20,dport=3D23)/Raw("x" * 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D50,dport=3D29)/Raw("x" * 80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":1}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_vxlan_mac_ipv4_udp_pay_queue_region_02 =3D { > + "name":"tv_mac_ipv4_vxlan_mac_ipv4_udp_pay_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4= src is > 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions rs= s > queues 4 5 end / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D50,dport=3D23)/Raw("x" * 80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 4, 5]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(v= ni > =3D2)/Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D20,dport=3D23)/Raw("x" * 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D50,dport=3D29)/Raw("x" * 80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[4, 5]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_vxlan_mac_ipv4_udp_pay_drop_03 =3D { > + "name":"tv_mac_ipv4_vxlan_mac_ipv4_udp_pay_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4= src is > 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions dr= op / > end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D50,dport=3D23)/Raw("x" * 80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(v= ni > =3D2)/Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D20,dport=3D23)/Raw("x" * 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D50,dport=3D29)/Raw("x" * 80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tvs_mac_ipv4_vxlan_mac_ipv4_udp_pay =3D [ > + tv_mac_ipv4_vxlan_mac_ipv4_udp_pay_in_queue_01, > + tv_mac_ipv4_vxlan_mac_ipv4_udp_pay_queue_region_02, > + tv_mac_ipv4_vxlan_mac_ipv4_udp_pay_drop_03 > + ] > + > +#test vector mac_ipv4_vxlan_mac_ipv4_tcp > +tv_mac_ipv4_vxlan_mac_ipv4_tcp_in_queue_01 =3D { > + "name":"tv_mac_ipv4_vxlan_mac_ipv4_tcp_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4= src is > 192.168.0.2 dst is 192.168.0.3 / tcp src is 25 dst is 23 / end actions qu= eue > index 1 / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/TCP(sport=3D25,dport=3D23)/Raw("x" * 80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":1= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(v= ni > =3D2)/Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/TCP(sport=3D20,dport=3D23)/Raw("x" * 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/TCP(sport=3D25,dport=3D19)/Raw("x" * 80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":1}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_vxlan_mac_ipv4_tcp_queue_region_02 =3D { > + "name":"tv_mac_ipv4_vxlan_mac_ipv4_tcp_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4= src is > 192.168.0.2 dst is 192.168.0.3 / tcp src is 25 dst is 23 / end actions rs= s queues > 1 2 end / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/TCP(sport=3D25,dport=3D23)/Raw("x" * 80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 1, 2]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(v= ni > =3D2)/Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/TCP(sport=3D20,dport=3D23)/Raw("x" * 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/TCP(sport=3D25,dport=3D19)/Raw("x" * 80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[1, 2]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_vxlan_mac_ipv4_tcp_drop_03 =3D { > + "name":"tv_mac_ipv4_vxlan_mac_ipv4_tcp_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4= src is > 192.168.0.2 dst is 192.168.0.3 / tcp src is 25 dst is 23 / end actions dr= op / > end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni= =3D2)/ > Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/TCP(sport=3D25,dport=3D23)/Raw("x" * 80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(v= ni > =3D2)/Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/TCP(sport=3D20,dport=3D23)/Raw("x" * 80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/UDP()/VXLAN(vni=3D2)/Ether(dst=3D"68:05:= ca:8d:e > d:a8")/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/TCP(sport=3D25,dport=3D19)/Raw("x" * 80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tvs_mac_ipv4_vxlan_mac_ipv4_tcp =3D [ > + tv_mac_ipv4_vxlan_mac_ipv4_tcp_in_queue_01, > + tv_mac_ipv4_vxlan_mac_ipv4_tcp_queue_region_02, > + tv_mac_ipv4_vxlan_mac_ipv4_tcp_drop_03 > + ] > + > +#nvgre non-pipeline mode > +#test vector mac_ipv4_nvgre_ipv4_frag > +tv_mac_ipv4_nvgre_ipv4_frag_in_queue_01 =3D { > + "name":"tv_mac_ipv4_nvgre_ipv4_frag_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.1= 68.1.3 / > end actions queue index 3 / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/E= ther( > )/IP(src=3D"192.168.1.2", dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80= )', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.3" ,frag=3D5)/Raw("x" * 80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":3= }}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI=3D2= )/Et > her()/IP(src=3D"192.168.1.2", dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x= "*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D3)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.4", > dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.5" ,frag=3D5)/TCP()/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":3}}, > + "expect_results":{"expect_pkts":4}} > +} > + > +tv_mac_ipv4_nvgre_ipv4_frag_queue_region_02 =3D { > + "name":"tv_mac_ipv4_nvgre_ipv4_frag_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.1= 68.1.3 / > end actions rss queues 2 3 end / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/E= ther( > )/IP(src=3D"192.168.1.2", dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80= )', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.3" ,frag=3D5)/Raw("x" * 80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI=3D2= )/Et > her()/IP(src=3D"192.168.1.2", dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x= "*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D3)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.4", > dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.5" ,frag=3D5)/TCP()/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":4}} > +} > + > +tv_mac_ipv4_nvgre_ipv4_frag_drop_03 =3D { > + "name":"tv_mac_ipv4_nvgre_ipv4_frag_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.1= 68.1.3 / > end actions drop / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/E= ther( > )/IP(src=3D"192.168.1.2", dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80= )', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.3" ,frag=3D5)/Raw("x" * 80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI=3D2= )/Et > her()/IP(src=3D"192.168.1.2", dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x= "*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D3)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.4", > dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.5" ,frag=3D5)/TCP()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":4}} > +} > + > +tvs_mac_ipv4_nvgre_ipv4_frag =3D [ > + tv_mac_ipv4_nvgre_ipv4_frag_in_queue_01, > + tv_mac_ipv4_nvgre_ipv4_frag_queue_region_02, > + tv_mac_ipv4_nvgre_ipv4_frag_drop_03 > + ] > + > +#test vector mac_ipv4_nvgre_ipv4_pay > +tv_mac_ipv4_nvgre_ipv4_pay_in_queue_01 =3D { > + "name":"tv_mac_ipv4_nvgre_ipv4_pay_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.1= 68.1.3 / > end actions queue index 3 / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/E= ther( > )/IP(src=3D"192.168.1.2", dst=3D"192.168.1.3")/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.3")/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":3= }}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI=3D2= )/Et > her()/IP(src=3D"192.168.1.2", dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D3)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.4", > dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.5")/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":3}}, > + "expect_results":{"expect_pkts":4}} > +} > + > +tv_mac_ipv4_nvgre_ipv4_pay_queue_region_02 =3D { > + "name":"tv_mac_ipv4_nvgre_ipv4_pay_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.1= 68.1.3 / > end actions rss queues 2 3 end / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/E= ther( > )/IP(src=3D"192.168.1.2", dst=3D"192.168.1.3")/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.3")/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI=3D2= )/Et > her()/IP(src=3D"192.168.1.2", dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D3)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.4", > dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.5")/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":4}} > +} > + > +tv_mac_ipv4_nvgre_ipv4_pay_drop_03 =3D { > + "name":"tv_mac_ipv4_nvgre_ipv4_pay_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.1= 68.1.3 / > end actions drop / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/E= ther( > )/IP(src=3D"192.168.1.2", dst=3D"192.168.1.3")/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.3")/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI=3D2= )/Et > her()/IP(src=3D"192.168.1.2", dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D3)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.4", > dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.5")/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":4}} > +} > + > +tvs_mac_ipv4_nvgre_ipv4_pay =3D [ > + tv_mac_ipv4_nvgre_ipv4_pay_in_queue_01, > + tv_mac_ipv4_nvgre_ipv4_pay_queue_region_02, > + tv_mac_ipv4_nvgre_ipv4_pay_drop_03 > + ] > + > +#test vector mac_ipv4_nvgre_ipv4_udp_pay > +tv_mac_ipv4_nvgre_ipv4_udp_pay_in_queue_01 =3D { > + "name":"tv_mac_ipv4_nvgre_ipv4_udp_pay_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 0x8 / eth / ipv4 src is 192.168.0.2 dst is 192= .168.0.3 / > udp src is 50 dst is 23 / end actions queue index 4 / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D0x8)= /Eth > er()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":4= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D0= x8)/ > Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D20,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D0x8)/Ether()/IP(src=3D"192.1= 68.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D50,dport=3D19)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":4}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_nvgre_ipv4_udp_pay_queue_region_02 =3D { > + "name":"tv_mac_ipv4_nvgre_ipv4_udp_pay_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 0x8 / eth / ipv4 src is 192.168.0.2 dst is 192= .168.0.3 / > udp src is 50 dst is 23 / end actions rss queues 4 5 end / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D0x8)= /Eth > er()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 4, 5]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D0= x8)/ > Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D20,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D0x8)/Ether()/IP(src=3D"192.1= 68.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D50,dport=3D19)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[4, 5]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_nvgre_ipv4_udp_pay_drop_03 =3D { > + "name":"tv_mac_ipv4_nvgre_ipv4_udp_pay_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 0x8 / eth / ipv4 src is 192.168.0.2 dst is 192= .168.0.3 / > udp src is 50 dst is 23 / end actions drop / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D0x8)= /Eth > er()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D0= x8)/ > Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D20,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D0x8)/Ether()/IP(src=3D"192.1= 68.0.2", > dst=3D"192.168.0.3")/UDP(sport=3D50,dport=3D19)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tvs_mac_ipv4_nvgre_ipv4_udp_pay =3D [ > + tv_mac_ipv4_nvgre_ipv4_udp_pay_in_queue_01, > + tv_mac_ipv4_nvgre_ipv4_udp_pay_queue_region_02, > + tv_mac_ipv4_nvgre_ipv4_udp_pay_drop_03 > + ] > + > +#test vector mac_ipv4_nvgre_ipv4_tcp > +tv_mac_ipv4_nvgre_ipv4_tcp_in_queue_01 =3D { > + "name":"tv_mac_ipv4_nvgre_ipv4_tcp_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.1= 68.1.3 / > tcp src is 25 dst is 23 / end actions queue index 1 / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/E= ther( > )/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/TCP(sport=3D25,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":1= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2= )/Et > her()/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/TCP(sport=3D20,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.3")/TCP(sport=3D25,dport=3D39)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":1}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_nvgre_ipv4_tcp_queue_region_02 =3D { > + "name":"tv_mac_ipv4_nvgre_ipv4_tcp_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.1= 68.1.3 / > tcp src is 25 dst is 23 / end actions rss queues 1 2 end / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/E= ther( > )/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/TCP(sport=3D25,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 1, 2]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2= )/Et > her()/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/TCP(sport=3D20,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.3")/TCP(sport=3D25,dport=3D39)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[1, 2]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_nvgre_ipv4_tcp_drop_03 =3D { > + "name":"tv_mac_ipv4_nvgre_ipv4_tcp_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.1= 68.1.3 / > tcp src is 25 dst is 23 / end actions drop / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/E= ther( > )/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/TCP(sport=3D25,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2= )/Et > her()/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/TCP(sport=3D20,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether()/IP(src=3D"192.168= .1.2", > dst=3D"192.168.1.3")/TCP(sport=3D25,dport=3D39)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tvs_mac_ipv4_nvgre_ipv4_tcp =3D [ > + tv_mac_ipv4_nvgre_ipv4_tcp_in_queue_01, > + tv_mac_ipv4_nvgre_ipv4_tcp_queue_region_02, > + tv_mac_ipv4_nvgre_ipv4_tcp_drop_03 > + ] > + > +#test vector mac_ipv4_nvgre_mac_ipv4_frag > +tv_mac_ipv4_nvgre_mac_ipv4_frag_in_queue_01 =3D { > + "name":"tv_mac_ipv4_nvgre_mac_ipv4_frag_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is > 192.168.1.2 dst is 192.168.1.3 / end actions queue index 3 / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/E= ther( > dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.3" ,frag=3D5)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":3= }}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI=3D2= )/Et > her(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D3)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)= ', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a9") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)= ', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.4", dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)= ', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.5" ,frag=3D5)/TCP()/Raw("x"*80)= '], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":3}}, > + "expect_results":{"expect_pkts":5}} > +} > + > +tv_mac_ipv4_nvgre_mac_ipv4_frag_queue_region_02 =3D { > + "name":"tv_mac_ipv4_nvgre_mac_ipv4_frag_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is > 192.168.1.2 dst is 192.168.1.3 / end actions rss queues 2 3 end / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/E= ther( > dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.3" ,frag=3D5)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI=3D2= )/Et > her(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D3)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)= ', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a9") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)= ', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.4", dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)= ', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.5" ,frag=3D5)/TCP()/Raw("x"*80)= '], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":5}} > +} > + > +tv_mac_ipv4_nvgre_mac_ipv4_frag_drop_03 =3D { > + "name":"tv_mac_ipv4_nvgre_mac_ipv4_frag_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is > 192.168.1.2 dst is 192.168.1.3 / end actions drop / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/E= ther( > dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.3" ,frag=3D5)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI=3D2= )/Et > her(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D3)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)= ', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a9") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)= ', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.4", dst=3D"192.168.1.3" ,frag=3D5)/TCP()/Raw("x"*80)= ', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.5" ,frag=3D5)/TCP()/Raw("x"*80)= '], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":5}} > +} > + > +tvs_mac_ipv4_nvgre_mac_ipv4_frag =3D [ > + tv_mac_ipv4_nvgre_mac_ipv4_frag_in_queue_01, > + tv_mac_ipv4_nvgre_mac_ipv4_frag_queue_region_02, > + tv_mac_ipv4_nvgre_mac_ipv4_frag_drop_03 > + ] > + > +#test vector mac_ipv4_nvgre_mac_ipv4_pay > +tv_mac_ipv4_nvgre_mac_ipv4_pay_in_queue_01 =3D { > + "name":"tv_mac_ipv4_nvgre_mac_ipv4_pay_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src i= s > 192.168.1.2 dst is 192.168.1.3 / end actions queue index 3 / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/E= ther( > dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.3")/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":3= }}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI=3D2= )/Et > her(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D3)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a9") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.4", dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.5")/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":3}}, > + "expect_results":{"expect_pkts":5}} > +} > + > +tv_mac_ipv4_nvgre_mac_ipv4_pay_queue_region_02 =3D { > + "name":"tv_mac_ipv4_nvgre_mac_ipv4_pay_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src i= s > 192.168.1.2 dst is 192.168.1.3 / end actions rss queues 2 3 end / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/E= ther( > dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.3")/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI=3D2= )/Et > her(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D3)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a9") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.4", dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.5")/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":5}} > +} > + > +tv_mac_ipv4_nvgre_mac_ipv4_pay_drop_03 =3D { > + "name":"tv_mac_ipv4_nvgre_mac_ipv4_pay_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src i= s > 192.168.1.2 dst is 192.168.1.3 / end actions drop / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/E= ther( > dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/TCP()/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.3")/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI=3D2= )/Et > her(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D3)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a9") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.4", dst=3D"192.168.1.3")/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", dst=3D"192.168.1.5")/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":5}} > +} > + > +tvs_mac_ipv4_nvgre_mac_ipv4_pay =3D [ > + tv_mac_ipv4_nvgre_mac_ipv4_pay_in_queue_01, > + tv_mac_ipv4_nvgre_mac_ipv4_pay_queue_region_02, > + tv_mac_ipv4_nvgre_mac_ipv4_pay_drop_03 > + ] > + > +#test vector mac_ipv4_nvgre_mac_ipv4_udp_pay > +tv_mac_ipv4_nvgre_mac_ipv4_udp_pay_in_queue_01 =3D { > + "name":"tv_mac_ipv4_nvgre_mac_ipv4_udp_pay_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 0x8 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 sr= c is > 192.168.1.2 dst is 192.168.1.3 / udp src is 25 dst is 23 / end actions qu= eue > index 2 / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D0x8)= /Eth > er(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/UDP(sport=3D25,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":2= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D0= x8)/ > Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/UDP(sport=3D2,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D0x8)/Ether(dst=3D"68:05:ca:8= d:ed:a > 8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/UDP(sport=3D25,dport=3D20)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":2}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_nvgre_mac_ipv4_udp_pay_queue_region_02 =3D { > + "name":"tv_mac_ipv4_nvgre_mac_ipv4_udp_pay_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 0x8 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 sr= c is > 192.168.1.2 dst is 192.168.1.3 / udp src is 25 dst is 23 / end actions rs= s > queues 2 3 end / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D0x8)= /Eth > er(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/UDP(sport=3D25,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D0= x8)/ > Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/UDP(sport=3D2,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D0x8)/Ether(dst=3D"68:05:ca:8= d:ed:a > 8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/UDP(sport=3D25,dport=3D20)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_nvgre_mac_ipv4_udp_pay_drop_03 =3D { > + "name":"tv_mac_ipv4_nvgre_mac_ipv4_udp_pay_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 0x8 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 sr= c is > 192.168.1.2 dst is 192.168.1.3 / udp src is 25 dst is 23 / end actions dr= op / > end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D0x8)= /Eth > er(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/UDP(sport=3D25,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D0= x8)/ > Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/UDP(sport=3D2,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D0x8)/Ether(dst=3D"68:05:ca:8= d:ed:a > 8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/UDP(sport=3D25,dport=3D20)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tvs_mac_ipv4_nvgre_mac_ipv4_udp_pay =3D [ > + tv_mac_ipv4_nvgre_mac_ipv4_udp_pay_in_queue_01, > + tv_mac_ipv4_nvgre_mac_ipv4_udp_pay_queue_region_02, > + tv_mac_ipv4_nvgre_mac_ipv4_udp_pay_drop_03 > + ] > + > +#test vector mac_ipv4_nvgre_mac_ipv4_tcp > +tv_mac_ipv4_nvgre_mac_ipv4_tcp_in_queue_01 =3D { > + "name":"tv_mac_ipv4_nvgre_mac_ipv4_tcp_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src i= s > 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions qu= eue > index 3 / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/E= ther( > dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/TCP(sport=3D25,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":3= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2= )/Et > her(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/TCP(sport=3D1,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/TCP(sport=3D25,dport=3D20)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":3}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_nvgre_mac_ipv4_tcp_queue_region_02 =3D { > + "name":"tv_mac_ipv4_nvgre_mac_ipv4_tcp_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src i= s > 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions rs= s queues > 2 3 end / end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/E= ther( > dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/TCP(sport=3D25,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2= )/Et > her(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/TCP(sport=3D1,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/TCP(sport=3D25,dport=3D20)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_nvgre_mac_ipv4_tcp_drop_03 =3D { > + "name":"tv_mac_ipv4_nvgre_mac_ipv4_tcp_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is > 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src i= s > 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions dr= op / > end", > + > "matched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/E= ther( > dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/TCP(sport=3D25,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2= )/Et > her(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/TCP(sport=3D1,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI=3D2)/Ether(dst=3D"68:05:ca:8d:= ed:a8") > /IP(src=3D"192.168.1.2", > dst=3D"192.168.1.3")/TCP(sport=3D25,dport=3D20)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tvs_mac_ipv4_nvgre_mac_ipv4_tcp =3D [ > + tv_mac_ipv4_nvgre_mac_ipv4_tcp_in_queue_01, > + tv_mac_ipv4_nvgre_mac_ipv4_tcp_queue_region_02, > + tv_mac_ipv4_nvgre_mac_ipv4_tcp_drop_03 > + ] > + > +#pppod non-pipeline mode > +#test vector mac_pppod_pay > +tv_mac_pppod_pay_in_queue_01 =3D { > + "name":"tv_mac_pppod_pay_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth type is 0x8863= / end > actions queue index 2 / end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/PPPoED()/PPP()/= IP() > /Raw("x" *80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":2= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/PPPoE()/PPP(= )/I > P()/Raw("x" *80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":2}}, > + "expect_results":{"expect_pkts":1}} > +} > + > +tv_mac_pppod_pay_queue_region_02 =3D { > + "name":"tv_mac_pppod_pay_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth type is 0x8863= / end > actions rss queues 4 5 end / end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/PPPoED()/PPP()/= IP() > /Raw("x" *80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 4, 5]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/PPPoE()/PPP(= )/I > P()/Raw("x" *80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[4, 5]}}, > + "expect_results":{"expect_pkts":1}} > +} > + > +tv_mac_pppod_pay_drop_03 =3D { > + "name":"tv_mac_pppod_pay_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth type is 0x8863= / end > actions drop / end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/PPPoED()/PPP()/= IP() > /Raw("x" *80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/PPPoE()/PPP(= )/I > P()/Raw("x" *80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":1}} > +} > + > +tvs_mac_pppod_pay =3D [ > + tv_mac_pppod_pay_in_queue_01, > + tv_mac_pppod_pay_queue_region_02, > + tv_mac_pppod_pay_drop_03 > + ] > + > +#pppoe non-pipeline mode > +#test vector mac_pppoe_pay > +tv_mac_pppoe_pay_in_queue_01 =3D { > + "name":"tv_mac_pppoe_pay_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth type is 0x8864= / end > actions queue index 2 / end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/PPPoE()/PPP()/I= P()/ > Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":2= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/PPPoED()/PPP= ()/ > IP()/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":2}}, > + "expect_results":{"expect_pkts":1}} > +} > + > +tv_mac_pppoe_pay_queue_region_02 =3D { > + "name":"tv_mac_pppoe_pay_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth type is 0x8864= / end > actions rss queues 2 3 end / end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/PPPoE()/PPP()/I= P()/ > Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/PPPoED()/PPP= ()/ > IP()/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":1}} > +} > + > +tv_mac_pppoe_pay_drop_03 =3D { > + "name":"tv_mac_pppoe_pay_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth type is 0x8864= / end > actions drop / end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/PPPoE()/PPP()/I= P()/ > Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/PPPoED()/PPP= ()/ > IP()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":1}} > +} > + > +tvs_mac_pppoe_pay =3D [ > + tv_mac_pppoe_pay_in_queue_01, > + tv_mac_pppoe_pay_queue_region_02, > + tv_mac_pppoe_pay_drop_03 > + ] > + > +#test vector mac_pppoe_ipv4_frag > +tv_mac_pppoe_ipv4_frag_in_queue_01 =3D { > + "name":"tv_mac_pppoe_ipv4_frag_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions queue index 1 / = end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP(frag=3D5)/Raw("x"= * 80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":1= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:54",type=3D0x8100= )/Do > t1Q(vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP(frag=3D5)/Raw(= "x" * > 80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":1}}, > + "expect_results":{"expect_pkts":1}} > +} > + > +tv_mac_pppoe_ipv4_frag_queue_region_02 =3D { > + "name":"tv_mac_pppoe_ipv4_frag_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions rss queues 2 3 e= nd / > end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP(frag=3D5)/Raw("x"= * 80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:54",type=3D0x8100= )/Do > t1Q(vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP(frag=3D5)/Raw(= "x" * > 80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":1}} > +} > + > +tv_mac_pppoe_ipv4_frag_drop_03 =3D { > + "name":"tv_mac_pppoe_ipv4_frag_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions drop / end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP(frag=3D5)/Raw("x"= * 80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:54",type=3D0x8100= )/Do > t1Q(vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP(frag=3D5)/Raw(= "x" * > 80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":1}} > +} > + > +tvs_mac_pppoe_ipv4_frag =3D [ > + tv_mac_pppoe_ipv4_frag_in_queue_01, > + tv_mac_pppoe_ipv4_frag_queue_region_02, > + tv_mac_pppoe_ipv4_frag_drop_03 > + ] > + > +#test vector mac_pppoe_ipv4_pay > +tv_mac_pppoe_ipv4_pay_in_queue_01 =3D { > + "name":"tv_mac_pppoe_ipv4_pay_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions queue index 1 / = end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP()/Raw("x" * 80)']= , > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":1= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:54",type=3D0x8100= )/Do > t1Q(vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP()/Raw("x" * 80= )', > + > 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type=3D0x8= 864)/PP > PoE()/PPP(proto=3D0x0021)/IP()/Raw("x" * 80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":1}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_pppoe_ipv4_pay_queue_region_02 =3D { > + "name":"tv_mac_pppoe_ipv4_pay_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions rss queues 2 3 e= nd / > end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP()/Raw("x" * 80)']= , > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:54",type=3D0x8100= )/Do > t1Q(vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP()/Raw("x" * 80= )', > + > 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type=3D0x8= 864)/PP > PoE()/PPP(proto=3D0x0021)/IP()/Raw("x" * 80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_pppoe_ipv4_pay_drop_03 =3D { > + "name":"tv_mac_pppoe_ipv4_pay_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions drop / end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP()/Raw("x" * 80)']= , > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:54",type=3D0x8100= )/Do > t1Q(vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP()/Raw("x" * 80= )', > + > 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type=3D0x8= 864)/PP > PoE()/PPP(proto=3D0x0021)/IP()/Raw("x" * 80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tvs_mac_pppoe_ipv4_pay =3D [ > + tv_mac_pppoe_ipv4_pay_in_queue_01, > + tv_mac_pppoe_ipv4_pay_queue_region_02, > + tv_mac_pppoe_ipv4_pay_drop_03 > + ] > + > +#test vector mac_pppoe_ipv4_udp_pay > +tv_mac_pppoe_ipv4_udp_pay_in_queue_01 =3D { > + "name":"tv_mac_pppoe_ipv4_udp_pay_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions queue index 1 / = end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP()/UDP()/Raw("x" *= 80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":1= }}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv4_udp_pay_queue_region_02 =3D { > + "name":"tv_mac_pppoe_ipv4_udp_pay_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions rss queues 4 5 e= nd / > end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP()/UDP()/Raw("x" *= 80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 4, 5]}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv4_udp_pay_drop_03 =3D { > + "name":"tv_mac_pppoe_ipv4_udp_pay_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions drop / end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP()/UDP()/Raw("x" *= 80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tvs_mac_pppoe_ipv4_udp_pay =3D [ > + tv_mac_pppoe_ipv4_udp_pay_in_queue_01, > + tv_mac_pppoe_ipv4_udp_pay_queue_region_02, > + tv_mac_pppoe_ipv4_udp_pay_drop_03 > + ] > + > +#test vector mac_pppoe_ipv4_tcp > +tv_mac_pppoe_ipv4_tcp_in_queue_01 =3D { > + "name":"tv_mac_pppoe_ipv4_tcp_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions queue index 1 / = end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP()/TCP()/Raw("x"*8= 0)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":1= }}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv4_tcp_queue_region_02 =3D { > + "name":"tv_mac_pppoe_ipv4_tcp_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions rss queues 2 3 e= nd / > end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP()/TCP()/Raw("x"*8= 0)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv4_tcp_drop_03 =3D { > + "name":"tv_mac_pppoe_ipv4_tcp_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions drop / end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP()/TCP()/Raw("x"*8= 0)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tvs_mac_pppoe_ipv4_tcp =3D [ > + tv_mac_pppoe_ipv4_tcp_in_queue_01, > + tv_mac_pppoe_ipv4_tcp_queue_region_02, > + tv_mac_pppoe_ipv4_tcp_drop_03 > + ] > + > +#test vector mac_pppoe_ipv4_sctp > +tv_mac_pppoe_ipv4_sctp_in_queue_01 =3D { > + "name":"tv_mac_pppoe_ipv4_sctp_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions queue index 1 / = end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP()/SCTP()/Raw("x"*= 80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":1= }}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv4_sctp_queue_region_02 =3D { > + "name":"tv_mac_pppoe_ipv4_sctp_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions rss queues 2 3 e= nd / > end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP()/SCTP()/Raw("x"*= 80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv4_sctp_drop_03 =3D { > + "name":"tv_mac_pppoe_ipv4_sctp_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions drop / end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP()/SCTP()/Raw("x"*= 80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tvs_mac_pppoe_ipv4_sctp =3D [ > + tv_mac_pppoe_ipv4_sctp_in_queue_01, > + tv_mac_pppoe_ipv4_sctp_queue_region_02, > + tv_mac_pppoe_ipv4_sctp_drop_03 > + ] > + > +#test vector mac_pppoe_ipv4_icmp > +tv_mac_pppoe_ipv4_icmp_in_queue_01 =3D { > + "name":"tv_mac_pppoe_ipv4_icmp_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions queue index 1 / = end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP()/ICMP()/Raw("x"*= 80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":1= }}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv4_icmp_queue_region_02 =3D { > + "name":"tv_mac_pppoe_ipv4_icmp_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions rss queues 2 3 e= nd / > end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP()/ICMP()/Raw("x"*= 80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv4_icmp_drop_03 =3D { > + "name":"tv_mac_pppoe_ipv4_icmp_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions drop / end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0021)/IP()/ICMP()/Raw("x"*= 80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tvs_mac_pppoe_ipv4_icmp =3D [ > + tv_mac_pppoe_ipv4_icmp_in_queue_01, > + tv_mac_pppoe_ipv4_icmp_queue_region_02, > + tv_mac_pppoe_ipv4_icmp_drop_03 > + ] > + > +#test vector mac_pppoe_ipv6_frag > +tv_mac_pppoe_ipv6_frag_in_queue_01 =3D { > + "name":"tv_mac_pppoe_ipv6_frag_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions queue index 1 / = end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0057)/IPv6()/IPv6ExtHdrFra= gme > nt()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":1= }}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv6_frag_queue_region_02 =3D { > + "name":"tv_mac_pppoe_ipv6_frag_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions rss queues 2 3 e= nd / > end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0057)/IPv6()/IPv6ExtHdrFra= gme > nt()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv6_frag_drop_03 =3D { > + "name":"tv_mac_pppoe_ipv6_frag_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions drop / end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0057)/IPv6()/IPv6ExtHdrFra= gme > nt()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tvs_mac_pppoe_ipv6_frag =3D [ > + tv_mac_pppoe_ipv6_frag_in_queue_01, > + tv_mac_pppoe_ipv6_frag_queue_region_02, > + tv_mac_pppoe_ipv6_frag_drop_03 > + ] > + > +#test vector mac_pppoe_ipv6_pay > +tv_mac_pppoe_ipv6_pay_in_queue_01 =3D { > + "name":"tv_mac_pppoe_ipv6_pay_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions queue index 1 / = end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0057)/IPv6()/Raw("x" * 80)= '], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":1= }}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv6_pay_queue_region_02 =3D { > + "name":"tv_mac_pppoe_ipv6_pay_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions rss queues 2 3 e= nd / > end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0057)/IPv6()/Raw("x" * 80)= '], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv6_pay_drop_03 =3D { > + "name":"tv_mac_pppoe_ipv6_pay_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions drop / end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0057)/IPv6()/Raw("x" * 80)= '], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tvs_mac_pppoe_ipv6_pay =3D [ > + tv_mac_pppoe_ipv6_pay_in_queue_01, > + tv_mac_pppoe_ipv6_pay_queue_region_02, > + tv_mac_pppoe_ipv6_pay_drop_03 > + ] > + > +#test vector mac_pppoe_ipv6_udp_pay > +tv_mac_pppoe_ipv6_udp_pay_in_queue_01 =3D { > + "name":"tv_mac_pppoe_ipv6_udp_pay_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions queue index 1 / = end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0057)/IPv6()/UDP()/Raw("x"= * > 80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":1= }}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv6_udp_pay_queue_region_02 =3D { > + "name":"tv_mac_pppoe_ipv6_udp_pay_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions rss queues 4 5 e= nd / > end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0057)/IPv6()/UDP()/Raw("x"= * > 80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 4, 5]}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv6_udp_pay_drop_03 =3D { > + "name":"tv_mac_pppoe_ipv6_udp_pay_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions drop / end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0057)/IPv6()/UDP()/Raw("x"= * > 80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tvs_mac_pppoe_ipv6_udp_pay =3D [ > + tv_mac_pppoe_ipv6_udp_pay_in_queue_01, > + tv_mac_pppoe_ipv6_udp_pay_queue_region_02, > + tv_mac_pppoe_ipv6_udp_pay_drop_03 > + ] > + > +#test vector mac_pppoe_ipv6_tcp > +tv_mac_pppoe_ipv6_tcp_in_queue_01 =3D { > + "name":"tv_mac_pppoe_ipv6_tcp_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions queue index 1 / = end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0057)/IPv6()/TCP()/Raw("x"= * > 80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":1= }}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv6_tcp_queue_region_02 =3D { > + "name":"tv_mac_pppoe_ipv6_tcp_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions rss queues 2 3 4= 5 end > / end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0057)/IPv6()/TCP()/Raw("x"= * > 80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3, 4, 5]}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv6_tcp_drop_03 =3D { > + "name":"tv_mac_pppoe_ipv6_tcp_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions drop / end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0057)/IPv6()/TCP()/Raw("x"= * > 80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tvs_mac_pppoe_ipv6_tcp =3D [ > + tv_mac_pppoe_ipv6_tcp_in_queue_01, > + tv_mac_pppoe_ipv6_tcp_queue_region_02, > + tv_mac_pppoe_ipv6_tcp_drop_03 > + ] > + > +#test vector mac_pppoe_ipv6_sctp > +tv_mac_pppoe_ipv6_sctp_in_queue_01 =3D { > + "name":"tv_mac_pppoe_ipv6_sctp_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions queue index 1 / = end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0057)/IPv6()/SCTP()/Raw("x= "*80 > )'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":1= }}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv6_sctp_queue_region_02 =3D { > + "name":"tv_mac_pppoe_ipv6_sctp_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions rss queues 2 3 e= nd / > end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0057)/IPv6()/SCTP()/Raw("x= "*80 > )'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv6_sctp_drop_03 =3D { > + "name":"tv_mac_pppoe_ipv6_sctp_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions drop / end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0057)/IPv6()/SCTP()/Raw("x= "*80 > )'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tvs_mac_pppoe_ipv6_sctp =3D [ > + tv_mac_pppoe_ipv6_sctp_in_queue_01, > + tv_mac_pppoe_ipv6_sctp_queue_region_02, > + tv_mac_pppoe_ipv6_sctp_drop_03 > + ] > + > +#test vector mac_pppoe_ipv6_icmpv6 > +tv_mac_pppoe_ipv6_icmpv6_in_queue_01 =3D { > + "name":"tv_mac_pppoe_ipv6_icmpv6_in_queue_01", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions queue index 1 / = end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0057)/IPv6()/ICMP()/Raw("x= "*8 > 0)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":1= }}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv6_icmpv6_queue_region_02 =3D { > + "name":"tv_mac_pppoe_ipv6_icmpv6_queue_region_02", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions rss queues 2 3 e= nd / > end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0057)/IPv6()/ICMP()/Raw("x= "*8 > 0)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tv_mac_pppoe_ipv6_icmpv6_drop_03 =3D { > + "name":"tv_mac_pppoe_ipv6_icmpv6_drop_03", > + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions drop / end", > + > "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/D= ot1Q > (vlan=3D1,type=3D0x8864)/PPPoE()/PPP(proto=3D0x0057)/IPv6()/ICMP()/Raw("x= "*8 > 0)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + "mismatched":{} > +} > + > +tvs_mac_pppoe_ipv6_icmpv6 =3D [ > + tv_mac_pppoe_ipv6_icmpv6_in_queue_01, > + tv_mac_pppoe_ipv6_icmpv6_queue_region_02, > + tv_mac_pppoe_ipv6_icmpv6_drop_03 > + ] > + > +#vxlan pipeline mode > +#test vector mac_ipv4_vxlan_ipv4_frag_pipeline_mode > +tv_mac_ipv4_vxlan_ipv4_frag_pipeline_mode_in_queue_01 =3D { > + "name":"tv_mac_ipv4_vxlan_ipv4_frag_pipeline_mode_in_queue_01", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 / > udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 /= end > actions queue index 2 / end", > + > "matched":{"scapy_str":['Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"192= .168 > .0.2", dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src= =3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":2= }}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"= 192. > 168.0.4", dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP()/UDP()/VXLAN()/Ether()/IP(sr= c=3D"192.168.0.2", > dst=3D"192.168.0.5",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP()/UDP()/VXLAN()/Ether()/IP(sr= c=3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D5,frag=3D5)/TCP()/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":2}}, > + "expect_results":{"expect_pkts":3}} > +} > + > +tv_mac_ipv4_vxlan_ipv4_frag_pipeline_mode_queue_region_02 =3D { > + > "name":"tv_mac_ipv4_vxlan_ipv4_frag_pipeline_mode_queue_region_02", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 / > udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 /= end > actions rss queues 2 3 end / end", > + > "matched":{"scapy_str":['Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"192= .168 > .0.2", dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src= =3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"= 192. > 168.0.4", dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP()/UDP()/VXLAN()/Ether()/IP(sr= c=3D"192.168.0.2", > dst=3D"192.168.0.5",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP()/UDP()/VXLAN()/Ether()/IP(sr= c=3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D5,frag=3D5)/TCP()/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":3}} > +} > + > +tv_mac_ipv4_vxlan_ipv4_frag_pipeline_mode_drop_03 =3D { > + "name":"tv_mac_ipv4_vxlan_ipv4_frag_pipeline_mode_drop_03", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 / > udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 /= end > actions drop / end", > + > "matched":{"scapy_str":['Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"192= .168 > .0.2", dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src= =3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"= 192. > 168.0.4", dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP()/UDP()/VXLAN()/Ether()/IP(sr= c=3D"192.168.0.2", > dst=3D"192.168.0.5",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP()/UDP()/VXLAN()/Ether()/IP(sr= c=3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D5,frag=3D5)/TCP()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":3}} > +} > + > +tvs_mac_ipv4_vxlan_ipv4_frag_pipeline_mode =3D [ > + tv_mac_ipv4_vxlan_ipv4_frag_pipeline_mode_in_queue_01, > + tv_mac_ipv4_vxlan_ipv4_frag_pipeline_mode_queue_region_02, > + tv_mac_ipv4_vxlan_ipv4_frag_pipeline_mode_drop_03 > + ] > + > +#test vector mac_ipv4_vxlan_ipv4_udp_pay_pipeline_mode > +tv_mac_ipv4_vxlan_ipv4_udp_pay_pipeline_mode_in_queue_01 =3D { > + > "name":"tv_mac_ipv4_vxlan_ipv4_udp_pay_pipeline_mode_in_queue_01", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 / > udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 /= udp src > is 50 dst is 23 / end actions queue index 2 / end", > + > "matched":{"scapy_str":['Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"192= .168 > .0.2",dst=3D"192.168.0.3",tos=3D4)/UDP(sport=3D50,dport=3D23)/Raw("x"*80)= '], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":2= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"= 192. > 168.0.2",dst=3D"192.168.0.3",tos=3D4)/UDP(sport=3D20,dport=3D23)/Raw("x"*= 80)', > + > 'Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168= .0.3",t > os=3D4)/UDP(sport=3D50,dport=3D29)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":2}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_vxlan_ipv4_udp_pay_pipeline_mode_queue_region_02 =3D { > + > "name":"tv_mac_ipv4_vxlan_ipv4_udp_pay_pipeline_mode_queue_region_ > 02", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 / > udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 /= udp src > is 50 dst is 23 / end actions rss queues 4 5 end / end", > + > "matched":{"scapy_str":['Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"192= .168 > .0.2",dst=3D"192.168.0.3",tos=3D4)/UDP(sport=3D50,dport=3D23)/Raw("x"*80)= '], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 4, 5]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"= 192. > 168.0.2",dst=3D"192.168.0.3",tos=3D4)/UDP(sport=3D20,dport=3D23)/Raw("x"*= 80)', > + > 'Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168= .0.3",t > os=3D4)/UDP(sport=3D50,dport=3D29)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[4, 5]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_vxlan_ipv4_udp_pay_pipeline_mode_drop_03 =3D { > + "name":"tv_mac_ipv4_vxlan_ipv4_udp_pay_pipeline_mode_drop_03", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 / > udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 /= udp src > is 50 dst is 23 / end actions drop / end", > + > "matched":{"scapy_str":['Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"192= .168 > .0.2",dst=3D"192.168.0.3",tos=3D4)/UDP(sport=3D50,dport=3D23)/Raw("x"*80)= '], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"= 192. > 168.0.2",dst=3D"192.168.0.3",tos=3D4)/UDP(sport=3D20,dport=3D23)/Raw("x"*= 80)', > + > 'Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168= .0.3",t > os=3D4)/UDP(sport=3D50,dport=3D29)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tvs_mac_ipv4_vxlan_ipv4_udp_pay_pipeline_mode =3D [ > + tv_mac_ipv4_vxlan_ipv4_udp_pay_pipeline_mode_in_queue_01, > + tv_mac_ipv4_vxlan_ipv4_udp_pay_pipeline_mode_queue_region_02, > + tv_mac_ipv4_vxlan_ipv4_udp_pay_pipeline_mode_drop_03 > + ] > + > + > +#test vector mac_ipv4_vxlan_ipv4_tcp_pipeline_mode > +tv_mac_ipv4_vxlan_ipv4_tcp_pipeline_mode_in_queue_01 =3D { > + "name":"tv_mac_ipv4_vxlan_ipv4_tcp_pipeline_mode_in_queue_01", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 / > udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 /= tcp src is > 50 dst is 23 / end actions queue index 3 / end", > + > "matched":{"scapy_str":['Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"192= .168 > .0.2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D50,dport=3D23)/Raw("x"*80)= '], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":3= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"= 192. > 168.0.2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D19,dport=3D23)/Raw("x"*= 80)', > + > 'Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168= .0.3",t > os=3D4)/TCP(sport=3D50,dport=3D30)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":3}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_vxlan_ipv4_tcp_pipeline_mode_queue_region_02 =3D { > + > "name":"tv_mac_ipv4_vxlan_ipv4_tcp_pipeline_mode_queue_region_02", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 / > udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 /= tcp src is > 50 dst is 23 / end actions rss queues 4 5 end / end", > + > "matched":{"scapy_str":['Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"192= .168 > .0.2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D50,dport=3D23)/Raw("x"*80)= '], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 4, 5]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"= 192. > 168.0.2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D19,dport=3D23)/Raw("x"*= 80)', > + > 'Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168= .0.3",t > os=3D4)/TCP(sport=3D50,dport=3D30)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[4, 5]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_vxlan_ipv4_tcp_pipeline_mode_drop_03 =3D { > + "name":"tv_mac_ipv4_vxlan_ipv4_tcp_pipeline_mode_drop_03", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 / > udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 /= tcp src is > 50 dst is 23 / end actions drop / end", > + > "matched":{"scapy_str":['Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"192= .168 > .0.2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D50,dport=3D23)/Raw("x"*80)= '], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"= 192. > 168.0.2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D19,dport=3D23)/Raw("x"*= 80)', > + > 'Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168= .0.3",t > os=3D4)/TCP(sport=3D50,dport=3D30)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tvs_mac_ipv4_vxlan_ipv4_tcp_pipeline_mode =3D [ > + tv_mac_ipv4_vxlan_ipv4_tcp_pipeline_mode_in_queue_01, > + tv_mac_ipv4_vxlan_ipv4_tcp_pipeline_mode_queue_region_02, > + tv_mac_ipv4_vxlan_ipv4_tcp_pipeline_mode_drop_03 > + ] > + > +#nvgre pipeline mode > +#test vector mac_ipv4_nvgre_ipv4_frag_pipeline_mode > +tv_mac_ipv4_nvgre_ipv4_frag_pipeline_mode_in_queue_01 =3D { > + "name":"tv_mac_ipv4_nvgre_ipv4_frag_pipeline_mode_in_queue_01", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 / > nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / end a= ctions > queue index 3 / end", > + > "matched":{"scapy_str":['Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.168.0= .2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.= 168.0.2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":3= }}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.16= 8.0. > 4", dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP()/NVGRE()/Ether()/IP(src=3D"1= 92.168.0.2", > dst=3D"192.168.0.5",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP()/NVGRE()/Ether()/IP(src=3D"1= 92.168.0.2", > dst=3D"192.168.0.3",tos=3D5,frag=3D5)/TCP()/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":3}}, > + "expect_results":{"expect_pkts":3}} > +} > + > +tv_mac_ipv4_nvgre_ipv4_frag_pipeline_mode_queue_region_02 =3D { > + > "name":"tv_mac_ipv4_nvgre_ipv4_frag_pipeline_mode_queue_region_02", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 / > nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / end a= ctions rss > queues 2 3 end / end", > + > "matched":{"scapy_str":['Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.168.0= .2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.= 168.0.2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.16= 8.0. > 4", dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP()/NVGRE()/Ether()/IP(src=3D"1= 92.168.0.2", > dst=3D"192.168.0.5",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP()/NVGRE()/Ether()/IP(src=3D"1= 92.168.0.2", > dst=3D"192.168.0.3",tos=3D5,frag=3D5)/TCP()/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":3}} > +} > + > +tv_mac_ipv4_nvgre_ipv4_frag_pipeline_mode_drop_03 =3D { > + "name":"tv_mac_ipv4_nvgre_ipv4_frag_pipeline_mode_drop_03", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 / > nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / end a= ctions > drop / end", > + > "matched":{"scapy_str":['Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.168.0= .2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.= 168.0.2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":2}}, > + > "mismatched":{"scapy_str":['Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.16= 8.0. > 4", dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP()/NVGRE()/Ether()/IP(src=3D"1= 92.168.0.2", > dst=3D"192.168.0.5",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP()/NVGRE()/Ether()/IP(src=3D"1= 92.168.0.2", > dst=3D"192.168.0.3",tos=3D5,frag=3D5)/TCP()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":3}} > +} > + > +tvs_mac_ipv4_nvgre_ipv4_frag_pipeline_mode =3D [ > + tv_mac_ipv4_nvgre_ipv4_frag_pipeline_mode_in_queue_01, > + tv_mac_ipv4_nvgre_ipv4_frag_pipeline_mode_queue_region_02, > + tv_mac_ipv4_nvgre_ipv4_frag_pipeline_mode_drop_03 > + ] > + > +#test vector mac_ipv4_nvgre_ipv4_udp_pay_pipeline_mode > +tv_mac_ipv4_nvgre_ipv4_udp_pay_pipeline_mode_in_queue_01 =3D { > + > "name":"tv_mac_ipv4_nvgre_ipv4_udp_pay_pipeline_mode_in_queue_01", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 / > nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / udp s= rc is 50 > dst is 23 / end actions queue index 2 / end", > + > "matched":{"scapy_str":['Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.168.0= .2", > dst=3D"192.168.0.3",tos=3D4)/UDP(sport=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":2= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.16= 8.0. > 2",dst=3D"192.168.0.3",tos=3D4)/UDP(sport=3D2,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.3",= tos=3D4)/ > UDP(sport=3D50,dport=3D100)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":2}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_nvgre_ipv4_udp_pay_pipeline_mode_queue_region_02 =3D { > + > "name":"tv_mac_ipv4_nvgre_ipv4_udp_pay_pipeline_mode_queue_region_ > 02", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 / > nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / udp s= rc is 50 > dst is 23 / end actions rss queues 4 5 end / end", > + > "matched":{"scapy_str":['Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.168.0= .2", > dst=3D"192.168.0.3",tos=3D4)/UDP(sport=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 4, 5]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.16= 8.0. > 2",dst=3D"192.168.0.3",tos=3D4)/UDP(sport=3D2,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.3",= tos=3D4)/ > UDP(sport=3D50,dport=3D100)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[4, 5]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_nvgre_ipv4_udp_pay_pipeline_mode_drop_03 =3D { > + "name":"tv_mac_ipv4_nvgre_ipv4_udp_pay_pipeline_mode_drop_03", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 / > nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / udp s= rc is 50 > dst is 23 / end actions drop / end", > + > "matched":{"scapy_str":['Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.168.0= .2", > dst=3D"192.168.0.3",tos=3D4)/UDP(sport=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.16= 8.0. > 2",dst=3D"192.168.0.3",tos=3D4)/UDP(sport=3D2,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.3",= tos=3D4)/ > UDP(sport=3D50,dport=3D100)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tvs_mac_ipv4_nvgre_ipv4_udp_pay_pipeline_mode =3D [ > + tv_mac_ipv4_nvgre_ipv4_udp_pay_pipeline_mode_in_queue_01, > + tv_mac_ipv4_nvgre_ipv4_udp_pay_pipeline_mode_queue_region_02, > + tv_mac_ipv4_nvgre_ipv4_udp_pay_pipeline_mode_drop_03 > + ] > + > +#test vector mac_ipv4_nvgre_ipv4_tcp_pipeline_mode > +tv_mac_ipv4_nvgre_ipv4_tcp_pipeline_mode_in_queue_01 =3D { > + "name":"tv_mac_ipv4_nvgre_ipv4_tcp_pipeline_mode_in_queue_01", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 / > nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / tcp s= rc is 50 > dst is 23 / end actions queue index 2 / end", > + > "matched":{"scapy_str":['Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.168.0= .2", > dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D50,dport=3D23)/Raw("x" * 80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":2= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.16= 8.0. > 2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D3,dport=3D23)/Raw("x" * 80)', > + > 'Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.3",= tos=3D4)/ > TCP(sport=3D50,dport=3D100)/Raw("x" * 80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":2}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_nvgre_ipv4_tcp_pipeline_mode_queue_region_02 =3D { > + > "name":"tv_mac_ipv4_nvgre_ipv4_tcp_pipeline_mode_queue_region_02", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 / > nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / tcp s= rc is 50 > dst is 23 / end actions rss queues 4 5 end / end", > + > "matched":{"scapy_str":['Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.168.0= .2", > dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D50,dport=3D23)/Raw("x" * 80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 4, 5]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.16= 8.0. > 2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D3,dport=3D23)/Raw("x" * 80)', > + > 'Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.3",= tos=3D4)/ > TCP(sport=3D50,dport=3D100)/Raw("x" * 80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[4, 5]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_nvgre_ipv4_tcp_pipeline_mode_drop_03 =3D { > + "name":"tv_mac_ipv4_nvgre_ipv4_tcp_pipeline_mode_drop_03", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 / > nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / tcp s= rc is 50 > dst is 23 / end actions drop / end", > + > "matched":{"scapy_str":['Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.168.0= .2", > dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D50,dport=3D23)/Raw("x" * 80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.16= 8.0. > 2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D3,dport=3D23)/Raw("x" * 80)', > + > 'Ether()/IP()/NVGRE()/Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.3",= tos=3D4)/ > TCP(sport=3D50,dport=3D100)/Raw("x" * 80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tvs_mac_ipv4_nvgre_ipv4_tcp_pipeline_mode =3D [ > + tv_mac_ipv4_nvgre_ipv4_tcp_pipeline_mode_in_queue_01, > + tv_mac_ipv4_nvgre_ipv4_tcp_pipeline_mode_queue_region_02, > + tv_mac_ipv4_nvgre_ipv4_tcp_pipeline_mode_drop_03 > + ] > + > +#non-tunnel pipeline mode > +#test vector mac_ipv4_frag_pipeline_mode > +tv_mac_ipv4_frag_pipeline_mode_in_queue_01 =3D { > + "name":"tv_mac_ipv4_frag_pipeline_mode_in_queue_01", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 src > is 192.168.0.2 dst is 192.168.0.3 tos is 4 / end actions queue index 3 / = end", > + "matched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":3= }}, > + "expect_results":{"expect_pkts":2}}, > + "mismatched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.4", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.5",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D7,frag=3D5)/TCP()/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":3}}, > + "expect_results":{"expect_pkts":3}} > +} > + > +tv_mac_ipv4_frag_partial_fields_pipeline_mode_in_queue_02 =3D { > + "name":"tv_mac_ipv4_frag_partial_fields_pipeline_mode_in_queue_02", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 src > is 192.168.0.2 dst is 192.168.0.3 / end actions queue index 3 / end", > + "matched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":3= }}, > + "expect_results":{"expect_pkts":2}}, > + "mismatched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.4", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.5",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":3}}, > + "expect_results":{"expect_pkts":2}} > + > +} > + > +tv_mac_ipv4_frag_pipeline_mode_queue_region_03 =3D { > + "name":"tv_mac_ipv4_frag_pipeline_mode_queue_region_03", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 src > is 192.168.0.2 dst is 192.168.0.3 tos is 4 / end actions rss queues 2 3 e= nd / > end", > + "matched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":2}}, > + "mismatched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.4", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.5",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D7,frag=3D5)/TCP()/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":3}} > +} > + > +tv_mac_ipv4_frag_partial_fields_pipeline_mode_queue_region_04 =3D { > + > "name":"tv_mac_ipv4_frag_partial_fields_pipeline_mode_queue_region_04", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 src > is 192.168.0.2 dst is 192.168.0.3 / end actions rss queues 2 3 end / end"= , > + "matched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":2}}, > + "mismatched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.4", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.5",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_frag_pipeline_mode_drop_05 =3D { > + "name":"tv_mac_ipv4_frag_pipeline_mode_drop_05", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 src > is 192.168.0.2 dst is 192.168.0.3 tos is 4 / end actions drop / end", > + "matched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":2}}, > + "mismatched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.4", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.5",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D7,frag=3D5)/TCP()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":3}} > +} > + > +tv_mac_ipv4_frag_partial_fields_pipeline_mode_drop_06 =3D { > + "name":"tv_mac_ipv4_frag_partial_fields_pipeline_mode_drop_06", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 src > is 192.168.0.2 dst is 192.168.0.3 / end actions drop / end", > + "matched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":2}}, > + "mismatched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.4", > dst=3D"192.168.0.3",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)', > + 'Ether()/IP(src=3D"192.168.0.2", > dst=3D"192.168.0.5",tos=3D4,frag=3D5)/TCP()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tvs_mac_ipv4_frag_pipeline_mode =3D [ > + tv_mac_ipv4_frag_pipeline_mode_in_queue_01, > + tv_mac_ipv4_frag_partial_fields_pipeline_mode_in_queue_02, > + tv_mac_ipv4_frag_pipeline_mode_queue_region_03, > + tv_mac_ipv4_frag_partial_fields_pipeline_mode_queue_region_04, > + tv_mac_ipv4_frag_pipeline_mode_drop_05, > + tv_mac_ipv4_frag_partial_fields_pipeline_mode_drop_06 > + ] > + > +#test vector mac_ipv4_pay_pipeline_mode > +tv_mac_ipv4_pay_pipeline_mode_tcp_in_queue_01 =3D { > + "name":"tv_mac_ipv4_pay_pipeline_mode_tcp_in_queue_01", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 src > is 192.168.0.2 dst is 192.168.0.3 proto is 0x06 tos is 4 / end actions qu= eue > index 2 / end", > + > "matched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.= 3",tos=3D > 4)/TCP()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":2= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168= .0.3",t > os=3D4)/UDP()/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":2}}, > + "expect_results":{"expect_pkts":1}} > +} > + > +tv_mac_ipv4_pay_pipeline_mode_udp_in_queue_02 =3D { > + "name":"tv_mac_ipv4_pay_pipeline_mode_udp_in_queue_02", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 src > is 192.168.0.2 dst is 192.168.0.3 proto is 0x11 tos is 4 / end actions qu= eue > index 2 / end", > + > "matched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.= 3",tos=3D > 4)/UDP()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":2= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168= .0.3",t > os=3D4)/TCP()/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":2}}, > + "expect_results":{"expect_pkts":1}} > +} > + > +tv_mac_ipv4_pay_pipeline_mode_tcp_queue_region_03 =3D { > + "name":"tv_mac_ipv4_pay_pipeline_mode_tcp_queue_region_03", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 src > is 192.168.0.2 dst is 192.168.0.3 proto is 0x06 tos is 4 / end actions rs= s > queues 2 3 end / end", > + > "matched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.= 3",tos=3D > 4)/TCP()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168= .0.3",t > os=3D4)/UDP()/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":1}} > +} > + > +tv_mac_ipv4_pay_pipeline_mode_udp_queue_region_04 =3D { > + "name":"tv_mac_ipv4_pay_pipeline_mode_udp_queue_region_04", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 src > is 192.168.0.2 dst is 192.168.0.3 proto is 0x11 tos is 4 / end actions rs= s > queues 2 3 end / end", > + > "matched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.= 3",tos=3D > 4)/UDP()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168= .0.3",t > os=3D4)/TCP()/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":1}} > +} > + > +tv_mac_ipv4_pay_pipeline_mode_tcp_drop_05 =3D { > + "name":"tv_mac_ipv4_pay_pipeline_mode_tcp_drop_05", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 src > is 192.168.0.2 dst is 192.168.0.3 proto is 0x06 tos is 4 / end actions dr= op / > end", > + > "matched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.= 3",tos=3D > 4)/TCP()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168= .0.3",t > os=3D4)/UDP()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":1}} > +} > + > +tv_mac_ipv4_pay_pipeline_mode_udp_drop_06 =3D { > + "name":"tv_mac_ipv4_pay_pipeline_mode_udp_drop_06", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 src > is 192.168.0.2 dst is 192.168.0.3 proto is 0x11 tos is 4 / end actions dr= op / > end", > + > "matched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.= 3",tos=3D > 4)/UDP()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168= .0.3",t > os=3D4)/TCP()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":1}} > +} > + > +tvs_mac_ipv4_pay_pipeline_mode =3D [ > + tv_mac_ipv4_pay_pipeline_mode_tcp_in_queue_01, > + tv_mac_ipv4_pay_pipeline_mode_udp_in_queue_02, > + tv_mac_ipv4_pay_pipeline_mode_tcp_queue_region_03, > + tv_mac_ipv4_pay_pipeline_mode_udp_queue_region_04, > + tv_mac_ipv4_pay_pipeline_mode_tcp_drop_05, > + tv_mac_ipv4_pay_pipeline_mode_udp_drop_06 > + ] > + > +#test vector mac_ipv4_udp_pay_pipeline_mode > +tv_mac_ipv4_udp_pay_pipeline_mode_in_queue_01 =3D { > + "name":"tv_mac_ipv4_udp_pay_pipeline_mode_in_queue_01", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 src > is 192.168.0.2 dst is 192.168.0.3 tos is 4 / udp src is 50 dst is 23 / en= d actions > queue index 2 / end", > + > "matched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.= 3",tos=3D > 4)/UDP(sport=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":2= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168= .0.3",t > os=3D4)/UDP(sport=3D2,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.3",tos=3D4)/UDP(sport=3D= 50,dport=3D > 3)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":2}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_udp_pay_pipeline_mode_queue_region_02 =3D { > + "name":"tv_mac_ipv4_udp_pay_pipeline_mode_queue_region_02", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 src > is 192.168.0.2 dst is 192.168.0.3 tos is 4 / udp src is 50 dst is 23 / en= d actions > rss queues 4 5 end / end", > + > "matched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.= 3",tos=3D > 4)/UDP(sport=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 4, 5]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168= .0.3",t > os=3D4)/UDP(sport=3D2,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.3",tos=3D4)/UDP(sport=3D= 50,dport=3D > 3)/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[4, 5]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_udp_pay_pipeline_mode_drop_03 =3D { > + "name":"tv_mac_ipv4_udp_pay_pipeline_mode_drop_03", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 src > is 192.168.0.2 dst is 192.168.0.3 tos is 4 / udp src is 50 dst is 23 / en= d actions > drop / end", > + > "matched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.= 3",tos=3D > 4)/UDP(sport=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168= .0.3",t > os=3D4)/UDP(sport=3D2,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.3",tos=3D4)/UDP(sport=3D= 50,dport=3D > 3)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tvs_mac_ipv4_udp_pay_pipeline_mode =3D [ > + tv_mac_ipv4_udp_pay_pipeline_mode_in_queue_01, > + tv_mac_ipv4_udp_pay_pipeline_mode_queue_region_02, > + tv_mac_ipv4_udp_pay_pipeline_mode_drop_03 > + ] > + > +#test vector mac_ipv4_tcp_pipeline_mode > +tv_mac_ipv4_tcp_pipeline_mode_in_queue_01 =3D { > + "name":"tv_mac_ipv4_tcp_pipeline_mode_in_queue_01", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 src > is 192.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 50 dst is 23 / en= d actions > queue index 3 / end", > + > "matched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.= 3",tos=3D > 4)/TCP(sport=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":3= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168= .0.3",t > os=3D4)/TCP(sport=3D5,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D= 50,dport=3D7 > )/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":3}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_tcp_pipeline_mode_queue_region_02 =3D { > + "name":"tv_mac_ipv4_tcp_pipeline_mode_queue_region_02", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 src > is 192.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 50 dst is 23 / en= d actions > rss queues 4 5 end / end", > + > "matched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.= 3",tos=3D > 4)/TCP(sport=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 4, 5]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168= .0.3",t > os=3D4)/TCP(sport=3D5,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D= 50,dport=3D7 > )/Raw("x"*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[4, 5]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv4_tcp_pipeline_mode_drop_03 =3D { > + "name":"tv_mac_ipv4_tcp_pipeline_mode_drop_03", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv4 src > is 192.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 50 dst is 23 / en= d actions > drop / end", > + > "matched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.= 3",tos=3D > 4)/TCP(sport=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168= .0.3",t > os=3D4)/TCP(sport=3D5,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D= 50,dport=3D7 > )/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tvs_mac_ipv4_tcp_pipeline_mode =3D [ > + tv_mac_ipv4_tcp_pipeline_mode_in_queue_01, > + tv_mac_ipv4_tcp_pipeline_mode_queue_region_02, > + tv_mac_ipv4_tcp_pipeline_mode_drop_03 > + ] > + > +#test vector mac_ipv6_frag_pipeline_mode > +tv_mac_ipv6_frag_srcipv6_dstipv6_pipeline_mode_in_queue_01 =3D { > + > "name":"tv_mac_ipv6_frag_srcipv6_dstipv6_pipeline_mode_in_queue_01", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv6 src > is CDCD:910A:2222:5498:8475:1111:3900:1515 dst is > CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 5 / > end", > + > "matched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:111= 1 > :3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/IPv6E= xt > HdrFragment()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":5= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:= 1 > 111:3900:1514",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/IP= v > 6ExtHdrFragment()/Raw("x"*80)', > + > 'Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1515",dst=3D"CDCD= :9 > 10A:2222:5498:8475:1111:3900:2023",tc=3D3)/IPv6ExtHdrFragment()/Raw("x"* > 80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":5}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv6_frag_dstipv6_tc_pipeline_mode_in_queue_02 =3D { > + "name":"tv_mac_ipv6_frag_dstipv6_tc_pipeline_mode_in_queue_02", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv6 dst > is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions queue > index 3 / end", > + > "matched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:111= 1 > :3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/IPv6E= xt > HdrFragment()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":3= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:= 1 > 111:3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2027",tc=3D3)/IP= v > 6ExtHdrFragment()/Raw("x"*80)', > + > 'Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1515",dst=3D"CDCD= :9 > 10A:2222:5498:8475:1111:3900:2020",tc=3D4)/IPv6ExtHdrFragment()/Raw("x"* > 80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":3}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv6_frag_srcipv6_dstipv6_pipeline_mode_queue_region_03 =3D { > + > "name":"tv_mac_ipv6_frag_srcipv6_dstipv6_pipeline_mode_queue_region_ > 03", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv6 src > is CDCD:910A:2222:5498:8475:1111:3900:1515 dst is > CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions rss queues 2 3 end > / end", > + > "matched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:111= 1 > :3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/IPv6E= xt > HdrFragment()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:= 1 > 111:3900:1514",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/IP= v > 6ExtHdrFragment()/Raw("x"*80)', > + > 'Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1515",dst=3D"CDCD= :9 > 10A:2222:5498:8475:1111:3900:2023",tc=3D3)/IPv6ExtHdrFragment()/Raw("x"* > 80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv6_frag_dstipv6_tc_pipeline_mode_queue_region_04 =3D { > + > "name":"tv_mac_ipv6_frag_dstipv6_tc_pipeline_mode_queue_region_04", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv6 dst > is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions rss > queues 2 3 end / end", > + > "matched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:111= 1 > :3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/IPv6E= xt > HdrFragment()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:= 1 > 111:3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2027",tc=3D3)/IP= v > 6ExtHdrFragment()/Raw("x"*80)', > + > 'Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1515",dst=3D"CDCD= :9 > 10A:2222:5498:8475:1111:3900:2020",tc=3D4)/IPv6ExtHdrFragment()/Raw("x"* > 80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv6_frag_srcipv6_dstipv6_pipeline_mode_drop_05 =3D { > + "name":"tv_mac_ipv6_frag_srcipv6_dstipv6_pipeline_mode_drop_05", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv6 src > is CDCD:910A:2222:5498:8475:1111:3900:1515 dst is > CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions drop / end", > + > "matched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:111= 1 > :3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/IPv6E= xt > HdrFragment()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:= 1 > 111:3900:1514",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/IP= v > 6ExtHdrFragment()/Raw("x"*80)', > + > 'Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1515",dst=3D"CDCD= :9 > 10A:2222:5498:8475:1111:3900:2023",tc=3D3)/IPv6ExtHdrFragment()/Raw("x"* > 80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv6_frag_dstipv6_tc_pipeline_mode_drop_06 =3D { > + "name":"tv_mac_ipv6_frag_dstipv6_tc_pipeline_mode_drop_06", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv6 dst > is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions drop / > end", > + > "matched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:111= 1 > :3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/IPv6E= xt > HdrFragment()/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:= 1 > 111:3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2027",tc=3D3)/IP= v > 6ExtHdrFragment()/Raw("x"*80)', > + > 'Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1515",dst=3D"CDCD= :9 > 10A:2222:5498:8475:1111:3900:2020",tc=3D4)/IPv6ExtHdrFragment()/Raw("x"* > 80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tvs_mac_ipv6_frag_pipeline_mode =3D [ > + tv_mac_ipv6_frag_srcipv6_dstipv6_pipeline_mode_in_queue_01, > + tv_mac_ipv6_frag_dstipv6_tc_pipeline_mode_in_queue_02, > + tv_mac_ipv6_frag_srcipv6_dstipv6_pipeline_mode_queue_region_03, > + tv_mac_ipv6_frag_dstipv6_tc_pipeline_mode_queue_region_04, > + tv_mac_ipv6_frag_srcipv6_dstipv6_pipeline_mode_drop_05, > + tv_mac_ipv6_frag_dstipv6_tc_pipeline_mode_drop_06 > + ] > + > +#test vector mac_ipv6_udp_pay_pipeline_mode > +tv_mac_ipv6_udp_pay_pipeline_mode_in_queue_01 =3D { > + "name":"tv_mac_ipv6_udp_pay_pipeline_mode_in_queue_01", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv6 dst > is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / udp src is 50 dst is= 23 / > end actions queue index 5 / end", > + > "matched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:111= 1 > :3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/UDP(s= p > ort=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":5= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:= 1 > 111:3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/UD > P(sport=3D3,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1515",dst=3D"CDCD= :9 > 10A:2222:5498:8475:1111:3900:2020",tc=3D3)/UDP(sport=3D50,dport=3D4)/Raw(= "x" > *80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":5}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv6_udp_pay_pipeline_mode_queue_region_02 =3D { > + "name":"tv_mac_ipv6_udp_pay_pipeline_mode_queue_region_02", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv6 dst > is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / udp src is 50 dst is= 23 / > end actions rss queues 2 3 end / end", > + > "matched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:111= 1 > :3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/UDP(s= p > ort=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 2, 3]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:= 1 > 111:3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/UD > P(sport=3D3,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1515",dst=3D"CDCD= :9 > 10A:2222:5498:8475:1111:3900:2020",tc=3D3)/UDP(sport=3D50,dport=3D4)/Raw(= "x" > *80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[2, 3]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv6_udp_pay_pipeline_mode_drop_03 =3D { > + "name":"tv_mac_ipv6_udp_pay_pipeline_mode_drop_03", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv6 dst > is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / udp src is 50 dst is= 23 / > end actions drop / end", > + > "matched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:111= 1 > :3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/UDP(s= p > ort=3D50,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:= 1 > 111:3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/UD > P(sport=3D3,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1515",dst=3D"CDCD= :9 > 10A:2222:5498:8475:1111:3900:2020",tc=3D3)/UDP(sport=3D50,dport=3D4)/Raw(= "x" > *80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tvs_mac_ipv6_udp_pay_pipeline_mode =3D [ > + tv_mac_ipv6_udp_pay_pipeline_mode_in_queue_01, > + tv_mac_ipv6_udp_pay_pipeline_mode_queue_region_02, > + tv_mac_ipv6_udp_pay_pipeline_mode_drop_03 > + ] > + > +#test vector mac_ipv6_tcp_pipeline_mode > +tv_mac_ipv6_tcp_pipeline_mode_in_queue_01 =3D { > + "name":"tv_mac_ipv6_tcp_pipeline_mode_in_queue_01", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv6 dst > is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tcp src is 25 dst is= 23 / > end actions queue index 4 / end", > + > "matched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:111= 1 > :3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/TCP(s= p > ort=3D25,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_in_queue, > + "param":{"expect_port":0, "expect_queues":4= }}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:= 1 > 111:3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/TC= P > (sport=3D1,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1515",dst=3D"CDCD= :9 > 10A:2222:5498:8475:1111:3900:2020",tc=3D3)/TCP(sport=3D25,dport=3D20)/Raw= ("x > "*80)'], > + > "check_func":{"func":rfc.check_output_log_in_queue_mismatched, > + "param":{"expect_port":0, "expect_queues= ":4}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv6_tcp_pipeline_mode_queue_region_02 =3D { > + "name":"tv_mac_ipv6_tcp_pipeline_mode_queue_region_02", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv6 dst > is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tcp src is 25 dst is= 23 / > end actions rss queues 4 5 end / end", > + > "matched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:111= 1 > :3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/TCP(s= p > ort=3D25,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_queue_region, > + "param":{"expect_port":0, "expect_queues":[= 4, 5]}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:= 1 > 111:3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/TC= P > (sport=3D1,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1515",dst=3D"CDCD= :9 > 10A:2222:5498:8475:1111:3900:2020",tc=3D3)/TCP(sport=3D25,dport=3D20)/Raw= ("x > "*80)'], > + > "check_func":{"func":rfc.check_output_log_queue_region_mismatched, > + "param":{"expect_port":0, "expect_queues= ":[4, 5]}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tv_mac_ipv6_tcp_pipeline_mode_drop_03 =3D { > + "name":"tv_mac_ipv6_tcp_pipeline_mode_drop_03", > + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / i= pv6 dst > is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tcp src is 25 dst is= 23 / > end actions drop / end", > + > "matched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:111= 1 > :3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/TCP(s= p > ort=3D25,dport=3D23)/Raw("x"*80)'], > + "check_func":{"func":rfc.check_output_log_drop, > + "param":{"expect_port":0, "expect_queues":"= null"}}, > + "expect_results":{"expect_pkts":1}}, > + > "mismatched":{"scapy_str":['Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:= 1 > 111:3900:1515",dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3D3)/TC= P > (sport=3D1,dport=3D23)/Raw("x"*80)', > + > 'Ether()/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1515",dst=3D"CDCD= :9 > 10A:2222:5498:8475:1111:3900:2020",tc=3D3)/TCP(sport=3D25,dport=3D20)/Raw= ("x > "*80)'], > + "check_func":{"func":rfc.check_output_log_drop_mismatc= hed, > + "param":{"expect_port":0, "expect_queues= ":"null"}}, > + "expect_results":{"expect_pkts":2}} > +} > + > +tvs_mac_ipv6_tcp_pipeline_mode =3D [ > + tv_mac_ipv6_tcp_pipeline_mode_in_queue_01, > + tv_mac_ipv6_tcp_pipeline_mode_queue_region_02, > + tv_mac_ipv6_tcp_pipeline_mode_drop_03 > + ] > + > +test_results =3D OrderedDict() > + > +class SwitchFilterTest(TestCase): > + > + def set_up_all(self): > + """ > + Run at the start of each test suite. > + """ > + self.verify(self.nic in ["columbiaville_25g","columbiaville_100g= "], "%s > nic not support CVL switch filter" % self.nic) > + > + self.dut_ports =3D self.dut.get_ports(self.nic) > + # Verify that enough ports are available > + self.verify(len(self.dut_ports) >=3D 1, "Insufficient ports") > + > + localPort =3D self.tester.get_local_port(self.dut_ports[0]) > + self.__tx_iface =3D self.tester.get_interface(localPort) > + > + #copy the file with fdir rules to dut, to make the fdir table fu= ll and then > test switch filter > + src_file =3D 'dep/testpmd_cmds_rte_flow_fdir_rules' > + self.dut_file_dir =3D '/tmp' > + self.dut.session.copy_file_to(src_file, self.dut_file_dir) > + > + def set_up(self): > + """ > + Run before each test case. > + """ > + self.dut.kill_all() > + > + def tear_down(self): > + """ > + Run after each test case. > + """ > + self.dut.kill_all() > + > + def tear_down_all(self): > + """ > + Run after each test suite. > + """ > + self.dut.kill_all() > + > + def create_testpmd_command(self): > + """ > + Create testpmd command for non-pipeline mode > + """ > + #Prepare testpmd EAL and parameters > + all_eal_param =3D self.dut.create_eal_parameters(ports=3D[0]) > + command =3D "./%s/app/testpmd %s --log-level=3D\"ice,8\" -- -i %= s" % > (self.dut.target, all_eal_param, "--rxq=3D8 --txq=3D8 --cmdline- > file=3D/tmp/testpmd_cmds_rte_flow_fdir_rules") > + return command > + > + def create_testpmd_command_pipeline_mode(self): > + """ > + Create testpmd command for pipeline mode > + """ > + #Prepare testpmd EAL and parameters > + all_eal_param =3D self.dut.create_eal_parameters(ports=3D[0], > port_options=3D{0:"pipeline-mode-support=3D1"}) > + command =3D "./%s/app/testpmd %s --log-level=3D\"ice,8\" -- -i %= s" % > (self.dut.target, all_eal_param, "--rxq=3D8 --txq=3D8") > + return command > + > + def get_rule_number(self,outstring): > + """ > + get the rule number. > + """ > + result_scanner =3D r'Flow rule #(\d+) created' > + scanner =3D re.compile(result_scanner, re.DOTALL) > + m =3D scanner.search(outstring) > + rule_num =3D int(m.group(1)) > + return rule_num > + > + def send_and_check_packets(self, dic, port): > + """ > + general packets processing workflow. > + """ > + #Specify the port to use > + dic["check_func"]["param"]["expect_port"] =3D port > + > + self.dut.send_expect("start", "testpmd> ", 15) > + time.sleep(2) > + > + #send packets > + for per_packet in dic["scapy_str"]: > + pkt =3D Packet(pkt_str=3Dper_packet) > + pkt.send_pkt(self.tester, tx_port=3Dself.__tx_iface, count= =3D1) > + > + out =3D self.dut.send_expect("stop", "testpmd> ") > + > + result_flag, log_msg =3D dic["check_func"]["func"](out, > dic["check_func"]["param"], dic["expect_results"]) > + return result_flag, log_msg > + > + def save_results(self, pattern_name, flag, result_flag, log_msg, > overall_result): > + """ > + save results to dictionary: test_results. > + """ > + global test_results > + > + test_results[pattern_name][flag] =3D {} > + test_results[pattern_name][flag]["result_flag"] =3D result_flag > + test_results[pattern_name][flag]["log_msg"] =3D log_msg > + overall_result =3D overall_result and result_flag > + return overall_result > + > + def _rte_flow_validate_pattern(self, test_vectors, command, is_vxlan= ): > + > + global test_results > + > + out =3D self.dut.send_expect(command, "testpmd> ", 120) > + self.dut.send_expect("port config 0 rss-hash-key ipv4 > 1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd > 1234abcd1234abcd1234abcd1234abcd1234abcd", "testpmd> ", 15) > + if is_vxlan: > + self.dut.send_expect("rx_vxlan_port add 4789 0", "testpmd> "= , 15) > + self.dut.send_expect("set fwd rxonly", "testpmd> ", 15) > + self.dut.send_expect("set verbose 1", "testpmd> ", 15) > + time.sleep(2) > + > + overall_result =3D True > + test_results.clear() > + for tv in test_vectors: > + pattern_name =3D tv["name"] > + test_results[pattern_name] =3D OrderedDict() > + > + out =3D self.dut.send_expect(tv["rte_flow_pattern"], "testpm= d> ", 15) > #create a rule > + #get the rule number > + rule_num =3D self.get_rule_number(out) > + > + #check whether the switch rule or fdir rule is created > + if "Succeeded to create (2) flow" not in out: > + result_flag =3D False > + log_msg =3D "The rule is not created as switch." > + overall_result =3D self.save_results(pattern_name, "rule= ", result_flag, > log_msg, overall_result) > + self.dut.send_expect("flow destroy %d rule %d" % > (self.dut_ports[0], rule_num), "testpmd> ") > + continue > + > + #check if the rule is in list > + out =3D self.dut.send_expect("flow list %d" % self.dut_ports= [0], > "testpmd> ", 15) > + rule_in_list_flag =3D rfc.check_rule_in_list_by_id(out, rule= _num) > #check if the rule still in list > + if not rule_in_list_flag: > + result_flag =3D False > + log_msg =3D "Flow rule #%d is not in list." % rule_num > + overall_result =3D self.save_results(pattern_name, "rule= ", result_flag, > log_msg, overall_result) > + self.dut.send_expect("flow destroy %d rule %d" % > (self.dut_ports[0], rule_num), "testpmd> ") > + continue > + > + #matched part > + matched_dic =3D tv["matched"] > + result_flag, log_msg =3D self.send_and_check_packets(matched= _dic, > self.dut_ports[0]) > + overall_result =3D self.save_results(pattern_name, "matched"= , > result_flag, log_msg, overall_result) > + > + #mismatched part > + mismatched_dic =3D tv["mismatched"] > + if len(mismatched_dic.keys()) !=3D 0: > + result_flag, log_msg =3D > self.send_and_check_packets(mismatched_dic, self.dut_ports[0]) > + overall_result =3D self.save_results(pattern_name, "mism= atched", > result_flag, log_msg, overall_result) > + > + self.dut.send_expect("flow destroy %d rule %d" % (self.dut_p= orts[0], > rule_num), "testpmd> ") > + out =3D self.dut.send_expect("flow list %d" % self.dut_ports= [0], > "testpmd> ", 15) > + #check if the rule has been destroyed > + rule_in_list_flag =3D rfc.check_rule_in_list_by_id(out, rule= _num) > #check if the rule still in list > + if rule_in_list_flag: > + result_flag =3D False > + log_msg =3D "Flow rule #%d still exists, not been destro= yed." % > rule_num > + else: > + #send matched packets, check the packets not to the > corresponding queues > + check_destroy_dict =3D copy.deepcopy(matched_dic) > + check_destroy_dict["check_func"]["func"] =3D > mismatched_dic["check_func"]["func"] > + result_flag, log_msg =3D > self.send_and_check_packets(check_destroy_dict, self.dut_ports[0]) > + overall_result =3D self.save_results(pattern_name, "destroy"= , > result_flag, log_msg, overall_result) > + > + #check if the rules are all destroyed > + self.dut.send_expect("flow flush %d" % self.dut_ports[0], "testp= md> ") > + out =3D self.dut.send_expect("flow list %d" % self.dut_ports[0],= "testpmd> > ", 15) > + out_lines=3Dout.splitlines() > + if len(out_lines) =3D=3D 1: > + result_flag =3D True > + log_msg =3D "" > + else: > + result_flag =3D False > + log_msg =3D "flow flush failed, rules still exist." > + > + #save the result of executing the command "flow flush 0" > + pattern_name =3D "flow flush %d" % self.dut_ports[0] > + test_results[pattern_name] =3D OrderedDict() > + overall_result =3D self.save_results(pattern_name, "flush", resu= lt_flag, > log_msg, overall_result) > + > + self.dut.send_expect("quit", "#") > + #print the results of the test case > + count =3D 1 > + for pattern in test_results.keys(): > + print str(count)+". "+pattern > + > + for flag in test_results[pattern].keys(): > + result_flag =3D test_results[pattern][flag]["result_flag= "] > + log_msg =3D test_results[pattern][flag]["log_msg"] > + > + print flag+": ", > + result =3D "" > + if result_flag: > + result =3D "Passed" > + print GREEN(result), log_msg > + else: > + result =3D "failed" > + print RED(result+", "+log_msg) > + > + print > + count +=3D 1 > + self.verify(overall_result =3D=3D True, "Some test case failed."= ) > + > + #vxlan non-pipeline mode > + def test_mac_ipv4_vxlan_ipv4_frag(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_ipv4_vxlan_ipv4_frag, > command, is_vxlan =3D True) > + > + def test_mac_ipv4_vxlan_ipv4_pay(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_ipv4_vxlan_ipv4_pay, > command, is_vxlan =3D True) > + > + def test_mac_ipv4_vxlan_ipv4_udp_pay(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_ipv4_vxlan_ipv4_udp_pay, > command, is_vxlan =3D True) > + > + def test_mac_ipv4_vxlan_ipv4_tcp(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_ipv4_vxlan_ipv4_tcp, > command, is_vxlan =3D True) > + > + def test_mac_ipv4_vxlan_mac_ipv4_frag(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_ipv4_vxlan_mac_ipv4_frag= , > command, is_vxlan =3D True) > + > + def test_mac_ipv4_vxlan_mac_ipv4_pay(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_ipv4_vxlan_mac_ipv4_pay, > command, is_vxlan =3D True) > + > + def test_mac_ipv4_vxlan_mac_ipv4_udp_pay(self): > + command =3D self.create_testpmd_command() > + > self._rte_flow_validate_pattern(tvs_mac_ipv4_vxlan_mac_ipv4_udp_pay, > command, is_vxlan =3D True) > + > + def test_mac_ipv4_vxlan_mac_ipv4_tcp(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_ipv4_vxlan_mac_ipv4_tcp, > command, is_vxlan =3D True) > + > + #nvgre non-pipeline mode > + def test_mac_ipv4_nvgre_ipv4_frag(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_ipv4_nvgre_ipv4_frag, > command, is_vxlan =3D False) > + > + def test_mac_ipv4_nvgre_ipv4_pay(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_ipv4_nvgre_ipv4_pay, > command, is_vxlan =3D False) > + > + def test_mac_ipv4_nvgre_ipv4_udp_pay(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_ipv4_nvgre_ipv4_udp_pay, > command, is_vxlan =3D False) > + > + def test_mac_ipv4_nvgre_ipv4_tcp(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_ipv4_nvgre_ipv4_tcp, > command, is_vxlan =3D False) > + > + def test_mac_ipv4_nvgre_mac_ipv4_frag(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_ipv4_nvgre_mac_ipv4_frag= , > command, is_vxlan =3D False) > + > + def test_mac_ipv4_nvgre_mac_ipv4_pay(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_ipv4_nvgre_mac_ipv4_pay, > command, is_vxlan =3D False) > + > + def test_mac_ipv4_nvgre_mac_ipv4_udp_pay(self): > + command =3D self.create_testpmd_command() > + > self._rte_flow_validate_pattern(tvs_mac_ipv4_nvgre_mac_ipv4_udp_pay, > command, is_vxlan =3D False) > + > + def test_mac_ipv4_nvgre_mac_ipv4_tcp(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_ipv4_nvgre_mac_ipv4_tcp, > command, is_vxlan =3D False) > + > + #pppoed non-pipeline mode > + def test_mac_pppod_pay(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_pppod_pay, command, > is_vxlan =3D False) > + > + #pppoes non-pipeline mode > + def test_mac_pppoe_pay(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_pppoe_pay, command, > is_vxlan =3D False) > + > + def non_support_test_mac_pppoe_ipv4_frag(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_frag, command= , > is_vxlan =3D False) > + > + def test_mac_pppoe_ipv4_pay(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_pay, command, > is_vxlan =3D False) > + > + def not_support_test_mac_pppoe_ipv4_udp_pay(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_udp_pay, > command, is_vxlan =3D False) > + > + def not_support_test_mac_pppoe_ipv4_tcp(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_tcp, command, > is_vxlan =3D False) > + > + def not_support_test_mac_pppoe_ipv4_sctp(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_sctp, command= , > is_vxlan =3D False) > + > + def not_support_test_mac_pppoe_ipv4_icmp(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_icmp, command= , > is_vxlan =3D False) > + > + def not_support_test_mac_pppoe_ipv6_frag(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_frag, command= , > is_vxlan =3D False) > + > + def not_support_test_mac_pppoe_ipv6_pay(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_pay, command, > is_vxlan =3D False) > + > + def not_support_test_mac_pppoe_ipv6_udp_pay(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_udp_pay, > command, is_vxlan =3D False) > + > + def not_support_test_mac_pppoe_ipv6_tcp(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_tcp, command, > is_vxlan =3D False) > + > + def not_support_test_mac_pppoe_ipv6_sctp(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_sctp, command= , > is_vxlan =3D False) > + > + def not_support_test_mac_pppoe_ipv6_icmpv6(self): > + command =3D self.create_testpmd_command() > + self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_icmpv6, > command, is_vxlan =3D False) > + > + #vxlan pipeline mode > + def test_mac_ipv4_vxlan_ipv4_frag_pipeline_mode(self): > + command =3D self.create_testpmd_command_pipeline_mode() > + > self._rte_flow_validate_pattern(tvs_mac_ipv4_vxlan_ipv4_frag_pipeline_mo > de, command, is_vxlan =3D True) > + > + def test_mac_ipv4_vxlan_ipv4_udp_pay_pipeline_mode(self): > + command =3D self.create_testpmd_command_pipeline_mode() > + > self._rte_flow_validate_pattern(tvs_mac_ipv4_vxlan_ipv4_udp_pay_pipeline > _mode, command, is_vxlan =3D True) > + > + def test_mac_ipv4_vxlan_ipv4_tcp_pipeline_mode(self): > + command =3D self.create_testpmd_command_pipeline_mode() > + > self._rte_flow_validate_pattern(tvs_mac_ipv4_vxlan_ipv4_tcp_pipeline_mod > e, command, is_vxlan =3D True) > + > + #nvgre pipeline mode > + def test_mac_ipv4_nvgre_ipv4_frag_pipeline_mode(self): > + command =3D self.create_testpmd_command_pipeline_mode() > + > self._rte_flow_validate_pattern(tvs_mac_ipv4_nvgre_ipv4_frag_pipeline_mo > de, command, is_vxlan =3D False) > + > + def test_mac_ipv4_nvgre_ipv4_udp_pay_pipeline_mode(self): > + command =3D self.create_testpmd_command_pipeline_mode() > + > self._rte_flow_validate_pattern(tvs_mac_ipv4_nvgre_ipv4_udp_pay_pipeline > _mode, command, is_vxlan =3D False) > + > + def test_mac_ipv4_nvgre_ipv4_tcp_pipeline_mode(self): > + command =3D self.create_testpmd_command_pipeline_mode() > + > self._rte_flow_validate_pattern(tvs_mac_ipv4_nvgre_ipv4_tcp_pipeline_mo > de, command, is_vxlan =3D False) > + > + #non-tunnel pipeline mode > + def test_mac_ipv4_frag_pipeline_mode(self): > + command =3D self.create_testpmd_command_pipeline_mode() > + self._rte_flow_validate_pattern(tvs_mac_ipv4_frag_pipeline_mode, > command, is_vxlan =3D False) > + > + def test_mac_ipv4_pay_pipeline_mode(self): > + command =3D self.create_testpmd_command_pipeline_mode() > + self._rte_flow_validate_pattern(tvs_mac_ipv4_pay_pipeline_mode, > command, is_vxlan =3D False) > + > + def test_mac_ipv4_udp_pay_pipeline_mode(self): > + command =3D self.create_testpmd_command_pipeline_mode() > + > self._rte_flow_validate_pattern(tvs_mac_ipv4_udp_pay_pipeline_mode, > command, is_vxlan =3D False) > + > + def test_mac_ipv4_tcp_pipeline_mode(self): > + command =3D self.create_testpmd_command_pipeline_mode() > + self._rte_flow_validate_pattern(tvs_mac_ipv4_tcp_pipeline_mode, > command, is_vxlan =3D False) > + > + def test_mac_ipv6_frag_pipeline_mode(self): > + command =3D self.create_testpmd_command_pipeline_mode() > + self._rte_flow_validate_pattern(tvs_mac_ipv6_frag_pipeline_mode, > command, is_vxlan =3D False) > + > + def test_mac_ipv6_udp_pay_pipeline_mode(self): > + command =3D self.create_testpmd_command_pipeline_mode() > + > self._rte_flow_validate_pattern(tvs_mac_ipv6_udp_pay_pipeline_mode, > command, is_vxlan =3D False) > + > + def test_mac_ipv6_tcp_pipeline_mode(self): > + command =3D self.create_testpmd_command_pipeline_mode() > + self._rte_flow_validate_pattern(tvs_mac_ipv6_tcp_pipeline_mode, > command, is_vxlan =3D False) > -- > 2.17.1