* [dts] [PATCH V1 0/8] modified suite to support pkg check
@ 2021-03-18 5:27 Zhimin Huang
2021-03-18 5:27 ` [dts] [PATCH V1 1/8] tests/cvl_advanced_rss_pppoe:rename pppoe suite Zhimin Huang
` (8 more replies)
0 siblings, 9 replies; 10+ messages in thread
From: Zhimin Huang @ 2021-03-18 5:27 UTC (permalink / raw)
To: dts; +Cc: Zhimin Huang
1.To adapt needs and framework modifications, these suite add decorator to support pkg check
2.Pppoe has a large number of cases and only support comms pkg, so split pppoe case into new suite
Zhimin Huang (8):
tests/cvl_advanced_rss_pppoe:rename pppoe suite
add decorator to support nic and pkg check
tests/cvl_advanced_rss_pppoe:support nic and pkg check
tests/cvl_dcf_switch_filter:support nic and pkg check
tests/cvl_switch_filter:support nic and pkg check
tests/cvl_advanced_rss_vlan_esp_ah_l2tp_pfcp:split pppoe into new
suite
tests/cvl_dcf_switch_filter_pppoe:split pppoe into new suite
tests/cvl_switch_filter_pppoe:split pppoe into new suite
..._cvl_advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp.py | 82 +-
tests/TestSuite_cvl_advanced_rss_pppoe.py | 4754 ++++++++++++++++
...cvl_advanced_rss_pppoe_vlan_esp_ah_l2tp_pfcp.py | 5667 --------------------
...Suite_cvl_advanced_rss_vlan_esp_ah_l2tp_pfcp.py | 998 ++++
tests/TestSuite_cvl_dcf_switch_filter.py | 542 +-
tests/TestSuite_cvl_dcf_switch_filter_pppoe.py | 912 ++++
tests/TestSuite_cvl_fdir.py | 8 +-
tests/TestSuite_cvl_switch_filter.py | 2761 +---------
tests/TestSuite_cvl_switch_filter_pppoe.py | 2965 ++++++++++
tests/TestSuite_iavf_fdir.py | 53 +-
tests/TestSuite_l2tp_esp_coverage.py | 50 +-
11 files changed, 9869 insertions(+), 8923 deletions(-)
create mode 100644 tests/TestSuite_cvl_advanced_rss_pppoe.py
delete mode 100644 tests/TestSuite_cvl_advanced_rss_pppoe_vlan_esp_ah_l2tp_pfcp.py
create mode 100644 tests/TestSuite_cvl_advanced_rss_vlan_esp_ah_l2tp_pfcp.py
mode change 100644 tests/TestSuite_cvl_dcf_switch_filter.py
create mode 100644 tests/TestSuite_cvl_dcf_switch_filter_pppoe.py
create mode 100644 tests/TestSuite_cvl_switch_filter_pppoe.py
--
1.8.3.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [dts] [PATCH V1 1/8] tests/cvl_advanced_rss_pppoe:rename pppoe suite
2021-03-18 5:27 [dts] [PATCH V1 0/8] modified suite to support pkg check Zhimin Huang
@ 2021-03-18 5:27 ` Zhimin Huang
2021-03-18 5:27 ` [dts] [PATCH V1 2/8] add decorator to support nic and pkg check Zhimin Huang
` (7 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Zhimin Huang @ 2021-03-18 5:27 UTC (permalink / raw)
To: dts; +Cc: Zhimin Huang
*.rename pppoe suite and pkg check
Signed-off-by: Zhimin Huang <zhiminx.huang@intel.com>
---
| 5667 ++++++++++++++++++++
| 5667 --------------------
2 files changed, 5667 insertions(+), 5667 deletions(-)
create mode 100644 tests/TestSuite_cvl_advanced_rss_pppoe.py
delete mode 100644 tests/TestSuite_cvl_advanced_rss_pppoe_vlan_esp_ah_l2tp_pfcp.py
--git a/tests/TestSuite_cvl_advanced_rss_pppoe.py b/tests/TestSuite_cvl_advanced_rss_pppoe.py
new file mode 100644
index 0000000..bf5422d
--- /dev/null
+++ b/tests/TestSuite_cvl_advanced_rss_pppoe.py
@@ -0,0 +1,5667 @@
+# BSD LICENSE
+#
+# Copyright(c)2020 Intel Corporation. All rights reserved.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Intel Corporation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+import re
+import random
+import string
+from test_case import TestCase
+from pmd_output import PmdOutput
+from packet import Packet
+from rte_flow_common import RssProcessing
+from config import UserConf
+
+mac_ipv4_pfcp_session_packets = {
+ 'match': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=2)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:54")/IP(src="192.168.0.25",dst="192.168.0.23")/UDP(sport=23,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)'],
+ 'mismatch': [
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=25)/Raw("x"*80)']
+}
+
+mac_ipv4_pfcp_session = {
+ 'sub_casename': 'mac_ipv4_pfcp_session',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv4_pfcp_session_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv4_pfcp_session_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv4_pfcp_session_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': [i for i in mac_ipv4_pfcp_session_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_ipv4_pfcp_session_packets['match']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_ipv6_pfcp_session_packets = {
+ 'match': [
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=2)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)'],
+ 'mismatch': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=25)/Raw("x"*80)']
+}
+
+mac_ipv6_pfcp_session = {
+ 'sub_casename': 'mac_ipv6_pfcp_session',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv6_pfcp_session_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv6_pfcp_session_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv6_pfcp_session_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': [i for i in mac_ipv6_pfcp_session_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_ipv6_pfcp_session_packets['match']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_ipv4_l2tpv3_packets = {
+ 'match': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.4", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x12\')/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.5",dst="192.168.0.7", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)'
+ ],
+ 'mismatch': [
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=25)/Raw("x"*80)'
+ ]
+}
+
+mac_ipv4_l2tpv3 = {
+ 'sub_casename': 'mac_ipv4_l2tpv3',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv4_l2tpv3_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv4_l2tpv3_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv4_l2tpv3_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': [i for i in mac_ipv4_l2tpv3_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_ipv4_l2tpv3_packets['match']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_ipv6_l2tpv3_packets = {
+ 'match': [
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP(b\'\\x00\\x00\\x00\\x12\')/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)'
+ ],
+ 'mismatch': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=25)/Raw("x"*80)'
+ ]
+}
+
+mac_ipv6_l2tpv3 = {
+ 'sub_casename': 'mac_ipv6_l2tpv3',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv6_l2tpv3_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv6_l2tpv3_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv6_l2tpv3_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': [i for i in mac_ipv6_l2tpv3_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_ipv6_l2tpv3_packets['match']],
+ 'action': 'check_no_hash',
+ }
+ ]
+}
+
+mac_ipv4_esp_packets = {
+ 'match': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=12)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.4",dst="192.168.0.7",proto=50)/ESP(spi=11)/Raw("x"*480)'],
+ 'mismatch': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=12)/Raw("x"*480)'
+ ]
+}
+
+mac_ipv4_esp = {
+ 'sub_casename': 'mac_ipv4_esp',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv4_esp_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv4_esp_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv4_esp_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': [
+ i for i in mac_ipv4_esp_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [
+ i for i in mac_ipv4_esp_packets['match']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_ipv4_udp_esp_packets = {
+ 'match': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=12)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.4",dst="192.168.0.7")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)'],
+ 'mismatch': [
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)']
+}
+
+mac_ipv4_udp_esp = {
+ 'sub_casename': 'mac_ipv4_udp_esp',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / esp / end actions rss types esp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv4_udp_esp_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv4_udp_esp_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv4_udp_esp_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': [i for i in mac_ipv4_udp_esp_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [
+ i for i in mac_ipv4_esp_packets['match']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_ipv6_esp_packets = {
+ 'match': [
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=11)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=12)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=50)/ESP(spi=11)/Raw("x"*480)'],
+ 'mismatch': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)']
+}
+
+mac_ipv6_esp = {
+ 'sub_casename': 'mac_ipv6_esp',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / esp / end actions rss types esp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv6_esp_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv6_esp_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv6_esp_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': [i for i in mac_ipv6_esp_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_ipv6_esp_packets['match']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_ipv6_udp_esp_packets = {
+ 'match': [
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=12)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)'],
+ 'mismatch': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=11)/Raw("x"*480)']
+}
+
+mac_ipv6_udp_esp = {
+ 'sub_casename': 'mac_ipv6_udp_esp',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / esp / end actions rss types esp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv6_udp_esp_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv6_udp_esp_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv6_udp_esp_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': mac_ipv6_udp_esp_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_ipv6_udp_esp_packets['match'],
+ 'action': 'check_no_hash',
+ },
+ ],
+
+}
+
+mac_ipv4_ah_packets = {
+ 'match': ['Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=11)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=12)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.4",dst="192.168.0.8",proto=51)/AH(spi=11)/Raw("x"*480)'],
+ 'mismatch': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=11)/Raw("x"*480)']
+}
+
+mac_ipv4_ah = {
+ 'sub_casename': 'mac_ipv4_ah',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv4_ah_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv4_ah_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv4_ah_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': [i for i in mac_ipv4_ah_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_ipv4_ah_packets['match']],
+ 'action': 'check_no_hash',
+ },
+ ],
+
+}
+
+mac_ipv6_ah_packets = {
+ 'match': [
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=11)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=12)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=51)/AH(spi=11)/Raw("x"*480)'],
+ 'mismatch': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=11)/Raw("x"*480)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)']
+}
+
+mac_ipv6_ah = {
+ 'sub_casename': 'mac_ipv6_ah',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / ah / end actions rss types ah end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv6_ah_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv6_ah_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv6_ah_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': [i for i in mac_ipv6_ah_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_ipv6_ah_packets['match']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_pay_packets = {
+ 'mismatch': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IP(src="192.168.0.3",dst="192.168.0.5")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)']
+}
+
+mac_pppoe_pay_l2_src_only_packets = {
+ 'mac_pppoe_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/Raw("x"*80)'
+ ],
+ 'mac_pppoe_lcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99",type=0x8864)/PPPoE(sessionid=7)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)'
+ ],
+ 'mac_pppoe_ipcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99",type=0x8864)/PPPoE(sessionid=7)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)'
+ ],
+}
+
+mac_pppoe_pay_l2_src_only = {
+ 'sub_casename': 'mac_pppoe_pay_l2_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / end actions rss types eth l2-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_lcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_lcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_lcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_lcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_lcp_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_lcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_ipcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_ipcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_ipcp_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipcp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [mac_pppoe_pay_l2_src_only_packets[key][i] for i in range(0, 3) for key in
+ ['mac_pppoe_pay', 'mac_pppoe_lcp_pay', 'mac_pppoe_ipcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_pay_l2_dst_only_packets = {
+ 'mac_pppoe_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/Raw("x"*80)']
+
+}
+
+mac_pppoe_pay_l2_dst_only = {
+ 'sub_casename': 'mac_pppoe_pay_l2_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / end actions rss types eth l2-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_pay_l2_dst_only_packets['mac_pppoe_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_dst_only_packets['mac_pppoe_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_dst_only_packets['mac_pppoe_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_pppoe_pay_l2_dst_only_packets['mac_pppoe_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_pay_l2_src_only_l2_dst_only_packets = {
+ 'mac_pppoe_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/Raw("x"*80)'
+ ]
+
+}
+
+mac_pppoe_pay_l2_src_only_l2_dst_only = {
+ 'sub_casename': 'mac_pppoe_pay_l2_src_only_l2_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / end actions rss types eth end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_pppoe_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_pay_session_id_packets = {
+ 'mac_pppoe_lcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=7)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
+ ],
+ 'mac_pppoe_ipcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=7)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)'
+ ]
+
+}
+
+mac_pppoe_pay_session_id = {
+ 'sub_casename': 'mac_pppoe_pay_session_id',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_pay_session_id_packets['mac_pppoe_lcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_lcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_session_id_packets['mac_pppoe_lcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_lcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_session_id_packets['mac_pppoe_lcp_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_lcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_session_id_packets['mac_pppoe_ipcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_session_id_packets['mac_pppoe_ipcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_session_id_packets['mac_pppoe_ipcp_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipcp_pay'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [mac_pppoe_pay_session_id_packets[key][i] for i in range(0, 3) for key in
+ ['mac_pppoe_lcp_pay', 'mac_pppoe_ipcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_pay_l2_src_only_session_id_packets = {
+ 'mac_pppoe_lcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=7)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=7)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)'
+ ],
+ 'mac_pppoe_ipcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=7)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=7)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)'
+ ]
+
+}
+
+mac_pppoe_pay_l2_src_only_session_id = {
+ 'sub_casename': 'mac_pppoe_pay_l2_src_only_session_id',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / end actions rss types eth l2-src-only pppoe end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_lcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_lcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_lcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_lcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_lcp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_lcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_lcp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_lcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_lcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_lcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_ipcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_ipcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_ipcp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_ipcp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_ipcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipcp_pay'},
+ },
+
+ {
+ 'send_packet': mac_pppoe_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [mac_pppoe_pay_l2_src_only_session_id_packets[key][i] for i in range(0, 4) for key in
+ ['mac_pppoe_lcp_pay', 'mac_pppoe_ipcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+
+mac_pppoe_ipv4_pay_packets = {
+ 'mismatch': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", frag=5)/Raw("x"*80)']
+}
+
+mac_pppoe_ipv4_pay = [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=4)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/Raw("x"*80)'
+]
+
+mac_pppoe_ipv4_frag = [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=4)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5", frag=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5", frag=3)/Raw("x"*80)'
+]
+
+mac_pppoe_ipv4_pay_src_test = [
+ {
+ 'send_packet': mac_pppoe_ipv4_pay[0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay[1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay[2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_frag[0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_frag[1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_frag[2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_frag'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+]
+
+mac_pppoe_ipv4_pay_dst_test = [
+ {
+ 'send_packet': mac_pppoe_ipv4_pay[0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay[2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay[1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_frag[0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_frag[2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_frag[1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_frag'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+]
+
+mac_pppoe_ipv4_pay_src_dst_test = [
+ {
+ 'send_packet': mac_pppoe_ipv4_pay[0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay[1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay[2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay[3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay[-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_frag[0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_frag[1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_frag[2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_frag[3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_frag[-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_frag'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+]
+
+mac_pppoe_ipv4_pay_post_test = [
+ {
+ 'send_packet': [item for item in mac_pppoe_ipv4_pay + mac_pppoe_ipv4_frag],
+ 'action': 'check_no_hash',
+ },
+ ],
+
+mac_pppoe_ipv4_pay_l2_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_pay_l2_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth l2-src-only end key_len 0 queues end / end',
+ 'test': mac_pppoe_ipv4_pay_src_test,
+ 'post-test': mac_pppoe_ipv4_pay_post_test
+}
+
+mac_pppoe_ipv4_pay_l2_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_pay_l2_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth l2-dst-only end key_len 0 queues end / end',
+ 'test': mac_pppoe_ipv4_pay_dst_test,
+ 'post-test': mac_pppoe_ipv4_pay_post_test
+}
+
+mac_pppoe_ipv4_pay_l2_src_only_l2_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_pay_l2_src_only_l2_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth end key_len 0 queues end / end',
+ 'test': mac_pppoe_ipv4_pay_src_dst_test,
+ 'post-test': mac_pppoe_ipv4_pay_post_test
+}
+
+
+mac_pppoe_ipv4_pay_l3_src_only_packets = {
+ 'mac_pppoe_ipv4_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:54", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/Raw("x"*80)',
+ ],
+ 'mac_pppoe_ipv4_frag': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2", frag=5)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:54", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7", frag=3)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_pay_l3_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_pay_l2_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_frag'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_frag'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_frag'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_frag'},
+ },
+
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_pay'] +
+ mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_frag'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_pay_l3_dst_only_packets = {
+ 'mac_pppoe_ipv4_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.3")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.7", dst="192.168.1.2")/Raw("x"*80)',
+ ],
+ 'mac_pppoe_ipv4_frag': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.3", frag=5)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.7", dst="192.168.1.2", frag=3)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_pay_l3_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_pay_l3_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_frag'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_frag'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_frag'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_frag'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_pay'] +
+ mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_frag']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets = {
+ 'mac_pppoe_ipv4_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)'
+ ],
+ 'mac_pppoe_ipv4_frag': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2", frag=5)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7", frag=5)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7", frag=5)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=3)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_frag'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_frag'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_frag'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_frag'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_frag'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_frag'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_pay'] +
+ mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_frag']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_udp_pay_packets = {
+ 'mismatch': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:'
+ '910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=25,dport=23)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_udp_pay_l2_src_only_packets = {
+ 'mac_pppoe_ipv4_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/UDP(sport=19,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_udp_pay_l2_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l2_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_packets['mac_pppoe_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_packets['mac_pppoe_ipv4_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_packets['mac_pppoe_ipv4_udp_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_packets['mac_pppoe_ipv4_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_udp_pay_l2_dst_only_packets = {
+ 'mac_pppoe_ipv4_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/UDP(sport=19,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_udp_pay_l2_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l2_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
+ },
+
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+
+}
+
+mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets = {
+ 'mac_pppoe_ipv4_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/UDP(sport=19,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+
+}
+
+mac_pppoe_ipv4_udp_pay_l3_src_only_packets = {
+ 'mac_pppoe_ipv4_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=19,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_udp_pay_l3_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_packets['mac_pppoe_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_packets['mac_pppoe_ipv4_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_packets['mac_pppoe_ipv4_udp_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
+ },
+
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_packets['mac_pppoe_ipv4_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_udp_pay_l3_dst_only_packets = {
+ 'mac_pppoe_ipv4_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=19,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_udp_pay_l3_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_packets['mac_pppoe_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_packets['mac_pppoe_ipv4_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_packets['mac_pppoe_ipv4_udp_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_packets['mac_pppoe_ipv4_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_udp_pay_l4_src_only_packets = {
+ 'mac_pppoe_ipv4_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=9,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7")/UDP(sport=25,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_udp_pay_l4_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l4_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
+ },
+
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_udp_pay_l4_dst_only_packets = {
+ 'mac_pppoe_ipv4_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7")/UDP(sport=19,dport=23)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_udp_pay_l4_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l4_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
+ },
+
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets = {
+ 'mac_pppoe_ipv4_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.9")/UDP(sport=25,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets = {
+ 'mac_pppoe_ipv4_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=19,dport=23)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets = {
+ 'mac_pppoe_ipv4_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets = {
+ 'mac_pppoe_ipv4_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)'
+
+ ]
+}
+
+mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets = {
+ 'mac_pppoe_ipv4_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7")/UDP(sport=19,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv4_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv4_udp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv4_udp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv4_udp_pay'][4],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv4_udp_pay'][5],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv4_udp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv4_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_udp_pay_ipv4_packets = {
+ 'mac_pppoe_ipv4_udp_pay':[
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=19,dport=99)/Raw("x"*80)',
+ ]
+}
+
+mac_pppoe_ipv4_udp_pay_ipv4 = {
+ 'sub_casename': 'mac_pppoe_ipv4_udp_pay_ipv4',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_ipv4_packets[
+ 'mac_pppoe_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_ipv4_packets[
+ 'mac_pppoe_ipv4_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_ipv4_packets[
+ 'mac_pppoe_ipv4_udp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_ipv4_packets[
+ 'mac_pppoe_ipv4_udp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_ipv4_packets[
+ 'mac_pppoe_ipv4_udp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_ipv4_packets[
+ 'mac_pppoe_ipv4_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_tcp_pay_packets = {
+ 'mismatch': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/'
+ 'IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=25,dport=23)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_tcp_pay_l2_src_only_packets = {
+ 'mac_pppoe_ipv4_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/TCP(sport=19,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_tcp_pay_l2_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l2_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_l2_src_only_packets['mac_pppoe_ipv4_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_tcp_pay_l2_dst_only_packets = {
+ 'mac_pppoe_ipv4_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/TCP(sport=19,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_tcp_pay_l2_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l2_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets = {
+ 'mac_pppoe_ipv4_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/TCP(sport=19,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_tcp_pay_l3_src_only_packets = {
+ 'mac_pppoe_ipv4_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=19,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_tcp_pay_l3_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_l3_src_only_packets['mac_pppoe_ipv4_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_tcp_pay_l3_dst_only_pakets = {
+ 'mac_pppoe_ipv4_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.3")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=19,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_tcp_pay_l3_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_pakets['mac_pppoe_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_pakets['mac_pppoe_ipv4_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_pakets['mac_pppoe_ipv4_tcp_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_l3_dst_only_pakets['mac_pppoe_ipv4_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_tcp_pay_l4_src_only_packets = {
+ 'mac_pppoe_ipv4_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7")/TCP(sport=25,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_tcp_pay_l4_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l4-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_tcp_pay_l4_dst_only_packets = {
+ 'mac_pppoe_ipv4_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=19)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7")/TCP(sport=19,dport=23)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_tcp_pay_l4_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l4_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l4-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets = {
+ 'mac_pppoe_ipv4_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.9")/TCP(sport=25,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets = {
+ 'mac_pppoe_ipv4_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=19,dport=23)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets = {
+ 'mac_pppoe_ipv4_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=9,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=9,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets = {
+ 'mac_pppoe_ipv4_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=90)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=25,dport=90)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=19,dport=23)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets = {
+ 'mac_pppoe_ipv4_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.5")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/TCP(sport=19,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)'
+
+ ]
+}
+
+mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv4_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv4_tcp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv4_tcp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv4_tcp_pay'][4],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv4_tcp_pay'][5],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv4_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv4_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_tcp_pay_ipv4_packets = {
+ 'mac_pppoe_ipv4_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=19,dport=99)/Raw("x"*80)',
+ ]
+}
+
+mac_pppoe_ipv4_tcp_pay_ipv4 = {
+ 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_ipv4',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4 end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_ipv4_packets[
+ 'mac_pppoe_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_ipv4_packets[
+ 'mac_pppoe_ipv4_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_ipv4_packets[
+ 'mac_pppoe_ipv4_tcp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_ipv4_packets[
+ 'mac_pppoe_ipv4_tcp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_ipv4_packets[
+ 'mac_pppoe_ipv4_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_ipv4_packets['mac_pppoe_ipv4_tcp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+mac_pppoe_ipv6_pay_packets = {
+ 'mismatch': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_pay_l2_src_only_packets = {
+ 'mac_pppoe_ipv6_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*80)'
+ ],
+ 'mac_pppoe_ipv6_frag': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ ]
+}
+
+mac_pppoe_ipv6_pay_l2_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_pay_l2_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth l2-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_frag'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_frag'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_frag'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_frag'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_frag']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_pay_l2_dst_only_packets = {
+ 'mac_pppoe_ipv6_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*80)'
+ ],
+ 'mac_pppoe_ipv6_frag': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/IPv6ExtHdrFragment()/Raw("x"*80)'
+ ]
+
+}
+
+mac_pppoe_ipv6_pay_l2_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_pay_l2_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth l2-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_pay'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_frag'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_frag'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_frag'][2],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_frag'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_frag']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets = {
+ 'mac_pppoe_ipv6_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*80)'
+ ],
+ 'mac_pppoe_ipv6_frag': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/IPv6ExtHdrFragment()/Raw("x"*80)'
+
+ ]
+}
+
+mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_frag'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_frag'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_frag'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_frag'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_frag'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_frag'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_frag']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_pay_l3_src_only_packets = {
+ 'mac_pppoe_ipv6_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:54", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*80)',
+ ],
+ 'mac_pppoe_ipv6_frag': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:54", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/IPv6ExtHdrFragment()/Raw("x"*80)',
+
+ ]
+}
+
+mac_pppoe_ipv6_pay_l3_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_pay_l3_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_pay'][1:-1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_frag'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_frag'][1:-1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_frag'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_frag'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_frag']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_pay_l3_dst_only_packets = {
+ 'mac_pppoe_ipv6_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'
+ ],
+ 'mac_pppoe_ipv6_frag': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)'
+
+ ]
+}
+
+mac_pppoe_ipv6_pay_l3_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_pay_l3_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_pay'][1:-1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_frag'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_frag'][1:-1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_frag'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_frag'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_frag']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets = {
+ 'mac_pppoe_ipv6_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'
+ ],
+ 'mac_pppoe_ipv6_frag': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)'
+
+ ]
+}
+
+mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_frag'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_frag'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_frag'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_frag'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_frag'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_frag'},
+ },
+
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_frag']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_udp_pay_packets = {
+ 'mismatch': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_udp_pay_l2_src_only_packets = {
+ 'mac_pppoe_ipv6_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_udp_pay_l2_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l2_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_packets['mac_pppoe_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_packets['mac_pppoe_ipv6_udp_pay'][1:-1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_l2_src_only_packets['mac_pppoe_ipv6_udp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_udp_pay_l2_dst_only_packets = {
+ 'mac_pppoe_ipv6_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_udp_pay_l2_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l2_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][1:-1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets = {
+ 'mac_pppoe_ipv6_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_udp_pay_l3_src_only_packets = {
+ 'mac_pppoe_ipv6_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_udp_pay_l3_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_packets['mac_pppoe_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_packets['mac_pppoe_ipv6_udp_pay'][1:-1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_udp_pay_l3_src_only_packets['mac_pppoe_ipv6_udp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_udp_pay_l3_dst_only_packets = {
+ 'mac_pppoe_ipv6_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=99)/Raw("x"*80)'
+
+ ]
+}
+
+mac_pppoe_ipv6_udp_pay_l3_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_packets['mac_pppoe_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_packets['mac_pppoe_ipv6_udp_pay'][1:-1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_udp_pay_l3_dst_only_packets['mac_pppoe_ipv6_udp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_udp_pay_l4_src_only_packets = {
+ 'mac_pppoe_ipv6_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_udp_pay_l4_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l4_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][1:-1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_udp_pay_l4_src_only_packets['mac_pppoe_ipv6_udp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_udp_pay_l4_dst_only_packets = {
+ 'mac_pppoe_ipv6_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=23)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_udp_pay_l4_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l4_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][1:-1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_udp_pay_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets = {
+ 'mac_pppoe_ipv6_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets = {
+ 'mac_pppoe_ipv6_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=23)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets = {
+ 'mac_pppoe_ipv6_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets = {
+ 'mac_pppoe_ipv6_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
+ 'action': {'check_hash_same': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets = {
+ 'mac_pppoe_ipv6_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=19,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv6_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv6_udp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv6_udp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv6_udp_pay'][4],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv6_udp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv6_udp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_udp_pay_ipv6_packets = {
+ 'mac_pppoe_ipv6_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1538", dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=99)/Raw("x"*80)',
+ ]
+}
+
+mac_pppoe_ipv6_udp_pay_ipv6 = {
+ 'sub_casename': 'mac_pppoe_ipv6_udp_pay_ipv6',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6 end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_ipv6_packets[
+ 'mac_pppoe_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_ipv6_packets[
+ 'mac_pppoe_ipv6_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_ipv6_packets[
+ 'mac_pppoe_ipv6_udp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_ipv6_packets[
+ 'mac_pppoe_ipv6_udp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_ipv6_packets[
+ 'mac_pppoe_ipv6_udp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet':mac_pppoe_ipv6_udp_pay_ipv6_packets['mac_pppoe_ipv6_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+
+}
+
+mac_pppoe_ipv6_tcp_pay_packets = {
+ 'mismatch': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_tcp_pay_l2_src_only_packets = {
+ 'mac_pppoe_ipv6_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_tcp_pay_l2_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l2_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_packets['mac_pppoe_ipv6_tcp_pay'][1:-1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_tcp_pay_l2_src_only_packets['mac_pppoe_ipv6_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+
+}
+
+mac_pppoe_ipv6_tcp_pay_l2_dst_only_packets = {
+ 'mac_pppoe_ipv6_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=99)/Raw("x"*80)',
+ ]
+}
+
+mac_pppoe_ipv6_tcp_pay_l2_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l2_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][1:-1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets = {
+ 'mac_pppoe_ipv6_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_tcp_pay_l3_src_only_packets = {
+ 'mac_pppoe_ipv6_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_tcp_pay_l3_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_packets['mac_pppoe_ipv6_tcp_pay'][1:-1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_tcp_pay_l3_src_only_packets['mac_pppoe_ipv6_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_tcp_pay_l3_dst_only_packets = {
+ 'mac_pppoe_ipv6_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_tcp_pay_l3_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][1:-1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_tcp_pay_l3_dst_only_packets['mac_pppoe_ipv6_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_tcp_pay_l4_src_only_packets = {
+ 'mac_pppoe_ipv6_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_tcp_pay_l4_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l4_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l4-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][1:-1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_tcp_pay_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_tcp_pay_l4_dst_only_packets = {
+ 'mac_pppoe_ipv6_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=23)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_tcp_pay_l4_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l4_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l4-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][1:-1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets = {
+ 'mac_pppoe_ipv6_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets = {
+ 'mac_pppoe_ipv6_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=23)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+
+}
+
+mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets = {
+ 'mac_pppoe_ipv6_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=99)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets = {
+ 'mac_pppoe_ipv6_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=23)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets = {
+ 'mac_pppoe_ipv6_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=19,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)'
+ ]
+}
+
+mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only = {
+ 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv6_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv6_tcp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv6_tcp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv6_tcp_pay'][4],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv6_tcp_pay'][5],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv6_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
+ 'mac_pppoe_ipv6_tcp_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_tcp_pay_ipv6_packets = {
+ 'mac_pppoe_ipv6_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1538", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=99)/Raw("x"*80)',
+ ]
+}
+
+mac_pppoe_ipv6_tcp_pay_ipv6 = {
+ 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_ipv6',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6 end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_ipv6_packets['mac_pppoe_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_ipv6_packets['mac_pppoe_ipv6_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_ipv6_packets['mac_pppoe_ipv6_tcp_pay'][2],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_ipv6_packets['mac_pppoe_ipv6_tcp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_ipv6_packets['mac_pppoe_ipv6_tcp_pay'][-1],
+ 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_ipv6_packets['mac_pppoe_ipv6_tcp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv6_tcp_pay = [
+ mac_pppoe_ipv6_tcp_pay_l2_src_only,
+ mac_pppoe_ipv6_tcp_pay_l2_dst_only,
+ mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only,
+ mac_pppoe_ipv6_tcp_pay_l3_src_only,
+ mac_pppoe_ipv6_tcp_pay_l3_dst_only,
+ mac_pppoe_ipv6_tcp_pay_l4_src_only,
+ mac_pppoe_ipv6_tcp_pay_l4_dst_only,
+ mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only,
+ mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only,
+ mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only,
+ mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only,
+ mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only,
+ mac_pppoe_ipv6_tcp_pay_ipv6
+]
+
+mac_pppoe_ipv6_udp_pay = [
+ mac_pppoe_ipv6_udp_pay_l2_src_only,
+ mac_pppoe_ipv6_udp_pay_l2_dst_only,
+ mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only,
+ mac_pppoe_ipv6_udp_pay_l3_src_only,
+ mac_pppoe_ipv6_udp_pay_l3_dst_only,
+ mac_pppoe_ipv6_udp_pay_l4_src_only,
+ mac_pppoe_ipv6_udp_pay_l4_dst_only,
+ mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only,
+ mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only,
+ mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only,
+ mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only,
+ mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only,
+ mac_pppoe_ipv6_udp_pay_ipv6
+
+]
+
+mac_pppoe_ipv6_pay = [
+ mac_pppoe_ipv6_pay_l2_src_only,
+ mac_pppoe_ipv6_pay_l2_dst_only,
+ mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only,
+ mac_pppoe_ipv6_pay_l3_src_only,
+ mac_pppoe_ipv6_pay_l3_dst_only,
+ mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only
+]
+
+mac_pppoe_ipv4_tcp_pay = [
+ mac_pppoe_ipv4_tcp_pay_l2_src_only,
+ mac_pppoe_ipv4_tcp_pay_l2_dst_only,
+ mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only,
+ mac_pppoe_ipv4_tcp_pay_l3_src_only,
+ mac_pppoe_ipv4_tcp_pay_l3_dst_only,
+ mac_pppoe_ipv4_tcp_pay_l4_src_only,
+ mac_pppoe_ipv4_tcp_pay_l4_dst_only,
+ mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only,
+ mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only,
+ mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only,
+ mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only,
+ mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only,
+ mac_pppoe_ipv4_tcp_pay_ipv4
+]
+
+mac_pppoe_ipv4_udp_pay = [
+ mac_pppoe_ipv4_udp_pay_l2_src_only,
+ mac_pppoe_ipv4_udp_pay_l2_dst_only,
+ mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only,
+ mac_pppoe_ipv4_udp_pay_l3_src_only,
+ mac_pppoe_ipv4_udp_pay_l3_dst_only,
+ mac_pppoe_ipv4_udp_pay_l4_src_only,
+ mac_pppoe_ipv4_udp_pay_l4_dst_only,
+ mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only,
+ mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only,
+ mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only,
+ mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only,
+ mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only,
+ mac_pppoe_ipv4_udp_pay_ipv4,
+ ]
+
+mac_pppoe_ipv4_pay_cases = [
+ mac_pppoe_ipv4_pay_l2_src_only,
+ mac_pppoe_ipv4_pay_l2_dst_only,
+ mac_pppoe_ipv4_pay_l2_src_only_l2_dst_only,
+ mac_pppoe_ipv4_pay_l3_src_only,
+ mac_pppoe_ipv4_pay_l3_dst_only,
+ mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only
+]
+
+mac_pppoe_pay = [
+ mac_pppoe_pay_l2_src_only,
+ mac_pppoe_pay_l2_dst_only,
+ mac_pppoe_pay_l2_src_only_l2_dst_only,
+ mac_pppoe_pay_session_id,
+ mac_pppoe_pay_l2_src_only_session_id
+]
+
+mac_pppoe_ipv6_tcp_pay_symmetric_packets = {
+ 'match': {
+ 'mac_pppoe_ipv6_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=23,dport=25)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/TCP(sport=23,dport=25)/Raw("x"*80)'
+ ],
+ },
+ 'mismatch': {
+ 'mac_pppoe_ipv4_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=23,dport=25)/Raw("x"*80)'
+ ],
+ 'mac_pppoe_ipv6_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=23,dport=25)/Raw("x"*80)',
+ ],
+ 'mac_pppoe_ipv6_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/Raw("x"*80)'
+ ],
+ 'mac_ipv6_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/TCP(sport=23,dport=25)/Raw("x"*80)'
+ ]
+ }
+
+}
+
+mac_pppoe_ipv6_tcp_pay_symmetric = {
+ 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_symmetric',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv6_tcp_pay'][1],
+ 'action': {'check_hash_same': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv6_tcp_pay'][2],
+ 'action': {'check_hash_same': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv6_tcp_pay'][3],
+ 'action': {'check_hash_same': 'mac_pppoe_ipv6_tcp_pay'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_tcp_pay'][1:],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_udp_pay'][1:],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_pay'][1:],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_ipv6_tcp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_ipv6_tcp_pay'][1:],
+ 'action': {'check_hash_different': 'mac_ipv6_tcp_pay_mismatch'},
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay_match_post'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv6_tcp_pay'][3],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay_match_post'},
+ },
+ ],
+}
+
+mac_pppoe_ipv6_udp_pay_symmetric_packets = {
+ 'match': {
+ 'mac_pppoe_ipv6_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=23,dport=25)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=23,dport=25)/Raw("x"*80)'
+ ]
+ },
+ 'mismatch': {
+ 'mac_pppoe_ipv4_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=23,dport=25)/Raw("x"*80)'
+ ],
+ 'mac_pppoe_ipv6_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/TCP(sport=23,dport=25)/Raw("x"*80)',
+ ],
+ 'mac_pppoe_ipv6_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/Raw("x"*80)'
+ ],
+ 'mac_ipv6_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=23,dport=25)/Raw("x"*80)'
+ ]
+ }
+}
+
+mac_pppoe_ipv6_udp_pay_symmetric = {
+ 'sub_casename': 'mac_pppoe_ipv6_udp_pay_symmetric',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['match']['mac_pppoe_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['match']['mac_pppoe_ipv6_udp_pay'][1],
+ 'action': {'check_hash_same': 'mac_pppoe_ipv6_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['match']['mac_pppoe_ipv6_udp_pay'][2],
+ 'action': {'check_hash_same': 'mac_pppoe_ipv6_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['match']['mac_pppoe_ipv6_udp_pay'][3],
+ 'action': {'check_hash_same': 'mac_pppoe_ipv6_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_udp_pay'][1:],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_tcp_pay'][1:],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_pay'][1:],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_ipv6_udp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_ipv6_udp_pay'][1:],
+ 'action': {'check_hash_different': 'mac_ipv6_udp_pay_mismatch'},
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['match']['mac_pppoe_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay_match_post'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['match']['mac_pppoe_ipv6_udp_pay'][1:],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay_match_post'},
+ },
+ ],
+}
+
+mac_pppoe_ipv6_pay_symmetric_packets = {
+ 'match': {
+ 'mac_pppoe_ipv6_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/Raw("x"*80)'
+ ],
+ 'mac_pppoe_ipv6_frag': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/IPv6ExtHdrFragment()/Raw("x"*80)'
+ ]
+ },
+ 'mismatch': {
+ 'mac_pppoe_ipv4_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
+ ],
+ 'mac_pppoe_ipv4_frag': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1", frag=5)/Raw("x"*80)'
+ ],
+ 'mac_ipv6_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/Raw("x"*80)'
+ ],
+ 'mac_ipv6_frag': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/IPv6ExtHdrFragment()/Raw("x"*80)'
+ ]
+ }
+}
+
+mac_pppoe_ipv6_pay_symmetric = {
+ 'sub_casename': 'mac_pppoe_ipv6_pay_symmetric',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['match']['mac_pppoe_ipv6_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_pay_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['match']['mac_pppoe_ipv6_pay'][1:],
+ 'action': {'check_hash_same': 'mac_pppoe_ipv6_pay_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['match']['mac_pppoe_ipv6_frag'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_frag_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['match']['mac_pppoe_ipv6_frag'][1:],
+ 'action': {'check_hash_same': 'mac_pppoe_ipv6_frag_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_pay'][1:],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_frag'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_frag_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_frag'][1:],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_ipv6_pay'][0],
+ 'action': {'save_hash': 'mac_ipv6_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_ipv6_pay'][1:],
+ 'action': {'check_hash_different': 'mac_ipv6_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_ipv6_frag'][0],
+ 'action': {'save_hash': 'mac_ipv6_frag_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_ipv6_frag'][1:],
+ 'action': {'check_hash_different': 'mac_ipv6_frag_mismatch'},
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['match']['mac_pppoe_ipv6_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_pay_symmetric_packets = {
+ 'match': {
+ 'mac_pppoe_ipv4_pay': [
+ 'Ether(src="00:11:22:33:44:55",dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55",dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/Raw("x"*80)',
+ ],
+ 'mac_pppoe_ipv4_frag': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1", frag=5)/Raw("x"*80)',
+ ]
+ },
+ 'mismatch': {
+ 'mac_pppoe_ipv6_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/Raw("x"*80)'
+ ],
+ 'mac_pppoe_ipv6_frag': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/IPv6ExtHdrFragment()/Raw("x"*80)'
+ ],
+ 'mac_ipv4_pay': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.21",dst="192.168.0.20")/Raw("x"*80)'
+ ],
+ 'mac_ipv4_frag': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", frag=5)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.21",dst="192.168.0.20", frag=5)/Raw("x"*80)'
+ ]
+ }
+}
+
+mac_pppoe_ipv4_pay_symmetric = {
+ 'sub_casename': 'mac_pppoe_ipv4_pay_symmetric',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['match']['mac_pppoe_ipv4_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_pay_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['match']['mac_pppoe_ipv4_pay'][1],
+ 'action': {'check_hash_same': 'mac_pppoe_ipv4_pay_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['match']['mac_pppoe_ipv4_frag'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_frag_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['match']['mac_pppoe_ipv4_frag'][1],
+ 'action': {'check_hash_same': 'mac_pppoe_ipv4_frag_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_pay'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_frag'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_frag_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_frag'][1],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_ipv4_pay'][0],
+ 'action': {'save_hash': 'mac_ipv4_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_ipv4_pay'][1],
+ 'action': {'check_hash_different': 'mac_ipv4_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_ipv4_frag'][0],
+ 'action': {'save_hash': 'mac_ipv4_frag_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_ipv4_frag'][1],
+ 'action': {'check_hash_different': 'mac_ipv4_frag_mismatch'},
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in
+ mac_pppoe_ipv4_pay_symmetric_packets['match']['mac_pppoe_ipv4_pay']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_pppoe_ipv4_udp_pay_symmetric_packets = {
+ 'match': {
+ 'mac_pppoe_ipv4_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=23,dport=25)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/UDP(sport=23,dport=25)/Raw("x"*80)'
+ ],
+ },
+ 'mismatch': {
+ 'mac_pppoe_ipv4_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/TCP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=23,dport=19)/Raw("x"*80)',
+ ],
+ 'mac_pppoe_ipv6_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=23,dport=25)/Raw("x"*80)',
+
+ ],
+ 'mac_pppoe_ipv4_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)'
+ ],
+ 'mac_ipv4_udp_pay': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.21",dst="192.168.0.20")/UDP(sport=23,dport=25)/Raw("x"*80)'
+ ]
+ }
+}
+
+mac_pppoe_ipv4_udp_pay_symmetric = {
+ 'sub_casename': 'mac_pppoe_ipv4_udp_pay_symmetric',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['match']['mac_pppoe_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['match']['mac_pppoe_ipv4_udp_pay'][1],
+ 'action': {'check_hash_same': 'mac_pppoe_ipv4_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['match']['mac_pppoe_ipv4_udp_pay'][2],
+ 'action': {'check_hash_same': 'mac_pppoe_ipv4_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['match']['mac_pppoe_ipv4_udp_pay'][3],
+ 'action': {'check_hash_same': 'mac_pppoe_ipv4_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_tcp_pay'][1:],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_udp_pay'][1:],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_pay'][1:],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_ipv4_udp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_ipv4_udp_pay'][1:],
+ 'action': {'check_hash_different': 'mac_ipv4_udp_pay_mismatch'},
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['match']['mac_pppoe_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_ipv4_udp_pay_match_post'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['match']['mac_pppoe_ipv4_udp_pay'][1:],
+ 'action': {'check_hash_different': 'mac_ipv4_udp_pay_match_post'},
+ },
+ ],
+}
+
+mac_pppoe_ipv4_tcp_pay_symmetric_packets = {
+ 'match': {
+ 'mac_pppoe_ipv4_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=23,dport=25)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/TCP(sport=23,dport=25)/Raw("x"*80)'
+ ]
+ },
+ 'mismatch': {
+ 'mac_pppoe_ipv4_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=23,dport=25)/Raw("x"*80)',
+ ],
+ 'mac_pppoe_ipv6_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/TCP(sport=23,dport=25)/Raw("x"*80)',
+ ],
+ 'mac_pppoe_ipv4_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)'
+ ],
+ 'mac_ipv4_tcp_pay': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.21",dst="192.168.0.20")/TCP(sport=23,dport=25)/Raw("x"*80)'
+ ]
+ }
+}
+
+mac_pppoe_ipv4_tcp_pay_symmetric = {
+ 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_symmetric',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv4_tcp_pay'][1],
+ 'action': {'check_hash_same': 'mac_pppoe_ipv4_tcp_pay_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv4_tcp_pay'][2],
+ 'action': {'check_hash_same': 'mac_pppoe_ipv4_tcp_pay_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv4_tcp_pay'][3],
+ 'action': {'check_hash_same': 'mac_pppoe_ipv4_tcp_pay_match'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_udp_pay'][1:],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_tcp_pay'][1:],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_pay'][1:],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_ipv4_tcp_pay_mismatch'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_ipv4_tcp_pay'][1:],
+ 'action': {'check_hash_different': 'mac_ipv4_tcp_pay_mismatch'},
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay_match_post'},
+ },
+ {
+ 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv4_tcp_pay'][3],
+ 'action': {'check_hash_different', 'mac_pppoe_ipv4_tcp_pay_match_post'}
+ },
+ ],
+}
+
+simple_xor_packets = {
+ 'match': {
+ 'mac_pppoe_ipv4_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)'
+ ],
+ 'mac_pppoe_ipv4_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/UDP(sport=25,dport=23)/Raw("x"*80)'
+ ],
+ 'mac_pppoe_ipv4_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/TCP(sport=25,dport=23)/Raw("x"*80)'
+ ],
+ 'mac_pppoe_ipv6_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/Raw("x"*80)'
+ ],
+ 'mac_ipv6_udp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=25,dport=23)/Raw("x"*80)'
+ ],
+ 'mac_ipv6_tcp_pay': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/TCP(sport=25,dport=23)/Raw("x"*80)'
+ ]
+
+ }
+}
+
+simple_xor = {
+ 'sub_casename': 'simple_xor',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern end actions rss func simple_xor key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_pay_match'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_pay'][1:],
+ 'action': {'check_hash_same': 'mac_pppoe_ipv4_pay_match'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay_match'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_udp_pay'][1:],
+ 'action': {'check_same': 'mac_pppoe_ipv4_udp_pay_match'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay_match'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_tcp_pay'][1:],
+ 'action': {'check_same': 'mac_pppoe_ipv4_tcp_pay_match'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv6_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_pay_match'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv6_pay'][1:],
+ 'action': {'check_same': 'mac_pppoe_ipv6_pay_match'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_ipv6_udp_pay_match'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_ipv6_udp_pay'][1:],
+ 'action': {'check_same': 'mac_ipv6_udp_pay_match'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_ipv6_tcp_pay_match'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_ipv6_tcp_pay'][1:],
+ 'action': {'check_same': 'mac_ipv6_tcp_pay_match'},
+ },
+
+ ],
+ 'post-test': [
+ {
+ 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_pay_match_post'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_pay'][1:],
+ 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay_match_post'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay_match_post'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_udp_pay'][1:],
+ 'action': {'check_same': 'mac_pppoe_ipv4_udp_pay_match_post'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay_match_post'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_tcp_pay'][1:],
+ 'action': {'check_same': 'mac_pppoe_ipv4_tcp_pay_match_post'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv6_pay'][0],
+ 'action': {'save_hash': 'mac_pppoe_ipv6_pay_match_post'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv6_pay'][1:],
+ 'action': {'check_same': 'mac_pppoe_ipv6_pay_match_post'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_ipv6_udp_pay_match_post'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_ipv6_udp_pay'][1:],
+ 'action': {'check_same': 'mac_ipv6_udp_pay_match_post'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_ipv6_tcp_pay_match_post'},
+ },
+ {
+ 'send_packet': simple_xor_packets['match']['mac_ipv6_tcp_pay'][1:],
+ 'action': {'check_same': 'mac_ipv6_tcp_pay_match_post'},
+ },
+ ],
+}
+
+mac_vlan_ipv4_pay_packets = {
+ 'match': {
+ 'mac_vlan_ipv4_pay': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/Raw("x" * 80)',
+ ],
+ },
+ 'mismatch': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'
+ ]
+}
+
+mac_vlan_ipv4_pay = {
+ 'sub_casename': 'mac_vlan_ipv4_pay',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / end actions rss types c-vlan end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'][0],
+ 'action': {'save_hash': 'mac_vlan_ipv4_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'][1],
+ 'action': {'check_hash_different': 'mac_vlan_ipv4_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'][2],
+ 'action': {'check_hash_same': 'mac_vlan_ipv4_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_pay_packets['mismatch'][0],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_ipv4_udp_pay_packets = {
+ 'match': {
+ 'mac_vlan_ipv4_udp_pay': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/UDP(sport=19,dport=99)/Raw("x" * 80)',
+ ]
+ },
+ 'mismatch': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'
+ ]
+}
+
+mac_vlan_ipv4_udp_pay = {
+ 'sub_casename': 'mac_vlan_ipv4_udp_pay',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / udp / end actions rss types c-vlan end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_vlan_ipv4_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_vlan_ipv4_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'][2],
+ 'action': {'check_hash_same': 'mac_vlan_ipv4_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_udp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_ipv4_tcp_pay_packets = {
+ 'match': {
+ 'mac_vlan_ipv4_tcp_pay': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/TCP(sport=19,dport=99)/Raw("x" * 80)'
+ ]
+ },
+ 'mismatch': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'
+ ]
+}
+
+mac_vlan_ipv4_tcp_pay = {
+ 'sub_casename': 'mac_vlan_ipv4_tcp_pay',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / tcp / end actions rss types c-vlan end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_vlan_ipv4_tcp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_vlan_ipv4_tcp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'][2],
+ 'action': {'check_hash_same': 'mac_vlan_ipv4_tcp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_tcp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_ipv4_sctp_pay_packets = {
+ 'match': {
+ 'mac_vlan_ipv4_sctp_pay': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.5")/SCTP(sport=19,dport=99)/Raw("x" * 80)'
+ ]
+ },
+ 'mismatch': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)'
+
+ ]
+}
+
+mac_vlan_ipv4_sctp_pay = {
+ 'sub_casename': 'mac_vlan_ipv4_sctp_pay',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / sctp / end actions rss types c-vlan end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'][0],
+ 'action': {'save_hash': 'mac_vlan_ipv4_sctp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'][1],
+ 'action': {'check_hash_different': 'mac_vlan_ipv4_sctp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'][2],
+ 'action': {'check_hash_same': 'mac_vlan_ipv4_sctp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_sctp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_ipv6_pay_packets = {
+ 'match': {
+ 'mac_vlan_ipv6_pay': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("y" * 80)'
+ ]
+ },
+ 'mismatch': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'
+ ]
+}
+
+mac_vlan_ipv6_pay = {
+ 'sub_casename': 'mac_vlan_ipv6_pay',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / end actions rss types c-vlan end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'][0],
+ 'action': {'save_hash': 'mac_vlan_ipv6_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'][1],
+ 'action': {'check_hash_different': 'mac_vlan_ipv6_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'][2],
+ 'action': {'check_hash_same': 'mac_vlan_ipv6_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_ipv6_udp_pay_packets = {
+ 'match': {
+ 'mac_vlan_ipv6_udp_pay': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=99)/Raw("x" * 80)'
+ ]
+ },
+ 'mismatch': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'
+ ]
+}
+
+mac_vlan_ipv6_udp_pay = {
+ 'sub_casename': 'mac_vlan_ipv6_udp_pay',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / udp / end actions rss types c-vlan end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_vlan_ipv6_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_vlan_ipv6_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'][2],
+ 'action': {'check_hash_same': 'mac_vlan_ipv6_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_udp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_ipv6_tcp_pay_packets = {
+ 'match': {
+ 'mac_vlan_ipv6_tcp_pay': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=99)/Raw("x" * 80)'
+ ]
+ },
+ 'mismatch': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'
+ ]
+}
+
+mac_vlan_ipv6_tcp_pay = {
+ 'sub_casename': 'mac_vlan_ipv6_tcp_pay',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / tcp / end actions rss types c-vlan end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_vlan_ipv6_tcp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_vlan_ipv6_tcp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'][2],
+ 'action': {'check_hash_same': 'mac_vlan_ipv6_tcp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_tcp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_ipv6_sctp_pay_packets = {
+ 'match': {
+ 'mac_vlan_ipv6_sctp_pay': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/SCTP(sport=25,dport=99)/Raw("x" * 80)'
+ ]
+ },
+ 'mismatch': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'
+ ]
+}
+
+mac_vlan_ipv6_sctp_pay = {
+ 'sub_casename': 'mac_vlan_ipv6_sctp_pay',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / sctp / end actions rss types c-vlan end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'][0],
+ 'action': {'save_hash': 'mac_vlan_ipv6_sctp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'][1],
+ 'action': {'check_hash_different': 'mac_vlan_ipv6_sctp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'][2],
+ 'action': {'check_hash_same': 'mac_vlan_ipv6_sctp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_sctp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_pppoe_pay_l2_src_only_packets = [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=7)/Raw("x"*80)'
+]
+
+mac_vlan_pppoe_pay_l2_src_only = {
+ 'sub_casename': 'mac_vlan_pppoe_pay_l2_src_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / pppoes / end actions rss types eth l2-src-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_pppoe_pay_l2_src_only_packets[0],
+ 'action': {'save_hash': 'l2_src_only'},
+ },
+ {
+ 'send_packet': mac_vlan_pppoe_pay_l2_src_only_packets[1],
+ 'action': {'check_hash_different': 'l2_src_only'},
+ },
+ {
+ 'send_packet': mac_vlan_pppoe_pay_l2_src_only_packets[2],
+ 'action': {'check_hash_same': 'l2_src_only'},
+ },
+ {
+ 'send_packet': mac_vlan_pppoe_pay_l2_src_only_packets[3],
+ 'action': {'check_hash_same': 'l2_src_only'},
+ },
+ {
+ 'send_packet': mac_vlan_pppoe_pay_l2_src_only_packets[4],
+ 'action': {'check_hash_same': 'l2_src_only'},
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_pppoe_pay_l2_src_only_packets[1],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_pppoe_pay_l2_dst_only_packets = [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=7)/Raw("x"*80)'
+]
+
+mac_vlan_pppoe_pay_l2_dst_only = {
+ 'sub_casename': 'mac_vlan_pppoe_pay_l2_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / pppoes / end actions rss types eth l2-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_pppoe_pay_l2_dst_only_packets[0],
+ 'action': {'save_hash': 'l2_dst_only'},
+ },
+ {
+ 'send_packet': mac_vlan_pppoe_pay_l2_dst_only_packets[1],
+ 'action': {'check_hash_different': 'l2_dst_only'},
+ },
+ {
+ 'send_packet': mac_vlan_pppoe_pay_l2_dst_only_packets[2],
+ 'action': {'check_hash_same': 'l2_dst_only'},
+ },
+ {
+ 'send_packet': mac_vlan_pppoe_pay_l2_dst_only_packets[3],
+ 'action': {'check_hash_same': 'l2_dst_only'},
+ },
+ {
+ 'send_packet': mac_vlan_pppoe_pay_l2_dst_only_packets[4],
+ 'action': {'check_hash_same': 'l2_dst_only'},
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_pppoe_pay_l2_dst_only_packets[1],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets = [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=7)/Raw("x"*80)'
+]
+
+mac_vlan_pppoe_pay_l2_src_only_l2_dst_only = {
+ 'sub_casename': 'mac_vlan_pppoe_pay_l2_src_only_l2_dst_only',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / pppoes / end actions rss types eth l2-src-only l2-dst-only end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[0],
+ 'action': {'save_hash': 'l2_src_only_l2_dst_only'},
+ },
+ {
+ 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[1],
+ 'action': {'check_hash_different': 'l2_src_only_l2_dst_only'},
+ },
+ {
+ 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[2],
+ 'action': {'check_hash_same': 'l2_src_only_l2_dst_only'},
+ },
+ {
+ 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[3],
+ 'action': {'check_hash_same': 'l2_src_only_l2_dst_only'},
+ },
+ {
+ 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[4],
+ 'action': {'check_hash_same': 'l2_src_only_l2_dst_only'},
+ },
+ {
+ 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[5],
+ 'action': {'check_hash_same': 'l2_src_only_l2_dst_only'},
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[1],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_pppoe_pay_c_vlan_packets = [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=7)/Raw("x" * 80)'
+]
+
+mac_vlan_pppoe_pay_c_vlan = {
+ 'sub_casename': 'mac_vlan_pppoe_pay_c_vlan',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / pppoes / end actions rss types c-vlan end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_pppoe_pay_c_vlan_packets[0],
+ 'action': {'save_hash': 'c_vlan'},
+ },
+ {
+ 'send_packet': mac_vlan_pppoe_pay_c_vlan_packets[1],
+ 'action': {'check_hash_different': 'c_vlan'},
+ },
+ {
+ 'send_packet': mac_vlan_pppoe_pay_c_vlan_packets[2],
+ 'action': {'check_hash_same': 'c_vlan'},
+ },
+ {
+ 'send_packet': mac_vlan_pppoe_pay_c_vlan_packets[3],
+ 'action': {'check_hash_same': 'c_vlan'},
+ },
+ {
+ 'send_packet': mac_vlan_pppoe_pay_c_vlan_packets[4],
+ 'action': {'check_hash_same': 'c_vlan'},
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_pppoe_pay_c_vlan_packets[1],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_pppoe_pay = [
+ mac_vlan_pppoe_pay_l2_src_only,
+ mac_vlan_pppoe_pay_l2_dst_only,
+ mac_vlan_pppoe_pay_l2_src_only_l2_dst_only,
+ mac_vlan_pppoe_pay_c_vlan
+]
+
+
+class Advanced_rss_pppoe_vlan_ah_l2tp_pfcp(TestCase):
+
+ def set_up_all(self):
+ """
+ Run at the start of each test suite.
+ Generic filter Prerequistites
+ """
+
+ # Based on h/w type, choose how many ports to use
+ self.dut_ports = self.dut.get_ports(self.nic)
+ self.verify(len(self.dut_ports) >= 2, "Insufficient ports for testing")
+ # Verify that enough threads are available
+ cores = self.dut.get_core_list("1S/4C/1T")
+ self.verify(cores is not None, "Insufficient cores for speed testing")
+ self.ports_socket = self.dut.get_numa_id(self.dut_ports[0])
+ self.tester_port0 = self.tester.get_local_port(self.dut_ports[0])
+ self.tester_port1 = self.tester.get_local_port(self.dut_ports[1])
+ self.tester_iface0 = self.tester.get_interface(self.tester_port0)
+ self.tester_iface1 = self.tester.get_interface(self.tester_port1)
+ self.pci_list = []
+ for port in self.dut.ports_info:
+ self.pci_list.append(port['pci'])
+ self.pkt = Packet()
+ self.pmd_output = PmdOutput(self.dut)
+ self.ddp_dir = "/lib/firmware/updates/intel/ice/ddp/"
+ conf_file = 'conf/cvl_advanced_rss_pppoe.cfg'
+ conf_info = UserConf(conf_file)
+ conf_section = conf_info.conf._sections['suite']
+ self.os_default_package = conf_section['os_default_package_file_location']
+ self.comms_package = conf_section['comms_package_file_location']
+ self.symmetric = False
+ self.rxq = 64
+ self.rsspro = RssProcessing(self, self.pmd_output, [self.tester_iface0, self.tester_iface1], self.rxq)
+ self.logger.info('rssprocess.tester_ifaces: {}'.format(self.rsspro.tester_ifaces))
+ self.logger.info('rssprocess.test_case: {}'.format(self.rsspro.test_case))
+
+ def set_up(self):
+ """
+ Run before each test case.
+ """
+ pass
+
+ def tear_down(self):
+ """
+ Run after each test case.
+ """
+ # destroy all flow rule on port 0
+ self.dut.send_command("flow flush 0", timeout=1)
+ self.dut.send_command("clear port stats all", timeout=1)
+ self.pmd_output.execute_cmd("stop")
+ self.dut.kill_all()
+
+ def tear_down_all(self):
+ """
+ Run after each test suite.
+ """
+ self.dut.kill_all()
+
+ def replace_package(self, package='comms'):
+ ice_pkg_path = ''.join([self.ddp_dir,"ice.pkg"])
+ self.dut.send_expect("rm -f {}".format(ice_pkg_path), "# ")
+ if package == 'os_default':
+ self.dut.send_expect("cp {} {}".format(self.os_default_package,ice_pkg_path), "# ")
+ elif package == 'comms':
+ self.dut.send_expect("cp {} {}".format(self.comms_package,ice_pkg_path), "# ")
+ for pci in self.pci_list:
+ self.dut.send_expect("echo {0} > /sys/bus/pci/devices/{0}/driver/unbind".format(pci), "# ", 60)
+ self.dut.send_expect("echo {} > /sys/bus/pci/drivers/ice/bind".format(pci), "# ", 60)
+ pci_str = ' '.join(self.pci_list)
+ self.dut.send_expect("./usertools/dpdk-devbind.py --force --bind=vfio-pci {}".format(pci_str), "# ", 60)
+
+ def launch_testpmd(self, symmetric=False, package='comms'):
+ if symmetric:
+ param = "--rxq=64 --txq=64"
+ else:
+ param = "--rxq=64 --txq=64 --disable-rss --rxd=384 --txd=384"
+ out = self.pmd_output.start_testpmd(cores="1S/4C/1T", param=param,
+ eal_param=f"-w {self.pci_list[0]}", socket=self.ports_socket)
+ self.symmetric = symmetric
+ package_version = re.search('Active\spackage\sis:\s(.+),', out).group(1)
+ self.logger.info('DDP package version: %s' % package_version)
+ if package == 'comms':
+ self.verify(package_version in self.comms_package.split('/')[-1],
+ 'package version not match')
+ elif package == 'os_default':
+ self.verify(package_version in self.os_default_package.split('/')[-1],
+ 'package version not match')
+ if symmetric:
+ # Need config rss in setup
+ self.pmd_output.execute_cmd("port config all rss all")
+ self.pmd_output.execute_cmd("set fwd rxonly")
+ self.pmd_output.execute_cmd("set verbose 1")
+ res = self.pmd_output.wait_link_status_up('all', timeout=15)
+ self.verify(res is True, 'there have port link is down')
+ return package_version
+
+ def switch_testpmd(self, symmetric=True, pkg='comms'):
+ self.dut.kill_all()
+ self.launch_testpmd(symmetric, pkg)
+ self.pmd_output.execute_cmd("start")
+
+ def _gener_str(self, str_len=6):
+ return ''.join(random.sample(string.ascii_letters + string.digits, k=str_len))
+
+ def test_mac_ipv4_pfcp_session(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_pfcp_session)
+
+ def test_mac_ipv6_pfcp_session(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_pfcp_session)
+
+ def test_mac_ipv4_l2tpv3(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_l2tpv3)
+
+ def test_mac_ipv6_l2tpv3(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_l2tpv3)
+
+ def test_mac_ipv4_esp(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_esp)
+
+ def test_mac_ipv4_udp_esp(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_udp_esp)
+
+ def test_mac_ipv6_esp(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_esp)
+
+ def test_mac_ipv6_udp_esp(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_udp_esp)
+
+ def test_mac_ipv4_ah(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_ah)
+
+ def test_mac_ipv6_ah(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_ah)
+
+ def test_mac_pppoe_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_pay)
+
+ def test_mac_pppoe_ipv4_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv4_pay_cases)
+
+ def test_mac_pppoe_ipv4_udp_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv4_udp_pay)
+
+ def test_mac_pppoe_ipv4_tcp_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv4_tcp_pay)
+
+ def test_mac_pppoe_ipv6_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv6_pay)
+
+ def test_mac_pppoe_ipv6_udp_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv6_udp_pay)
+
+ def test_mac_pppoe_ipv6_tcp_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv6_tcp_pay)
+
+ def test_mac_pppoe_ipv4_pay_symmetric(self):
+ self.switch_testpmd(symmetric=True)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv4_pay_symmetric)
+
+ def test_mac_pppoe_ipv4_udp_pay_symmetric(self):
+ self.switch_testpmd(symmetric=True)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv4_udp_pay_symmetric)
+
+ def test_mac_pppoe_ipv4_tcp_pay_symmetric(self):
+ self.switch_testpmd(symmetric=True)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv4_tcp_pay_symmetric)
+
+ def test_mac_pppoe_ipv6_pay_symmetric(self):
+ self.switch_testpmd(symmetric=True)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv6_pay_symmetric)
+
+ def test_mac_pppoe_ipv6_udp_pay_symmetric(self):
+ self.switch_testpmd(symmetric=True)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv6_udp_pay_symmetric)
+
+ def test_mac_pppoe_ipv6_tcp_pay_symmetric(self):
+ self.switch_testpmd(symmetric=True)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv6_tcp_pay_symmetric)
+
+ def test_simple_xor(self):
+ self.switch_testpmd(symmetric=True)
+ self.rsspro.handle_rss_distribute_cases(cases_info=simple_xor)
+
+ def test_multirules_two_rules_not_hit_default_profile(self):
+ """
+ Subcase 1: two rules with same pattern but different hash input set, not hit default profile
+ :return:
+ """
+ self.rsspro.error_msgs = []
+ self.switch_testpmd(symmetric=True)
+ rule0 = 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end'
+ self.rsspro.create_rule(rule0)
+ self.rsspro.check_rule(0)
+ pkts_list1 = [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)']
+ out = self.rsspro.send_pkt_get_output(pkts_list1[0])
+ pkt1_first_key = 'l3_src'
+ self.rsspro.save_hash(out, pkt1_first_key)
+ res = self.rsspro.send_pkt_get_output(pkts_list1[1])
+ self.rsspro.check_hash_different(res, pkt1_first_key)
+
+ rule1 = 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end'
+ self.rsspro.create_rule(rule1)
+ pkts_list2 = [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ ]
+ self._send_pkt_action(pkts_list2)
+
+ pkts_list3 = [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)']
+
+ for i in range(1, 3):
+ self.rsspro.destroy_rule(rule_id=i % 2)
+ self.rsspro.check_rule(rule_list='rule{}'.format(i % 2), stats=False)
+ pkt_base = 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)'
+ res3 = self.rsspro.send_pkt_get_output(pkt_base)
+ pkt3_key = 'hash_record_{}'.format(i % 2)
+ self.rsspro.save_hash(res3, pkt3_key)
+ for each_rule in pkts_list3:
+ result = self.rsspro.send_pkt_get_output(each_rule)
+ self.rsspro.check_hash_different(result, pkt3_key)
+ self.verify(not self.rsspro.error_msgs, 'some subcases failed')
+
+ def test_multirules_two_rules_hit_default_profile(self):
+ """
+ # Subcase 2: two rules with same pattern but different hash input set, hit default profile
+ :return:
+ """
+ self.rsspro.error_msgs = []
+ self.switch_testpmd(symmetric=True)
+ rule_list = [
+ 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end',
+ 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end'
+
+ ]
+ pkt_list = [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.5")/Raw("x"*80)',
+ ]
+ self._two_rules_operation(rule_list, pkt_list,action_list1=['check_no_hash' for _ in range(0,len(pkt_list))],action_list2=['check_no_hash'])
+ self.verify(not self.rsspro.error_msgs, 'some subcases failed')
+
+ def _send_pkt_action(self, pkt_list, action_list=None):
+ if action_list is None:
+ action_list = ['save_hash', 'check_hash_different', 'check_hash_same']
+ hash_key = self._gener_str()
+ for i in range(0, len(pkt_list)):
+ out = self.rsspro.send_pkt_get_output(pkt_list[i])
+ func = getattr(self.rsspro, action_list[i])
+ func(out, hash_key)
+
+ def _two_rules_operation(self, rule_list, pkt_list, action_list1=None, action_list2=None):
+ for i in range(0, len(rule_list)):
+ self.rsspro.create_rule(rule_list[i])
+ self.rsspro.check_rule(rule_list=['{}'.format(i)])
+ if i == 1:
+ pkt_list[1], pkt_list[2] = pkt_list[2], pkt_list[1]
+ self._send_pkt_action(pkt_list)
+ else:
+ self._send_pkt_action(pkt_list)
+ # destory rule 1
+ self.rsspro.destroy_rule(rule_id=1)
+ self.rsspro.check_rule(rule_list=['1'], stats=False)
+ pkt_list[1], pkt_list[2] = pkt_list[2], pkt_list[1]
+ self._send_pkt_action(pkt_list, action_list=action_list1)
+ # destory rule 0
+ self.rsspro.destroy_rule(rule_id=0)
+ self.rsspro.check_rule(rule_list=['0'], stats=False)
+ self._send_pkt_action([pkt_list[0]], action_list=action_list2)
+
+ def test_two_rules_smaller_first_larger_later(self, ):
+ """
+ two rules, scope smaller created first, and the larger one created later
+ """
+ self.rsspro.error_msgs = []
+ self.switch_testpmd(symmetric=True)
+ rule_list = [
+ 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end',
+ 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end'
+ ]
+ pkt_list = [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/UDP(sport=25,dport=99)/Raw("x"*80)',
+ ]
+ self._two_rules_operation(rule_list, pkt_list, action_list2=['check_no_hash'])
+ self.verify(not self.rsspro.error_msgs, 'some subcases failed')
+
+ def test_two_rules_larger_first_smaller_later(self):
+ """
+ Subcase 4: two rules, scope larger created first, and the smaller one created later
+ """
+ self.rsspro.error_msgs = []
+ self.switch_testpmd(symmetric=True)
+ rule_list = [
+ 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end',
+ 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end'
+ ]
+ pkt_list = [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/UDP(sport=25,dport=99)/Raw("x"*80)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)',
+ ]
+ self._two_rules_operation(rule_list, pkt_list, action_list2=['check_no_hash'])
+
+ def test_wrong_hash_input_set(self):
+ self.switch_testpmd(symmetric=True)
+ rule_list = [
+ 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types l2-src-only l2-dst-only end key_len 0 queues end / end',
+ 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end',
+ 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp l3-src-only end key_len 0 queues end / end']
+
+ for rule in rule_list:
+ self.rsspro.validate_rule(rule, check_stats=False, check_msg='Invalid argument')
+ self.rsspro.create_rule(rule, check_stats=False, msg='Invalid argument')
+
+ def test_void_action(self):
+ self.switch_testpmd(symmetric=True)
+ rule = 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions end'
+ self.rsspro.validate_rule(rule, check_stats=False, check_msg='Invalid argument')
+ self.rsspro.create_rule(rule, check_stats=False, msg='Invalid argument')
+ self.rsspro.check_rule(stats=False, rule_list=[rule])
+
+ def test_delete_nonexisting_rule(self):
+ self.switch_testpmd(symmetric=True)
+ self.rsspro.check_rule(stats=False)
+ out = self.dut.send_command("flow destroy 0 rule 0", timeout=1)
+ self.verify('error' not in out, 'delete nonexisting rule raise err,expected no err')
+ self.dut.send_command("flow flush 0", timeout=1)
+
+ def test_unsupported_pattern_with_OS_default_package(self):
+ self.replace_package('os_default')
+ self.switch_testpmd(symmetric=True, pkg='os_default')
+ rule_list = [
+ 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end',
+ 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end',
+ 'flow create 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end',
+ 'flow create 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end'
+ ]
+ self.rsspro.validate_rule(rule_list, check_stats=False, check_msg='Invalid argument')
+ self.rsspro.create_rule(rule_list, check_stats=False, msg='Invalid argument')
+ self.rsspro.check_rule(stats=False)
+ self.dut.kill_all()
+ self.replace_package('comms')
+ self.launch_testpmd()
+
+ def test_invalid_port(self):
+ self.switch_testpmd(symmetric=True)
+ rule = 'flow create 1 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end'
+ self.rsspro.create_rule(rule, check_stats=False, msg='No such device')
+ self.rsspro.check_rule(stats=False, rule_list=[rule])
+ pattern = 'Invalid port 1'
+ out = self.dut.send_command("flow list 1", timeout=1)
+ result = re.search(r'%s' % pattern, out)
+ self.verify(result, 'actual result not match expected,expected result is:{}'.format(pattern))
+
+ def test_mac_vlan_ipv4_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_pay)
+
+ def test_mac_vlan_ipv4_udp_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_udp_pay)
+
+ def test_mac_vlan_ipv4_tcp_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_tcp_pay)
+
+ def test_mac_vlan_ipv4_sctp_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_sctp_pay)
+
+ def test_mac_vlan_ipv6_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_pay)
+
+ def test_mac_vlan_ipv6_udp_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_udp_pay)
+
+ def test_mac_vlan_ipv6_tcp_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_tcp_pay)
+
+ def test_mac_vlan_ipv6_sctp_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_sctp_pay)
+
+ def test_mac_vlan_pppoe_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_pppoe_pay)
diff --git a/tests/TestSuite_cvl_advanced_rss_pppoe_vlan_esp_ah_l2tp_pfcp.py b/tests/TestSuite_cvl_advanced_rss_pppoe_vlan_esp_ah_l2tp_pfcp.py
deleted file mode 100644
index bf5422d..0000000
--- a/tests/TestSuite_cvl_advanced_rss_pppoe_vlan_esp_ah_l2tp_pfcp.py
+++ /dev/null
@@ -1,5667 +0,0 @@
-# BSD LICENSE
-#
-# Copyright(c)2020 Intel Corporation. All rights reserved.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in
-# the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Intel Corporation nor the names of its
-# contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-import re
-import random
-import string
-from test_case import TestCase
-from pmd_output import PmdOutput
-from packet import Packet
-from rte_flow_common import RssProcessing
-from config import UserConf
-
-mac_ipv4_pfcp_session_packets = {
- 'match': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=2)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:54")/IP(src="192.168.0.25",dst="192.168.0.23")/UDP(sport=23,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)'],
- 'mismatch': [
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=25)/Raw("x"*80)']
-}
-
-mac_ipv4_pfcp_session = {
- 'sub_casename': 'mac_ipv4_pfcp_session',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv4_pfcp_session_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv4_pfcp_session_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv4_pfcp_session_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': [i for i in mac_ipv4_pfcp_session_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_ipv4_pfcp_session_packets['match']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_ipv6_pfcp_session_packets = {
- 'match': [
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=2)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)'],
- 'mismatch': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=25)/Raw("x"*80)']
-}
-
-mac_ipv6_pfcp_session = {
- 'sub_casename': 'mac_ipv6_pfcp_session',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv6_pfcp_session_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv6_pfcp_session_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv6_pfcp_session_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': [i for i in mac_ipv6_pfcp_session_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_ipv6_pfcp_session_packets['match']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_ipv4_l2tpv3_packets = {
- 'match': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.4", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x12\')/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.5",dst="192.168.0.7", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)'
- ],
- 'mismatch': [
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=25)/Raw("x"*80)'
- ]
-}
-
-mac_ipv4_l2tpv3 = {
- 'sub_casename': 'mac_ipv4_l2tpv3',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv4_l2tpv3_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv4_l2tpv3_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv4_l2tpv3_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': [i for i in mac_ipv4_l2tpv3_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_ipv4_l2tpv3_packets['match']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_ipv6_l2tpv3_packets = {
- 'match': [
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP(b\'\\x00\\x00\\x00\\x12\')/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)'
- ],
- 'mismatch': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=25)/Raw("x"*80)'
- ]
-}
-
-mac_ipv6_l2tpv3 = {
- 'sub_casename': 'mac_ipv6_l2tpv3',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv6 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv6_l2tpv3_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv6_l2tpv3_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv6_l2tpv3_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': [i for i in mac_ipv6_l2tpv3_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_ipv6_l2tpv3_packets['match']],
- 'action': 'check_no_hash',
- }
- ]
-}
-
-mac_ipv4_esp_packets = {
- 'match': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=12)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.4",dst="192.168.0.7",proto=50)/ESP(spi=11)/Raw("x"*480)'],
- 'mismatch': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=12)/Raw("x"*480)'
- ]
-}
-
-mac_ipv4_esp = {
- 'sub_casename': 'mac_ipv4_esp',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv4_esp_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv4_esp_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv4_esp_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': [
- i for i in mac_ipv4_esp_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [
- i for i in mac_ipv4_esp_packets['match']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_ipv4_udp_esp_packets = {
- 'match': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=12)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.4",dst="192.168.0.7")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)'],
- 'mismatch': [
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)']
-}
-
-mac_ipv4_udp_esp = {
- 'sub_casename': 'mac_ipv4_udp_esp',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / esp / end actions rss types esp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv4_udp_esp_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv4_udp_esp_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv4_udp_esp_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': [i for i in mac_ipv4_udp_esp_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [
- i for i in mac_ipv4_esp_packets['match']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_ipv6_esp_packets = {
- 'match': [
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=11)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=12)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=50)/ESP(spi=11)/Raw("x"*480)'],
- 'mismatch': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)']
-}
-
-mac_ipv6_esp = {
- 'sub_casename': 'mac_ipv6_esp',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv6 / esp / end actions rss types esp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv6_esp_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv6_esp_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv6_esp_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': [i for i in mac_ipv6_esp_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_ipv6_esp_packets['match']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_ipv6_udp_esp_packets = {
- 'match': [
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=12)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)'],
- 'mismatch': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=11)/Raw("x"*480)']
-}
-
-mac_ipv6_udp_esp = {
- 'sub_casename': 'mac_ipv6_udp_esp',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / esp / end actions rss types esp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv6_udp_esp_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv6_udp_esp_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv6_udp_esp_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': mac_ipv6_udp_esp_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_ipv6_udp_esp_packets['match'],
- 'action': 'check_no_hash',
- },
- ],
-
-}
-
-mac_ipv4_ah_packets = {
- 'match': ['Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=11)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=12)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.4",dst="192.168.0.8",proto=51)/AH(spi=11)/Raw("x"*480)'],
- 'mismatch': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=11)/Raw("x"*480)']
-}
-
-mac_ipv4_ah = {
- 'sub_casename': 'mac_ipv4_ah',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv4_ah_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv4_ah_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv4_ah_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': [i for i in mac_ipv4_ah_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_ipv4_ah_packets['match']],
- 'action': 'check_no_hash',
- },
- ],
-
-}
-
-mac_ipv6_ah_packets = {
- 'match': [
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=11)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=12)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=51)/AH(spi=11)/Raw("x"*480)'],
- 'mismatch': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=11)/Raw("x"*480)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)']
-}
-
-mac_ipv6_ah = {
- 'sub_casename': 'mac_ipv6_ah',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv6 / ah / end actions rss types ah end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv6_ah_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv6_ah_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv6_ah_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': [i for i in mac_ipv6_ah_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_ipv6_ah_packets['match']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_pay_packets = {
- 'mismatch': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IP(src="192.168.0.3",dst="192.168.0.5")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)']
-}
-
-mac_pppoe_pay_l2_src_only_packets = {
- 'mac_pppoe_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/Raw("x"*80)'
- ],
- 'mac_pppoe_lcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99",type=0x8864)/PPPoE(sessionid=7)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)'
- ],
- 'mac_pppoe_ipcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99",type=0x8864)/PPPoE(sessionid=7)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)'
- ],
-}
-
-mac_pppoe_pay_l2_src_only = {
- 'sub_casename': 'mac_pppoe_pay_l2_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / end actions rss types eth l2-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_lcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_lcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_lcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_lcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_lcp_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_lcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_ipcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_ipcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_packets['mac_pppoe_ipcp_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipcp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [mac_pppoe_pay_l2_src_only_packets[key][i] for i in range(0, 3) for key in
- ['mac_pppoe_pay', 'mac_pppoe_lcp_pay', 'mac_pppoe_ipcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_pay_l2_dst_only_packets = {
- 'mac_pppoe_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/Raw("x"*80)']
-
-}
-
-mac_pppoe_pay_l2_dst_only = {
- 'sub_casename': 'mac_pppoe_pay_l2_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / end actions rss types eth l2-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_pay_l2_dst_only_packets['mac_pppoe_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_dst_only_packets['mac_pppoe_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_dst_only_packets['mac_pppoe_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_pppoe_pay_l2_dst_only_packets['mac_pppoe_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_pay_l2_src_only_l2_dst_only_packets = {
- 'mac_pppoe_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/Raw("x"*80)'
- ]
-
-}
-
-mac_pppoe_pay_l2_src_only_l2_dst_only = {
- 'sub_casename': 'mac_pppoe_pay_l2_src_only_l2_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / end actions rss types eth end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_pppoe_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_pay_session_id_packets = {
- 'mac_pppoe_lcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=7)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
- ],
- 'mac_pppoe_ipcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=7)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)'
- ]
-
-}
-
-mac_pppoe_pay_session_id = {
- 'sub_casename': 'mac_pppoe_pay_session_id',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_pay_session_id_packets['mac_pppoe_lcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_lcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_session_id_packets['mac_pppoe_lcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_lcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_session_id_packets['mac_pppoe_lcp_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_lcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_session_id_packets['mac_pppoe_ipcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_session_id_packets['mac_pppoe_ipcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_session_id_packets['mac_pppoe_ipcp_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipcp_pay'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [mac_pppoe_pay_session_id_packets[key][i] for i in range(0, 3) for key in
- ['mac_pppoe_lcp_pay', 'mac_pppoe_ipcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_pay_l2_src_only_session_id_packets = {
- 'mac_pppoe_lcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=7)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=7)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)'
- ],
- 'mac_pppoe_ipcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=7)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66",type=0x8864)/PPPoE(sessionid=7)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)'
- ]
-
-}
-
-mac_pppoe_pay_l2_src_only_session_id = {
- 'sub_casename': 'mac_pppoe_pay_l2_src_only_session_id',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / end actions rss types eth l2-src-only pppoe end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_lcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_lcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_lcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_lcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_lcp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_lcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_lcp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_lcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_lcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_lcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_ipcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_ipcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_ipcp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_ipcp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_pay_l2_src_only_session_id_packets['mac_pppoe_ipcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipcp_pay'},
- },
-
- {
- 'send_packet': mac_pppoe_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [mac_pppoe_pay_l2_src_only_session_id_packets[key][i] for i in range(0, 4) for key in
- ['mac_pppoe_lcp_pay', 'mac_pppoe_ipcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-
-mac_pppoe_ipv4_pay_packets = {
- 'mismatch': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", frag=5)/Raw("x"*80)']
-}
-
-mac_pppoe_ipv4_pay = [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=4)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/Raw("x"*80)'
-]
-
-mac_pppoe_ipv4_frag = [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=4)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5", frag=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5", frag=3)/Raw("x"*80)'
-]
-
-mac_pppoe_ipv4_pay_src_test = [
- {
- 'send_packet': mac_pppoe_ipv4_pay[0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay[1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay[2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_frag[0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_frag[1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_frag[2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_frag'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
-]
-
-mac_pppoe_ipv4_pay_dst_test = [
- {
- 'send_packet': mac_pppoe_ipv4_pay[0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay[2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay[1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_frag[0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_frag[2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_frag[1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_frag'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
-]
-
-mac_pppoe_ipv4_pay_src_dst_test = [
- {
- 'send_packet': mac_pppoe_ipv4_pay[0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay[1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay[2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay[3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay[-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_frag[0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_frag[1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_frag[2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_frag[3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_frag[-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_frag'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
-]
-
-mac_pppoe_ipv4_pay_post_test = [
- {
- 'send_packet': [item for item in mac_pppoe_ipv4_pay + mac_pppoe_ipv4_frag],
- 'action': 'check_no_hash',
- },
- ],
-
-mac_pppoe_ipv4_pay_l2_src_only = {
- 'sub_casename': 'mac_pppoe_ipv4_pay_l2_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth l2-src-only end key_len 0 queues end / end',
- 'test': mac_pppoe_ipv4_pay_src_test,
- 'post-test': mac_pppoe_ipv4_pay_post_test
-}
-
-mac_pppoe_ipv4_pay_l2_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv4_pay_l2_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth l2-dst-only end key_len 0 queues end / end',
- 'test': mac_pppoe_ipv4_pay_dst_test,
- 'post-test': mac_pppoe_ipv4_pay_post_test
-}
-
-mac_pppoe_ipv4_pay_l2_src_only_l2_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv4_pay_l2_src_only_l2_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types eth end key_len 0 queues end / end',
- 'test': mac_pppoe_ipv4_pay_src_dst_test,
- 'post-test': mac_pppoe_ipv4_pay_post_test
-}
-
-
-mac_pppoe_ipv4_pay_l3_src_only_packets = {
- 'mac_pppoe_ipv4_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:54", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/Raw("x"*80)',
- ],
- 'mac_pppoe_ipv4_frag': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2", frag=5)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:54", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7", frag=3)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_pay_l3_src_only = {
- 'sub_casename': 'mac_pppoe_ipv4_pay_l2_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_frag'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_frag'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_frag'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_frag'},
- },
-
- {
- 'send_packet': mac_pppoe_ipv4_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_pay'] +
- mac_pppoe_ipv4_pay_l3_src_only_packets['mac_pppoe_ipv4_frag'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_pay_l3_dst_only_packets = {
- 'mac_pppoe_ipv4_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.3")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.7", dst="192.168.1.2")/Raw("x"*80)',
- ],
- 'mac_pppoe_ipv4_frag': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.3", frag=5)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.7", dst="192.168.1.2", frag=3)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_pay_l3_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv4_pay_l3_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_frag'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_frag'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_frag'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_frag'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_pay'] +
- mac_pppoe_ipv4_pay_l3_dst_only_packets['mac_pppoe_ipv4_frag']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets = {
- 'mac_pppoe_ipv4_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)'
- ],
- 'mac_pppoe_ipv4_frag': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2", frag=5)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7", frag=5)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7", frag=5)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=3)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_frag'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_frag'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_frag'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_frag'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_frag'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_frag'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_pay'] +
- mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv4_frag']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_udp_pay_packets = {
- 'mismatch': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:'
- '910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=25,dport=23)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_udp_pay_l2_src_only_packets = {
- 'mac_pppoe_ipv4_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/UDP(sport=19,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_udp_pay_l2_src_only = {
- 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l2_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_packets['mac_pppoe_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_packets['mac_pppoe_ipv4_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_packets['mac_pppoe_ipv4_udp_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_packets['mac_pppoe_ipv4_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_udp_pay_l2_dst_only_packets = {
- 'mac_pppoe_ipv4_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/UDP(sport=19,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_udp_pay_l2_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l2_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
- },
-
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-
-}
-
-mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets = {
- 'mac_pppoe_ipv4_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/UDP(sport=19,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types eth end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-
-}
-
-mac_pppoe_ipv4_udp_pay_l3_src_only_packets = {
- 'mac_pppoe_ipv4_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=19,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_udp_pay_l3_src_only = {
- 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_packets['mac_pppoe_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_packets['mac_pppoe_ipv4_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_packets['mac_pppoe_ipv4_udp_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
- },
-
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_packets['mac_pppoe_ipv4_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_udp_pay_l3_dst_only_packets = {
- 'mac_pppoe_ipv4_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=19,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_udp_pay_l3_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_packets['mac_pppoe_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_packets['mac_pppoe_ipv4_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_packets['mac_pppoe_ipv4_udp_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_packets['mac_pppoe_ipv4_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_udp_pay_l4_src_only_packets = {
- 'mac_pppoe_ipv4_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=9,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7")/UDP(sport=25,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_udp_pay_l4_src_only = {
- 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l4_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
- },
-
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_udp_pay_l4_dst_only_packets = {
- 'mac_pppoe_ipv4_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7")/UDP(sport=19,dport=23)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_udp_pay_l4_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l4_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
- },
-
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets = {
- 'mac_pppoe_ipv4_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.9")/UDP(sport=25,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only = {
- 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets = {
- 'mac_pppoe_ipv4_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=19,dport=23)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets = {
- 'mac_pppoe_ipv4_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only = {
- 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets = {
- 'mac_pppoe_ipv4_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)'
-
- ]
-}
-
-mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets = {
- 'mac_pppoe_ipv4_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7")/UDP(sport=19,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv4_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv4_udp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv4_udp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv4_udp_pay'][4],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv4_udp_pay'][5],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv4_udp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv4_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_udp_pay_ipv4_packets = {
- 'mac_pppoe_ipv4_udp_pay':[
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=19,dport=99)/Raw("x"*80)',
- ]
-}
-
-mac_pppoe_ipv4_udp_pay_ipv4 = {
- 'sub_casename': 'mac_pppoe_ipv4_udp_pay_ipv4',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_ipv4_packets[
- 'mac_pppoe_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_ipv4_packets[
- 'mac_pppoe_ipv4_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_ipv4_packets[
- 'mac_pppoe_ipv4_udp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_ipv4_packets[
- 'mac_pppoe_ipv4_udp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_ipv4_packets[
- 'mac_pppoe_ipv4_udp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_udp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_udp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_ipv4_packets[
- 'mac_pppoe_ipv4_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_tcp_pay_packets = {
- 'mismatch': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/'
- 'IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=25,dport=23)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_tcp_pay_l2_src_only_packets = {
- 'mac_pppoe_ipv4_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/TCP(sport=19,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_tcp_pay_l2_src_only = {
- 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l2_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_l2_src_only_packets['mac_pppoe_ipv4_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_tcp_pay_l2_dst_only_packets = {
- 'mac_pppoe_ipv4_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/TCP(sport=19,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_tcp_pay_l2_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l2_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets = {
- 'mac_pppoe_ipv4_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/TCP(sport=19,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types eth end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv4_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_tcp_pay_l3_src_only_packets = {
- 'mac_pppoe_ipv4_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=19,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_tcp_pay_l3_src_only = {
- 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_l3_src_only_packets['mac_pppoe_ipv4_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_tcp_pay_l3_dst_only_pakets = {
- 'mac_pppoe_ipv4_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.3")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=19,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_tcp_pay_l3_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_pakets['mac_pppoe_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_pakets['mac_pppoe_ipv4_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_pakets['mac_pppoe_ipv4_tcp_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_l3_dst_only_pakets['mac_pppoe_ipv4_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_tcp_pay_l4_src_only_packets = {
- 'mac_pppoe_ipv4_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7")/TCP(sport=25,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_tcp_pay_l4_src_only = {
- 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l4-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_tcp_pay_l4_dst_only_packets = {
- 'mac_pppoe_ipv4_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=19)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7")/TCP(sport=19,dport=23)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_tcp_pay_l4_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l4_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l4-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets = {
- 'mac_pppoe_ipv4_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.9")/TCP(sport=25,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only = {
- 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets = {
- 'mac_pppoe_ipv4_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=19,dport=23)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets = {
- 'mac_pppoe_ipv4_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=9,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=9,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only = {
- 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv4_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets = {
- 'mac_pppoe_ipv4_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=90)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=25,dport=90)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=19,dport=23)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv4_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets = {
- 'mac_pppoe_ipv4_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.5")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/TCP(sport=19,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)'
-
- ]
-}
-
-mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv4_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv4_tcp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv4_tcp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv4_tcp_pay'][4],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv4_tcp_pay'][5],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv4_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv4_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv4_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_tcp_pay_ipv4_packets = {
- 'mac_pppoe_ipv4_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=19,dport=99)/Raw("x"*80)',
- ]
-}
-
-mac_pppoe_ipv4_tcp_pay_ipv4 = {
- 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_ipv4',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4 end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_ipv4_packets[
- 'mac_pppoe_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_ipv4_packets[
- 'mac_pppoe_ipv4_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_ipv4_packets[
- 'mac_pppoe_ipv4_tcp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_ipv4_packets[
- 'mac_pppoe_ipv4_tcp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_ipv4_packets[
- 'mac_pppoe_ipv4_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv4_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_ipv4_packets['mac_pppoe_ipv4_tcp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-mac_pppoe_ipv6_pay_packets = {
- 'mismatch': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_pay_l2_src_only_packets = {
- 'mac_pppoe_ipv6_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*80)'
- ],
- 'mac_pppoe_ipv6_frag': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/IPv6ExtHdrFragment()/Raw("x"*80)',
- ]
-}
-
-mac_pppoe_ipv6_pay_l2_src_only = {
- 'sub_casename': 'mac_pppoe_ipv6_pay_l2_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth l2-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_frag'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_frag'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_frag'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_frag'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_pay_l2_src_only_packets['mac_pppoe_ipv6_frag']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_pay_l2_dst_only_packets = {
- 'mac_pppoe_ipv6_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*80)'
- ],
- 'mac_pppoe_ipv6_frag': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/IPv6ExtHdrFragment()/Raw("x"*80)'
- ]
-
-}
-
-mac_pppoe_ipv6_pay_l2_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv6_pay_l2_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth l2-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_pay'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_frag'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_frag'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_frag'][2],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_frag'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_pay_l2_dst_only_packets['mac_pppoe_ipv6_frag']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets = {
- 'mac_pppoe_ipv6_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*80)'
- ],
- 'mac_pppoe_ipv6_frag': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/IPv6ExtHdrFragment()/Raw("x"*80)'
-
- ]
-}
-
-mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types eth end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_frag'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_frag'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_frag'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_frag'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_frag'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_frag'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_frag']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_pay_l3_src_only_packets = {
- 'mac_pppoe_ipv6_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:54", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*80)',
- ],
- 'mac_pppoe_ipv6_frag': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:54", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/IPv6ExtHdrFragment()/Raw("x"*80)',
-
- ]
-}
-
-mac_pppoe_ipv6_pay_l3_src_only = {
- 'sub_casename': 'mac_pppoe_ipv6_pay_l3_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_pay'][1:-1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_frag'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_frag'][1:-1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_frag'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_frag'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_pay_l3_src_only_packets['mac_pppoe_ipv6_frag']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_pay_l3_dst_only_packets = {
- 'mac_pppoe_ipv6_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'
- ],
- 'mac_pppoe_ipv6_frag': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)'
-
- ]
-}
-
-mac_pppoe_ipv6_pay_l3_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv6_pay_l3_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_pay'][1:-1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_frag'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_frag'][1:-1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_frag'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_frag'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_pay_l3_dst_only_packets['mac_pppoe_ipv6_frag']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets = {
- 'mac_pppoe_ipv6_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'
- ],
- 'mac_pppoe_ipv6_frag': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)'
-
- ]
-}
-
-mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_frag'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_frag'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_frag'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_frag'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_frag'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_frag'},
- },
-
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only_packets['mac_pppoe_ipv6_frag']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_udp_pay_packets = {
- 'mismatch': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_udp_pay_l2_src_only_packets = {
- 'mac_pppoe_ipv6_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_udp_pay_l2_src_only = {
- 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l2_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_packets['mac_pppoe_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_packets['mac_pppoe_ipv6_udp_pay'][1:-1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_l2_src_only_packets['mac_pppoe_ipv6_udp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_udp_pay_l2_dst_only_packets = {
- 'mac_pppoe_ipv6_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_udp_pay_l2_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l2_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][1:-1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets = {
- 'mac_pppoe_ipv6_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types eth end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_udp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_udp_pay_l3_src_only_packets = {
- 'mac_pppoe_ipv6_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_udp_pay_l3_src_only = {
- 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_packets['mac_pppoe_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_packets['mac_pppoe_ipv6_udp_pay'][1:-1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_udp_pay_l3_src_only_packets['mac_pppoe_ipv6_udp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_udp_pay_l3_dst_only_packets = {
- 'mac_pppoe_ipv6_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=99)/Raw("x"*80)'
-
- ]
-}
-
-mac_pppoe_ipv6_udp_pay_l3_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_packets['mac_pppoe_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_packets['mac_pppoe_ipv6_udp_pay'][1:-1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_udp_pay_l3_dst_only_packets['mac_pppoe_ipv6_udp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_udp_pay_l4_src_only_packets = {
- 'mac_pppoe_ipv6_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_udp_pay_l4_src_only = {
- 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l4_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][1:-1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_udp_pay_l4_src_only_packets['mac_pppoe_ipv6_udp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_udp_pay_l4_dst_only_packets = {
- 'mac_pppoe_ipv6_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=23)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_udp_pay_l4_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l4_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][1:-1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_udp_pay_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets = {
- 'mac_pppoe_ipv6_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only = {
- 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets = {
- 'mac_pppoe_ipv6_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=23)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets = {
- 'mac_pppoe_ipv6_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only = {
- 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets = {
- 'mac_pppoe_ipv6_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'][-1],
- 'action': {'check_hash_same': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets = {
- 'mac_pppoe_ipv6_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=19,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv6_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv6_udp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv6_udp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv6_udp_pay'][4],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv6_udp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_udp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv6_udp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_udp_pay_ipv6_packets = {
- 'mac_pppoe_ipv6_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1538", dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=99)/Raw("x"*80)',
- ]
-}
-
-mac_pppoe_ipv6_udp_pay_ipv6 = {
- 'sub_casename': 'mac_pppoe_ipv6_udp_pay_ipv6',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss types ipv6 end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_ipv6_packets[
- 'mac_pppoe_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_ipv6_packets[
- 'mac_pppoe_ipv6_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_ipv6_packets[
- 'mac_pppoe_ipv6_udp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_ipv6_packets[
- 'mac_pppoe_ipv6_udp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_ipv6_packets[
- 'mac_pppoe_ipv6_udp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_udp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet':mac_pppoe_ipv6_udp_pay_ipv6_packets['mac_pppoe_ipv6_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-
-}
-
-mac_pppoe_ipv6_tcp_pay_packets = {
- 'mismatch': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_tcp_pay_l2_src_only_packets = {
- 'mac_pppoe_ipv6_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_tcp_pay_l2_src_only = {
- 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l2_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_packets['mac_pppoe_ipv6_tcp_pay'][1:-1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_tcp_pay_l2_src_only_packets['mac_pppoe_ipv6_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-
-}
-
-mac_pppoe_ipv6_tcp_pay_l2_dst_only_packets = {
- 'mac_pppoe_ipv6_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=99)/Raw("x"*80)',
- ]
-}
-
-mac_pppoe_ipv6_tcp_pay_l2_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l2_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][1:-1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_tcp_pay_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets = {
- 'mac_pppoe_ipv6_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types eth end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only_packets['mac_pppoe_ipv6_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_tcp_pay_l3_src_only_packets = {
- 'mac_pppoe_ipv6_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_tcp_pay_l3_src_only = {
- 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_packets['mac_pppoe_ipv6_tcp_pay'][1:-1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_tcp_pay_l3_src_only_packets['mac_pppoe_ipv6_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_tcp_pay_l3_dst_only_packets = {
- 'mac_pppoe_ipv6_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_tcp_pay_l3_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][1:-1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_tcp_pay_l3_dst_only_packets['mac_pppoe_ipv6_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_tcp_pay_l4_src_only_packets = {
- 'mac_pppoe_ipv6_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_tcp_pay_l4_src_only = {
- 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l4_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l4-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][1:-1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_tcp_pay_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_tcp_pay_l4_dst_only_packets = {
- 'mac_pppoe_ipv6_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=23)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_tcp_pay_l4_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l4_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l4-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][1:-1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_tcp_pay_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets = {
- 'mac_pppoe_ipv6_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only = {
- 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets = {
- 'mac_pppoe_ipv6_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=23)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-
-}
-
-mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets = {
- 'mac_pppoe_ipv6_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=99)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only = {
- 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only_packets['mac_pppoe_ipv6_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets = {
- 'mac_pppoe_ipv6_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=23)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only_packets['mac_pppoe_ipv6_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets = {
- 'mac_pppoe_ipv6_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=19,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)'
- ]
-}
-
-mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only = {
- 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv6_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv6_tcp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv6_tcp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv6_tcp_pay'][4],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv6_tcp_pay'][5],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv6_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': [i for i in mac_pppoe_ipv6_tcp_pay_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only_packets[
- 'mac_pppoe_ipv6_tcp_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_tcp_pay_ipv6_packets = {
- 'mac_pppoe_ipv6_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1538", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=99)/Raw("x"*80)',
- ]
-}
-
-mac_pppoe_ipv6_tcp_pay_ipv6 = {
- 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_ipv6',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss types ipv6 end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_ipv6_packets['mac_pppoe_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_ipv6_packets['mac_pppoe_ipv6_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_ipv6_packets['mac_pppoe_ipv6_tcp_pay'][2],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_ipv6_packets['mac_pppoe_ipv6_tcp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_ipv6_packets['mac_pppoe_ipv6_tcp_pay'][-1],
- 'action': {'check_hash_same', 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_ipv6_packets['mac_pppoe_ipv6_tcp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv6_tcp_pay = [
- mac_pppoe_ipv6_tcp_pay_l2_src_only,
- mac_pppoe_ipv6_tcp_pay_l2_dst_only,
- mac_pppoe_ipv6_tcp_pay_l2_src_only_l2_dst_only,
- mac_pppoe_ipv6_tcp_pay_l3_src_only,
- mac_pppoe_ipv6_tcp_pay_l3_dst_only,
- mac_pppoe_ipv6_tcp_pay_l4_src_only,
- mac_pppoe_ipv6_tcp_pay_l4_dst_only,
- mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_src_only,
- mac_pppoe_ipv6_tcp_pay_l3_src_only_l4_dst_only,
- mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_src_only,
- mac_pppoe_ipv6_tcp_pay_l3_dst_only_l4_dst_only,
- mac_pppoe_ipv6_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only,
- mac_pppoe_ipv6_tcp_pay_ipv6
-]
-
-mac_pppoe_ipv6_udp_pay = [
- mac_pppoe_ipv6_udp_pay_l2_src_only,
- mac_pppoe_ipv6_udp_pay_l2_dst_only,
- mac_pppoe_ipv6_udp_pay_l2_src_only_l2_dst_only,
- mac_pppoe_ipv6_udp_pay_l3_src_only,
- mac_pppoe_ipv6_udp_pay_l3_dst_only,
- mac_pppoe_ipv6_udp_pay_l4_src_only,
- mac_pppoe_ipv6_udp_pay_l4_dst_only,
- mac_pppoe_ipv6_udp_pay_l3_src_only_l4_src_only,
- mac_pppoe_ipv6_udp_pay_l3_src_only_l4_dst_only,
- mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_src_only,
- mac_pppoe_ipv6_udp_pay_l3_dst_only_l4_dst_only,
- mac_pppoe_ipv6_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only,
- mac_pppoe_ipv6_udp_pay_ipv6
-
-]
-
-mac_pppoe_ipv6_pay = [
- mac_pppoe_ipv6_pay_l2_src_only,
- mac_pppoe_ipv6_pay_l2_dst_only,
- mac_pppoe_ipv6_pay_l2_src_only_l2_dst_only,
- mac_pppoe_ipv6_pay_l3_src_only,
- mac_pppoe_ipv6_pay_l3_dst_only,
- mac_pppoe_ipv6_pay_l3_src_only_l3_dst_only
-]
-
-mac_pppoe_ipv4_tcp_pay = [
- mac_pppoe_ipv4_tcp_pay_l2_src_only,
- mac_pppoe_ipv4_tcp_pay_l2_dst_only,
- mac_pppoe_ipv4_tcp_pay_l2_src_only_l2_dst_only,
- mac_pppoe_ipv4_tcp_pay_l3_src_only,
- mac_pppoe_ipv4_tcp_pay_l3_dst_only,
- mac_pppoe_ipv4_tcp_pay_l4_src_only,
- mac_pppoe_ipv4_tcp_pay_l4_dst_only,
- mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_src_only,
- mac_pppoe_ipv4_tcp_pay_l3_src_only_l4_dst_only,
- mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_src_only,
- mac_pppoe_ipv4_tcp_pay_l3_dst_only_l4_dst_only,
- mac_pppoe_ipv4_tcp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only,
- mac_pppoe_ipv4_tcp_pay_ipv4
-]
-
-mac_pppoe_ipv4_udp_pay = [
- mac_pppoe_ipv4_udp_pay_l2_src_only,
- mac_pppoe_ipv4_udp_pay_l2_dst_only,
- mac_pppoe_ipv4_udp_pay_l2_src_only_l2_dst_only,
- mac_pppoe_ipv4_udp_pay_l3_src_only,
- mac_pppoe_ipv4_udp_pay_l3_dst_only,
- mac_pppoe_ipv4_udp_pay_l4_src_only,
- mac_pppoe_ipv4_udp_pay_l4_dst_only,
- mac_pppoe_ipv4_udp_pay_l3_src_only_l4_src_only,
- mac_pppoe_ipv4_udp_pay_l3_src_only_l4_dst_only,
- mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_src_only,
- mac_pppoe_ipv4_udp_pay_l3_dst_only_l4_dst_only,
- mac_pppoe_ipv4_udp_pay_l3_src_only_l3_dst_only_l4_src_only_l4_dst_only,
- mac_pppoe_ipv4_udp_pay_ipv4,
- ]
-
-mac_pppoe_ipv4_pay_cases = [
- mac_pppoe_ipv4_pay_l2_src_only,
- mac_pppoe_ipv4_pay_l2_dst_only,
- mac_pppoe_ipv4_pay_l2_src_only_l2_dst_only,
- mac_pppoe_ipv4_pay_l3_src_only,
- mac_pppoe_ipv4_pay_l3_dst_only,
- mac_pppoe_ipv4_pay_l3_src_only_l3_dst_only
-]
-
-mac_pppoe_pay = [
- mac_pppoe_pay_l2_src_only,
- mac_pppoe_pay_l2_dst_only,
- mac_pppoe_pay_l2_src_only_l2_dst_only,
- mac_pppoe_pay_session_id,
- mac_pppoe_pay_l2_src_only_session_id
-]
-
-mac_pppoe_ipv6_tcp_pay_symmetric_packets = {
- 'match': {
- 'mac_pppoe_ipv6_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=23,dport=25)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/TCP(sport=23,dport=25)/Raw("x"*80)'
- ],
- },
- 'mismatch': {
- 'mac_pppoe_ipv4_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=23,dport=25)/Raw("x"*80)'
- ],
- 'mac_pppoe_ipv6_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=23,dport=25)/Raw("x"*80)',
- ],
- 'mac_pppoe_ipv6_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/Raw("x"*80)'
- ],
- 'mac_ipv6_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/TCP(sport=23,dport=25)/Raw("x"*80)'
- ]
- }
-
-}
-
-mac_pppoe_ipv6_tcp_pay_symmetric = {
- 'sub_casename': 'mac_pppoe_ipv6_tcp_pay_symmetric',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv6_tcp_pay'][1],
- 'action': {'check_hash_same': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv6_tcp_pay'][2],
- 'action': {'check_hash_same': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv6_tcp_pay'][3],
- 'action': {'check_hash_same': 'mac_pppoe_ipv6_tcp_pay'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_tcp_pay'][1:],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_udp_pay'][1:],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_pay'][1:],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_ipv6_tcp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['mismatch']['mac_ipv6_tcp_pay'][1:],
- 'action': {'check_hash_different': 'mac_ipv6_tcp_pay_mismatch'},
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay_match_post'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv6_tcp_pay'][3],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay_match_post'},
- },
- ],
-}
-
-mac_pppoe_ipv6_udp_pay_symmetric_packets = {
- 'match': {
- 'mac_pppoe_ipv6_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=23,dport=25)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=23,dport=25)/Raw("x"*80)'
- ]
- },
- 'mismatch': {
- 'mac_pppoe_ipv4_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=23,dport=25)/Raw("x"*80)'
- ],
- 'mac_pppoe_ipv6_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/TCP(sport=23,dport=25)/Raw("x"*80)',
- ],
- 'mac_pppoe_ipv6_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/Raw("x"*80)'
- ],
- 'mac_ipv6_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=23,dport=25)/Raw("x"*80)'
- ]
- }
-}
-
-mac_pppoe_ipv6_udp_pay_symmetric = {
- 'sub_casename': 'mac_pppoe_ipv6_udp_pay_symmetric',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / udp / end actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['match']['mac_pppoe_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['match']['mac_pppoe_ipv6_udp_pay'][1],
- 'action': {'check_hash_same': 'mac_pppoe_ipv6_udp_pay_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['match']['mac_pppoe_ipv6_udp_pay'][2],
- 'action': {'check_hash_same': 'mac_pppoe_ipv6_udp_pay_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['match']['mac_pppoe_ipv6_udp_pay'][3],
- 'action': {'check_hash_same': 'mac_pppoe_ipv6_udp_pay_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_udp_pay'][1:],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_tcp_pay'][1:],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_pay'][1:],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_ipv6_udp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['mismatch']['mac_ipv6_udp_pay'][1:],
- 'action': {'check_hash_different': 'mac_ipv6_udp_pay_mismatch'},
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['match']['mac_pppoe_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay_match_post'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_udp_pay_symmetric_packets['match']['mac_pppoe_ipv6_udp_pay'][1:],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay_match_post'},
- },
- ],
-}
-
-mac_pppoe_ipv6_pay_symmetric_packets = {
- 'match': {
- 'mac_pppoe_ipv6_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/Raw("x"*80)'
- ],
- 'mac_pppoe_ipv6_frag': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/IPv6ExtHdrFragment()/Raw("x"*80)'
- ]
- },
- 'mismatch': {
- 'mac_pppoe_ipv4_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
- ],
- 'mac_pppoe_ipv4_frag': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1", frag=5)/Raw("x"*80)'
- ],
- 'mac_ipv6_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/Raw("x"*80)'
- ],
- 'mac_ipv6_frag': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/IPv6ExtHdrFragment()/Raw("x"*80)'
- ]
- }
-}
-
-mac_pppoe_ipv6_pay_symmetric = {
- 'sub_casename': 'mac_pppoe_ipv6_pay_symmetric',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['match']['mac_pppoe_ipv6_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_pay_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['match']['mac_pppoe_ipv6_pay'][1:],
- 'action': {'check_hash_same': 'mac_pppoe_ipv6_pay_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['match']['mac_pppoe_ipv6_frag'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_frag_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['match']['mac_pppoe_ipv6_frag'][1:],
- 'action': {'check_hash_same': 'mac_pppoe_ipv6_frag_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_pay'][1:],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_frag'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_frag_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_frag'][1:],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_frag_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_ipv6_pay'][0],
- 'action': {'save_hash': 'mac_ipv6_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_ipv6_pay'][1:],
- 'action': {'check_hash_different': 'mac_ipv6_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_ipv6_frag'][0],
- 'action': {'save_hash': 'mac_ipv6_frag_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['mismatch']['mac_ipv6_frag'][1:],
- 'action': {'check_hash_different': 'mac_ipv6_frag_mismatch'},
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv6_pay_symmetric_packets['match']['mac_pppoe_ipv6_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_pay_symmetric_packets = {
- 'match': {
- 'mac_pppoe_ipv4_pay': [
- 'Ether(src="00:11:22:33:44:55",dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55",dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/Raw("x"*80)',
- ],
- 'mac_pppoe_ipv4_frag': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2", frag=5)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1", frag=5)/Raw("x"*80)',
- ]
- },
- 'mismatch': {
- 'mac_pppoe_ipv6_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/Raw("x"*80)'
- ],
- 'mac_pppoe_ipv6_frag': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/IPv6ExtHdrFragment()/Raw("x"*80)'
- ],
- 'mac_ipv4_pay': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.21",dst="192.168.0.20")/Raw("x"*80)'
- ],
- 'mac_ipv4_frag': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", frag=5)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.21",dst="192.168.0.20", frag=5)/Raw("x"*80)'
- ]
- }
-}
-
-mac_pppoe_ipv4_pay_symmetric = {
- 'sub_casename': 'mac_pppoe_ipv4_pay_symmetric',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['match']['mac_pppoe_ipv4_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_pay_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['match']['mac_pppoe_ipv4_pay'][1],
- 'action': {'check_hash_same': 'mac_pppoe_ipv4_pay_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['match']['mac_pppoe_ipv4_frag'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_frag_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['match']['mac_pppoe_ipv4_frag'][1],
- 'action': {'check_hash_same': 'mac_pppoe_ipv4_frag_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_pay'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_frag'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_frag_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_frag'][1],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_frag_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_ipv4_pay'][0],
- 'action': {'save_hash': 'mac_ipv4_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_ipv4_pay'][1],
- 'action': {'check_hash_different': 'mac_ipv4_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_ipv4_frag'][0],
- 'action': {'save_hash': 'mac_ipv4_frag_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_pay_symmetric_packets['mismatch']['mac_ipv4_frag'][1],
- 'action': {'check_hash_different': 'mac_ipv4_frag_mismatch'},
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in
- mac_pppoe_ipv4_pay_symmetric_packets['match']['mac_pppoe_ipv4_pay']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_pppoe_ipv4_udp_pay_symmetric_packets = {
- 'match': {
- 'mac_pppoe_ipv4_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=23,dport=25)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/UDP(sport=23,dport=25)/Raw("x"*80)'
- ],
- },
- 'mismatch': {
- 'mac_pppoe_ipv4_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/TCP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=23,dport=19)/Raw("x"*80)',
- ],
- 'mac_pppoe_ipv6_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=23,dport=25)/Raw("x"*80)',
-
- ],
- 'mac_pppoe_ipv4_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)'
- ],
- 'mac_ipv4_udp_pay': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.21",dst="192.168.0.20")/UDP(sport=23,dport=25)/Raw("x"*80)'
- ]
- }
-}
-
-mac_pppoe_ipv4_udp_pay_symmetric = {
- 'sub_casename': 'mac_pppoe_ipv4_udp_pay_symmetric',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['match']['mac_pppoe_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['match']['mac_pppoe_ipv4_udp_pay'][1],
- 'action': {'check_hash_same': 'mac_pppoe_ipv4_udp_pay_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['match']['mac_pppoe_ipv4_udp_pay'][2],
- 'action': {'check_hash_same': 'mac_pppoe_ipv4_udp_pay_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['match']['mac_pppoe_ipv4_udp_pay'][3],
- 'action': {'check_hash_same': 'mac_pppoe_ipv4_udp_pay_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_tcp_pay'][1:],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_tcp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_udp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_udp_pay'][1:],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_udp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_pay'][1:],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_ipv4_udp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['mismatch']['mac_ipv4_udp_pay'][1:],
- 'action': {'check_hash_different': 'mac_ipv4_udp_pay_mismatch'},
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['match']['mac_pppoe_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_ipv4_udp_pay_match_post'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_udp_pay_symmetric_packets['match']['mac_pppoe_ipv4_udp_pay'][1:],
- 'action': {'check_hash_different': 'mac_ipv4_udp_pay_match_post'},
- },
- ],
-}
-
-mac_pppoe_ipv4_tcp_pay_symmetric_packets = {
- 'match': {
- 'mac_pppoe_ipv4_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=23,dport=25)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/TCP(sport=23,dport=25)/Raw("x"*80)'
- ]
- },
- 'mismatch': {
- 'mac_pppoe_ipv4_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=23,dport=25)/Raw("x"*80)',
- ],
- 'mac_pppoe_ipv6_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/TCP(sport=23,dport=25)/Raw("x"*80)',
- ],
- 'mac_pppoe_ipv4_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)'
- ],
- 'mac_ipv4_tcp_pay': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.21",dst="192.168.0.20")/TCP(sport=23,dport=25)/Raw("x"*80)'
- ]
- }
-}
-
-mac_pppoe_ipv4_tcp_pay_symmetric = {
- 'sub_casename': 'mac_pppoe_ipv4_tcp_pay_symmetric',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv4_tcp_pay'][1],
- 'action': {'check_hash_same': 'mac_pppoe_ipv4_tcp_pay_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv4_tcp_pay'][2],
- 'action': {'check_hash_same': 'mac_pppoe_ipv4_tcp_pay_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv4_tcp_pay'][3],
- 'action': {'check_hash_same': 'mac_pppoe_ipv4_tcp_pay_match'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_udp_pay'][1:],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_udp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_tcp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv6_tcp_pay'][1:],
- 'action': {'check_hash_different': 'mac_pppoe_ipv6_tcp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_pppoe_ipv4_pay'][1:],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_ipv4_tcp_pay_mismatch'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['mismatch']['mac_ipv4_tcp_pay'][1:],
- 'action': {'check_hash_different': 'mac_ipv4_tcp_pay_mismatch'},
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay_match_post'},
- },
- {
- 'send_packet': mac_pppoe_ipv4_tcp_pay_symmetric_packets['match']['mac_pppoe_ipv4_tcp_pay'][3],
- 'action': {'check_hash_different', 'mac_pppoe_ipv4_tcp_pay_match_post'}
- },
- ],
-}
-
-simple_xor_packets = {
- 'match': {
- 'mac_pppoe_ipv4_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)'
- ],
- 'mac_pppoe_ipv4_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/UDP(sport=25,dport=23)/Raw("x"*80)'
- ],
- 'mac_pppoe_ipv4_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.2", dst="192.168.1.1")/TCP(sport=25,dport=23)/Raw("x"*80)'
- ],
- 'mac_pppoe_ipv6_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/Raw("x"*80)'
- ],
- 'mac_ipv6_udp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=25,dport=23)/Raw("x"*80)'
- ],
- 'mac_ipv6_tcp_pay': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2022", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/TCP(sport=25,dport=23)/Raw("x"*80)'
- ]
-
- }
-}
-
-simple_xor = {
- 'sub_casename': 'simple_xor',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern end actions rss func simple_xor key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_pay_match'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_pay'][1:],
- 'action': {'check_hash_same': 'mac_pppoe_ipv4_pay_match'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay_match'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_udp_pay'][1:],
- 'action': {'check_same': 'mac_pppoe_ipv4_udp_pay_match'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay_match'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_tcp_pay'][1:],
- 'action': {'check_same': 'mac_pppoe_ipv4_tcp_pay_match'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv6_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_pay_match'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv6_pay'][1:],
- 'action': {'check_same': 'mac_pppoe_ipv6_pay_match'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_ipv6_udp_pay_match'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_ipv6_udp_pay'][1:],
- 'action': {'check_same': 'mac_ipv6_udp_pay_match'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_ipv6_tcp_pay_match'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_ipv6_tcp_pay'][1:],
- 'action': {'check_same': 'mac_ipv6_tcp_pay_match'},
- },
-
- ],
- 'post-test': [
- {
- 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_pay_match_post'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_pay'][1:],
- 'action': {'check_hash_different': 'mac_pppoe_ipv4_pay_match_post'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_udp_pay_match_post'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_udp_pay'][1:],
- 'action': {'check_same': 'mac_pppoe_ipv4_udp_pay_match_post'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv4_tcp_pay_match_post'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv4_tcp_pay'][1:],
- 'action': {'check_same': 'mac_pppoe_ipv4_tcp_pay_match_post'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv6_pay'][0],
- 'action': {'save_hash': 'mac_pppoe_ipv6_pay_match_post'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_pppoe_ipv6_pay'][1:],
- 'action': {'check_same': 'mac_pppoe_ipv6_pay_match_post'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_ipv6_udp_pay_match_post'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_ipv6_udp_pay'][1:],
- 'action': {'check_same': 'mac_ipv6_udp_pay_match_post'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_ipv6_tcp_pay_match_post'},
- },
- {
- 'send_packet': simple_xor_packets['match']['mac_ipv6_tcp_pay'][1:],
- 'action': {'check_same': 'mac_ipv6_tcp_pay_match_post'},
- },
- ],
-}
-
-mac_vlan_ipv4_pay_packets = {
- 'match': {
- 'mac_vlan_ipv4_pay': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/Raw("x" * 80)',
- ],
- },
- 'mismatch': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'
- ]
-}
-
-mac_vlan_ipv4_pay = {
- 'sub_casename': 'mac_vlan_ipv4_pay',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / end actions rss types c-vlan end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'][0],
- 'action': {'save_hash': 'mac_vlan_ipv4_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'][1],
- 'action': {'check_hash_different': 'mac_vlan_ipv4_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'][2],
- 'action': {'check_hash_same': 'mac_vlan_ipv4_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_pay_packets['mismatch'][0],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_vlan_ipv4_udp_pay_packets = {
- 'match': {
- 'mac_vlan_ipv4_udp_pay': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/UDP(sport=19,dport=99)/Raw("x" * 80)',
- ]
- },
- 'mismatch': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'
- ]
-}
-
-mac_vlan_ipv4_udp_pay = {
- 'sub_casename': 'mac_vlan_ipv4_udp_pay',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / udp / end actions rss types c-vlan end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_vlan_ipv4_udp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_vlan_ipv4_udp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'][2],
- 'action': {'check_hash_same': 'mac_vlan_ipv4_udp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_udp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_vlan_ipv4_tcp_pay_packets = {
- 'match': {
- 'mac_vlan_ipv4_tcp_pay': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/TCP(sport=19,dport=99)/Raw("x" * 80)'
- ]
- },
- 'mismatch': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'
- ]
-}
-
-mac_vlan_ipv4_tcp_pay = {
- 'sub_casename': 'mac_vlan_ipv4_tcp_pay',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / tcp / end actions rss types c-vlan end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_vlan_ipv4_tcp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_vlan_ipv4_tcp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'][2],
- 'action': {'check_hash_same': 'mac_vlan_ipv4_tcp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_tcp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_vlan_ipv4_sctp_pay_packets = {
- 'match': {
- 'mac_vlan_ipv4_sctp_pay': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.5")/SCTP(sport=19,dport=99)/Raw("x" * 80)'
- ]
- },
- 'mismatch': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)'
-
- ]
-}
-
-mac_vlan_ipv4_sctp_pay = {
- 'sub_casename': 'mac_vlan_ipv4_sctp_pay',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / sctp / end actions rss types c-vlan end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'][0],
- 'action': {'save_hash': 'mac_vlan_ipv4_sctp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'][1],
- 'action': {'check_hash_different': 'mac_vlan_ipv4_sctp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'][2],
- 'action': {'check_hash_same': 'mac_vlan_ipv4_sctp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_sctp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_vlan_ipv6_pay_packets = {
- 'match': {
- 'mac_vlan_ipv6_pay': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("y" * 80)'
- ]
- },
- 'mismatch': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'
- ]
-}
-
-mac_vlan_ipv6_pay = {
- 'sub_casename': 'mac_vlan_ipv6_pay',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / end actions rss types c-vlan end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'][0],
- 'action': {'save_hash': 'mac_vlan_ipv6_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'][1],
- 'action': {'check_hash_different': 'mac_vlan_ipv6_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'][2],
- 'action': {'check_hash_same': 'mac_vlan_ipv6_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_vlan_ipv6_udp_pay_packets = {
- 'match': {
- 'mac_vlan_ipv6_udp_pay': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=99)/Raw("x" * 80)'
- ]
- },
- 'mismatch': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'
- ]
-}
-
-mac_vlan_ipv6_udp_pay = {
- 'sub_casename': 'mac_vlan_ipv6_udp_pay',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / udp / end actions rss types c-vlan end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_vlan_ipv6_udp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_vlan_ipv6_udp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'][2],
- 'action': {'check_hash_same': 'mac_vlan_ipv6_udp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_udp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_vlan_ipv6_tcp_pay_packets = {
- 'match': {
- 'mac_vlan_ipv6_tcp_pay': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=99)/Raw("x" * 80)'
- ]
- },
- 'mismatch': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'
- ]
-}
-
-mac_vlan_ipv6_tcp_pay = {
- 'sub_casename': 'mac_vlan_ipv6_tcp_pay',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / tcp / end actions rss types c-vlan end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_vlan_ipv6_tcp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_vlan_ipv6_tcp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'][2],
- 'action': {'check_hash_same': 'mac_vlan_ipv6_tcp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_tcp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_vlan_ipv6_sctp_pay_packets = {
- 'match': {
- 'mac_vlan_ipv6_sctp_pay': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/SCTP(sport=25,dport=99)/Raw("x" * 80)'
- ]
- },
- 'mismatch': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'
- ]
-}
-
-mac_vlan_ipv6_sctp_pay = {
- 'sub_casename': 'mac_vlan_ipv6_sctp_pay',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / sctp / end actions rss types c-vlan end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'][0],
- 'action': {'save_hash': 'mac_vlan_ipv6_sctp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'][1],
- 'action': {'check_hash_different': 'mac_vlan_ipv6_sctp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'][2],
- 'action': {'check_hash_same': 'mac_vlan_ipv6_sctp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_sctp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_vlan_pppoe_pay_l2_src_only_packets = [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=7)/Raw("x"*80)'
-]
-
-mac_vlan_pppoe_pay_l2_src_only = {
- 'sub_casename': 'mac_vlan_pppoe_pay_l2_src_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / pppoes / end actions rss types eth l2-src-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_pppoe_pay_l2_src_only_packets[0],
- 'action': {'save_hash': 'l2_src_only'},
- },
- {
- 'send_packet': mac_vlan_pppoe_pay_l2_src_only_packets[1],
- 'action': {'check_hash_different': 'l2_src_only'},
- },
- {
- 'send_packet': mac_vlan_pppoe_pay_l2_src_only_packets[2],
- 'action': {'check_hash_same': 'l2_src_only'},
- },
- {
- 'send_packet': mac_vlan_pppoe_pay_l2_src_only_packets[3],
- 'action': {'check_hash_same': 'l2_src_only'},
- },
- {
- 'send_packet': mac_vlan_pppoe_pay_l2_src_only_packets[4],
- 'action': {'check_hash_same': 'l2_src_only'},
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_pppoe_pay_l2_src_only_packets[1],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_vlan_pppoe_pay_l2_dst_only_packets = [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=7)/Raw("x"*80)'
-]
-
-mac_vlan_pppoe_pay_l2_dst_only = {
- 'sub_casename': 'mac_vlan_pppoe_pay_l2_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / pppoes / end actions rss types eth l2-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_pppoe_pay_l2_dst_only_packets[0],
- 'action': {'save_hash': 'l2_dst_only'},
- },
- {
- 'send_packet': mac_vlan_pppoe_pay_l2_dst_only_packets[1],
- 'action': {'check_hash_different': 'l2_dst_only'},
- },
- {
- 'send_packet': mac_vlan_pppoe_pay_l2_dst_only_packets[2],
- 'action': {'check_hash_same': 'l2_dst_only'},
- },
- {
- 'send_packet': mac_vlan_pppoe_pay_l2_dst_only_packets[3],
- 'action': {'check_hash_same': 'l2_dst_only'},
- },
- {
- 'send_packet': mac_vlan_pppoe_pay_l2_dst_only_packets[4],
- 'action': {'check_hash_same': 'l2_dst_only'},
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_pppoe_pay_l2_dst_only_packets[1],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets = [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:99")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=7)/Raw("x"*80)'
-]
-
-mac_vlan_pppoe_pay_l2_src_only_l2_dst_only = {
- 'sub_casename': 'mac_vlan_pppoe_pay_l2_src_only_l2_dst_only',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / pppoes / end actions rss types eth l2-src-only l2-dst-only end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[0],
- 'action': {'save_hash': 'l2_src_only_l2_dst_only'},
- },
- {
- 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[1],
- 'action': {'check_hash_different': 'l2_src_only_l2_dst_only'},
- },
- {
- 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[2],
- 'action': {'check_hash_same': 'l2_src_only_l2_dst_only'},
- },
- {
- 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[3],
- 'action': {'check_hash_same': 'l2_src_only_l2_dst_only'},
- },
- {
- 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[4],
- 'action': {'check_hash_same': 'l2_src_only_l2_dst_only'},
- },
- {
- 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[5],
- 'action': {'check_hash_same': 'l2_src_only_l2_dst_only'},
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_pppoe_pay_l2_src_only_l2_dst_only_packets[1],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_vlan_pppoe_pay_c_vlan_packets = [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=7)/Raw("x" * 80)'
-]
-
-mac_vlan_pppoe_pay_c_vlan = {
- 'sub_casename': 'mac_vlan_pppoe_pay_c_vlan',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / pppoes / end actions rss types c-vlan end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_pppoe_pay_c_vlan_packets[0],
- 'action': {'save_hash': 'c_vlan'},
- },
- {
- 'send_packet': mac_vlan_pppoe_pay_c_vlan_packets[1],
- 'action': {'check_hash_different': 'c_vlan'},
- },
- {
- 'send_packet': mac_vlan_pppoe_pay_c_vlan_packets[2],
- 'action': {'check_hash_same': 'c_vlan'},
- },
- {
- 'send_packet': mac_vlan_pppoe_pay_c_vlan_packets[3],
- 'action': {'check_hash_same': 'c_vlan'},
- },
- {
- 'send_packet': mac_vlan_pppoe_pay_c_vlan_packets[4],
- 'action': {'check_hash_same': 'c_vlan'},
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_pppoe_pay_c_vlan_packets[1],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_vlan_pppoe_pay = [
- mac_vlan_pppoe_pay_l2_src_only,
- mac_vlan_pppoe_pay_l2_dst_only,
- mac_vlan_pppoe_pay_l2_src_only_l2_dst_only,
- mac_vlan_pppoe_pay_c_vlan
-]
-
-
-class Advanced_rss_pppoe_vlan_ah_l2tp_pfcp(TestCase):
-
- def set_up_all(self):
- """
- Run at the start of each test suite.
- Generic filter Prerequistites
- """
-
- # Based on h/w type, choose how many ports to use
- self.dut_ports = self.dut.get_ports(self.nic)
- self.verify(len(self.dut_ports) >= 2, "Insufficient ports for testing")
- # Verify that enough threads are available
- cores = self.dut.get_core_list("1S/4C/1T")
- self.verify(cores is not None, "Insufficient cores for speed testing")
- self.ports_socket = self.dut.get_numa_id(self.dut_ports[0])
- self.tester_port0 = self.tester.get_local_port(self.dut_ports[0])
- self.tester_port1 = self.tester.get_local_port(self.dut_ports[1])
- self.tester_iface0 = self.tester.get_interface(self.tester_port0)
- self.tester_iface1 = self.tester.get_interface(self.tester_port1)
- self.pci_list = []
- for port in self.dut.ports_info:
- self.pci_list.append(port['pci'])
- self.pkt = Packet()
- self.pmd_output = PmdOutput(self.dut)
- self.ddp_dir = "/lib/firmware/updates/intel/ice/ddp/"
- conf_file = 'conf/cvl_advanced_rss_pppoe.cfg'
- conf_info = UserConf(conf_file)
- conf_section = conf_info.conf._sections['suite']
- self.os_default_package = conf_section['os_default_package_file_location']
- self.comms_package = conf_section['comms_package_file_location']
- self.symmetric = False
- self.rxq = 64
- self.rsspro = RssProcessing(self, self.pmd_output, [self.tester_iface0, self.tester_iface1], self.rxq)
- self.logger.info('rssprocess.tester_ifaces: {}'.format(self.rsspro.tester_ifaces))
- self.logger.info('rssprocess.test_case: {}'.format(self.rsspro.test_case))
-
- def set_up(self):
- """
- Run before each test case.
- """
- pass
-
- def tear_down(self):
- """
- Run after each test case.
- """
- # destroy all flow rule on port 0
- self.dut.send_command("flow flush 0", timeout=1)
- self.dut.send_command("clear port stats all", timeout=1)
- self.pmd_output.execute_cmd("stop")
- self.dut.kill_all()
-
- def tear_down_all(self):
- """
- Run after each test suite.
- """
- self.dut.kill_all()
-
- def replace_package(self, package='comms'):
- ice_pkg_path = ''.join([self.ddp_dir,"ice.pkg"])
- self.dut.send_expect("rm -f {}".format(ice_pkg_path), "# ")
- if package == 'os_default':
- self.dut.send_expect("cp {} {}".format(self.os_default_package,ice_pkg_path), "# ")
- elif package == 'comms':
- self.dut.send_expect("cp {} {}".format(self.comms_package,ice_pkg_path), "# ")
- for pci in self.pci_list:
- self.dut.send_expect("echo {0} > /sys/bus/pci/devices/{0}/driver/unbind".format(pci), "# ", 60)
- self.dut.send_expect("echo {} > /sys/bus/pci/drivers/ice/bind".format(pci), "# ", 60)
- pci_str = ' '.join(self.pci_list)
- self.dut.send_expect("./usertools/dpdk-devbind.py --force --bind=vfio-pci {}".format(pci_str), "# ", 60)
-
- def launch_testpmd(self, symmetric=False, package='comms'):
- if symmetric:
- param = "--rxq=64 --txq=64"
- else:
- param = "--rxq=64 --txq=64 --disable-rss --rxd=384 --txd=384"
- out = self.pmd_output.start_testpmd(cores="1S/4C/1T", param=param,
- eal_param=f"-w {self.pci_list[0]}", socket=self.ports_socket)
- self.symmetric = symmetric
- package_version = re.search('Active\spackage\sis:\s(.+),', out).group(1)
- self.logger.info('DDP package version: %s' % package_version)
- if package == 'comms':
- self.verify(package_version in self.comms_package.split('/')[-1],
- 'package version not match')
- elif package == 'os_default':
- self.verify(package_version in self.os_default_package.split('/')[-1],
- 'package version not match')
- if symmetric:
- # Need config rss in setup
- self.pmd_output.execute_cmd("port config all rss all")
- self.pmd_output.execute_cmd("set fwd rxonly")
- self.pmd_output.execute_cmd("set verbose 1")
- res = self.pmd_output.wait_link_status_up('all', timeout=15)
- self.verify(res is True, 'there have port link is down')
- return package_version
-
- def switch_testpmd(self, symmetric=True, pkg='comms'):
- self.dut.kill_all()
- self.launch_testpmd(symmetric, pkg)
- self.pmd_output.execute_cmd("start")
-
- def _gener_str(self, str_len=6):
- return ''.join(random.sample(string.ascii_letters + string.digits, k=str_len))
-
- def test_mac_ipv4_pfcp_session(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_pfcp_session)
-
- def test_mac_ipv6_pfcp_session(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_pfcp_session)
-
- def test_mac_ipv4_l2tpv3(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_l2tpv3)
-
- def test_mac_ipv6_l2tpv3(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_l2tpv3)
-
- def test_mac_ipv4_esp(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_esp)
-
- def test_mac_ipv4_udp_esp(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_udp_esp)
-
- def test_mac_ipv6_esp(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_esp)
-
- def test_mac_ipv6_udp_esp(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_udp_esp)
-
- def test_mac_ipv4_ah(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_ah)
-
- def test_mac_ipv6_ah(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_ah)
-
- def test_mac_pppoe_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_pay)
-
- def test_mac_pppoe_ipv4_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv4_pay_cases)
-
- def test_mac_pppoe_ipv4_udp_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv4_udp_pay)
-
- def test_mac_pppoe_ipv4_tcp_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv4_tcp_pay)
-
- def test_mac_pppoe_ipv6_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv6_pay)
-
- def test_mac_pppoe_ipv6_udp_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv6_udp_pay)
-
- def test_mac_pppoe_ipv6_tcp_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv6_tcp_pay)
-
- def test_mac_pppoe_ipv4_pay_symmetric(self):
- self.switch_testpmd(symmetric=True)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv4_pay_symmetric)
-
- def test_mac_pppoe_ipv4_udp_pay_symmetric(self):
- self.switch_testpmd(symmetric=True)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv4_udp_pay_symmetric)
-
- def test_mac_pppoe_ipv4_tcp_pay_symmetric(self):
- self.switch_testpmd(symmetric=True)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv4_tcp_pay_symmetric)
-
- def test_mac_pppoe_ipv6_pay_symmetric(self):
- self.switch_testpmd(symmetric=True)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv6_pay_symmetric)
-
- def test_mac_pppoe_ipv6_udp_pay_symmetric(self):
- self.switch_testpmd(symmetric=True)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv6_udp_pay_symmetric)
-
- def test_mac_pppoe_ipv6_tcp_pay_symmetric(self):
- self.switch_testpmd(symmetric=True)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv6_tcp_pay_symmetric)
-
- def test_simple_xor(self):
- self.switch_testpmd(symmetric=True)
- self.rsspro.handle_rss_distribute_cases(cases_info=simple_xor)
-
- def test_multirules_two_rules_not_hit_default_profile(self):
- """
- Subcase 1: two rules with same pattern but different hash input set, not hit default profile
- :return:
- """
- self.rsspro.error_msgs = []
- self.switch_testpmd(symmetric=True)
- rule0 = 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end'
- self.rsspro.create_rule(rule0)
- self.rsspro.check_rule(0)
- pkts_list1 = [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)']
- out = self.rsspro.send_pkt_get_output(pkts_list1[0])
- pkt1_first_key = 'l3_src'
- self.rsspro.save_hash(out, pkt1_first_key)
- res = self.rsspro.send_pkt_get_output(pkts_list1[1])
- self.rsspro.check_hash_different(res, pkt1_first_key)
-
- rule1 = 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end'
- self.rsspro.create_rule(rule1)
- pkts_list2 = [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- ]
- self._send_pkt_action(pkts_list2)
-
- pkts_list3 = [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)']
-
- for i in range(1, 3):
- self.rsspro.destroy_rule(rule_id=i % 2)
- self.rsspro.check_rule(rule_list='rule{}'.format(i % 2), stats=False)
- pkt_base = 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)'
- res3 = self.rsspro.send_pkt_get_output(pkt_base)
- pkt3_key = 'hash_record_{}'.format(i % 2)
- self.rsspro.save_hash(res3, pkt3_key)
- for each_rule in pkts_list3:
- result = self.rsspro.send_pkt_get_output(each_rule)
- self.rsspro.check_hash_different(result, pkt3_key)
- self.verify(not self.rsspro.error_msgs, 'some subcases failed')
-
- def test_multirules_two_rules_hit_default_profile(self):
- """
- # Subcase 2: two rules with same pattern but different hash input set, hit default profile
- :return:
- """
- self.rsspro.error_msgs = []
- self.switch_testpmd(symmetric=True)
- rule_list = [
- 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end',
- 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end'
-
- ]
- pkt_list = [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.5")/Raw("x"*80)',
- ]
- self._two_rules_operation(rule_list, pkt_list,action_list1=['check_no_hash' for _ in range(0,len(pkt_list))],action_list2=['check_no_hash'])
- self.verify(not self.rsspro.error_msgs, 'some subcases failed')
-
- def _send_pkt_action(self, pkt_list, action_list=None):
- if action_list is None:
- action_list = ['save_hash', 'check_hash_different', 'check_hash_same']
- hash_key = self._gener_str()
- for i in range(0, len(pkt_list)):
- out = self.rsspro.send_pkt_get_output(pkt_list[i])
- func = getattr(self.rsspro, action_list[i])
- func(out, hash_key)
-
- def _two_rules_operation(self, rule_list, pkt_list, action_list1=None, action_list2=None):
- for i in range(0, len(rule_list)):
- self.rsspro.create_rule(rule_list[i])
- self.rsspro.check_rule(rule_list=['{}'.format(i)])
- if i == 1:
- pkt_list[1], pkt_list[2] = pkt_list[2], pkt_list[1]
- self._send_pkt_action(pkt_list)
- else:
- self._send_pkt_action(pkt_list)
- # destory rule 1
- self.rsspro.destroy_rule(rule_id=1)
- self.rsspro.check_rule(rule_list=['1'], stats=False)
- pkt_list[1], pkt_list[2] = pkt_list[2], pkt_list[1]
- self._send_pkt_action(pkt_list, action_list=action_list1)
- # destory rule 0
- self.rsspro.destroy_rule(rule_id=0)
- self.rsspro.check_rule(rule_list=['0'], stats=False)
- self._send_pkt_action([pkt_list[0]], action_list=action_list2)
-
- def test_two_rules_smaller_first_larger_later(self, ):
- """
- two rules, scope smaller created first, and the larger one created later
- """
- self.rsspro.error_msgs = []
- self.switch_testpmd(symmetric=True)
- rule_list = [
- 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end',
- 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end'
- ]
- pkt_list = [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/UDP(sport=25,dport=99)/Raw("x"*80)',
- ]
- self._two_rules_operation(rule_list, pkt_list, action_list2=['check_no_hash'])
- self.verify(not self.rsspro.error_msgs, 'some subcases failed')
-
- def test_two_rules_larger_first_smaller_later(self):
- """
- Subcase 4: two rules, scope larger created first, and the smaller one created later
- """
- self.rsspro.error_msgs = []
- self.switch_testpmd(symmetric=True)
- rule_list = [
- 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end',
- 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end'
- ]
- pkt_list = [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:99")/PPPoE(sessionid=7)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.5")/UDP(sport=25,dport=99)/Raw("x"*80)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=19,dport=23)/Raw("x"*80)',
- ]
- self._two_rules_operation(rule_list, pkt_list, action_list2=['check_no_hash'])
-
- def test_wrong_hash_input_set(self):
- self.switch_testpmd(symmetric=True)
- rule_list = [
- 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types l2-src-only l2-dst-only end key_len 0 queues end / end',
- 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end',
- 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp l3-src-only end key_len 0 queues end / end']
-
- for rule in rule_list:
- self.rsspro.validate_rule(rule, check_stats=False, check_msg='Invalid argument')
- self.rsspro.create_rule(rule, check_stats=False, msg='Invalid argument')
-
- def test_void_action(self):
- self.switch_testpmd(symmetric=True)
- rule = 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions end'
- self.rsspro.validate_rule(rule, check_stats=False, check_msg='Invalid argument')
- self.rsspro.create_rule(rule, check_stats=False, msg='Invalid argument')
- self.rsspro.check_rule(stats=False, rule_list=[rule])
-
- def test_delete_nonexisting_rule(self):
- self.switch_testpmd(symmetric=True)
- self.rsspro.check_rule(stats=False)
- out = self.dut.send_command("flow destroy 0 rule 0", timeout=1)
- self.verify('error' not in out, 'delete nonexisting rule raise err,expected no err')
- self.dut.send_command("flow flush 0", timeout=1)
-
- def test_unsupported_pattern_with_OS_default_package(self):
- self.replace_package('os_default')
- self.switch_testpmd(symmetric=True, pkg='os_default')
- rule_list = [
- 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end',
- 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end',
- 'flow create 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end',
- 'flow create 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end'
- ]
- self.rsspro.validate_rule(rule_list, check_stats=False, check_msg='Invalid argument')
- self.rsspro.create_rule(rule_list, check_stats=False, msg='Invalid argument')
- self.rsspro.check_rule(stats=False)
- self.dut.kill_all()
- self.replace_package('comms')
- self.launch_testpmd()
-
- def test_invalid_port(self):
- self.switch_testpmd(symmetric=True)
- rule = 'flow create 1 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end'
- self.rsspro.create_rule(rule, check_stats=False, msg='No such device')
- self.rsspro.check_rule(stats=False, rule_list=[rule])
- pattern = 'Invalid port 1'
- out = self.dut.send_command("flow list 1", timeout=1)
- result = re.search(r'%s' % pattern, out)
- self.verify(result, 'actual result not match expected,expected result is:{}'.format(pattern))
-
- def test_mac_vlan_ipv4_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_pay)
-
- def test_mac_vlan_ipv4_udp_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_udp_pay)
-
- def test_mac_vlan_ipv4_tcp_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_tcp_pay)
-
- def test_mac_vlan_ipv4_sctp_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_sctp_pay)
-
- def test_mac_vlan_ipv6_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_pay)
-
- def test_mac_vlan_ipv6_udp_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_udp_pay)
-
- def test_mac_vlan_ipv6_tcp_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_tcp_pay)
-
- def test_mac_vlan_ipv6_sctp_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_sctp_pay)
-
- def test_mac_vlan_pppoe_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_pppoe_pay)
--
1.8.3.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [dts] [PATCH V1 2/8] add decorator to support nic and pkg check
2021-03-18 5:27 [dts] [PATCH V1 0/8] modified suite to support pkg check Zhimin Huang
2021-03-18 5:27 ` [dts] [PATCH V1 1/8] tests/cvl_advanced_rss_pppoe:rename pppoe suite Zhimin Huang
@ 2021-03-18 5:27 ` Zhimin Huang
2021-03-18 5:27 ` [dts] [PATCH V1 3/8] tests/cvl_advanced_rss_pppoe:support " Zhimin Huang
` (6 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Zhimin Huang @ 2021-03-18 5:27 UTC (permalink / raw)
To: dts; +Cc: Zhimin Huang
*.remove replace pkg step and add pkg check
Signed-off-by: Zhimin Huang <zhiminx.huang@intel.com>
---
| 82 ++++++++--------------
tests/TestSuite_cvl_fdir.py | 8 ++-
tests/TestSuite_iavf_fdir.py | 53 +++++++-------
tests/TestSuite_l2tp_esp_coverage.py | 50 ++++++-------
4 files changed, 85 insertions(+), 108 deletions(-)
--git a/tests/TestSuite_cvl_advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp.py b/tests/TestSuite_cvl_advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp.py
index a54dcf5..f7236ee 100644
--- a/tests/TestSuite_cvl_advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp.py
+++ b/tests/TestSuite_cvl_advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp.py
@@ -32,7 +32,7 @@ import re
import random
import string
import time
-from test_case import TestCase
+from test_case import TestCase, skip_unsupported_pkg, check_supported_nic
from pmd_output import PmdOutput
from packet import Packet
from rte_flow_common import RssProcessing
@@ -831,28 +831,32 @@ class Cvl_advance_iavf_rss_vlan_ah_l2tp_pfcp(TestCase):
self.pkt = Packet()
self.pmd_output = PmdOutput(self.dut)
- self.ddp_dir = "/lib/firmware/updates/intel/ice/ddp/"
- conf_file = 'conf/cvl_advanced_rss_pppoe.cfg'
- conf_info = UserConf(conf_file)
- conf_section = conf_info.conf._sections['suite']
- self.os_default_package = conf_section['os_default_package_file_location']
- self.comms_package = conf_section['comms_package_file_location']
- self.ice_driver = conf_section['ice_driver_file_location']
self.symmetric = False
self.rxq = 16
self.rsspro = RssProcessing(self, self.pmd_output, [self.tester_iface0, self.tester_iface1], self.rxq)
self.logger.info('rssprocess.tester_ifaces: {}'.format(self.rsspro.tester_ifaces))
self.logger.info('rssprocess.test_case: {}'.format(self.rsspro.test_case))
+ self.switch_testpmd(symmetric=self.symmetric)
+ self.dut_session = self.dut.new_session()
def set_up(self):
"""
Run before each test case.
"""
- pass
+ # check testpmd process status
+ cmd = "ps -aux | grep testpmd | grep -v grep"
+ out = self.dut_session.send_expect(cmd, "#", 15)
+ if "testpmd" not in out:
+ self.switch_testpmd(symmetric=False)
+
+ if self.running_case == "test_unsupported_pattern_with_OS_default_package":
+ self.dut.kill_all()
+ self.switch_testpmd(symmetric=True)
def create_iavf(self):
if self.vf_flag is False:
self.dut.bind_interfaces_linux('ice')
+ self.dut.send_expect("ethtool --set-priv-flags %s vf-vlan-prune-disable on" % self.pf_interface, "# ")
self.dut.generate_sriov_vfs_by_port(self.used_dut_port, 1)
self.sriov_vfs_port = self.dut.ports_info[self.used_dut_port]['vfs_port']
self.vf_flag = True
@@ -876,10 +880,10 @@ class Cvl_advance_iavf_rss_vlan_ah_l2tp_pfcp(TestCase):
Run after each test case.
"""
# destroy all flow rule on port 0
- self.dut.send_command("flow flush 0", timeout=1)
- self.dut.send_command("clear port stats all", timeout=1)
+ self.pmd_output.execute_cmd("flow flush 0", timeout=1)
+ self.pmd_output.execute_cmd("clear port stats all", timeout=1)
self.pmd_output.execute_cmd("stop")
- self.dut.kill_all()
+ self.pmd_output.execute_cmd("start")
def tear_down_all(self):
"""
@@ -887,16 +891,7 @@ class Cvl_advance_iavf_rss_vlan_ah_l2tp_pfcp(TestCase):
"""
self.dut.kill_all()
self.destroy_iavf()
-
- def replace_package(self, package='comms'):
- ice_pkg_path = ''.join([self.ddp_dir,"ice.pkg"])
- self.dut.send_expect("rm -f {}".format(ice_pkg_path), "# ")
- if package == 'os_default':
- self.dut.send_expect("cp {} {}".format(self.os_default_package,ice_pkg_path), "# ")
- elif package == 'comms':
- self.dut.send_expect("cp {} {}".format(self.comms_package,ice_pkg_path), "# ")
- self.dut.send_expect("rmmod ice", "# ", 15)
- self.dut.send_expect("insmod {}".format(self.ice_driver), "# ",)
+ self.dut.send_expect("ethtool --set-priv-flags %s vf-vlan-prune-disable off" % self.pf_interface, "# ")
def launch_testpmd(self, symmetric=False):
param = "--rxq=16 --txq=16"
@@ -919,48 +914,47 @@ class Cvl_advance_iavf_rss_vlan_ah_l2tp_pfcp(TestCase):
def _gener_str(self, str_len=6):
return ''.join(random.sample(string.ascii_letters + string.digits, k=str_len))
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_mac_ipv4_pfcp_session(self):
- self.switch_testpmd(symmetric=False)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_pfcp_session)
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_mac_ipv6_pfcp_session(self):
- self.switch_testpmd(symmetric=False)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_pfcp_session)
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_mac_ipv4_l2tpv3(self):
- self.switch_testpmd(symmetric=False)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_l2tpv3)
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_mac_ipv6_l2tpv3(self):
- self.switch_testpmd(symmetric=False)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_l2tpv3)
+ @skip_unsupported_pkg("os default")
def test_mac_ipv4_esp(self):
- self.switch_testpmd(symmetric=False)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_esp)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv4_udp_esp(self):
- self.switch_testpmd(symmetric=False)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_udp_esp)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv6_esp(self):
- self.switch_testpmd(symmetric=False)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_esp)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv6_udp_esp(self):
- self.switch_testpmd(symmetric=False)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_udp_esp)
+ @skip_unsupported_pkg("os default")
def test_mac_ipv4_ah(self):
- self.switch_testpmd()
self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_ah)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv6_ah(self):
- self.switch_testpmd(symmetric=False)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_ah)
def test_wrong_hash_input_set(self):
- self.switch_testpmd(symmetric=False)
rule_list = [
'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types l2-src-only l2-dst-only end key_len 0 queues end / end',
'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end',
@@ -971,23 +965,18 @@ class Cvl_advance_iavf_rss_vlan_ah_l2tp_pfcp(TestCase):
self.rsspro.create_rule(rule, check_stats=False, msg='Invalid argument')
def test_void_action(self):
- self.switch_testpmd(symmetric=False)
rule = 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions end'
self.rsspro.create_rule(rule, check_stats=False, msg='Invalid argument')
self.rsspro.check_rule(stats=False, rule_list=[rule])
def test_delete_nonexisting_rule(self):
- self.switch_testpmd(symmetric=False)
self.rsspro.check_rule(stats=False)
out = self.dut.send_command("flow destroy 0 rule 0", timeout=1)
self.verify('error' not in out, 'delete nonexisting rule raise err,expected no err')
self.dut.send_command("flow flush 0", timeout=1)
+ @skip_unsupported_pkg(['comms', 'wireless'])
def test_unsupported_pattern_with_OS_default_package(self):
- self.destroy_iavf()
- self.replace_package('os_default')
- self.create_iavf()
- self.switch_testpmd(symmetric=True)
rule_list = [
'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end',
'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end',
@@ -997,14 +986,9 @@ class Cvl_advance_iavf_rss_vlan_ah_l2tp_pfcp(TestCase):
self.rsspro.create_rule(rule_list, check_stats=False, msg='Invalid argument')
self.rsspro.check_rule(stats=False)
self.dut.kill_all()
- self.destroy_iavf()
- self.replace_package('comms')
- self.create_iavf()
- self.switch_testpmd(symmetric=True)
- self.rsspro.create_rule(rule_list, check_stats=True)
+ self.switch_testpmd(symmetric=False)
def test_invalid_port(self):
- self.switch_testpmd(symmetric=False)
rule = 'flow create 1 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end'
self.rsspro.create_rule(rule, check_stats=False, msg='No such device')
self.rsspro.check_rule(stats=False, rule_list=[rule])
@@ -1014,33 +998,25 @@ class Cvl_advance_iavf_rss_vlan_ah_l2tp_pfcp(TestCase):
self.verify(result, 'actual result not match expected,expected result is:{}'.format(pattern))
def test_mac_vlan_ipv4_pay(self):
- self.switch_testpmd(symmetric=False)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_pay)
def test_mac_vlan_ipv4_udp_pay(self):
- self.switch_testpmd(symmetric=False)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_udp_pay)
def test_mac_vlan_ipv4_tcp_pay(self):
- self.switch_testpmd(symmetric=False)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_tcp_pay)
def test_mac_vlan_ipv4_sctp_pay(self):
- self.switch_testpmd(symmetric=False)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_sctp_pay)
def test_mac_vlan_ipv6_pay(self):
- self.switch_testpmd(symmetric=False)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_pay)
def test_mac_vlan_ipv6_udp_pay(self):
- self.switch_testpmd(symmetric=False)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_udp_pay)
def test_mac_vlan_ipv6_tcp_pay(self):
- self.switch_testpmd(symmetric=False)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_tcp_pay)
def test_mac_vlan_ipv6_sctp_pay(self):
- self.switch_testpmd(symmetric=False)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_sctp_pay)
diff --git a/tests/TestSuite_cvl_fdir.py b/tests/TestSuite_cvl_fdir.py
index 549256b..1d41944 100644
--- a/tests/TestSuite_cvl_fdir.py
+++ b/tests/TestSuite_cvl_fdir.py
@@ -37,7 +37,7 @@ import os
from packet import Packet
from pmd_output import PmdOutput
-from test_case import TestCase
+from test_case import TestCase, skip_unsupported_pkg
import rte_flow_common as rfc
from utils import GREEN, RED
@@ -2825,6 +2825,7 @@ class TestCVLFdir(TestCase):
out = self.pmd_output.execute_cmd("flow query 0 0 count")
self.verify("Flow rule #0 not found" in out, "query should failed")
+ @skip_unsupported_pkg('os default')
def test_multi_patterns_mark_count_query(self):
rule1 = 'flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 1 / mark id 0 / count / end'
rule2 = 'flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop / mark id 1 / count / end'
@@ -2943,6 +2944,7 @@ class TestCVLFdir(TestCase):
out2 = self.send_pkts_getouput(pkts=pkt, port_id=1)
rfc.check_mark(out2, pkt_num=1, check_param={"port_id": 1, "queue": [2, 3], "rss": True}, stats=False)
+ @skip_unsupported_pkg('os default')
def test_two_ports_multi_patterns_count_query(self):
rules = [
'flow create 1 ingress pattern eth / ipv4 dst is 192.168.0.21 proto is 255 tos is 4 / end actions queue index 1 / mark id 1 / count identifier 0x1234 shared on / end',
@@ -3161,15 +3163,19 @@ class TestCVLFdir(TestCase):
def test_mac_ipv4_tun_mac_ipv4_sctp(self):
self._rte_flow_validate(vectors_mac_ipv4_tun_mac_ipv4_sctp)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv4_gtpu_eh(self):
self._rte_flow_validate(vectors_mac_ipv4_gtpu_eh)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv4_gtpu(self):
self._rte_flow_validate(vectors_mac_ipv4_gtpu)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv6_gtpu_eh(self):
self._rte_flow_validate(vectors_mac_ipv6_gtpu_eh)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv6_gtpu(self):
self._rte_flow_validate(vectors_mac_ipv6_gtpu)
diff --git a/tests/TestSuite_iavf_fdir.py b/tests/TestSuite_iavf_fdir.py
index e83855d..a404814 100644
--- a/tests/TestSuite_iavf_fdir.py
+++ b/tests/TestSuite_iavf_fdir.py
@@ -35,7 +35,7 @@ import time
from packet import Packet
from pmd_output import PmdOutput
-from test_case import TestCase
+from test_case import TestCase, skip_unsupported_pkg
import rte_flow_common as rfc
from rte_flow_common import CVL_TXQ_RXQ_NUMBER
from multiprocessing import Process
@@ -2234,8 +2234,6 @@ class TestIAVFFdir(TestCase):
"""
Run before each test case.
"""
- self.re_load_ice_driver()
- time.sleep(1)
self.setup_2pf_4vf_env()
time.sleep(1)
self.launch_testpmd()
@@ -2308,16 +2306,6 @@ class TestIAVFFdir(TestCase):
self.dut.destroy_sriov_vfs_by_port(self.dut_ports[0])
self.dut.destroy_sriov_vfs_by_port(self.dut_ports[1])
- def re_load_ice_driver(self):
- """
- remove and reload the ice driver
- """
- self.dut.send_expect("rmmod ice", "# ", 40)
- ice_driver_file_location = self.suite_config["ice_driver_file_location"]
- self.dut.send_expect("insmod %s" % ice_driver_file_location, "# ")
- self.dut.send_expect("ifconfig %s up" % self.pf0_intf, "# ", 15)
- self.dut.send_expect("ifconfig %s up" % self.pf1_intf, "# ", 15)
-
def config_testpmd(self):
self.pmd_output.execute_cmd("set fwd rxonly")
self.pmd_output.execute_cmd("set verbose 1")
@@ -2474,39 +2462,51 @@ class TestIAVFFdir(TestCase):
def test_mac_ipv6_sctp(self):
self.rte_flow_process(vectors_ipv6_sctp)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv4_gtpu_eh(self):
self.rte_flow_process(vectors_ipv4_gtpu_eh)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv4_gtpu(self):
self.rte_flow_process(vectors_ipv4_gtpu)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv6_gtpu_eh(self):
self.rte_flow_process(vectors_ipv6_gtpu_eh)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv6_gtpu(self):
self.rte_flow_process(vectors_ipv6_gtpu)
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_mac_ipv4_l2tpv3(self):
self.rte_flow_process(vectors_ipv4_l2tpv3)
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_mac_ipv6_l2tpv3(self):
self.rte_flow_process(vectors_ipv6_l2tpv3)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv4_esp(self):
self.rte_flow_process(vectors_ipv4_esp)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv6_esp(self):
self.rte_flow_process(vectors_ipv6_esp)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv4_ah(self):
self.rte_flow_process(vectors_ipv4_ah)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv6_ah(self):
self.rte_flow_process(vectors_ipv6_ah)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv4_nat_t_esp(self):
self.rte_flow_process(vectors_ipv4_nat_t_esp)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv6_nat_t_esp(self):
self.rte_flow_process(vectors_ipv6_nat_t_esp)
@@ -2586,6 +2586,7 @@ class TestIAVFFdir(TestCase):
out4 = self.send_pkts_getouput(MAC_IPV6_PAY_protocol["match"])
rfc.check_iavf_fdir_mark(out4, pkt_num=6, check_param={"port_id": 0, "passthru": 1}, stats=False)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv4_gtpu_eh_without_teid(self):
rules = ["flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end", \
"flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc qfi is 0x34 / end actions queue index 1 / mark id 3 / end"]
@@ -2621,6 +2622,7 @@ class TestIAVFFdir(TestCase):
out3 = self.send_pkts_getouput(MAC_IPV4_GTPU_EH_WITHOUT_TEID["match"])
rfc.check_iavf_fdir_mark(out3, pkt_num=1, check_param={"port_id": 0, "passthru": 1}, stats=False)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv4_gtpu_eh_without_qfi(self):
rules = ["flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end", \
"flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc / end actions rss queues 2 3 end / mark id 1 / end"]
@@ -2702,6 +2704,7 @@ class TestIAVFFdir(TestCase):
out7 = self.send_pkts_getouput(pkts["mismatch"][7])
rfc.check_iavf_fdir_mark(out7, pkt_num=1, check_param={"port_id": 0, "drop": True}, stats=False)
+ @skip_unsupported_pkg('os default')
def test_mac_outer_co_exist_gtpu_eh_dst(self):
rules = ["flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.31 / udp / gtpu / gtp_psc / end actions rss queues 1 2 end / mark id 1 / end", \
"flow create 0 ingress pattern eth / ipv6 dst is ::32 / udp / gtpu / gtp_psc / end actions rss queues 3 4 5 6 end / mark id 2 / end",\
@@ -2733,6 +2736,7 @@ class TestIAVFFdir(TestCase):
}
self.run_coexist_outer_gtpu(rules, MAC_GTPU_EH)
+ @skip_unsupported_pkg('os default')
def test_mac_outer_co_exist_gtpu_dst(self):
rules = ["flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.31 / udp / gtpu / end actions rss queues 1 2 end / mark id 1 / end", \
"flow create 0 ingress pattern eth / ipv6 dst is ::32 / udp / gtpu / end actions rss queues 3 4 5 6 end / mark id 2 / end",\
@@ -2764,6 +2768,7 @@ class TestIAVFFdir(TestCase):
}
self.run_coexist_outer_gtpu(rules, MAC_GTPU)
+ @skip_unsupported_pkg('os default')
def test_mac_outer_co_exist_gtpu_eh_src(self):
rules = ["flow create 0 ingress pattern eth / ipv4 src is 192.168.0.21 / udp / gtpu / gtp_psc / end actions rss queues 1 2 end / mark id 1 / end", \
"flow create 0 ingress pattern eth / ipv6 src is ::12 / udp / gtpu / gtp_psc / end actions rss queues 3 4 5 6 end / mark id 2 / end",\
@@ -2795,6 +2800,7 @@ class TestIAVFFdir(TestCase):
}
self.run_coexist_outer_gtpu(rules, MAC_GTPU_EH)
+ @skip_unsupported_pkg('os default')
def test_mac_outer_co_exist_gtpu_src(self):
rules = ["flow create 0 ingress pattern eth / ipv4 src is 192.168.0.21 / udp / gtpu / end actions rss queues 1 2 end / mark id 1 / end", \
"flow create 0 ingress pattern eth / ipv6 src is ::12 / udp / gtpu / end actions rss queues 3 4 5 6 end / mark id 2 / end",\
@@ -2826,6 +2832,7 @@ class TestIAVFFdir(TestCase):
}
self.run_coexist_outer_gtpu(rules, MAC_GTPU)
+ @skip_unsupported_pkg('os default')
def test_mac_outer_co_exist_gtpu_mix(self):
rules = ["flow create 0 ingress pattern eth / ipv4 src is 192.168.0.21 dst is 192.168.0.31 / udp / gtpu / gtp_psc / end actions rss queues 1 2 end / mark id 1 / end", \
"flow create 0 ingress pattern eth / ipv6 src is ::12 dst is ::32 / udp / gtpu / gtp_psc / end actions rss queues 3 4 5 6 end / mark id 2 / end",\
@@ -2858,6 +2865,7 @@ class TestIAVFFdir(TestCase):
self.run_coexist_outer_gtpu(rules, MAC_GTPU_MIX)
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_pfcp(self):
# open the RSS function for PFCP session packet.
out = self.pmd_output.execute_cmd("flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end")
@@ -2866,6 +2874,7 @@ class TestIAVFFdir(TestCase):
self.verify("Flow rule #1 created" in out, "failed to enable RSS function for MAC_IPV6_PFCP session packet")
self.multirules_process(vectors_pfcp)
+ @skip_unsupported_pkg('os default')
def test_l2_ethertype(self):
self.multirules_process(vectors_l2_ethertype)
@@ -2955,6 +2964,7 @@ class TestIAVFFdir(TestCase):
self.check_fdir_rule(port_id=0, stats=False)
self.check_fdir_rule(port_id=1, stats=False)
+ @skip_unsupported_pkg(['comms', 'wireless'])
def test_unsupported_pattern_with_OS_package(self):
"""
Create GTPU rule, PFCP rule, L2 Ethertype rule, l2tpv3 rule and esp rule with OS default package
@@ -2964,24 +2974,11 @@ class TestIAVFFdir(TestCase):
"flow create 0 ingress pattern eth type is 0x8863 / end actions queue index 1 / mark id 1 / end",
"flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 17 / end actions rss queues 1 2 end / mark id 6 / end",
"flow create 0 ingress pattern eth / ipv6 / udp / esp spi is 6 / end actions rss queues 1 2 end / mark id 6 / end"]
- self.destroy_env()
- os_package_location = self.suite_config["os_default_package_file_location"]
- comms_package_location = self.suite_config["comms_package_file_location"]
- package_location = self.suite_config["package_file_location"]
- self.dut.send_expect("cp %s %s" % (os_package_location, package_location), "# ")
- self.re_load_ice_driver()
- self.setup_2pf_4vf_env()
self.launch_testpmd()
-
self.validate_fdir_rule(rule, check_stats=False)
self.create_fdir_rule(rule, check_stats=False)
self.check_fdir_rule(port_id=0, stats=False)
- self.destroy_env()
- self.dut.send_expect("cp %s %s" % (comms_package_location, package_location), "# ")
- self.re_load_ice_driver()
- self.setup_2pf_4vf_env()
-
def test_create_same_rule_on_pf_vf(self):
"""
create same rules on pf and vf, no conflict
@@ -3441,6 +3438,7 @@ class TestIAVFFdir(TestCase):
self.dut.close_session(self.session_secondary)
self.dut.close_session(self.session_third)
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_maxnum_128_profiles(self):
"""
There are 128 profiles in total.
@@ -3883,6 +3881,7 @@ class TestIAVFFdir(TestCase):
vlans.append(vlan)
return vlans
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_pfcp_vlan_strip_on_hw_checksum(self):
"""
Set PFCP FDIR rules
@@ -3979,6 +3978,7 @@ class TestIAVFFdir(TestCase):
self.verify(bad_ipcsum == 2, "Bad-ipcsum check error")
self.verify(bad_l4csum == 4, "Bad-l4csum check error")
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_pfcp_vlan_strip_off_sw_checksum(self):
"""
Set PFCP FDIR rules
@@ -4073,6 +4073,7 @@ class TestIAVFFdir(TestCase):
self.verify(bad_ipcsum == 2, "Bad-ipcsum check error")
self.verify(bad_l4csum == 4, "Bad-l4csum check error")
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_pfcp_vlan_insert_on(self):
"""
Set PFCP FDIR rules
diff --git a/tests/TestSuite_l2tp_esp_coverage.py b/tests/TestSuite_l2tp_esp_coverage.py
index 89f7cae..10520c8 100644
--- a/tests/TestSuite_l2tp_esp_coverage.py
+++ b/tests/TestSuite_l2tp_esp_coverage.py
@@ -33,7 +33,7 @@ import re
import time
from packet import Packet
from pmd_output import PmdOutput
-from test_case import TestCase
+from test_case import TestCase, skip_unsupported_pkg, check_supported_nic
import rte_flow_common as rfc
vf0_mac = "00:11:22:33:44:55"
@@ -76,9 +76,10 @@ tv_MAC_IPV6_NAT_T_ESP_vlan = {'matched vlan': "Ether(dst='%s')/Dot1Q(vlan=1)/IPv
'dismatched vlan': "Ether(dst='%s')/Dot1Q(vlan=2)/IPv6()/UDP(dport=4500)/ESP(spi=1)/Raw('x'*480)" % vf0_mac,
'no vlan': "Ether(dst='%s')/IPv6()/UDP(dport=4500)/ESP(spi=1)/Raw('x'*480)" % vf0_mac}
-
class L2tpEspCoverage(TestCase):
+ supported_nic = ['columbiaville_100g', 'columbiaville_25g', 'columbiaville_25gx2']
+ @check_supported_nic(supported_nic)
def set_up_all(self):
"""
Run at the start of each test suite.
@@ -95,7 +96,6 @@ class L2tpEspCoverage(TestCase):
self.pf_interface = self.dut.ports_info[self.dut_ports[0]]['intf']
self.pf_mac = self.dut.get_mac_address(0)
self.pf_pci = self.dut.ports_info[self.dut_ports[0]]['pci']
- self.verify(self.nic in ["columbiaville_25g", "columbiaville_100g"], "%s nic not support ethertype filter" % self.nic)
self.vf_flag = False
self.create_iavf()
self.pkt = Packet()
@@ -104,6 +104,7 @@ class L2tpEspCoverage(TestCase):
"""
Run before each test case.
"""
+ cases_list = ["test_MAC_IPV4_L2TPv3_HW_checksum_vlan_strip", "test_MAC_IPV4_L2TPv3_SW_checksum_vlan_insertion"]
self.dut.kill_all()
def tear_down(self):
@@ -156,21 +157,12 @@ class L2tpEspCoverage(TestCase):
self.dut.send_expect("set fwd rxonly", "testpmd> ", 15)
self.dut.send_expect("set verbose 1", "testpmd> ", 15)
- def enable_hw_checksum(self):
- self.dut.send_expect("stop","testpmd> ")
- self.dut.send_expect("port stop all","testpmd> ")
- self.dut.send_expect("csum set ip hw 0","testpmd> ")
- self.dut.send_expect("csum set udp hw 0","testpmd> ")
- self.dut.send_expect("port start all","testpmd> ")
- self.dut.send_expect("set fwd csum","testpmd> ")
- self.dut.send_expect("set verbose 1","testpmd> ")
- self.dut.send_expect("start","testpmd> ")
-
- def enable_sw_checksum(self):
+ def enable_checksum(self, param_type="hw"):
+
self.dut.send_expect("stop","testpmd> ")
self.dut.send_expect("port stop all","testpmd> ")
- self.dut.send_expect("csum set ip sw 0","testpmd> ")
- self.dut.send_expect("csum set udp sw 0","testpmd> ")
+ self.dut.send_expect("csum set ip %s 0" % param_type,"testpmd> ")
+ self.dut.send_expect("csum set udp %s 0" % param_type,"testpmd> ")
self.dut.send_expect("port start all","testpmd> ")
self.dut.send_expect("set fwd csum","testpmd> ")
self.dut.send_expect("set verbose 1","testpmd> ")
@@ -221,30 +213,29 @@ class L2tpEspCoverage(TestCase):
def test_MAC_IPV4_L2TPv3_HW_checksum(self):
self.create_testpmd_command(self.vf0_prop,rx_checksum=1)
- self.enable_hw_checksum()
+ self.enable_checksum()
self.checksum_verify(tv_MAC_IPV4_L2TPv3_chksum)
def test_MAC_IPV4_ESP_HW_checksum(self):
self.create_testpmd_command(self.vf0_prop,rx_checksum=1)
- self.enable_hw_checksum()
+ self.enable_checksum()
self.checksum_verify(tv_MAC_IPV4_ESP_chksum)
def test_MAC_IPV4_AH_HW_checksum(self):
self.create_testpmd_command(self.vf0_prop,rx_checksum=1)
- self.enable_hw_checksum()
+ self.enable_checksum()
self.checksum_verify(tv_MAC_IPV4_AH_chksum)
def test_MAC_IPV4_NAT_T_ESP_HW_checksum(self):
self.create_testpmd_command(self.vf0_prop,rx_checksum=1)
- self.enable_hw_checksum()
+ self.enable_checksum()
self.checksum_verify(tv_MAC_IPV4_NAT_T_ESP_chksum)
def test_MAC_IPV6_NAT_T_ESP_HW_checksum(self):
self.create_testpmd_command(self.vf0_prop,rx_checksum=1)
- self.enable_hw_checksum()
+ self.enable_checksum()
self.checksum_verify(tv_MAC_IPV6_NAT_T_ESP_chksum)
-
-
+
def start_tcpdump(self, rxItf):
self.tester.send_expect("rm -rf getPackageByTcpdump.cap", "#")
self.tester.send_expect("tcpdump -A -nn -e -vv -w getPackageByTcpdump.cap -i %s 2> /dev/null& " % rxItf, "#")
@@ -358,6 +349,7 @@ class L2tpEspCoverage(TestCase):
tx_port = self.tx_iface
self.pkt.send_pkt(crb=self.tester, tx_port=tx_port)
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_MAC_IPV4_L2TPv3_HW_checksum_vlan_strip(self):
self.create_testpmd_command(self.vf0_prop,rx_checksum=1)
@@ -366,7 +358,7 @@ class L2tpEspCoverage(TestCase):
self.dut.send_expect("vlan set strip on 0","testpmd> ")
self.dut.send_expect("rx_vlan add 1 0","testpmd> ")
- self.enable_hw_checksum()
+ self.enable_checksum()
#create rule
self.dut.send_expect("flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 1 / end actions queue index 1 / mark id 4 / end","testpmd> ")
self.dut.send_expect("flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 2 / end actions queue index 2 / mark id 3 / end","testpmd> ")
@@ -415,6 +407,7 @@ class L2tpEspCoverage(TestCase):
receive_pkt = re.findall('vlan 1', tcpdump_out)
self.verify(len(receive_pkt) == 1, 'vlan id strip on failed')
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_MAC_IPV4_L2TPv3_SW_checksum_vlan_insertion(self):
self.create_testpmd_command(self.vf0_prop,rx_checksum=1)
@@ -446,7 +439,7 @@ class L2tpEspCoverage(TestCase):
receive_pkt = re.findall('vlan 1', tcpdump_out)
self.verify(len(receive_pkt) == 1, 'vlan insertion failed')
- self.enable_sw_checksum()
+ self.enable_checksum("sw")
# bad checksum + mismatched session id
pkts="Ether(dst='00:11:22:33:44:55')/IP(proto=115,chksum=0x123)/L2TP(b'\\x00\\x00\\x00\\x11')/Raw('x'*480)"
self.start_tcpdump(self.tx_iface)
@@ -468,8 +461,8 @@ class L2tpEspCoverage(TestCase):
# check the rx checksum
bad_ipcsum = self.pmd_output.get_pmd_value("Bad-ipcsum:", out)
self.verify(bad_ipcsum == 1, "bad ip csum check error")
-
+ @skip_unsupported_pkg('os default')
def test_MAC_IPV4_ESP_HW_checksum_vlan_strip(self):
self.create_testpmd_command(self.vf0_prop,rx_checksum=1)
@@ -478,7 +471,7 @@ class L2tpEspCoverage(TestCase):
self.dut.send_expect("vlan set strip on 0","testpmd> ")
self.dut.send_expect("rx_vlan add 1 0","testpmd> ")
- self.enable_hw_checksum()
+ self.enable_checksum()
#create rule
self.dut.send_expect("flow create 0 ingress pattern eth / ipv4 / esp spi is 1 / end actions queue index 1 / mark id 4 / end","testpmd> ")
self.dut.send_expect("flow create 0 ingress pattern eth / ipv4 / esp spi is 2 / end actions queue index 2 / mark id 3 / end","testpmd> ")
@@ -527,6 +520,7 @@ class L2tpEspCoverage(TestCase):
receive_pkt = re.findall('vlan 1', tcpdump_out)
self.verify(len(receive_pkt) == 1, 'vlan id strip on failed')
+ @skip_unsupported_pkg('os default')
def test_MAC_IPV4_NAT_T_ESP_SW_checksum_vlan_insertion(self):
self.create_testpmd_command(self.vf0_prop,rx_checksum=1)
@@ -557,7 +551,7 @@ class L2tpEspCoverage(TestCase):
receive_pkt = re.findall('vlan 1', tcpdump_out)
self.verify(len(receive_pkt) == 1, 'vlan insertion failed')
- self.enable_sw_checksum()
+ self.enable_checksum("sw")
# bad checksum + mismatched session id
pkts="Ether(dst='00:11:22:33:44:55')/IP(chksum=0x123)/UDP(dport=4500)/ESP(spi=11)/Raw('x'*480)"
self.start_tcpdump(self.tx_iface)
--
1.8.3.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [dts] [PATCH V1 3/8] tests/cvl_advanced_rss_pppoe:support nic and pkg check
2021-03-18 5:27 [dts] [PATCH V1 0/8] modified suite to support pkg check Zhimin Huang
2021-03-18 5:27 ` [dts] [PATCH V1 1/8] tests/cvl_advanced_rss_pppoe:rename pppoe suite Zhimin Huang
2021-03-18 5:27 ` [dts] [PATCH V1 2/8] add decorator to support nic and pkg check Zhimin Huang
@ 2021-03-18 5:27 ` Zhimin Huang
2021-03-18 5:27 ` [dts] [PATCH V1 4/8] tests/cvl_dcf_switch_filter:support " Zhimin Huang
` (5 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Zhimin Huang @ 2021-03-18 5:27 UTC (permalink / raw)
To: dts; +Cc: Zhimin Huang
*.add nic and pkg check and remove other protocol case
Signed-off-by: Zhimin Huang <zhiminx.huang@intel.com>
---
| 937 +-----------------------------
1 file changed, 12 insertions(+), 925 deletions(-)
--git a/tests/TestSuite_cvl_advanced_rss_pppoe.py b/tests/TestSuite_cvl_advanced_rss_pppoe.py
index bf5422d..0529165 100644
--- a/tests/TestSuite_cvl_advanced_rss_pppoe.py
+++ b/tests/TestSuite_cvl_advanced_rss_pppoe.py
@@ -28,425 +28,14 @@
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
import re
import random
import string
-from test_case import TestCase
+from test_case import TestCase, skip_unsupported_pkg
from pmd_output import PmdOutput
from packet import Packet
from rte_flow_common import RssProcessing
-from config import UserConf
-
-mac_ipv4_pfcp_session_packets = {
- 'match': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=2)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:54")/IP(src="192.168.0.25",dst="192.168.0.23")/UDP(sport=23,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)'],
- 'mismatch': [
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=25)/Raw("x"*80)']
-}
-
-mac_ipv4_pfcp_session = {
- 'sub_casename': 'mac_ipv4_pfcp_session',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv4_pfcp_session_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv4_pfcp_session_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv4_pfcp_session_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': [i for i in mac_ipv4_pfcp_session_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_ipv4_pfcp_session_packets['match']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_ipv6_pfcp_session_packets = {
- 'match': [
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=2)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)'],
- 'mismatch': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=25)/Raw("x"*80)']
-}
-
-mac_ipv6_pfcp_session = {
- 'sub_casename': 'mac_ipv6_pfcp_session',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv6_pfcp_session_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv6_pfcp_session_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv6_pfcp_session_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': [i for i in mac_ipv6_pfcp_session_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_ipv6_pfcp_session_packets['match']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_ipv4_l2tpv3_packets = {
- 'match': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.4", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x12\')/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.5",dst="192.168.0.7", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)'
- ],
- 'mismatch': [
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=25)/Raw("x"*80)'
- ]
-}
-
-mac_ipv4_l2tpv3 = {
- 'sub_casename': 'mac_ipv4_l2tpv3',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv4_l2tpv3_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv4_l2tpv3_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv4_l2tpv3_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': [i for i in mac_ipv4_l2tpv3_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_ipv4_l2tpv3_packets['match']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_ipv6_l2tpv3_packets = {
- 'match': [
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP(b\'\\x00\\x00\\x00\\x12\')/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)'
- ],
- 'mismatch': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=25)/Raw("x"*80)'
- ]
-}
-
-mac_ipv6_l2tpv3 = {
- 'sub_casename': 'mac_ipv6_l2tpv3',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv6 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv6_l2tpv3_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv6_l2tpv3_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv6_l2tpv3_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': [i for i in mac_ipv6_l2tpv3_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_ipv6_l2tpv3_packets['match']],
- 'action': 'check_no_hash',
- }
- ]
-}
-
-mac_ipv4_esp_packets = {
- 'match': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=12)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.4",dst="192.168.0.7",proto=50)/ESP(spi=11)/Raw("x"*480)'],
- 'mismatch': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=12)/Raw("x"*480)'
- ]
-}
-
-mac_ipv4_esp = {
- 'sub_casename': 'mac_ipv4_esp',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv4_esp_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv4_esp_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv4_esp_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': [
- i for i in mac_ipv4_esp_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [
- i for i in mac_ipv4_esp_packets['match']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_ipv4_udp_esp_packets = {
- 'match': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=12)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.4",dst="192.168.0.7")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)'],
- 'mismatch': [
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)']
-}
-
-mac_ipv4_udp_esp = {
- 'sub_casename': 'mac_ipv4_udp_esp',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / esp / end actions rss types esp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv4_udp_esp_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv4_udp_esp_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv4_udp_esp_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': [i for i in mac_ipv4_udp_esp_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [
- i for i in mac_ipv4_esp_packets['match']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_ipv6_esp_packets = {
- 'match': [
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=11)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=12)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=50)/ESP(spi=11)/Raw("x"*480)'],
- 'mismatch': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)']
-}
-
-mac_ipv6_esp = {
- 'sub_casename': 'mac_ipv6_esp',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv6 / esp / end actions rss types esp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv6_esp_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv6_esp_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv6_esp_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': [i for i in mac_ipv6_esp_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_ipv6_esp_packets['match']],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_ipv6_udp_esp_packets = {
- 'match': [
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=12)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)'],
- 'mismatch': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=11)/Raw("x"*480)']
-}
-
-mac_ipv6_udp_esp = {
- 'sub_casename': 'mac_ipv6_udp_esp',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / esp / end actions rss types esp end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv6_udp_esp_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv6_udp_esp_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv6_udp_esp_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': mac_ipv6_udp_esp_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_ipv6_udp_esp_packets['match'],
- 'action': 'check_no_hash',
- },
- ],
-
-}
-
-mac_ipv4_ah_packets = {
- 'match': ['Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=11)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=12)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.4",dst="192.168.0.8",proto=51)/AH(spi=11)/Raw("x"*480)'],
- 'mismatch': [
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25,dport=23)/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=11)/Raw("x"*480)']
-}
-
-mac_ipv4_ah = {
- 'sub_casename': 'mac_ipv4_ah',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv4_ah_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv4_ah_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv4_ah_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': [i for i in mac_ipv4_ah_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_ipv4_ah_packets['match']],
- 'action': 'check_no_hash',
- },
- ],
-
-}
-
-mac_ipv6_ah_packets = {
- 'match': [
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=11)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=12)/Raw("x"*480)',
- 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=51)/AH(spi=11)/Raw("x"*480)'],
- 'mismatch': [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=11)/Raw("x"*480)',
- 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)']
-}
-
-mac_ipv6_ah = {
- 'sub_casename': 'mac_ipv6_ah',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / ipv6 / ah / end actions rss types ah end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_ipv6_ah_packets['match'][0],
- 'action': 'save_hash',
- },
- {
- 'send_packet': mac_ipv6_ah_packets['match'][1],
- 'action': 'check_hash_different',
- },
- {
- 'send_packet': mac_ipv6_ah_packets['match'][2],
- 'action': 'check_hash_same',
- },
- {
- 'send_packet': [i for i in mac_ipv6_ah_packets['mismatch']],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': [i for i in mac_ipv6_ah_packets['match']],
- 'action': 'check_no_hash',
- },
- ],
-}
mac_pppoe_pay_packets = {
'mismatch': [
@@ -750,7 +339,6 @@ mac_pppoe_pay_l2_src_only_session_id = {
],
}
-
mac_pppoe_ipv4_pay_packets = {
'mismatch': [
'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
@@ -918,7 +506,6 @@ mac_pppoe_ipv4_pay_l2_src_only_l2_dst_only = {
'post-test': mac_pppoe_ipv4_pay_post_test
}
-
mac_pppoe_ipv4_pay_l3_src_only_packets = {
'mac_pppoe_ipv4_pay': [
'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
@@ -2329,6 +1916,7 @@ mac_pppoe_ipv4_tcp_pay_ipv4 = {
},
],
}
+
mac_pppoe_ipv6_pay_packets = {
'mismatch': [
'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
@@ -4719,357 +4307,6 @@ simple_xor = {
],
}
-mac_vlan_ipv4_pay_packets = {
- 'match': {
- 'mac_vlan_ipv4_pay': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/Raw("x" * 80)',
- ],
- },
- 'mismatch': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'
- ]
-}
-
-mac_vlan_ipv4_pay = {
- 'sub_casename': 'mac_vlan_ipv4_pay',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / end actions rss types c-vlan end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'][0],
- 'action': {'save_hash': 'mac_vlan_ipv4_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'][1],
- 'action': {'check_hash_different': 'mac_vlan_ipv4_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'][2],
- 'action': {'check_hash_same': 'mac_vlan_ipv4_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_pay_packets['mismatch'][0],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_vlan_ipv4_udp_pay_packets = {
- 'match': {
- 'mac_vlan_ipv4_udp_pay': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/UDP(sport=19,dport=99)/Raw("x" * 80)',
- ]
- },
- 'mismatch': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'
- ]
-}
-
-mac_vlan_ipv4_udp_pay = {
- 'sub_casename': 'mac_vlan_ipv4_udp_pay',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / udp / end actions rss types c-vlan end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'][0],
- 'action': {'save_hash': 'mac_vlan_ipv4_udp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_vlan_ipv4_udp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'][2],
- 'action': {'check_hash_same': 'mac_vlan_ipv4_udp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_udp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_vlan_ipv4_tcp_pay_packets = {
- 'match': {
- 'mac_vlan_ipv4_tcp_pay': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/TCP(sport=19,dport=99)/Raw("x" * 80)'
- ]
- },
- 'mismatch': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'
- ]
-}
-
-mac_vlan_ipv4_tcp_pay = {
- 'sub_casename': 'mac_vlan_ipv4_tcp_pay',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / tcp / end actions rss types c-vlan end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'][0],
- 'action': {'save_hash': 'mac_vlan_ipv4_tcp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_vlan_ipv4_tcp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'][2],
- 'action': {'check_hash_same': 'mac_vlan_ipv4_tcp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_tcp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_vlan_ipv4_sctp_pay_packets = {
- 'match': {
- 'mac_vlan_ipv4_sctp_pay': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.5")/SCTP(sport=19,dport=99)/Raw("x" * 80)'
- ]
- },
- 'mismatch': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)'
-
- ]
-}
-
-mac_vlan_ipv4_sctp_pay = {
- 'sub_casename': 'mac_vlan_ipv4_sctp_pay',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / sctp / end actions rss types c-vlan end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'][0],
- 'action': {'save_hash': 'mac_vlan_ipv4_sctp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'][1],
- 'action': {'check_hash_different': 'mac_vlan_ipv4_sctp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'][2],
- 'action': {'check_hash_same': 'mac_vlan_ipv4_sctp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv4_sctp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_vlan_ipv6_pay_packets = {
- 'match': {
- 'mac_vlan_ipv6_pay': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("y" * 80)'
- ]
- },
- 'mismatch': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'
- ]
-}
-
-mac_vlan_ipv6_pay = {
- 'sub_casename': 'mac_vlan_ipv6_pay',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / end actions rss types c-vlan end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'][0],
- 'action': {'save_hash': 'mac_vlan_ipv6_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'][1],
- 'action': {'check_hash_different': 'mac_vlan_ipv6_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'][2],
- 'action': {'check_hash_same': 'mac_vlan_ipv6_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_vlan_ipv6_udp_pay_packets = {
- 'match': {
- 'mac_vlan_ipv6_udp_pay': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=99)/Raw("x" * 80)'
- ]
- },
- 'mismatch': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'
- ]
-}
-
-mac_vlan_ipv6_udp_pay = {
- 'sub_casename': 'mac_vlan_ipv6_udp_pay',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / udp / end actions rss types c-vlan end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'][0],
- 'action': {'save_hash': 'mac_vlan_ipv6_udp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'][1],
- 'action': {'check_hash_different': 'mac_vlan_ipv6_udp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'][2],
- 'action': {'check_hash_same': 'mac_vlan_ipv6_udp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_udp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_vlan_ipv6_tcp_pay_packets = {
- 'match': {
- 'mac_vlan_ipv6_tcp_pay': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=99)/Raw("x" * 80)'
- ]
- },
- 'mismatch': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'
- ]
-}
-
-mac_vlan_ipv6_tcp_pay = {
- 'sub_casename': 'mac_vlan_ipv6_tcp_pay',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / tcp / end actions rss types c-vlan end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'][0],
- 'action': {'save_hash': 'mac_vlan_ipv6_tcp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'][1],
- 'action': {'check_hash_different': 'mac_vlan_ipv6_tcp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'][2],
- 'action': {'check_hash_same': 'mac_vlan_ipv6_tcp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_tcp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
-mac_vlan_ipv6_sctp_pay_packets = {
- 'match': {
- 'mac_vlan_ipv6_sctp_pay': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/SCTP(sport=25,dport=99)/Raw("x" * 80)'
- ]
- },
- 'mismatch': [
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'
- ]
-}
-
-mac_vlan_ipv6_sctp_pay = {
- 'sub_casename': 'mac_vlan_ipv6_sctp_pay',
- 'port_id': 0,
- 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / sctp / end actions rss types c-vlan end key_len 0 queues end / end',
- 'test': [
- {
- 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'][0],
- 'action': {'save_hash': 'mac_vlan_ipv6_sctp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'][1],
- 'action': {'check_hash_different': 'mac_vlan_ipv6_sctp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'][2],
- 'action': {'check_hash_same': 'mac_vlan_ipv6_sctp_pay_match'},
- },
- {
- 'send_packet': mac_vlan_ipv6_sctp_pay_packets['mismatch'],
- 'action': 'check_no_hash',
- },
- ],
- 'post-test': [
- {
- 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'],
- 'action': 'check_no_hash',
- },
- ],
-}
-
mac_vlan_pppoe_pay_l2_src_only_packets = [
'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
'Ether(src="00:11:22:33:44:53", dst="10:22:33:44:55:66")/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/Raw("x"*80)',
@@ -5251,14 +4488,14 @@ mac_vlan_pppoe_pay = [
]
-class Advanced_rss_pppoe_vlan_ah_l2tp_pfcp(TestCase):
+class Advanced_rss_pppoe(TestCase):
+ @skip_unsupported_pkg(['os default', 'wireless'])
def set_up_all(self):
"""
Run at the start of each test suite.
Generic filter Prerequistites
"""
-
# Based on h/w type, choose how many ports to use
self.dut_ports = self.dut.get_ports(self.nic)
self.verify(len(self.dut_ports) >= 2, "Insufficient ports for testing")
@@ -5275,12 +4512,6 @@ class Advanced_rss_pppoe_vlan_ah_l2tp_pfcp(TestCase):
self.pci_list.append(port['pci'])
self.pkt = Packet()
self.pmd_output = PmdOutput(self.dut)
- self.ddp_dir = "/lib/firmware/updates/intel/ice/ddp/"
- conf_file = 'conf/cvl_advanced_rss_pppoe.cfg'
- conf_info = UserConf(conf_file)
- conf_section = conf_info.conf._sections['suite']
- self.os_default_package = conf_section['os_default_package_file_location']
- self.comms_package = conf_section['comms_package_file_location']
self.symmetric = False
self.rxq = 64
self.rsspro = RssProcessing(self, self.pmd_output, [self.tester_iface0, self.tester_iface1], self.rxq)
@@ -5309,20 +4540,7 @@ class Advanced_rss_pppoe_vlan_ah_l2tp_pfcp(TestCase):
"""
self.dut.kill_all()
- def replace_package(self, package='comms'):
- ice_pkg_path = ''.join([self.ddp_dir,"ice.pkg"])
- self.dut.send_expect("rm -f {}".format(ice_pkg_path), "# ")
- if package == 'os_default':
- self.dut.send_expect("cp {} {}".format(self.os_default_package,ice_pkg_path), "# ")
- elif package == 'comms':
- self.dut.send_expect("cp {} {}".format(self.comms_package,ice_pkg_path), "# ")
- for pci in self.pci_list:
- self.dut.send_expect("echo {0} > /sys/bus/pci/devices/{0}/driver/unbind".format(pci), "# ", 60)
- self.dut.send_expect("echo {} > /sys/bus/pci/drivers/ice/bind".format(pci), "# ", 60)
- pci_str = ' '.join(self.pci_list)
- self.dut.send_expect("./usertools/dpdk-devbind.py --force --bind=vfio-pci {}".format(pci_str), "# ", 60)
-
- def launch_testpmd(self, symmetric=False, package='comms'):
+ def launch_testpmd(self, symmetric=False):
if symmetric:
param = "--rxq=64 --txq=64"
else:
@@ -5330,14 +4548,6 @@ class Advanced_rss_pppoe_vlan_ah_l2tp_pfcp(TestCase):
out = self.pmd_output.start_testpmd(cores="1S/4C/1T", param=param,
eal_param=f"-w {self.pci_list[0]}", socket=self.ports_socket)
self.symmetric = symmetric
- package_version = re.search('Active\spackage\sis:\s(.+),', out).group(1)
- self.logger.info('DDP package version: %s' % package_version)
- if package == 'comms':
- self.verify(package_version in self.comms_package.split('/')[-1],
- 'package version not match')
- elif package == 'os_default':
- self.verify(package_version in self.os_default_package.split('/')[-1],
- 'package version not match')
if symmetric:
# Need config rss in setup
self.pmd_output.execute_cmd("port config all rss all")
@@ -5345,56 +4555,15 @@ class Advanced_rss_pppoe_vlan_ah_l2tp_pfcp(TestCase):
self.pmd_output.execute_cmd("set verbose 1")
res = self.pmd_output.wait_link_status_up('all', timeout=15)
self.verify(res is True, 'there have port link is down')
- return package_version
- def switch_testpmd(self, symmetric=True, pkg='comms'):
+ def switch_testpmd(self, symmetric=True):
self.dut.kill_all()
- self.launch_testpmd(symmetric, pkg)
+ self.launch_testpmd(symmetric)
self.pmd_output.execute_cmd("start")
def _gener_str(self, str_len=6):
return ''.join(random.sample(string.ascii_letters + string.digits, k=str_len))
- def test_mac_ipv4_pfcp_session(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_pfcp_session)
-
- def test_mac_ipv6_pfcp_session(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_pfcp_session)
-
- def test_mac_ipv4_l2tpv3(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_l2tpv3)
-
- def test_mac_ipv6_l2tpv3(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_l2tpv3)
-
- def test_mac_ipv4_esp(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_esp)
-
- def test_mac_ipv4_udp_esp(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_udp_esp)
-
- def test_mac_ipv6_esp(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_esp)
-
- def test_mac_ipv6_udp_esp(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_udp_esp)
-
- def test_mac_ipv4_ah(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_ah)
-
- def test_mac_ipv6_ah(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_ah)
-
def test_mac_pppoe_pay(self):
self.switch_testpmd(symmetric=False)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_pay)
@@ -5423,6 +4592,10 @@ class Advanced_rss_pppoe_vlan_ah_l2tp_pfcp(TestCase):
self.switch_testpmd(symmetric=False)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv6_tcp_pay)
+ def test_mac_vlan_pppoe_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_pppoe_pay)
+
def test_mac_pppoe_ipv4_pay_symmetric(self):
self.switch_testpmd(symmetric=True)
self.rsspro.handle_rss_distribute_cases(cases_info=mac_pppoe_ipv4_pay_symmetric)
@@ -5579,89 +4752,3 @@ class Advanced_rss_pppoe_vlan_ah_l2tp_pfcp(TestCase):
]
self._two_rules_operation(rule_list, pkt_list, action_list2=['check_no_hash'])
- def test_wrong_hash_input_set(self):
- self.switch_testpmd(symmetric=True)
- rule_list = [
- 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types l2-src-only l2-dst-only end key_len 0 queues end / end',
- 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end',
- 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp l3-src-only end key_len 0 queues end / end']
-
- for rule in rule_list:
- self.rsspro.validate_rule(rule, check_stats=False, check_msg='Invalid argument')
- self.rsspro.create_rule(rule, check_stats=False, msg='Invalid argument')
-
- def test_void_action(self):
- self.switch_testpmd(symmetric=True)
- rule = 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions end'
- self.rsspro.validate_rule(rule, check_stats=False, check_msg='Invalid argument')
- self.rsspro.create_rule(rule, check_stats=False, msg='Invalid argument')
- self.rsspro.check_rule(stats=False, rule_list=[rule])
-
- def test_delete_nonexisting_rule(self):
- self.switch_testpmd(symmetric=True)
- self.rsspro.check_rule(stats=False)
- out = self.dut.send_command("flow destroy 0 rule 0", timeout=1)
- self.verify('error' not in out, 'delete nonexisting rule raise err,expected no err')
- self.dut.send_command("flow flush 0", timeout=1)
-
- def test_unsupported_pattern_with_OS_default_package(self):
- self.replace_package('os_default')
- self.switch_testpmd(symmetric=True, pkg='os_default')
- rule_list = [
- 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end',
- 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end',
- 'flow create 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end',
- 'flow create 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end'
- ]
- self.rsspro.validate_rule(rule_list, check_stats=False, check_msg='Invalid argument')
- self.rsspro.create_rule(rule_list, check_stats=False, msg='Invalid argument')
- self.rsspro.check_rule(stats=False)
- self.dut.kill_all()
- self.replace_package('comms')
- self.launch_testpmd()
-
- def test_invalid_port(self):
- self.switch_testpmd(symmetric=True)
- rule = 'flow create 1 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end'
- self.rsspro.create_rule(rule, check_stats=False, msg='No such device')
- self.rsspro.check_rule(stats=False, rule_list=[rule])
- pattern = 'Invalid port 1'
- out = self.dut.send_command("flow list 1", timeout=1)
- result = re.search(r'%s' % pattern, out)
- self.verify(result, 'actual result not match expected,expected result is:{}'.format(pattern))
-
- def test_mac_vlan_ipv4_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_pay)
-
- def test_mac_vlan_ipv4_udp_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_udp_pay)
-
- def test_mac_vlan_ipv4_tcp_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_tcp_pay)
-
- def test_mac_vlan_ipv4_sctp_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_sctp_pay)
-
- def test_mac_vlan_ipv6_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_pay)
-
- def test_mac_vlan_ipv6_udp_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_udp_pay)
-
- def test_mac_vlan_ipv6_tcp_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_tcp_pay)
-
- def test_mac_vlan_ipv6_sctp_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_sctp_pay)
-
- def test_mac_vlan_pppoe_pay(self):
- self.switch_testpmd(symmetric=False)
- self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_pppoe_pay)
--
1.8.3.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [dts] [PATCH V1 4/8] tests/cvl_dcf_switch_filter:support nic and pkg check
2021-03-18 5:27 [dts] [PATCH V1 0/8] modified suite to support pkg check Zhimin Huang
` (2 preceding siblings ...)
2021-03-18 5:27 ` [dts] [PATCH V1 3/8] tests/cvl_advanced_rss_pppoe:support " Zhimin Huang
@ 2021-03-18 5:27 ` Zhimin Huang
2021-03-18 5:27 ` [dts] [PATCH V1 5/8] tests/cvl_switch_filter:support " Zhimin Huang
` (4 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Zhimin Huang @ 2021-03-18 5:27 UTC (permalink / raw)
To: dts; +Cc: Zhimin Huang
*.split pppoe into new suite and pkg check
Signed-off-by: Zhimin Huang <zhiminx.huang@intel.com>
---
tests/TestSuite_cvl_dcf_switch_filter.py | 542 ++-----------------------------
1 file changed, 21 insertions(+), 521 deletions(-)
mode change 100644 => 100755 tests/TestSuite_cvl_dcf_switch_filter.py
diff --git a/tests/TestSuite_cvl_dcf_switch_filter.py b/tests/TestSuite_cvl_dcf_switch_filter.py
old mode 100644
new mode 100755
index 1904ef4..b9b6d3b
--- a/tests/TestSuite_cvl_dcf_switch_filter.py
+++ b/tests/TestSuite_cvl_dcf_switch_filter.py
@@ -34,7 +34,7 @@ import time
import re
import copy
-from test_case import TestCase
+from test_case import TestCase, skip_unsupported_pkg, check_supported_nic
from pmd_output import PmdOutput
from packet import Packet
from utils import BLUE, RED, GREEN
@@ -838,384 +838,6 @@ tv_add_two_rules_with_different_input_set_different_vf_id = {
"expect_results":{"expect_pkts":[0, 0]}}
}
-tv_mac_pppoe_ipv4_pay_ip_address = {
- "name":"tv_mac_pppoe_ipv4_pay_ip_address",
- "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",
- "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/Raw("x"*80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_pppoe_ipv4_udp_pay = {
- "name":"tv_mac_pppoe_ipv4_udp_pay",
- "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 actions vf id 1 / end",
- "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=27,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=19)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port = {
- "name":"tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port",
- "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",
- "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_pppoe_ipv4_tcp_pay = {
- "name":"tv_mac_pppoe_ipv4_tcp_pay",
- "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 actions vf id 1 / end",
- "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=27,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=19)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port = {
- "name":"tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port",
- "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",
- "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_pppoe_ipv6_pay_ip_address = {
- "name":"tv_mac_pppoe_ipv6_pay_ip_address",
- "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:8475:1111:3900:2022 / end actions vf id 1 / end",
- "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_pppoe_ipv6_udp_pay = {
- "name":"tv_mac_pppoe_ipv6_udp_pay",
- "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",
- "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=27,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=19)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port = {
- "name":"tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port",
- "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:8475:1111:3900:2022 / udp / end actions vf id 1 / end",
- "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_pppoe_ipv6_tcp_pay = {
- "name":"tv_mac_pppoe_ipv6_tcp_pay",
- "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",
- "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=27,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=19)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port = {
- "name":"tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port",
- "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:8475:1111:3900:2022 / tcp / end actions vf id 1 / end",
- "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_vlan_pppoe_ipv4_pay_ip_address = {
- "name":"tv_mac_vlan_pppoe_ipv4_pay_ip_address",
- "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",
- "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/Raw("x"*80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_vlan_pppoe_ipv4_udp_pay = {
- "name":"tv_mac_vlan_pppoe_ipv4_udp_pay",
- "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 is 23 / end actions vf id 1 / end",
- "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=27,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=19)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port = {
- "name":"tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port",
- "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 vf id 1 / end",
- "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_vlan_pppoe_ipv4_tcp_pay = {
- "name":"tv_mac_vlan_pppoe_ipv4_tcp_pay",
- "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 is 23 / end actions vf id 1 / end",
- "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=27,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=19)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port = {
- "name":"tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port",
- "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 vf id 1 / end",
- "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_vlan_pppoe_ipv6_pay_ip_address = {
- "name":"tv_mac_vlan_pppoe_ipv6_pay_ip_address",
- "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 actions vf id 1 / end",
- "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_vlan_pppoe_ipv6_udp_pay = {
- "name":"tv_mac_vlan_pppoe_ipv6_udp_pay",
- "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",
- "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=27,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=19)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port = {
- "name":"tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port",
- "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",
- "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_vlan_pppoe_ipv6_tcp_pay = {
- "name":"tv_mac_vlan_pppoe_ipv6_tcp_pay",
- "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",
- "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=27,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=19)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port = {
- "name":"tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port",
- "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",
- "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_pppoe_lcp_pay = {
- "name":"tv_mac_pppoe_lcp_pay",
- "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",
- "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:53",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_pppoe_ipcp_pay = {
- "name":"tv_mac_pppoe_ipcp_pay",
- "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",
- "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:53",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_vlan_pppoe_lcp_pay = {
- "name":"tv_mac_vlan_pppoe_lcp_pay",
- "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 / end actions vf id 1 / end",
- "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_vlan_pppoe_ipcp_pay = {
- "name":"tv_mac_vlan_pppoe_ipcp_pay",
- "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 / end actions vf id 1 / end",
- "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
tv_mac_ipv4_drop = {
"name": "tv_mac_ipv4_drop",
"rte_flow_pattern": "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.1 / end actions drop / end",
@@ -1367,6 +989,7 @@ sv_mac_test_drop_action = [
]
class CVLDCFSwitchFilterTest(TestCase):
+ supported_nic = ['columbiaville_100g', 'columbiaville_25g', 'columbiaville_25gx2']
def bind_nics_driver(self, ports, driver=""):
# modprobe vfio driver
@@ -1393,27 +1016,20 @@ class CVLDCFSwitchFilterTest(TestCase):
if driver != driver_now:
netdev.bind_driver(driver=driver)
+ @check_supported_nic(supported_nic)
def set_up_all(self):
"""
Run at the start of each test suite.
"""
- self.verify(self.nic in ["columbiaville_25g","columbiaville_100g"], "nic is not CVL")
self.dut_ports = self.dut.get_ports(self.nic)
# Verify that enough ports are available
self.verify(len(self.dut_ports) >= 1, "Insufficient ports")
localPort = self.tester.get_local_port(self.dut_ports[0])
self.__tx_iface = self.tester.get_interface(localPort)
- self.dut.send_expect("ifconfig %s up" % self.__tx_iface, "# ")
self.pkt = Packet()
self.testpmd_status = "close"
#bind pf to kernel
self.bind_nics_driver(self.dut_ports, driver="ice")
- #move comms package to package folder
- self.suite_config = rfc.get_suite_config(self)
- comms_package_location = self.suite_config["comms_package_file_location"]
- package_location = self.suite_config["package_file_location"]
- self.dut.send_expect("cp %s %s" % (comms_package_location, package_location), "# ")
- self.re_load_ice_driver()
#set vf driver
self.vf_driver = 'vfio-pci'
@@ -1436,20 +1052,11 @@ class CVLDCFSwitchFilterTest(TestCase):
port.bind_driver(self.vf_driver)
time.sleep(5)
- def re_load_ice_driver(self):
- """
- remove and reload the ice driver
- """
- ice_driver_file_location = self.suite_config["ice_driver_file_location"]
- self.dut.send_expect("rmmod ice", "# ", 15)
- self.dut.send_expect("insmod %s" % ice_driver_file_location, "# ", 60)
- time.sleep(5)
-
def set_up(self):
"""
Run before each test case.
"""
- self.re_load_ice_driver()
+ pass
def create_testpmd_command(self):
"""
@@ -1736,22 +1343,6 @@ class CVLDCFSwitchFilterTest(TestCase):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_mac_ipv4_nvgre_mac_ipv4_tcp)
- def test_mac_vlan_pppoe_ipv4_pay_session_id_proto_id(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id)
-
- def test_mac_vlan_pppoe_ipv6_pay_session_id_proto_id(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id)
-
- def test_mac_pppoe_ipv4_pay_session_id_proto_id(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_pppoe_ipv4_pay_session_id_proto_id)
-
- def test_mac_pppoe_ipv6_pay_session_id_proto_id(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_pppoe_ipv6_pay_session_id_proto_id)
-
def test_ip_multicast(self):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_ip_multicast)
@@ -1792,34 +1383,42 @@ class CVLDCFSwitchFilterTest(TestCase):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_vlan_filter)
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_mac_ipv4_l2tpv3(self):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_mac_ipv4_l2tpv3)
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_mac_ipv6_l2tpv3(self):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_mac_ipv6_l2tpv3)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv4_esp(self):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_mac_ipv4_esp)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv6_esp(self):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_mac_ipv6_esp)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv4_ah(self):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_mac_ipv4_ah)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv6_ah(self):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_mac_ipv6_ah)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv4_nat_t_esp(self):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_mac_ipv4_nat_t_esp)
+ @skip_unsupported_pkg('os default')
def test_mac_ipv6_nat_t_esp(self):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_mac_ipv6_nat_t_esp)
@@ -1896,16 +1495,12 @@ class CVLDCFSwitchFilterTest(TestCase):
#create MAC_IPV6_UDP_PAY rule, and check the rule will not be affected by the long rule failure
self._rte_flow_validate_pattern(tv_mac_ipv6_udp_pay, launch_testpmd=False)
+ @skip_unsupported_pkg(['comms', 'wireless'])
def test_unsupported_pattern_in_os_default(self):
"""
test with os default package
"""
#set up 4 vfs on 1 pf environment
- os_package_location = self.suite_config["os_default_package_file_location"]
- comms_package_location = self.suite_config["comms_package_file_location"]
- package_location = self.suite_config["package_file_location"]
- self.dut.send_expect("cp %s %s" % (os_package_location, package_location), "# ")
- self.re_load_ice_driver()
self.setup_1pf_vfs_env()
#launch testpmd
self.launch_testpmd()
@@ -1928,8 +1523,6 @@ class CVLDCFSwitchFilterTest(TestCase):
# destroy vfs
for port_id in self.dut_ports:
self.dut.destroy_sriov_vfs_by_port(port_id)
- self.dut.send_expect("cp %s %s" % (comms_package_location, package_location), "# ")
- self.re_load_ice_driver()
def test_add_existing_rules_but_with_different_vfs(self):
#set up 4 vfs on 1 pf environment
@@ -2082,11 +1675,7 @@ class CVLDCFSwitchFilterTest(TestCase):
#generate max_vf_number VFs on PF0
self.dut.generate_sriov_vfs_by_port(self.used_dut_port_0, max_vf_number, driver='default')
self.sriov_vfs_port = self.dut.ports_info[self.used_dut_port_0]['vfs_port']
- #bind max_vf_number vfs to iavf
- iavf_driver_file_location = self.suite_config["iavf_driver_file_location"]
- self.dut.send_expect("rmmod iavf", "# ", 15)
- self.dut.send_expect("insmod %s" % iavf_driver_file_location, "# ", 60)
- time.sleep(2)
+
for port in self.sriov_vfs_port:
port.bind_driver('iavf')
#sort the vf interfaces and pcis by pcis
@@ -2193,26 +1782,32 @@ class CVLDCFSwitchFilterTest(TestCase):
matched_dic['expect_results'] = {"expect_pkts":0}
self.send_and_check_packets(matched_dic)
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_mac_ipv4_pfcp_node(self):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_mac_ipv4_pfcp_node)
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_mac_ipv4_pfcp_session(self):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_mac_ipv4_pfcp_session)
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_mac_ipv6_pfcp_node(self):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_mac_ipv6_pfcp_node)
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_mac_ipv6_pfcp_session(self):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_mac_ipv6_pfcp_session)
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_add_two_rules_with_different_input_set_same_vf_id(self):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_add_two_rules_with_different_input_set_same_vf_id)
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_add_two_rules_with_different_input_set_different_vf_id(self):
#set up 4 vfs on 1 pf environment
self.setup_1pf_vfs_env()
@@ -2229,102 +1824,7 @@ class CVLDCFSwitchFilterTest(TestCase):
self.dut.send_expect("set verbose 1", "testpmd> ", 15)
self._rte_flow_validate_pattern(tv_add_two_rules_with_different_input_set_different_vf_id, False)
- def test_mac_pppoe_ipv4_pay_ip_address(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_pppoe_ipv4_pay_ip_address)
-
- def test_mac_pppoe_ipv4_udp_pay(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_pppoe_ipv4_udp_pay)
-
- def test_mac_pppoe_ipv4_udp_pay_non_src_dst_port(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port)
-
- def test_mac_pppoe_ipv4_tcp_pay(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_pppoe_ipv4_tcp_pay)
-
- def test_mac_pppoe_ipv4_tcp_pay_non_src_dst_port(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port)
-
- def test_mac_pppoe_ipv6_pay_ip_address(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_pppoe_ipv6_pay_ip_address)
-
- def test_mac_pppoe_ipv6_udp_pay(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_pppoe_ipv6_udp_pay)
-
- def test_mac_pppoe_ipv6_udp_pay_non_src_dst_port(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port)
-
- def test_mac_pppoe_ipv6_tcp_pay(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_pppoe_ipv6_tcp_pay)
-
- def test_mac_pppoe_ipv6_tcp_pay_non_src_dst_port(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port)
-
- def test_mac_vlan_pppoe_ipv4_pay_ip_address(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv4_pay_ip_address)
-
- def test_mac_vlan_pppoe_ipv4_udp_pay(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv4_udp_pay)
-
- def test_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port)
-
- def test_mac_vlan_pppoe_ipv4_tcp_pay(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv4_tcp_pay)
-
- def test_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port)
-
- def test_mac_vlan_pppoe_ipv6_pay_ip_address(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv6_pay_ip_address)
-
- def test_mac_vlan_pppoe_ipv6_udp_pay(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv6_udp_pay)
-
- def test_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port)
-
- def test_mac_vlan_pppoe_ipv6_tcp_pay(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv6_tcp_pay)
-
- def test_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port)
-
- def test_mac_pppoe_lcp_pay(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_pppoe_lcp_pay)
-
- def test_mac_pppoe_ipcp_pay(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_pppoe_ipcp_pay)
-
- def test_mac_vlan_pppoe_lcp_pay(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_lcp_pay)
-
- def test_mac_vlan_pppoe_ipcp_pay(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipcp_pay)
-
+ @skip_unsupported_pkg(['os default', 'wireless'])
def test_mac_drop_action(self):
self.setup_1pf_vfs_env()
self.dut.send_expect('ip link set %s vf 1 mac "00:11:22:33:44:55"' % self.pf0_intf, '# ')
--
1.8.3.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [dts] [PATCH V1 5/8] tests/cvl_switch_filter:support nic and pkg check
2021-03-18 5:27 [dts] [PATCH V1 0/8] modified suite to support pkg check Zhimin Huang
` (3 preceding siblings ...)
2021-03-18 5:27 ` [dts] [PATCH V1 4/8] tests/cvl_dcf_switch_filter:support " Zhimin Huang
@ 2021-03-18 5:27 ` Zhimin Huang
2021-03-18 5:27 ` [dts] [PATCH V1 6/8] tests/cvl_advanced_rss_vlan_esp_ah_l2tp_pfcp:split pppoe into new suite Zhimin Huang
` (3 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Zhimin Huang @ 2021-03-18 5:27 UTC (permalink / raw)
To: dts; +Cc: Zhimin Huang
*.split pppoe into new suite and add pkg check
Signed-off-by: Zhimin Huang <zhiminx.huang@intel.com>
---
tests/TestSuite_cvl_switch_filter.py | 2761 ++--------------------------------
1 file changed, 134 insertions(+), 2627 deletions(-)
diff --git a/tests/TestSuite_cvl_switch_filter.py b/tests/TestSuite_cvl_switch_filter.py
index cc0283b..dcf9a57 100644
--- a/tests/TestSuite_cvl_switch_filter.py
+++ b/tests/TestSuite_cvl_switch_filter.py
@@ -37,7 +37,7 @@ import copy
import random
from itertools import groupby
-from test_case import TestCase
+from test_case import TestCase, skip_unsupported_pkg
from pmd_output import PmdOutput
from packet import Packet
from utils import BLUE, RED, GREEN
@@ -1618,69 +1618,6 @@ tvs_ethertype_filter_pppoed = [
tv_ethertype_filter_pppoed_drop_02
]
-#test vector ethertype_filter_pppoes
-ethertype_filter_pppoes_scapy_str = {
- "matched": [
- 'Ether(dst="00:11:22:33:44:55", type=0x8864)/PPPoE(sessionid=3)/Raw("x" *80)'],
- "mismatched": [
- 'Ether(dst="00:11:22:33:44:55", type=0x8863)/PPPoED()/Raw("x" *80)'
- ]
-}
-
-tv_ethertype_filter_pppoes_in_queue_01 = {
- "name":"tv_ethertype_filter_pppoes_in_queue_01",
- "rte_flow_pattern":"flow create 0 ingress pattern eth type is 0x8864 / end actions queue index 2 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":True},
- "matched":{"scapy_str":ethertype_filter_pppoes_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":ethertype_filter_pppoes_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":1}}
-}
-
-tv_ethertype_filter_pppoes_queue_region_02 = {
- "name":"tv_ethertype_filter_pppoes_queue_region_02",
- "rte_flow_pattern":"flow create 0 ingress pattern eth type is 0x8864 / end actions rss queues 4 5 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":True},
- "matched":{"scapy_str":ethertype_filter_pppoes_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[4, 5]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":ethertype_filter_pppoes_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[4, 5]}},
- "expect_results":{"expect_pkts":1}}
-}
-
-tv_ethertype_filter_pppoes_drop_03 = {
- "name":"tv_ethertype_filter_pppoes_drop_03",
- "rte_flow_pattern":"flow create 0 ingress pattern eth type is 0x8864 / end actions drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":True},
- "matched":{"scapy_str":ethertype_filter_pppoes_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":ethertype_filter_pppoes_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}}
-}
-
-tvs_ethertype_filter_pppoes = [
- tv_ethertype_filter_pppoes_in_queue_01,
- tv_ethertype_filter_pppoes_queue_region_02,
- tv_ethertype_filter_pppoes_drop_03
- ]
-
#non-tunnel pipeline mode
#test vector mac_ipv4_frag_pipeline_mode
mac_ipv4_frag_pipeline_mode_scapy_str = {
@@ -2583,2056 +2520,146 @@ tvs_mac_ipv6_tcp_non_pipeline_mode = [
tv_mac_ipv6_tcp_drop_queue_02
]
-#20.08
-mac_vlan_pppoe_ipv4_pay_session_id_proto_id_scapy_str = {
- "matched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x"*80)'],
- "mismatched": [
- 'Ether(dst="00:11:22:33:44:54",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)'
- ]
-}
-
-tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_in_queue_01 = {
- "name":"mac_vlan_pppoe_ipv4_pay_session_id_proto_id_in_queue_01",
- "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions queue index 2 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_session_id_proto_id_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_session_id_proto_id_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":4}}
-}
+test_results = OrderedDict()
-tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_queue_region_02 = {
- "name":"mac_vlan_pppoe_ipv4_pay_session_id_proto_id_queue_region_02",
- "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions rss queues 4 5 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_session_id_proto_id_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[4, 5]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_session_id_proto_id_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[4, 5]}},
- "expect_results":{"expect_pkts":4}}
-}
+class CVLSwitchFilterTest(TestCase):
-tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_drop_03 = {
- "name":"tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_drop_03",
- "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 / end actions drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_session_id_proto_id_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_session_id_proto_id_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":4}}
-}
+ def bind_nics_driver(self, ports, driver=""):
+ # modprobe vfio driver
+ if driver == "vfio-pci":
+ for port in ports:
+ netdev = self.dut.ports_info[port]['port']
+ driver = netdev.get_nic_driver()
+ if driver != 'vfio-pci':
+ netdev.bind_driver(driver='vfio-pci')
-tvs_mac_vlan_pppoe_ipv4_pay_session_id_proto_id = [
- tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_in_queue_01,
- tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_queue_region_02,
- tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_drop_03
- ]
+ elif driver == "igb_uio":
+ # igb_uio should insmod as default, no need to check
+ for port in ports:
+ netdev = self.dut.ports_info[port]['port']
+ driver = netdev.get_nic_driver()
+ if driver != 'igb_uio':
+ netdev.bind_driver(driver='igb_uio')
+ else:
+ for port in ports:
+ netdev = self.dut.ports_info[port]['port']
+ driver_now = netdev.get_nic_driver()
+ if driver == "":
+ driver = netdev.default_driver
+ if driver != driver_now:
+ netdev.bind_driver(driver=driver)
+ def set_up_all(self):
+ """
+ Run at the start of each test suite.
+ """
+ self.verify(self.nic in ["columbiaville_25g","columbiaville_100g"], "%s nic not support CVL switch filter" % self.nic)
+ self.dut_ports = self.dut.get_ports(self.nic)
+ # Verify that enough ports are available
+ self.verify(len(self.dut_ports) >= 1, "Insufficient ports")
+ localPort = self.tester.get_local_port(self.dut_ports[0])
+ self.__tx_iface = self.tester.get_interface(localPort)
+ self.dut.send_expect("ifconfig %s up" % self.__tx_iface, "# ")
+ self.pkt = Packet()
+ self.pmd = PmdOutput(self.dut)
-mac_vlan_pppoe_ipv6_pay_session_id_proto_id_scapy_str = {
- "matched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(dst="00:11:22:33:44:54",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'
- ]
-}
+ self.generate_file_with_fdir_rules()
+ self.path = self.dut.apps_name['test-pmd']
-tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id_in_queue_01 = {
- "name":"mac_vlan_pppoe_ipv6_pay_session_id_proto_id_in_queue_01",
- "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions queue index 2 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_session_id_proto_id_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_session_id_proto_id_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":4}}
-}
+ def set_up(self):
+ """
+ Run before each test case.
+ """
-tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id_queue_region_02 = {
- "name":"mac_vlan_pppoe_ipv6_pay_session_id_proto_id_queue_region_02",
- "validate_pattern":"flow validate 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 / end actions rss queues 4 5 end / end",
- "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 / end actions rss queues 4 5 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_session_id_proto_id_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[4, 5]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_session_id_proto_id_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[4, 5]}},
- "expect_results":{"expect_pkts":4}}
-}
+ def generate_file_with_fdir_rules(self):
+ """
+ generate file with fdir rules to make fdir table full, then test switch filter
+ """
+ pf_pci = self.dut.ports_info[0]['pci']
+ out = self.pmd.start_testpmd('default', eal_param='-a %s --log-level=ice,7'%pf_pci)
+ self.dut.send_expect("quit", "# ")
+ self.fdir_rule_number = self.pmd.get_max_rule_number(self,out)
+ src_file = 'dep/testpmd_cmds_rte_flow_fdir_rules'
+ flows = open(src_file, mode='w')
+ rule_count = 1
+ for i in range(0,255):
+ for j in range(0,255):
+ if not rule_count > self.fdir_rule_number:
+ flows.write('flow create 0 ingress pattern eth / ipv4 src is 192.168.%d.%d dst is 192.1.0.0 tos is 4 / tcp src is 25 dst is 23 / end actions queue index 5 / end \n' % (i, j))
+ rule_count += 1
+ else:
+ break
+ if rule_count > self.fdir_rule_number:
+ break
+ flows.close()
+ self.dut_file_dir = '/tmp'
+ self.dut.session.copy_file_to(src_file, self.dut_file_dir)
+ self.fdir_file = "/tmp/testpmd_cmds_rte_flow_fdir_rules"
-tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id_drop_03 = {
- "name":"mac_vlan_pppoe_ipv6_pay_session_id_proto_id_drop_03",
- "validate_pattern":"flow validate 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 / end actions drop / end",
- "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 / end actions drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_session_id_proto_id_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_session_id_proto_id_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":4}}
-}
+ def create_testpmd_command(self):
+ """
+ Create testpmd command for non-pipeline mode
+ """
+ #Prepare testpmd EAL and parameters
+ all_eal_param = self.dut.create_eal_parameters(cores='1S/4C/1T', ports=[0])
+ command = self.path + all_eal_param + " --log-level=\"ice,8\" -- -i --rxq=16 --txq=16 --cmdline-file=%s" % self.fdir_file
+ # command = "./%s/app/testpmd %s --log-level=\"ice,8\" -- -i %s" % (self.dut.target, all_eal_param, "--rxq=16 --txq=16")
+ return command
-tvs_mac_vlan_pppoe_ipv6_pay_session_id_proto_id = [
- tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id_in_queue_01,
- tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id_queue_region_02,
- tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id_drop_03
- ]
+ def create_testpmd_command_pipeline_mode(self):
+ """
+ Create testpmd command for pipeline mode
+ """
+ #Prepare testpmd EAL and parameters
+ all_eal_param = self.dut.create_eal_parameters(cores='1S/4C/1T', ports=[0], port_options={0:"pipeline-mode-support=1"})
+ command = self.path + all_eal_param + " --log-level=\"ice,8\" -- -i --rxq=16 --txq=16"
+ return command
-mac_pppoe_ipv4_pay_session_id_proto_id_scapy_str = {
- "matched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(dst="00:11:22:33:44:54",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)'
- ]
-}
+ def launch_testpmd(self, is_non_pipeline):
+ """
+ launch testpmd with the command
+ """
+ if is_non_pipeline:
+ command = self.create_testpmd_command()
+ else:
+ command = self.create_testpmd_command_pipeline_mode()
+ out = self.dut.send_expect(command, "testpmd> ", 300)
+ self.dut.send_expect("port config all rss all", "testpmd> ", 15)
+ self.dut.send_expect("port config 0 rss-hash-key ipv4 1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd", "testpmd> ", 15)
+ self.dut.send_expect("rx_vxlan_port add 4789 0", "testpmd> ", 15)
+ self.dut.send_expect("set fwd rxonly", "testpmd> ", 15)
+ self.dut.send_expect("set verbose 1", "testpmd> ", 15)
-tv_mac_pppoe_ipv4_pay_session_id_proto_id_in_queue_01 = {
- "name":"mac_pppoe_ipv4_pay_session_id_proto_id_in_queue_01",
- "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions queue index 2 / end",
- "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 queue index 2 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv4_pay_session_id_proto_id_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv4_pay_session_id_proto_id_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":3}}
-}
+ def send_and_check_packets(self, dic, port):
+ """
+ general packets processing workflow.
+ """
+ #Specify the port to use
+ dic["check_func"]["param"]["expect_port"] = port
+ self.dut.send_expect("start", "testpmd> ", 15)
+ time.sleep(2)
+ #send packets
+ self.pkt.update_pkt(dic["scapy_str"])
+ self.pkt.send_pkt(self.tester, tx_port=self.__tx_iface, count=1, timeout=370)
+ time.sleep(3)
+ out = self.dut.send_expect("stop", "testpmd> ", 15)
+ result_flag, log_msg = dic["check_func"]["func"](out, dic["check_func"]["param"], dic["expect_results"])
+ return result_flag, log_msg
-tv_mac_pppoe_ipv4_pay_session_id_proto_id_queue_region_02 = {
- "name":"mac_pppoe_ipv4_pay_session_id_proto_id_queue_region_02",
- "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions rss queues 4 5 end / end",
- "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 rss queues 4 5 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv4_pay_session_id_proto_id_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[4, 5]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv4_pay_session_id_proto_id_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[4, 5]}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tv_mac_pppoe_ipv4_pay_session_id_proto_id_drop_03 = {
- "name":"mac_pppoe_ipv4_pay_session_id_proto_id_drop_03",
- "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions drop / end",
- "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 drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv4_pay_session_id_proto_id_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv4_pay_session_id_proto_id_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tvs_mac_pppoe_ipv4_pay_session_id_proto_id = [
- tv_mac_pppoe_ipv4_pay_session_id_proto_id_in_queue_01,
- tv_mac_pppoe_ipv4_pay_session_id_proto_id_queue_region_02,
- tv_mac_pppoe_ipv4_pay_session_id_proto_id_drop_03
- ]
-
-mac_pppoe_ipv6_pay_session_id_proto_id_scapy_str = {
- "matched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(dst="00:11:22:33:44:54",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'
- ]
-}
-
-tv_mac_pppoe_ipv6_pay_session_id_proto_id_in_queue_01 = {
- "name":"mac_pppoe_ipv6_pay_session_id_proto_id_in_queue_01",
- "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions queue index 2 / end",
- "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 queue index 2 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv6_pay_session_id_proto_id_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv6_pay_session_id_proto_id_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tv_mac_pppoe_ipv6_pay_session_id_proto_id_queue_region_02 = {
- "name":"mac_pppoe_ipv6_pay_session_id_proto_id_queue_region_02",
- "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions rss queues 4 5 end / end",
- "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 rss queues 4 5 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv6_pay_session_id_proto_id_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[4, 5]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv6_pay_session_id_proto_id_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[4, 5]}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tv_mac_pppoe_ipv6_pay_session_id_proto_id_drop_03 = {
- "name":"mac_pppoe_ipv6_pay_session_id_proto_id_drop_03",
- "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions drop / end",
- "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 drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv6_pay_session_id_proto_id_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv6_pay_session_id_proto_id_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tvs_mac_pppoe_ipv6_pay_session_id_proto_id = [
- tv_mac_pppoe_ipv6_pay_session_id_proto_id_in_queue_01,
- tv_mac_pppoe_ipv6_pay_session_id_proto_id_queue_region_02,
- tv_mac_pppoe_ipv6_pay_session_id_proto_id_drop_03
- ]
-
-mac_pppoe_ipv4_pay_ip_address_scapy_str = {
- "matched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)'],
- "mismatched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/Raw("x"*80)'
- ]
-}
-
-tv_mac_pppoe_ipv4_pay_ip_address_in_queue_01 = {
- "name":"mac_pppoe_ipv4_pay_ip_address_in_queue_01",
- "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions queue index 2 / end",
- "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 queue index 2 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv4_pay_ip_address_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv4_pay_ip_address_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":2}}
-}
-
-tv_mac_pppoe_ipv4_pay_ip_address_queue_region_02 = {
- "name":"mac_pppoe_ipv4_pay_ip_address_queue_region_02",
- "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions rss queues 2 3 end / end",
- "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 rss queues 2 3 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv4_pay_ip_address_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv4_pay_ip_address_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":2}}
-}
-
-tv_mac_pppoe_ipv4_pay_ip_address_drop_03 = {
- "name":"mac_pppoe_ipv4_pay_ip_address_drop_03",
- "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions drop / end",
- "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 drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv4_pay_ip_address_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv4_pay_ip_address_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":2}}
-}
-
-tvs_mac_pppoe_ipv4_pay_ip_address = [
- tv_mac_pppoe_ipv4_pay_ip_address_in_queue_01,
- tv_mac_pppoe_ipv4_pay_ip_address_queue_region_02,
- tv_mac_pppoe_ipv4_pay_ip_address_drop_03
- ]
-
-mac_pppoe_ipv4_udp_pay_scapy_str = {
- "matched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=27,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=19)/Raw("x" * 80)'
- ]
-}
-
-tv_mac_pppoe_ipv4_udp_pay_in_queue_01 = {
- "name":"mac_pppoe_ipv4_udp_pay_in_queue_01",
- "validate_pattern":"flow validate 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 actions queue index 1 / end",
- "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 actions queue index 1 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv4_udp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv4_udp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_pppoe_ipv4_udp_pay_queue_region_02 = {
- "name":"mac_pppoe_ipv4_udp_pay_queue_region_02",
- "validate_pattern":"flow validate 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 actions rss queues 7 8 end / end",
- "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 actions rss queues 7 8 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv4_udp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[7, 8]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv4_udp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[7, 8]}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_pppoe_ipv4_udp_pay_drop_03 = {
- "name":"mac_pppoe_ipv4_udp_pay_drop_03",
- "validate_pattern":"flow validate 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 actions drop / end",
- "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 actions drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv4_udp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv4_udp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tvs_mac_pppoe_ipv4_udp_pay = [
- tv_mac_pppoe_ipv4_udp_pay_in_queue_01,
- tv_mac_pppoe_ipv4_udp_pay_queue_region_02,
- tv_mac_pppoe_ipv4_udp_pay_drop_03
- ]
-
-mac_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str = {
- "matched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'
- ]
-}
-
-tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port_in_queue_01 = {
- "name":"mac_pppoe_ipv4_udp_pay_non_src_dst_port_in_queue_01",
- "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 queue index 2 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port_queue_region_02 = {
- "name":"mac_pppoe_ipv4_udp_pay_non_src_dst_port_queue_region_02",
- "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 rss queues 2 3 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port_drop_03 = {
- "name":"mac_pppoe_ipv4_udp_pay_non_src_dst_port_drop_03",
- "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 drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tvs_mac_pppoe_ipv4_udp_pay_non_src_dst_port = [
- tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port_in_queue_01,
- tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port_queue_region_02,
- tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port_drop_03
- ]
-
-mac_pppoe_ipv4_tcp_pay_scapy_str = {
- "matched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=27,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=19)/Raw("x" * 80)'
- ]
-}
-
-tv_mac_pppoe_ipv4_tcp_pay_in_queue_01 = {
- "name":"mac_pppoe_ipv4_tcp_pay_in_queue_01",
- "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 actions queue index 1 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_pppoe_ipv4_tcp_pay_queue_region_02 = {
- "name":"mac_pppoe_ipv4_tcp_pay_queue_region_02",
- "validate_pattern":"flow validate 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 actions rss queues 7 8 end / end",
- "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 actions rss queues 7 8 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[7, 8]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[7, 8]}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_pppoe_ipv4_tcp_pay_drop_03 = {
- "name":"mac_pppoe_ipv4_tcp_pay_drop_03",
- "validate_pattern":"flow validate 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 actions drop / end",
- "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 actions drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tvs_mac_pppoe_ipv4_tcp_pay = [
- tv_mac_pppoe_ipv4_tcp_pay_in_queue_01,
- tv_mac_pppoe_ipv4_tcp_pay_queue_region_02,
- tv_mac_pppoe_ipv4_tcp_pay_drop_03
- ]
-
-mac_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str = {
- "matched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'
- ]
-}
-
-tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_in_queue_01 = {
- "name":"mac_pppoe_ipv4_tcp_pay_non_src_dst_port_in_queue_01",
- "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp / end actions queue index 2 / end",
- "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 queue index 2 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_queue_region_02 = {
- "name":"mac_pppoe_ipv4_tcp_pay_non_src_dst_port_queue_region_02",
- "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp / end actions rss queues 7 8 end / end",
- "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 rss queues 7 8 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[7, 8]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[7, 8]}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_drop_03 = {
- "name":"mac_pppoe_ipv4_tcp_pay_non_src_dst_port_drop_03",
- "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp / end actions drop / end",
- "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 drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tvs_mac_pppoe_ipv4_tcp_pay_non_src_dst_port = [
- tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_in_queue_01,
- tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_queue_region_02,
- tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_drop_03
- ]
-
-mac_pppoe_ipv6_pay_ip_address_scapy_str = {
- "matched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'],
- "mismatched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*80)'
- ]
-}
-
-tv_mac_pppoe_ipv6_pay_ip_address_in_queue_01 = {
- "name":"mac_pppoe_ipv6_pay_ip_address_in_queue_01",
- "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / end actions queue index 1 / end",
- "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:8475:1111:3900:2022 / end actions queue index 1 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv6_pay_ip_address_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv6_pay_ip_address_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":2}}
-}
-
-tv_mac_pppoe_ipv6_pay_ip_address_queue_region_02 = {
- "name":"mac_pppoe_ipv6_pay_ip_address_queue_region_02",
- "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / end actions rss queues 2 3 end / end",
- "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:8475:1111:3900:2022 / end actions rss queues 2 3 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv6_pay_ip_address_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv6_pay_ip_address_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":2}}
-}
-
-tv_mac_pppoe_ipv6_pay_ip_address_drop_03 = {
- "name":"mac_pppoe_ipv6_pay_ip_address_drop_03",
- "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / end actions drop / end",
- "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:8475:1111:3900:2022 / end actions drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv6_pay_ip_address_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv6_pay_ip_address_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":2}}
-}
-
-tvs_mac_pppoe_ipv6_pay_ip_address = [
- tv_mac_pppoe_ipv6_pay_ip_address_in_queue_01,
- tv_mac_pppoe_ipv6_pay_ip_address_queue_region_02,
- tv_mac_pppoe_ipv6_pay_ip_address_drop_03
- ]
-
-mac_pppoe_ipv6_udp_pay_scapy_str = {
- "matched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=27,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=19)/Raw("x" * 80)'
- ]
-}
-
-tv_mac_pppoe_ipv6_udp_pay_in_queue_01 = {
- "name":"mac_pppoe_ipv6_udp_pay_in_queue_01",
- "validate_pattern":"flow validate 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 queue index 1 / end",
- "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 queue index 1 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv6_udp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv6_udp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tv_mac_pppoe_ipv6_udp_pay_queue_region_02 = {
- "name":"mac_pppoe_ipv6_udp_pay_queue_region_02",
- "validate_pattern":"flow validate 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 rss queues 4 5 end / end",
- "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 rss queues 4 5 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv6_udp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[4, 5]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv6_udp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[4, 5]}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tv_mac_pppoe_ipv6_udp_pay_drop_03 = {
- "name":"mac_pppoe_ipv6_udp_pay_drop_03",
- "validate_pattern":"flow validate 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 drop / end",
- "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 drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv6_udp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv6_udp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tvs_mac_pppoe_ipv6_udp_pay = [
- tv_mac_pppoe_ipv6_udp_pay_in_queue_01,
- tv_mac_pppoe_ipv6_udp_pay_queue_region_02,
- tv_mac_pppoe_ipv6_udp_pay_drop_03
- ]
-
-mac_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str = {
- "matched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'
- ]
-}
-
-tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port_in_queue_01 = {
- "name":"mac_pppoe_ipv6_udp_pay_non_src_dst_port_in_queue_01",
- "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp / end actions queue index 1 / end",
- "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:8475:1111:3900:2022 / udp / end actions queue index 1 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port_queue_region_02 = {
- "name":"mac_pppoe_ipv6_udp_pay_non_src_dst_port_queue_region_02",
- "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp / end actions rss queues 2 3 end / end",
- "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:8475:1111:3900:2022 / udp / end actions rss queues 2 3 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port_drop_03 = {
- "name":"mac_pppoe_ipv6_udp_pay_non_src_dst_port_drop_03",
- "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp / end actions drop / end",
- "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:8475:1111:3900:2022 / udp / end actions drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tvs_mac_pppoe_ipv6_udp_pay_non_src_dst_port = [
- tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port_in_queue_01,
- tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port_queue_region_02,
- tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port_drop_03
- ]
-
-mac_pppoe_ipv6_tcp_pay_scapy_str = {
- "matched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=27,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=19)/Raw("x" * 80)'
- ]
-}
-
-tv_mac_pppoe_ipv6_tcp_pay_in_queue_01 = {
- "name":"mac_pppoe_ipv6_tcp_pay_in_queue_01",
- "validate_pattern":"flow validate 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 queue index 1 / end",
- "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 queue index 1 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tv_mac_pppoe_ipv6_tcp_pay_queue_region_02 = {
- "name":"mac_pppoe_ipv6_tcp_pay_queue_region_02",
- "validate_pattern":"flow validate 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 rss queues 4 5 end / end",
- "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 rss queues 4 5 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[4, 5]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[4, 5]}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tv_mac_pppoe_ipv6_tcp_pay_drop_03 = {
- "name":"mac_pppoe_ipv6_tcp_pay_drop_03",
- "validate_pattern":"flow validate 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 drop / end",
- "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 drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tvs_mac_pppoe_ipv6_tcp_pay = [
- tv_mac_pppoe_ipv6_tcp_pay_in_queue_01,
- tv_mac_pppoe_ipv6_tcp_pay_queue_region_02,
- tv_mac_pppoe_ipv6_tcp_pay_drop_03
- ]
-
-mac_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str = {
- "matched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'
- ]
-}
-
-tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_in_queue_01 = {
- "name":"mac_pppoe_ipv6_tcp_pay_non_src_dst_port_in_queue_01",
- "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp / end actions queue index 1 / end",
- "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:8475:1111:3900:2022 / tcp / end actions queue index 1 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_queue_region_02 = {
- "name":"mac_pppoe_ipv6_tcp_pay_non_src_dst_port_queue_region_02",
- "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp / end actions rss queues 2 3 end / end",
- "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:8475:1111:3900:2022 / tcp / end actions rss queues 2 3 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_drop_03 = {
- "name":"mac_pppoe_ipv6_tcp_pay_non_src_dst_port_drop_03",
- "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp / end actions drop / end",
- "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:8475:1111:3900:2022 / tcp / end actions drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tvs_mac_pppoe_ipv6_tcp_pay_non_src_dst_port = [
- tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_in_queue_01,
- tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_queue_region_02,
- tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_drop_03
- ]
-
-mac_vlan_pppoe_ipv4_pay_ip_address_scapy_str = {
- "matched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)'],
- "mismatched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/Raw("x"*80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/Raw("x"*80)'
- ]
-}
-
-tv_mac_vlan_pppoe_ipv4_pay_ip_address_in_queue_01 = {
- "name":"mac_vlan_pppoe_ipv4_pay_ip_address_in_queue_01",
- "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions queue index 2 / end",
- "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 queue index 2 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_ip_address_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_ip_address_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tv_mac_vlan_pppoe_ipv4_pay_ip_address_queue_region_02 = {
- "name":"mac_vlan_pppoe_ipv4_pay_ip_address_queue_region_02",
- "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions rss queues 2 3 end / end",
- "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 rss queues 2 3 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_ip_address_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_ip_address_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tv_mac_vlan_pppoe_ipv4_pay_ip_address_drop_03 = {
- "name":"mac_vlan_pppoe_ipv4_pay_ip_address_drop_03",
- "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions drop / end",
- "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 drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_ip_address_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_ip_address_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tvs_mac_vlan_pppoe_ipv4_pay_ip_address = [
- tv_mac_vlan_pppoe_ipv4_pay_ip_address_in_queue_01,
- tv_mac_vlan_pppoe_ipv4_pay_ip_address_queue_region_02,
- tv_mac_vlan_pppoe_ipv4_pay_ip_address_drop_03
- ]
-
-mac_vlan_pppoe_ipv4_udp_pay_scapy_str = {
- "matched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=27,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=19)/Raw("x" * 80)'
- ]
-}
-
-tv_mac_vlan_pppoe_ipv4_udp_pay_in_queue_01 = {
- "name":"mac_vlan_pppoe_ipv4_udp_pay",
- "validate_pattern":"flow validate 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 is 23 / end actions queue index 1 / end",
- "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 is 23 / end actions queue index 1 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":5}}
-}
-
-tv_mac_vlan_pppoe_ipv4_udp_pay_queue_region_02 = {
- "name":"mac_vlan_pppoe_ipv4_udp_pay_queue_region_02",
- "validate_pattern":"flow validate 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 is 23 / end actions rss queues 7 8 end / end",
- "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 is 23 / end actions rss queues 7 8 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[7, 8]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[7, 8]}},
- "expect_results":{"expect_pkts":5}}
-}
-
-tv_mac_vlan_pppoe_ipv4_udp_pay_drop_03 = {
- "name":"mac_vlan_pppoe_ipv4_udp_pay_drop_03",
- "validate_pattern":"flow validate 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 is 23 / end actions drop / end",
- "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 is 23 / end actions drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":5}}
-}
-
-tvs_mac_vlan_pppoe_ipv4_udp_pay = [
- tv_mac_vlan_pppoe_ipv4_udp_pay_in_queue_01,
- tv_mac_vlan_pppoe_ipv4_udp_pay_queue_region_02,
- tv_mac_vlan_pppoe_ipv4_udp_pay_drop_03
- ]
-
-mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str = {
- "matched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'
- ]
-}
-
-tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_in_queue_01 = {
- "name":"mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_in_queue_01",
- "validate_pattern":"flow validate 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 queue index 2 / end",
- "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 queue index 2 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":5}}
-}
-
-tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_queue_region_02 = {
- "name":"mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_queue_region_02",
- "validate_pattern":"flow validate 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 rss queues 7 8 end / end",
- "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 rss queues 7 8 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[7, 8]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[7, 8]}},
- "expect_results":{"expect_pkts":5}}
-}
-
-tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_drop_03 = {
- "name":"mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_drop_03",
- "validate_pattern":"flow validate 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 drop / end",
- "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 drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":5}}
-}
-
-tvs_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port = [
- tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_in_queue_01,
- tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_queue_region_02,
- tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_drop_03
- ]
-
-mac_vlan_pppoe_ipv4_tcp_pay_scapy_str = {
- "matched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=27,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=19)/Raw("x" * 80)'
- ]
-}
-
-tv_mac_vlan_pppoe_ipv4_tcp_pay_in_queue_01 = {
- "name":"mac_vlan_pppoe_ipv4_tcp_pay_in_queue_01",
- "validate_pattern":"flow validate 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 is 23 / end actions queue index 1 / end",
- "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 is 23 / end actions queue index 1 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":5}}
-}
-
-tv_mac_vlan_pppoe_ipv4_tcp_pay_queue_region_02 = {
- "name":"mac_vlan_pppoe_ipv4_tcp_pay_queue_region_02",
- "validate_pattern":"flow validate 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 is 23 / end actions rss queues 7 8 end / end",
- "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 is 23 / end actions rss queues 7 8 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[7, 8]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[7, 8]}},
- "expect_results":{"expect_pkts":5}}
-}
-
-tv_mac_vlan_pppoe_ipv4_tcp_pay_drop_03 = {
- "name":"mac_vlan_pppoe_ipv4_tcp_pay_drop_03",
- "validate_pattern":"flow validate 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 is 23 / end actions drop / end",
- "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 is 23 / end actions drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":5}}
-}
-
-tvs_mac_vlan_pppoe_ipv4_tcp_pay = [
- tv_mac_vlan_pppoe_ipv4_tcp_pay_in_queue_01,
- tv_mac_vlan_pppoe_ipv4_tcp_pay_queue_region_02,
- tv_mac_vlan_pppoe_ipv4_tcp_pay_drop_03
- ]
-
-mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str = {
- "matched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'
- ]
-}
-
-tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_in_queue_01 = {
- "name":"mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_in_queue_01",
- "validate_pattern":"flow validate 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 queue index 2 / end",
- "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 queue index 2 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":2}},
- "expect_results":{"expect_pkts":5}}
-}
-
-tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_queue_region_02 = {
- "name":"mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_queue_region_02",
- "validate_pattern":"flow validate 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 rss queues 7 8 end / end",
- "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 rss queues 7 8 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[7, 8]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[7, 8]}},
- "expect_results":{"expect_pkts":5}}
-}
-
-tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_drop_03 = {
- "name":"mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_drop_03",
- "validate_pattern":"flow validate 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 drop / end",
- "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 drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":5}}
-}
-
-tvs_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port = [
- tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_in_queue_01,
- tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_queue_region_02,
- tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_drop_03
- ]
-
-mac_vlan_pppoe_ipv6_pay_ip_address_scapy_str = {
- "matched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'],
- "mismatched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'
- ]
-}
-
-tv_mac_vlan_pppoe_ipv6_pay_ip_address_in_queue_01 = {
- "name":"mac_vlan_pppoe_ipv6_pay_ip_address_in_queue_01",
- "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / end actions queue index 1 / end",
- "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 actions queue index 1 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_ip_address_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_ip_address_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":2}}
-}
-
-tv_mac_vlan_pppoe_ipv6_pay_ip_address_queue_region_02 = {
- "name":"mac_vlan_pppoe_ipv6_pay_ip_address_queue_region_02",
- "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / end actions rss queues 2 3 end / end",
- "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 actions rss queues 2 3 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_ip_address_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_ip_address_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":2}}
-}
-
-tv_mac_vlan_pppoe_ipv6_pay_ip_address_drop_03 = {
- "name":"mac_vlan_pppoe_ipv6_pay_ip_address_drop_03",
- "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / end actions drop / end",
- "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 actions drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_ip_address_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_ip_address_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":2}}
-}
-
-tvs_mac_vlan_pppoe_ipv6_pay_ip_address = [
- tv_mac_vlan_pppoe_ipv6_pay_ip_address_in_queue_01,
- tv_mac_vlan_pppoe_ipv6_pay_ip_address_queue_region_02,
- tv_mac_vlan_pppoe_ipv6_pay_ip_address_drop_03
- ]
-
-mac_vlan_pppoe_ipv6_udp_pay_scapy_str = {
- "matched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=27,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=19)/Raw("x" * 80)'
- ]
-}
-
-tv_mac_vlan_pppoe_ipv6_udp_pay_in_queue_01 = {
- "name":"mac_vlan_pppoe_ipv6_udp_pay_in_queue_01",
- "validate_pattern":"flow validate 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 queue index 1 / end",
- "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 queue index 1 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_vlan_pppoe_ipv6_udp_pay_queue_region_02 = {
- "name":"mac_vlan_pppoe_ipv6_udp_pay_queue_region_02",
- "validate_pattern":"flow validate 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 rss queues 4 5 end / end",
- "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 rss queues 4 5 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[4, 5]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[4, 5]}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_vlan_pppoe_ipv6_udp_pay_drop_03 = {
- "name":"mac_vlan_pppoe_ipv6_udp_pay_drop_03",
- "validate_pattern":"flow validate 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 drop / end",
- "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 drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tvs_mac_vlan_pppoe_ipv6_udp_pay = [
- tv_mac_vlan_pppoe_ipv6_udp_pay_in_queue_01,
- tv_mac_vlan_pppoe_ipv6_udp_pay_queue_region_02,
- tv_mac_vlan_pppoe_ipv6_udp_pay_drop_03
- ]
-
-mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str = {
- "matched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'
- ]
-}
-
-tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_in_queue_01 = {
- "name":"mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_in_queue_01",
- "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / udp / end actions queue index 1 / end",
- "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 queue index 1 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_queue_region_02 = {
- "name":"mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_queue_region_02",
- "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / udp / end actions rss queues 2 3 end / end",
- "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 rss queues 2 3 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_drop_03 = {
- "name":"mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_drop_03",
- "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / udp / end actions drop / end",
- "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 drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tvs_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port = [
- tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_in_queue_01,
- tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_queue_region_02,
- tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_drop_03
- ]
-
-mac_vlan_pppoe_ipv6_tcp_pay_scapy_str = {
- "matched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=27,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=19)/Raw("x" * 80)'
- ]
-}
-
-tv_mac_vlan_pppoe_ipv6_tcp_pay_in_queue_01 = {
- "name":"mac_vlan_pppoe_ipv6_tcp_pay_in_queue_01",
- "validate_pattern":"flow validate 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 queue index 1 / end",
- "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 queue index 1 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_vlan_pppoe_ipv6_tcp_pay_queue_region_02 = {
- "name":"mac_vlan_pppoe_ipv6_tcp_pay_queue_region_02",
- "validate_pattern":"flow validate 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 rss queues 4 5 end / end",
- "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 rss queues 4 5 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[4, 5]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[4, 5]}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_vlan_pppoe_ipv6_tcp_pay_drop_03 = {
- "name":"mac_vlan_pppoe_ipv6_tcp_pay_drop_03",
- "validate_pattern":"flow validate 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 drop / end",
- "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 drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tvs_mac_vlan_pppoe_ipv6_tcp_pay = [
- tv_mac_vlan_pppoe_ipv6_tcp_pay_in_queue_01,
- tv_mac_vlan_pppoe_ipv6_tcp_pay_queue_region_02,
- tv_mac_vlan_pppoe_ipv6_tcp_pay_drop_03
- ]
-
-mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str = {
- "matched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'
- ]
-}
-
-tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_in_queue_01 = {
- "name":"mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_in_queue_01",
- "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / tcp / end actions queue index 1 / end",
- "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 queue index 1 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_queue_region_02 = {
- "name":"mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_queue_region_02",
- "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / tcp / end actions rss queues 2 3 end / end",
- "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 rss queues 2 3 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_drop_03 = {
- "name":"mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_drop_03",
- "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / tcp / end actions drop / end",
- "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 drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":False},
- "matched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tvs_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port = [
- tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_in_queue_01,
- tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_queue_region_02,
- tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_drop_03
- ]
-
-mac_pppoe_lcp_pay_scapy_str = {
- "matched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:53",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'
- ]
-}
-
-tv_mac_pppoe_lcp_pay_in_queue_01 = {
- "name":"mac_pppoe_lcp_pay_in_queue_01",
- "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0xc021 / end actions queue index 1 / end",
- "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 queue index 1 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":True},
- "matched":{"scapy_str":mac_pppoe_lcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_lcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tv_mac_pppoe_lcp_pay_queue_region_02 = {
- "name":"mac_pppoe_lcp_pay_queue_region_02",
- "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0xc021 / end actions rss queues 2 3 end / end",
- "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 rss queues 2 3 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":True},
- "matched":{"scapy_str":mac_pppoe_lcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_lcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tv_mac_pppoe_lcp_pay_drop_03 = {
- "name":"mac_pppoe_lcp_pay_drop_03",
- "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0xc021 / end actions drop / end",
- "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 drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":True},
- "matched":{"scapy_str":mac_pppoe_lcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_lcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tvs_mac_pppoe_lcp_pay = [
- tv_mac_pppoe_lcp_pay_in_queue_01,
- tv_mac_pppoe_lcp_pay_queue_region_02,
- tv_mac_pppoe_lcp_pay_drop_03
- ]
-
-mac_pppoe_ipcp_pay_scapy_str = {
- "matched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:53",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'
- ]
-}
-
-tv_mac_pppoe_ipcp_pay_in_queue_01 = {
- "name":"mac_pppoe_ipcp_pay_in_queue_01",
- "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x8021 / end actions queue index 1 / end",
- "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 queue index 1 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":True},
- "matched":{"scapy_str":mac_pppoe_ipcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tv_mac_pppoe_ipcp_pay_queue_region_02 = {
- "name":"mac_pppoe_ipcp_pay_queue_region_02",
- "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x8021 / end actions rss queues 2 3 end / end",
- "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 rss queues 2 3 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":True},
- "matched":{"scapy_str":mac_pppoe_ipcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tv_mac_pppoe_ipcp_pay_drop_03 = {
- "name":"mac_pppoe_ipcp_pay_drop_03",
- "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x8021 / end actions drop / end",
- "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 drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":True},
- "matched":{"scapy_str":mac_pppoe_ipcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_pppoe_ipcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":3}}
-}
-
-tvs_mac_pppoe_ipcp_pay = [
- tv_mac_pppoe_ipcp_pay_in_queue_01,
- tv_mac_pppoe_ipcp_pay_queue_region_02,
- tv_mac_pppoe_ipcp_pay_drop_03
- ]
-
-mac_vlan_pppoe_lcp_pay_scapy_str = {
- "matched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'
- ]
-}
-
-tv_mac_vlan_pppoe_lcp_pay_in_queue_01 = {
- "name":"mac_vlan_pppoe_lcp_pay_in_queue_01",
- "validate_pattern":"flow validate 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 / end actions queue index 1 / end",
- "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 / end actions queue index 1 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":True},
- "matched":{"scapy_str":mac_vlan_pppoe_lcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_lcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_vlan_pppoe_lcp_pay_queue_region_02 = {
- "name":"mac_vlan_pppoe_lcp_pay_queue_region_02",
- "validate_pattern":"flow validate 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 / end actions rss queues 2 3 end / end",
- "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 / end actions rss queues 2 3 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":True},
- "matched":{"scapy_str":mac_vlan_pppoe_lcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_lcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_vlan_pppoe_lcp_pay_drop_03 = {
- "name":"mac_vlan_pppoe_lcp_pay_drop_03",
- "validate_pattern":"flow validate 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 / end actions drop / end",
- "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 / end actions drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":True},
- "matched":{"scapy_str":mac_vlan_pppoe_lcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_lcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tvs_mac_vlan_pppoe_lcp_pay = [
- tv_mac_vlan_pppoe_lcp_pay_in_queue_01,
- tv_mac_vlan_pppoe_lcp_pay_queue_region_02,
- tv_mac_vlan_pppoe_lcp_pay_drop_03
- ]
-
-mac_vlan_pppoe_ipcp_pay_scapy_str = {
- "matched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)'],
- "mismatched": [
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
- 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'
- ]
-}
-
-tv_mac_vlan_pppoe_ipcp_pay_in_queue_01 = {
- "name":"mac_vlan_pppoe_ipcp_pay_in_queue_01",
- "validate_pattern":"flow validate 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 / end actions queue index 1 / end",
- "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 / end actions queue index 1 / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":True},
- "matched":{"scapy_str":mac_vlan_pppoe_ipcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_in_queue,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
- "param":{"expect_port":0, "expect_queues":1}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_vlan_pppoe_ipcp_pay_queue_region_02 = {
- "name":"mac_vlan_pppoe_ipcp_pay_queue_region_02",
- "validate_pattern":"flow validate 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 / end actions rss queues 2 3 end / end",
- "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 / end actions rss queues 2 3 end / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":True},
- "matched":{"scapy_str":mac_vlan_pppoe_ipcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_queue_region,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
- "param":{"expect_port":0, "expect_queues":[2, 3]}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tv_mac_vlan_pppoe_ipcp_pay_drop_03 = {
- "name":"mac_vlan_pppoe_ipcp_pay_drop_03",
- "validate_pattern":"flow validate 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 / end actions drop / end",
- "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 / end actions drop / end",
- "configuration":{
- "is_non_pipeline":True,
- "is_need_rss_rule":True},
- "matched":{"scapy_str":mac_vlan_pppoe_ipcp_pay_scapy_str["matched"],
- "check_func":{"func":rfc.check_output_log_drop,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
- "mismatched":{"scapy_str":mac_vlan_pppoe_ipcp_pay_scapy_str["mismatched"],
- "check_func":{"func":rfc.check_output_log_drop_mismatched,
- "param":{"expect_port":0, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":4}}
-}
-
-tvs_mac_vlan_pppoe_ipcp_pay = [
- tv_mac_vlan_pppoe_ipcp_pay_in_queue_01,
- tv_mac_vlan_pppoe_ipcp_pay_queue_region_02,
- tv_mac_vlan_pppoe_ipcp_pay_drop_03
- ]
-
-test_results = OrderedDict()
-
-class CVLSwitchFilterTest(TestCase):
-
- def bind_nics_driver(self, ports, driver=""):
- # modprobe vfio driver
- if driver == "vfio-pci":
- for port in ports:
- netdev = self.dut.ports_info[port]['port']
- driver = netdev.get_nic_driver()
- if driver != 'vfio-pci':
- netdev.bind_driver(driver='vfio-pci')
-
- elif driver == "igb_uio":
- # igb_uio should insmod as default, no need to check
- for port in ports:
- netdev = self.dut.ports_info[port]['port']
- driver = netdev.get_nic_driver()
- if driver != 'igb_uio':
- netdev.bind_driver(driver='igb_uio')
- else:
- for port in ports:
- netdev = self.dut.ports_info[port]['port']
- driver_now = netdev.get_nic_driver()
- if driver == "":
- driver = netdev.default_driver
- if driver != driver_now:
- netdev.bind_driver(driver=driver)
-
- def set_up_all(self):
- """
- Run at the start of each test suite.
- """
- self.verify(self.nic in ["columbiaville_25g","columbiaville_100g"], "%s nic not support CVL switch filter" % self.nic)
- self.dut_ports = self.dut.get_ports(self.nic)
- # Verify that enough ports are available
- self.verify(len(self.dut_ports) >= 1, "Insufficient ports")
- localPort = self.tester.get_local_port(self.dut_ports[0])
- self.__tx_iface = self.tester.get_interface(localPort)
- self.dut.send_expect("ifconfig %s up" % self.__tx_iface, "# ")
- self.pkt = Packet()
- #bind pf to kernel
- self.bind_nics_driver(self.dut_ports, driver="ice")
- #move comms package to package folder
- self.suite_config = rfc.get_suite_config(self)
- self.os_package_location = self.suite_config["os_default_package_file_location"]
- self.comms_package_location = self.suite_config["comms_package_file_location"]
- self.package_location = self.suite_config["package_file_location"]
- self.dut.send_expect("cp %s %s" % (self.comms_package_location, self.package_location), "# ")
- self.re_load_ice_driver()
- #bind pf to vfio-pci
- self.dut.send_expect('modprobe vfio-pci', '#')
- self.bind_nics_driver(self.dut_ports, driver="vfio-pci")
- self.pmd = PmdOutput(self.dut)
-
- self.generate_file_with_fdir_rules()
- self.path = self.dut.apps_name['test-pmd']
-
- def set_up(self):
- """
- Run before each test case.
- """
-
- def re_load_ice_driver(self):
- """
- remove and reload the driver
- """
- ice_driver_file_location = self.suite_config["ice_driver_file_location"]
- self.dut.send_expect("rmmod ice", "# ", 15)
- self.dut.send_expect("insmod %s" % ice_driver_file_location, "# ", 60)
- time.sleep(5)
-
- def generate_file_with_fdir_rules(self):
- """
- generate file with fdir rules to make fdir table full, then test switch filter
- """
- pf_pci = [self.dut.ports_info[0]['pci']]
- out = self.pmd.start_testpmd('default', ports=pf_pci, eal_param='--log-level=ice,7')
- self.dut.send_expect("quit", "# ")
- self.fdir_rule_number = self.pmd.get_max_rule_number(self,out)
- src_file = 'dep/testpmd_cmds_rte_flow_fdir_rules'
- flows = open(src_file, mode='w')
- rule_count = 1
- for i in range(0,255):
- for j in range(0,255):
- if not rule_count > self.fdir_rule_number:
- flows.write('flow create 0 ingress pattern eth / ipv4 src is 192.168.%d.%d dst is 192.1.0.0 tos is 4 / tcp src is 25 dst is 23 / end actions queue index 5 / end \n' % (i, j))
- rule_count += 1
- else:
- break
- if rule_count > self.fdir_rule_number:
- break
- flows.close()
- self.dut_file_dir = '/tmp'
- self.dut.session.copy_file_to(src_file, self.dut_file_dir)
- self.fdir_file = "/tmp/testpmd_cmds_rte_flow_fdir_rules"
-
- def create_testpmd_command(self):
- """
- Create testpmd command for non-pipeline mode
- """
- #Prepare testpmd EAL and parameters
- all_eal_param = self.dut.create_eal_parameters(cores='1S/4C/1T', ports=[0])
- command = self.path + all_eal_param + " --log-level=\"ice,8\" -- -i --rxq=16 --txq=16 --cmdline-file=%s" % self.fdir_file
- # command = "./%s/app/testpmd %s --log-level=\"ice,8\" -- -i %s" % (self.dut.target, all_eal_param, "--rxq=16 --txq=16")
- return command
-
- def create_testpmd_command_pipeline_mode(self):
- """
- Create testpmd command for pipeline mode
- """
- #Prepare testpmd EAL and parameters
- all_eal_param = self.dut.create_eal_parameters(cores='1S/4C/1T', ports=[0], port_options={0:"pipeline-mode-support=1"})
- command = self.path + all_eal_param + " --log-level=\"ice,8\" -- -i --rxq=16 --txq=16"
- return command
-
- def launch_testpmd(self, is_non_pipeline):
- """
- launch testpmd with the command
- """
- if is_non_pipeline:
- command = self.create_testpmd_command()
- else:
- command = self.create_testpmd_command_pipeline_mode()
- out = self.dut.send_expect(command, "testpmd> ", 300)
- self.dut.send_expect("port config all rss all", "testpmd> ", 15)
- self.dut.send_expect("port config 0 rss-hash-key ipv4 1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd", "testpmd> ", 15)
- self.dut.send_expect("rx_vxlan_port add 4789 0", "testpmd> ", 15)
- self.dut.send_expect("set fwd rxonly", "testpmd> ", 15)
- self.dut.send_expect("set verbose 1", "testpmd> ", 15)
-
- def send_and_check_packets(self, dic, port):
- """
- general packets processing workflow.
- """
- #Specify the port to use
- dic["check_func"]["param"]["expect_port"] = port
- self.dut.send_expect("start", "testpmd> ", 15)
- time.sleep(2)
- #send packets
- self.pkt.update_pkt(dic["scapy_str"])
- self.pkt.send_pkt(self.tester, tx_port=self.__tx_iface, count=1, timeout=370)
- time.sleep(3)
- out = self.dut.send_expect("stop", "testpmd> ", 15)
- result_flag, log_msg = dic["check_func"]["func"](out, dic["check_func"]["param"], dic["expect_results"])
- return result_flag, log_msg
-
- def send_packet_get_queue(self, packets_list):
- """
- general packets processing workflow.
- """
- self.dut.send_expect("start", "testpmd> ")
- # send packets
- self.pkt.update_pkt(packets_list)
- self.pkt.send_pkt(self.tester, tx_port=self.__tx_iface, count=1, timeout=370)
- time.sleep(3)
- out = self.dut.send_expect("stop", "testpmd> ", 15)
- p = re.compile(r"Forward Stats for RX Port= \d+/Queue=(\s?\d+)")
- res = p.findall(out)
- default_queue = [int(i) for i in res]
- return default_queue
+ def send_packet_get_queue(self, packets_list):
+ """
+ general packets processing workflow.
+ """
+ self.dut.send_expect("start", "testpmd> ")
+ # send packets
+ self.pkt.update_pkt(packets_list)
+ self.pkt.send_pkt(self.tester, tx_port=self.__tx_iface, count=1, timeout=370)
+ time.sleep(3)
+ out = self.dut.send_expect("stop", "testpmd> ", 15)
+ p = re.compile(r"Forward Stats for RX Port= \d+/Queue=(\s?\d+)")
+ res = p.findall(out)
+ default_queue = [int(i) for i in res]
+ return default_queue
def get_available_queue_num(self, default_queue, expect_queue, pmd_queue=8):
"""
@@ -5007,13 +3034,6 @@ class CVLSwitchFilterTest(TestCase):
def test_ethertype_filter_pppoed(self):
self._rte_flow_validate_pattern(tvs_ethertype_filter_pppoed)
- def test_ethertype_filter_pppoes(self):
- #launch testpmd
- self.launch_testpmd(True)
- #create a pppoe rss rule to make the pppoe packets have hash value, and queue group action work
- self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
- self._rte_flow_validate_pattern(tvs_ethertype_filter_pppoes, False)
-
#ether filter pipeline mode
def test_ethertype_filter_pppoed_pipeline_mode(self):
tvs_ethertype_filter_pppoed_pipeline_mode = copy.deepcopy(tvs_ethertype_filter_pppoed)
@@ -5023,18 +3043,6 @@ class CVLSwitchFilterTest(TestCase):
tv["configuration"]["is_non_pipeline"] = False
self._rte_flow_validate_pattern(tvs_ethertype_filter_pppoed_pipeline_mode)
- def test_ethertype_filter_pppoes_pipeline_mode(self):
- tvs_ethertype_filter_pppoes_pipeline_mode = copy.deepcopy(tvs_ethertype_filter_pppoes)
- for tv in tvs_ethertype_filter_pppoes_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- #launch testpmd
- self.launch_testpmd(False)
- #create a pppoe rss rule to make the pppoe packets have hash value, and queue group action work
- self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
- self._rte_flow_validate_pattern(tvs_ethertype_filter_pppoes_pipeline_mode, False)
-
#non-tunnel pipeline mode
def test_mac_ipv4_frag_pipeline_mode(self):
self._rte_flow_validate_pattern(tvs_mac_ipv4_frag_pipeline_mode)
@@ -5082,499 +3090,7 @@ class CVLSwitchFilterTest(TestCase):
def test_mac_ipv6_tcp_non_pipeline_mode(self):
self._rte_flow_validate_pattern(tvs_mac_ipv6_tcp_non_pipeline_mode)
- # 20.08
- def test_mac_vlan_pppoe_ipv4_pay_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_pay_session_id_proto_id)
-
- def test_mac_vlan_pppoe_ipv6_pay_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_pay_session_id_proto_id)
-
- def test_mac_pppoe_ipv4_pay_session_id_proto_id_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_pay_session_id_proto_id)
-
- def test_mac_pppoe_ipv6_pay_session_id_proto_id_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_pay_session_id_proto_id)
-
- def test_mac_pppoe_ipv4_pay_ip_address_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_pay_ip_address)
-
- def test_mac_pppoe_ipv4_udp_pay_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_udp_pay)
-
- def test_mac_pppoe_ipv4_udp_pay_non_src_dst_port_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_udp_pay_non_src_dst_port)
-
- def test_mac_pppoe_ipv4_tcp_pay_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_tcp_pay)
-
- def test_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_tcp_pay_non_src_dst_port)
-
- def test_mac_pppoe_ipv6_pay_ip_address_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_pay_ip_address)
-
- def test_mac_pppoe_ipv6_udp_pay_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_udp_pay)
-
- def test_mac_pppoe_ipv6_udp_pay_non_src_dst_port_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_udp_pay_non_src_dst_port)
-
- def test_mac_pppoe_ipv6_tcp_pay_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_tcp_pay)
-
- def test_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_tcp_pay_non_src_dst_port)
-
- def test_mac_vlan_pppoe_ipv4_pay_ip_address_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_pay_ip_address)
-
- def test_mac_vlan_pppoe_ipv4_udp_pay_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_udp_pay)
-
- def test_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port)
-
- def test_mac_vlan_pppoe_ipv4_tcp_pay_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_tcp_pay)
-
- def test_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port)
-
- def test_mac_vlan_pppoe_ipv6_pay_ip_address_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_pay_ip_address)
-
- def test_mac_vlan_pppoe_ipv6_udp_pay_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_udp_pay)
-
- def test_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port)
-
- def test_mac_vlan_pppoe_ipv6_tcp_pay_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_tcp_pay)
-
- def test_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_non_pipeline_mode(self):
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port)
-
- # pppoe control
- def test_mac_pppoe_lcp_pay_non_pipeline_mode(self):
- #launch testpmd
- self.launch_testpmd(True)
- #create a pppoe rss rule to make the pppoe control have hash value, and queue group action work
- self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
- self._rte_flow_validate_pattern(tvs_mac_pppoe_lcp_pay, False)
-
- def test_mac_pppoe_ipcp_pay_non_pipeline_mode(self):
- #launch testpmd
- self.launch_testpmd(True)
- #create a pppoe rss rule to make the pppoe control have hash value, and queue group action work
- self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipcp_pay, False)
-
- def test_mac_vlan_pppoe_lcp_pay_non_pipeline_mode(self):
- #launch testpmd
- self.launch_testpmd(True)
- #create a pppoe rss rule to make the pppoe control have hash value, and queue group action work
- self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_lcp_pay, False)
-
- def test_mac_vlan_pppoe_ipcp_pay_non_pipeline_mode(self):
- #launch testpmd
- self.launch_testpmd(True)
- #create a pppoe rss rule to make the pppoe control have hash value, and queue group action work
- self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipcp_pay, False)
-
- # 20.08 pipeline mode
- def test_mac_vlan_pppoe_ipv4_pay_pipeline_mode(self):
- tvs_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv4_pay_session_id_proto_id)
- for tv in tvs_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_pipeline_mode)
-
- def test_mac_vlan_pppoe_ipv6_pay_pipeline_mode(self):
- tvs_mac_vlan_pppoe_ipv6_pay_session_id_proto_id_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv6_pay_session_id_proto_id)
- for tv in tvs_mac_vlan_pppoe_ipv6_pay_session_id_proto_id_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_pay_session_id_proto_id_pipeline_mode)
-
- def test_mac_pppoe_ipv4_pay_session_id_proto_id_pipeline_mode(self):
- tvs_mac_pppoe_ipv4_pay_session_id_proto_id_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv4_pay_session_id_proto_id)
- for tv in tvs_mac_pppoe_ipv4_pay_session_id_proto_id_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_pay_session_id_proto_id_pipeline_mode)
-
- def test_mac_pppoe_ipv6_pay_session_id_proto_id_pipeline_mode(self):
- tvs_mac_pppoe_ipv6_pay_session_id_proto_id_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv6_pay_session_id_proto_id)
- for tv in tvs_mac_pppoe_ipv6_pay_session_id_proto_id_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_pay_session_id_proto_id_pipeline_mode)
-
- def test_mac_pppoe_ipv4_pay_ip_address_pipeline_mode(self):
- tvs_mac_pppoe_ipv4_pay_ip_address_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv4_pay_ip_address)
- for tv in tvs_mac_pppoe_ipv4_pay_ip_address_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_pay_ip_address_pipeline_mode)
-
- def test_mac_pppoe_ipv4_udp_pay_pipeline_mode(self):
- tvs_mac_pppoe_ipv4_udp_pay_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv4_udp_pay)
- for tv in tvs_mac_pppoe_ipv4_udp_pay_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_udp_pay_pipeline_mode)
-
- def test_mac_pppoe_ipv4_udp_pay_non_src_dst_port_pipeline_mode(self):
- tvs_mac_pppoe_ipv4_udp_pay_non_src_dst_port_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv4_udp_pay_non_src_dst_port)
- for tv in tvs_mac_pppoe_ipv4_udp_pay_non_src_dst_port_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_udp_pay_non_src_dst_port_pipeline_mode)
-
- def test_mac_pppoe_ipv4_tcp_pay_pipeline_mode(self):
- tvs_mac_pppoe_ipv4_tcp_pay_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv4_tcp_pay)
- for tv in tvs_mac_pppoe_ipv4_tcp_pay_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_tcp_pay_pipeline_mode)
-
- def test_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_pipeline_mode(self):
- tvs_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv4_tcp_pay_non_src_dst_port)
- for tv in tvs_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_pipeline_mode)
-
- def test_mac_pppoe_ipv6_pay_ip_address_pipeline_mode(self):
- tvs_mac_pppoe_ipv6_pay_ip_address_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv6_pay_ip_address)
- for tv in tvs_mac_pppoe_ipv6_pay_ip_address_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_pay_ip_address_pipeline_mode)
-
- def test_mac_pppoe_ipv6_udp_pay_pipeline_mode(self):
- tvs_mac_pppoe_ipv6_udp_pay_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv6_udp_pay)
- for tv in tvs_mac_pppoe_ipv6_udp_pay_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_udp_pay_pipeline_mode)
-
- def test_mac_pppoe_ipv6_udp_pay_non_src_dst_port_pipeline_mode(self):
- tvs_mac_pppoe_ipv6_udp_pay_non_src_dst_port_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv6_udp_pay_non_src_dst_port)
- for tv in tvs_mac_pppoe_ipv6_udp_pay_non_src_dst_port_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_udp_pay_non_src_dst_port_pipeline_mode)
-
- def test_mac_pppoe_ipv6_tcp_pay_pipeline_mode(self):
- tvs_mac_pppoe_ipv6_tcp_pay_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv6_tcp_pay)
- for tv in tvs_mac_pppoe_ipv6_tcp_pay_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_tcp_pay_pipeline_mode)
-
- def test_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_pipeline_mode(self):
- tvs_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv6_tcp_pay_non_src_dst_port)
- for tv in tvs_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_pipeline_mode)
-
- def test_mac_vlan_pppoe_ipv4_pay_ip_address_pipeline_mode(self):
- tvs_mac_vlan_pppoe_ipv4_pay_ip_address_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv4_pay_ip_address)
- for tv in tvs_mac_vlan_pppoe_ipv4_pay_ip_address_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_pay_ip_address_pipeline_mode)
-
- def test_mac_vlan_pppoe_ipv4_udp_pay_pipeline_mode(self):
- tvs_mac_vlan_pppoe_ipv4_udp_pay_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv4_udp_pay)
- for tv in tvs_mac_vlan_pppoe_ipv4_udp_pay_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_udp_pay_pipeline_mode)
-
- def test_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_pipeline_mode(self):
- tvs_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port)
- for tv in tvs_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_pipeline_mode)
-
- def test_mac_vlan_pppoe_ipv4_tcp_pay_pipeline_mode(self):
- tvs_mac_vlan_pppoe_ipv4_tcp_pay_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv4_tcp_pay)
- for tv in tvs_mac_vlan_pppoe_ipv4_tcp_pay_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_tcp_pay_pipeline_mode)
-
- def test_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_pipeline_mode(self):
- tvs_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port)
- for tv in tvs_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_pipeline_mode)
-
- def test_mac_vlan_pppoe_ipv6_pay_ip_address_pipeline_mode(self):
- tvs_mac_vlan_pppoe_ipv6_pay_ip_address_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv6_pay_ip_address)
- for tv in tvs_mac_vlan_pppoe_ipv6_pay_ip_address_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_pay_ip_address_pipeline_mode)
-
- def test_mac_vlan_pppoe_ipv6_udp_pay_pipeline_mode(self):
- tvs_mac_vlan_pppoe_ipv6_udp_pay_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv6_udp_pay)
- for tv in tvs_mac_vlan_pppoe_ipv6_udp_pay_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_udp_pay_pipeline_mode)
-
- def test_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_pipeline_mode(self):
- tvs_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port)
- for tv in tvs_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_pipeline_mode)
-
- def test_mac_vlan_pppoe_ipv6_tcp_pay_pipeline_mode(self):
- tvs_mac_vlan_pppoe_ipv6_tcp_pay_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv6_tcp_pay)
- for tv in tvs_mac_vlan_pppoe_ipv6_tcp_pay_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_tcp_pay_pipeline_mode)
-
- def test_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_pipeline_mode(self):
- tvs_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port)
- for tv in tvs_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_pipeline_mode)
-
- # 20.08 pppoe control
- def test_mac_pppoe_lcp_pay_pipeline_mode(self):
- tvs_mac_pppoe_lcp_pay_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_lcp_pay)
- for tv in tvs_mac_pppoe_lcp_pay_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- #launch testpmd
- self.launch_testpmd(False)
- #create a pppoe rss rule to make the pppoe control have hash value, and queue group action work
- self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
- self._rte_flow_validate_pattern(tvs_mac_pppoe_lcp_pay_pipeline_mode, False)
-
- def test_mac_pppoe_ipcp_pay_pipeline_mode(self):
- tvs_mac_pppoe_ipcp_pay_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipcp_pay)
- for tv in tvs_mac_pppoe_ipcp_pay_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- #launch testpmd
- self.launch_testpmd(False)
- #create a pppoe rss rule to make the pppoe control have hash value, and queue group action work
- self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipcp_pay_pipeline_mode, False)
-
- def test_mac_vlan_pppoe_lcp_pay_pipeline_mode(self):
- tvs_mac_vlan_pppoe_lcp_pay_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_lcp_pay)
- for tv in tvs_mac_vlan_pppoe_lcp_pay_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- #launch testpmd
- self.launch_testpmd(False)
- #create a pppoe rss rule to make the pppoe control have hash value, and queue group action work
- self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_lcp_pay_pipeline_mode, False)
-
- def test_mac_vlan_pppoe_ipcp_pay_pipeline_mode(self):
- tvs_mac_vlan_pppoe_ipcp_pay_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipcp_pay)
- for tv in tvs_mac_vlan_pppoe_ipcp_pay_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- #launch testpmd
- self.launch_testpmd(False)
- #create a pppoe rss rule to make the pppoe control have hash value, and queue group action work
- self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
- self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipcp_pay_pipeline_mode, False)
-
- def test_negative_case(self):
- """
- negative cases
- """
- self.launch_testpmd(False)
- rules = {
- "invalid parameters of queue index" : "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 16 / end",
- "invalid parameters of rss queues" : [
- "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions rss queues 1 2 3 end / end",
- "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions rss queues 0 end / end",
- "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions rss queues end / end",
- "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions rss queues 1 2 3 5 end / end",
- "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions rss queues 15 16 end / end",
- "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions rss queues 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 end / end"],
- "unsupported input set" : "flow create 0 priority 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 tos is 4 / end actions queue index 1 / end",
- "multiple actions" : "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 1 / rss queues 2 3 end / end",
- "void action" : "flow create 0 priority 0 ingress pattern eth / ipv4 / udp src is 25 dst is 23 / end actions end",
- "unsupported action": "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions mark id 1 / end",
- "void input set value" : "flow create 0 priority 0 ingress pattern eth / ipv4 / end actions queue index 1 / end",
- "invalid port" : "flow create 1 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 1 / end"
- }
- # all the rules failed to validate and create
-
- # invalid parameters of queue index
- rule_list = self.validate_switch_filter_rule(rules["invalid parameters of queue index"], check_stats=False)
- self.verify(not any(rule_list), "all rules should validate failed, result %s" % rule_list)
- result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
- rule_list = self.create_switch_filter_rule(rules["invalid parameters of queue index"], check_stats=False)
- self.verify(not any(rule_list), "all rules should create failed, result %s" % rule_list)
- result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
-
- # invalid parameters of rss queues
- rule_list = self.validate_switch_filter_rule(rules["invalid parameters of rss queues"], check_stats=False)
- self.verify(not any(rule_list), "all rules should validate failed, result %s" % rule_list)
- result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
- rule_list = self.create_switch_filter_rule(rules["invalid parameters of rss queues"], check_stats=False)
- self.verify(not any(rule_list), "all rules should create failed, result %s" % rule_list)
- result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
-
- # unsupported input set
- rule_list = self.validate_switch_filter_rule(rules["unsupported input set"], check_stats=False)
- self.verify(not any(rule_list), "all rules should validate failed, result %s" % rule_list)
- result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
- rule_list = self.create_switch_filter_rule(rules["unsupported input set"], check_stats=False)
- self.verify(not any(rule_list), "all rules should create failed, result %s" % rule_list)
- result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
-
- # duplicated rules
- rule = "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 1 / end"
- rule_list = self.create_switch_filter_rule(rule, check_stats=False)
- self.verify(all(rule_list), "some rules create failed, result %s" % rule_list)
- result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == rule_list, "the rule list is not the same. expect %s, result %s" % (rule_list, result))
- rule_list_dupli = self.create_switch_filter_rule(rule, check_stats=False)
- self.verify(not any(rule_list_dupli), "all rules should create failed, result %s" % rule_list_dupli)
- result_dupli = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result_dupli == rule_list, "the rule list is not the same. expect %s, result %s" % (rule_list, result_dupli))
- self.dut.send_expect("flow destroy 0 rule %s" % rule_list[0], "testpmd> ", 15)
-
- # conflicted rules
- rule = "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 1 / end"
- rule_list = self.create_switch_filter_rule(rule, check_stats=False)
- self.verify(all(rule_list), "some rules create failed, result %s, rule %s" % (rule_list, rule))
- result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == rule_list, "the rule list is not the same. expect %s, result %s" % (rule_list, result))
- rule1 = "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 2 / end"
- rule_list1 = self.create_switch_filter_rule(rule1, check_stats=False)
- self.verify(not any(rule_list1), "all rules should create failed, result %s" % rule_list1)
- rule2 = "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions drop / end"
- rule_list2 = self.create_switch_filter_rule(rule2, check_stats=False)
- self.verify(not any(rule_list2), "all rules should create failed, result %s" % rule_list2)
- result1 = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result1 == rule_list, "the rule list is not the same. expect %s, result %s" % (rule_list, result1))
- self.dut.send_expect("flow destroy 0 rule %s" % rule_list[0], "testpmd> ", 15)
-
- # multiple actions
- rule_list = self.validate_switch_filter_rule(rules["multiple actions"], check_stats=False)
- self.verify(not any(rule_list), "all rules should validate failed, result %s" % rule_list)
- result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
- rule_list = self.create_switch_filter_rule(rules["multiple actions"], check_stats=False)
- self.verify(not any(rule_list), "all rules should create failed, result %s" % rule_list)
- result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
-
- # void action
- rule_list = self.validate_switch_filter_rule(rules["void action"], check_stats=False)
- self.verify(not any(rule_list), "all rules should validate failed, result %s" % rule_list)
- result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
- rule_list = self.create_switch_filter_rule(rules["void action"], check_stats=False)
- self.verify(not any(rule_list), "all rules should create failed, result %s" % rule_list)
- result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
-
- # delete a non-existing rule
- result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
- out = self.dut.send_expect("flow destroy 0 rule 0", "testpmd> ", 15)
- self.verify("error" not in out, "It should be no error message.")
-
- # add long switch rule
- rule = "flow create 0 priority 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp src is 25 dst is 23 / end actions queue index 1 / end"
- rule_list = self.validate_switch_filter_rule(rule, check_stats=False)
- self.verify(not any(rule_list), "all rules should validate failed, result %s" % rule_list)
- result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
- rule_list = self.create_switch_filter_rule(rule, check_stats=False)
- self.verify(not any(rule_list), "all rules should create failed, result %s" % rule_list)
- result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
- tvs_mac_pppoe_ipv6_udp_pay_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv6_udp_pay)
- for tv in tvs_mac_pppoe_ipv6_udp_pay_pipeline_mode:
- create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
- tv["rte_flow_pattern"] = create_rule
- tv["configuration"]["is_non_pipeline"] = False
- self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_udp_pay_pipeline_mode, False)
-
- # void input set value
- rule_list = self.validate_switch_filter_rule(rules["void input set value"], check_stats=False)
- self.verify(not any(rule_list), "all rules should validate failed, result %s" % rule_list)
- result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
- rule_list = self.create_switch_filter_rule(rules["void input set value"], check_stats=False)
- self.verify(not any(rule_list), "all rules should create failed, result %s" % rule_list)
- result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
-
- # invalid port
- rule_list = self.validate_switch_filter_rule(rules["invalid port"], check_stats=False)
- self.verify(not any(rule_list), "all rules should validate failed, result %s" % rule_list)
- result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
- result = self.check_switch_filter_rule_list(self.dut_ports[1], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == [], "the rule list is not the same. expect %s, result %s" % (rule_list, result))
- rule_list = self.create_switch_filter_rule(rules["invalid port"], check_stats=False)
- self.verify(not any(rule_list), "all rules should create failed, result %s" % rule_list)
- # check there is no rule listed
- result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == [], "the rule list is not the same. expect %s, result %s" % (rule_list, result))
- result = self.check_switch_filter_rule_list(self.dut_ports[1], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
- self.verify(result == [], "the rule list is not the same. expect %s, result %s" % (rule_list, result))
-
+ @skip_unsupported_pkg(['comms', 'wireless'])
def test_unsupported_pattern_in_OS_default_package(self):
"""
Validate and create PPPOE rule, GTPU rule, PFCP rule, l2tpv3 rule, esp rule and ah rule with OS default package
@@ -5585,12 +3101,6 @@ class CVLSwitchFilterTest(TestCase):
"flow create 0 priority 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 17 / end actions rss queues 2 3 end / end",
"flow create 0 priority 0 ingress pattern eth / ipv6 / udp / esp spi is 8 / end actions rss queues 2 3 end / end",
"flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 / ah spi is 1 / end actions queue index 1 / end"]
- #bind pf to kernel
- self.bind_nics_driver(self.dut_ports, driver="ice")
- self.dut.send_expect("cp %s %s" % (self.os_package_location, self.package_location), "# ")
- self.re_load_ice_driver()
- #bind pf to vfio-pci
- self.bind_nics_driver(self.dut_ports, driver="vfio-pci")
self.launch_testpmd(False)
rule_list = self.validate_switch_filter_rule(rule, check_stats=False)
@@ -5607,14 +3117,11 @@ class CVLSwitchFilterTest(TestCase):
Run after each test case.
"""
# destroy all the rules on port 0
- self.dut.send_expect("flow flush %d" % self.dut_ports[0], "testpmd> ", 300)
+ if self.running_case == "test_unsupported_pattern_in_OS_default_package":
+ pass
+ else:
+ self.dut.send_expect("flow flush %d" % self.dut_ports[0], "testpmd> ", 15)
self.dut.send_expect("quit", "#")
- if self.running_case == "test_unsupported_pattern_in_OS_default_package":
- self.bind_nics_driver(self.dut_ports, driver="ice")
- self.dut.send_expect("cp %s %s" % (self.comms_package_location, self.package_location), "# ")
- self.re_load_ice_driver()
- #bind pf to vfio-pci
- self.bind_nics_driver(self.dut_ports, driver="vfio-pci")
def tear_down_all(self):
"""
--
1.8.3.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [dts] [PATCH V1 6/8] tests/cvl_advanced_rss_vlan_esp_ah_l2tp_pfcp:split pppoe into new suite
2021-03-18 5:27 [dts] [PATCH V1 0/8] modified suite to support pkg check Zhimin Huang
` (4 preceding siblings ...)
2021-03-18 5:27 ` [dts] [PATCH V1 5/8] tests/cvl_switch_filter:support " Zhimin Huang
@ 2021-03-18 5:27 ` Zhimin Huang
2021-03-18 5:27 ` [dts] [PATCH V1 7/8] tests/cvl_dcf_switch_filter_pppoe:split " Zhimin Huang
` (2 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Zhimin Huang @ 2021-03-18 5:27 UTC (permalink / raw)
To: dts; +Cc: Zhimin Huang
*.add pppoe new suite and add pkg check
Signed-off-by: Zhimin Huang <zhiminx.huang@intel.com>
---
| 998 +++++++++++++++++++++
1 file changed, 998 insertions(+)
create mode 100644 tests/TestSuite_cvl_advanced_rss_vlan_esp_ah_l2tp_pfcp.py
--git a/tests/TestSuite_cvl_advanced_rss_vlan_esp_ah_l2tp_pfcp.py b/tests/TestSuite_cvl_advanced_rss_vlan_esp_ah_l2tp_pfcp.py
new file mode 100644
index 0000000..8e90c08
--- /dev/null
+++ b/tests/TestSuite_cvl_advanced_rss_vlan_esp_ah_l2tp_pfcp.py
@@ -0,0 +1,998 @@
+# BSD LICENSE
+#
+# Copyright(c)2020 Intel Corporation. All rights reserved.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Intel Corporation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+import re
+import random
+import string
+from test_case import TestCase, skip_unsupported_pkg, check_supported_nic
+from pmd_output import PmdOutput
+from packet import Packet
+from rte_flow_common import RssProcessing
+from config import UserConf
+
+mac_ipv4_pfcp_session_packets = {
+ 'match': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=2)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:54")/IP(src="192.168.0.25",dst="192.168.0.23")/UDP(sport=23,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)'],
+ 'mismatch': [
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=25)/Raw("x"*80)']
+}
+
+mac_ipv4_pfcp_session = {
+ 'sub_casename': 'mac_ipv4_pfcp_session',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv4_pfcp_session_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv4_pfcp_session_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv4_pfcp_session_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': [i for i in mac_ipv4_pfcp_session_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_ipv4_pfcp_session_packets['match']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_ipv6_pfcp_session_packets = {
+ 'match': [
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=2)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)'],
+ 'mismatch': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(S=1, seid=1)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=25)/Raw("x"*80)']
+}
+
+mac_ipv6_pfcp_session = {
+ 'sub_casename': 'mac_ipv6_pfcp_session',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv6_pfcp_session_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv6_pfcp_session_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv6_pfcp_session_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': [i for i in mac_ipv6_pfcp_session_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_ipv6_pfcp_session_packets['match']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_ipv4_l2tpv3_packets = {
+ 'match': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.4", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x12\')/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.5",dst="192.168.0.7", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)'
+ ],
+ 'mismatch': [
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=25)/Raw("x"*80)'
+ ]
+}
+
+mac_ipv4_l2tpv3 = {
+ 'sub_casename': 'mac_ipv4_l2tpv3',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv4_l2tpv3_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv4_l2tpv3_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv4_l2tpv3_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': [i for i in mac_ipv4_l2tpv3_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_ipv4_l2tpv3_packets['match']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_ipv6_l2tpv3_packets = {
+ 'match': [
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP(b\'\\x00\\x00\\x00\\x12\')/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)'
+ ],
+ 'mismatch': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=25)/Raw("x"*80)'
+ ]
+}
+
+mac_ipv6_l2tpv3 = {
+ 'sub_casename': 'mac_ipv6_l2tpv3',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv6_l2tpv3_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv6_l2tpv3_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv6_l2tpv3_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': [i for i in mac_ipv6_l2tpv3_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_ipv6_l2tpv3_packets['match']],
+ 'action': 'check_no_hash',
+ }
+ ]
+}
+
+mac_ipv4_esp_packets = {
+ 'match': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=12)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.4",dst="192.168.0.7",proto=50)/ESP(spi=11)/Raw("x"*480)'],
+ 'mismatch': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP(b\'\\x00\\x00\\x00\\x11\')/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=12)/Raw("x"*480)'
+ ]
+}
+
+mac_ipv4_esp = {
+ 'sub_casename': 'mac_ipv4_esp',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv4_esp_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv4_esp_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv4_esp_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': [
+ i for i in mac_ipv4_esp_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [
+ i for i in mac_ipv4_esp_packets['match']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_ipv4_udp_esp_packets = {
+ 'match': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=12)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.4",dst="192.168.0.7")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)'],
+ 'mismatch': [
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)']
+}
+
+mac_ipv4_udp_esp = {
+ 'sub_casename': 'mac_ipv4_udp_esp',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / esp / end actions rss types esp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv4_udp_esp_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv4_udp_esp_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv4_udp_esp_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': [i for i in mac_ipv4_udp_esp_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [
+ i for i in mac_ipv4_esp_packets['match']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_ipv6_esp_packets = {
+ 'match': [
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=11)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=12)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=50)/ESP(spi=11)/Raw("x"*480)'],
+ 'mismatch': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)']
+}
+
+mac_ipv6_esp = {
+ 'sub_casename': 'mac_ipv6_esp',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / esp / end actions rss types esp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv6_esp_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv6_esp_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv6_esp_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': [i for i in mac_ipv6_esp_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_ipv6_esp_packets['match']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_ipv6_udp_esp_packets = {
+ 'match': [
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=12)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)'],
+ 'mismatch': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=11)/Raw("x"*480)']
+}
+
+mac_ipv6_udp_esp = {
+ 'sub_casename': 'mac_ipv6_udp_esp',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / esp / end actions rss types esp end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv6_udp_esp_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv6_udp_esp_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv6_udp_esp_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': mac_ipv6_udp_esp_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_ipv6_udp_esp_packets['match'],
+ 'action': 'check_no_hash',
+ },
+ ],
+
+}
+
+mac_ipv4_ah_packets = {
+ 'match': ['Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=11)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=12)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.4",dst="192.168.0.8",proto=51)/AH(spi=11)/Raw("x"*480)'],
+ 'mismatch': [
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=11)/Raw("x"*480)']
+}
+
+mac_ipv4_ah = {
+ 'sub_casename': 'mac_ipv4_ah',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv4_ah_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv4_ah_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv4_ah_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': [i for i in mac_ipv4_ah_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_ipv4_ah_packets['match']],
+ 'action': 'check_no_hash',
+ },
+ ],
+
+}
+
+mac_ipv6_ah_packets = {
+ 'match': [
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=11)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=12)/Raw("x"*480)',
+ 'Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=51)/AH(spi=11)/Raw("x"*480)'],
+ 'mismatch': [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=11)/Raw("x"*480)',
+ 'Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)']
+}
+
+mac_ipv6_ah = {
+ 'sub_casename': 'mac_ipv6_ah',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / ah / end actions rss types ah end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_ipv6_ah_packets['match'][0],
+ 'action': 'save_hash',
+ },
+ {
+ 'send_packet': mac_ipv6_ah_packets['match'][1],
+ 'action': 'check_hash_different',
+ },
+ {
+ 'send_packet': mac_ipv6_ah_packets['match'][2],
+ 'action': 'check_hash_same',
+ },
+ {
+ 'send_packet': [i for i in mac_ipv6_ah_packets['mismatch']],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': [i for i in mac_ipv6_ah_packets['match']],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_ipv4_pay_packets = {
+ 'match': {
+ 'mac_vlan_ipv4_pay': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/Raw("x" * 80)',
+ ],
+ },
+ 'mismatch': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'
+ ]
+}
+
+mac_vlan_ipv4_pay = {
+ 'sub_casename': 'mac_vlan_ipv4_pay',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / end actions rss types c-vlan end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'][0],
+ 'action': {'save_hash': 'mac_vlan_ipv4_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'][1],
+ 'action': {'check_hash_different': 'mac_vlan_ipv4_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'][2],
+ 'action': {'check_hash_same': 'mac_vlan_ipv4_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_pay_packets['mismatch'][0],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_ipv4_pay_packets['match']['mac_vlan_ipv4_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_ipv4_udp_pay_packets = {
+ 'match': {
+ 'mac_vlan_ipv4_udp_pay': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/UDP(sport=19,dport=99)/Raw("x" * 80)',
+ ]
+ },
+ 'mismatch': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'
+ ]
+}
+
+mac_vlan_ipv4_udp_pay = {
+ 'sub_casename': 'mac_vlan_ipv4_udp_pay',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / udp / end actions rss types c-vlan end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'][0],
+ 'action': {'save_hash': 'mac_vlan_ipv4_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_vlan_ipv4_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'][2],
+ 'action': {'check_hash_same': 'mac_vlan_ipv4_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_udp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_ipv4_udp_pay_packets['match']['mac_vlan_ipv4_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_ipv4_tcp_pay_packets = {
+ 'match': {
+ 'mac_vlan_ipv4_tcp_pay': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/TCP(sport=19,dport=99)/Raw("x" * 80)'
+ ]
+ },
+ 'mismatch': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'
+ ]
+}
+
+mac_vlan_ipv4_tcp_pay = {
+ 'sub_casename': 'mac_vlan_ipv4_tcp_pay',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / tcp / end actions rss types c-vlan end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_vlan_ipv4_tcp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_vlan_ipv4_tcp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'][2],
+ 'action': {'check_hash_same': 'mac_vlan_ipv4_tcp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_tcp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_ipv4_tcp_pay_packets['match']['mac_vlan_ipv4_tcp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_ipv4_sctp_pay_packets = {
+ 'match': {
+ 'mac_vlan_ipv4_sctp_pay': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.5")/SCTP(sport=19,dport=99)/Raw("x" * 80)'
+ ]
+ },
+ 'mismatch': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)'
+
+ ]
+}
+
+mac_vlan_ipv4_sctp_pay = {
+ 'sub_casename': 'mac_vlan_ipv4_sctp_pay',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / ipv4 / sctp / end actions rss types c-vlan end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'][0],
+ 'action': {'save_hash': 'mac_vlan_ipv4_sctp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'][1],
+ 'action': {'check_hash_different': 'mac_vlan_ipv4_sctp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'][2],
+ 'action': {'check_hash_same': 'mac_vlan_ipv4_sctp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv4_sctp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_ipv4_sctp_pay_packets['match']['mac_vlan_ipv4_sctp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_ipv6_pay_packets = {
+ 'match': {
+ 'mac_vlan_ipv6_pay': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("y" * 80)'
+ ]
+ },
+ 'mismatch': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'
+ ]
+}
+
+mac_vlan_ipv6_pay = {
+ 'sub_casename': 'mac_vlan_ipv6_pay',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / end actions rss types c-vlan end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'][0],
+ 'action': {'save_hash': 'mac_vlan_ipv6_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'][1],
+ 'action': {'check_hash_different': 'mac_vlan_ipv6_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'][2],
+ 'action': {'check_hash_same': 'mac_vlan_ipv6_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_ipv6_pay_packets['match']['mac_vlan_ipv6_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_ipv6_udp_pay_packets = {
+ 'match': {
+ 'mac_vlan_ipv6_udp_pay': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=99)/Raw("x" * 80)'
+ ]
+ },
+ 'mismatch': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'
+ ]
+}
+
+mac_vlan_ipv6_udp_pay = {
+ 'sub_casename': 'mac_vlan_ipv6_udp_pay',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / udp / end actions rss types c-vlan end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'][0],
+ 'action': {'save_hash': 'mac_vlan_ipv6_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'][1],
+ 'action': {'check_hash_different': 'mac_vlan_ipv6_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'][2],
+ 'action': {'check_hash_same': 'mac_vlan_ipv6_udp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_udp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_ipv6_udp_pay_packets['match']['mac_vlan_ipv6_udp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_ipv6_tcp_pay_packets = {
+ 'match': {
+ 'mac_vlan_ipv6_tcp_pay': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=99)/Raw("x" * 80)'
+ ]
+ },
+ 'mismatch': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'
+ ]
+}
+
+mac_vlan_ipv6_tcp_pay = {
+ 'sub_casename': 'mac_vlan_ipv6_tcp_pay',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / tcp / end actions rss types c-vlan end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'][0],
+ 'action': {'save_hash': 'mac_vlan_ipv6_tcp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'][1],
+ 'action': {'check_hash_different': 'mac_vlan_ipv6_tcp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'][2],
+ 'action': {'check_hash_same': 'mac_vlan_ipv6_tcp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_tcp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_ipv6_tcp_pay_packets['match']['mac_vlan_ipv6_tcp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+mac_vlan_ipv6_sctp_pay_packets = {
+ 'match': {
+ 'mac_vlan_ipv6_sctp_pay': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/SCTP(sport=25,dport=99)/Raw("x" * 80)'
+ ]
+ },
+ 'mismatch': [
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'
+ ]
+}
+
+mac_vlan_ipv6_sctp_pay = {
+ 'sub_casename': 'mac_vlan_ipv6_sctp_pay',
+ 'port_id': 0,
+ 'rule': 'flow create 0 ingress pattern eth / vlan / ipv6 / sctp / end actions rss types c-vlan end key_len 0 queues end / end',
+ 'test': [
+ {
+ 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'][0],
+ 'action': {'save_hash': 'mac_vlan_ipv6_sctp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'][1],
+ 'action': {'check_hash_different': 'mac_vlan_ipv6_sctp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'][2],
+ 'action': {'check_hash_same': 'mac_vlan_ipv6_sctp_pay_match'},
+ },
+ {
+ 'send_packet': mac_vlan_ipv6_sctp_pay_packets['mismatch'],
+ 'action': 'check_no_hash',
+ },
+ ],
+ 'post-test': [
+ {
+ 'send_packet': mac_vlan_ipv6_sctp_pay_packets['match']['mac_vlan_ipv6_sctp_pay'],
+ 'action': 'check_no_hash',
+ },
+ ],
+}
+
+class Advanced_rss_vlan_ah_l2tp_pfcp(TestCase):
+
+ def set_up_all(self):
+ """
+ Run at the start of each test suite.
+ Generic filter Prerequistites
+ """
+
+ # Based on h/w type, choose how many ports to use
+ self.dut_ports = self.dut.get_ports(self.nic)
+ self.verify(len(self.dut_ports) >= 2, "Insufficient ports for testing")
+ # Verify that enough threads are available
+ cores = self.dut.get_core_list("1S/4C/1T")
+ self.verify(cores is not None, "Insufficient cores for speed testing")
+ self.ports_socket = self.dut.get_numa_id(self.dut_ports[0])
+ self.tester_port0 = self.tester.get_local_port(self.dut_ports[0])
+ self.tester_port1 = self.tester.get_local_port(self.dut_ports[1])
+ self.tester_iface0 = self.tester.get_interface(self.tester_port0)
+ self.tester_iface1 = self.tester.get_interface(self.tester_port1)
+ self.pci_list = []
+ for port in self.dut.ports_info:
+ self.pci_list.append(port['pci'])
+ self.pkt = Packet()
+ self.pmd_output = PmdOutput(self.dut)
+ self.symmetric = False
+ self.rxq = 64
+ self.rsspro = RssProcessing(self, self.pmd_output, [self.tester_iface0, self.tester_iface1], self.rxq)
+ self.logger.info('rssprocess.tester_ifaces: {}'.format(self.rsspro.tester_ifaces))
+ self.logger.info('rssprocess.test_case: {}'.format(self.rsspro.test_case))
+
+ def set_up(self):
+ """
+ Run before each test case.
+ """
+ pass
+
+ def tear_down(self):
+ """
+ Run after each test case.
+ """
+ # destroy all flow rule on port 0
+ self.dut.send_command("flow flush 0", timeout=1)
+ self.dut.send_command("clear port stats all", timeout=1)
+ self.pmd_output.execute_cmd("stop")
+ self.dut.kill_all()
+
+ def tear_down_all(self):
+ """
+ Run after each test suite.
+ """
+ self.dut.kill_all()
+
+ def launch_testpmd(self, symmetric=False):
+ if symmetric:
+ param = "--rxq=64 --txq=64"
+ else:
+ param = "--rxq=64 --txq=64 --disable-rss --rxd=384 --txd=384"
+ out = self.pmd_output.start_testpmd(cores="1S/4C/1T", param=param,
+ eal_param=f"-w {self.pci_list[0]}", socket=self.ports_socket)
+ self.symmetric = symmetric
+ if symmetric:
+ # Need config rss in setup
+ self.pmd_output.execute_cmd("port config all rss all")
+ self.pmd_output.execute_cmd("set fwd rxonly")
+ self.pmd_output.execute_cmd("set verbose 1")
+ res = self.pmd_output.wait_link_status_up('all', timeout=15)
+ self.verify(res is True, 'there have port link is down')
+
+ def switch_testpmd(self, symmetric=True):
+ self.dut.kill_all()
+ self.launch_testpmd(symmetric)
+ self.pmd_output.execute_cmd("start")
+
+ def _gener_str(self, str_len=6):
+ return ''.join(random.sample(string.ascii_letters + string.digits, k=str_len))
+
+ def test_mac_ipv4_pfcp_session(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_pfcp_session)
+
+ def test_mac_ipv6_pfcp_session(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_pfcp_session)
+
+ def test_mac_ipv4_l2tpv3(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_l2tpv3)
+
+ def test_mac_ipv6_l2tpv3(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_l2tpv3)
+
+ @skip_unsupported_pkg("os default")
+ def test_mac_ipv4_esp(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_esp)
+
+ def test_mac_ipv4_udp_esp(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_udp_esp)
+
+ def test_mac_ipv6_esp(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_esp)
+
+ def test_mac_ipv6_udp_esp(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_udp_esp)
+
+ @skip_unsupported_pkg("os default")
+ def test_mac_ipv4_ah(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv4_ah)
+
+ def test_mac_ipv6_ah(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_ipv6_ah)
+
+ def test_wrong_hash_input_set(self):
+ self.switch_testpmd(symmetric=True)
+ rule_list = [
+ 'flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types l2-src-only l2-dst-only end key_len 0 queues end / end',
+ 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end',
+ 'flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp l3-src-only end key_len 0 queues end / end']
+
+ for rule in rule_list:
+ self.rsspro.validate_rule(rule, check_stats=False, check_msg='Invalid argument')
+ self.rsspro.create_rule(rule, check_stats=False, msg='Invalid argument')
+
+ def test_void_action(self):
+ self.switch_testpmd(symmetric=True)
+ rule = 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions end'
+ self.rsspro.validate_rule(rule, check_stats=False, check_msg='Invalid argument')
+ self.rsspro.create_rule(rule, check_stats=False, msg='Invalid argument')
+ self.rsspro.check_rule(stats=False, rule_list=[rule])
+
+ def test_delete_nonexisting_rule(self):
+ self.switch_testpmd(symmetric=True)
+ self.rsspro.check_rule(stats=False)
+ out = self.dut.send_command("flow destroy 0 rule 0", timeout=1)
+ self.verify('error' not in out, 'delete nonexisting rule raise err,expected no err')
+ self.dut.send_command("flow flush 0", timeout=1)
+
+ @skip_unsupported_pkg(['comms', 'wireless'])
+ def test_unsupported_pattern_with_OS_default_package(self):
+ self.switch_testpmd(symmetric=True)
+ rule_list = [
+ 'flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end',
+ 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end',
+ 'flow create 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end',
+ 'flow create 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end'
+ ]
+ self.rsspro.validate_rule(rule_list, check_stats=False, check_msg='Invalid argument')
+ self.rsspro.create_rule(rule_list, check_stats=False, msg='Invalid argument')
+ self.rsspro.check_rule(stats=False)
+
+ def test_invalid_port(self):
+ self.switch_testpmd(symmetric=True)
+ rule = 'flow create 1 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end'
+ self.rsspro.create_rule(rule, check_stats=False, msg='No such device')
+ self.rsspro.check_rule(stats=False, rule_list=[rule])
+ pattern = 'Invalid port 1'
+ out = self.dut.send_command("flow list 1", timeout=1)
+ result = re.search(r'%s' % pattern, out)
+ self.verify(result, 'actual result not match expected,expected result is:{}'.format(pattern))
+
+ def test_mac_vlan_ipv4_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_pay)
+
+ def test_mac_vlan_ipv4_udp_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_udp_pay)
+
+ def test_mac_vlan_ipv4_tcp_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_tcp_pay)
+
+ def test_mac_vlan_ipv4_sctp_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv4_sctp_pay)
+
+ def test_mac_vlan_ipv6_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_pay)
+
+ def test_mac_vlan_ipv6_udp_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_udp_pay)
+
+ def test_mac_vlan_ipv6_tcp_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_tcp_pay)
+
+ def test_mac_vlan_ipv6_sctp_pay(self):
+ self.switch_testpmd(symmetric=False)
+ self.rsspro.handle_rss_distribute_cases(cases_info=mac_vlan_ipv6_sctp_pay)
--
1.8.3.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [dts] [PATCH V1 7/8] tests/cvl_dcf_switch_filter_pppoe:split pppoe into new suite
2021-03-18 5:27 [dts] [PATCH V1 0/8] modified suite to support pkg check Zhimin Huang
` (5 preceding siblings ...)
2021-03-18 5:27 ` [dts] [PATCH V1 6/8] tests/cvl_advanced_rss_vlan_esp_ah_l2tp_pfcp:split pppoe into new suite Zhimin Huang
@ 2021-03-18 5:27 ` Zhimin Huang
2021-03-18 5:27 ` [dts] [PATCH V1 8/8] tests/cvl_switch_filter_pppoe:split " Zhimin Huang
2021-03-19 8:54 ` [dts] [PATCH V1 0/8] modified suite to support pkg check Tu, Lijuan
8 siblings, 0 replies; 10+ messages in thread
From: Zhimin Huang @ 2021-03-18 5:27 UTC (permalink / raw)
To: dts; +Cc: Zhimin Huang
*.add new pppoe new suite and add pkg check
Signed-off-by: Zhimin Huang <zhiminx.huang@intel.com>
---
tests/TestSuite_cvl_dcf_switch_filter_pppoe.py | 912 +++++++++++++++++++++++++
1 file changed, 912 insertions(+)
create mode 100644 tests/TestSuite_cvl_dcf_switch_filter_pppoe.py
diff --git a/tests/TestSuite_cvl_dcf_switch_filter_pppoe.py b/tests/TestSuite_cvl_dcf_switch_filter_pppoe.py
new file mode 100644
index 0000000..247561c
--- /dev/null
+++ b/tests/TestSuite_cvl_dcf_switch_filter_pppoe.py
@@ -0,0 +1,912 @@
+# BSD LICENSE
+#
+# Copyright(c) 2020 Intel Corporation. All rights reserved.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Intel Corporation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import json
+import time
+import re
+import copy
+
+from test_case import TestCase, skip_unsupported_pkg, check_supported_nic
+from pmd_output import PmdOutput
+from packet import Packet
+from utils import BLUE, RED, GREEN
+import rte_flow_common as rfc
+
+import os
+
+
+tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id = {
+ "name":"tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id",
+ "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 / end actions vf id 1 / end",
+ "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:54",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id = {
+ "name":"tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id",
+ "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 / end actions vf id 1 / end",
+ "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:54",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_pppoe_ipv4_pay_session_id_proto_id = {
+ "name":"tv_mac_pppoe_ipv4_pay_session_id_proto_id",
+ "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",
+ "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:54",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_pppoe_ipv6_pay_session_id_proto_id = {
+ "name":"tv_mac_pppoe_ipv6_pay_session_id_proto_id",
+ "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",
+ "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:54",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_pppoe_ipv4_pay_ip_address = {
+ "name":"tv_mac_pppoe_ipv4_pay_ip_address",
+ "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",
+ "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/Raw("x"*80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_pppoe_ipv4_udp_pay = {
+ "name":"tv_mac_pppoe_ipv4_udp_pay",
+ "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 actions vf id 1 / end",
+ "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=27,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=19)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port = {
+ "name":"tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port",
+ "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",
+ "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_pppoe_ipv4_tcp_pay = {
+ "name":"tv_mac_pppoe_ipv4_tcp_pay",
+ "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 actions vf id 1 / end",
+ "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=27,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=19)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port = {
+ "name":"tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port",
+ "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",
+ "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_pppoe_ipv6_pay_ip_address = {
+ "name":"tv_mac_pppoe_ipv6_pay_ip_address",
+ "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:8475:1111:3900:2022 / end actions vf id 1 / end",
+ "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_pppoe_ipv6_udp_pay = {
+ "name":"tv_mac_pppoe_ipv6_udp_pay",
+ "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",
+ "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=27,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=19)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port = {
+ "name":"tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port",
+ "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:8475:1111:3900:2022 / udp / end actions vf id 1 / end",
+ "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_pppoe_ipv6_tcp_pay = {
+ "name":"tv_mac_pppoe_ipv6_tcp_pay",
+ "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",
+ "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=27,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=19)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port = {
+ "name":"tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port",
+ "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:8475:1111:3900:2022 / tcp / end actions vf id 1 / end",
+ "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_vlan_pppoe_ipv4_pay_ip_address = {
+ "name":"tv_mac_vlan_pppoe_ipv4_pay_ip_address",
+ "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",
+ "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/Raw("x"*80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_vlan_pppoe_ipv4_udp_pay = {
+ "name":"tv_mac_vlan_pppoe_ipv4_udp_pay",
+ "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 is 23 / end actions vf id 1 / end",
+ "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=27,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=19)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port = {
+ "name":"tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port",
+ "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 vf id 1 / end",
+ "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_vlan_pppoe_ipv4_tcp_pay = {
+ "name":"tv_mac_vlan_pppoe_ipv4_tcp_pay",
+ "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 is 23 / end actions vf id 1 / end",
+ "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=27,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=19)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port = {
+ "name":"tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port",
+ "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 vf id 1 / end",
+ "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_vlan_pppoe_ipv6_pay_ip_address = {
+ "name":"tv_mac_vlan_pppoe_ipv6_pay_ip_address",
+ "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 actions vf id 1 / end",
+ "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_vlan_pppoe_ipv6_udp_pay = {
+ "name":"tv_mac_vlan_pppoe_ipv6_udp_pay",
+ "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",
+ "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=27,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=19)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port = {
+ "name":"tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port",
+ "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",
+ "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_vlan_pppoe_ipv6_tcp_pay = {
+ "name":"tv_mac_vlan_pppoe_ipv6_tcp_pay",
+ "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",
+ "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=27,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=19)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port = {
+ "name":"tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port",
+ "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",
+ "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_pppoe_lcp_pay = {
+ "name":"tv_mac_pppoe_lcp_pay",
+ "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",
+ "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:53",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_pppoe_ipcp_pay = {
+ "name":"tv_mac_pppoe_ipcp_pay",
+ "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",
+ "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:53",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_vlan_pppoe_lcp_pay = {
+ "name":"tv_mac_vlan_pppoe_lcp_pay",
+ "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 / end actions vf id 1 / end",
+ "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+tv_mac_vlan_pppoe_ipcp_pay = {
+ "name":"tv_mac_vlan_pppoe_ipcp_pay",
+ "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 / end actions vf id 1 / end",
+ "matched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":['Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":1, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}}
+}
+
+class CVLDCFSwitchFilterPPPOETest(TestCase):
+ supported_nic = ['columbiaville_100g', 'columbiaville_25g', 'columbiaville_25gx2']
+
+ def bind_nics_driver(self, ports, driver=""):
+ # modprobe vfio driver
+ if driver == "vfio-pci":
+ for port in ports:
+ netdev = self.dut.ports_info[port]['port']
+ driver = netdev.get_nic_driver()
+ if driver != 'vfio-pci':
+ netdev.bind_driver(driver='vfio-pci')
+
+ elif driver == "igb_uio":
+ # igb_uio should insmod as default, no need to check
+ for port in ports:
+ netdev = self.dut.ports_info[port]['port']
+ driver = netdev.get_nic_driver()
+ if driver != 'igb_uio':
+ netdev.bind_driver(driver='igb_uio')
+ else:
+ for port in ports:
+ netdev = self.dut.ports_info[port]['port']
+ driver_now = netdev.get_nic_driver()
+ if driver == "":
+ driver = netdev.default_driver
+ if driver != driver_now:
+ netdev.bind_driver(driver=driver)
+
+ @check_supported_nic(supported_nic)
+ @skip_unsupported_pkg(['os default', 'wireless'])
+ def set_up_all(self):
+ """
+ Run at the start of each test suite.
+ """
+ self.dut_ports = self.dut.get_ports(self.nic)
+ # Verify that enough ports are available
+ self.verify(len(self.dut_ports) >= 1, "Insufficient ports")
+ localPort = self.tester.get_local_port(self.dut_ports[0])
+ self.__tx_iface = self.tester.get_interface(localPort)
+ self.pkt = Packet()
+ self.testpmd_status = "close"
+ #bind pf to kernel
+ self.bind_nics_driver(self.dut_ports, driver="ice")
+
+ #set vf driver
+ self.vf_driver = 'vfio-pci'
+ self.dut.send_expect('modprobe vfio-pci', '#')
+ self.path = self.dut.apps_name['test-pmd']
+
+ def setup_1pf_vfs_env(self, pf_port=0, driver='default'):
+
+ self.used_dut_port_0 = self.dut_ports[pf_port]
+ #get PF interface name
+ self.pf0_intf = self.dut.ports_info[self.used_dut_port_0]['intf']
+ out = self.dut.send_expect('ethtool -i %s' % self.pf0_intf, '#')
+ #generate 4 VFs on PF
+ self.dut.generate_sriov_vfs_by_port(self.used_dut_port_0, 4, driver=driver)
+ self.sriov_vfs_port_0 = self.dut.ports_info[self.used_dut_port_0]['vfs_port']
+ #set VF0 as trust
+ self.dut.send_expect('ip link set %s vf 0 trust on' % self.pf0_intf, '#')
+ #bind VFs to dpdk driver
+ for port in self.sriov_vfs_port_0:
+ port.bind_driver(self.vf_driver)
+ time.sleep(5)
+
+ def set_up(self):
+ """
+ Run before each test case.
+ """
+ pass
+
+ def create_testpmd_command(self):
+ """
+ Create testpmd command
+ """
+ #Prepare testpmd EAL and parameters
+ vf0_pci = self.sriov_vfs_port_0[0].pci
+ vf1_pci = self.sriov_vfs_port_0[1].pci
+ all_eal_param = self.dut.create_eal_parameters(cores='1S/4C/1T',ports=[vf0_pci, vf1_pci], port_options={vf0_pci:"cap=dcf"})
+ command = self.path + all_eal_param + " -- -i"
+ return command
+
+ def launch_testpmd(self):
+ """
+ launch testpmd with the command
+ """
+ command = self.create_testpmd_command()
+ out = self.dut.send_expect(command, "testpmd> ", 15)
+ self.testpmd_status = "running"
+ self.dut.send_expect("set portlist 1", "testpmd> ", 15)
+ self.dut.send_expect("set fwd rxonly", "testpmd> ", 15)
+ self.dut.send_expect("set verbose 1", "testpmd> ", 15)
+
+ def send_packets(self, dic, session_name="", tx_iface=""):
+ """
+ send packets.
+ """
+ if session_name == "":
+ session_name = self.dut
+ if tx_iface == "":
+ tx_iface = self.__tx_iface
+ session_name.send_expect("start", "testpmd> ", 15)
+ time.sleep(2)
+ #send packets
+ self.pkt.update_pkt(dic["scapy_str"])
+ self.pkt.send_pkt(self.tester, tx_port=tx_iface, count=1, timeout=370)
+ time.sleep(3)
+ out = session_name.send_expect("stop", "testpmd> ")
+ return out
+
+ def send_and_check_packets(self, dic, session_name="", tx_iface=""):
+ """
+ general packets processing workflow.
+ """
+ if session_name == "":
+ session_name = self.dut
+ if tx_iface == "":
+ tx_iface = self.__tx_iface
+ session_name.send_expect("start", "testpmd> ", 15)
+ time.sleep(2)
+ #send packets
+ self.pkt.update_pkt(dic["scapy_str"])
+ self.pkt.send_pkt(self.tester, tx_port=tx_iface, count=1, timeout=370)
+ time.sleep(3)
+ out = session_name.send_expect("stop", "testpmd> ", 15)
+ dic["check_func"]["func"](out, dic["check_func"]["param"], dic["expect_results"])
+
+ def send_and_get_packets_bg(self, dic, session_name="", tx_iface=""):
+ """
+ general packets processing workflow.
+ """
+ if session_name == "":
+ session_name = self.dut
+ if tx_iface == "":
+ tx_iface = self.__tx_iface
+ session_name.send_expect("start", "testpmd> ", 15)
+ time.sleep(2)
+ #send packets
+ pkt = Packet()
+ pkt.update_pkt(dic["scapy_str"])
+ pkt.send_pkt_bg(self.tester, tx_port=tx_iface, count=1, loop=0, timeout=370)
+ time.sleep(3)
+ out = session_name.send_expect("stop", "testpmd> ", 15)
+ results = dic["check_func"]["func"](out, dic["check_func"]["param"], dic["expect_results"], False)
+ return results
+
+ def validate_switch_filter_rule(self, rte_flow_pattern, session_name="", check_stats=True):
+ """
+ validate switch filter rules
+ """
+ if session_name == "":
+ session_name = self.dut
+ p = "Flow rule validated"
+ rule_list = []
+ if isinstance(rte_flow_pattern, list):
+ for rule in rte_flow_pattern:
+ length = len(rule)
+ rule_rep = rule[0:5] + "validate" + rule[11:length]
+ out = session_name.send_expect(rule_rep, "testpmd> ") #validate a rule
+ if (p in out) and ("Failed" not in out):
+ rule_list.append(True)
+ else:
+ rule_list.append(False)
+ elif isinstance(rte_flow_pattern, str):
+ length = len(rte_flow_pattern)
+ rule_rep = rte_flow_pattern[0:5] + "validate" + rte_flow_pattern[11:length]
+ out = session_name.send_expect(rule_rep, "testpmd> ") #validate a rule
+ if (p in out) and ("Failed" not in out):
+ rule_list.append(True)
+ else:
+ rule_list.append(False)
+ else:
+ raise Exception("unsupported rule type, only accept list or str")
+ if check_stats:
+ self.verify(all(rule_list), "some rules not validated successfully, result %s, rule %s" % (rule_list, rte_flow_pattern))
+ else:
+ self.verify(not any(rule_list), "all rules should not validate successfully, result %s, rule %s" % (rule_list, rte_flow_pattern))
+
+ def create_switch_filter_rule(self, rte_flow_pattern, session_name="", check_stats=True):
+ """
+ create switch filter rules
+ """
+ if session_name == "":
+ session_name = self.dut
+ p = re.compile(r"Flow rule #(\d+) created")
+ rule_list = []
+ if isinstance(rte_flow_pattern, list):
+ for rule in rte_flow_pattern:
+ out = session_name.send_expect(rule, "testpmd> ") #create a rule
+ m = p.search(out)
+ if m:
+ rule_list.append(m.group(1))
+ else:
+ rule_list.append(False)
+ else:
+ out = session_name.send_expect(rte_flow_pattern, "testpmd> ") #create a rule
+ m = p.search(out)
+ if m:
+ rule_list.append(m.group(1))
+ else:
+ rule_list.append(False)
+ if check_stats:
+ self.verify(all(rule_list), "some rules not created successfully, result %s, rule %s" % (rule_list, rte_flow_pattern))
+ else:
+ self.verify(not any(rule_list), "all rules should create failed, result %s" % rule_list)
+ return rule_list
+
+ def check_switch_filter_rule_list(self, port_id, rule_list, session_name="", need_verify=True):
+ """
+ check the rules in list identical to ones in rule_list
+ """
+ if session_name == "":
+ session_name = self.dut
+ out = session_name.send_expect("flow list %d" % port_id, "testpmd> ", 15)
+ p = re.compile(r"ID\s+Group\s+Prio\s+Attr\s+Rule")
+ m = p.search(out)
+ if not m:
+ result = []
+ else:
+ p_spec = re.compile("^(\d+)\s")
+ out_lines = out.splitlines()
+ res = filter(bool, map(p_spec.match, out_lines))
+ result = [i.group(1) for i in res]
+ if need_verify:
+ self.verify(result == rule_list,
+ "the rule list is not the same. expect %s, result %s" % (rule_list, result))
+ else:
+ return result
+
+ def destroy_switch_filter_rule(self, port_id, rule_list, session_name="", need_verify=True):
+ if session_name == "":
+ session_name = self.dut
+ p = re.compile(r"Flow rule #(\d+) destroyed")
+ destroy_list = []
+ if isinstance(rule_list, list):
+ for i in rule_list:
+ out = session_name.send_expect("flow destroy %s rule %s" % (port_id, i), "testpmd> ", 15)
+ m = p.search(out)
+ if m:
+ destroy_list.append(m.group(1))
+ else:
+ destroy_list.append(False)
+ else:
+ out = session_name.send_expect("flow destroy %s rule %s" % (port_id, rule_list), "testpmd> ", 15)
+ m = p.search(out)
+ if m:
+ destroy_list.append(m.group(1))
+ else:
+ destroy_list.append(False)
+ rule_list = [rule_list]
+ if need_verify:
+ self.verify(destroy_list == rule_list, "flow rule destroy failed, expect %s result %s" % (rule_list, destroy_list))
+ else:
+ return destroy_list
+
+ def get_kernel_vf_log(self, vf_intfs, session_name):
+ """
+ get the log of each kernel vf in list vf_intfs
+ """
+ out_vfs = []
+ for intf in vf_intfs:
+ out = session_name.send_expect('ifconfig %s' % intf, '#')
+ out_vfs.append(out)
+ return out_vfs
+
+ def _rte_flow_validate_pattern(self, test_vector, launch_testpmd=True):
+
+ if launch_testpmd:
+ #launch testpmd
+ self.launch_testpmd()
+ #validate a rule
+ self.validate_switch_filter_rule(test_vector["rte_flow_pattern"])
+ #create a rule
+ rule_list = self.create_switch_filter_rule(test_vector["rte_flow_pattern"]) #create a rule
+ self.check_switch_filter_rule_list(0, rule_list)
+ #send matched packets and check
+ matched_dic = test_vector["matched"]
+ self.send_and_check_packets(matched_dic)
+ #send mismatched packets and check
+ mismatched_dic = test_vector["mismatched"]
+ self.send_and_check_packets(mismatched_dic)
+ #destroy rule and send matched packets
+ self.destroy_switch_filter_rule(0, rule_list)
+ self.check_switch_filter_rule_list(0, [])
+ #send matched packets and check
+ destroy_dict = copy.deepcopy(matched_dic)
+ if isinstance(destroy_dict["expect_results"]["expect_pkts"], list):
+ destroy_dict["expect_results"]["expect_pkts"] = [0]*len(destroy_dict["expect_results"]["expect_pkts"])
+ else:
+ destroy_dict["expect_results"]["expect_pkts"] = 0
+ self.send_and_check_packets(destroy_dict)
+
+ def test_mac_vlan_pppoe_ipv4_pay_session_id_proto_id(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id)
+
+ def test_mac_vlan_pppoe_ipv6_pay_session_id_proto_id(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id)
+
+ def test_mac_pppoe_ipv4_pay_session_id_proto_id(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_pppoe_ipv4_pay_session_id_proto_id)
+
+ def test_mac_pppoe_ipv6_pay_session_id_proto_id(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_pppoe_ipv6_pay_session_id_proto_id)
+
+ def test_mac_pppoe_ipv4_pay_ip_address(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_pppoe_ipv4_pay_ip_address)
+
+ def test_mac_pppoe_ipv4_udp_pay(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_pppoe_ipv4_udp_pay)
+
+ def test_mac_pppoe_ipv4_udp_pay_non_src_dst_port(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port)
+
+ def test_mac_pppoe_ipv4_tcp_pay(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_pppoe_ipv4_tcp_pay)
+
+ def test_mac_pppoe_ipv4_tcp_pay_non_src_dst_port(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port)
+
+ def test_mac_pppoe_ipv6_pay_ip_address(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_pppoe_ipv6_pay_ip_address)
+
+ def test_mac_pppoe_ipv6_udp_pay(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_pppoe_ipv6_udp_pay)
+
+ def test_mac_pppoe_ipv6_udp_pay_non_src_dst_port(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port)
+
+ def test_mac_pppoe_ipv6_tcp_pay(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_pppoe_ipv6_tcp_pay)
+
+ def test_mac_pppoe_ipv6_tcp_pay_non_src_dst_port(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port)
+
+ def test_mac_vlan_pppoe_ipv4_pay_ip_address(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv4_pay_ip_address)
+
+ def test_mac_vlan_pppoe_ipv4_udp_pay(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv4_udp_pay)
+
+ def test_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port)
+
+ def test_mac_vlan_pppoe_ipv4_tcp_pay(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv4_tcp_pay)
+
+ def test_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port)
+
+ def test_mac_vlan_pppoe_ipv6_pay_ip_address(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv6_pay_ip_address)
+
+ def test_mac_vlan_pppoe_ipv6_udp_pay(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv6_udp_pay)
+
+ def test_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port)
+
+ def test_mac_vlan_pppoe_ipv6_tcp_pay(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv6_tcp_pay)
+
+ def test_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port)
+
+ def test_mac_pppoe_lcp_pay(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_pppoe_lcp_pay)
+
+ def test_mac_pppoe_ipcp_pay(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_pppoe_ipcp_pay)
+
+ def test_mac_vlan_pppoe_lcp_pay(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_lcp_pay)
+
+ def test_mac_vlan_pppoe_ipcp_pay(self):
+ self.setup_1pf_vfs_env()
+ self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipcp_pay)
+
+ def tear_down(self):
+ """
+ Run after each test case.
+ """
+ if self.testpmd_status != "close":
+ # destroy all flow rules on DCF
+ self.dut.send_expect("flow flush 0", "testpmd> ", 15)
+ self.dut.send_expect("clear port stats all", "testpmd> ", 15)
+ self.dut.send_expect("quit", "#", 15)
+ #kill all DPDK application
+ self.dut.kill_all()
+ # destroy vfs
+ for port_id in self.dut_ports:
+ self.dut.destroy_sriov_vfs_by_port(port_id)
+ self.testpmd_status = "close"
+ if getattr(self, 'session_secondary', None):
+ self.dut.close_session(self.session_secondary)
+
+ def tear_down_all(self):
+ """
+ Run after each test suite.
+ """
+ self.dut.kill_all()
--
1.8.3.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [dts] [PATCH V1 8/8] tests/cvl_switch_filter_pppoe:split pppoe into new suite
2021-03-18 5:27 [dts] [PATCH V1 0/8] modified suite to support pkg check Zhimin Huang
` (6 preceding siblings ...)
2021-03-18 5:27 ` [dts] [PATCH V1 7/8] tests/cvl_dcf_switch_filter_pppoe:split " Zhimin Huang
@ 2021-03-18 5:27 ` Zhimin Huang
2021-03-19 8:54 ` [dts] [PATCH V1 0/8] modified suite to support pkg check Tu, Lijuan
8 siblings, 0 replies; 10+ messages in thread
From: Zhimin Huang @ 2021-03-18 5:27 UTC (permalink / raw)
To: dts; +Cc: Zhimin Huang
*.add pppoe new suite and add pkg check
Signed-off-by: Zhimin Huang <zhiminx.huang@intel.com>
---
tests/TestSuite_cvl_switch_filter_pppoe.py | 2965 ++++++++++++++++++++++++++++
1 file changed, 2965 insertions(+)
create mode 100644 tests/TestSuite_cvl_switch_filter_pppoe.py
diff --git a/tests/TestSuite_cvl_switch_filter_pppoe.py b/tests/TestSuite_cvl_switch_filter_pppoe.py
new file mode 100644
index 0000000..8904b47
--- /dev/null
+++ b/tests/TestSuite_cvl_switch_filter_pppoe.py
@@ -0,0 +1,2965 @@
+# BSD LICENSE
+#
+# Copyright(c) 2019-2020 Intel Corporation. All rights reserved.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Intel Corporation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+import json
+import time
+import re
+import copy
+import random
+from itertools import groupby
+
+from test_case import TestCase, skip_unsupported_pkg
+from pmd_output import PmdOutput
+from packet import Packet
+from utils import BLUE, RED, GREEN
+from collections import OrderedDict
+import rte_flow_common as rfc
+
+import os
+
+#test vector ethertype_filter_pppoes
+ethertype_filter_pppoes_scapy_str = {
+ "matched": [
+ 'Ether(dst="00:11:22:33:44:55", type=0x8864)/PPPoE(sessionid=3)/Raw("x" *80)'],
+ "mismatched": [
+ 'Ether(dst="00:11:22:33:44:55", type=0x8863)/PPPoED()/Raw("x" *80)'
+ ]
+}
+
+tv_ethertype_filter_pppoes_in_queue_01 = {
+ "name":"tv_ethertype_filter_pppoes_in_queue_01",
+ "rte_flow_pattern":"flow create 0 ingress pattern eth type is 0x8864 / end actions queue index 2 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":True},
+ "matched":{"scapy_str":ethertype_filter_pppoes_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":ethertype_filter_pppoes_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":1}}
+}
+
+tv_ethertype_filter_pppoes_queue_region_02 = {
+ "name":"tv_ethertype_filter_pppoes_queue_region_02",
+ "rte_flow_pattern":"flow create 0 ingress pattern eth type is 0x8864 / end actions rss queues 4 5 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":True},
+ "matched":{"scapy_str":ethertype_filter_pppoes_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[4, 5]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":ethertype_filter_pppoes_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[4, 5]}},
+ "expect_results":{"expect_pkts":1}}
+}
+
+tv_ethertype_filter_pppoes_drop_03 = {
+ "name":"tv_ethertype_filter_pppoes_drop_03",
+ "rte_flow_pattern":"flow create 0 ingress pattern eth type is 0x8864 / end actions drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":True},
+ "matched":{"scapy_str":ethertype_filter_pppoes_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":ethertype_filter_pppoes_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}}
+}
+
+tvs_ethertype_filter_pppoes = [
+ tv_ethertype_filter_pppoes_in_queue_01,
+ tv_ethertype_filter_pppoes_queue_region_02,
+ tv_ethertype_filter_pppoes_drop_03
+ ]
+
+#20.08
+mac_vlan_pppoe_ipv4_pay_session_id_proto_id_scapy_str = {
+ "matched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x"*80)'],
+ "mismatched": [
+ 'Ether(dst="00:11:22:33:44:54",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_in_queue_01 = {
+ "name":"mac_vlan_pppoe_ipv4_pay_session_id_proto_id_in_queue_01",
+ "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions queue index 2 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_session_id_proto_id_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_session_id_proto_id_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_queue_region_02 = {
+ "name":"mac_vlan_pppoe_ipv4_pay_session_id_proto_id_queue_region_02",
+ "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions rss queues 4 5 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_session_id_proto_id_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[4, 5]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_session_id_proto_id_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[4, 5]}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_drop_03 = {
+ "name":"tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_drop_03",
+ "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 / end actions drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_session_id_proto_id_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_session_id_proto_id_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tvs_mac_vlan_pppoe_ipv4_pay_session_id_proto_id = [
+ tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_in_queue_01,
+ tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_queue_region_02,
+ tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_drop_03
+ ]
+
+mac_vlan_pppoe_ipv6_pay_session_id_proto_id_scapy_str = {
+ "matched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(dst="00:11:22:33:44:54",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id_in_queue_01 = {
+ "name":"mac_vlan_pppoe_ipv6_pay_session_id_proto_id_in_queue_01",
+ "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions queue index 2 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_session_id_proto_id_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_session_id_proto_id_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id_queue_region_02 = {
+ "name":"mac_vlan_pppoe_ipv6_pay_session_id_proto_id_queue_region_02",
+ "validate_pattern":"flow validate 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 / end actions rss queues 4 5 end / end",
+ "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 / end actions rss queues 4 5 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_session_id_proto_id_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[4, 5]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_session_id_proto_id_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[4, 5]}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id_drop_03 = {
+ "name":"mac_vlan_pppoe_ipv6_pay_session_id_proto_id_drop_03",
+ "validate_pattern":"flow validate 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 / end actions drop / end",
+ "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 / end actions drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_session_id_proto_id_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_session_id_proto_id_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tvs_mac_vlan_pppoe_ipv6_pay_session_id_proto_id = [
+ tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id_in_queue_01,
+ tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id_queue_region_02,
+ tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id_drop_03
+ ]
+
+mac_pppoe_ipv4_pay_session_id_proto_id_scapy_str = {
+ "matched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(dst="00:11:22:33:44:54",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_pppoe_ipv4_pay_session_id_proto_id_in_queue_01 = {
+ "name":"mac_pppoe_ipv4_pay_session_id_proto_id_in_queue_01",
+ "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions queue index 2 / end",
+ "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 queue index 2 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv4_pay_session_id_proto_id_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv4_pay_session_id_proto_id_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tv_mac_pppoe_ipv4_pay_session_id_proto_id_queue_region_02 = {
+ "name":"mac_pppoe_ipv4_pay_session_id_proto_id_queue_region_02",
+ "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions rss queues 4 5 end / end",
+ "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 rss queues 4 5 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv4_pay_session_id_proto_id_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[4, 5]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv4_pay_session_id_proto_id_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[4, 5]}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tv_mac_pppoe_ipv4_pay_session_id_proto_id_drop_03 = {
+ "name":"mac_pppoe_ipv4_pay_session_id_proto_id_drop_03",
+ "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions drop / end",
+ "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 drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv4_pay_session_id_proto_id_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv4_pay_session_id_proto_id_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tvs_mac_pppoe_ipv4_pay_session_id_proto_id = [
+ tv_mac_pppoe_ipv4_pay_session_id_proto_id_in_queue_01,
+ tv_mac_pppoe_ipv4_pay_session_id_proto_id_queue_region_02,
+ tv_mac_pppoe_ipv4_pay_session_id_proto_id_drop_03
+ ]
+
+mac_pppoe_ipv6_pay_session_id_proto_id_scapy_str = {
+ "matched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(dst="00:11:22:33:44:54",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x00\\x57\')/IPv6()/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_pppoe_ipv6_pay_session_id_proto_id_in_queue_01 = {
+ "name":"mac_pppoe_ipv6_pay_session_id_proto_id_in_queue_01",
+ "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions queue index 2 / end",
+ "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 queue index 2 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv6_pay_session_id_proto_id_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv6_pay_session_id_proto_id_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tv_mac_pppoe_ipv6_pay_session_id_proto_id_queue_region_02 = {
+ "name":"mac_pppoe_ipv6_pay_session_id_proto_id_queue_region_02",
+ "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions rss queues 4 5 end / end",
+ "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 rss queues 4 5 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv6_pay_session_id_proto_id_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[4, 5]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv6_pay_session_id_proto_id_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[4, 5]}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tv_mac_pppoe_ipv6_pay_session_id_proto_id_drop_03 = {
+ "name":"mac_pppoe_ipv6_pay_session_id_proto_id_drop_03",
+ "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions drop / end",
+ "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 drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv6_pay_session_id_proto_id_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv6_pay_session_id_proto_id_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tvs_mac_pppoe_ipv6_pay_session_id_proto_id = [
+ tv_mac_pppoe_ipv6_pay_session_id_proto_id_in_queue_01,
+ tv_mac_pppoe_ipv6_pay_session_id_proto_id_queue_region_02,
+ tv_mac_pppoe_ipv6_pay_session_id_proto_id_drop_03
+ ]
+
+mac_pppoe_ipv4_pay_ip_address_scapy_str = {
+ "matched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)'],
+ "mismatched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/Raw("x"*80)'
+ ]
+}
+
+tv_mac_pppoe_ipv4_pay_ip_address_in_queue_01 = {
+ "name":"mac_pppoe_ipv4_pay_ip_address_in_queue_01",
+ "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions queue index 2 / end",
+ "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 queue index 2 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv4_pay_ip_address_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv4_pay_ip_address_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":2}}
+}
+
+tv_mac_pppoe_ipv4_pay_ip_address_queue_region_02 = {
+ "name":"mac_pppoe_ipv4_pay_ip_address_queue_region_02",
+ "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions rss queues 2 3 end / end",
+ "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 rss queues 2 3 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv4_pay_ip_address_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv4_pay_ip_address_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":2}}
+}
+
+tv_mac_pppoe_ipv4_pay_ip_address_drop_03 = {
+ "name":"mac_pppoe_ipv4_pay_ip_address_drop_03",
+ "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions drop / end",
+ "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 drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv4_pay_ip_address_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv4_pay_ip_address_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":2}}
+}
+
+tvs_mac_pppoe_ipv4_pay_ip_address = [
+ tv_mac_pppoe_ipv4_pay_ip_address_in_queue_01,
+ tv_mac_pppoe_ipv4_pay_ip_address_queue_region_02,
+ tv_mac_pppoe_ipv4_pay_ip_address_drop_03
+ ]
+
+mac_pppoe_ipv4_udp_pay_scapy_str = {
+ "matched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=27,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=19)/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_pppoe_ipv4_udp_pay_in_queue_01 = {
+ "name":"mac_pppoe_ipv4_udp_pay_in_queue_01",
+ "validate_pattern":"flow validate 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 actions queue index 1 / end",
+ "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 actions queue index 1 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv4_udp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv4_udp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_pppoe_ipv4_udp_pay_queue_region_02 = {
+ "name":"mac_pppoe_ipv4_udp_pay_queue_region_02",
+ "validate_pattern":"flow validate 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 actions rss queues 7 8 end / end",
+ "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 actions rss queues 7 8 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv4_udp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[7, 8]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv4_udp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[7, 8]}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_pppoe_ipv4_udp_pay_drop_03 = {
+ "name":"mac_pppoe_ipv4_udp_pay_drop_03",
+ "validate_pattern":"flow validate 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 actions drop / end",
+ "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 actions drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv4_udp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv4_udp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tvs_mac_pppoe_ipv4_udp_pay = [
+ tv_mac_pppoe_ipv4_udp_pay_in_queue_01,
+ tv_mac_pppoe_ipv4_udp_pay_queue_region_02,
+ tv_mac_pppoe_ipv4_udp_pay_drop_03
+ ]
+
+mac_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str = {
+ "matched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port_in_queue_01 = {
+ "name":"mac_pppoe_ipv4_udp_pay_non_src_dst_port_in_queue_01",
+ "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 queue index 2 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port_queue_region_02 = {
+ "name":"mac_pppoe_ipv4_udp_pay_non_src_dst_port_queue_region_02",
+ "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 rss queues 2 3 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port_drop_03 = {
+ "name":"mac_pppoe_ipv4_udp_pay_non_src_dst_port_drop_03",
+ "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 drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tvs_mac_pppoe_ipv4_udp_pay_non_src_dst_port = [
+ tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port_in_queue_01,
+ tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port_queue_region_02,
+ tv_mac_pppoe_ipv4_udp_pay_non_src_dst_port_drop_03
+ ]
+
+mac_pppoe_ipv4_tcp_pay_scapy_str = {
+ "matched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=27,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=19)/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_pppoe_ipv4_tcp_pay_in_queue_01 = {
+ "name":"mac_pppoe_ipv4_tcp_pay_in_queue_01",
+ "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 actions queue index 1 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_pppoe_ipv4_tcp_pay_queue_region_02 = {
+ "name":"mac_pppoe_ipv4_tcp_pay_queue_region_02",
+ "validate_pattern":"flow validate 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 actions rss queues 7 8 end / end",
+ "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 actions rss queues 7 8 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[7, 8]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[7, 8]}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_pppoe_ipv4_tcp_pay_drop_03 = {
+ "name":"mac_pppoe_ipv4_tcp_pay_drop_03",
+ "validate_pattern":"flow validate 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 actions drop / end",
+ "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 actions drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tvs_mac_pppoe_ipv4_tcp_pay = [
+ tv_mac_pppoe_ipv4_tcp_pay_in_queue_01,
+ tv_mac_pppoe_ipv4_tcp_pay_queue_region_02,
+ tv_mac_pppoe_ipv4_tcp_pay_drop_03
+ ]
+
+mac_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str = {
+ "matched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_in_queue_01 = {
+ "name":"mac_pppoe_ipv4_tcp_pay_non_src_dst_port_in_queue_01",
+ "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp / end actions queue index 2 / end",
+ "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 queue index 2 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_queue_region_02 = {
+ "name":"mac_pppoe_ipv4_tcp_pay_non_src_dst_port_queue_region_02",
+ "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp / end actions rss queues 7 8 end / end",
+ "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 rss queues 7 8 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[7, 8]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[7, 8]}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_drop_03 = {
+ "name":"mac_pppoe_ipv4_tcp_pay_non_src_dst_port_drop_03",
+ "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp / end actions drop / end",
+ "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 drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tvs_mac_pppoe_ipv4_tcp_pay_non_src_dst_port = [
+ tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_in_queue_01,
+ tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_queue_region_02,
+ tv_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_drop_03
+ ]
+
+mac_pppoe_ipv6_pay_ip_address_scapy_str = {
+ "matched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'],
+ "mismatched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("x"*80)'
+ ]
+}
+
+tv_mac_pppoe_ipv6_pay_ip_address_in_queue_01 = {
+ "name":"mac_pppoe_ipv6_pay_ip_address_in_queue_01",
+ "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / end actions queue index 1 / end",
+ "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:8475:1111:3900:2022 / end actions queue index 1 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv6_pay_ip_address_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv6_pay_ip_address_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":2}}
+}
+
+tv_mac_pppoe_ipv6_pay_ip_address_queue_region_02 = {
+ "name":"mac_pppoe_ipv6_pay_ip_address_queue_region_02",
+ "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / end actions rss queues 2 3 end / end",
+ "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:8475:1111:3900:2022 / end actions rss queues 2 3 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv6_pay_ip_address_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv6_pay_ip_address_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":2}}
+}
+
+tv_mac_pppoe_ipv6_pay_ip_address_drop_03 = {
+ "name":"mac_pppoe_ipv6_pay_ip_address_drop_03",
+ "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / end actions drop / end",
+ "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:8475:1111:3900:2022 / end actions drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv6_pay_ip_address_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv6_pay_ip_address_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":2}}
+}
+
+tvs_mac_pppoe_ipv6_pay_ip_address = [
+ tv_mac_pppoe_ipv6_pay_ip_address_in_queue_01,
+ tv_mac_pppoe_ipv6_pay_ip_address_queue_region_02,
+ tv_mac_pppoe_ipv6_pay_ip_address_drop_03
+ ]
+
+mac_pppoe_ipv6_udp_pay_scapy_str = {
+ "matched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=27,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=19)/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_pppoe_ipv6_udp_pay_in_queue_01 = {
+ "name":"mac_pppoe_ipv6_udp_pay_in_queue_01",
+ "validate_pattern":"flow validate 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 queue index 1 / end",
+ "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 queue index 1 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv6_udp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv6_udp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tv_mac_pppoe_ipv6_udp_pay_queue_region_02 = {
+ "name":"mac_pppoe_ipv6_udp_pay_queue_region_02",
+ "validate_pattern":"flow validate 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 rss queues 4 5 end / end",
+ "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 rss queues 4 5 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv6_udp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[4, 5]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv6_udp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[4, 5]}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tv_mac_pppoe_ipv6_udp_pay_drop_03 = {
+ "name":"mac_pppoe_ipv6_udp_pay_drop_03",
+ "validate_pattern":"flow validate 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 drop / end",
+ "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 drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv6_udp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv6_udp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tvs_mac_pppoe_ipv6_udp_pay = [
+ tv_mac_pppoe_ipv6_udp_pay_in_queue_01,
+ tv_mac_pppoe_ipv6_udp_pay_queue_region_02,
+ tv_mac_pppoe_ipv6_udp_pay_drop_03
+ ]
+
+mac_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str = {
+ "matched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port_in_queue_01 = {
+ "name":"mac_pppoe_ipv6_udp_pay_non_src_dst_port_in_queue_01",
+ "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp / end actions queue index 1 / end",
+ "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:8475:1111:3900:2022 / udp / end actions queue index 1 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port_queue_region_02 = {
+ "name":"mac_pppoe_ipv6_udp_pay_non_src_dst_port_queue_region_02",
+ "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp / end actions rss queues 2 3 end / end",
+ "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:8475:1111:3900:2022 / udp / end actions rss queues 2 3 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port_drop_03 = {
+ "name":"mac_pppoe_ipv6_udp_pay_non_src_dst_port_drop_03",
+ "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp / end actions drop / end",
+ "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:8475:1111:3900:2022 / udp / end actions drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tvs_mac_pppoe_ipv6_udp_pay_non_src_dst_port = [
+ tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port_in_queue_01,
+ tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port_queue_region_02,
+ tv_mac_pppoe_ipv6_udp_pay_non_src_dst_port_drop_03
+ ]
+
+mac_pppoe_ipv6_tcp_pay_scapy_str = {
+ "matched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=27,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=19)/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_pppoe_ipv6_tcp_pay_in_queue_01 = {
+ "name":"mac_pppoe_ipv6_tcp_pay_in_queue_01",
+ "validate_pattern":"flow validate 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 queue index 1 / end",
+ "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 queue index 1 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tv_mac_pppoe_ipv6_tcp_pay_queue_region_02 = {
+ "name":"mac_pppoe_ipv6_tcp_pay_queue_region_02",
+ "validate_pattern":"flow validate 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 rss queues 4 5 end / end",
+ "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 rss queues 4 5 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[4, 5]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[4, 5]}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tv_mac_pppoe_ipv6_tcp_pay_drop_03 = {
+ "name":"mac_pppoe_ipv6_tcp_pay_drop_03",
+ "validate_pattern":"flow validate 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 drop / end",
+ "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 drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tvs_mac_pppoe_ipv6_tcp_pay = [
+ tv_mac_pppoe_ipv6_tcp_pay_in_queue_01,
+ tv_mac_pppoe_ipv6_tcp_pay_queue_region_02,
+ tv_mac_pppoe_ipv6_tcp_pay_drop_03
+ ]
+
+mac_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str = {
+ "matched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_in_queue_01 = {
+ "name":"mac_pppoe_ipv6_tcp_pay_non_src_dst_port_in_queue_01",
+ "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp / end actions queue index 1 / end",
+ "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:8475:1111:3900:2022 / tcp / end actions queue index 1 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_queue_region_02 = {
+ "name":"mac_pppoe_ipv6_tcp_pay_non_src_dst_port_queue_region_02",
+ "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp / end actions rss queues 2 3 end / end",
+ "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:8475:1111:3900:2022 / tcp / end actions rss queues 2 3 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_drop_03 = {
+ "name":"mac_pppoe_ipv6_tcp_pay_non_src_dst_port_drop_03",
+ "validate_pattern":"flow validate 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp / end actions drop / end",
+ "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:8475:1111:3900:2022 / tcp / end actions drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tvs_mac_pppoe_ipv6_tcp_pay_non_src_dst_port = [
+ tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_in_queue_01,
+ tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_queue_region_02,
+ tv_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_drop_03
+ ]
+
+mac_vlan_pppoe_ipv4_pay_ip_address_scapy_str = {
+ "matched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)'],
+ "mismatched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/Raw("x"*80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/Raw("x"*80)'
+ ]
+}
+
+tv_mac_vlan_pppoe_ipv4_pay_ip_address_in_queue_01 = {
+ "name":"mac_vlan_pppoe_ipv4_pay_ip_address_in_queue_01",
+ "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions queue index 2 / end",
+ "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 queue index 2 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_ip_address_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_ip_address_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tv_mac_vlan_pppoe_ipv4_pay_ip_address_queue_region_02 = {
+ "name":"mac_vlan_pppoe_ipv4_pay_ip_address_queue_region_02",
+ "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions rss queues 2 3 end / end",
+ "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 rss queues 2 3 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_ip_address_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_ip_address_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tv_mac_vlan_pppoe_ipv4_pay_ip_address_drop_03 = {
+ "name":"mac_vlan_pppoe_ipv4_pay_ip_address_drop_03",
+ "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions drop / end",
+ "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 drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_ip_address_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_pay_ip_address_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tvs_mac_vlan_pppoe_ipv4_pay_ip_address = [
+ tv_mac_vlan_pppoe_ipv4_pay_ip_address_in_queue_01,
+ tv_mac_vlan_pppoe_ipv4_pay_ip_address_queue_region_02,
+ tv_mac_vlan_pppoe_ipv4_pay_ip_address_drop_03
+ ]
+
+mac_vlan_pppoe_ipv4_udp_pay_scapy_str = {
+ "matched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=27,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=19)/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_vlan_pppoe_ipv4_udp_pay_in_queue_01 = {
+ "name":"mac_vlan_pppoe_ipv4_udp_pay",
+ "validate_pattern":"flow validate 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 is 23 / end actions queue index 1 / end",
+ "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 is 23 / end actions queue index 1 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":5}}
+}
+
+tv_mac_vlan_pppoe_ipv4_udp_pay_queue_region_02 = {
+ "name":"mac_vlan_pppoe_ipv4_udp_pay_queue_region_02",
+ "validate_pattern":"flow validate 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 is 23 / end actions rss queues 7 8 end / end",
+ "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 is 23 / end actions rss queues 7 8 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[7, 8]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[7, 8]}},
+ "expect_results":{"expect_pkts":5}}
+}
+
+tv_mac_vlan_pppoe_ipv4_udp_pay_drop_03 = {
+ "name":"mac_vlan_pppoe_ipv4_udp_pay_drop_03",
+ "validate_pattern":"flow validate 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 is 23 / end actions drop / end",
+ "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 is 23 / end actions drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":5}}
+}
+
+tvs_mac_vlan_pppoe_ipv4_udp_pay = [
+ tv_mac_vlan_pppoe_ipv4_udp_pay_in_queue_01,
+ tv_mac_vlan_pppoe_ipv4_udp_pay_queue_region_02,
+ tv_mac_vlan_pppoe_ipv4_udp_pay_drop_03
+ ]
+
+mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str = {
+ "matched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_in_queue_01 = {
+ "name":"mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_in_queue_01",
+ "validate_pattern":"flow validate 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 queue index 2 / end",
+ "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 queue index 2 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":5}}
+}
+
+tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_queue_region_02 = {
+ "name":"mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_queue_region_02",
+ "validate_pattern":"flow validate 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 rss queues 7 8 end / end",
+ "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 rss queues 7 8 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[7, 8]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[7, 8]}},
+ "expect_results":{"expect_pkts":5}}
+}
+
+tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_drop_03 = {
+ "name":"mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_drop_03",
+ "validate_pattern":"flow validate 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 drop / end",
+ "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 drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":5}}
+}
+
+tvs_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port = [
+ tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_in_queue_01,
+ tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_queue_region_02,
+ tv_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_drop_03
+ ]
+
+mac_vlan_pppoe_ipv4_tcp_pay_scapy_str = {
+ "matched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=27,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=19)/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_vlan_pppoe_ipv4_tcp_pay_in_queue_01 = {
+ "name":"mac_vlan_pppoe_ipv4_tcp_pay_in_queue_01",
+ "validate_pattern":"flow validate 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 is 23 / end actions queue index 1 / end",
+ "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 is 23 / end actions queue index 1 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":5}}
+}
+
+tv_mac_vlan_pppoe_ipv4_tcp_pay_queue_region_02 = {
+ "name":"mac_vlan_pppoe_ipv4_tcp_pay_queue_region_02",
+ "validate_pattern":"flow validate 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 is 23 / end actions rss queues 7 8 end / end",
+ "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 is 23 / end actions rss queues 7 8 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[7, 8]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[7, 8]}},
+ "expect_results":{"expect_pkts":5}}
+}
+
+tv_mac_vlan_pppoe_ipv4_tcp_pay_drop_03 = {
+ "name":"mac_vlan_pppoe_ipv4_tcp_pay_drop_03",
+ "validate_pattern":"flow validate 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 is 23 / end actions drop / end",
+ "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 is 23 / end actions drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":5}}
+}
+
+tvs_mac_vlan_pppoe_ipv4_tcp_pay = [
+ tv_mac_vlan_pppoe_ipv4_tcp_pay_in_queue_01,
+ tv_mac_vlan_pppoe_ipv4_tcp_pay_queue_region_02,
+ tv_mac_vlan_pppoe_ipv4_tcp_pay_drop_03
+ ]
+
+mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str = {
+ "matched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.4")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_in_queue_01 = {
+ "name":"mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_in_queue_01",
+ "validate_pattern":"flow validate 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 queue index 2 / end",
+ "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 queue index 2 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":2}},
+ "expect_results":{"expect_pkts":5}}
+}
+
+tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_queue_region_02 = {
+ "name":"mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_queue_region_02",
+ "validate_pattern":"flow validate 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 rss queues 7 8 end / end",
+ "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 rss queues 7 8 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[7, 8]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[7, 8]}},
+ "expect_results":{"expect_pkts":5}}
+}
+
+tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_drop_03 = {
+ "name":"mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_drop_03",
+ "validate_pattern":"flow validate 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 drop / end",
+ "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 drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":5}}
+}
+
+tvs_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port = [
+ tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_in_queue_01,
+ tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_queue_region_02,
+ tv_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_drop_03
+ ]
+
+mac_vlan_pppoe_ipv6_pay_ip_address_scapy_str = {
+ "matched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'],
+ "mismatched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x"*80)'
+ ]
+}
+
+tv_mac_vlan_pppoe_ipv6_pay_ip_address_in_queue_01 = {
+ "name":"mac_vlan_pppoe_ipv6_pay_ip_address_in_queue_01",
+ "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / end actions queue index 1 / end",
+ "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 actions queue index 1 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_ip_address_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_ip_address_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":2}}
+}
+
+tv_mac_vlan_pppoe_ipv6_pay_ip_address_queue_region_02 = {
+ "name":"mac_vlan_pppoe_ipv6_pay_ip_address_queue_region_02",
+ "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / end actions rss queues 2 3 end / end",
+ "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 actions rss queues 2 3 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_ip_address_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_ip_address_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":2}}
+}
+
+tv_mac_vlan_pppoe_ipv6_pay_ip_address_drop_03 = {
+ "name":"mac_vlan_pppoe_ipv6_pay_ip_address_drop_03",
+ "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / end actions drop / end",
+ "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 actions drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_ip_address_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_pay_ip_address_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":2}}
+}
+
+tvs_mac_vlan_pppoe_ipv6_pay_ip_address = [
+ tv_mac_vlan_pppoe_ipv6_pay_ip_address_in_queue_01,
+ tv_mac_vlan_pppoe_ipv6_pay_ip_address_queue_region_02,
+ tv_mac_vlan_pppoe_ipv6_pay_ip_address_drop_03
+ ]
+
+mac_vlan_pppoe_ipv6_udp_pay_scapy_str = {
+ "matched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=27,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=19)/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_vlan_pppoe_ipv6_udp_pay_in_queue_01 = {
+ "name":"mac_vlan_pppoe_ipv6_udp_pay_in_queue_01",
+ "validate_pattern":"flow validate 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 queue index 1 / end",
+ "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 queue index 1 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_vlan_pppoe_ipv6_udp_pay_queue_region_02 = {
+ "name":"mac_vlan_pppoe_ipv6_udp_pay_queue_region_02",
+ "validate_pattern":"flow validate 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 rss queues 4 5 end / end",
+ "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 rss queues 4 5 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[4, 5]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[4, 5]}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_vlan_pppoe_ipv6_udp_pay_drop_03 = {
+ "name":"mac_vlan_pppoe_ipv6_udp_pay_drop_03",
+ "validate_pattern":"flow validate 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 drop / end",
+ "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 drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tvs_mac_vlan_pppoe_ipv6_udp_pay = [
+ tv_mac_vlan_pppoe_ipv6_udp_pay_in_queue_01,
+ tv_mac_vlan_pppoe_ipv6_udp_pay_queue_region_02,
+ tv_mac_vlan_pppoe_ipv6_udp_pay_drop_03
+ ]
+
+mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str = {
+ "matched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_in_queue_01 = {
+ "name":"mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_in_queue_01",
+ "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / udp / end actions queue index 1 / end",
+ "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 queue index 1 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_queue_region_02 = {
+ "name":"mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_queue_region_02",
+ "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / udp / end actions rss queues 2 3 end / end",
+ "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 rss queues 2 3 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_drop_03 = {
+ "name":"mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_drop_03",
+ "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / udp / end actions drop / end",
+ "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 drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tvs_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port = [
+ tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_in_queue_01,
+ tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_queue_region_02,
+ tv_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_drop_03
+ ]
+
+mac_vlan_pppoe_ipv6_tcp_pay_scapy_str = {
+ "matched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=27,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=19)/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_vlan_pppoe_ipv6_tcp_pay_in_queue_01 = {
+ "name":"mac_vlan_pppoe_ipv6_tcp_pay_in_queue_01",
+ "validate_pattern":"flow validate 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 queue index 1 / end",
+ "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 queue index 1 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_vlan_pppoe_ipv6_tcp_pay_queue_region_02 = {
+ "name":"mac_vlan_pppoe_ipv6_tcp_pay_queue_region_02",
+ "validate_pattern":"flow validate 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 rss queues 4 5 end / end",
+ "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 rss queues 4 5 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[4, 5]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[4, 5]}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_vlan_pppoe_ipv6_tcp_pay_drop_03 = {
+ "name":"mac_vlan_pppoe_ipv6_tcp_pay_drop_03",
+ "validate_pattern":"flow validate 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 drop / end",
+ "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 drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tvs_mac_vlan_pppoe_ipv6_tcp_pay = [
+ tv_mac_vlan_pppoe_ipv6_tcp_pay_in_queue_01,
+ tv_mac_vlan_pppoe_ipv6_tcp_pay_queue_region_02,
+ tv_mac_vlan_pppoe_ipv6_tcp_pay_drop_03
+ ]
+
+mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str = {
+ "matched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x57\')/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_in_queue_01 = {
+ "name":"mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_in_queue_01",
+ "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / tcp / end actions queue index 1 / end",
+ "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 queue index 1 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_queue_region_02 = {
+ "name":"mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_queue_region_02",
+ "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / tcp / end actions rss queues 2 3 end / end",
+ "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 rss queues 2 3 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_drop_03 = {
+ "name":"mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_drop_03",
+ "validate_pattern":"flow validate 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / tcp / end actions drop / end",
+ "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 drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":False},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tvs_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port = [
+ tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_in_queue_01,
+ tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_queue_region_02,
+ tv_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_drop_03
+ ]
+
+mac_pppoe_lcp_pay_scapy_str = {
+ "matched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:53",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_pppoe_lcp_pay_in_queue_01 = {
+ "name":"mac_pppoe_lcp_pay_in_queue_01",
+ "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0xc021 / end actions queue index 1 / end",
+ "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 queue index 1 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":True},
+ "matched":{"scapy_str":mac_pppoe_lcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_lcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tv_mac_pppoe_lcp_pay_queue_region_02 = {
+ "name":"mac_pppoe_lcp_pay_queue_region_02",
+ "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0xc021 / end actions rss queues 2 3 end / end",
+ "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 rss queues 2 3 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":True},
+ "matched":{"scapy_str":mac_pppoe_lcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_lcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tv_mac_pppoe_lcp_pay_drop_03 = {
+ "name":"mac_pppoe_lcp_pay_drop_03",
+ "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0xc021 / end actions drop / end",
+ "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 drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":True},
+ "matched":{"scapy_str":mac_pppoe_lcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_lcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tvs_mac_pppoe_lcp_pay = [
+ tv_mac_pppoe_lcp_pay_in_queue_01,
+ tv_mac_pppoe_lcp_pay_queue_region_02,
+ tv_mac_pppoe_lcp_pay_drop_03
+ ]
+
+mac_pppoe_ipcp_pay_scapy_str = {
+ "matched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:53",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_pppoe_ipcp_pay_in_queue_01 = {
+ "name":"mac_pppoe_ipcp_pay_in_queue_01",
+ "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x8021 / end actions queue index 1 / end",
+ "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 queue index 1 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":True},
+ "matched":{"scapy_str":mac_pppoe_ipcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tv_mac_pppoe_ipcp_pay_queue_region_02 = {
+ "name":"mac_pppoe_ipcp_pay_queue_region_02",
+ "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x8021 / end actions rss queues 2 3 end / end",
+ "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 rss queues 2 3 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":True},
+ "matched":{"scapy_str":mac_pppoe_ipcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tv_mac_pppoe_ipcp_pay_drop_03 = {
+ "name":"mac_pppoe_ipcp_pay_drop_03",
+ "validate_pattern":"flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x8021 / end actions drop / end",
+ "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 drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":True},
+ "matched":{"scapy_str":mac_pppoe_ipcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_pppoe_ipcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":3}}
+}
+
+tvs_mac_pppoe_ipcp_pay = [
+ tv_mac_pppoe_ipcp_pay_in_queue_01,
+ tv_mac_pppoe_ipcp_pay_queue_region_02,
+ tv_mac_pppoe_ipcp_pay_drop_03
+ ]
+
+mac_vlan_pppoe_lcp_pay_scapy_str = {
+ "matched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\xc0\\x21\')/PPP_LCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_vlan_pppoe_lcp_pay_in_queue_01 = {
+ "name":"mac_vlan_pppoe_lcp_pay_in_queue_01",
+ "validate_pattern":"flow validate 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 / end actions queue index 1 / end",
+ "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 / end actions queue index 1 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":True},
+ "matched":{"scapy_str":mac_vlan_pppoe_lcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_lcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_vlan_pppoe_lcp_pay_queue_region_02 = {
+ "name":"mac_vlan_pppoe_lcp_pay_queue_region_02",
+ "validate_pattern":"flow validate 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 / end actions rss queues 2 3 end / end",
+ "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 / end actions rss queues 2 3 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":True},
+ "matched":{"scapy_str":mac_vlan_pppoe_lcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_lcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_vlan_pppoe_lcp_pay_drop_03 = {
+ "name":"mac_vlan_pppoe_lcp_pay_drop_03",
+ "validate_pattern":"flow validate 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 / end actions drop / end",
+ "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 / end actions drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":True},
+ "matched":{"scapy_str":mac_vlan_pppoe_lcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_lcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tvs_mac_vlan_pppoe_lcp_pay = [
+ tv_mac_vlan_pppoe_lcp_pay_in_queue_01,
+ tv_mac_vlan_pppoe_lcp_pay_queue_region_02,
+ tv_mac_vlan_pppoe_lcp_pay_drop_03
+ ]
+
+mac_vlan_pppoe_ipcp_pay_scapy_str = {
+ "matched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)'],
+ "mismatched": [
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=4)/PPP(b\'\\x80\\x21\')/PPP_IPCP()/Raw("x" * 80)',
+ 'Ether(src="11:22:33:44:55:99",dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(b\'\\x00\\x21\')/IP()/Raw("x" * 80)'
+ ]
+}
+
+tv_mac_vlan_pppoe_ipcp_pay_in_queue_01 = {
+ "name":"mac_vlan_pppoe_ipcp_pay_in_queue_01",
+ "validate_pattern":"flow validate 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 / end actions queue index 1 / end",
+ "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 / end actions queue index 1 / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":True},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_in_queue,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_in_queue_mismatched,
+ "param":{"expect_port":0, "expect_queues":1}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_vlan_pppoe_ipcp_pay_queue_region_02 = {
+ "name":"mac_vlan_pppoe_ipcp_pay_queue_region_02",
+ "validate_pattern":"flow validate 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 / end actions rss queues 2 3 end / end",
+ "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 / end actions rss queues 2 3 end / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":True},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_queue_region,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_queue_region_mismatched,
+ "param":{"expect_port":0, "expect_queues":[2, 3]}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tv_mac_vlan_pppoe_ipcp_pay_drop_03 = {
+ "name":"mac_vlan_pppoe_ipcp_pay_drop_03",
+ "validate_pattern":"flow validate 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 / end actions drop / end",
+ "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 / end actions drop / end",
+ "configuration":{
+ "is_non_pipeline":True,
+ "is_need_rss_rule":True},
+ "matched":{"scapy_str":mac_vlan_pppoe_ipcp_pay_scapy_str["matched"],
+ "check_func":{"func":rfc.check_output_log_drop,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":1}},
+ "mismatched":{"scapy_str":mac_vlan_pppoe_ipcp_pay_scapy_str["mismatched"],
+ "check_func":{"func":rfc.check_output_log_drop_mismatched,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":4}}
+}
+
+tvs_mac_vlan_pppoe_ipcp_pay = [
+ tv_mac_vlan_pppoe_ipcp_pay_in_queue_01,
+ tv_mac_vlan_pppoe_ipcp_pay_queue_region_02,
+ tv_mac_vlan_pppoe_ipcp_pay_drop_03
+ ]
+
+test_results = OrderedDict()
+
+class CVLSwitchFilterPPPOETest(TestCase):
+
+ def bind_nics_driver(self, ports, driver=""):
+ # modprobe vfio driver
+ if driver == "vfio-pci":
+ for port in ports:
+ netdev = self.dut.ports_info[port]['port']
+ driver = netdev.get_nic_driver()
+ if driver != 'vfio-pci':
+ netdev.bind_driver(driver='vfio-pci')
+
+ elif driver == "igb_uio":
+ # igb_uio should insmod as default, no need to check
+ for port in ports:
+ netdev = self.dut.ports_info[port]['port']
+ driver = netdev.get_nic_driver()
+ if driver != 'igb_uio':
+ netdev.bind_driver(driver='igb_uio')
+ else:
+ for port in ports:
+ netdev = self.dut.ports_info[port]['port']
+ driver_now = netdev.get_nic_driver()
+ if driver == "":
+ driver = netdev.default_driver
+ if driver != driver_now:
+ netdev.bind_driver(driver=driver)
+
+ @skip_unsupported_pkg(['os default', 'wireless'])
+ def set_up_all(self):
+ """
+ Run at the start of each test suite.
+ """
+ self.verify(self.nic in ["columbiaville_25g","columbiaville_100g"], "%s nic not support CVL switch filter" % self.nic)
+ self.dut_ports = self.dut.get_ports(self.nic)
+ # Verify that enough ports are available
+ self.verify(len(self.dut_ports) >= 1, "Insufficient ports")
+ localPort = self.tester.get_local_port(self.dut_ports[0])
+ self.__tx_iface = self.tester.get_interface(localPort)
+ self.dut.send_expect("ifconfig %s up" % self.__tx_iface, "# ")
+ self.pkt = Packet()
+ self.pmd = PmdOutput(self.dut)
+
+ self.generate_file_with_fdir_rules()
+ self.path = self.dut.apps_name['test-pmd']
+
+ def set_up(self):
+ """
+ Run before each test case.
+ """
+
+ def generate_file_with_fdir_rules(self):
+ """
+ generate file with fdir rules to make fdir table full, then test switch filter
+ """
+ pf_pci = self.dut.ports_info[0]['pci']
+ out = self.pmd.start_testpmd('default', eal_param='-a %s --log-level=ice,7'%pf_pci)
+ self.dut.send_expect("quit", "# ")
+ self.fdir_rule_number = self.pmd.get_max_rule_number(self,out)
+ src_file = 'dep/testpmd_cmds_rte_flow_fdir_rules'
+ flows = open(src_file, mode='w')
+ rule_count = 1
+ for i in range(0,255):
+ for j in range(0,255):
+ if not rule_count > self.fdir_rule_number:
+ flows.write('flow create 0 ingress pattern eth / ipv4 src is 192.168.%d.%d dst is 192.1.0.0 tos is 4 / tcp src is 25 dst is 23 / end actions queue index 5 / end \n' % (i, j))
+ rule_count += 1
+ else:
+ break
+ if rule_count > self.fdir_rule_number:
+ break
+ flows.close()
+ self.dut_file_dir = '/tmp'
+ self.dut.session.copy_file_to(src_file, self.dut_file_dir)
+ self.fdir_file = "/tmp/testpmd_cmds_rte_flow_fdir_rules"
+
+ def create_testpmd_command(self):
+ """
+ Create testpmd command for non-pipeline mode
+ """
+ #Prepare testpmd EAL and parameters
+ all_eal_param = self.dut.create_eal_parameters(cores='1S/4C/1T', ports=[0])
+ command = self.path + all_eal_param + " --log-level=\"ice,8\" -- -i --rxq=16 --txq=16 --cmdline-file=%s" % self.fdir_file
+ # command = "./%s/app/testpmd %s --log-level=\"ice,8\" -- -i %s" % (self.dut.target, all_eal_param, "--rxq=16 --txq=16")
+ return command
+
+ def create_testpmd_command_pipeline_mode(self):
+ """
+ Create testpmd command for pipeline mode
+ """
+ #Prepare testpmd EAL and parameters
+ all_eal_param = self.dut.create_eal_parameters(cores='1S/4C/1T', ports=[0], port_options={0:"pipeline-mode-support=1"})
+ command = self.path + all_eal_param + " --log-level=\"ice,8\" -- -i --rxq=16 --txq=16"
+ return command
+
+ def launch_testpmd(self, is_non_pipeline):
+ """
+ launch testpmd with the command
+ """
+ if is_non_pipeline:
+ command = self.create_testpmd_command()
+ else:
+ command = self.create_testpmd_command_pipeline_mode()
+ out = self.dut.send_expect(command, "testpmd> ", 300)
+ self.dut.send_expect("port config all rss all", "testpmd> ", 15)
+ self.dut.send_expect("port config 0 rss-hash-key ipv4 1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd", "testpmd> ", 15)
+ self.dut.send_expect("rx_vxlan_port add 4789 0", "testpmd> ", 15)
+ self.dut.send_expect("set fwd rxonly", "testpmd> ", 15)
+ self.dut.send_expect("set verbose 1", "testpmd> ", 15)
+
+ def send_and_check_packets(self, dic, port):
+ """
+ general packets processing workflow.
+ """
+ #Specify the port to use
+ dic["check_func"]["param"]["expect_port"] = port
+ self.dut.send_expect("start", "testpmd> ", 15)
+ time.sleep(2)
+ #send packets
+ self.pkt.update_pkt(dic["scapy_str"])
+ self.pkt.send_pkt(self.tester, tx_port=self.__tx_iface, count=1, timeout=370)
+ time.sleep(3)
+ out = self.dut.send_expect("stop", "testpmd> ", 15)
+ result_flag, log_msg = dic["check_func"]["func"](out, dic["check_func"]["param"], dic["expect_results"])
+ return result_flag, log_msg
+
+ def send_packet_get_queue(self, packets_list):
+ """
+ general packets processing workflow.
+ """
+ self.dut.send_expect("start", "testpmd> ")
+ # send packets
+ self.pkt.update_pkt(packets_list)
+ self.pkt.send_pkt(self.tester, tx_port=self.__tx_iface, count=1, timeout=370)
+ time.sleep(3)
+ out = self.dut.send_expect("stop", "testpmd> ", 15)
+ p = re.compile(r"Forward Stats for RX Port= \d+/Queue=(\s?\d+)")
+ res = p.findall(out)
+ default_queue = [int(i) for i in res]
+ return default_queue
+
+ def get_available_queue_num(self, default_queue, expect_queue, pmd_queue=8):
+ """
+ general packets processing workflow.
+ """
+ queue_list = list(range(1, pmd_queue))
+ # check if expect_queue length is power of 2
+ q_len = len(expect_queue)
+ self.verify(q_len & (q_len - 1) == 0, "default_queue length is not power of 2!")
+ for q in default_queue:
+ if q in queue_list:
+ queue_list.remove(q)
+ if queue_list == []:
+ return []
+ # according to expect_queue length get available queue
+ set_queue_list = []
+ if q_len == 1:
+ set_queue = random.choice(queue_list)
+ set_queue_list.append(set_queue)
+ else:
+ fun = lambda x: x[1] - x[0]
+ for k, g in groupby(enumerate(queue_list), fun):
+ list_group = [j for i, j in g]
+ if len(list_group) >= q_len:
+ set_queue_list = list_group[:q_len]
+ break
+ return set_queue_list
+
+ def create_switch_filter_rule(self, rte_flow_pattern, pattern_name="", overall_result=True, check_stats=True):
+ """
+ create switch filter rules
+ """
+ s = "Succeeded to create (2) flow"
+ p = re.compile(r"Flow rule #(\d+) created")
+ rule_list = []
+ if isinstance(rte_flow_pattern, list):
+ for rule in rte_flow_pattern:
+ out = self.dut.send_expect(rule, "testpmd> ") #create a rule
+ if s not in out:
+ rule_list.append(False)
+ else:
+ m = p.search(out)
+ if m:
+ rule_list.append(m.group(1))
+ else:
+ rule_list.append(False)
+ elif isinstance(rte_flow_pattern, str):
+ out = self.dut.send_expect(rte_flow_pattern, "testpmd> ") # create a rule
+ if s not in out:
+ rule_list.append(False)
+ else:
+ m = p.search(out)
+ if m:
+ rule_list.append(m.group(1))
+ else:
+ rule_list.append(False)
+ else:
+ raise Exception("unsupported rule type, only accept list or str")
+ if check_stats:
+ if all(rule_list):
+ result_flag = True
+ log_msg = ""
+ else:
+ result_flag = False
+ log_msg = "some rules not created successfully, result %s, rule %s" % (rule_list, rte_flow_pattern)
+ overall_result = self.save_results(pattern_name, "create rule", result_flag, log_msg, overall_result)
+ return result_flag, overall_result, rule_list
+ else:
+ return rule_list
+
+ def validate_switch_filter_rule(self, rte_flow_pattern, pattern_name="", overall_result=True, check_stats=True):
+ # validate rule.
+ p = "Flow rule validated"
+ rule_list = []
+ if isinstance(rte_flow_pattern, list):
+ for i in rte_flow_pattern:
+ length = len(i)
+ rule_rep = i[0:5] + "validate" + i[11:length]
+ out = self.dut.send_expect(rule_rep, "testpmd> ") #validate a rule
+ if (p in out) and ("Failed" not in out):
+ rule_list.append(True)
+ else:
+ rule_list.append(False)
+ elif isinstance(rte_flow_pattern, str):
+ length = len(rte_flow_pattern)
+ rule_rep = rte_flow_pattern[0:5] + "validate" + rte_flow_pattern[11:length]
+ out = self.dut.send_expect(rule_rep, "testpmd> ") #validate a rule
+ if (p in out) and ("Failed" not in out):
+ rule_list.append(True)
+ else:
+ rule_list.append(False)
+ else:
+ raise Exception("unsupported rule type, only accept list or str")
+ if check_stats:
+ if all(rule_list):
+ result_flag = True
+ log_msg = ""
+ else:
+ result_flag = False
+ log_msg = "some rules not validated successfully, result %s, rule %s" % (rule_list, rte_flow_pattern)
+ overall_result = self.save_results(pattern_name, "validate rule", result_flag, log_msg, overall_result)
+ return result_flag, overall_result
+ else:
+ return rule_list
+
+ def check_switch_filter_rule_list(self, port_id, rule_list=[], is_non_pipeline=True, is_need_rss_rule=True, pattern_name="", overall_result="", flag="", check_stats=True):
+ """
+ check the rules in list identical to ones in rule_list
+ """
+ out = self.dut.send_expect("flow list %d" % port_id, "testpmd> ", 15)
+ p = re.compile(r"ID\s+Group\s+Prio\s+Attr\s+Rule")
+ m = p.search(out)
+ if not m:
+ result = []
+ else:
+ p_spec = re.compile("^(\d+)\s")
+ out_lines = out.splitlines()
+ res = filter(bool, map(p_spec.match, out_lines))
+ result = [i.group(1) for i in res]
+ if is_non_pipeline:
+ #remove 15360 fdir rules id
+ del result[:self.fdir_rule_number]
+ if is_need_rss_rule:
+ #remove rss rule id
+ del result[0]
+ if check_stats:
+ if result == rule_list:
+ result_flag = True
+ log_msg = ""
+ else:
+ result_flag = False
+ log_msg = "the rule list is not the same. expect %s, result %s" % (rule_list, result)
+ overall_result = self.save_results(pattern_name, "check rule list after "+flag, result_flag, log_msg, overall_result)
+ return result_flag, overall_result
+ else:
+ return result
+
+ def destroy_switch_filter_rule(self, port_id, rule_list, pattern_name="", overall_result=True, check_stats=True):
+ p = re.compile(r"Flow rule #(\d+) destroyed")
+ destroy_list = []
+ if isinstance(rule_list, list):
+ for i in rule_list:
+ out = self.dut.send_expect("flow destroy %s rule %s" % (port_id, i), "testpmd> ", 15)
+ m = p.search(out)
+ if m:
+ destroy_list.append(m.group(1))
+ else:
+ destroy_list.append(False)
+ else:
+ out = self.dut.send_expect("flow destroy %s rule %s" % (port_id, rule_list), "testpmd> ", 15)
+ m = p.search(out)
+ if m:
+ destroy_list.append(m.group(1))
+ else:
+ destroy_list.append(False)
+ rule_list = [rule_list]
+ if check_stats:
+ if sorted(destroy_list) == sorted(rule_list):
+ result_flag = True
+ log_msg = ""
+ else:
+ result_flag = False
+ log_msg = "flow rule destroy failed, expect %s result %s" % (rule_list, destroy_list)
+ overall_result = self.save_results(pattern_name, "destroy rule list", result_flag, log_msg, overall_result)
+ return result_flag, overall_result
+ else:
+ return destroy_list
+
+ def save_results(self, pattern_name, flag, result_flag, log_msg, overall_result):
+ """
+ save results to dictionary: test_results.
+ """
+ global test_results
+
+ test_results[pattern_name][flag] = {}
+ test_results[pattern_name][flag]["result_flag"] = result_flag
+ test_results[pattern_name][flag]["log_msg"] = log_msg
+ overall_result = overall_result and result_flag
+ return overall_result
+
+ def display_results(self):
+ global test_results
+ #print the results of the test case
+ count = 1
+ for pattern in list(test_results.keys()):
+ print(str(count)+". "+pattern)
+ for flag in list(test_results[pattern].keys()):
+ result_flag = test_results[pattern][flag]["result_flag"]
+ log_msg = test_results[pattern][flag]["log_msg"]
+ print(flag+": ", end=' ')
+ result = ""
+ if result_flag:
+ result = "Passed"
+ print(GREEN(result), log_msg)
+ else:
+ result = "failed"
+ print(RED(result+", "+log_msg))
+ print()
+ count += 1
+
+ def check_and_reset_queues(self, tv, default_queue, pattern_name, overall_result):
+ # check if default_queue and queues in rule have intersection
+ expect_queue = tv["matched"]["check_func"]["param"]["expect_queues"]
+ if expect_queue != "null":
+ if isinstance(expect_queue, int):
+ eq_list = []
+ eq_list.append(expect_queue)
+ elif isinstance(expect_queue, list):
+ eq_list = expect_queue
+ recover_flag = list(set(eq_list) & set(default_queue))
+ else:
+ recover_flag = None
+ # if default_queue has intersection with expect_queue, reset queues
+ if recover_flag:
+ # exclude default_queue and get set_queue
+ set_queue_list = self.get_available_queue_num(default_queue, eq_list, 16)
+ if not set_queue_list:
+ result_flag = False
+ log_msg = "No enough queues to avoid default_queue. Please give more queues when launch testpmd."
+ overall_result = self.save_results(pattern_name, "get queues", result_flag, log_msg, overall_result)
+ return result_flag, overall_result, tv
+ # reset queues in the rule
+ if isinstance(expect_queue, int):
+ rule_command = tv["rte_flow_pattern"].replace("/ end actions queue index %s" % str(expect_queue),
+ "/ end actions queue index %s" % str(set_queue_list[0]))
+ tv["matched"]["check_func"]["param"]["expect_queues"] = set_queue_list[0]
+ tv["mismatched"]["check_func"]["param"]["expect_queues"] = set_queue_list[0]
+ elif isinstance(expect_queue, list):
+ q = [str(i) for i in expect_queue]
+ expect_queue_str = " ".join(q)
+ s = [str(i) for i in set_queue_list]
+ set_queue_str = " ".join(s)
+ rule_command = tv["rte_flow_pattern"].replace("/ end actions rss queues %s" % expect_queue_str,
+ "/ end actions rss queues %s" % set_queue_str)
+ tv["matched"]["check_func"]["param"]["expect_queues"] = set_queue_list
+ tv["mismatched"]["check_func"]["param"]["expect_queues"] = set_queue_list
+ tv["rte_flow_pattern"] = rule_command
+ return True, overall_result, tv
+
+ def _rte_flow_validate_pattern(self, test_vectors, launch_testpmd=True):
+
+ global test_results
+ is_non_pipeline = test_vectors[0]["configuration"]["is_non_pipeline"]
+ is_need_rss_rule = test_vectors[0]["configuration"]["is_need_rss_rule"]
+ if launch_testpmd:
+ #launch testpmd
+ self.launch_testpmd(is_non_pipeline)
+ test_results.clear()
+ overall_result = True
+ count = 1
+ for tv in test_vectors:
+ pattern_name = tv["name"]
+ test_results[pattern_name] = OrderedDict()
+ # get the queues that packets originally came to
+ if count == 1:
+ packets_list = tv["matched"]["scapy_str"] + tv["mismatched"]["scapy_str"]
+ default_queue = self.send_packet_get_queue(packets_list)
+ count += 1
+ result_flag, overall_result, tv = self.check_and_reset_queues(tv, default_queue, pattern_name, overall_result)
+ if not result_flag:
+ continue
+
+ #validate a rule
+ result_flag, overall_result = self.validate_switch_filter_rule(tv["rte_flow_pattern"], pattern_name, overall_result)
+ if not result_flag:
+ continue
+ result_flag, overall_result = self.check_switch_filter_rule_list(self.dut_ports[0], [], is_non_pipeline, is_need_rss_rule, pattern_name, overall_result, "validate")
+ if not result_flag:
+ continue
+ #create a rule
+ result_flag, overall_result, rule_list = self.create_switch_filter_rule(tv["rte_flow_pattern"], pattern_name, overall_result) #create a rule
+ if not result_flag:
+ continue
+ result_flag, overall_result = self.check_switch_filter_rule_list(self.dut_ports[0], rule_list, is_non_pipeline, is_need_rss_rule, pattern_name, overall_result, "create")
+ if not result_flag:
+ continue
+ #send matched packets and check
+ matched_dic = tv["matched"]
+ result_flag, log_msg = self.send_and_check_packets(matched_dic, self.dut_ports[0])
+ overall_result = self.save_results(pattern_name, "matched packets", result_flag, log_msg, overall_result)
+ #send mismatched packets and check
+ mismatched_dic = tv["mismatched"]
+ if len(list(mismatched_dic.keys())) != 0:
+ result_flag, log_msg = self.send_and_check_packets(mismatched_dic, self.dut_ports[0])
+ overall_result = self.save_results(pattern_name, "mismatched", result_flag, log_msg, overall_result)
+ #destroy rule and send matched packets
+ result_flag, overall_result = self.destroy_switch_filter_rule(0, rule_list, pattern_name, overall_result)
+ if not result_flag:
+ continue
+ result_flag, overall_result = self.check_switch_filter_rule_list(self.dut_ports[0], [], is_non_pipeline, is_need_rss_rule, pattern_name, overall_result, "destroy")
+ if not result_flag:
+ continue
+ #send matched packets and check
+ check_destroy_dict = copy.deepcopy(matched_dic)
+ check_destroy_dict["check_func"]["func"] = mismatched_dic["check_func"]["func"]
+ result_flag, log_msg = self.send_and_check_packets(check_destroy_dict, self.dut_ports[0])
+ overall_result = self.save_results(pattern_name, "matched packets after destroying", result_flag, log_msg, overall_result)
+ self.display_results()
+ self.verify(overall_result == True, "Some subcase failed.")
+
+ def test_ethertype_filter_pppoes_pipeline_mode(self):
+ tvs_ethertype_filter_pppoes_pipeline_mode = copy.deepcopy(tvs_ethertype_filter_pppoes)
+ for tv in tvs_ethertype_filter_pppoes_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ #launch testpmd
+ self.launch_testpmd(False)
+ #create a pppoe rss rule to make the pppoe packets have hash value, and queue group action work
+ self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
+ self._rte_flow_validate_pattern(tvs_ethertype_filter_pppoes_pipeline_mode, False)
+
+ def test_ethertype_filter_pppoes(self):
+ #launch testpmd
+ self.launch_testpmd(True)
+ #create a pppoe rss rule to make the pppoe packets have hash value, and queue group action work
+ self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
+ self._rte_flow_validate_pattern(tvs_ethertype_filter_pppoes, False)
+
+ # 20.08
+ def test_mac_vlan_pppoe_ipv4_pay_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_pay_session_id_proto_id)
+
+ def test_mac_vlan_pppoe_ipv6_pay_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_pay_session_id_proto_id)
+
+ def test_mac_pppoe_ipv4_pay_session_id_proto_id_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_pay_session_id_proto_id)
+
+ def test_mac_pppoe_ipv6_pay_session_id_proto_id_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_pay_session_id_proto_id)
+
+ def test_mac_pppoe_ipv4_pay_ip_address_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_pay_ip_address)
+
+ def test_mac_pppoe_ipv4_udp_pay_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_udp_pay)
+
+ def test_mac_pppoe_ipv4_udp_pay_non_src_dst_port_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_udp_pay_non_src_dst_port)
+
+ def test_mac_pppoe_ipv4_tcp_pay_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_tcp_pay)
+
+ def test_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_tcp_pay_non_src_dst_port)
+
+ def test_mac_pppoe_ipv6_pay_ip_address_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_pay_ip_address)
+
+ def test_mac_pppoe_ipv6_udp_pay_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_udp_pay)
+
+ def test_mac_pppoe_ipv6_udp_pay_non_src_dst_port_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_udp_pay_non_src_dst_port)
+
+ def test_mac_pppoe_ipv6_tcp_pay_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_tcp_pay)
+
+ def test_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_tcp_pay_non_src_dst_port)
+
+ def test_mac_vlan_pppoe_ipv4_pay_ip_address_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_pay_ip_address)
+
+ def test_mac_vlan_pppoe_ipv4_udp_pay_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_udp_pay)
+
+ def test_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port)
+
+ def test_mac_vlan_pppoe_ipv4_tcp_pay_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_tcp_pay)
+
+ def test_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port)
+
+ def test_mac_vlan_pppoe_ipv6_pay_ip_address_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_pay_ip_address)
+
+ def test_mac_vlan_pppoe_ipv6_udp_pay_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_udp_pay)
+
+ def test_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port)
+
+ def test_mac_vlan_pppoe_ipv6_tcp_pay_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_tcp_pay)
+
+ def test_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_non_pipeline_mode(self):
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port)
+
+ # pppoe control
+ def test_mac_pppoe_lcp_pay_non_pipeline_mode(self):
+ #launch testpmd
+ self.launch_testpmd(True)
+ #create a pppoe rss rule to make the pppoe control have hash value, and queue group action work
+ self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_lcp_pay, False)
+
+ def test_mac_pppoe_ipcp_pay_non_pipeline_mode(self):
+ #launch testpmd
+ self.launch_testpmd(True)
+ #create a pppoe rss rule to make the pppoe control have hash value, and queue group action work
+ self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipcp_pay, False)
+
+ def test_mac_vlan_pppoe_lcp_pay_non_pipeline_mode(self):
+ #launch testpmd
+ self.launch_testpmd(True)
+ #create a pppoe rss rule to make the pppoe control have hash value, and queue group action work
+ self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_lcp_pay, False)
+
+ def test_mac_vlan_pppoe_ipcp_pay_non_pipeline_mode(self):
+ #launch testpmd
+ self.launch_testpmd(True)
+ #create a pppoe rss rule to make the pppoe control have hash value, and queue group action work
+ self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipcp_pay, False)
+
+ # 20.08 pipeline mode
+ def test_mac_vlan_pppoe_ipv4_pay_pipeline_mode(self):
+ tvs_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv4_pay_session_id_proto_id)
+ for tv in tvs_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_pay_session_id_proto_id_pipeline_mode)
+
+ def test_mac_vlan_pppoe_ipv6_pay_pipeline_mode(self):
+ tvs_mac_vlan_pppoe_ipv6_pay_session_id_proto_id_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv6_pay_session_id_proto_id)
+ for tv in tvs_mac_vlan_pppoe_ipv6_pay_session_id_proto_id_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_pay_session_id_proto_id_pipeline_mode)
+
+ def test_mac_pppoe_ipv4_pay_session_id_proto_id_pipeline_mode(self):
+ tvs_mac_pppoe_ipv4_pay_session_id_proto_id_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv4_pay_session_id_proto_id)
+ for tv in tvs_mac_pppoe_ipv4_pay_session_id_proto_id_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_pay_session_id_proto_id_pipeline_mode)
+
+ def test_mac_pppoe_ipv6_pay_session_id_proto_id_pipeline_mode(self):
+ tvs_mac_pppoe_ipv6_pay_session_id_proto_id_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv6_pay_session_id_proto_id)
+ for tv in tvs_mac_pppoe_ipv6_pay_session_id_proto_id_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_pay_session_id_proto_id_pipeline_mode)
+
+ def test_mac_pppoe_ipv4_pay_ip_address_pipeline_mode(self):
+ tvs_mac_pppoe_ipv4_pay_ip_address_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv4_pay_ip_address)
+ for tv in tvs_mac_pppoe_ipv4_pay_ip_address_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_pay_ip_address_pipeline_mode)
+
+ def test_mac_pppoe_ipv4_udp_pay_pipeline_mode(self):
+ tvs_mac_pppoe_ipv4_udp_pay_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv4_udp_pay)
+ for tv in tvs_mac_pppoe_ipv4_udp_pay_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_udp_pay_pipeline_mode)
+
+ def test_mac_pppoe_ipv4_udp_pay_non_src_dst_port_pipeline_mode(self):
+ tvs_mac_pppoe_ipv4_udp_pay_non_src_dst_port_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv4_udp_pay_non_src_dst_port)
+ for tv in tvs_mac_pppoe_ipv4_udp_pay_non_src_dst_port_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_udp_pay_non_src_dst_port_pipeline_mode)
+
+ def test_mac_pppoe_ipv4_tcp_pay_pipeline_mode(self):
+ tvs_mac_pppoe_ipv4_tcp_pay_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv4_tcp_pay)
+ for tv in tvs_mac_pppoe_ipv4_tcp_pay_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_tcp_pay_pipeline_mode)
+
+ def test_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_pipeline_mode(self):
+ tvs_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv4_tcp_pay_non_src_dst_port)
+ for tv in tvs_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv4_tcp_pay_non_src_dst_port_pipeline_mode)
+
+ def test_mac_pppoe_ipv6_pay_ip_address_pipeline_mode(self):
+ tvs_mac_pppoe_ipv6_pay_ip_address_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv6_pay_ip_address)
+ for tv in tvs_mac_pppoe_ipv6_pay_ip_address_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_pay_ip_address_pipeline_mode)
+
+ def test_mac_pppoe_ipv6_udp_pay_pipeline_mode(self):
+ tvs_mac_pppoe_ipv6_udp_pay_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv6_udp_pay)
+ for tv in tvs_mac_pppoe_ipv6_udp_pay_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_udp_pay_pipeline_mode)
+
+ def test_mac_pppoe_ipv6_udp_pay_non_src_dst_port_pipeline_mode(self):
+ tvs_mac_pppoe_ipv6_udp_pay_non_src_dst_port_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv6_udp_pay_non_src_dst_port)
+ for tv in tvs_mac_pppoe_ipv6_udp_pay_non_src_dst_port_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_udp_pay_non_src_dst_port_pipeline_mode)
+
+ def test_mac_pppoe_ipv6_tcp_pay_pipeline_mode(self):
+ tvs_mac_pppoe_ipv6_tcp_pay_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv6_tcp_pay)
+ for tv in tvs_mac_pppoe_ipv6_tcp_pay_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_tcp_pay_pipeline_mode)
+
+ def test_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_pipeline_mode(self):
+ tvs_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv6_tcp_pay_non_src_dst_port)
+ for tv in tvs_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_tcp_pay_non_src_dst_port_pipeline_mode)
+
+ def test_mac_vlan_pppoe_ipv4_pay_ip_address_pipeline_mode(self):
+ tvs_mac_vlan_pppoe_ipv4_pay_ip_address_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv4_pay_ip_address)
+ for tv in tvs_mac_vlan_pppoe_ipv4_pay_ip_address_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_pay_ip_address_pipeline_mode)
+
+ def test_mac_vlan_pppoe_ipv4_udp_pay_pipeline_mode(self):
+ tvs_mac_vlan_pppoe_ipv4_udp_pay_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv4_udp_pay)
+ for tv in tvs_mac_vlan_pppoe_ipv4_udp_pay_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_udp_pay_pipeline_mode)
+
+ def test_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_pipeline_mode(self):
+ tvs_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port)
+ for tv in tvs_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_udp_pay_non_src_dst_port_pipeline_mode)
+
+ def test_mac_vlan_pppoe_ipv4_tcp_pay_pipeline_mode(self):
+ tvs_mac_vlan_pppoe_ipv4_tcp_pay_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv4_tcp_pay)
+ for tv in tvs_mac_vlan_pppoe_ipv4_tcp_pay_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_tcp_pay_pipeline_mode)
+
+ def test_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_pipeline_mode(self):
+ tvs_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port)
+ for tv in tvs_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_tcp_pay_non_src_dst_port_pipeline_mode)
+
+ def test_mac_vlan_pppoe_ipv6_pay_ip_address_pipeline_mode(self):
+ tvs_mac_vlan_pppoe_ipv6_pay_ip_address_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv6_pay_ip_address)
+ for tv in tvs_mac_vlan_pppoe_ipv6_pay_ip_address_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_pay_ip_address_pipeline_mode)
+
+ def test_mac_vlan_pppoe_ipv6_udp_pay_pipeline_mode(self):
+ tvs_mac_vlan_pppoe_ipv6_udp_pay_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv6_udp_pay)
+ for tv in tvs_mac_vlan_pppoe_ipv6_udp_pay_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_udp_pay_pipeline_mode)
+
+ def test_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_pipeline_mode(self):
+ tvs_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port)
+ for tv in tvs_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_udp_pay_non_src_dst_port_pipeline_mode)
+
+ def test_mac_vlan_pppoe_ipv6_tcp_pay_pipeline_mode(self):
+ tvs_mac_vlan_pppoe_ipv6_tcp_pay_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv6_tcp_pay)
+ for tv in tvs_mac_vlan_pppoe_ipv6_tcp_pay_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_tcp_pay_pipeline_mode)
+
+ def test_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_pipeline_mode(self):
+ tvs_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port)
+ for tv in tvs_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv6_tcp_pay_non_src_dst_port_pipeline_mode)
+
+ # 20.08 pppoe control
+ def test_mac_pppoe_lcp_pay_pipeline_mode(self):
+ tvs_mac_pppoe_lcp_pay_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_lcp_pay)
+ for tv in tvs_mac_pppoe_lcp_pay_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ #launch testpmd
+ self.launch_testpmd(False)
+ #create a pppoe rss rule to make the pppoe control have hash value, and queue group action work
+ self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_lcp_pay_pipeline_mode, False)
+
+ def test_mac_pppoe_ipcp_pay_pipeline_mode(self):
+ tvs_mac_pppoe_ipcp_pay_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipcp_pay)
+ for tv in tvs_mac_pppoe_ipcp_pay_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ #launch testpmd
+ self.launch_testpmd(False)
+ #create a pppoe rss rule to make the pppoe control have hash value, and queue group action work
+ self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipcp_pay_pipeline_mode, False)
+
+ def test_mac_vlan_pppoe_lcp_pay_pipeline_mode(self):
+ tvs_mac_vlan_pppoe_lcp_pay_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_lcp_pay)
+ for tv in tvs_mac_vlan_pppoe_lcp_pay_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ #launch testpmd
+ self.launch_testpmd(False)
+ #create a pppoe rss rule to make the pppoe control have hash value, and queue group action work
+ self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_lcp_pay_pipeline_mode, False)
+
+ def test_mac_vlan_pppoe_ipcp_pay_pipeline_mode(self):
+ tvs_mac_vlan_pppoe_ipcp_pay_pipeline_mode = copy.deepcopy(tvs_mac_vlan_pppoe_ipcp_pay)
+ for tv in tvs_mac_vlan_pppoe_ipcp_pay_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ #launch testpmd
+ self.launch_testpmd(False)
+ #create a pppoe rss rule to make the pppoe control have hash value, and queue group action work
+ self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15)
+ self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipcp_pay_pipeline_mode, False)
+
+ def test_negative_case(self):
+ """
+ negative cases
+ """
+ self.launch_testpmd(False)
+ rules = {
+ "invalid parameters of queue index" : "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 16 / end",
+ "invalid parameters of rss queues" : [
+ "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions rss queues 1 2 3 end / end",
+ "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions rss queues 0 end / end",
+ "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions rss queues end / end",
+ "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions rss queues 1 2 3 5 end / end",
+ "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions rss queues 15 16 end / end",
+ "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions rss queues 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 end / end"],
+ "unsupported input set" : "flow create 0 priority 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 tos is 4 / end actions queue index 1 / end",
+ "multiple actions" : "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 1 / rss queues 2 3 end / end",
+ "void action" : "flow create 0 priority 0 ingress pattern eth / ipv4 / udp src is 25 dst is 23 / end actions end",
+ "unsupported action": "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions mark id 1 / end",
+ "void input set value" : "flow create 0 priority 0 ingress pattern eth / ipv4 / end actions queue index 1 / end",
+ "invalid port" : "flow create 1 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 1 / end"
+ }
+ # all the rules failed to validate and create
+
+ # invalid parameters of queue index
+ rule_list = self.validate_switch_filter_rule(rules["invalid parameters of queue index"], check_stats=False)
+ self.verify(not any(rule_list), "all rules should validate failed, result %s" % rule_list)
+ result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
+ rule_list = self.create_switch_filter_rule(rules["invalid parameters of queue index"], check_stats=False)
+ self.verify(not any(rule_list), "all rules should create failed, result %s" % rule_list)
+ result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
+
+ # invalid parameters of rss queues
+ rule_list = self.validate_switch_filter_rule(rules["invalid parameters of rss queues"], check_stats=False)
+ self.verify(not any(rule_list), "all rules should validate failed, result %s" % rule_list)
+ result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
+ rule_list = self.create_switch_filter_rule(rules["invalid parameters of rss queues"], check_stats=False)
+ self.verify(not any(rule_list), "all rules should create failed, result %s" % rule_list)
+ result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
+
+ # unsupported input set
+ rule_list = self.validate_switch_filter_rule(rules["unsupported input set"], check_stats=False)
+ self.verify(not any(rule_list), "all rules should validate failed, result %s" % rule_list)
+ result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
+ rule_list = self.create_switch_filter_rule(rules["unsupported input set"], check_stats=False)
+ self.verify(not any(rule_list), "all rules should create failed, result %s" % rule_list)
+ result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
+
+ # duplicated rules
+ rule = "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 1 / end"
+ rule_list = self.create_switch_filter_rule(rule, check_stats=False)
+ self.verify(all(rule_list), "some rules create failed, result %s" % rule_list)
+ result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == rule_list, "the rule list is not the same. expect %s, result %s" % (rule_list, result))
+ rule_list_dupli = self.create_switch_filter_rule(rule, check_stats=False)
+ self.verify(not any(rule_list_dupli), "all rules should create failed, result %s" % rule_list_dupli)
+ result_dupli = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result_dupli == rule_list, "the rule list is not the same. expect %s, result %s" % (rule_list, result_dupli))
+ self.dut.send_expect("flow destroy 0 rule %s" % rule_list[0], "testpmd> ", 15)
+
+ # conflicted rules
+ rule = "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 1 / end"
+ rule_list = self.create_switch_filter_rule(rule, check_stats=False)
+ self.verify(all(rule_list), "some rules create failed, result %s, rule %s" % (rule_list, rule))
+ result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == rule_list, "the rule list is not the same. expect %s, result %s" % (rule_list, result))
+ rule1 = "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 2 / end"
+ rule_list1 = self.create_switch_filter_rule(rule1, check_stats=False)
+ self.verify(not any(rule_list1), "all rules should create failed, result %s" % rule_list1)
+ rule2 = "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions drop / end"
+ rule_list2 = self.create_switch_filter_rule(rule2, check_stats=False)
+ self.verify(not any(rule_list2), "all rules should create failed, result %s" % rule_list2)
+ result1 = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result1 == rule_list, "the rule list is not the same. expect %s, result %s" % (rule_list, result1))
+ self.dut.send_expect("flow destroy 0 rule %s" % rule_list[0], "testpmd> ", 15)
+
+ # multiple actions
+ rule_list = self.validate_switch_filter_rule(rules["multiple actions"], check_stats=False)
+ self.verify(not any(rule_list), "all rules should validate failed, result %s" % rule_list)
+ result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
+ rule_list = self.create_switch_filter_rule(rules["multiple actions"], check_stats=False)
+ self.verify(not any(rule_list), "all rules should create failed, result %s" % rule_list)
+ result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
+
+ # void action
+ rule_list = self.validate_switch_filter_rule(rules["void action"], check_stats=False)
+ self.verify(not any(rule_list), "all rules should validate failed, result %s" % rule_list)
+ result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
+ rule_list = self.create_switch_filter_rule(rules["void action"], check_stats=False)
+ self.verify(not any(rule_list), "all rules should create failed, result %s" % rule_list)
+ result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
+
+ # delete a non-existing rule
+ result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
+ out = self.dut.send_expect("flow destroy 0 rule 0", "testpmd> ", 15)
+ self.verify("error" not in out, "It should be no error message.")
+
+ # add long switch rule
+ rule = "flow create 0 priority 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp src is 25 dst is 23 / end actions queue index 1 / end"
+ rule_list = self.validate_switch_filter_rule(rule, check_stats=False)
+ self.verify(not any(rule_list), "all rules should validate failed, result %s" % rule_list)
+ result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
+ rule_list = self.create_switch_filter_rule(rule, check_stats=False)
+ self.verify(not any(rule_list), "all rules should create failed, result %s" % rule_list)
+ result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
+ tvs_mac_pppoe_ipv6_udp_pay_pipeline_mode = copy.deepcopy(tvs_mac_pppoe_ipv6_udp_pay)
+ for tv in tvs_mac_pppoe_ipv6_udp_pay_pipeline_mode:
+ create_rule = tv["rte_flow_pattern"].replace("flow create 0", "flow create 0 priority 0")
+ tv["rte_flow_pattern"] = create_rule
+ tv["configuration"]["is_non_pipeline"] = False
+ self._rte_flow_validate_pattern(tvs_mac_pppoe_ipv6_udp_pay_pipeline_mode, False)
+
+ # void input set value
+ rule_list = self.validate_switch_filter_rule(rules["void input set value"], check_stats=False)
+ self.verify(not any(rule_list), "all rules should validate failed, result %s" % rule_list)
+ result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
+ rule_list = self.create_switch_filter_rule(rules["void input set value"], check_stats=False)
+ self.verify(not any(rule_list), "all rules should create failed, result %s" % rule_list)
+ result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
+
+ # invalid port
+ rule_list = self.validate_switch_filter_rule(rules["invalid port"], check_stats=False)
+ self.verify(not any(rule_list), "all rules should validate failed, result %s" % rule_list)
+ result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == [], "the rule list is not the same. expect %s, result %s" % ([], result))
+ result = self.check_switch_filter_rule_list(self.dut_ports[1], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == [], "the rule list is not the same. expect %s, result %s" % (rule_list, result))
+ rule_list = self.create_switch_filter_rule(rules["invalid port"], check_stats=False)
+ self.verify(not any(rule_list), "all rules should create failed, result %s" % rule_list)
+ # check there is no rule listed
+ result = self.check_switch_filter_rule_list(self.dut_ports[0], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == [], "the rule list is not the same. expect %s, result %s" % (rule_list, result))
+ result = self.check_switch_filter_rule_list(self.dut_ports[1], is_non_pipeline=False, is_need_rss_rule=False, check_stats=False)
+ self.verify(result == [], "the rule list is not the same. expect %s, result %s" % (rule_list, result))
+
+ def tear_down(self):
+ """
+ Run after each test case.
+ """
+ # destroy all the rules on port 0
+ self.dut.send_expect("flow flush %d" % self.dut_ports[0], "testpmd> ", 300)
+ self.dut.send_expect("quit", "#")
+
+ def tear_down_all(self):
+ """
+ Run after each test suite.
+ """
+ self.dut.kill_all()
--
1.8.3.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [dts] [PATCH V1 0/8] modified suite to support pkg check
2021-03-18 5:27 [dts] [PATCH V1 0/8] modified suite to support pkg check Zhimin Huang
` (7 preceding siblings ...)
2021-03-18 5:27 ` [dts] [PATCH V1 8/8] tests/cvl_switch_filter_pppoe:split " Zhimin Huang
@ 2021-03-19 8:54 ` Tu, Lijuan
8 siblings, 0 replies; 10+ messages in thread
From: Tu, Lijuan @ 2021-03-19 8:54 UTC (permalink / raw)
To: Huang, ZhiminX, dts; +Cc: Huang, ZhiminX
> 1.To adapt needs and framework modifications, these suite add decorator to
> support pkg check
>
> 2.Pppoe has a large number of cases and only support comms pkg, so split
> pppoe case into new suite
>
> Zhimin Huang (8):
> tests/cvl_advanced_rss_pppoe:rename pppoe suite
> add decorator to support nic and pkg check
> tests/cvl_advanced_rss_pppoe:support nic and pkg check
> tests/cvl_dcf_switch_filter:support nic and pkg check
> tests/cvl_switch_filter:support nic and pkg check
> tests/cvl_advanced_rss_vlan_esp_ah_l2tp_pfcp:split pppoe into new
> suite
> tests/cvl_dcf_switch_filter_pppoe:split pppoe into new suite
> tests/cvl_switch_filter_pppoe:split pppoe into new suite
Applied, thanks
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2021-03-19 8:54 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-18 5:27 [dts] [PATCH V1 0/8] modified suite to support pkg check Zhimin Huang
2021-03-18 5:27 ` [dts] [PATCH V1 1/8] tests/cvl_advanced_rss_pppoe:rename pppoe suite Zhimin Huang
2021-03-18 5:27 ` [dts] [PATCH V1 2/8] add decorator to support nic and pkg check Zhimin Huang
2021-03-18 5:27 ` [dts] [PATCH V1 3/8] tests/cvl_advanced_rss_pppoe:support " Zhimin Huang
2021-03-18 5:27 ` [dts] [PATCH V1 4/8] tests/cvl_dcf_switch_filter:support " Zhimin Huang
2021-03-18 5:27 ` [dts] [PATCH V1 5/8] tests/cvl_switch_filter:support " Zhimin Huang
2021-03-18 5:27 ` [dts] [PATCH V1 6/8] tests/cvl_advanced_rss_vlan_esp_ah_l2tp_pfcp:split pppoe into new suite Zhimin Huang
2021-03-18 5:27 ` [dts] [PATCH V1 7/8] tests/cvl_dcf_switch_filter_pppoe:split " Zhimin Huang
2021-03-18 5:27 ` [dts] [PATCH V1 8/8] tests/cvl_switch_filter_pppoe:split " Zhimin Huang
2021-03-19 8:54 ` [dts] [PATCH V1 0/8] modified suite to support pkg check Tu, Lijuan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).