Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/83371/?format=api
https://patches.dpdk.org/api/patches/83371/?format=api", "web_url": "https://patches.dpdk.org/project/dts/patch/20201102092120.9146-3-haiyangx.zhao@intel.com/", "project": { "id": 3, "url": "https://patches.dpdk.org/api/projects/3/?format=api", "name": "DTS", "link_name": "dts", "list_id": "dts.dpdk.org", "list_email": "dts@dpdk.org", "web_url": "", "scm_url": "git://dpdk.org/tools/dts", "webscm_url": "http://git.dpdk.org/tools/dts/", "list_archive_url": "https://inbox.dpdk.org/dts", "list_archive_url_format": "https://inbox.dpdk.org/dts/{}", "commit_url_format": "" }, "msgid": "<20201102092120.9146-3-haiyangx.zhao@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dts/20201102092120.9146-3-haiyangx.zhao@intel.com", "date": "2020-11-02T09:21:14", "name": "[V3,2/8] tests/TestSuite_cvl_advanced_rss:update script", "commit_ref": null, "pull_url": null, "state": "changes-requested", "archived": false, "hash": "9feea7524ae85e0a3720ba1eef7804cc5a8a39ca", "submitter": { "id": 1978, "url": "https://patches.dpdk.org/api/people/1978/?format=api", "name": "Zhao, HaiyangX", "email": "haiyangx.zhao@intel.com" }, "delegate": null, "mbox": "https://patches.dpdk.org/project/dts/patch/20201102092120.9146-3-haiyangx.zhao@intel.com/mbox/", "series": [ { "id": 13558, "url": "https://patches.dpdk.org/api/series/13558/?format=api", "web_url": "https://patches.dpdk.org/project/dts/list/?series=13558", "date": "2020-11-02T09:21:12", "name": "tests: update or add rss related suites", "version": 3, "mbox": "https://patches.dpdk.org/series/13558/mbox/" } ], "comments": "https://patches.dpdk.org/api/patches/83371/comments/", "check": "pending", "checks": "https://patches.dpdk.org/api/patches/83371/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dts-bounces@dpdk.org>", "X-Original-To": "patchwork@inbox.dpdk.org", "Delivered-To": "patchwork@inbox.dpdk.org", "Received": [ "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id F07DFA04E7;\n\tMon, 2 Nov 2020 10:22:50 +0100 (CET)", "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id A8B6FBE43;\n\tMon, 2 Nov 2020 10:22:49 +0100 (CET)", "from mga12.intel.com (mga12.intel.com [192.55.52.136])\n by dpdk.org (Postfix) with ESMTP id EE53572ED\n for <dts@dpdk.org>; Mon, 2 Nov 2020 10:22:45 +0100 (CET)", "from fmsmga008.fm.intel.com ([10.253.24.58])\n by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 02 Nov 2020 01:22:44 -0800", "from unknown (HELO localhost.localdomain) ([10.240.183.55])\n by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 02 Nov 2020 01:22:37 -0800" ], "IronPort-SDR": [ "\n DJld54S+jeeiF6sycBq3tmucaw9rUb2s8xm8FrxS7KxqrGyUoBMR0mJkSEXmLfEsdjttJ5Z/8w\n n/nskEEyER3A==", "\n LJJqGNMQE/IFAIY86ofFyJfypi6josBerUlgG3zpjj78H6yo+XPmfM/VALgEMqavjP+2nr5SqI\n jjaLI+MP1mDQ==" ], "X-IronPort-AV": [ "E=McAfee;i=\"6000,8403,9792\"; a=\"148139732\"", "E=Sophos;i=\"5.77,444,1596524400\"; d=\"scan'208\";a=\"148139732\"", "E=Sophos;i=\"5.77,444,1596524400\"; d=\"scan'208\";a=\"305386237\"" ], "X-Amp-Result": "SKIPPED(no attachment in message)", "X-Amp-File-Uploaded": "False", "From": "Haiyang Zhao <haiyangx.zhao@intel.com>", "To": "dts@dpdk.org,\n\tqi.fu@intel.com", "Cc": "Xie wei <weix.xie@intel.com>", "Date": "Mon, 2 Nov 2020 17:21:14 +0800", "Message-Id": "<20201102092120.9146-3-haiyangx.zhao@intel.com>", "X-Mailer": "git-send-email 2.17.1", "In-Reply-To": "<20201102092120.9146-1-haiyangx.zhao@intel.com>", "References": "<20201102092120.9146-1-haiyangx.zhao@intel.com>", "Subject": "[dts] [PATCH V3 2/8] tests/TestSuite_cvl_advanced_rss:update script", "X-BeenThere": "dts@dpdk.org", "X-Mailman-Version": "2.1.15", "Precedence": "list", "List-Id": "test suite reviews and discussions <dts.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dts>,\n <mailto:dts-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dts/>", "List-Post": "<mailto:dts@dpdk.org>", "List-Help": "<mailto:dts-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dts>,\n <mailto:dts-request@dpdk.org?subject=subscribe>", "Errors-To": "dts-bounces@dpdk.org", "Sender": "\"dts\" <dts-bounces@dpdk.org>" }, "content": "From: Xie wei <weix.xie@intel.com>\n\n* according to test plan, update cvl_advanced_rss script.\n\nSigned-off-by: Xie wei <weix.xie@intel.com>\n---\n tests/TestSuite_cvl_advanced_rss.py | 6944 +++++++++++++++++++++++----\n 1 file changed, 6066 insertions(+), 878 deletions(-)", "diff": "diff --git a/tests/TestSuite_cvl_advanced_rss.py b/tests/TestSuite_cvl_advanced_rss.py\nindex 736dcc3..c9c16ec 100644\n--- a/tests/TestSuite_cvl_advanced_rss.py\n+++ b/tests/TestSuite_cvl_advanced_rss.py\n@@ -29,966 +29,6154 @@\n # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n \n-import json\n-import time\n+\n import re\n-import packet\n-import os\n-from scapy.contrib.gtp import *\n-from test_case import TestCase\n+import random\n+from packet import Packet\n from pmd_output import PmdOutput\n-from utils import BLUE, RED\n-from collections import OrderedDict\n-from packet import IncreaseIP, IncreaseIPv6\n-import rte_flow_common as rfc\n-\n-out = os.popen(\"pip list|grep scapy \")\n-version_result =out.read()\n-p=re.compile('scapy\\s+2\\.3\\.\\d+')\n-m=p.search(version_result)\n-\n-if not m:\n- GTP_TEID= \"teid\"\n-else:\n- GTP_TEID= \"TEID\"\n-\n-tv_mac_ipv4_l3_src_only = {\n- \"name\":\"tv_mac_ipv4_l3_src_only\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.%d\")/(\"X\"*480)' %i for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_l3_src_only_frag = {\n- \"name\":\"tv_mac_ipv4_l3_src_only_frag\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.%d\", frag=5)/(\"X\"*480)' %i for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_l3_dst_only = {\n- \"name\":\"tv_mac_ipv4_l3_dst_only\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(dst=\"192.168.0.%d\", frag=5)/(\"X\"*480)' %i for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_l3_dst_only_frag = {\n- \"name\":\"tv_mac_ipv4_l3_dst_only_frag\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(dst=\"192.168.0.%d\", frag=5)/SCTP(sport=%d)/(\"X\"*480)' %(i, i+10) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_l3_src_only_frag_icmp = {\n- \"name\":\"tv_mac_ipv4_l3_src_only_frag_icmp\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.%d\", frag=5)/ICMP()/(\"X\"*480)' %i for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_l3_dst_only_frag_icmp = {\n- \"name\":\"tv_mac_ipv4_l3_dst_only_frag_icmp\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(dst=\"192.168.0.%d\", frag=5)/ICMP()/(\"X\"*480)' %i for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_l3_all = {\n- \"name\":\"tv_mac_ipv4_l3_all\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.%d\", dst=\"192.168.0.%d\")/(\"X\"*480)' %(i, i+10) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_l3_all_frag_icmp = {\n- \"name\":\"tv_mac_ipv4_l3_all_frag_icmp\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.%d\", dst=\"192.168.0.%d\")/ICMP()/(\"X\"*480)' %(i, i+10) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_l3_all_nvgre_frag_icmp = {\n- \"name\":\"tv_mac_ipv4_l3_all_nvgre_frag_icmp\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether()/IP(src=\"192.168.0.%d\", dst=\"192.168.0.%d\")/ICMP()/(\"X\"*480)' %(i, i+10) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_l3_src_nvgre_frag_icmp = {\n- \"name\":\"tv_mac_ipv4_l3_src_nvgre_frag_icmp\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether()/IP(src=\"192.168.0.%d\", frag=5)/ICMP()/(\"X\"*480)' %i for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_l3_dst_nvgre_frag_icmp = {\n- \"name\":\"tv_mac_ipv4_l3_dst_nvgre_frag_icmp\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.%d\", frag=5)/ICMP()/(\"X\"*480)' %i for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+from test_case import TestCase\n+from rte_flow_common import RssProcessing\n+\n+# toeplitz related data start\n+mac_ipv4_toeplitz_basic_pkt = {\n+ 'ipv4-nonfrag': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)',\n+ ],\n+ 'ipv4-frag': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\", frag=6)/(\"X\"*480)',\n+ ],\n+ 'ipv4-icmp': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/ICMP()/(\"X\"*480)',\n+ ],\n+ 'ipv4-tcp': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n+ 'ipv4-udp-vxlan': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/UDP()/VXLAN()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n }\n \n-tv_mac_ipv4_l3_src_vxlan_frag_icmp = {\n- \"name\":\"tv_mac_ipv4_l3_src_vxlan_frag_icmp\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end\", \n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/UDP()/VXLAN()/Ether()/IP(src=\"192.168.0.%d\",frag=5)/ICMP()/(\"X\"*480)' %i for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv4_udp_toeplitz_basic_pkt = {\n+ 'ipv4-udp': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n+ 'nvgre': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n }\n \n-tv_mac_ipv4_l3_dst_vxlan_frag_icmp = {\n- \"name\":\"tv_mac_ipv4_l3_dst_vxlan_frag_icmp\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/UDP()/VXLAN()/Ether()/IP(dst=\"192.168.0.%d\",frag=5)/ICMP()/(\"X\"*480)' %i for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv4_udp_toeplitz_non_basic_pkt = [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/Raw(\"x\"*80)',\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ ]\n+\n+mac_ipv4_tcp_toeplitz_basic_pkt = {\n+ 'ipv4-tcp': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n+ 'nvgre': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n }\n \n-tv_mac_ipv4_l3_all_vxlan_frag_icmp = {\n- \"name\":\"tv_mac_ipv4_l3_all_vxlan_frag_icmp\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/UDP()/VXLAN()/Ether()/IP(src=\"192.168.0.%d\", dst=\"192.168.0.%d\", frag=5)/ICMP()/(\"X\"*480)' %(i, i+10) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv4_tcp_toeplitz_non_basic_pkt = [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/Raw(\"x\"*80)',\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)'\n+ ]\n+\n+mac_ipv4_sctp_toeplitz_basic_pkt = {\n+ 'ipv4-sctp': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n+ 'nvgre': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n }\n \n-tv_mac_ipv6_l3_src = {\n- \"name\":\"tv_mac_ipv6_l3_src\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"2001::%d\")/(\"X\"*480)' %i for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv4_sctp_toeplitz_non_basic_pkt = [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/Raw(\"x\"*80)',\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ ]\n+\n+mac_ipv6_toeplitz_basic_pkt = {\n+ 'ipv6-nonfrag': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ ],\n+ 'ipv6-frag': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ ],\n+ 'ipv6-icmp': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)',\n+ ],\n+ 'ipv6-udp': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n+ 'nvgre': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ ],\n }\n \n-tv_mac_ipv6_l3_src_frag = {\n- \"name\":\"tv_mac_ipv6_l3_src_frag\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"2001::%d\")/IPv6ExtHdrFragment()/(\"X\"*480)' %i for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv6_toeplitz_non_basic_pkt = [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)',\n+ ]\n+\n+mac_ipv6_udp_toeplitz_basic_pkt = {\n+ 'ipv6-udp': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n+ 'ipv4_udp_vxlan_ipv6_udp': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n }\n \n-tv_mac_ipv6_l3_dst_frag = {\n- \"name\":\"tv_mac_ipv6_l3_dst_frag\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(dst=\"2001::%d\")/IPv6ExtHdrFragment()/(\"X\"*480)' %i for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv6_udp_toeplitz_non_basic_pkt = [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\")/UDP(sport=22,dport=23)/Raw(\"x\"*80)',\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ ]\n+\n+mac_ipv6_tcp_toeplitz_basic_pkt = {\n+ 'ipv6-tcp': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n+ 'ipv4_tcp_vxlan_ipv6_tcp': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n }\n \n-tv_mac_ipv6_l3_all_frag_icmp = {\n- \"name\":\"tv_mac_ipv6_l3_all_frag_icmp\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"2001::%d\", dst=\"2001::%d\")/IPv6ExtHdrFragment()/ICMP()/(\"X\"*480)' %(i, i+10) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv6_tcp_toeplitz_non_basic_pkt = [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\")/TCP(sport=22,dport=23)/Raw(\"x\"*80)',\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ ]\n+\n+mac_ipv6_sctp_toeplitz_basic_pkt = {\n+ 'ipv6-sctp': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n+ 'ipv4_sctp_vxlan_ipv6_sctp': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n }\n \n-tv_mac_ipv4_udp_l3src_l4dst = {\n- \"name\":\"tv_mac_ipv4_udp_l3src_l4dst\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.%d\")/UDP(dport=%d)/(\"X\"*480)' %(i, i+10) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv6_sctp_toeplitz_non_basic_pkt = [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\")/SCTP(sport=22,dport=23)/Raw(\"x\"*80)',\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ ]\n+\n+mac_ipv4_l2src_changed = {\n+ 'ipv4-nonfrag': [\n+ 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)',\n+ ],\n+ 'ipv4-frag': [\n+ 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\", frag=6)/(\"X\"*480)',\n+ ],\n+ 'ipv4-icmp': [\n+ 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/ICMP()/(\"X\"*480)',\n+ ],\n+ 'ipv4-tcp': [\n+ 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n+ 'ipv4-udp-vxlan': [\n+ 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP()/UDP()/VXLAN()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n }\n \n-tv_mac_ipv4_udp_all_frag = {\n- \"name\":\"tv_mac_ipv4_udp_all_frag\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.%d\", dst=\"192.168.0.%d\")/UDP(sport=%d, dport=%d)/(\"X\"*480)' %(i, i+10, i+50,i+55) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv4_l2dst_changed = {\n+ 'ipv4-nonfrag': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)',\n+ ],\n+ 'ipv4-frag': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\", frag=6)/(\"X\"*480)',\n+ ],\n+ 'ipv4-icmp': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/ICMP()/(\"X\"*480)',\n+ ],\n+ 'ipv4-tcp': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n+ 'ipv4-udp-vxlan': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP()/UDP()/VXLAN()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n }\n \n-tv_mac_ipv4_udp_nvgre = {\n- \"name\":\"tv_mac_ipv4_udp_nvgre\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether()/IP(src=\"192.168.0.%d\", dst=\"192.168.0.%d\")/UDP(sport=%d, dport=%d)/(\"X\"*480)' %(i, i+10, i+50,i+55) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv4_l3src_changed = {\n+ 'ipv4-nonfrag': [\n+ 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/(\"X\"*480)',\n+ ],\n+ 'ipv4-frag': [\n+ 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\", frag=6)/(\"X\"*480)',\n+ ],\n+ 'ipv4-icmp': [\n+ 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/ICMP()/(\"X\"*480)',\n+ ],\n+ 'ipv4-tcp': [\n+ 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n+ 'ipv4-udp-vxlan': [\n+ 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP()/UDP()/VXLAN()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n }\n \n-tv_mac_ipv4_udp_vxlan= {\n- \"name\":\"tv_mac_ipv4_udp_vxlan\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end\", \n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/UDP()/VXLAN()/Ether()/IP(src=\"192.168.0.%d\", dst=\"192.168.0.%d\")/UDP(sport=%d, dport=%d)/(\"X\"*480)' %(i, i+10, i+50,i+55) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv4_l3dst_changed = {\n+ 'ipv4-nonfrag': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/(\"X\"*480)',\n+ ],\n+ 'ipv4-frag': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\", frag=6)/(\"X\"*480)',\n+ ],\n+ 'ipv4-icmp': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/ICMP()/(\"X\"*480)',\n+ ],\n+ 'ipv4-tcp': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n+ 'ipv4-udp-vxlan': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP()/UDP()/VXLAN()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n }\n \n-tv_mac_ipv6_udp_all= {\n- \"name\":\"tv_mac_ipv6_udp_all\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"2001::%d\")/UDP(sport=%d, dport=%d)/(\"X\"*480)' %(i, i+10, i+50) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv6_l2src_changed = {\n+ 'ipv6-nonfrag': [\n+ 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ ],\n+ 'ipv6-frag': [\n+ 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ ],\n+ 'ipv6-icmp': [\n+ 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)',\n+ ],\n+ 'ipv6-udp': [\n+ 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ ],\n }\n \n+mac_ipv6_l2dst_changed = {\n+ 'ipv6-nonfrag': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/(\"X\"*480)',\n+ ],\n+ 'ipv6-frag': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ ],\n+ 'ipv6-icmp': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/ICMP()/(\"X\"*480)',\n+ ],\n+ 'ipv6-udp': [\n+ 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/UDP(sport=25,dport=99)/(\"X\"*480)',\n+ ],\n+}\n \n-tv_mac_ipv6_udp_all_frag= {\n- \"name\":\"tv_mac_ipv6_udp_all_frag\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"2001::%d\")/IPv6ExtHdrFragment()/UDP(sport=%d, dport=%d)/(\"X\"*480)' %(i, i+10, i+50) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+#mac_ipv4\n+mac_ipv4_l2_src = {\n+ 'sub_casename': 'mac_ipv4_l2_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss types eth l2-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2src_changed['ipv4-nonfrag'],\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2dst_changed['ipv4-nonfrag'],\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'],\n+ 'action': {'save_hash': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2src_changed['ipv4-frag'],\n+ 'action': {'check_hash_different': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2dst_changed['ipv4-frag'],\n+ 'action': {'check_hash_same': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'],\n+ 'action': {'save_hash': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2src_changed['ipv4-icmp'],\n+ 'action': {'check_hash_different': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2dst_changed['ipv4-icmp'],\n+ 'action': {'check_hash_same': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'],\n+ 'action': {'save_hash': 'ipv4-udp-vxlan'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2src_changed['ipv4-udp-vxlan'],\n+ 'action': {'check_hash_different': 'ipv4-udp-vxlan'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2dst_changed['ipv4-udp-vxlan'],\n+ 'action': {'check_hash_same': 'ipv4-udp-vxlan'},\n+ }\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'][0],\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-frag'][0],\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'][0],\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n }\n \n-tv_mac_ipv4_tcp_l3src_l4dst= {\n- \"name\":\"tv_mac_ipv4_tcp_l3src_l4dst\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.%d\")/TCP(dport=%d)/(\"X\"*480)' %(i, i+10) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv4_l2_dst = {\n+ 'sub_casename': 'mac_ipv4_l2dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss types eth l2-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'],\n+ 'action': {'save_hash': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2dst_changed['ipv4-nonfrag'],\n+ 'action': {'check_hash_different': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2src_changed['ipv4-nonfrag'],\n+ 'action': {'check_hash_same': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'],\n+ 'action': {'save_hash': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2dst_changed['ipv4-frag'],\n+ 'action': {'check_hash_different': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2src_changed['ipv4-frag'],\n+ 'action': {'check_hash_same': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'],\n+ 'action': {'save_hash': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2dst_changed['ipv4-icmp'],\n+ 'action': {'check_hash_different': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2src_changed['ipv4-icmp'],\n+ 'action': {'check_hash_same': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'],\n+ 'action': {'save_hash': 'ipv4-udp-vxlan'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2dst_changed['ipv4-udp-vxlan'],\n+ 'action': {'check_hash_different': 'ipv4-udp-vxlan'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2src_changed['ipv4-udp-vxlan'],\n+ 'action': {'check_hash_same': 'ipv4-udp-vxlan'},\n+ }\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'][0],\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-frag'][0],\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'][0],\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'][0],\n+ ],\n+ 'action': {'check_no_hash': ''},\n+ },\n+ ],\n }\n \n-tv_mac_ipv4_tcp_l3dst_l4src= {\n- \"name\":\"tv_mac_ipv4_tcp_l3dst_l4src\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(dst=\"192.168.0.%d\")/TCP(sport=%d)/(\"X\"*480)' %(i, i+10) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv4_l2src_l2dst = {\n+ 'sub_casename': 'mac_ipv4_l2src_l2dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss types eth end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'],\n+ 'action': {'save_hash': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2dst_changed['ipv4-nonfrag'],\n+ 'action': {'check_hash_different': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2src_changed['ipv4-nonfrag'],\n+ 'action': {'check_hash_different': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.3\", src=\"192.168.0.5\")/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'],\n+ 'action': {'save_hash': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2dst_changed['ipv4-frag'],\n+ 'action': {'check_hash_different': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2src_changed['ipv4-frag'],\n+ 'action': {'check_hash_different': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\",frag=6)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.3\", src=\"192.168.0.5\",frag=7)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'],\n+ 'action': {'save_hash': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2dst_changed['ipv4-icmp'],\n+ 'action': {'check_hash_different': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2src_changed['ipv4-icmp'],\n+ 'action': {'check_hash_different': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.3\", src=\"192.168.0.5\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'],\n+ 'action': {'save_hash': 'ipv4-udp-vxlan'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2dst_changed['ipv4-udp-vxlan'],\n+ 'action': {'check_hash_different': 'ipv4-udp-vxlan'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l2src_changed['ipv4-udp-vxlan'],\n+ 'action': {'check_hash_different': 'ipv4-udp-vxlan'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp-vxlan'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.3\", src=\"192.168.0.5\")/TCP(sport=23,dport=25)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-udp-vxlan'},\n+ }\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'][0],\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-frag'][0],\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'][0],\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'][0],\n+ ],\n+ 'action': {'check_no_hash': ''},\n+ },\n+ ],\n }\n \n-tv_mac_ipv4_tcp_all= {\n- \"name\":\"tv_mac_ipv4_tcp_all\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.%d\",dst=\"192.168.0.%d\")/TCP(sport=%d,dport=%d)/(\"X\"*480)' %(i, i+10, i+50,i+55) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv4_l3_src = {\n+ 'sub_casename': 'mac_ipv4_l3src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'],\n+ 'action': {'save_hash': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3src_changed['ipv4-nonfrag'],\n+ 'action': {'check_hash_different': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3dst_changed['ipv4-nonfrag'],\n+ 'action': {'check_hash_same': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'],\n+ 'action': {'save_hash': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3src_changed['ipv4-frag'],\n+ 'action': {'check_hash_different': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3dst_changed['ipv4-frag'],\n+ 'action': {'check_hash_same': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'],\n+ 'action': {'save_hash': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3src_changed['ipv4-icmp'],\n+ 'action': {'check_hash_different': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3dst_changed['ipv4-icmp'],\n+ 'action': {'check_hash_same': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'],\n+ 'action': {'save_hash': 'ipv4-udp-vxlan'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3src_changed['ipv4-udp-vxlan'],\n+ 'action': {'check_hash_different': 'ipv4-udp-vxlan'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3dst_changed['ipv4-udp-vxlan'],\n+ 'action': {'check_hash_same': 'ipv4-udp-vxlan'},\n+ }\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'][0],\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-frag'][0],\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'][0],\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'][0],\n+ ],\n+ 'action': {'check_no_hash': ''},\n+ },\n+ ],\n }\n \n-tv_mac_ipv4_tcp_all_nvgre_frag= {\n- \"name\":\"tv_mac_ipv4_tcp_all_nvgre_frag\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether()/IP(src=\"192.168.0.%d\", dst=\"192.168.0.%d\")/TCP(sport=%d, dport=%d)/(\"X\"*480)' %(i, i+10, i+50,i+55) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv4_l3_dst = {\n+ 'sub_casename': 'mac_ipv4_l3dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'],\n+ 'action': {'save_hash': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3dst_changed['ipv4-nonfrag'],\n+ 'action': {'check_hash_different': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3src_changed['ipv4-nonfrag'],\n+ 'action': {'check_hash_same': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'],\n+ 'action': {'save_hash': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3dst_changed['ipv4-frag'],\n+ 'action': {'check_hash_different': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3src_changed['ipv4-frag'],\n+ 'action': {'check_hash_same': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'],\n+ 'action': {'save_hash': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3dst_changed['ipv4-icmp'],\n+ 'action': {'check_hash_different': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3src_changed['ipv4-icmp'],\n+ 'action': {'check_hash_same': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'],\n+ 'action': {'save_hash': 'ipv4-udp-vxlan'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3dst_changed['ipv4-udp-vxlan'],\n+ 'action': {'check_hash_different': 'ipv4-udp-vxlan'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3src_changed['ipv4-udp-vxlan'],\n+ 'action': {'check_hash_same': 'ipv4-udp-vxlan'},\n+ }\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'][0],\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-frag'][0],\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'][0],\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'][0],\n+ ],\n+ 'action': {'check_no_hash': ''},\n+ },\n+ ],\n }\n \n-tv_mac_ipv4_tcp_all_vxlan_frag= {\n- \"name\":\"tv_mac_ipv4_tcp_all_vxlan_frag\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/UDP()/VXLAN()/Ether()/IP(src=\"192.168.0.%d\", dst=\"192.168.0.%d\")/TCP(sport=%d, dport=%d)/(\"X\"*480)' %(i, i+10, i+50,i+55) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv4_all = {\n+ 'sub_casename': 'mac_ipv4_all',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'],\n+ 'action': {'save_hash': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3dst_changed['ipv4-nonfrag'],\n+ 'action': {'check_hash_different': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3src_changed['ipv4-nonfrag'],\n+ 'action': {'check_hash_different': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-frag'],\n+ 'action': {'save_hash': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3dst_changed['ipv4-frag'],\n+ 'action': {'check_hash_different': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3src_changed['ipv4-frag'],\n+ 'action': {'check_hash_different': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\",frag=6)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'],\n+ 'action': {'save_hash': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3dst_changed['ipv4-icmp'],\n+ 'action': {'check_hash_different': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3src_changed['ipv4-icmp'],\n+ 'action': {'check_hash_different': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'],\n+ 'action': {'save_hash': 'ipv4-udp-vxlan'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3dst_changed['ipv4-udp-vxlan'],\n+ 'action': {'check_hash_different': 'ipv4-udp-vxlan'},\n+ },\n+ {\n+ 'send_packet': mac_ipv4_l3src_changed['ipv4-udp-vxlan'],\n+ 'action': {'check_hash_different': 'ipv4-udp-vxlan'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-udp-vxlan'},\n+ }\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-nonfrag'][0],\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-frag'][0],\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-icmp'][0],\n+ mac_ipv4_toeplitz_basic_pkt['ipv4-udp-vxlan'][0],\n+ ],\n+ 'action': {'check_no_hash': ''},\n+ },\n+ ],\n }\n \n-tv_mac_ipv6_tcp_all= {\n- \"name\":\"tv_mac_ipv6_tcp_all\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"2001::%d\")/TCP(sport=%d, dport=%d)/(\"X\"*480)' %(i, i+10, i+50) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+#mac ipv4_udp\n+mac_ipv4_udp_l2_src = {\n+ 'sub_casename': 'mac_ipv4_udp_l2_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.3\", src=\"192.168.0.5\")/UDP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n }\n \n-tv_mac_ipv6_tcp_all_frag= {\n- \"name\":\"tv_mac_ipv6_tcp_all_frag\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"2001::%d\")/IPv6ExtHdrFragment()/TCP(sport=%d, dport=%d)/(\"X\"*480)' %(i, i+10, i+50) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv4_udp_l2_dst = {\n+ 'sub_casename': 'mac_ipv4_udp_l2_dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.3\", src=\"192.168.0.5\")/UDP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n }\n \n-tv_mac_ipv4_sctp_l3src_l4dst= {\n- \"name\":\"tv_mac_ipv4_sctp_l3src_l4dst\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-src-only l4-dst-only end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.%d\")/SCTP(dport=%d)/(\"X\"*480)' %(i, i+10) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv4_udp_l2src_l2dst = {\n+ 'sub_casename': 'mac_ipv4_udp_l2src_l2dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types eth end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.3\", src=\"192.168.0.5\")/UDP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n }\n \n-tv_mac_ipv4_sctp_all_frag= {\n- \"name\":\"tv_mac_ipv4_sctp_all_frag\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.%d\",dst=\"192.168.0.%d\", frag=4)/SCTP(sport=%d,dport=%d)/(\"X\"*480)' %(i, i+10,i+50,i+55) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv4_udp_l3_src = {\n+ 'sub_casename': 'mac_ipv4_udp_l3_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0],\n+ mac_ipv4_udp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n }\n \n-tv_mac_ipv4_sctp_nvgre= {\n- \"name\":\"tv_mac_ipv4_sctp_nvgre\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether()/IP(src=\"192.168.0.%d\",dst=\"192.168.0.%d\", frag=4)/SCTP(sport=%d,dport=%d)/(\"X\"*480)' %(i, i+10,i+50,i+55) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv4_udp_l3_dst = {\n+ 'sub_casename': 'mac_ipv4_udp_l3_dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0],\n+ mac_ipv4_udp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n }\n \n-tv_mac_ipv4_sctp_vxlan= {\n- \"name\":\"tv_mac_ipv4_sctp_vxlan\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/UDP()/VXLAN()/Ether()/IP(src=\"192.168.0.%d\",dst=\"192.168.0.%d\")/SCTP(sport=%d,dport=%d)/(\"X\"*480)' %(i, i+10,i+50,i+55) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv4_udp_l3src_l4src = {\n+ 'sub_casename': 'mac_ipv4_udp_l3src_l4src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0],\n+ mac_ipv4_udp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n }\n \n-tv_mac_ipv6_sctp_all= {\n- \"name\":\"tv_mac_ipv6_sctp_all\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"2001::%d\")/SCTP(sport=%d, dport=%d)/(\"X\"*480)' %(i, i+10, i+50) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n+mac_ipv4_udp_l3src_l4dst = {\n+ 'sub_casename': 'mac_ipv4_udp_l3src_l4dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0],\n+ mac_ipv4_udp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n \n-tv_mac_ipv4_pppod_pppoe= {\n- \"name\":\"tv_mac_ipv4_pppod_pppoe\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/PPPoE(sessionid=%d)/PPP(proto=0x21)/IP(src=\"192.168.0.%d\")/UDP(sport=%d)/(\"X\"*480)' %(i, i+10,i+50) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_pppoe_all= {\n- \"name\":\"tv_mac_ipv4_pppoe_all\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/PPPoE(sessionid=%d)/PPP(proto=0x21)/IP(src=\"192.168.0.%d\",dst=\"192.168.0.%d\")/(\"X\"*480)' %(i, i+10,i+50) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_pppoe_udp= {\n- \"name\":\"tv_mac_ipv4_pppoe_udp\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/PPPoE(sessionid=%d)/PPP(proto=0x21)/IP(src=\"192.168.0.%d\")/UDP(dport=%d)/(\"X\"*480)' %(i, i+10,i+50) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_pppoe_tcp= {\n- \"name\":\"tv_mac_ipv4_pppoe_tcp\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / pppoes / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/PPPoE(sessionid=%d)/PPP(proto=0x21)/IP(src=\"192.168.0.%d\")/TCP(sport=%d)/(\"X\"*480)' %(i, i+10,i+50) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_pppoe_sctp= {\n- \"name\":\"tv_mac_ipv4_pppoe_sctp\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / pppoes / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/PPPoE(sessionid=%d)/PPP(proto=0x21)/IP(src=\"192.168.0.%d\")/SCTP(dport=%d)/(\"X\"*480)' %(i, i+10,i+50) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_pppoe_icmp= {\n- \"name\":\"tv_mac_ipv4_pppoe_icmp\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/PPPoE(sessionid=%d)/PPP(proto=0x21)/IP(src=\"192.168.0.%d\")/ICMP()/(\"X\"*480)' %(i, i+10) for i in range(0,100)],\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-pkt_str=[]\n-pkt = ['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/UDP(dport=2152)/GTP_U_Header(GTP_TEID=0x123456)/IP(src=\"192.168.0.%d\")/ICMP()/(\"X\"*480)' %i for i in range(0,100)]\n-for i in pkt:\n- pkt_str.append(i.replace('GTP_TEID', GTP_TEID))\n-\n-tv_mac_ipv4_gtpu_icmp= {\n- \"name\":\"tv_mac_ipv4_gtpu_icmp\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end\",\n- \"scapy_str\":pkt_str,\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-pkt_str=[]\n-pkt = ['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/UDP(dport=2152)/GTP_U_Header(GTP_TEID=0x123456)/IP(src=\"192.168.0.%d\", frag=6)/UDP(dport=%d)/(\"X\"*480)' %(i, i+10) for i in range(0,100)]\n-for i in pkt:\n- pkt_str.append(i.replace('GTP_TEID', GTP_TEID))\n-\n-tv_mac_ipv4_gtpu_udp_frag= {\n- \"name\":\"tv_mac_ipv4_gtpu_udp_frag\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end\",\n- \"scapy_str\":pkt_str,\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-pkt_str=[]\n-pkt = ['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/UDP(dport=2152)/GTP_U_Header(GTP_TEID=0x123456)/IP(src=\"192.168.0.%d\", frag=6)/(\"X\"*480)' %i for i in range(0,100)]\n-for i in pkt:\n- pkt_str.append(i.replace('GTP_TEID', GTP_TEID))\n-\n-tv_mac_ipv4_gtpu_ipv4_frag= {\n- \"name\":\"tv_mac_ipv4_gtpu_ipv4_frag\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end\",\n- \"scapy_str\":pkt_str,\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-pkt_str=[]\n-pkt =['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/UDP(dport=2152)/GTP_U_Header(GTP_TEID=0x123456)/IP(src=\"192.168.0.%d\", frag=6)/TCP(dport=%d)/(\"X\"*480)' %(i, i+10) for i in range(0,100)]\n-for i in pkt:\n- pkt_str.append(i.replace('GTP_TEID', GTP_TEID))\n-\n-tv_mac_ipv4_gtpu_tcp= {\n- \"name\":\"tv_mac_ipv4_gtpu_tcp\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end\",\n- \"scapy_str\":pkt_str,\n- \"check_func\": rfc.check_packets_of_each_queue,\n- \"check_func_param\": {\"expect_port\":0}\n+mac_ipv4_udp_l3dst_l4src = {\n+ 'sub_casename': 'mac_ipv4_udp_l3dst_l4src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0],\n+ mac_ipv4_udp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n }\n \n-tvs_mac_rss_ipv4 = [\n- tv_mac_ipv4_l3_src_only,\n- tv_mac_ipv4_l3_src_only_frag,\n- tv_mac_ipv4_l3_dst_only,\n- tv_mac_ipv4_l3_all\n- ]\n-\n-tvs_mac_rss_ipv4_port = [\n- tv_mac_ipv4_l3_src_only_frag_icmp,\n- tv_mac_ipv4_l3_dst_only_frag_icmp,\n- tv_mac_ipv4_l3_all_frag_icmp,\n- tv_mac_ipv4_udp_l3src_l4dst,\n- tv_mac_ipv4_udp_all_frag,\n- tv_mac_ipv4_tcp_l3src_l4dst,\n- tv_mac_ipv4_tcp_l3dst_l4src,\n- tv_mac_ipv4_tcp_all,\n- tv_mac_ipv4_sctp_l3src_l4dst,\n- tv_mac_ipv4_sctp_all_frag\n- ]\n+mac_ipv4_udp_l3dst_l4dst = {\n+ 'sub_casename': 'mac_ipv4_udp_l3dst_l4dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0],\n+ mac_ipv4_udp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n \n-tvs_mac_rss_ipv4_nvgre = [\n- tv_mac_ipv4_l3_all_nvgre_frag_icmp,\n- tv_mac_ipv4_l3_src_nvgre_frag_icmp,\n- tv_mac_ipv4_l3_dst_nvgre_frag_icmp,\n- tv_mac_ipv4_tcp_all_nvgre_frag,\n- tv_mac_ipv4_sctp_nvgre\n- ]\n-tvs_mac_rss_ipv4_vxlan =[\n- tv_mac_ipv4_l3_src_vxlan_frag_icmp,\n- tv_mac_ipv4_l3_dst_vxlan_frag_icmp,\n- tv_mac_ipv4_l3_all_vxlan_frag_icmp,\n- tv_mac_ipv4_tcp_all_vxlan_frag,\n- tv_mac_ipv4_sctp_vxlan,\n- tv_mac_ipv4_udp_vxlan\n- ]\n+mac_ipv4_udp_l4_src = {\n+ 'sub_casename': 'mac_ipv4_udp_l4_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0],\n+ mac_ipv4_udp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n \n-tvs_mac_rss_ipv6 =[\n- tv_mac_ipv6_l3_src,\n- tv_mac_ipv6_l3_src_frag,\n- tv_mac_ipv6_l3_dst_frag,\n- tv_mac_ipv6_l3_all_frag_icmp,\n- tv_mac_ipv6_udp_all,\n- tv_mac_ipv6_udp_all_frag,\n- tv_mac_ipv6_tcp_all,\n- tv_mac_ipv6_tcp_all_frag,\n- tv_mac_ipv6_sctp_all\n-]\n- \n-tvs_mac_rss_ipv4_pppoe =[\n- tv_mac_ipv4_pppod_pppoe,\n- tv_mac_ipv4_pppoe_all,\n- tv_mac_ipv4_pppoe_tcp,\n- tv_mac_ipv4_pppoe_sctp,\n- tv_mac_ipv4_pppoe_icmp\n- ]\n-tvs_mac_rss_ipv4_gtp =[\n- tv_mac_ipv4_gtpu_icmp,\n- tv_mac_ipv4_gtpu_udp_frag,\n- tv_mac_ipv4_gtpu_ipv4_frag,\n- tv_mac_ipv4_gtpu_tcp\n- ]\n+mac_ipv4_udp_l4_dst = {\n+ 'sub_casename': 'mac_ipv4_udp_l4_dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0],\n+ mac_ipv4_udp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n \n-tv_mac_ipv4_symmetric_toeplitz = {\n- \"name\": \"tv_mac_ipv4_symmetric_toeplitz\",\n- \"rte_flow_pattern\": \"flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\")/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.2\",dst=\"192.168.0.1\")/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\": 0}\n-} \n-\n-tv_mac_ipv4_frag_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv4_frag_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",frag=6)/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.2\",dst=\"192.168.0.1\",frag=6)/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_udp_frag_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv4_udp_frag_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",frag=6)/UDP(sport=20,dport=22)/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.2\",dst=\"192.168.0.1\",frag=6)/UDP(sport=22,dport=20)/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_udp_frag_symmetric_toeplitz_all= {\n- \"name\":\"tv_mac_ipv4_udp_frag_symmetric_toeplitz_all\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp l3-src-only l3-dst-only l4-src-only l4-dst-only end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"1.1.4.1\",dst=\"2.2.2.3\")/UDP(sport=20,dport=22)/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"2.2.2.3\",dst=\"1.1.4.1\")/UDP(sport=22,dport=20)/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_tcp_frag_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv4_tcp_frag_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",frag=6)/TCP(sport=20,dport=22)/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.2\",dst=\"192.168.0.1\",frag=6)/TCP(sport=22,dport=20)/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_sctp_frag_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv4_sctp_frag_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss func symmetric_toeplitz types ipv4-sctp end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",frag=6)/SCTP(sport=20,dport=22)/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.2\",dst=\"192.168.0.1\",frag=6)/SCTP(sport=22,dport=20)/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_icmp_frag_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv4_icmp_frag_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",frag=6)/ICMP()/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"192.168.0.2\",dst=\"192.168.0.1\",frag=6)/ICMP()/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv6_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv6_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end\",\n- \"scapy_str\":['Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv6_frag_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv6_frag_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv6_udp_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv6_udp_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / udp / end actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/UDP(sport=30,dport=32)/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=32,dport=30)/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv6_tcp_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv6_tcp_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/TCP(sport=30,dport=32)/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=32,dport=30)/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv6_sctp_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv6_sctp_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss func symmetric_toeplitz types ipv6-sctp end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/SCTP(sport=30,dport=32)/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=32,dport=30)/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv6_icmp_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv6_icmp_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/ICMP()/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_nvgre_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv4_nvgre_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end \",\n- \"scapy_str\": ['Ether()/IP()/NVGRE()/Ether()/IP(src=\"192.168.0.8\",dst=\"192.168.0.69\",frag=6)/(\"X\"*480)',\n- 'Ether()/IP()/NVGRE()/Ether()/IP(src=\"192.168.0.69\",dst=\"192.168.0.8\",frag=6)/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_vxlan_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv4_vxlan_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/UDP()/VXLAN()/Ether()/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",frag=6)/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IP()/UDP()/VXLAN()/Ether()/IP(src=\"192.168.0.2\",dst=\"192.168.0.1\",frag=6)/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_nvgre_udp_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv4_nvgre_udp_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"8.8.8.1\",dst=\"5.6.8.2\")/UDP(sport=20,dport=22)/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"5.6.8.2\",dst=\"8.8.8.1\")/UDP(sport=22,dport=20)/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_nvgre_sctp_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv4_nvgre_sctp_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss func symmetric_toeplitz types ipv4-sctp end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"8.8.8.1\",dst=\"5.6.8.2\")/SCTP(sport=20,dport=22)/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"5.6.8.2\",dst=\"8.8.8.1\")/SCTP(sport=22,dport=20)/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_nvgre_tcp_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv4_nvgre_tcp_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"8.8.8.1\",dst=\"5.6.8.2\")/TCP(sport=20,dport=22)/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether(dst=\"68:05:ca:a3:28:94\")/IP(src=\"5.6.8.2\",dst=\"8.8.8.1\")/TCP(sport=22,dport=20)/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_nvgre_icmp_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv4_nvgre_icmp_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether()/IP(src=\"8.8.8.1\",dst=\"5.6.8.2\")/ICMP()/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether()/IP(src=\"5.6.8.2\",dst=\"8.8.8.1\")/ICMP()/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv6_nvgre_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv6_nvgre_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether()/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv6_nvgre_udp_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv6_nvgre_udp_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / udp / end actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether()/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/UDP(sport=30,dport=32)/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=32,dport=30)/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv6_nvgre_tcp_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv6_nvgre_tcp_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether()/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/TCP(sport=30,dport=32)/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=32,dport=30)/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv6_nvgre_sctp_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv6_nvgre_sctp_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss func symmetric_toeplitz types ipv6-sctp end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether()/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/SCTP(sport=30,dport=32)/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=32,dport=30)/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv6_nvgre_icmp_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv6_nvgre_icmp_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether()/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/ICMP()/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv6_vxlan_udp_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv6_vxlan_udp_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / udp / end actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/UDP(sport=30,dport=32)/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=32,dport=30)/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv6_vxlan_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv6_vxlan_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IP()/UDP()/VXLAN()/Ether()/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IP()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv6_vxlan_tcp_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv6_vxlan_tcp_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/TCP(sport=30,dport=32)/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=32,dport=30)/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv6_vxlan_sctp_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv6_vxlan_sctp_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss func symmetric_toeplitz types ipv6-sctp end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/SCTP(sport=30,dport=32)/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=32,dport=30)/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv6_vxlan_icmp_symmetric_toeplitz= {\n- \"name\":\"tv_mac_ipv6_vxlan_icmp_symmetric_toeplitz\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether(dst=\"68:05:ca:a3:28:94\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/ICMP()/(\"X\"*480)',\n- 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)'],\n- \"check_func\": rfc.check_symmetric_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv4_simple_xor= {\n- \"name\":\"tv_mac_ipv4_simple_xor\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern end actions rss func simple_xor key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether()/IP(src=\"1.1.4.1\",dst=\"2.2.2.3\")/(\"X\"*480)',\n- 'Ether()/IP(src=\"2.2.2.3\",dst=\"1.1.4.1\")/(\"X\"*480)'],\n- \"check_func\": rfc.check_simplexor_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tv_mac_ipv6_simple_xor= {\n- \"name\":\"tv_mac_ipv6_sctp_simple_xor\",\n- \"rte_flow_pattern\":\"flow create 0 ingress pattern end actions rss func simple_xor key_len 0 queues end / end\",\n- \"scapy_str\": ['Ether()/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/ICMP()/(\"X\"*480)',\n- 'Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)'],\n- \"check_func\": rfc.check_simplexor_queue,\n- \"check_func_param\": {\"expect_port\":0}\n-}\n-\n-tvs_mac_rss_ipv4_symmetric_toeplitz = [\n- tv_mac_ipv4_symmetric_toeplitz,\n- tv_mac_ipv4_frag_symmetric_toeplitz,\n- tv_mac_ipv4_udp_frag_symmetric_toeplitz,\n- tv_mac_ipv4_udp_frag_symmetric_toeplitz_all,\n- tv_mac_ipv4_tcp_frag_symmetric_toeplitz,\n- tv_mac_ipv4_sctp_frag_symmetric_toeplitz,\n- tv_mac_ipv4_icmp_frag_symmetric_toeplitz\n- ]\n+mac_ipv4_udp_all = {\n+ 'sub_casename': 'mac_ipv4_udp_all',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_udp_toeplitz_basic_pkt['ipv4-udp'][0],\n+ mac_ipv4_udp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n \n-tvs_mac_rss_ipv6_symmetric_toeplitz = [\n- tv_mac_ipv6_symmetric_toeplitz,\n- tv_mac_ipv6_frag_symmetric_toeplitz,\n- tv_mac_ipv6_udp_symmetric_toeplitz,\n- tv_mac_ipv6_tcp_symmetric_toeplitz,\n- tv_mac_ipv6_sctp_symmetric_toeplitz,\n- tv_mac_ipv6_icmp_symmetric_toeplitz\n- ]\n+#mac ipv4_tcp\n+mac_ipv4_tcp_l2_src = {\n+ 'sub_casename': 'mac_ipv4_tcp_l2_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.3\", src=\"192.168.0.5\")/TCP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n \n-tvs_mac_rss_ipv4_symmetric_toeplitz_nvgre = [\n- tv_mac_ipv4_nvgre_symmetric_toeplitz,\n- tv_mac_ipv4_nvgre_udp_symmetric_toeplitz,\n- tv_mac_ipv4_nvgre_sctp_symmetric_toeplitz,\n- tv_mac_ipv4_nvgre_tcp_symmetric_toeplitz,\n- tv_mac_ipv4_nvgre_icmp_symmetric_toeplitz\n- ]\n+mac_ipv4_tcp_l2_dst = {\n+ 'sub_casename': 'mac_ipv4_tcp_l2_dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.3\", src=\"192.168.0.5\")/TCP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n \n-tvs_mac_rss_ipv6_symmetric_toeplitz_nvgre = [\n- tv_mac_ipv6_nvgre_symmetric_toeplitz,\n- tv_mac_ipv6_nvgre_udp_symmetric_toeplitz,\n- tv_mac_ipv6_nvgre_tcp_symmetric_toeplitz,\n- tv_mac_ipv6_nvgre_sctp_symmetric_toeplitz,\n- tv_mac_ipv6_nvgre_icmp_symmetric_toeplitz\n- ]\n+mac_ipv4_tcp_l2src_l2dst = {\n+ 'sub_casename': 'mac_ipv4_tcp_l2src_l2dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types eth end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.3\", src=\"192.168.0.5\")/TCP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n \n-tvs_mac_rss_symmetric_toeplitz_vxlan = [\n- tv_mac_ipv4_vxlan_symmetric_toeplitz,\n- tv_mac_ipv6_vxlan_udp_symmetric_toeplitz,\n- tv_mac_ipv6_vxlan_symmetric_toeplitz,\n- tv_mac_ipv6_vxlan_tcp_symmetric_toeplitz,\n- tv_mac_ipv6_vxlan_icmp_symmetric_toeplitz\n- ]\n+mac_ipv4_tcp_l3_src = {\n+ 'sub_casename': 'mac_ipv4_tcp_l3_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0],\n+ mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n \n-tvs_mac_rss_simple_xor = [\n- tv_mac_ipv4_simple_xor,\n- tv_mac_ipv6_simple_xor\n- ]\n+mac_ipv4_tcp_l3_dst = {\n+ 'sub_casename': 'mac_ipv4_tcp_l3_dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0],\n+ mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv4_tcp_l3src_l4src = {\n+ 'sub_casename': 'mac_ipv4_tcp_l3src_l4src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0],\n+ mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv4_tcp_l3src_l4dst = {\n+ 'sub_casename': 'mac_ipv4_tcp_l3src_l4dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0],\n+ mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv4_tcp_l3dst_l4src = {\n+ 'sub_casename': 'mac_ipv4_tcp_l3dst_l4src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0],\n+ mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv4_tcp_l3dst_l4dst = {\n+ 'sub_casename': 'mac_ipv4_tcp_l3dst_l4dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0],\n+ mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv4_tcp_l4_src = {\n+ 'sub_casename': 'mac_ipv4_tcp_l4_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l4-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0],\n+ mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv4_tcp_l4_dst = {\n+ 'sub_casename': 'mac_ipv4_tcp_l4_dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l4-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0],\n+ mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv4_tcp_all = {\n+ 'sub_casename': 'mac_ipv4_tcp_all',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_tcp_toeplitz_basic_pkt['ipv4-tcp'][0],\n+ mac_ipv4_tcp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+#mac ipv4_sctp\n+mac_ipv4_sctp_l2_src = {\n+ 'sub_casename': 'mac_ipv4_sctp_l2_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types eth l2-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.3\", src=\"192.168.0.5\")/SCTP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv4_sctp_l2_dst = {\n+ 'sub_casename': 'mac_ipv4_sctp_l2_dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types eth l2-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.3\", src=\"192.168.0.5\")/SCTP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv4_sctp_l2src_l2dst = {\n+ 'sub_casename': 'mac_ipv4_sctp_l2src_l2dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types eth end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.3\", src=\"192.168.0.5\")/SCTP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv4_sctp_l3_src = {\n+ 'sub_casename': 'mac_ipv4_sctp_l3_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/SCTP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/SCTP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0],\n+ mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv4_sctp_l3_dst = {\n+ 'sub_casename': 'mac_ipv4_sctp_l3_dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/SCTP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/SCTP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0],\n+ mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv4_sctp_l3src_l4src = {\n+ 'sub_casename': 'mac_ipv4_sctp_l3src_l4src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-src-only l4-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0],\n+ mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv4_sctp_l3src_l4dst = {\n+ 'sub_casename': 'mac_ipv4_sctp_l3src_l4dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-src-only l4-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0],\n+ mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv4_sctp_l3dst_l4src = {\n+ 'sub_casename': 'mac_ipv4_sctp_l3dst_l4src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-dst-only l4-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0],\n+ mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv4_sctp_l3dst_l4dst = {\n+ 'sub_casename': 'mac_ipv4_sctp_l3dst_l4dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-dst-only l4-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0],\n+ mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv4_sctp_l4_src = {\n+ 'sub_casename': 'mac_ipv4_sctp_l4_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l4-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0],\n+ mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv4_sctp_l4_dst = {\n+ 'sub_casename': 'mac_ipv4_sctp_l4_dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l4-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0],\n+ mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv4_sctp_all = {\n+ 'sub_casename': 'mac_ipv4_sctp_all',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': mac_ipv4_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv4_sctp_toeplitz_basic_pkt['ipv4-sctp'][0],\n+ mac_ipv4_sctp_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+#mac_ipv6\n+mac_ipv6_l2_src = {\n+ 'sub_casename': 'mac_ipv6_l2_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types eth l2-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'],\n+ 'action': {'save_hash': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'],\n+ 'action': {'save_hash': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'],\n+ 'action': {'save_hash': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'],\n+ 'action': {'save_hash': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/UDP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'][0],\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-frag'][0],\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'][0],\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-udp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_l2_dst = {\n+ 'sub_casename': 'mac_ipv6_l2dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types eth l2-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'],\n+ 'action': {'save_hash': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'],\n+ 'action': {'save_hash': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2027\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'],\n+ 'action': {'save_hash': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2027\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'],\n+ 'action': {'save_hash': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2027\")/UDP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'][0],\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-frag'][0],\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'][0],\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-udp'][0],\n+ ],\n+ 'action': {'check_no_hash': ''},\n+ },\n+ ],\n+}\n+\n+mac_ipv6_l2src_l2dst = {\n+ 'sub_casename': 'mac_ipv6_l2src_l2dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types eth end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'],\n+ 'action': {'save_hash': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'],\n+ 'action': {'save_hash': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'],\n+ 'action': {'save_hash': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'],\n+ 'action': {'save_hash': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/UDP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'][0],\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-frag'][0],\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'][0],\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-udp'][0],\n+ ],\n+ 'action': {'check_no_hash': ''},\n+ },\n+ ],\n+}\n+\n+mac_ipv6_l3_src = {\n+ 'sub_casename': 'mac_ipv6_l3src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'],\n+ 'action': {'save_hash': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'],\n+ 'action': {'save_hash': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'],\n+ 'action': {'save_hash': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'],\n+ 'action': {'save_hash': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['nvgre'],\n+ 'action': {'save_hash': 'nvgre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'nvgre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'nvgre'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'][0],\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-frag'][0],\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'][0],\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-udp'][0],\n+ mac_ipv6_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': {'check_no_hash': ''},\n+ },\n+ ],\n+}\n+\n+mac_ipv6_l3_dst = {\n+ 'sub_casename': 'mac_ipv6_l3dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'],\n+ 'action': {'save_hash': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'],\n+ 'action': {'save_hash': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'],\n+ 'action': {'save_hash': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'],\n+ 'action': {'save_hash': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['nvgre'],\n+ 'action': {'save_hash': 'nvgre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'nvgre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'nvgre'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'][0],\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-frag'][0],\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'][0],\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-udp'][0],\n+ mac_ipv6_toeplitz_basic_pkt['nvgre'][0],\n+ ],\n+ 'action': {'check_no_hash': ''},\n+ },\n+ ],\n+}\n+\n+mac_ipv6_all = {\n+ 'sub_casename': 'mac_ipv6_all',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'],\n+ 'action': {'save_hash': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-frag'],\n+ 'action': {'save_hash': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'],\n+ 'action': {'save_hash': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['ipv6-udp'],\n+ 'action': {'save_hash': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_basic_pkt['nvgre'],\n+ 'action': {'save_hash': 'nvgre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'nvgre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'nvgre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'nvgre'},\n+ },\n+ {\n+ 'send_packet': mac_ipv6_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-nonfrag'][0],\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-frag'][0],\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-icmp'][0],\n+ mac_ipv6_toeplitz_basic_pkt['ipv6-udp'][0],\n+ mac_ipv6_toeplitz_basic_pkt['nvgre'][0]\n+ ],\n+ 'action': {'check_no_hash': ''},\n+ },\n+ ],\n+}\n+\n+#mac_ipv6_udp\n+mac_ipv6_udp_l2_src = {\n+ 'sub_casename': 'mac_ipv6_udp_l2_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/UDP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_udp_l2_dst = {\n+ 'sub_casename': 'mac_ipv6_udp_l2_dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/UDP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_udp_l2src_l2dst = {\n+ 'sub_casename': 'mac_ipv6_udp_l2src_l2dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/UDP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_udp_l3_src = {\n+ 'sub_casename': 'mac_ipv6_udp_l3_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0],\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_udp_l3_dst = {\n+ 'sub_casename': 'mac_ipv6_udp_l3_dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0],\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_udp_l3src_l4src = {\n+ 'sub_casename': 'mac_ipv6_udp_l3src_l4src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0],\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_udp_l3src_l4dst = {\n+ 'sub_casename': 'mac_ipv6_udp_l3src_l4dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0],\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_udp_l3dst_l4src = {\n+ 'sub_casename': 'mac_ipv6_udp_l3dst_l4src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0],\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_udp_l3dst_l4dst = {\n+ 'sub_casename': 'mac_ipv6_udp_l3dst_l4dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0],\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_udp_l4_src = {\n+ 'sub_casename': 'mac_ipv6_udp_l4_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0],\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_udp_l4_dst = {\n+ 'sub_casename': 'mac_ipv6_udp_l3_dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0],\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_udp_all = {\n+ 'sub_casename': 'mac_ipv6_udp_all',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_udp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv6-udp'][0],\n+ mac_ipv6_udp_toeplitz_basic_pkt['ipv4_udp_vxlan_ipv6_udp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+#mac_ipv6_tcp\n+mac_ipv6_tcp_l2_src = {\n+ 'sub_casename': 'mac_ipv6_tcp_l2_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/TCP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_tcp_l2_dst = {\n+ 'sub_casename': 'mac_ipv6_tcp_l2_dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/TCP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_tcp_l2src_l2dst = {\n+ 'sub_casename': 'mac_ipv6_tcp_l2src_l2dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types eth end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/TCP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_tcp_l3_src = {\n+ 'sub_casename': 'mac_ipv6_tcp_l3_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/TCP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/TCP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0],\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_tcp_l3_dst = {\n+ 'sub_casename': 'mac_ipv6_tcp_l3_dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0],\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n \n+mac_ipv6_tcp_l3src_l4src = {\n+ 'sub_casename': 'mac_ipv6_tcp_l3src_l4src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0],\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_tcp_l3src_l4dst = {\n+ 'sub_casename': 'mac_ipv6_tcp_l3src_l4dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0],\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_tcp_l3dst_l4src = {\n+ 'sub_casename': 'mac_ipv6_tcp_l3dst_l4src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0],\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_tcp_l3dst_l4dst = {\n+ 'sub_casename': 'mac_ipv6_tcp_l3dst_l4dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0],\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_tcp_l4_src = {\n+ 'sub_casename': 'mac_ipv6_tcp_l4_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l4-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0],\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_tcp_l4_dst = {\n+ 'sub_casename': 'mac_ipv6_tcp_l3_dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l4-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0],\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_tcp_all = {\n+ 'sub_casename': 'mac_ipv6_tcp_all',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_tcp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv6-tcp'][0],\n+ mac_ipv6_tcp_toeplitz_basic_pkt['ipv4_tcp_vxlan_ipv6_tcp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+#mac_ipv6_sctp\n+mac_ipv6_sctp_l2_src = {\n+ 'sub_casename': 'mac_ipv6_sctp_l2_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types eth l2-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/SCTP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_sctp_l2_dst = {\n+ 'sub_casename': 'mac_ipv6_sctp_l2_dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types eth l2-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/SCTP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_sctp_l2src_l2dst = {\n+ 'sub_casename': 'mac_ipv6_sctp_l2src_l2dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types eth end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2923\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2025\")/SCTP(sport=25,dport=99)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_sctp_l3_src = {\n+ 'sub_casename': 'mac_ipv6_sctp_l3_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/SCTP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/SCTP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0],\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_sctp_l3_dst = {\n+ 'sub_casename': 'mac_ipv6_sctp_l3_dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=32,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0],\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_sctp_l3src_l4src = {\n+ 'sub_casename': 'mac_ipv6_sctp_l3src_l4src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-src-only l4-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0],\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_sctp_l3src_l4dst = {\n+ 'sub_casename': 'mac_ipv6_sctp_l3src_l4dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-src-only l4-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0],\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_sctp_l3dst_l4src = {\n+ 'sub_casename': 'mac_ipv6_sctp_l3dst_l4src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only l4-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0],\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_sctp_l3dst_l4dst = {\n+ 'sub_casename': 'mac_ipv6_sctp_l3dst_l4dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only l4-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0],\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_sctp_l4_src = {\n+ 'sub_casename': 'mac_ipv6_sctp_l4_src',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l4-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0],\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_sctp_l4_dst = {\n+ 'sub_casename': 'mac_ipv6_sctp_l3_dst',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l4-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0],\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+\n+mac_ipv6_sctp_all = {\n+ 'sub_casename': 'mac_ipv6_sctp_all',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:53\", dst=\"68:05:CA:BB:27:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'],\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=32,dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=33)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': mac_ipv6_sctp_toeplitz_non_basic_pkt,\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': [\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv6-sctp'][0],\n+ mac_ipv6_sctp_toeplitz_basic_pkt['ipv4_sctp_vxlan_ipv6_sctp'][0],\n+ ],\n+ 'action': 'check_no_hash',\n+ },\n+ ],\n+}\n+# toeplitz related data end\n+\n+mac_ipv4_1 = [mac_ipv4_l2_src, mac_ipv4_l2_dst, mac_ipv4_l2src_l2dst]\n+mac_ipv4_2 = [mac_ipv4_l3_src, mac_ipv4_l3_dst, mac_ipv4_all]\n+\n+mac_ipv4_udp = [mac_ipv4_udp_l2_src, mac_ipv4_udp_l2_dst, mac_ipv4_udp_l2src_l2dst,\n+ mac_ipv4_udp_l3_src, mac_ipv4_udp_l3_dst, mac_ipv4_udp_l3src_l4src,\n+ mac_ipv4_udp_l3src_l4dst, mac_ipv4_udp_l3dst_l4src, mac_ipv4_udp_l3dst_l4dst,\n+ mac_ipv4_udp_l4_src, mac_ipv4_udp_l4_dst, mac_ipv4_udp_all]\n+\n+mac_ipv4_tcp = [mac_ipv4_tcp_l2_src, mac_ipv4_tcp_l2_dst, mac_ipv4_tcp_l2src_l2dst,\n+ mac_ipv4_tcp_l3_src, mac_ipv4_tcp_l3_dst, mac_ipv4_tcp_l3src_l4src,\n+ mac_ipv4_tcp_l3src_l4dst, mac_ipv4_tcp_l3dst_l4src, mac_ipv4_tcp_l3dst_l4dst,\n+ mac_ipv4_tcp_l4_src, mac_ipv4_tcp_l4_dst, mac_ipv4_tcp_all]\n+\n+mac_ipv4_sctp = [mac_ipv4_sctp_l2_src, mac_ipv4_sctp_l2_dst, mac_ipv4_sctp_l2src_l2dst,\n+ mac_ipv4_sctp_l3_src, mac_ipv4_sctp_l3_dst, mac_ipv4_sctp_l3src_l4src,\n+ mac_ipv4_sctp_l3src_l4dst, mac_ipv4_sctp_l3dst_l4src, mac_ipv4_sctp_l3dst_l4dst,\n+ mac_ipv4_sctp_l4_src, mac_ipv4_sctp_l4_dst, mac_ipv4_sctp_all]\n+\n+mac_ipv6 = [mac_ipv6_l2_src, mac_ipv6_l2_dst, mac_ipv6_l2src_l2dst, mac_ipv6_l3_src, mac_ipv6_l3_dst, mac_ipv6_all]\n+\n+mac_ipv6_udp = [mac_ipv6_udp_l2_src, mac_ipv6_udp_l2_dst, mac_ipv6_udp_l2src_l2dst,\n+ mac_ipv6_udp_l3_src, mac_ipv6_udp_l3_dst, mac_ipv6_udp_l3src_l4src,\n+ mac_ipv6_udp_l3src_l4dst, mac_ipv6_udp_l3dst_l4src, mac_ipv6_udp_l3dst_l4dst,\n+ mac_ipv6_udp_l4_src, mac_ipv6_udp_l4_dst, mac_ipv6_udp_all]\n+\n+mac_ipv6_tcp = [mac_ipv6_tcp_l2_src, mac_ipv6_tcp_l2_dst, mac_ipv6_tcp_l2src_l2dst,\n+ mac_ipv6_tcp_l3_src, mac_ipv6_tcp_l3_dst, mac_ipv6_tcp_l3src_l4src,\n+ mac_ipv6_tcp_l3src_l4dst, mac_ipv6_tcp_l3dst_l4src, mac_ipv6_tcp_l3dst_l4dst,\n+ mac_ipv6_tcp_l4_src, mac_ipv6_tcp_l4_dst, mac_ipv6_tcp_all]\n+\n+mac_ipv6_sctp = [mac_ipv6_sctp_l2_src, mac_ipv6_sctp_l2_dst, mac_ipv6_sctp_l2src_l2dst,\n+ mac_ipv6_sctp_l3_src, mac_ipv6_sctp_l3_dst, mac_ipv6_sctp_l3src_l4src,\n+ mac_ipv6_sctp_l3src_l4dst, mac_ipv6_sctp_l3dst_l4src, mac_ipv6_sctp_l3dst_l4dst,\n+ mac_ipv6_sctp_l4_src, mac_ipv6_sctp_l4_dst, mac_ipv6_sctp_all]\n+\n+# symmetric related data start\n+mac_ipv4_symmetric = {\n+ 'sub_casename': 'mac_ipv4_all',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end',\n+ 'pre-test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-nonfrag-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-nonfrag-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\",frag=6)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-frag-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\",frag=6)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-frag-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/ICMP()/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-icmp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-icmp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-tcp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-tcp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/UDP()/VXLAN()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp-vlan-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/UDP()/VXLAN()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp-vlan-pre'},\n+ },\n+ ],\n+ 'test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\",frag=6)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\",frag=6)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/ICMP()/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-tcp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-tcp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/UDP()/VXLAN()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp-vlan'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/UDP()/VXLAN()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-udp-vlan'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2928\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2928\")/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6'},\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)',\n+ 'action': {'save_or_no_hash': 'ipv4-nonfrag-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv4-nonfrag-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\",frag=6)/(\"X\"*480)',\n+ 'action': {'save_or_no_hash': 'ipv4-frag-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\",frag=6)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv4-frag-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/ICMP()/(\"X\"*480)',\n+ 'action': {'save_or_no_hash': 'ipv4-icmp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv4-icmp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_or_no_hash': 'ipv4-tcp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv4-tcp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/UDP()/VXLAN()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_or_no_hash': 'ipv4-udp-vlan-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/UDP()/VXLAN()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv4-udp-vlan-post'},\n+ },\n+ ],\n+}\n+\n+mac_ipv4_udp_symmetric = {\n+ 'sub_casename': 'mac_ipv4_udp_all',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end',\n+ 'pre-test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'nvgre-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'nvgre-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'nvgre-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'nvgre-pre'},\n+ },\n+ ],\n+ 'test': [\n+\t\t{\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'nvgre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'nvgre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'nvgre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'nvgre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-tcp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-tcp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'nvgre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'nvgre'},\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv4-udp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv4-udp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'nvgre-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'nvgre-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'nvgre-post'},\n+ },\n+ ],\n+}\n+\n+mac_ipv4_tcp_symmetric = {\n+ 'sub_casename': 'mac_ipv4_tcp_all',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp end key_len 0 queues end / end',\n+ 'pre-test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-tcp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-tcp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-tcp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-tcp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-tcp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-tcp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-tcp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-tcp-pre'},\n+ },\n+ ],\n+ 'test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-tcp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-tcp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-tcp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-tcp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-tcp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv4-tcp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv4-tcp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv4-tcp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/UDP()/VXLAN()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/UDP()/VXLAN()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-udp'},\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-tcp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv4-tcp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv4-tcp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-tcp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv4-udp-vxlan-eth-ipv4-tcp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv4-udp-vxlan-eth-ipv4-tcp-post'},\n+ },\n+ ],\n+}\n+\n+mac_ipv4_sctp_symmetric = {\n+ 'sub_casename': 'mac_ipv4_sctp_all',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss func symmetric_toeplitz types ipv4-sctp end key_len 0 queues end / end',\n+ 'pre-test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-sctp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-sctp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-sctp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/SCTP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-sctp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-sctp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-sctp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-sctp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/SCTP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv4-sctp-pre'},\n+ },\n+ ],\n+ 'test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-sctp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-sctp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-sctp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/SCTP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-sctp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-sctp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv4-sctp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv4-sctp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/SCTP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv4-sctp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp'},\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-sctp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv4-sctp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/SCTP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv4-sctp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv4-sctp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv4-udp-vxlan-eth-ipv4-sctp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/SCTP(sport=23,dport=22)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv4-udp-vxlan-eth-ipv4-sctp-post'},\n+ },\n+ ],\n+}\n+\n+mac_ipv6_symmetric = {\n+ 'sub_casename': 'mac_ipv6_all',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end',\n+ 'pre-test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-nonfrag-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-nonfrag-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-frag-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-frag-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-icmp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-icmp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-udp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-udp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv6-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/UDP()/VXLAN()/Ether()/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp-vxlan-eth-ipv6-pre'},\n+ },\n+ ],\n+ 'test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-frag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-icmp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp-vxlan-eth-ipv6'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/UDP()/VXLAN()/Ether()/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-udp-vxlan-eth-ipv6'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv4-nonfrag'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-nonfrag'},\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'save_or_no_hash': 'ipv6-nonfrag-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv6-nonfrag-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'save_or_no_hash': 'ipv6-frag-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv6-frag-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)',\n+ 'action': {'save_or_no_hash': 'ipv6-icmp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/ICMP()/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv6-icmp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_or_no_hash': 'ipv6-udp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv6-udp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/UDP()/VXLAN()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'save_or_no_hash': 'ipv4-udp-vxlan-eth-ipv6-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/UDP()/VXLAN()/Ether()/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv4-udp-vxlan-eth-ipv6-post'},\n+ },\n+ ],\n+}\n+\n+mac_ipv6_udp_symmetric = {\n+ 'sub_casename': 'mac_ipv6_udp_all',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / udp / end actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues end / end',\n+ 'pre-test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-udp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-udp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'nvgre-eth-ipv6-udp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'nvgre-eth-ipv6-udp-pre'},\n+ },\n+ ],\n+ 'test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'nvgre-eth-ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'nvgre-eth-ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-tcp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-tcp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'nvgre-eth-ipv6-tcp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'nvgre-eth-ipv6-tcp'},\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-udp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv6-udp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'nvgre-eth-ipv6-udp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'nvgre-eth-ipv6-udp-post'},\n+ },\n+ ],\n+}\n+\n+mac_ipv6_tcp_symmetric = {\n+ 'sub_casename': 'mac_ipv6_tcp_all',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end',\n+ 'pre-test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-tcp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-tcp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'nvgre-eth-ipv6-tcp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'nvgre-eth-ipv6-tcp-pre'},\n+ },\n+ ],\n+ 'test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-tcp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-tcp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'nvgre-eth-ipv6-tcp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'nvgre-eth-ipv6-tcp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'nvgre-eth-ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'nvgre-eth-ipv6-udp'},\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-tcp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv6-tcp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'nvgre-eth-ipv6-tcp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'nvgre-eth-ipv6-tcp-post'},\n+ },\n+ ],\n+}\n+\n+mac_ipv6_sctp_symmetric = {\n+ 'sub_casename': 'mac_ipv6_sctp_all',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss func symmetric_toeplitz types ipv6-sctp end key_len 0 queues end / end',\n+ 'pre-test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-sctp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-sctp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'nvgre-eth-ipv6-sctp-pre'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'nvgre-eth-ipv6-sctp-pre'},\n+ },\n+ ],\n+ 'test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-sctp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'ipv6-sctp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'nvgre-eth-ipv6-sctp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_same': 'nvgre-eth-ipv6-sctp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_hash_different': 'ipv6-udp'},\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'ipv6-sctp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'ipv6-sctp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'save_hash': 'nvgre-eth-ipv6-sctp-post'},\n+ },\n+ {\n+ 'send_packet': 'Ether(src=\"00:11:22:33:44:55\", dst=\"68:05:CA:BB:26:E0\")/IP()/NVGRE()/Ether()/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/SCTP(sport=22,dport=23)/(\"X\"*480)',\n+ 'action': {'check_no_hash_or_different': 'nvgre-eth-ipv6-sctp-post'},\n+ },\n+ ],\n+}\n+# symmetric related data end\n+\n+mac_l3_address_switched = {\n+ 'sub_casename': 'mac_l3_address_switched',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern end actions rss func simple_xor key_len 0 queues end / end',\n+ 'pre-test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)',\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)',\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=22, dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/(\"X\" * 80)',\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\" * 80)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/UDP(sport=22, dport=23)/(\"X\" * 80)',\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22, dport=23)/(\"X\" * 80)',\n+ 'action': 'check_hash_different',\n+ },\n+ ],\n+ 'test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)',\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)',\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=22, dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/(\"X\" * 80)',\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\" * 80)',\n+ 'action': 'check_hash_same',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/UDP(sport=22, dport=23)/(\"X\" * 80)',\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22, dport=23)/(\"X\" * 80)',\n+ 'action': 'check_hash_same',\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)',\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)',\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=22, dport=23)/(\"X\"*480)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/(\"X\" * 80)',\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\" * 80)',\n+ 'action': 'check_hash_different',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\")/UDP(sport=22, dport=23)/(\"X\" * 80)',\n+ 'action': 'save_hash',\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/UDP(sport=22, dport=23)/(\"X\" * 80)',\n+ 'action': 'check_hash_different',\n+ },\n+ ],\n+}\n \n-test_results = OrderedDict()\n+mac_global_simple_xor = [mac_l3_address_switched]\n+\n+ipv6_32bit_prefix_l3_src_only = {\n+ 'sub_casename': 'ipv6_32bit_prefix_l3_src_only',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre32 l3-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'save_hash': 'ipv6-32bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe83:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_different': 'ipv6-32bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:b6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_same': 'ipv6-32bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/UDP(sport=1234, dport=5678)/Raw(\"x\"*64)',\n+ 'action': {'check_hash_same': 'ipv6-32bit'},\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_no_hash_or_different': 'ipv6-32bit'},\n+ },\n+ ],\n+}\n+\n+ipv6_32bit_prefix_l3_dst_only = {\n+ 'sub_casename': 'ipv6_32bit_prefix_l3_dst_only',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre32 l3-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'save_hash': 'ipv6-32bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe83:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_different': 'ipv6-32bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:b6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_same': 'ipv6-32bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/UDP(sport=1234, dport=5678)/Raw(\"x\"*64)',\n+ 'action': {'check_hash_same': 'ipv6-32bit'},\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81::a6bf:1ff:fe1c:806\", dst=\"fe82::a6bf:1ff:fe1c:806\")/Raw(\"x\"*64)',\n+ 'action': {'check_no_hash_or_different': 'ipv6-32bit'},\n+ },\n+ ],\n+}\n+\n+ipv6_32bit_prefix_l3_src_dst_only = {\n+ 'sub_casename': 'ipv6_32bit_prefix_l3_src_dst_only',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre32 l3-src-only l3-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'save_hash': 'ipv6-32bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe83:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_different': 'ipv6-32bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe83:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_different': 'ipv6-32bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:b6bf:1ff:fe1c::806\", dst=\"fe82:1:b6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_same': 'ipv6-32bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/UDP(sport=1234, dport=5678)/Raw(\"x\"*64)',\n+ 'action': {'check_hash_same': 'ipv6-32bit'},\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81::a6bf:1ff:fe1c:806\", dst=\"fe82::a6bf:1ff:fe1c:806\")/Raw(\"x\"*64)',\n+ 'action': {'check_no_hash_or_different': 'ipv6-32bit'},\n+ },\n+ ],\n+}\n+\n+ipv6_32bit_prefix = [ipv6_32bit_prefix_l3_src_only, ipv6_32bit_prefix_l3_dst_only, ipv6_32bit_prefix_l3_src_dst_only]\n+\n+ipv6_48bit_prefix_l3_src_only = {\n+ 'sub_casename': 'ipv6_48bit_prefix_l3_src_only',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre48 l3-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'save_hash': 'ipv6-48bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:b6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_different': 'ipv6-48bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:2ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_same': 'ipv6-48bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/UDP(sport=1234, dport=5678)/Raw(\"x\"*64)',\n+ 'action': {'check_hash_same': 'ipv6-48bit'},\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_no_hash_or_different': 'ipv6-48bit'},\n+ },\n+ ],\n+}\n+\n+ipv6_48bit_prefix_l3_dst_only = {\n+ 'sub_casename': 'ipv6_48bit_prefix_l3_dst_only',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre48 l3-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'save_hash': 'ipv6-48bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe83:1:b6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_different': 'ipv6-48bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:2ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_same': 'ipv6-48bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/UDP(sport=1234, dport=5678)/Raw(\"x\"*64)',\n+ 'action': {'check_hash_same': 'ipv6-48bit'},\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_no_hash_or_different': 'ipv6-48bit'},\n+ },\n+ ],\n+}\n+\n+ipv6_48bit_prefix_l3_src_dst_only = {\n+ 'sub_casename': 'ipv6_48bit_prefix_l3_src_dst_only',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre48 l3-src-only l3-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'save_hash': 'ipv6-48bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:b6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_different': 'ipv6-48bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:b6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_different': 'ipv6-48bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:2ff:fe1c::806\", dst=\"fe82:1:a6bf:2ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_same': 'ipv6-48bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/UDP(sport=1234, dport=5678)/Raw(\"x\"*64)',\n+ 'action': {'check_hash_same': 'ipv6-48bit'},\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81::a6bf:1ff:fe1c:806\", dst=\"fe82::a6bf:1ff:fe1c:806\")/Raw(\"x\"*64)',\n+ 'action': {'check_no_hash_or_different': 'ipv6-48bit'},\n+ },\n+ ],\n+}\n+\n+ipv6_48bit_prefix = [ipv6_48bit_prefix_l3_src_only, ipv6_48bit_prefix_l3_dst_only, ipv6_48bit_prefix_l3_src_dst_only]\n+\n+ipv6_64bit_prefix_l3_src_only = {\n+ 'sub_casename': 'ipv6_64bit_prefix_l3_src_only',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre64 l3-src-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'save_hash': 'ipv6-64bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe83:1:a6bf:2ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_different': 'ipv6-64bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:ee1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_same': 'ipv6-64bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/UDP(sport=1234, dport=5678)/Raw(\"x\"*64)',\n+ 'action': {'check_hash_same': 'ipv6-64bit'},\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_no_hash_or_different': 'ipv6-64bit'},\n+ },\n+ ],\n+}\n+\n+ipv6_64bit_prefix_l3_dst_only = {\n+ 'sub_casename': 'ipv6_64bit_prefix_l3_dst_only',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre64 l3-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'save_hash': 'ipv6-64bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe83:1:a6bf:2ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_different': 'ipv6-64bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:ee1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_same': 'ipv6-64bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/UDP(sport=1234, dport=5678)/Raw(\"x\"*64)',\n+ 'action': {'check_hash_same': 'ipv6-64bit'},\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_no_hash_or_different': 'ipv6-64bit'},\n+ },\n+ ],\n+}\n+\n+ipv6_64bit_prefix_l3_src_dst_only = {\n+ 'sub_casename': 'ipv6_64bit_prefix_l3_src_dst_only',\n+ 'port_id': 0,\n+ 'rule': 'flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-pre64 l3-src-only l3-dst-only end key_len 0 queues end / end',\n+ 'test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'save_hash': 'ipv6-64bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:2ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_different': 'ipv6-64bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:2ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_different': 'ipv6-64bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:ee1c::806\", dst=\"fe82:1:a6bf:1ff:ee1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_hash_same': 'ipv6-64bit'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/UDP(sport=1234, dport=5678)/Raw(\"x\"*64)',\n+ 'action': {'check_hash_same': 'ipv6-64bit'},\n+ },\n+ ],\n+ 'post-test': [\n+ {\n+ 'send_packet': 'Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(src=\"fe81:1:a6bf:1ff:fe1c::806\", dst=\"fe82:1:a6bf:1ff:fe1c::806\")/Raw(\"x\"*64)',\n+ 'action': {'check_no_hash_or_different': 'ipv6-64bit'},\n+ },\n+ ],\n+}\n+\n+ipv6_64bit_prefix = [ipv6_64bit_prefix_l3_src_only, ipv6_64bit_prefix_l3_dst_only, ipv6_64bit_prefix_l3_src_dst_only]\n \n class AdvancedRSSTest(TestCase):\n \n def set_up_all(self):\n \"\"\"\n Run at the start of each test suite.\n- Generic filter Prerequistites\n+ prerequisites.\n \"\"\"\n+ # Based on h/w type, choose how many ports to use\n self.dut_ports = self.dut.get_ports(self.nic)\n- # Verify that enough ports are available\n- self.verify(len(self.dut_ports) >= 1, \"Insufficient ports\")\n- #self.cores = \"1S/8C/1T\"\n- self.pmdout = PmdOutput(self.dut)\n-\n- localPort = self.tester.get_local_port(self.dut_ports[0])\n- self.__tx_iface = self.tester.get_interface(localPort)\n- self.pf_interface = self.dut.ports_info[self.dut_ports[0]]['intf']\n- self.pf_mac = self.dut.get_mac_address(0)\n- self.pf_pci = self.dut.ports_info[self.dut_ports[0]]['pci']\n- self.verify(self.nic in [\"columbiaville_25g\",\"columbiaville_100g\"], \"%s nic not support ethertype filter\" % self.nic)\n-\n+ self.verify(len(self.dut_ports) >= 2, \"Insufficient ports for testing\")\n+ # Verify that enough threads are available\n+ cores = self.dut.get_core_list(\"1S/4C/1T\")\n+ self.verify(cores is not None, \"Insufficient cores for speed testing\")\n+ self.ports_socket = self.dut.get_numa_id(self.dut_ports[0])\n+ self.tester_port0 = self.tester.get_local_port(self.dut_ports[0])\n+ self.tester_port1 = self.tester.get_local_port(self.dut_ports[1])\n+ self.tester_iface0 = self.tester.get_interface(self.tester_port0)\n+ self.tester_iface1 = self.tester.get_interface(self.tester_port1)\n+ self.pci0 = self.dut.ports_info[self.dut_ports[0]]['pci']\n+ self.pci1 = self.dut.ports_info[self.dut_ports[1]]['pci']\n+ self.pass_flag = 'passed'\n+ self.fail_flag = 'failed'\n \n+ self.pkt = Packet()\n+ self.pmd_output = PmdOutput(self.dut)\n+ self.package_version = self.launch_testpmd()\n+ self.symmetric = False\n+ self.rxq = 64\n+ self.rssprocess = RssProcessing(self, self.pmd_output, [self.tester_iface0, self.tester_iface1], self.rxq)\n+ self.logger.info('rssprocess.tester_ifaces: {}'.format(self.rssprocess.tester_ifaces))\n+ self.logger.info('rssprocess.test_case: {}'.format(self.rssprocess.test_case))\n \n def set_up(self):\n \"\"\"\n Run before each test case.\n \"\"\"\n- self.dut.kill_all()\n+ if self.symmetric:\n+ self.pmd_output.execute_cmd(\"port config all rss all\")\n+ self.pmd_output.execute_cmd(\"start\")\n \n- def tear_down(self):\n- \"\"\"\n- Run after each test case.\n- \"\"\"\n- self.dut.kill_all()\n+ def launch_testpmd(self, symmetric=False, package='comms'):\n+ if symmetric:\n+ param = \"--rxq=64 --txq=64\"\n+ else:\n+ param = \"--rxq=64 --txq=64 --disable-rss --rxd=384 --txd=384\"\n+ out = self.pmd_output.start_testpmd(cores=\"1S/4C/1T\", param=param,\n+ eal_param=f\"-w {self.pci0}\", socket=self.ports_socket)\n+ self.symmetric = symmetric\n+ if symmetric is True:\n+ '''\n+ symmetric may be False/True/2(any other not negative value)\n+ False: disable rss\n+ True: enable rss and execute port config all rss\n+ 2: enable rss and do not execute port config all rss\n+ '''\n+ # Need config rss in setup\n+ self.pmd_output.execute_cmd(\"port config all rss all\")\n+ self.pmd_output.execute_cmd(\"set fwd rxonly\")\n+ self.pmd_output.execute_cmd(\"set verbose 1\")\n+ res = self.pmd_output.wait_link_status_up('all', timeout=15)\n+ self.verify(res is True, 'there have port link is down')\n \n- \n- def tear_down_all(self):\n- \"\"\"\n- Run after each test suite.\n- \"\"\"\n- self.dut.kill_all()\n+ def switch_testpmd(self, symmetric=True):\n+ if symmetric != self.symmetric:\n+ self.pmd_output.quit()\n+ self.launch_testpmd(symmetric=symmetric)\n+ self.pmd_output.execute_cmd(\"start\")\n \n+ def test_mac_ipv4(self):\n+ self.switch_testpmd(symmetric=False)\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_1)\n+ self.pmd_output.execute_cmd(\"rx_vxlan_port add 4789 0\")\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_2)\n \n- def create_testpmd_command(self):\n- \"\"\"\n- Create testpmd command for non-pipeline mode\n- \"\"\"\n- #Prepare testpmd EAL and parameters \n- all_eal_param = self.dut.create_eal_parameters(ports=[self.pf_pci])\n- print(all_eal_param) #print eal parameters\n- command = self.dut.apps_name['test-pmd'] + all_eal_param + \" -- -i --rxq=64 --txq=64\"\n- return command\n-\n- def _rte_flow_validate_pattern(self, test_vectors, command, is_vxlan):\n-\n- out = self.dut.send_expect(command, \"testpmd> \", 120)\n- self.logger.debug(out) #print the log\n- self.dut.send_expect(\"port config 0 rss-hash-key ipv4 1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd\", \"testpmd> \", 15)\n- if is_vxlan:\n- self.dut.send_expect(\"rx_vxlan_port add 4789 0\", \"testpmd> \", 15)\n- self.dut.send_expect(\"set fwd rxonly\", \"testpmd> \", 15)\n- self.dut.send_expect(\"set verbose 1\", \"testpmd> \", 15)\n-\n- self.count = 1\n- self.mac_count = 100\n- result_dic = dict()\n- result_flag = 0\n- for tv in test_vectors:\n- out = self.dut.send_expect(tv[\"rte_flow_pattern\"], \"testpmd> \", 15) #create a rule\n- print(out)\n- self.dut.send_expect(\"start\", \"testpmd> \", 15)\n- time.sleep(2)\n- tv[\"check_func_param\"][\"expect_port\"] = self.dut_ports[0]\n- print(\"expect_port is\", self.dut_ports[0])\n-\n- #send a packet\n- if isinstance(tv[\"scapy_str\"], list):\n- pkt = packet.Packet()\n- pkt.update_pkt(tv[\"scapy_str\"])\n- pkt.send_pkt(self.tester, tx_port=self.__tx_iface, count=self.count)\n- else:\n- for index in range(10):\n- pkt = Packet(pkt_str=tv[\"scapy_str\"])\n- pkt.send_pkt(self.tester, tx_port=self.__tx_iface, count=self.count)\n- print(\"packet:\")\n- print(tv[\"scapy_str\"])\n-\n- if \"symmetric\" or \"xor\" in tv[\"name\"]:\n- out = self.dut.get_session_output(timeout=3)\n- self.dut.send_expect(\"stop\", \"testpmd> \", 60)\n- else:\n- out = self.dut.send_expect(\"stop\", \"testpmd> \", 60)\n- result, ret_log = rfc.check_rx_tx_packets_match(out, self.mac_count)\n- self.verify(result is True, ret_log)\n- ret_result, log_msg = tv[\"check_func\"](out)\n- print(\"%s result is: %s ,%s \" % (tv[\"name\"], ret_result, log_msg))\n-\n- result_dic[tv[\"name\"]] = ret_result\n-\n- print(result_dic)\n-\n- if False in result_dic.values():\n- result_flag = 1\n-\n- self.dut.send_expect(\"flow flush %d\" % self.dut_ports[0], \"testpmd> \")\n- self.dut.send_expect(\"quit\", \"#\")\n- self.verify(result_flag == 0, \"Some case failed\")\n-\n- def test_advance_rss_ipv4(self):\n- command = self.create_testpmd_command()\n- self._rte_flow_validate_pattern(tvs_mac_rss_ipv4, command, is_vxlan = True)\n-\n- def test_advance_rss_ipv4_port(self): \n- command = self.create_testpmd_command()\n- self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_port, command, is_vxlan = True)\n-\n- def test_advance_rss_ipv4_nvgre(self): \n- command = self.create_testpmd_command()\n- self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_nvgre, command, is_vxlan = True)\n-\n- def test_advance_rss_ipv4_vxlan(self): \n- command = self.create_testpmd_command()\n- self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_vxlan, command, is_vxlan = True)\n-\n- def test_advance_rss_ipv6(self): \n- command = self.create_testpmd_command()\n- self._rte_flow_validate_pattern(tvs_mac_rss_ipv6, command, is_vxlan = True)\n-\n- def test_advance_rss_ipv4_pppoe(self): \n- command = self.create_testpmd_command()\n- self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_pppoe, command, is_vxlan = True)\n-\n- def test_advance_rss_ipv4_gtp(self): \n- command = self.create_testpmd_command()\n- self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_gtp, command, is_vxlan = True)\n-\n- def test_rss_ipv4_symetric_toeplitz(self): \n- command = self.create_testpmd_command()\n- self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_symmetric_toeplitz, command, is_vxlan = True)\n- \n- def test_rss_ipv6_symetric_toeplitz(self): \n- command = self.create_testpmd_command()\n- self._rte_flow_validate_pattern(tvs_mac_rss_ipv6_symmetric_toeplitz, command, is_vxlan = True)\n- \n- def test_rss_ipv4_symetric_toeplitz_nvgre(self): \n- command = self.create_testpmd_command()\n- self._rte_flow_validate_pattern(tvs_mac_rss_ipv4_symmetric_toeplitz_nvgre, command, is_vxlan = True)\n- \n- def test_rss_ipv6_symetric_toeplitz_nvgre(self): \n- command = self.create_testpmd_command()\n- self._rte_flow_validate_pattern(tvs_mac_rss_ipv6_symmetric_toeplitz_nvgre, command, is_vxlan = True)\n- \n- def test_rss_symetric_toeplitz_vxlan(self): \n- command = self.create_testpmd_command()\n- self._rte_flow_validate_pattern(tvs_mac_rss_symmetric_toeplitz_vxlan, command, is_vxlan = True)\n- \n- def test_rss_simple_xor(self): \n- command = self.create_testpmd_command()\n- self._rte_flow_validate_pattern(tvs_mac_rss_simple_xor, command, is_vxlan = True) \n+ def test_mac_ipv4_udp(self):\n+ self.switch_testpmd(symmetric=False)\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_udp)\n+\n+ def test_mac_ipv4_tcp(self):\n+ self.switch_testpmd(symmetric=False)\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_tcp)\n+\n+ def test_mac_ipv4_sctp(self):\n+ self.switch_testpmd(symmetric=False)\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_sctp)\n+\n+ def test_mac_ipv6(self):\n+ self.switch_testpmd(symmetric=False)\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6)\n+\n+ def test_mac_ipv6_udp(self):\n+ self.switch_testpmd(symmetric=False)\n+ self.pmd_output.execute_cmd(\"rx_vxlan_port add 4789 0\")\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_udp)\n+\n+ def test_mac_ipv6_tcp(self):\n+ self.switch_testpmd(symmetric=False)\n+ self.pmd_output.execute_cmd(\"rx_vxlan_port add 4789 0\")\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_tcp)\n+\n+ def test_mac_ipv6_sctp(self):\n+ self.switch_testpmd(symmetric=False)\n+ self.pmd_output.execute_cmd(\"rx_vxlan_port add 4789 0\")\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_sctp)\n+\n+ def test_symmetric_mac_ipv4(self):\n+ self.switch_testpmd(symmetric=2)\n+ self.pmd_output.execute_cmd(\"rx_vxlan_port add 4789 0\")\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_symmetric)\n+\n+ def test_symmetric_mac_ipv4_udp(self):\n+ self.switch_testpmd(symmetric=True)\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_udp_symmetric)\n+\n+ def test_symmetric_mac_ipv4_tcp(self):\n+ self.switch_testpmd(symmetric=True)\n+ self.pmd_output.execute_cmd(\"rx_vxlan_port add 4789 0\")\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_tcp_symmetric)\n+\n+ def test_symmetric_mac_ipv4_sctp(self):\n+ self.switch_testpmd(symmetric=True)\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_sctp_symmetric)\n+\n+ def test_symmetric_mac_ipv6(self):\n+ self.switch_testpmd(symmetric=2)\n+ self.pmd_output.execute_cmd(\"rx_vxlan_port add 4789 0\")\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_symmetric)\n+\n+ def test_symmetric_mac_ipv6_udp(self):\n+ self.switch_testpmd(symmetric=True)\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_udp_symmetric)\n+\n+ def test_symmetric_mac_ipv6_tcp(self):\n+ self.switch_testpmd(symmetric=True)\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_tcp_symmetric)\n \n+ def test_symmetric_mac_ipv6_sctp(self):\n+ self.switch_testpmd(symmetric=True)\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_sctp_symmetric)\n+\n+ def test_32bit_ipv6_prefix(self):\n+ self.switch_testpmd(symmetric=True)\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_32bit_prefix)\n+\n+ def test_48bit_ipv6_prefix(self):\n+ self.switch_testpmd(symmetric=True)\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_48bit_prefix)\n+\n+ def test_64bit_ipv6_prefix(self):\n+ self.switch_testpmd(symmetric=True)\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_64bit_prefix)\n+\n+ def test_global_simple_xor(self):\n+ self.switch_testpmd(symmetric=True)\n+ self.rssprocess.handle_rss_distribute_cases(cases_info=mac_global_simple_xor)\n+\n+ def test_negative_case(self):\n+ self.switch_testpmd(symmetric=False)\n+ rules = [\n+ 'flow create 0 ingress pattern eth / ipv4 / end actions rss types eth l3-src-only end key_len 0 queues end / end',\n+ 'flow create 0 ingress pattern eth / ipv4 / end actions rss types eth l3-src-only end key_len 0 queues end / end',\n+ 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end',\n+ 'flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end',\n+ 'flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv6 end key_len 0 queues end / end',\n+ 'flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 l3-src-only end key_len 0 queues end / end',\n+ 'flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types eth end key_len 0 queues end / end',\n+ ]\n+ for i in rules:\n+ out = self.pmd_output.execute_cmd(i, timeout=1)\n+ self.verify('ice_flow_create(): Failed to create flow' in out, \"rule %s create successfully\" % i)\n+\n+ rules_val = [\n+ 'flow validate 0 ingress pattern eth / ipv4 / end actions rss types eth l3-src-only end key_len 0 queues end / end',\n+ 'flow validate 0 ingress pattern eth / ipv4 / end actions rss types ipv4-udp end key_len 0 queues end / end',\n+ 'flow validate 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end',\n+ 'flow validate 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end',\n+ 'flow validate 0 ingress pattern eth / ipv4 / end actions rss types ipv6 end key_len 0 queues end / end',\n+ 'flow validate 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 l3-src-only end key_len 0 queues end / end',\n+ 'flow validate 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types eth end key_len 0 queues end / end',\n+ ]\n+ for i in rules_val:\n+ out = self.pmd_output.execute_cmd(i, timeout=1)\n+ self.verify('Invalid argument' in out, \"rule %s validate successfully\" % i)\n+\n+ def test_multirules(self):\n+ self.switch_testpmd(symmetric=True)\n+ #Subcase 1: two rules with same pattern but different hash input set, not hit default profile\n+ self.rssprocess.error_msgs = []\n+ self.logger.info('===================Test sub case: multirules subcase 1 ================')\n+ rule_id_0 = self.rssprocess.create_rule('flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end', check_stats=True)\n+ self.rssprocess.check_rule(port_id=0, rule_list=rule_id_0)\n+ tests = [\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/UDP(dport=45)/Raw(\"x\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.7\",dst=\"192.168.0.5\")/UDP(dport=45)/Raw(\"x\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp'},\n+ },\n+ ]\n+ self.rssprocess.handle_tests(tests, 0)\n+ rule_id_1 = self.rssprocess.create_rule('flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end', check_stats=True)\n+ self.rssprocess.check_rule(port_id=0, rule_list=rule_id_1)\n+ tests = [\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/UDP(dport=45)/Raw(\"x\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.7\",dst=\"192.168.0.5\")/UDP(dport=45)/Raw(\"x\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.7\")/UDP(dport=45)/Raw(\"x\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp'},\n+ },\n+ ]\n+ self.rssprocess.handle_tests(tests, 0)\n+ self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_1)\n+ self.rssprocess.check_rule(port_id=0)\n+ tests = [\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/UDP(dport=45)/Raw(\"x\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.9\")/UDP(dport=45)/Raw(\"x\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.7\",dst=\"192.168.0.9\")/UDP(dport=45)/Raw(\"x\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp'},\n+ },\n+ ]\n+ self.rssprocess.handle_tests(tests, 0)\n+ self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_0)\n+ self.rssprocess.handle_tests(tests, 0)\n+\n+ # Subcase 2: two rules with same pattern but different hash input set, hit default profile\n+ self.logger.info('===================Test sub case: multirules subcase 2 ================')\n+ rule_id_0 = self.rssprocess.create_rule('flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end', check_stats=True)\n+ self.rssprocess.check_rule(port_id=0, rule_list=rule_id_0)\n+ tests = [\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/Raw(\"x\"*480)',\n+ 'action': {'save_hash': 'ipv4-pay'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.7\",dst=\"192.168.0.5\")/Raw(\"x\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-pay'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.8\")/Raw(\"x\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-pay'},\n+ },\n+ ]\n+ self.rssprocess.handle_tests(tests, 0)\n+ rule_id_1 = self.rssprocess.create_rule('flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end', check_stats=True)\n+ self.rssprocess.check_rule(port_id=0, rule_list=rule_id_1)\n+ tests = [\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/Raw(\"x\"*480)',\n+ 'action': {'save_hash': 'ipv4-pay'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.7\",dst=\"192.168.0.5\")/Raw(\"x\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-pay'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.7\")/Raw(\"x\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-pay'},\n+ },\n+ ]\n+ self.rssprocess.handle_tests(tests, 0)\n+ self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_1)\n+ self.rssprocess.check_rule(port_id=0)\n+ tests = [\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/Raw(\"x\"*480)',\n+ 'action': {'check_no_hash': 'ipv4-pay'},\n+ },\n+ ]\n+ self.rssprocess.handle_tests(tests, 0)\n+ self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_0)\n+\n+ # Subcase 3: two rules, scope smaller created first, and the larger one created later\n+ self.logger.info('===================Test sub case: multirules subcase 3 ================')\n+ rule_id_0 = self.rssprocess.create_rule('flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end', check_stats=True)\n+ self.rssprocess.check_rule(port_id=0, rule_list=rule_id_0)\n+ tests_3 = [\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/UDP(sport=23, dport=45)/Raw(\"x\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp-pay'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/UDP(sport=25, dport=45)/Raw(\"x\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp-pay'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.7\",dst=\"192.168.0.8\")/UDP(sport=23, dport=44)/Raw(\"x\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-udp-pay'},\n+ },\n+ ]\n+ self.rssprocess.handle_tests(tests_3, 0)\n+ rule_id_1 = self.rssprocess.create_rule('flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end', check_stats=True)\n+ self.rssprocess.check_rule(port_id=0, rule_list=rule_id_1)\n+ tests = [\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/UDP(sport=23, dport=45)/Raw(\"x\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp-pay'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.7\",dst=\"192.168.0.5\")/UDP(sport=23, dport=45)/Raw(\"x\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp-pay'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.8\")/UDP(sport=25, dport=99)/Raw(\"x\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-udp-pay'},\n+ },\n+ ]\n+ self.rssprocess.handle_tests(tests, 0)\n+ self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_1)\n+ self.rssprocess.handle_tests(tests_3, 0)\n+ self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_0)\n+ tests = [\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/UDP(sport=23, dport=45)/Raw(\"x\"*480)',\n+ 'action': {'check_no_hash': 'ipv4-udp-pay'},\n+ },\n+ ]\n+ self.rssprocess.handle_tests(tests, 0)\n+\n+ # Subcase 4: two rules, scope larger created first, and the smaller one created later\n+ self.logger.info('===================Test sub case: multirules subcase 4 ================')\n+ rule_id_0 = self.rssprocess.create_rule('flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end', check_stats=True)\n+ self.rssprocess.check_rule(port_id=0, rule_list=rule_id_0)\n+ tests_4 = [\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/UDP(sport=23, dport=45)/Raw(\"x\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp-pay'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.7\",dst=\"192.168.0.5\")/UDP(sport=23, dport=45)/Raw(\"x\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp-pay'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.8\")/UDP(sport=25, dport=99)/Raw(\"x\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-udp-pay'},\n+ },\n+ ]\n+ self.rssprocess.handle_tests(tests_4, 0)\n+ rule_id_1 = self.rssprocess.create_rule('flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end', check_stats=True)\n+ self.rssprocess.check_rule(port_id=0, rule_list=rule_id_1)\n+ tests = [\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/UDP(sport=23, dport=45)/Raw(\"x\"*480)',\n+ 'action': {'save_hash': 'ipv4-udp-pay'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/UDP(sport=25, dport=45)/Raw(\"x\"*480)',\n+ 'action': {'check_hash_different': 'ipv4-udp-pay'},\n+ },\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.7\",dst=\"192.168.0.8\")/UDP(sport=23, dport=44)/Raw(\"x\"*480)',\n+ 'action': {'check_hash_same': 'ipv4-udp-pay'},\n+ },\n+ ]\n+ self.rssprocess.handle_tests(tests, 0)\n+ self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_1)\n+ self.rssprocess.handle_tests(tests_4, 0)\n+ self.rssprocess.destroy_rule(port_id=0, rule_id=rule_id_0)\n+ tests = [\n+ {\n+ 'send_packet': 'Ether(dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.3\",dst=\"192.168.0.5\")/UDP(sport=23, dport=45)/Raw(\"x\"*480)',\n+ 'action': {'check_no_hash': 'ipv4-udp-pay'},\n+ },\n+ ]\n+ self.rssprocess.handle_tests(tests, 0)\n+ self.verify(not self.rssprocess.error_msgs, 'some subcases failed')\n+\n+ def tear_down(self):\n+ # destroy all flow rule on port 0\n+ self.dut.send_command(\"flow flush 0\", timeout=1)\n+ self.dut.send_command(\"clear port stats all\", timeout=1)\n+ self.pmd_output.execute_cmd(\"stop\")\n+\n+ def tear_down_all(self):\n+ self.dut.kill_all()\n", "prefixes": [ "V3", "2/8" ] }{ "id": 83371, "url": "