From: Nannan Lu <nannan.lu@intel.com>
To: dts@dpdk.org
Cc: Nannan Lu <nannan.lu@intel.com>
Subject: [dts] [PATCH V1 2/3] tests/TestSuite_cvl_dcf_switch_filter.py: add PPPOE cases and modify some cases
Date: Tue, 25 Aug 2020 19:34:13 +0000 [thread overview]
Message-ID: <1598384054-754384-2-git-send-email-nannan.lu@intel.com> (raw)
In-Reply-To: <1598384054-754384-1-git-send-email-nannan.lu@intel.com>
tests/TestSuite_cvl_dcf_switch_filter.py: add PPPOE cases and modify
some cases to add mismatched packets.
Signed-off-by: Nannan Lu <nannan.lu@intel.com>
---
tests/TestSuite_cvl_dcf_switch_filter.py | 1005 +++++++++++++++++++++---------
1 file changed, 721 insertions(+), 284 deletions(-)
diff --git a/tests/TestSuite_cvl_dcf_switch_filter.py b/tests/TestSuite_cvl_dcf_switch_filter.py
index 223e95d..d52e487 100644
--- a/tests/TestSuite_cvl_dcf_switch_filter.py
+++ b/tests/TestSuite_cvl_dcf_switch_filter.py
@@ -99,7 +99,12 @@ tv_mac_ipv4_udp_pay = {
"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="68:05:ca:8d:ed:a8")/IP(src="192.168.0.1",dst="192.168.0.2",tos=4,ttl=3)/UDP(sport=30,dport=23)/("X"*480)',
+ "mismatched":{"scapy_str":['Ether(dst="68:05:ca:8d:ed:a3")/IP(src="192.168.0.1",dst="192.168.0.2",tos=4,ttl=3)/UDP(sport=25,dport=23)/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.5",dst="192.168.0.2",tos=4,ttl=3)/UDP(sport=25,dport=23)/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.1",dst="192.168.0.7",tos=4,ttl=3)/UDP(sport=25,dport=23)/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.1",dst="192.168.0.2",tos=5,ttl=3)/UDP(sport=25,dport=23)/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.1",dst="192.168.0.2",tos=4,ttl=9)/UDP(sport=25,dport=23)/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.1",dst="192.168.0.2",tos=4,ttl=3)/UDP(sport=30,dport=23)/("X"*480)',
'Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.1",dst="192.168.0.2",tos=4,ttl=3)/UDP(sport=25,dport=19)/("X"*480)'],
"check_func":{"func":rfc.check_vf_rx_packets_number,
"param":{"expect_port":1, "expect_queues":"null"}},
@@ -113,7 +118,12 @@ tv_mac_ipv4_tcp_pay = {
"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="68:05:ca:8d:ed:a8")/IP(src="192.168.0.1",dst="192.168.0.2",tos=4,ttl=3)/TCP(sport=30,dport=23)/("X"*480)',
+ "mismatched":{"scapy_str":['Ether(dst="68:05:ca:8d:ed:a3")/IP(src="192.168.0.1",dst="192.168.0.2",tos=4,ttl=3)/TCP(sport=25,dport=23)/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.5",dst="192.168.0.2",tos=4,ttl=3)/TCP(sport=25,dport=23)/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.1",dst="192.168.0.7",tos=4,ttl=3)/TCP(sport=25,dport=23)/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.1",dst="192.168.0.2",tos=5,ttl=3)/TCP(sport=25,dport=23)/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.1",dst="192.168.0.2",tos=4,ttl=9)/TCP(sport=25,dport=23)/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.1",dst="192.168.0.2",tos=4,ttl=3)/TCP(sport=30,dport=23)/("X"*480)',
'Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.1",dst="192.168.0.2",tos=4,ttl=3)/TCP(sport=25,dport=19)/("X"*480)'],
"check_func":{"func":rfc.check_vf_rx_packets_number,
"param":{"expect_port":1, "expect_queues":"null"}},
@@ -134,59 +144,37 @@ tv_mac_ipv4_igmp = {
"expect_results":{"expect_pkts":0}}
}
-tv_mac_ipv6_frag_srcip_dstip = {
- "name":"tv_mac_ipv6_frag_srcip_dstip",
- "rte_flow_pattern":"flow create 0 ingress pattern eth / 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(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")/IPv6ExtHdrFragment()/("X"*480)'],
- "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")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/IPv6ExtHdrFragment()/("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:2023")/IPv6ExtHdrFragment()/("X"*480)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_ipv6_frag_dstip_tc = {
- "name":"tv_mac_ipv6_frag_dstip_tc",
- "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions vf id 1 / end",
- "matched":{"scapy_str":['Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/IPv6ExtHdrFragment()/("X"*480)'],
- "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="68:05:ca:8d:ed:a3")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/IPv6ExtHdrFragment()/("X"*480)',
- 'Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2023",tc=3)/IPv6ExtHdrFragment()/("X"*480)',
- 'Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=4)/IPv6ExtHdrFragment()/("X"*480)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
-tv_mac_ipv6_pay_srcip_dstip = {
- "name":"tv_mac_ipv6_pay_srcip_dstip",
+tv_mac_ipv6_srcip_dstip = {
+ "name":"tv_mac_ipv6_srcip_dstip",
"rte_flow_pattern":"flow create 0 ingress pattern eth / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions vf id 1 / end",
- "matched":{"scapy_str":['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:2020")/("X"*480)'],
+ "matched":{"scapy_str":['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:2020")/("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:2020")/IPv6ExtHdrFragment()/("X"*480)'],
"check_func":{"func":rfc.check_vf_rx_packets_number,
"param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
+ "expect_results":{"expect_pkts":2}},
"mismatched":{"scapy_str":['Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("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:2023")/("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:2023")/("X"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("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:2023")/IPv6ExtHdrFragment()/("X"*480)'],
"check_func":{"func":rfc.check_vf_rx_packets_number,
"param":{"expect_port":1, "expect_queues":"null"}},
"expect_results":{"expect_pkts":0}}
}
-tv_mac_ipv6_pay_dstip_tc = {
- "name":"tv_mac_ipv6_pay_dstip_tc",
+tv_mac_ipv6_dstip_tc = {
+ "name":"tv_mac_ipv6_dstip_tc",
"rte_flow_pattern":"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions vf id 1 / end",
- "matched":{"scapy_str":['Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/("X"*480)'],
+ "matched":{"scapy_str":['Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/IPv6ExtHdrFragment()/("X"*480)'],
"check_func":{"func":rfc.check_vf_rx_packets_number,
"param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":1}},
+ "expect_results":{"expect_pkts":2}},
"mismatched":{"scapy_str":['Ether(dst="68:05:ca:8d:ed:a3")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/("X"*480)',
'Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2023",tc=3)/("X"*480)',
- 'Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=4)/("X"*480)'],
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=4)/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a3")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/IPv6ExtHdrFragment()/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2023",tc=3)/IPv6ExtHdrFragment()/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=4)/IPv6ExtHdrFragment()/("X"*480)'],
"check_func":{"func":rfc.check_vf_rx_packets_number,
"param":{"expect_port":1, "expect_queues":"null"}},
"expect_results":{"expect_pkts":0}}
@@ -199,7 +187,10 @@ tv_mac_ipv6_udp_pay = {
"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="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=30,dport=23)/("X"*480)',
+ "mismatched":{"scapy_str":['Ether(dst="68:05:ca:8d:ed:a3")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=25,dport=23)/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2023",tc=3)/UDP(sport=25,dport=23)/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=7)/UDP(sport=25,dport=23)/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=30,dport=23)/("X"*480)',
'Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=25,dport=19)/("X"*480)'],
"check_func":{"func":rfc.check_vf_rx_packets_number,
"param":{"expect_port":1, "expect_queues":"null"}},
@@ -213,42 +204,32 @@ tv_mac_ipv6_tcp = {
"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="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=30,dport=23)/("X"*480)',
+ "mismatched":{"scapy_str":['Ether(dst="68:05:ca:8d:ed:a3")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=25,dport=23)/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2023",tc=3)/TCP(sport=25,dport=23)/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=7)/TCP(sport=25,dport=23)/("X"*480)',
+ 'Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=30,dport=23)/("X"*480)',
'Ether(dst="68:05:ca:8d:ed:a8")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1518", dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=25,dport=19)/("X"*480)'],
"check_func":{"func":rfc.check_vf_rx_packets_number,
"param":{"expect_port":1, "expect_queues":"null"}},
"expect_results":{"expect_pkts":0}}
}
-tv_mac_ipv4_nvgre_ipv4_frag = {
- "name":"tv_mac_ipv4_nvgre_ipv4_frag",
- "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions vf id 1 / end",
- "matched":{"scapy_str":['Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw("x"*80)',
- 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/Raw("x"*80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":2}},
- "mismatched":{"scapy_str":['Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw("x"*80)',
- 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw("x"*80)',
- 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.4", dst="192.168.1.3" ,frag=5)/TCP()/Raw("x"*80)',
- 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.5" ,frag=5)/TCP()/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_nvgre_ipv4_pay = {
"name":"tv_mac_ipv4_nvgre_ipv4_pay",
"rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions vf id 1 / end",
- "matched":{"scapy_str":['Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/TCP()/Raw("x"*80)',
- 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/Raw("x"*80)'],
+ "matched":{"scapy_str":['Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/Raw("x"*80)'],
"check_func":{"func":rfc.check_vf_rx_packets_number,
"param":{"expect_port":1, "expect_queues":"null"}},
"expect_results":{"expect_pkts":2}},
"mismatched":{"scapy_str":['Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/Raw("x"*80)',
'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/Raw("x"*80)',
'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.4", dst="192.168.1.3")/Raw("x"*80)',
- 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.5")/Raw("x"*80)'],
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.5")/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.4", dst="192.168.1.3" ,frag=5)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.5" ,frag=5)/Raw("x"*80)'],
"check_func":{"func":rfc.check_vf_rx_packets_number,
"param":{"expect_port":1, "expect_queues":"null"}},
"expect_results":{"expect_pkts":0}}
@@ -261,7 +242,11 @@ tv_mac_ipv4_nvgre_ipv4_udp_pay = {
"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()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=20,dport=23)/Raw("x"*80)',
+ "mismatched":{"scapy_str":['Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=0x8)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=23)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x3)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=23)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether()/IP(src="192.168.0.5", dst="192.168.0.3")/UDP(sport=50,dport=23)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether()/IP(src="192.168.0.2", dst="192.168.0.7")/UDP(sport=50,dport=23)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=20,dport=23)/Raw("x"*80)',
'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=19)/Raw("x"*80)'],
"check_func":{"func":rfc.check_vf_rx_packets_number,
"param":{"expect_port":1, "expect_queues":"null"}},
@@ -275,36 +260,22 @@ tv_mac_ipv4_nvgre_ipv4_tcp = {
"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()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=20,dport=23)/Raw("x"*80)',
+ "mismatched":{"scapy_str":['Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.5", dst="192.168.1.3")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.7")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=20,dport=23)/Raw("x"*80)',
'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=25,dport=39)/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_nvgre_mac_ipv4_frag = {
- "name":"tv_mac_ipv4_nvgre_mac_ipv4_frag",
- "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions vf id 1 / end",
- "matched":{"scapy_str":['Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw("x"*80)',
- 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/Raw("x"*80)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":2}},
- "mismatched":{"scapy_str":['Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw("x"*80)',
- 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw("x"*80)',
- 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a9")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw("x"*80)',
- 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.4", dst="192.168.1.3" ,frag=5)/TCP()/Raw("x"*80)',
- 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.5" ,frag=5)/TCP()/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_nvgre_mac_ipv4_pay = {
"name":"tv_mac_ipv4_nvgre_mac_ipv4_pay",
- "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions vf id 1 / end",
- "matched":{"scapy_str":['Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/TCP()/Raw("x"*80)',
- 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/Raw("x"*80)'],
+ "rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions vf id 1 / end",
+ "matched":{"scapy_str":['Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/Raw("x"*80)'],
"check_func":{"func":rfc.check_vf_rx_packets_number,
"param":{"expect_port":1, "expect_queues":"null"}},
"expect_results":{"expect_pkts":2}},
@@ -312,7 +283,12 @@ tv_mac_ipv4_nvgre_mac_ipv4_pay = {
'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/Raw("x"*80)',
'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a9")/IP(src="192.168.1.2", dst="192.168.1.3")/Raw("x"*80)',
'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.4", dst="192.168.1.3")/Raw("x"*80)',
- 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.5")/Raw("x"*80)'],
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.5")/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a9")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.4", dst="192.168.1.3" ,frag=5)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.5" ,frag=5)/Raw("x"*80)'],
"check_func":{"func":rfc.check_vf_rx_packets_number,
"param":{"expect_port":1, "expect_queues":"null"}},
"expect_results":{"expect_pkts":0}}
@@ -325,7 +301,12 @@ tv_mac_ipv4_nvgre_mac_ipv4_udp_pay = {
"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()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/UDP(sport=2,dport=23)/Raw("x"*80)',
+ "mismatched":{"scapy_str":['Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=0x8)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x3)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether(dst="68:05:ca:8d:ed:a2")/IP(src="192.168.1.2", dst="192.168.1.3")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.5", dst="192.168.1.3")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.7")/UDP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/UDP(sport=2,dport=23)/Raw("x"*80)]',
'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/UDP(sport=25,dport=20)/Raw("x"*80)'],
"check_func":{"func":rfc.check_vf_rx_packets_number,
"param":{"expect_port":1, "expect_queues":"null"}},
@@ -339,15 +320,20 @@ tv_mac_ipv4_nvgre_mac_ipv4_tcp = {
"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()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=1,dport=23)/Raw("x"*80)',
+ "mismatched":{"scapy_str":['Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a2")/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.5", dst="192.168.1.3")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.7")/TCP(sport=25,dport=23)/Raw("x"*80)',
+ 'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=1,dport=23)/Raw("x"*80)',
'Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=25,dport=20)/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 = {
- "name":"tv_mac_vlan_pppoe_ipv4_pay",
+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(proto=0x0021)/IP()/Raw("x" * 80)'],
"check_func":{"func":rfc.check_vf_rx_packets_number,
@@ -362,8 +348,8 @@ tv_mac_vlan_pppoe_ipv4_pay = {
"expect_results":{"expect_pkts":0}}
}
-tv_mac_vlan_pppoe_ipv6_pay = {
- "name":"tv_mac_vlan_pppoe_ipv6_pay",
+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(proto=0x0057)/IPv6()/Raw("x" * 80)'],
"check_func":{"func":rfc.check_vf_rx_packets_number,
@@ -378,8 +364,8 @@ tv_mac_vlan_pppoe_ipv6_pay = {
"expect_results":{"expect_pkts":0}}
}
-tv_mac_pppoe_ipv4_pay = {
- "name":"tv_mac_pppoe_ipv4_pay",
+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(proto=0x0021)/IP()/Raw("x" * 80)'],
"check_func":{"func":rfc.check_vf_rx_packets_number,
@@ -393,8 +379,8 @@ tv_mac_pppoe_ipv4_pay = {
"expect_results":{"expect_pkts":0}}
}
-tv_mac_pppoe_ipv6_pay = {
- "name":"tv_mac_pppoe_ipv6_pay",
+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(proto=0x0057)/IPv6()/Raw("x" * 80)'],
"check_func":{"func":rfc.check_vf_rx_packets_number,
@@ -408,20 +394,6 @@ tv_mac_pppoe_ipv6_pay = {
"expect_results":{"expect_pkts":0}}
}
-tv_qinq = {
- "name":"tv_qinq",
- "rte_flow_pattern":"flow create 0 ingress pattern eth / vlan tci is 1 / vlan tci is 2 / end actions vf id 1 / end",
- "matched":{"scapy_str":['Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(type=0x8100,vlan=1)/Dot1Q(type=0x0800,vlan=2)/IP(src="192.168.0.1",dst="192.168.0.2")/Raw("X"*480)'],
- "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(type=0x8100,vlan=3)/Dot1Q(type=0x0800, vlan=2)/IP(src="192.168.0.1",dst="192.168.0.2")/Raw("X"*480)',
- 'Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(type=0x8100,vlan=1)/Dot1Q(type=0x0800, vlan=5)/IP(src="192.168.0.1",dst="192.168.0.2")/Raw("X"*480)'],
- "check_func":{"func":rfc.check_vf_rx_packets_number,
- "param":{"expect_port":1, "expect_queues":"null"}},
- "expect_results":{"expect_pkts":0}}
-}
-
tv_ip_multicast = {
"name":"tv_ip_multicast",
"rte_flow_pattern":"flow create 0 ingress pattern eth / ipv4 dst spec 224.0.0.0 dst mask 240.0.0.0 / end actions vf id 1 / end",
@@ -676,6 +648,17 @@ tv_mac_ipv6_nat_t_esp = {
"expect_results":{"expect_pkts":0}}
}
+tv_actions_vf_id_0 = {
+ "name":"tv_actions_vf_id_0",
+ "rte_flow_pattern":"flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / tcp src is 25 dst is 23 / end actions vf id 0 / end",
+ "matched":{"scapy_str":['Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.1",dst="192.168.0.2",tos=4,ttl=3)/TCP(sport=25,dport=23)/("X"*480)'],
+ "check_func":{"func":rfc.check_vf_rx_packets_number,
+ "param":{"expect_port":0, "expect_queues":"null"}},
+ "expect_results":{"expect_pkts":0}},
+ "mismatched":{}
+}
+
+
tv_add_existing_rules_but_with_different_vfs = {
"name":"tv_add_existing_rules_but_with_different_vfs",
"rte_flow_pattern":["flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / udp src is 25 dst is 23 / end actions vf id 1 / end",
@@ -726,7 +709,7 @@ tv_max_vfs = {
"check_func":{"func":rfc.check_kernel_vf_rx_packets_number,
"param":{"expect_port":list(range(1, 64)), "expect_queues":"null"}},
"expect_results":{"expect_pkts":[1]*63}},
- "mismatched":{"scapy_str":['Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.64")/TCP()/Raw("X"*480)'],
+ "mismatched":{"scapy_str":['Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.167.0.0")/TCP()/Raw("X"*480)'],
"check_func":{"func":rfc.check_kernel_vf_rx_packets_number,
"param":{"expect_port":list(range(1, 64)), "expect_queues":"null"}},
"expect_results":{"expect_pkts":[1]*63}}
@@ -855,6 +838,384 @@ 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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0021)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0x0057)/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(proto=0xc021)/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(proto=0xc021)/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(proto=0xc021)/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(proto=0x0021)/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(proto=0x8021)/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(proto=0x8021)/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(proto=0x8021)/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(proto=0x0021)/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(proto=0xc021)/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(proto=0xc021)/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(proto=0xc021)/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(proto=0xc021)/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(proto=0x0021)/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(proto=0x8021)/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(proto=0x8021)/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(proto=0x8021)/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(proto=0x8021)/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(proto=0x0021)/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 CVLDCFSwitchFilterTest(TestCase):
def bind_nics_driver(self, ports, driver=""):
@@ -892,14 +1253,18 @@ class CVLDCFSwitchFilterTest(TestCase):
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.tester.send_expect("ifconfig %s up" % self.__tx_iface, "# ")
- self.dut.send_expect("ifconfig %s up" % self.dut_ports[0], "# ")
+ self.dut.send_expect("ifconfig %s up" % self.__tx_iface, "# ")
self.pkt = Packet()
self.testpmd_status = "close"
- self.suite_config = rfc.get_suite_config(self)
- self.pkg_file = "/lib/firmware/updates/intel/ice/ddp/ice.pkg"
#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'
self.dut.send_expect('modprobe vfio-pci', '#')
@@ -924,13 +1289,6 @@ class CVLDCFSwitchFilterTest(TestCase):
"""
remove and reload the ice driver
"""
- if self.running_case == "test_unsupported_pattern_in_os_default_but_supported_in_comms":
- #save comms pkg to /tmp
- self.tmp_dir = "/tmp/ice.pkg"
- self.dut.send_expect("cp %s %s" % (self.pkg_file, self.tmp_dir), "# ")
- #use os default package to test the case
- os_default_package_file_location = self.suite_config["os_default_package_file_location"]
- self.dut.send_expect("cp %s %s" % (os_default_package_file_location, self.pkg_file), "# ")
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)
@@ -1017,7 +1375,39 @@ class CVLDCFSwitchFilterTest(TestCase):
results = dic["check_func"]["func"](out, dic["check_func"]["param"], dic["expect_results"], False)
return results
- def create_switch_filter_rule(self, rte_flow_pattern, session_name="", need_verify=True):
+ 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
"""
@@ -1040,8 +1430,10 @@ class CVLDCFSwitchFilterTest(TestCase):
rule_list.append(m.group(1))
else:
rule_list.append(False)
- if need_verify:
+ 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):
@@ -1061,10 +1453,10 @@ class CVLDCFSwitchFilterTest(TestCase):
res = filter(bool, map(p_spec.match, out_lines))
result = [i.group(1) for i in res]
if need_verify:
- self.verify(sorted(result) == sorted(rule_list),
+ self.verify(result == rule_list,
"the rule list is not the same. expect %s, result %s" % (rule_list, result))
else:
- return sorted(result)
+ return result
def destroy_switch_filter_rule(self, port_id, rule_list, session_name="", need_verify=True):
if session_name == "":
@@ -1107,6 +1499,8 @@ class CVLDCFSwitchFilterTest(TestCase):
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)
@@ -1151,21 +1545,13 @@ class CVLDCFSwitchFilterTest(TestCase):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_mac_ipv4_igmp)
- def test_mac_ipv6_frag_srcip_dstip(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_ipv6_frag_srcip_dstip)
-
- def test_mac_ipv6_frag_dstip_tc(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_ipv6_frag_dstip_tc)
-
- def test_mac_ipv6_pay_srcip_dstip(self):
+ def test_mac_ipv6_srcip_dstip(self):
self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_ipv6_pay_srcip_dstip)
+ self._rte_flow_validate_pattern(tv_mac_ipv6_srcip_dstip)
- def test_mac_ipv6_pay_dstip_tc(self):
+ def test_mac_ipv6_dstip_tc(self):
self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_ipv6_pay_dstip_tc)
+ self._rte_flow_validate_pattern(tv_mac_ipv6_dstip_tc)
def test_mac_ipv6_udp_pay(self):
self.setup_1pf_vfs_env()
@@ -1175,10 +1561,6 @@ class CVLDCFSwitchFilterTest(TestCase):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_mac_ipv6_tcp)
- def test_mac_ipv4_nvgre_ipv4_frag(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_ipv4_nvgre_ipv4_frag)
-
def test_mac_ipv4_nvgre_ipv4_pay(self):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_mac_ipv4_nvgre_ipv4_pay)
@@ -1191,10 +1573,6 @@ class CVLDCFSwitchFilterTest(TestCase):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_mac_ipv4_nvgre_ipv4_tcp)
- def test_mac_ipv4_nvgre_mac_ipv4_frag(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_mac_ipv4_nvgre_mac_ipv4_frag)
-
def test_mac_ipv4_nvgre_mac_ipv4_pay(self):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_mac_ipv4_nvgre_mac_ipv4_pay)
@@ -1207,25 +1585,21 @@ 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(self):
+ 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)
+ self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv4_pay_session_id_proto_id)
- def test_mac_vlan_pppoe_ipv6_pay(self):
+ 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)
+ self._rte_flow_validate_pattern(tv_mac_vlan_pppoe_ipv6_pay_session_id_proto_id)
- def test_mac_pppoe_ipv4_pay(self):
+ 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)
+ self._rte_flow_validate_pattern(tv_mac_pppoe_ipv4_pay_session_id_proto_id)
- def test_mac_pppoe_ipv6_pay(self):
+ 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)
-
- def _test_qinq(self):
- self.setup_1pf_vfs_env()
- self._rte_flow_validate_pattern(tv_qinq)
+ self._rte_flow_validate_pattern(tv_mac_pppoe_ipv6_pay_session_id_proto_id)
def test_ip_multicast(self):
self.setup_1pf_vfs_env()
@@ -1299,92 +1673,60 @@ class CVLDCFSwitchFilterTest(TestCase):
self.setup_1pf_vfs_env()
self._rte_flow_validate_pattern(tv_mac_ipv6_nat_t_esp)
- def test_cannot_create_rule_on_vf_1(self):
- #set up 4 vfs on 1 pf environment
- self.setup_1pf_vfs_env()
- #launch testpmd
- self.launch_testpmd()
- #create a rule on vf 1
- rule = "flow create 1 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / udp src is 25 dst is 23 / end actions vf id 1 / end"
- out = self.dut.send_expect(rule, "testpmd> ", timeout=2) #create a rule
- self.verify("Failed to create flow" in out, "Log not provide a friendly output to indicate that the rule failed to create.")
- #check the rule list
- self.check_switch_filter_rule_list(1, [])
-
- def test_unsupported_pattern_in_comms(self):
- #set up 4 vfs on 1 pf environment
- self.setup_1pf_vfs_env()
- #launch testpmd
- self.launch_testpmd()
- #create an SCTP rule which is not supported in comms
- rule = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / sctp src is 25 dst is 23 / end actions vf id 1 / end"
- out = self.dut.send_expect(rule, "testpmd> ", timeout=2) #create a rule
- self.verify("Failed to create flow" in out and "Invalid input pattern" in out, "Log not provide a friendly output to indicate that the SCTP rule failed to create.")
- #check the rule list
- self.check_switch_filter_rule_list(0, [])
-
- def test_unsupported_pattern_in_os_default_but_supported_in_comms(self):
+ def test_negative_case(self):
"""
- test with os default package
+ negative cases
"""
#set up 4 vfs on 1 pf environment
self.setup_1pf_vfs_env()
#launch testpmd
self.launch_testpmd()
- #create a PPPOE rule which is not supported in os default
- rule = "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"
- out = self.dut.send_expect(rule, "testpmd> ", timeout=2) #create a rule
- self.verify("Failed to create flow" in out and "Invalid input pattern" in out, "Log not provide a friendly output to indicate that the PPPOE rule failed to create.")
- #check the rule list
+ rules = {
+ "cannot create rule on vf 1": "flow create 1 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / udp src is 25 dst is 23 / end actions vf id 1 / end",
+ "unsupported input set": "flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 tos is 4 / end actions vf id 1 / end",
+ "invalid vf id": "flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / tcp src is 25 dst is 23 / end actions vf id 5 / end",
+ "void action": "flow create 0 ingress pattern eth / ipv4 / udp src is 25 dst is 23 / end actions end",
+ "void input set value": "flow create 0 ingress pattern eth / ipv4 / end actions vf id 1 end"
+ }
+ # cannot create rule on vf 1
+ self.validate_switch_filter_rule(rules["cannot create rule on vf 1"], check_stats=False)
+ self.check_switch_filter_rule_list(1, [])
+ self.create_switch_filter_rule(rules["cannot create rule on vf 1"], check_stats=False)
+ self.check_switch_filter_rule_list(1, [])
+
+ # unsupported input set
+ self.validate_switch_filter_rule(rules["unsupported input set"], check_stats=False)
self.check_switch_filter_rule_list(0, [])
- #create a MAC_IPV4_PFCP_NODE rule
- rule = "flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions vf id 1 / end"
- out = self.dut.send_expect(rule, "testpmd> ", timeout=2) #create a rule
- self.verify("Failed to create flow" in out and "Invalid input pattern" in out, "Log not provide a friendly output to indicate that the mac_ipv4_pfcp_node rule failed to create.")
- #check the rule list
+ self.create_switch_filter_rule(rules["unsupported input set"], check_stats=False)
self.check_switch_filter_rule_list(0, [])
- #create a l2tpv3 rule which is not supported in os default
- rule = "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 / l2tpv3oip session_id is 1 / end actions vf id 1 / end"
- out = self.dut.send_expect(rule, "testpmd> ", timeout=2) #create a rule
- self.verify("Failed to create flow" in out and "Invalid input pattern" in out, "Log not provide a friendly output to indicate that the l2tpv3 rule failed to create.")
- #check the rule list
+
+ # duplicated rues
+ rule = "flow create 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 vf id 1 / end"
+ rule_list = self.create_switch_filter_rule(rule) #create a rule
+ self.check_switch_filter_rule_list(0, rule_list)
+ self.create_switch_filter_rule(rule, check_stats=False)
+ self.check_switch_filter_rule_list(0, rule_list)
+ self.destroy_switch_filter_rule(0, rule_list)
+
+ # void action
+ self.validate_switch_filter_rule(rules["void action"], check_stats=False)
self.check_switch_filter_rule_list(0, [])
- #create a esp rule which is not supported in os default
- rule = "flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 / esp spi is 1 / end actions vf id 1 / end"
- out = self.dut.send_expect(rule, "testpmd> ", timeout=2) #create a rule
- self.verify("Failed to create flow" in out and "Invalid input pattern" in out, "Log not provide a friendly output to indicate that the esp rule failed to create.")
- #check the rule list
+ self.create_switch_filter_rule(rules["void action"], check_stats=False)
self.check_switch_filter_rule_list(0, [])
- def test_unsupported_input_set(self):
- #set up 4 vfs on 1 pf environment
- self.setup_1pf_vfs_env()
- #launch testpmd
- self.launch_testpmd()
- #create a rule with input set [inner tos]
- rule = "flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 tos is 4 / end actions vf id 1 / end"
- out = self.dut.send_expect(rule, "testpmd> ", timeout=2) #create a rule
- self.verify("Failed to create flow" in out and "Invalid input set" in out, "Log not provide a friendly output to indicate that the input set is not supported.")
- #check the rule list
+ # void input set value
+ self.validate_switch_filter_rule(rules["void input set value"], check_stats=False)
+ self.check_switch_filter_rule_list(0, [])
+ self.create_switch_filter_rule(rules["void input set value"], check_stats=False)
self.check_switch_filter_rule_list(0, [])
- def test_invalid_vf_id(self):
- #set up 4 vfs on 1 pf environment
- self.setup_1pf_vfs_env()
- #launch testpmd
- self.launch_testpmd()
- #create a rule with invalid vf id 5
- rule = "flow create 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / tcp src is 25 dst is 23 / end actions vf id 5 / end"
- out = self.dut.send_expect(rule, "testpmd> ", timeout=2)
- self.verify("Failed to create flow" in out, "Log not provide a friendly output to indicate that the rule failed to create.")
- #check the rule list
+ # invalid vf id
+ # self.validate_switch_filter_rule(rules["invalid vf id"], check_stats=False)
+ # self.check_switch_filter_rule_list(0, [])
+ self.create_switch_filter_rule(rules["invalid vf id"], check_stats=False)
self.check_switch_filter_rule_list(0, [])
- def test_delete_non_existing_rule(self):
- #set up 4 vfs on 1 pf environment
- self.setup_1pf_vfs_env()
- #launch testpmd
- self.launch_testpmd()
+ # delete non-existing rule
#check no rule in the list
self.check_switch_filter_rule_list(0, [])
#destroy rule 0
@@ -1394,7 +1736,51 @@ class CVLDCFSwitchFilterTest(TestCase):
out = self.dut.send_expect("flow flush 0", "testpmd> ", timeout=15)
self.verify("Fail" not in out, "Destroy failed.")
- def _test_add_existing_rules_but_with_different_vfs(self):
+ # add long switch rule
+ rule = "flow create 0 ingress pattern eth / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 tc is 3 / end actions vf id 1 / end"
+ self.validate_switch_filter_rule(rule, check_stats=False)
+ self.check_switch_filter_rule_list(0, [])
+ self.create_switch_filter_rule(rule, check_stats=False)
+ self.check_switch_filter_rule_list(0, [])
+ #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)
+
+ 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()
+ rules = [
+ "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",
+ "flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions vf id 1 / end",
+ "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / l2tpv3oip session_id is 1 / end actions vf id 1 / end",
+ "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / esp spi is 1 / end actions vf id 1 / end",
+ "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / ah spi is 1 / end actions vf id 1 / end",
+ "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / udp / esp spi is 1 / end actions vf id 1 / end"
+ ]
+ self.validate_switch_filter_rule(rules, check_stats=False)
+ self.check_switch_filter_rule_list(0, [])
+ self.create_switch_filter_rule(rules, check_stats=False)
+ self.check_switch_filter_rule_list(0, [])
+
+ self.dut.send_expect("flow flush 0", "testpmd> ", 300)
+ self.dut.send_expect("quit", "#")
+ self.testpmd_status = "close"
+ # 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
self.setup_1pf_vfs_env()
#launch testpmd
@@ -1442,8 +1828,7 @@ class CVLDCFSwitchFilterTest(TestCase):
rule_list = self.create_switch_filter_rule(rule) #create a rule
self.check_switch_filter_rule_list(0, rule_list)
#create the same rule
- out = self.dut.send_expect(rule, "testpmd> ", timeout=2) #create a rule
- self.verify("Failed to create flow" in out, "Log not provide a friendly output to indicate that the rule is failed to create.")
+ self.create_switch_filter_rule(rule, check_stats=False) #create a rule
self.check_switch_filter_rule_list(0, rule_list)
def test_add_two_rules_with_one_rule_input_set_included_in_the_other(self):
@@ -1490,19 +1875,6 @@ class CVLDCFSwitchFilterTest(TestCase):
destroy_dict["expect_results"]["expect_pkts"][1] = 0
self.send_and_check_packets(destroy_dict)
- def test_add_long_switch_rule(self):
- #set up 4 vfs on 1 pf environment
- self.setup_1pf_vfs_env()
- #launch testpmd
- self.launch_testpmd()
- rule = "flow create 0 ingress pattern eth / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 tc is 3 / end actions vf id 1 / end"
- out = self.dut.send_expect(rule, "testpmd> ", timeout=15)
- self.verify("Failed to create flow" in out, "Log not provide a friendly output to indicate that the rule failed to create.")
- #check the rule list
- self.check_switch_filter_rule_list(0, [])
- #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)
-
def test_fwd_with_single_vf(self):
#set up 4 vfs on 1 pf environment
self.setup_1pf_vfs_env()
@@ -1636,9 +2008,7 @@ class CVLDCFSwitchFilterTest(TestCase):
self.check_switch_filter_rule_list(0, rule_list)
#create a rule, check the rule can not be created successfully
rule = "flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.10 / nvgre tni is 0x8 / eth dst is 68:05:ca:8d:ed:a1 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / udp src is 25 dst is 23 / end actions vf id 1 / end"
- out = self.dut.send_expect(rule, "testpmd> ", timeout=2) #create a rule
- self.verify("Failed to create flow" in out, "Log not provide a friendly output to indicate that the rule failed to create.")
- #check the rule list
+ self.create_switch_filter_rule(rule, check_stats=False)
self.check_switch_filter_rule_list(0, rule_list)
#send matched packets and check
matched_dic = tv_max_field_vectors["matched"]
@@ -1727,32 +2097,6 @@ class CVLDCFSwitchFilterTest(TestCase):
destroy_dict["expect_results"]["expect_pkts"] = 0
self.send_and_check_packets(destroy_dict)
- def test_flow_validation(self):
- #set up 4 vfs on 1 pf environment
- self.setup_1pf_vfs_env()
- #launch testpmd
- self.launch_testpmd()
- #validate MAC_IPV4_UDP_PAY
- rule = "flow validate 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / udp src is 25 dst is 23 / end actions vf id 1 / end"
- out = self.dut.send_expect(rule, "testpmd> ", timeout=2)
- self.verify("Flow rule validated" in out, "validate failed. rule: %s " % rule)
- #validate MAC_IPV4_PFCP_NODE
- rule = "flow validate 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions vf id 1 / end"
- out = self.dut.send_expect(rule, "testpmd> ", timeout=2)
- self.verify("Flow rule validated" in out, "validate failed. rule: %s " % rule)
- #validate MAC_IPV4_SCTP_PAY
- rule = "flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / sctp src is 25 dst is 23 / end actions vf id 1 / end"
- out = self.dut.send_expect(rule, "testpmd> ", timeout=2)
- self.verify("error" in out and "Invalid input pattern: Invalid argument" in out, "validate failed. rule: %s " % rule)
- #check the rule list
- self.check_switch_filter_rule_list(0, [])
- #validate a rule on invalid vf
- rule = "flow validate 1 ingress pattern eth / ipv6 / udp / pfcp s_field is 1 / end actions vf id 1 / end"
- out = self.dut.send_expect(rule, "testpmd> ", timeout=2)
- self.verify("error" in out and "Failed" in out, "validate failed. rule: %s " % rule)
- #check the rule list
- self.check_switch_filter_rule_list(1, [])
-
def test_dcf_stop_start(self):
#set up 4 vfs on 1 pf environment
self.setup_1pf_vfs_env()
@@ -1807,24 +2151,117 @@ 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)
+
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> ", 120)
+ 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"
- #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)
- if self.running_case == "test_unsupported_pattern_in_os_default_but_supported_in_comms":
- #Restore the pkg file
- self.dut.send_expect("cp %s %s" % (self.tmp_dir, self.pkg_file), "# ")
if getattr(self, 'session_secondary', None):
self.dut.close_session(self.session_secondary)
--
2.7.4
next prev parent reply other threads:[~2020-08-25 10:43 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-25 19:34 [dts] [PATCH V1 1/3] conf/cvl_dcf_switch_filter.cfg: add comms pacakge and ice package file location Nannan Lu
2020-08-25 19:34 ` Nannan Lu [this message]
2020-08-25 19:34 ` [dts] [PATCH V1 3/3] test_plans/cvl_dcf_switch_filter_test_plan.rst: add PPPOE cases Nannan Lu
2020-08-27 5:00 ` Tu, Lijuan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1598384054-754384-2-git-send-email-nannan.lu@intel.com \
--to=nannan.lu@intel.com \
--cc=dts@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).