From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id AC309A0524; Tue, 1 Jun 2021 10:21:43 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9E4A540041; Tue, 1 Jun 2021 10:21:43 +0200 (CEST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mails.dpdk.org (Postfix) with ESMTP id DB0BC40040 for ; Tue, 1 Jun 2021 10:21:40 +0200 (CEST) IronPort-SDR: eXDbQhqixTc6Nufcsh5XMVHyu4CHfecIzurh3intIScgKiKAppLevojKVHedXlQCAEonjPFEPv /YwNL6eWB5pw== X-IronPort-AV: E=McAfee;i="6200,9189,10001"; a="201632610" X-IronPort-AV: E=Sophos;i="5.83,239,1616482800"; d="scan'208";a="201632610" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2021 01:21:39 -0700 IronPort-SDR: NjfTjY6gHkpK+gARe81xOKa+/yWNmUeKOX/80T37/6Kx398PZZmjFWHvL5WK926zTVzaUZTSXu LPB/JRJRWjLQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,239,1616482800"; d="scan'208";a="482395715" Received: from dpdk-qifu-cxl.sh.intel.com ([10.67.119.212]) by fmsmga002.fm.intel.com with ESMTP; 01 Jun 2021 01:21:37 -0700 From: qifu To: dts@dpdk.org Cc: qifu Date: Tue, 1 Jun 2021 13:02:56 -0400 Message-Id: <20210601170256.69375-1-qi.fu@intel.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Subject: [dts] [PATCH V1]tests/: add test suite for cvl dcf rte flow priority X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 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" add dpdk-21.05 new feature test suite: TestSuite_cvl_dcf_flow_priority.py this feature support add priority 0/1 for dcf switch filter rules. Signed-off-by: qifu --- tests/TestSuite_cvl_dcf_flow_priority.py | 1771 ++++++++++++++++++++++ 1 file changed, 1771 insertions(+) create mode 100644 tests/TestSuite_cvl_dcf_flow_priority.py diff --git a/tests/TestSuite_cvl_dcf_flow_priority.py b/tests/TestSuite_cvl= _dcf_flow_priority.py new file mode 100644 index 00000000..bbc0d416 --- /dev/null +++ b/tests/TestSuite_cvl_dcf_flow_priority.py @@ -0,0 +1,1771 @@ +# BSD LICENSE=0D +#=0D +# Copyright(c) 2021 Intel Corporation. All rights reserved.=0D +# All rights reserved.=0D +#=0D +# Redistribution and use in source and binary forms, with or without=0D +# modification, are permitted provided that the following conditions=0D +# are met:=0D +#=0D +# * Redistributions of source code must retain the above copyright=0D +# notice, this list of conditions and the following disclaimer.=0D +# * Redistributions in binary form must reproduce the above copyright=0D +# notice, this list of conditions and the following disclaimer in=0D +# the documentation and/or other materials provided with the=0D +# distribution.=0D +# * Neither the name of Intel Corporation nor the names of its=0D +# contributors may be used to endorse or promote products derived=0D +# from this software without specific prior written permission.=0D +#=0D +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS=0D +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT=0D +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR=0D +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT=0D +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,=0D +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT=0D +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,=0D +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY=0D +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT=0D +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE=0D +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.=0D +=0D +import json=0D +import time=0D +import re=0D +import copy=0D +=0D +from test_case import TestCase, skip_unsupported_pkg, check_supported_nic= =0D +from pmd_output import PmdOutput=0D +from packet import Packet=0D +from utils import BLUE, RED, GREEN=0D +import rte_flow_common as rfc=0D +=0D +import os=0D +=0D +tv_mac_pay =3D {=0D + "name":"tv_mac_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth src is 00:00:00:= 00:00:01 dst is 00:11:22:33:44:55 type is 0x0800 / end actions vf id 1 / en= d",=0D + "matched":{"scapy_str":['Ether(src=3D"00:00:00:00:00:01",dst=3D"00:11:= 22:33:44:55")/IP()/Raw("x" *80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(src=3D"00:00:00:00:00:02",dst=3D"00:= 11:22:33:44:55")/IP()/Raw("x" *80)',=0D + 'Ether(src=3D"00:00:00:00:00:01",dst=3D"00:= 11:22:33:44:54")/IP()/Raw("x" *80)',=0D + 'Ether(src=3D"00:00:00:00:00:01",dst=3D"00:= 11:22:33:44:55")/IPv6()/Raw("x" *80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv4_frag =3D {=0D + "name":"tv_mac_ipv4_frag",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 68:05:ca:= 8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 2 / e= nd actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"19= 2.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D2,frag=3D5)/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"68:05:ca:8d:ed:a3")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D2,frag=3D5)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.4",dst=3D"192.168.0.2",tos=3D4,ttl=3D2,frag=3D5)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.5",tos=3D4,ttl=3D2,frag=3D5)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.2",tos=3D5,ttl=3D2,frag=3D5)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D3,frag=3D5)/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv4_pay =3D {=0D + "name":"tv_mac_ipv4_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 68:05:ca:= 8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 proto is 6 tos is 4 t= tl is 2 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"19= 2.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D2)/TCP()/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"68:05:ca:8d:ed:a3")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D2)/TCP()/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.4",dst=3D"192.168.0.2",tos=3D4,ttl=3D2)/TCP()/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.5",tos=3D4,ttl=3D2)/TCP()/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.2",tos=3D5,ttl=3D2)/TCP()/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D3)/TCP()/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D2)/UDP()/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv4_udp_pay =3D {=0D + "name":"tv_mac_ipv4_udp_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 68:05:ca:= 8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / u= dp src is 25 dst is 23 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"19= 2.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D3)/UDP(sport=3D25,dport=3D23)/= ("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"68:05:ca:8d:ed:a3")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D3)/UDP(sport=3D25,dport=3D2= 3)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.5",dst=3D"192.168.0.2",tos=3D4,ttl=3D3)/UDP(sport=3D25,dport=3D2= 3)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.7",tos=3D4,ttl=3D3)/UDP(sport=3D25,dport=3D2= 3)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.2",tos=3D5,ttl=3D3)/UDP(sport=3D25,dport=3D2= 3)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D9)/UDP(sport=3D25,dport=3D2= 3)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D3)/UDP(sport=3D30,dport=3D2= 3)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D3)/UDP(sport=3D25,dport=3D1= 9)/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv4_tcp_pay =3D {=0D + "name":"tv_mac_ipv4_tcp_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 68:05:ca:= 8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / t= cp src is 25 dst is 23 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"19= 2.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D3)/TCP(sport=3D25,dport=3D23)/= ("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"68:05:ca:8d:ed:a3")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D3)/TCP(sport=3D25,dport=3D2= 3)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.5",dst=3D"192.168.0.2",tos=3D4,ttl=3D3)/TCP(sport=3D25,dport=3D2= 3)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.7",tos=3D4,ttl=3D3)/TCP(sport=3D25,dport=3D2= 3)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.2",tos=3D5,ttl=3D3)/TCP(sport=3D25,dport=3D2= 3)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D9)/TCP(sport=3D25,dport=3D2= 3)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D3)/TCP(sport=3D30,dport=3D2= 3)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D= "192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D3)/TCP(sport=3D25,dport=3D1= 9)/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv4_igmp =3D {=0D + "name":"tv_mac_ipv4_igmp",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 proto is = 0x02 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/IP()/IGMP()/= Raw("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/IP()/TCP(= )/Raw("X"*480)',=0D + 'Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP(= )/Raw("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv6_srcip_dstip =3D {=0D + "name":"tv_mac_ipv6_srcip_dstip",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 src is CD= CD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:= 3900:2020 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/IPv6(src=3D"= CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5498:8475:1= 111:3900:2020")/("X"*480)',=0D + 'Ether(dst=3D"00:11:22:33:44:55")/IPv6(src=3D"= CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5498:8475:1= 111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":2}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1537", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2020")/("X"*480)',=0D + 'Ether(dst=3D"00:11:22:33:44:55")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2023")/("X"*480)',=0D + 'Ether(dst=3D"00:11:22:33:44:55")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1537", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)',=0D + 'Ether(dst=3D"00:11:22:33:44:55")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2023")/IPv6ExtHdrFragment()/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv6_dstip_tc =3D {=0D + "name":"tv_mac_ipv6_dstip_tc",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 68:05:ca:= 8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / en= d actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"68:05:ca:8d:ed:a8")/IPv6(src=3D"= CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:8475:1= 111:3900:2020",tc=3D3)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IPv6(src=3D"= CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:8475:1= 111:3900:2020",tc=3D3)/IPv6ExtHdrFragment()/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":2}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"68:05:ca:8d:ed:a3")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2020",tc=3D3)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2023",tc=3D3)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2020",tc=3D4)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a3")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2020",tc=3D3)/IPv6ExtHdrFragment()/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2023",tc=3D3)/IPv6ExtHdrFragment()/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2020",tc=3D4)/IPv6ExtHdrFragment()/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv6_udp_pay =3D {=0D + "name":"tv_mac_ipv6_udp_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 68:05:ca:= 8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / ud= p src is 25 dst is 23 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"68:05:ca:8d:ed:a8")/IPv6(src=3D"= CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:8475:1= 111:3900:2020",tc=3D3)/UDP(sport=3D25,dport=3D23)/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"68:05:ca:8d:ed:a3")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2020",tc=3D3)/UDP(sport=3D25,dport=3D23)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2023",tc=3D3)/UDP(sport=3D25,dport=3D23)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2020",tc=3D7)/UDP(sport=3D25,dport=3D23)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2020",tc=3D3)/UDP(sport=3D30,dport=3D23)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2020",tc=3D3)/UDP(sport=3D25,dport=3D19)/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv6_tcp =3D {=0D + "name":"tv_mac_ipv6_tcp",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 68:05:ca:= 8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tc= p src is 25 dst is 23 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"68:05:ca:8d:ed:a8")/IPv6(src=3D"= CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:8475:1= 111:3900:2020",tc=3D3)/TCP(sport=3D25,dport=3D23)/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"68:05:ca:8d:ed:a3")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2020",tc=3D3)/TCP(sport=3D25,dport=3D23)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2023",tc=3D3)/TCP(sport=3D25,dport=3D23)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2020",tc=3D7)/TCP(sport=3D25,dport=3D23)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2020",tc=3D3)/TCP(sport=3D30,dport=3D23)/("X"*480)',=0D + 'Ether(dst=3D"68:05:ca:8d:ed:a8")/IPv6(src= =3D"CDCD:910A:2222:5498:8475:1111:3900:1518", dst=3D"CDCD:910A:2222:5498:84= 75:1111:3900:2020",tc=3D3)/TCP(sport=3D25,dport=3D19)/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv4_nvgre_ipv4_pay =3D {=0D + "name":"tv_mac_ipv4_nvgre_ipv4_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is 19= 2.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1= .3 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['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)',=0D + '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= )'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":2}},=0D + "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI= =3D2)/Ether()/IP(src=3D"192.168.1.2", dst=3D"192.168.1.3")/Raw("x"*80)',=0D + '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)',=0D + '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)',=0D + '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)',=0D + 'Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI= =3D2)/Ether()/IP(src=3D"192.168.1.2", dst=3D"192.168.1.3" ,frag=3D5)/Raw("x= "*80)',=0D + '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)/Raw("x= "*80)',=0D + '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)/Raw("x= "*80)',=0D + '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)/Raw("x= "*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv4_nvgre_ipv4_udp_pay =3D {=0D + "name":"tv_mac_ipv4_nvgre_ipv4_udp_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is 19= 2.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 vf id 1 / end",=0D + "matched":{"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=3D50,dpo= rt=3D23)/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI= =3D0x8)/Ether()/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3")/UDP(sport=3D50= ,dport=3D23)/Raw("x"*80)',=0D + 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI= =3D0x3)/Ether()/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3")/UDP(sport=3D50= ,dport=3D23)/Raw("x"*80)',=0D + 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI= =3D0x8)/Ether()/IP(src=3D"192.168.0.5", dst=3D"192.168.0.3")/UDP(sport=3D50= ,dport=3D23)/Raw("x"*80)',=0D + 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI= =3D0x8)/Ether()/IP(src=3D"192.168.0.2", dst=3D"192.168.0.7")/UDP(sport=3D50= ,dport=3D23)/Raw("x"*80)',=0D + 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI= =3D0x8)/Ether()/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3")/UDP(sport=3D20= ,dport=3D23)/Raw("x"*80)',=0D + 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI= =3D0x8)/Ether()/IP(src=3D"192.168.0.2", dst=3D"192.168.0.3")/UDP(sport=3D50= ,dport=3D19)/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv4_nvgre_ipv4_tcp =3D {=0D + "name":"tv_mac_ipv4_nvgre_ipv4_tcp",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is 19= 2.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1= .3 / tcp src is 25 dst is 23 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['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= =3D23)/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI= =3D2)/Ether()/IP(src=3D"192.168.1.2", dst=3D"192.168.1.3")/TCP(sport=3D25,d= port=3D23)/Raw("x"*80)',=0D + '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")/TCP(sport=3D25,d= port=3D23)/Raw("x"*80)',=0D + 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI= =3D2)/Ether()/IP(src=3D"192.168.1.5", dst=3D"192.168.1.3")/TCP(sport=3D25,d= port=3D23)/Raw("x"*80)',=0D + 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI= =3D2)/Ether()/IP(src=3D"192.168.1.2", dst=3D"192.168.1.7")/TCP(sport=3D25,d= port=3D23)/Raw("x"*80)',=0D + '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=3D20,d= port=3D23)/Raw("x"*80)',=0D + '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,d= port=3D39)/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv4_nvgre_mac_ipv4_pay =3D {=0D + "name":"tv_mac_ipv4_nvgre_mac_ipv4_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is 19= 2.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 vf id 1 / end",=0D + "matched":{"scapy_str":['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)',=0D + '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)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":2}},=0D + "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI= =3D2)/Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", dst=3D"192.1= 68.1.3")/Raw("x"*80)',=0D + '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.1= 68.1.3")/Raw("x"*80)',=0D + '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.1= 68.1.3")/Raw("x"*80)',=0D + '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.1= 68.1.3")/Raw("x"*80)',=0D + '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.1= 68.1.5")/Raw("x"*80)',=0D + 'Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI= =3D2)/Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", dst=3D"192.1= 68.1.3" ,frag=3D5)/Raw("x"*80)',=0D + '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.1= 68.1.3" ,frag=3D5)/Raw("x"*80)',=0D + '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.1= 68.1.3" ,frag=3D5)/Raw("x"*80)',=0D + '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.1= 68.1.3" ,frag=3D5)/Raw("x"*80)',=0D + '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.1= 68.1.5" ,frag=3D5)/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv4_nvgre_mac_ipv4_udp_pay =3D {=0D + "name":"tv_mac_ipv4_nvgre_mac_ipv4_udp_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is 19= 2.168.0.1 / nvgre tni is 0x8 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is= 192.168.1.2 dst is 192.168.1.3 / udp src is 25 dst is 23 / end actions vf = id 1 / end",=0D + "matched":{"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=3D25,dport=3D23)/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI= =3D0x8)/Ether(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)',=0D + 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI= =3D0x3)/Ether(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)',=0D + 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI= =3D0x8)/Ether(dst=3D"68:05:ca:8d:ed:a2")/IP(src=3D"192.168.1.2", dst=3D"192= .168.1.3")/UDP(sport=3D25,dport=3D23)/Raw("x"*80)',=0D + 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI= =3D0x8)/Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.5", dst=3D"192= .168.1.3")/UDP(sport=3D25,dport=3D23)/Raw("x"*80)',=0D + 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI= =3D0x8)/Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", dst=3D"192= .168.1.7")/UDP(sport=3D25,dport=3D23)/Raw("x"*80)',=0D + 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI= =3D0x8)/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)]',=0D + 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI= =3D0x8)/Ether(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=3D20)/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv4_nvgre_mac_ipv4_tcp =3D {=0D + "name":"tv_mac_ipv4_nvgre_mac_ipv4_tcp",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is 19= 2.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 19= 2.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions vf id = 1 / end",=0D + "matched":{"scapy_str":['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=3D23)/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether()/IP(dst=3D"192.168.0.2")/NVGRE(TNI= =3D2)/Ether(dst=3D"68:05:ca:8d:ed:a8")/IP(src=3D"192.168.1.2", dst=3D"192.1= 68.1.3")/TCP(sport=3D25,dport=3D23)/Raw("x"*80)',=0D + '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.1= 68.1.3")/TCP(sport=3D25,dport=3D23)/Raw("x"*80)',=0D + 'Ether()/IP(dst=3D"192.168.0.1")/NVGRE(TNI= =3D2)/Ether(dst=3D"68:05:ca:8d:ed:a2")/IP(src=3D"192.168.1.2", dst=3D"192.1= 68.1.3")/TCP(sport=3D25,dport=3D23)/Raw("x"*80)',=0D + '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.5", dst=3D"192.1= 68.1.3")/TCP(sport=3D25,dport=3D23)/Raw("x"*80)',=0D + '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.1= 68.1.7")/TCP(sport=3D25,dport=3D23)/Raw("x"*80)',=0D + '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.1= 68.1.3")/TCP(sport=3D1,dport=3D23)/Raw("x"*80)',=0D + '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.1= 68.1.3")/TCP(sport=3D25,dport=3D20)/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_ip_multicast =3D {=0D + "name":"tv_ip_multicast",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst spec = 224.0.0.0 dst mask 240.0.0.0 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether()/IP(dst=3D"239.0.0.0")/TCP()/Raw("x"*8= 0)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether()/IP(dst=3D"128.0.0.0")/TCP()/Raw("x= "*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_l2_multicast =3D {=0D + "name":"tv_l2_multicast",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth dst spec 01:00:5= e:00:00:00 dst mask ff:ff:ff:80:00:00 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"01:00:5e:7f:00:00")/IP()/TCP()/R= aw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"01:00:5e:ff:00:00")/IP()/TCP(= )/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_ethertype_filter_pppod =3D {=0D + "name":"tv_ethertype_filter_pppod",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth type is 0x8863 /= end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/PPPoED()/PPP= ()/IP()/Raw("x" *80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/PPPoE()/P= PP()/IP()/Raw("x" *80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_ethertype_filter_pppoe =3D {=0D + "name":"tv_ethertype_filter_pppoe",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth type is 0x8864 /= end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/PPPoE()/PPP(= )/IP()/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/PPPoED()/= PPP()/IP()/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_ethertype_filter_ipv6 =3D {=0D + "name":"tv_ethertype_filter_ipv6",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth type is 0x86dd /= end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/IPv6(dst=3D"= CDCD:910A:2222:5498:8475:1111:3900:2020", tc=3D3)/TCP(dport=3D23)/("X"*480)= ',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100= )/Dot1Q(vlan=3D1,type=3D0x86dd)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:1111:3= 900:2020", tc=3D3)/TCP(dport=3D23)/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":2}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/IP()/TCP(= dport=3D23)/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_udp_port_filter_dhcp_discovery =3D {=0D + "name":"tv_udp_port_filter_dhcp_discovery",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp src= is 68 dst is 67 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP(spo= rt=3D68,dport=3D67)/BOOTP(chaddr=3D"3c:fd:fe:b2:43:90")/DHCP(options=3D[("m= essage-type","discover"),"end"])/Raw("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP(= sport=3D63,dport=3D67)/BOOTP(chaddr=3D"3c:fd:fe:b2:43:90")/DHCP(options=3D[= ("message-type","discover"),"end"])/Raw("X"*480)',=0D + 'Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP(= sport=3D68,dport=3D69)/BOOTP(chaddr=3D"3c:fd:fe:b2:43:90")/DHCP(options=3D[= ("message-type","discover"),"end"])/Raw("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_udp_port_filter_dhcp_offer =3D {=0D + "name":"tv_udp_port_filter_dhcp_offer",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp src= is 67 dst is 68 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP(spo= rt=3D67,dport=3D68)/BOOTP(chaddr=3D"3c:fd:fe:b2:43:90",yiaddr=3D"192.168.1.= 0")/DHCP(options=3D[("message-type","offer"),"end"])/Raw("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP(= sport=3D63,dport=3D68)/BOOTP(chaddr=3D"3c:fd:fe:b2:43:90",yiaddr=3D"192.168= .1.0")/DHCP(options=3D[("message-type","offer"),"end"])/Raw("X"*480)',=0D + 'Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP(= sport=3D67,dport=3D63)/BOOTP(chaddr=3D"3c:fd:fe:b2:43:90",yiaddr=3D"192.168= .1.0")/DHCP(options=3D[("message-type","offer"),"end"])/Raw("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_udp_port_filter_vxlan =3D {=0D + "name":"tv_udp_port_filter_vxlan",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp dst= is 4789 / end actions vf id 1 / end",=0D + "matched":{"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",frag=3D5)/TCP()= /Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['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()/Raw("x"*80= )'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_vlan_filter =3D {=0D + "name":"tv_mac_vlan_filter",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 00:11:22:= 33:44:55 / vlan tci is 1 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100= )/Dot1Q(vlan=3D1)/IP(src=3D"192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D= 2)/TCP()/Raw("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:54",type=3D0x8= 100)/Dot1Q(vlan=3D1)/IP(src=3D"192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl= =3D2)/TCP()/Raw("X"*480)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D2)/IP(src=3D"192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl= =3D2)/TCP()/Raw("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_vlan_filter =3D {=0D + "name":"tv_vlan_filter",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / vlan tci is 1 = / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100= )/Dot1Q(vlan=3D1)/IP(src=3D"192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D= 2)/TCP()/Raw("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D2)/IP(src=3D"192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl= =3D2)/TCP()/Raw("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv4_l2tpv3 =3D {=0D + "name":"tv_mac_ipv4_l2tpv3",=0D + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / ipv= 4 src is 192.168.0.2 / l2tpv3oip session_id is 1 / end actions vf id 1 / en= d",=0D + "matched":{"scapy_str":["Ether(dst=3D'00:11:22:33:44:12')/IP(src=3D'19= 2.168.0.2', proto=3D115)/L2TP(b'\\x00\\x00\\x00\\x01')/('X'*480)"],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":["Ether(dst=3D'00:11:22:33:44:12')/IP(src=3D= '192.168.0.2', proto=3D115)/L2TP(b'\\x00\\x00\\x00\\x02')/('X'*480)",=0D + "Ether(dst=3D'00:11:22:33:44:12')/IP(src=3D= '192.168.1.2', proto=3D115)/L2TP(b'\\x00\\x00\\x00\\x01')/('X'*480)",=0D + "Ether(dst=3D'00:11:22:33:44:12')/IP(dst=3D= '192.168.0.2', proto=3D115)/L2TP(b'\\x00\\x00\\x00\\x01')/('X'*480)"],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv6_l2tpv3 =3D {=0D + "name":"tv_mac_ipv6_l2tpv3",=0D + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / ipv= 6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / l2tpv3oip session_id is = 1 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":["Ether(dst=3D'00:11:22:33:44:13')/IPv6(dst=3D'= 1111:2222:3333:4444:5555:6666:7777:8888', nh=3D115)/L2TP(b'\\x00\\x00\\x00\= \x01')/('X'*480)"],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":["Ether(dst=3D'00:11:22:33:44:13')/IPv6(dst= =3D'1111:2222:3333:4444:5555:6666:7777:8888', nh=3D115)/L2TP(b'\\x00\\x00\\= x00\\x02')/('X'*480)",=0D + "Ether(dst=3D'00:11:22:33:44:13')/IPv6(dst= =3D'1111:2222:3333:4444:5555:6666:7777:9999', nh=3D115)/L2TP(b'\\x00\\x00\\= x00\\x01')/('X'*480)",=0D + "Ether(dst=3D'00:11:22:33:44:13')/IPv6(src= =3D'1111:2222:3333:4444:5555:6666:7777:8888', nh=3D115)/L2TP(b'\\x00\\x00\\= x00\\x01')/('X'*480)"],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv4_esp =3D {=0D + "name":"tv_mac_ipv4_esp",=0D + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / ipv= 4 src is 192.168.0.2 / esp spi is 1 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:13")/IP(src=3D"19= 2.168.0.2", proto=3D50)/ESP(spi=3D1)/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:22")/IP(src=3D= "192.168.0.2", proto=3D50)/ESP(spi=3D2)/("X"*480)',=0D + 'Ether(dst=3D"00:11:22:33:44:22")/IP(src=3D= "192.168.1.2", proto=3D50)/ESP(spi=3D1)/("X"*480)',=0D + 'Ether(dst=3D"00:11:22:33:44:13")/IP(dst=3D= "192.168.0.2", proto=3D50)/ESP(spi=3D1)/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv6_esp =3D {=0D + "name":"tv_mac_ipv6_esp",=0D + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / ipv= 6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / esp spi is 1 / end actio= ns vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:13")/IPv6(dst=3D"= 1111:2222:3333:4444:5555:6666:7777:8888", nh=3D50)/ESP(spi=3D1)/("X"*480)']= ,=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:13")/IPv6(dst= =3D"1111:2222:3333:4444:5555:6666:7777:8888", nh=3D50)/ESP(spi=3D2)/("X"*48= 0)',=0D + 'Ether(dst=3D"00:11:22:33:44:13")/IPv6(dst= =3D"1111:2222:3333:4444:5555:6666:7777:9999", nh=3D50)/ESP(spi=3D1)/("X"*48= 0)',=0D + 'Ether(dst=3D"00:11:22:33:44:13")/IPv6(src= =3D"1111:2222:3333:4444:5555:6666:7777:8888", nh=3D50)/ESP(spi=3D1)/("X"*48= 0)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv4_ah =3D {=0D + "name":"tv_mac_ipv4_ah",=0D + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / ipv= 4 src is 192.168.0.2 / ah spi is 1 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:13")/IP(src=3D"19= 2.168.0.2", proto=3D51)/AH(spi=3D1)/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:13")/IP(src=3D= "192.168.0.2", proto=3D51)/AH(spi=3D2)/("X"*480)',=0D + 'Ether(dst=3D"00:11:22:33:44:13")/IP(src=3D= "192.168.10.2", proto=3D51)/AH(spi=3D1)/("X"*480)',=0D + 'Ether(dst=3D"00:11:22:33:44:13")/IP(dst=3D= "192.168.0.2", proto=3D51)/AH(spi=3D1)/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv6_ah =3D {=0D + "name":"tv_mac_ipv6_ah",=0D + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / ipv= 6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / ah spi is 1 / end action= s vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:13")/IPv6(dst=3D"= 1111:2222:3333:4444:5555:6666:7777:8888", nh=3D51)/AH(spi=3D1)/("X"*480)'],= =0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:13")/IPv6(dst= =3D"1111:2222:3333:4444:5555:6666:7777:8888", nh=3D51)/AH(spi=3D2)/("X"*480= )',=0D + 'Ether(dst=3D"00:11:22:33:44:13")/IPv6(dst= =3D"1111:2222:3333:4444:5555:6666:7777:9999", nh=3D51)/AH(spi=3D1)/("X"*480= )',=0D + 'Ether(dst=3D"00:11:22:33:44:13")/IPv6(src= =3D"1111:2222:3333:4444:5555:6666:7777:8888", nh=3D51)/AH(spi=3D1)/("X"*480= )'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv4_nat_t_esp =3D {=0D + "name":"tv_mac_ipv4_nat_t_esp",=0D + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / ipv= 4 src is 192.168.0.2 / udp / esp spi is 1 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:13")/IP(src=3D"19= 2.168.0.2")/UDP(dport=3D4500)/ESP(spi=3D1)/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:13")/IP(src=3D= "192.168.0.2")/UDP(dport=3D4500)/ESP(spi=3D2)/("X"*480)',=0D + 'Ether(dst=3D"00:11:22:33:44:13")/IP(src=3D= "192.168.1.2")/UDP(dport=3D4500)/ESP(spi=3D1)/("X"*480)',=0D + 'Ether(dst=3D"00:11:22:33:44:13")/IP(dst=3D= "192.168.0.2")/UDP(dport=3D4500)/ESP(spi=3D1)/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv6_nat_t_esp =3D {=0D + "name":"tv_mac_ipv6_nat_t_esp",=0D + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / ipv= 6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / udp / esp spi is 1 / end= actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:13")/IPv6(dst=3D"= 1111:2222:3333:4444:5555:6666:7777:8888")/UDP(dport=3D4500)/ESP(spi=3D1)/("= X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:13")/IPv6(dst= =3D"1111:2222:3333:4444:5555:6666:7777:8888")/UDP(dport=3D4500)/ESP(spi=3D2= )/("X"*480)',=0D + 'Ether(dst=3D"00:11:22:33:44:13")/IPv6(dst= =3D"1111:2222:3333:4444:5555:6666:7777:9999")/UDP(dport=3D4500)/ESP(spi=3D1= )/("X"*480)',=0D + 'Ether(dst=3D"00:11:22:33:44:13")/IPv6(src= =3D"1111:2222:3333:4444:5555:6666:7777:8888")/UDP(dport=3D4500)/ESP(spi=3D1= )/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv4_pfcp_node =3D {=0D + "name":"tv_mac_ipv4_pfcp_node",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp / p= fcp s_field is 0 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:11")/IP()/UDP(dpo= rt=3D8805)/PFCP(S=3D0)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:11")/IP()/UDP(= dport=3D8805)/PFCP(S=3D1)',=0D + 'Ether(dst=3D"00:11:22:33:44:11")/IPv6()/UD= P(dport=3D8805)/PFCP(S=3D0)',=0D + 'Ether(dst=3D"00:11:22:33:44:11")/IPv6()/UD= P(dport=3D8805)/PFCP(S=3D1)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv4_pfcp_session =3D {=0D + "name":"tv_mac_ipv4_pfcp_session",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 / udp / p= fcp s_field is 1 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:11")/IP()/UDP(dpo= rt=3D8805)/PFCP(S=3D1)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:11")/IP()/UDP(= dport=3D8805)/PFCP(S=3D0)',=0D + 'Ether(dst=3D"00:11:22:33:44:11")/IPv6()/UD= P(dport=3D8805)/PFCP(S=3D0)',=0D + 'Ether(dst=3D"00:11:22:33:44:11")/IPv6()/UD= P(dport=3D8805)/PFCP(S=3D1)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv6_pfcp_node =3D {=0D + "name":"tv_mac_ipv6_pfcp_node",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / udp / p= fcp s_field is 0 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:11")/IPv6()/UDP(d= port=3D8805)/PFCP(S=3D0)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:11")/IP()/UDP(= dport=3D8805)/PFCP(S=3D0)',=0D + 'Ether(dst=3D"00:11:22:33:44:11")/IP()/UDP(= dport=3D8805)/PFCP(S=3D1)',=0D + 'Ether(dst=3D"00:11:22:33:44:11")/IPv6()/UD= P(dport=3D8805)/PFCP(S=3D1)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_ipv6_pfcp_session =3D {=0D + "name":"tv_mac_ipv6_pfcp_session",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 / udp / p= fcp s_field is 1 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:11")/IPv6()/UDP(d= port=3D8805)/PFCP(S=3D1)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:11")/IP()/UDP(= dport=3D8805)/PFCP(S=3D0)',=0D + 'Ether(dst=3D"00:11:22:33:44:11")/IP()/UDP(= dport=3D8805)/PFCP(S=3D1)',=0D + 'Ether(dst=3D"00:11:22:33:44:11")/IPv6()/UD= P(dport=3D8805)/PFCP(S=3D0)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id =3D {=0D + "name":"tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 00:11:22:= 33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / en= d actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100= )/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/I= P()/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:54",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP()/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D2,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP()/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D4)/PPP(b\'\\x00\\x21\'= )/IP()/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\'= )/IPv6()/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id =3D {=0D + "name":"tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 00:11:22:= 33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / en= d actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100= )/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/I= Pv6()/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:54",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\'= )/IPv6()/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D2,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\'= )/IPv6()/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D4)/PPP(b\'\\x00\\x57\'= )/IPv6()/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP()/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_pppoe_ipv4_pay_session_id_proto_id =3D {=0D + "name":"tv_mac_pppoe_ipv4_pay_session_id_proto_id",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 00:11:22:= 33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions vf id = 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8864= )/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:54",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D4)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_pppoe_ipv6_pay_session_id_proto_id =3D {=0D + "name":"tv_mac_pppoe_ipv6_pay_session_id_proto_id",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 00:11:22:= 33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions vf id = 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8864= )/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:54",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D4)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_pppoe_ipv4_pay_ip_address =3D {=0D + "name":"tv_mac_pppoe_ipv4_pay_ip_address",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv4 = src is 192.168.1.1 dst is 192.168.1.2 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8864= )/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.1", dst=3D"= 192.168.1.2")/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.3", dst= =3D"192.168.1.2")/Raw("x"*80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.1", dst= =3D"192.168.1.4")/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_pppoe_ipv4_udp_pay =3D {=0D + "name":"tv_mac_pppoe_ipv4_udp_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv4 = src is 192.168.1.1 dst is 192.168.1.2 / udp src is 25 dst is 23 / end actio= ns vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8864= )/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.1", dst=3D"= 192.168.1.2")/UDP(sport=3D25,dport=3D23)/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.3", dst= =3D"192.168.1.2")/UDP(sport=3D25,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.1", dst= =3D"192.168.1.4")/UDP(sport=3D25,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.1", dst= =3D"192.168.1.2")/UDP(sport=3D27,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.1", dst= =3D"192.168.1.2")/UDP(sport=3D25,dport=3D19)/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port =3D {=0D + "name":"tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv4 = src is 192.168.1.1 dst is 192.168.1.2 / udp / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8864= )/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.1", dst=3D"= 192.168.1.2")/UDP(sport=3D25,dport=3D23)/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.3", dst= =3D"192.168.1.2")/UDP(sport=3D25,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.1", dst= =3D"192.168.1.4")/UDP(sport=3D25,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.1", dst= =3D"192.168.1.2")/TCP(sport=3D25,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.1", dst= =3D"192.168.1.2")/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_pppoe_ipv4_tcp_pay =3D {=0D + "name":"tv_mac_pppoe_ipv4_tcp_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv4 = src is 192.168.1.1 dst is 192.168.1.2 / tcp src is 25 dst is 23 / end actio= ns vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8864= )/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.1", dst=3D"= 192.168.1.2")/TCP(sport=3D25,dport=3D23)/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.3", dst= =3D"192.168.1.2")/TCP(sport=3D25,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.1", dst= =3D"192.168.1.4")/TCP(sport=3D25,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.1", dst= =3D"192.168.1.2")/TCP(sport=3D27,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.1", dst= =3D"192.168.1.2")/TCP(sport=3D25,dport=3D19)/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port =3D {=0D + "name":"tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv4 = src is 192.168.1.1 dst is 192.168.1.2 / tcp / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8864= )/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.1", dst=3D"= 192.168.1.2")/TCP(sport=3D25,dport=3D23)/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.3", dst= =3D"192.168.1.2")/TCP(sport=3D25,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.1", dst= =3D"192.168.1.4")/TCP(sport=3D25,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.1", dst= =3D"192.168.1.2")/UDP(sport=3D25,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP(src=3D"192.168.1.1", dst= =3D"192.168.1.2")/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_pppoe_ipv6_pay_ip_address =3D {=0D + "name":"tv_mac_pppoe_ipv6_pay_ip_address",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv6 = src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8= 475:1111:3900:2022 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:11:= 22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IPv6(= src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5498= :8475:1111:3900:2022")/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IP= v6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1537", dst=3D"CDCD:910A:2222:5= 498:8475:1111:3900:2022")/Raw("x"*80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IP= v6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5= 498:8475:1111:3900:2023")/Raw("x"*80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55")/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst= =3D"CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_pppoe_ipv6_udp_pay =3D {=0D + "name":"tv_mac_pppoe_ipv6_udp_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv6 = dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp src is 25 dst is 23 / = end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:11:= 22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IPv6(= src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5498= :8475:1111:3900:2022")/UDP(sport=3D25,dport=3D23)/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IP= v6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5= 498:8475:1111:3900:2023")/UDP(sport=3D25,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IP= v6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5= 498:8475:1111:3900:2022")/UDP(sport=3D27,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IP= v6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5= 498:8475:1111:3900:2022")/UDP(sport=3D25,dport=3D19)/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port =3D {=0D + "name":"tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv6 = src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8= 475:1111:3900:2022 / udp / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:11:= 22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IPv6(= src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5498= :8475:1111:3900:2022")/UDP(sport=3D25,dport=3D23)/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IP= v6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1537", dst=3D"CDCD:910A:2222:5= 498:8475:1111:3900:2022")/UDP(sport=3D25,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IP= v6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5= 498:8475:1111:3900:2023")/UDP(sport=3D25,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IP= v6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5= 498:8475:1111:3900:2022")/TCP(sport=3D25,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IP= v6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5= 498:8475:1111:3900:2022")/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_pppoe_ipv6_tcp_pay =3D {=0D + "name":"tv_mac_pppoe_ipv6_tcp_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv6 = dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp src is 25 dst is 23 / = end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:11:= 22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IPv6(= src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5498= :8475:1111:3900:2022")/TCP(sport=3D25,dport=3D23)/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IP= v6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5= 498:8475:1111:3900:2023")/TCP(sport=3D25,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IP= v6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5= 498:8475:1111:3900:2022")/TCP(sport=3D27,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IP= v6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5= 498:8475:1111:3900:2022")/TCP(sport=3D25,dport=3D19)/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port =3D {=0D + "name":"tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / pppoes / ipv6 = src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8= 475:1111:3900:2022 / tcp / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:11:= 22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IPv6(= src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5498= :8475:1111:3900:2022")/TCP(sport=3D25,dport=3D23)/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IP= v6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1537", dst=3D"CDCD:910A:2222:5= 498:8475:1111:3900:2022")/TCP(sport=3D25,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IP= v6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5= 498:8475:1111:3900:2023")/TCP(sport=3D25,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IP= v6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5= 498:8475:1111:3900:2022")/UDP(sport=3D25,dport=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/IP= v6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:5= 498:8475:1111:3900:2022")/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_vlan_pppoe_ipv4_pay_ip_address =3D {=0D + "name":"tv_mac_vlan_pppoe_ipv4_pay_ip_address",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / vlan tci is 1 = / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions vf id 1= / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100= )/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/I= P(src=3D"192.168.1.1", dst=3D"192.168.1.2")/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D2,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.1", dst=3D"192.168.1.2")/Raw("x"*80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.3", dst=3D"192.168.1.2")/Raw("x"*80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.1", dst=3D"192.168.1.4")/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_vlan_pppoe_ipv4_udp_pay =3D {=0D + "name":"tv_mac_vlan_pppoe_ipv4_udp_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / vlan tci is 1 = / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp src is 25 dst i= s 23 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100= )/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/I= P(src=3D"192.168.1.1", dst=3D"192.168.1.2")/UDP(sport=3D25,dport=3D23)/Raw(= "x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D2,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.1", dst=3D"192.168.1.2")/UDP(sport=3D25,dport=3D23)/R= aw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.3", dst=3D"192.168.1.2")/UDP(sport=3D25,dport=3D23)/R= aw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.1", dst=3D"192.168.1.4")/UDP(sport=3D25,dport=3D23)/R= aw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.1", dst=3D"192.168.1.2")/UDP(sport=3D27,dport=3D23)/R= aw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.1", dst=3D"192.168.1.2")/UDP(sport=3D25,dport=3D19)/R= aw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port =3D {=0D + "name":"tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / vlan tci is 1 = / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp / end actions v= f id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100= )/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/I= P(src=3D"192.168.1.1", dst=3D"192.168.1.2")/UDP(sport=3D25,dport=3D23)/Raw(= "x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D2,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.1", dst=3D"192.168.1.2")/UDP(sport=3D25,dport=3D23)/R= aw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.3", dst=3D"192.168.1.2")/UDP(sport=3D25,dport=3D23)/R= aw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.1", dst=3D"192.168.1.4")/UDP(sport=3D25,dport=3D23)/R= aw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.1", dst=3D"192.168.1.2")/TCP(sport=3D25,dport=3D23)/R= aw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.1", dst=3D"192.168.1.2")/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_vlan_pppoe_ipv4_tcp_pay =3D {=0D + "name":"tv_mac_vlan_pppoe_ipv4_tcp_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / vlan tci is 1 = / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp src is 25 dst i= s 23 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100= )/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/I= P(src=3D"192.168.1.1", dst=3D"192.168.1.2")/TCP(sport=3D25,dport=3D23)/Raw(= "x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D2,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.1", dst=3D"192.168.1.2")/TCP(sport=3D25,dport=3D23)/R= aw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.3", dst=3D"192.168.1.2")/TCP(sport=3D25,dport=3D23)/R= aw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.1", dst=3D"192.168.1.4")/TCP(sport=3D25,dport=3D23)/R= aw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.1", dst=3D"192.168.1.2")/TCP(sport=3D27,dport=3D23)/R= aw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.1", dst=3D"192.168.1.2")/TCP(sport=3D25,dport=3D19)/R= aw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port =3D {=0D + "name":"tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / vlan tci is 1 = / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp / end actions v= f id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100= )/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/I= P(src=3D"192.168.1.1", dst=3D"192.168.1.2")/TCP(sport=3D25,dport=3D23)/Raw(= "x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D2,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.1", dst=3D"192.168.1.2")/TCP(sport=3D25,dport=3D23)/R= aw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.3", dst=3D"192.168.1.2")/TCP(sport=3D25,dport=3D23)/R= aw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.1", dst=3D"192.168.1.4")/TCP(sport=3D25,dport=3D23)/R= aw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.1", dst=3D"192.168.1.2")/UDP(sport=3D25,dport=3D23)/R= aw("x" * 80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\'= )/IP(src=3D"192.168.1.1", dst=3D"192.168.1.2")/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_vlan_pppoe_ipv6_pay_ip_address =3D {=0D + "name":"tv_mac_vlan_pppoe_ipv6_pay_ip_address",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / vlan tci is 1 = / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / end action= s vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100= )/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\')/I= Pv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:2222:= 5498:8475:1111:3900:2022")/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D2,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\'= )/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1536", dst=3D"CDCD:910A:22= 22:5498:8475:1111:3900:2022")/Raw("x"*80)',=0D + 'Ether(dst=3D"00:11:22:33:44:55",type=3D0x8= 100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x57\'= )/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1537", dst=3D"CDCD:910A:22= 22:5498:8475:1111:3900:2022")/Raw("x"*80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_vlan_pppoe_ipv6_udp_pay =3D {=0D + "name":"tv_mac_vlan_pppoe_ipv6_udp_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / vlan tci is 1 = / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp src is= 25 dst is 23 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:11:= 22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid= =3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1= 536", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=3D25,dport= =3D23)/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:= 1536", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=3D25,dpor= t=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:= 1536", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=3D25,dpor= t=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:= 1536", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=3D27,dpor= t=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:= 1536", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=3D25,dpor= t=3D19)/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port =3D {=0D + "name":"tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / vlan tci is 1 = / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / udp / end = actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:11:= 22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid= =3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1= 536", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=3D25,dport= =3D23)/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:= 1536", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=3D25,dpor= t=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:= 1537", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=3D25,dpor= t=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:= 1536", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=3D25,dpor= t=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:= 1536", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_vlan_pppoe_ipv6_tcp_pay =3D {=0D + "name":"tv_mac_vlan_pppoe_ipv6_tcp_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / vlan tci is 1 = / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp src is= 25 dst is 23 / end actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:11:= 22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid= =3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1= 536", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=3D25,dport= =3D23)/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:= 1536", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=3D25,dpor= t=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:= 1536", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=3D25,dpor= t=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:= 1536", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=3D27,dpor= t=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:= 1536", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=3D25,dpor= t=3D19)/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port =3D {=0D + "name":"tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth / vlan tci is 1 = / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / tcp / end = actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:11:= 22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid= =3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1= 536", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=3D25,dport= =3D23)/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:= 1536", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=3D25,dpor= t=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:= 1537", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=3D25,dpor= t=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:= 1536", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=3D25,dpor= t=3D23)/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x00\\x57\')/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:= 1536", dst=3D"CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_pppoe_lcp_pay =3D {=0D + "name":"tv_mac_pppoe_lcp_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 00:11:22:= 33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0xc021 / end actions vf id = 1 / end",=0D + "matched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:11:= 22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\xc0\\x21\')/PPP_L= CP()/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:53",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\xc0\\x21\')/PP= P_LCP()/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D4)/PPP(b\'\\xc0\\x21\')/PP= P_LCP()/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP= ()/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_pppoe_ipcp_pay =3D {=0D + "name":"tv_mac_pppoe_ipcp_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 00:11:22:= 33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x8021 / end actions vf id = 1 / end",=0D + "matched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:11:= 22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x80\\x21\')/PPP_I= PCP()/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:53",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x80\\x21\')/PP= P_IPCP()/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D4)/PPP(b\'\\x80\\x21\')/PP= P_IPCP()/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8864)/PPPoE(sessionid=3D3)/PPP(b\'\\x00\\x21\')/IP= ()/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_vlan_pppoe_lcp_pay =3D {=0D + "name":"tv_mac_vlan_pppoe_lcp_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 00:11:22:= 33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0xc021 / en= d actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:11:= 22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid= =3D3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:53",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessioni= d=3D4)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +tv_mac_vlan_pppoe_ipcp_pay =3D {=0D + "name":"tv_mac_vlan_pppoe_ipcp_pay",=0D + "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 00:11:22:= 33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x8021 / en= d actions vf id 1 / end",=0D + "matched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:11:= 22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessionid= =3D3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":"nu= ll"}},=0D + "expect_results":{"expect_pkts":1}},=0D + "mismatched":{"scapy_str":['Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:53",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessioni= d=3D4)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',=0D + 'Ether(src=3D"11:22:33:44:55:99",dst=3D"00:= 11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8864)/PPPoE(sessioni= d=3D3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number,=0D + "param":{"expect_port":1, "expect_queues":= "null"}},=0D + "expect_results":{"expect_pkts":0}}=0D +}=0D +=0D +=0D +class CVLDCFFlowPriorityTest(TestCase):=0D + supported_nic =3D ['columbiaville_100g', 'columbiaville_25g', 'columbi= aville_25gx2']=0D +=0D + def bind_nics_driver(self, ports, driver=3D""):=0D + # modprobe vfio driver=0D + if driver =3D=3D "vfio-pci":=0D + for port in ports:=0D + netdev =3D self.dut.ports_info[port]['port']=0D + driver =3D netdev.get_nic_driver()=0D + if driver !=3D 'vfio-pci':=0D + netdev.bind_driver(driver=3D'vfio-pci')=0D +=0D + elif driver =3D=3D "igb_uio":=0D + # igb_uio should insmod as default, no need to check=0D + for port in ports:=0D + netdev =3D self.dut.ports_info[port]['port']=0D + driver =3D netdev.get_nic_driver()=0D + if driver !=3D 'igb_uio':=0D + netdev.bind_driver(driver=3D'igb_uio')=0D + else:=0D + for port in ports:=0D + netdev =3D self.dut.ports_info[port]['port']=0D + driver_now =3D netdev.get_nic_driver()=0D + if driver =3D=3D "":=0D + driver =3D netdev.default_driver=0D + if driver !=3D driver_now:=0D + netdev.bind_driver(driver=3Ddriver)=0D +=0D + @check_supported_nic(supported_nic)=0D + def set_up_all(self):=0D + """=0D + Run at the start of each test suite.=0D + """=0D + self.dut_ports =3D self.dut.get_ports(self.nic)=0D + # Verify that enough ports are available=0D + self.verify(len(self.dut_ports) >=3D 1, "Insufficient ports")=0D + localPort =3D self.tester.get_local_port(self.dut_ports[0])=0D + self.__tx_iface =3D self.tester.get_interface(localPort)=0D + self.pkt =3D Packet()=0D + self.testpmd_status =3D "close"=0D + #bind pf to kernel=0D + self.bind_nics_driver(self.dut_ports, driver=3D"ice")=0D +=0D + #set vf driver=0D + self.vf_driver =3D 'vfio-pci'=0D + self.dut.send_expect('modprobe vfio-pci', '#')=0D + self.path =3D self.dut.apps_name['test-pmd']=0D +=0D + def setup_1pf_vfs_env(self, pf_port=3D0, driver=3D'default'):=0D +=0D + self.used_dut_port_0 =3D self.dut_ports[pf_port]=0D + #get PF interface name=0D + self.pf0_intf =3D self.dut.ports_info[self.used_dut_port_0]['intf'= ]=0D + self.dut.send_expect('ethtool --set-priv-flags %s vf-vlan-prune-di= sable on' % self.pf0_intf, '#')=0D + #generate 4 VFs on PF=0D + self.dut.generate_sriov_vfs_by_port(self.used_dut_port_0, 4, drive= r=3Ddriver)=0D + self.sriov_vfs_port_0 =3D self.dut.ports_info[self.used_dut_port_0= ]['vfs_port']=0D + #set VF0 as trust=0D + self.dut.send_expect('ip link set %s vf 0 trust on' % self.pf0_int= f, '#')=0D + #bind VFs to dpdk driver=0D + for port in self.sriov_vfs_port_0:=0D + port.bind_driver(self.vf_driver)=0D + time.sleep(5)=0D +=0D + def set_up(self):=0D + """=0D + Run before each test case.=0D + """=0D + self.suite_config =3D rfc.get_suite_config(self)=0D + ice_driver_file_location =3D self.suite_config["ice_driver_file_lo= cation"]=0D + self.dut.send_expect("rmmod ice","#",30)=0D + self.dut.send_expect("insmod %s" % ice_driver_file_location, "# ",= 60)=0D + time.sleep(10)=0D + =0D + def create_testpmd_command(self):=0D + """=0D + Create testpmd command=0D + """=0D + #Prepare testpmd EAL and parameters=0D + vf0_pci =3D self.sriov_vfs_port_0[0].pci=0D + vf1_pci =3D self.sriov_vfs_port_0[1].pci=0D + vf2_pci =3D self.sriov_vfs_port_0[2].pci=0D + vf3_pci =3D self.sriov_vfs_port_0[3].pci=0D + all_eal_param =3D self.dut.create_eal_parameters(cores=3D'1S/4C/1T= ',ports=3D[vf0_pci, vf1_pci, vf2_pci, vf3_pci], port_options=3D{vf0_pci:"ca= p=3Ddcf"})=0D + command =3D self.path + all_eal_param + " -- -i"=0D + return command=0D +=0D + def launch_testpmd(self):=0D + """=0D + launch testpmd with the command=0D + """=0D + command =3D self.create_testpmd_command()=0D + out =3D self.dut.send_expect(command, "testpmd> ", 15)=0D + self.testpmd_status =3D "running"=0D + #self.dut.send_expect("set portlist 1", "testpmd> ", 15)=0D + self.dut.send_expect("set fwd rxonly", "testpmd> ", 15)=0D + self.dut.send_expect("set verbose 1", "testpmd> ", 15)=0D +=0D + def send_and_check_packets(self, dic, session_name=3D"", tx_iface=3D""= ):=0D + """=0D + general packets processing workflow.=0D + """=0D + if session_name =3D=3D "":=0D + session_name =3D self.dut=0D + if tx_iface =3D=3D "":=0D + tx_iface =3D self.__tx_iface=0D + session_name.send_expect("start", "testpmd> ", 15)=0D + time.sleep(2)=0D + #send packets=0D + self.pkt.update_pkt(dic["scapy_str"])=0D + self.pkt.send_pkt(self.tester, tx_port=3Dtx_iface, count=3D1, time= out=3D370)=0D + time.sleep(3)=0D + out =3D session_name.send_expect("stop", "testpmd> ", 15)=0D + dic["check_func"]["func"](out, dic["check_func"]["param"], dic["ex= pect_results"])=0D +=0D + def validate_switch_filter_rule(self, rte_flow_pattern, session_name= =3D"", check_stats=3DTrue):=0D + """=0D + validate switch filter rules=0D + """=0D + if session_name =3D=3D "":=0D + session_name =3D self.dut=0D + p =3D "Flow rule validated"=0D + rule_list =3D []=0D + if isinstance(rte_flow_pattern, list):=0D + for rule in rte_flow_pattern:=0D + length =3D len(rule)=0D + rule_rep =3D rule[0:5] + "validate" + rule[11:length]=0D + out =3D session_name.send_expect(rule_rep, "testpmd> ") #= validate a rule=0D + if (p in out) and ("Failed" not in out):=0D + rule_list.append(True)=0D + else:=0D + rule_list.append(False)=0D + elif isinstance(rte_flow_pattern, str):=0D + length =3D len(rte_flow_pattern)=0D + rule_rep =3D rte_flow_pattern[0:5] + "validate" + rte_flow_pat= tern[11:length]=0D + out =3D session_name.send_expect(rule_rep, "testpmd> ") #vali= date a rule=0D + if (p in out) and ("Failed" not in out):=0D + rule_list.append(True)=0D + else:=0D + rule_list.append(False)=0D + else:=0D + raise Exception("unsupported rule type, only accept list or st= r")=0D + if check_stats:=0D + self.verify(all(rule_list), "some rules not validated successf= ully, result %s, rule %s" % (rule_list, rte_flow_pattern))=0D + else:=0D + self.verify(not any(rule_list), "all rules should not validate= successfully, result %s, rule %s" % (rule_list, rte_flow_pattern))=0D +=0D + def create_switch_filter_rule(self, rte_flow_pattern, session_name=3D"= ", check_stats=3DTrue):=0D + """=0D + create switch filter rules=0D + """=0D + if session_name =3D=3D "":=0D + session_name =3D self.dut=0D + p =3D re.compile(r"Flow rule #(\d+) created")=0D + rule_list =3D []=0D + if isinstance(rte_flow_pattern, list):=0D + for rule in rte_flow_pattern:=0D + out =3D session_name.send_expect(rule, "testpmd> ") #crea= te a rule=0D + m =3D p.search(out)=0D + if m:=0D + rule_list.append(m.group(1))=0D + else:=0D + rule_list.append(False)=0D + else:=0D + out =3D session_name.send_expect(rte_flow_pattern, "testpmd> "= ) #create a rule=0D + m =3D p.search(out)=0D + if m:=0D + rule_list.append(m.group(1))=0D + else:=0D + rule_list.append(False)=0D + if check_stats:=0D + self.verify(all(rule_list), "some rules not created successful= ly, result %s, rule %s" % (rule_list, rte_flow_pattern))=0D + else:=0D + self.verify(not any(rule_list), "all rules should create faile= d, result %s" % rule_list)=0D + return rule_list=0D +=0D + def check_switch_filter_rule_list(self, port_id, rule_list, session_na= me=3D"", need_verify=3DTrue):=0D + """=0D + check the rules in list identical to ones in rule_list=0D + """=0D + if session_name =3D=3D "":=0D + session_name =3D self.dut=0D + out =3D session_name.send_expect("flow list %d" % port_id, "testpm= d> ", 15)=0D + p =3D re.compile(r"ID\s+Group\s+Prio\s+Attr\s+Rule")=0D + m =3D p.search(out)=0D + if not m:=0D + result =3D []=0D + else:=0D + p_spec =3D re.compile("^(\d+)\s")=0D + out_lines =3D out.splitlines()=0D + res =3D filter(bool, map(p_spec.match, out_lines))=0D + result =3D [i.group(1) for i in res]=0D + if need_verify:=0D + self.verify(result =3D=3D rule_list,=0D + "the rule list is not the same. expect %s, result %s" = % (rule_list, result))=0D + else:=0D + return result=0D +=0D + def destroy_switch_filter_rule(self, port_id, rule_list, session_name= =3D"", need_verify=3DTrue):=0D + if session_name =3D=3D "":=0D + session_name =3D self.dut=0D + p =3D re.compile(r"Flow rule #(\d+) destroyed")=0D + destroy_list =3D []=0D + if isinstance(rule_list, list):=0D + for i in rule_list:=0D + out =3D session_name.send_expect("flow destroy %s rule %s"= % (port_id, i), "testpmd> ", 15)=0D + m =3D p.search(out)=0D + if m:=0D + destroy_list.append(m.group(1))=0D + else:=0D + destroy_list.append(False)=0D + else:=0D + out =3D session_name.send_expect("flow destroy %s rule %s" % (= port_id, rule_list), "testpmd> ", 15)=0D + m =3D p.search(out)=0D + if m:=0D + destroy_list.append(m.group(1))=0D + else:=0D + destroy_list.append(False)=0D + rule_list =3D [rule_list]=0D + if need_verify:=0D + self.verify(destroy_list =3D=3D rule_list, "flow rule destroy = failed, expect %s result %s" % (rule_list, destroy_list))=0D + else:=0D + return destroy_list=0D +=0D + def _rte_flow_validate_pattern(self, test_vector, launch_testpmd=3DTru= e):=0D + =0D + #launch testpmd=0D + if launch_testpmd:=0D + self.launch_testpmd()=0D + #add priority for rules=0D + rte_flow_pattern=3Dtest_vector["rte_flow_pattern"]=0D + length=3D len(rte_flow_pattern)=0D + rule1=3Drte_flow_pattern[0:14] + "priority 0" + rte_flow_pattern[1= 3:length]=0D + rule2=3Drte_flow_pattern[0:14] + "priority 1" + rte_flow_pattern[1= 3:length-7]+ "2" + rte_flow_pattern[length-6:length]=0D + rte_flow=3D[rule1, rule2]=0D + #validate 2 rule=0D + self.validate_switch_filter_rule(rte_flow)=0D + #create 2 rule=0D + rule_list =3D self.create_switch_filter_rule(rte_flow)=0D + self.check_switch_filter_rule_list(0, rule_list)=0D + #send matched packets and check=0D + matched_dic =3D test_vector["matched"]=0D + matched_dic["check_func"]["param"]["expect_port"]=3D2=0D + self.send_and_check_packets(matched_dic)=0D + #send mismatched packets and check=0D + mismatched_dic =3D test_vector["mismatched"]=0D + mismatched_dic["check_func"]["param"]["expect_port"]=3D[1,2]=0D + mismatched_dic["expect_results"]["expect_pkts"]=3D[0,0]=0D + self.send_and_check_packets(mismatched_dic)=0D + #destroy rule with priority 1=0D + self.destroy_switch_filter_rule(0, rule_list[1])=0D + self.check_switch_filter_rule_list(0, ['0'])=0D + #send matched packets and check=0D + destroy_dict1 =3D copy.deepcopy(matched_dic)=0D + destroy_dict1["check_func"]["param"]["expect_port"]=3D1=0D + self.send_and_check_packets(destroy_dict1)=0D + #recreate rule with priority 1=0D + self.create_switch_filter_rule(rte_flow[1])=0D + self.check_switch_filter_rule_list(0, rule_list)=0D + #destroy rule with priority 0=0D + self.destroy_switch_filter_rule(0, rule_list[0])=0D + self.check_switch_filter_rule_list(0, ['1'])=0D + #send matched packets and check=0D + destroy_dict2 =3D copy.deepcopy(matched_dic)=0D + self.send_and_check_packets(destroy_dict2)=0D + #destroy rule with priority 1 and check=0D + self.destroy_switch_filter_rule(0, rule_list[1])=0D + self.check_switch_filter_rule_list(0, [])=0D + destroy_dict3 =3D copy.deepcopy(matched_dic)=0D + if isinstance(destroy_dict3["expect_results"]["expect_pkts"], list= ):=0D + destroy_dict3["expect_results"]["expect_pkts"] =3D [0]*len(des= troy_dict3["expect_results"]["expect_pkts"])=0D + else:=0D + destroy_dict3["expect_results"]["expect_pkts"] =3D 0=0D + self.send_and_check_packets(destroy_dict3)=0D +=0D + =0D + def test_mac_ipv4_frag(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv4_frag)=0D +=0D + def test_mac_ipv4_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv4_pay)=0D +=0D + def test_mac_ipv4_udp_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv4_udp_pay)=0D +=0D + def test_mac_ipv4_tcp_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv4_tcp_pay)=0D +=0D + def test_mac_ipv4_igmp(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv4_igmp)=0D +=0D + def test_mac_ipv6_srcip_dstip(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv6_srcip_dstip)=0D +=0D + def test_mac_ipv6_dstip_tc(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv6_dstip_tc)=0D +=0D + def test_mac_ipv6_udp_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv6_udp_pay)=0D +=0D + def test_mac_ipv6_tcp(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv6_tcp)=0D +=0D + def test_mac_ipv4_nvgre_ipv4_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv4_nvgre_ipv4_pay)=0D +=0D + def test_mac_ipv4_nvgre_ipv4_udp_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv4_nvgre_ipv4_udp_pay)=0D +=0D + def test_mac_ipv4_nvgre_ipv4_tcp(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv4_nvgre_ipv4_tcp)=0D +=0D + def test_mac_ipv4_nvgre_mac_ipv4_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv4_nvgre_mac_ipv4_pay)=0D +=0D + def test_mac_ipv4_nvgre_mac_ipv4_udp_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv4_nvgre_mac_ipv4_udp_pay= )=0D +=0D + def test_mac_ipv4_nvgre_mac_ipv4_tcp(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv4_nvgre_mac_ipv4_tcp)=0D +=0D + def test_ip_multicast(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_ip_multicast)=0D +=0D + def test_l2_multicast(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_l2_multicast)=0D +=0D + def test_ethertype_filter_pppod(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_ethertype_filter_pppod)=0D +=0D + def test_ethertype_filter_pppoe(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_ethertype_filter_pppoe)=0D +=0D + def test_ethertype_filter_ipv6(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_ethertype_filter_ipv6)=0D +=0D + def test_udp_port_filter_dhcp_discovery(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_udp_port_filter_dhcp_discovery)= =0D +=0D + def test_udp_port_filter_dhcp_offer(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_udp_port_filter_dhcp_offer)=0D +=0D + def test_udp_port_filter_vxlan(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_udp_port_filter_vxlan)=0D +=0D + def test_mac_vlan_filter(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_vlan_filter)=0D +=0D + def test_vlan_filter(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_vlan_filter)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_ipv4_l2tpv3(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv4_l2tpv3)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_ipv6_l2tpv3(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv6_l2tpv3)=0D +=0D + @skip_unsupported_pkg('os default')=0D + def test_mac_ipv4_esp(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv4_esp)=0D +=0D + @skip_unsupported_pkg('os default')=0D + def test_mac_ipv6_esp(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv6_esp)=0D +=0D + @skip_unsupported_pkg('os default')=0D + def test_mac_ipv4_ah(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv4_ah)=0D +=0D + @skip_unsupported_pkg('os default')=0D + def test_mac_ipv6_ah(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv6_ah)=0D +=0D + @skip_unsupported_pkg('os default')=0D + def test_mac_ipv4_nat_t_esp(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv4_nat_t_esp)=0D +=0D + @skip_unsupported_pkg('os default')=0D + def test_mac_ipv6_nat_t_esp(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv6_nat_t_esp)=0D + =0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_ipv4_pfcp_node(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv4_pfcp_node)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_ipv4_pfcp_session(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv4_pfcp_session)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_ipv6_pfcp_node(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv6_pfcp_node)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_ipv6_pfcp_session(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_ipv6_pfcp_session)=0D + =0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_vlan_pppoe_ipv4_pay_session_id_proto_id(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv4_pay_session= _id_proto_id)=0D + =0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_vlan_pppoe_ipv6_pay_session_id_proto_id(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv6_pay_session= _id_proto_id)=0D + =0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_pppoe_ipv4_pay_session_id_proto_id(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_pppoe_ipv4_pay_session_id_p= roto_id)=0D + =0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_pppoe_ipv6_pay_session_id_proto_id(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_pppoe_ipv6_pay_session_id_p= roto_id)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_pppoe_ipv4_pay_ip_address(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_pppoe_ipv4_pay_ip_address)= =0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_pppoe_ipv4_udp_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_pppoe_ipv4_udp_pay)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_pppoe_ipv4_udp_pay_non_src_dst_port(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_pppoe_ipv4_udp_pay_non_src_= dst_port)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_pppoe_ipv4_tcp_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_pppoe_ipv4_tcp_pay)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_pppoe_ipv4_tcp_pay_non_src_dst_port(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_pppoe_ipv4_tcp_pay_non_src_= dst_port)=0D + =0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_pppoe_ipv6_pay_ip_address(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_pppoe_ipv6_pay_ip_address)= =0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_pppoe_ipv6_udp_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_pppoe_ipv6_udp_pay)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_pppoe_ipv6_udp_pay_non_src_dst_port(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_pppoe_ipv6_udp_pay_non_src_= dst_port)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_pppoe_ipv6_tcp_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_pppoe_ipv6_tcp_pay)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_pppoe_ipv6_tcp_pay_non_src_dst_port(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_pppoe_ipv6_tcp_pay_non_src_= dst_port)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_vlan_pppoe_ipv4_pay_ip_address(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv4_pay_ip_addr= ess)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_vlan_pppoe_ipv4_udp_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv4_udp_pay)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv4_udp_pay_non= _src_dst_port)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_vlan_pppoe_ipv4_tcp_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv4_tcp_pay)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv4_tcp_pay_non= _src_dst_port)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_vlan_pppoe_ipv6_pay_ip_address(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv6_pay_ip_addr= ess)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_vlan_pppoe_ipv6_udp_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv6_udp_pay)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv6_udp_pay_non= _src_dst_port)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_vlan_pppoe_ipv6_tcp_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv6_tcp_pay)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv6_tcp_pay_non= _src_dst_port)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_pppoe_lcp_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_pppoe_lcp_pay)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_pppoe_ipcp_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_pppoe_ipcp_pay)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_vlan_pppoe_lcp_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_lcp_pay)=0D +=0D + @skip_unsupported_pkg(['os default', 'wireless'])=0D + def test_mac_vlan_pppoe_ipcp_pay(self):=0D + self.setup_1pf_vfs_env()=0D + self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipcp_pay)=0D +=0D + def test_negative_case(self):=0D + self.setup_1pf_vfs_env()=0D + #launch testpmd=0D + self.launch_testpmd()=0D + negative_rule=3D["flow create 0 priority 2 ingress pattern eth / i= pv4 src is 192.168.0.1 dst is 192.168.0.2 / end actions vf id 1 / end",=0D + "flow create 0 priority a ingress pattern eth / ipv= 4 src is 192.168.0.1 dst is 192.168.0.2 / end actions vf id 1 / end",=0D + "flow create 0 priority 0 ingress pattern eth / ipv= 4 src is 192.168.0.1 dst is 192.168.0.2 / end actions vf id 4 / end"]=0D + self.create_switch_filter_rule(negative_rule, check_stats=3DFalse)= =0D +=0D + def test_exclusive_case(self):=0D + self.setup_1pf_vfs_env()=0D +=0D + #subcase 1: same pattern/input set/action different priority=0D + self.launch_testpmd()=0D + rule=3D["flow create 0 priority 1 ingress pattern eth / ipv4 src i= s 192.168.0.1 dst is 192.168.0.2 / end actions vf id 2 / end",=0D + "flow create 0 priority 0 ingress pattern eth / ipv4 sr= c is 192.168.0.1 dst is 192.168.0.2 / end actions vf id 2 / end"]=0D + rule_list=3Dself.create_switch_filter_rule(rule)=0D + #self.check_switch_filter_rule_list(0, rule_list)=0D + matched_dic =3D {"scapy_str":['Ether(dst=3D"68:05:ca:8d:ed:a8")/IP= (src=3D"192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D2)/TCP()/("X"*480)']= ,=0D + "check_func":{"func":rfc.check_vf_rx_packets_number= ,=0D + "param":{"expect_port":2, "expect_que= ue":"null"}},=0D + "expect_results":{"expect_pkts":1}}=0D + self.send_and_check_packets(matched_dic)=0D + self.dut.send_expect("flow flush 0", "testpmd> ", 15)=0D + self.dut.send_expect("clear port stats all", "testpmd> ", 15)=0D + self.dut.send_expect("quit", "#", 15)=0D +=0D + #subcase 2: same pattern/input set/priority different action=0D + self.launch_testpmd()=0D + rule=3D["flow create 0 priority 1 ingress pattern eth / ipv4 src i= s 192.168.0.1 dst is 192.168.0.2 / end actions vf id 1 / end",=0D + "flow create 0 priority 1 ingress pattern eth / ipv4 sr= c is 192.168.0.1 dst is 192.168.0.2 / end actions vf id 2 / end"]=0D + rule_list=3Dself.create_switch_filter_rule(rule)=0D + self.check_switch_filter_rule_list(0, rule_list)=0D + matched_dic =3D {"scapy_str":['Ether(dst=3D"68:05:ca:8d:ed:a8")/IP= (src=3D"192.168.0.1",dst=3D"192.168.0.2",tos=3D4,ttl=3D2)/TCP()/("X"*480)']= ,=0D + "check_func":{"func":rfc.check_vf_rx_packets_number= ,=0D + "param":{"expect_port":[1,2], "expect= _queue":"null"}},=0D + "expect_results":{"expect_pkts":[1,1]}}=0D + self.send_and_check_packets(matched_dic)=0D + self.dut.send_expect("flow flush 0", "testpmd> ", 15)=0D + self.dut.send_expect("clear port stats all", "testpmd> ", 15)=0D + self.dut.send_expect("quit", "#", 15)=0D +=0D + #subcase 3: some rules overlap=0D + self.launch_testpmd()=0D + rule=3D["flow create 0 priority 0 ingress pattern eth / vlan / vla= n / pppoes / pppoe_proto_id is 0x21 / end actions vf id 1 / end",=0D + "flow create 0 priority 0 ingress pattern eth / vlan / = vlan tci is 2 / end actions vf id 1 / end",=0D + "flow create 0 priority 1 ingress pattern eth / vlan / = vlan / pppoes seid is 1 / ipv4 / end actions vf id 2 / end",=0D + "flow create 0 priority 1 ingress pattern eth dst is 00= :00:00:01:03:03 / vlan / vlan / end actions vf id 2 / end",=0D + "flow create 0 priority 1 ingress pattern eth dst is 00= :00:00:01:03:03 / end actions vf id 3 / end",=0D + "flow create 0 priority 1 ingress pattern eth / vlan tc= i is 1 / vlan tci is 2 / end actions vf id 3 / end"]=0D + rule_list=3Dself.create_switch_filter_rule(rule)=0D + self.check_switch_filter_rule_list(0, rule_list)=0D + matched_dic =3D {"scapy_str":['Ether(dst=3D"00:00:00:01:03:03")/Do= t1Q(vlan=3D1)/Dot1Q(vlan=3D2)/Raw("x"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number= ,=0D + "param":{"expect_port":[2,3], "expect= _queue":"null"}},=0D + "expect_results":{"expect_pkts":[1,1]}}=0D + self.send_and_check_packets(matched_dic)=0D + self.dut.send_expect("flow destroy 0 rule 5", "testpmd> ", 15)=0D + self.send_and_check_packets(matched_dic)=0D + self.dut.send_expect("flow destroy 0 rule 4", "testpmd> ", 15)=0D + matched_dic["check_func"]["param"]["expect_port"]=3D2=0D + matched_dic["expect_results"]["expect_pkts"]=3D1=0D + self.send_and_check_packets(matched_dic)=0D + self.dut.send_expect("flow destroy 0 rule 3", "testpmd> ", 15)=0D + matched_dic["check_func"]["param"]["expect_port"]=3D1=0D + matched_dic["expect_results"]["expect_pkts"]=3D1=0D + self.send_and_check_packets(matched_dic)=0D + self.dut.send_expect("flow destroy 0 rule 1", "testpmd> ", 15)=0D + matched_dic["expect_results"]["expect_pkts"]=3D0=0D + self.send_and_check_packets(matched_dic)=0D + matched_dic =3D {"scapy_str":['Ether(dst=3D"00:11:22:33:44:55",typ= e=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8100)/Dot1Q(vlan=3D0x2,type=3D0x8864)/P= PPoE(sessionid=3D0x1)/PPP(proto=3D0x21)/IP()/UDP(dport=3D23)/("X"*480)'],=0D + "check_func":{"func":rfc.check_vf_rx_packets_number= ,=0D + "param":{"expect_port":2, "expect_que= ue":"null"}},=0D + "expect_results":{"expect_pkts":1}}=0D + self.send_and_check_packets(matched_dic)=0D + self.dut.send_expect("flow destroy 0 rule 2", "testpmd> ", 15)=0D + matched_dic["check_func"]["param"]["expect_port"]=3D1=0D + self.send_and_check_packets(matched_dic)=0D + self.dut.send_expect("flow destroy 0 rule 0", "testpmd> ", 15)=0D + matched_dic["expect_results"]["expect_pkts"]=3D0=0D + self.send_and_check_packets(matched_dic)=0D +=0D + def tear_down(self):=0D + """=0D + Run after each test case.=0D + """=0D + if self.testpmd_status !=3D "close":=0D + # destroy all flow rules on DCF=0D + self.dut.send_expect("flow flush 0", "testpmd> ", 15)=0D + self.dut.send_expect("clear port stats all", "testpmd> ", 15)= =0D + self.dut.send_expect("quit", "#", 15)=0D + #kill all DPDK application=0D + self.dut.kill_all()=0D + # destroy vfs=0D + for port_id in self.dut_ports:=0D + self.dut.destroy_sriov_vfs_by_port(port_id)=0D + self.testpmd_status =3D "close"=0D + if getattr(self, 'session_secondary', None):=0D + self.dut.close_session(self.session_secondary)=0D +=0D + def tear_down_all(self):=0D + """=0D + Run after each test suite.=0D + """=0D + self.dut.kill_all()=0D +=0D --=20 2.25.1