get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/97287/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 97287,
    "url": "http://patches.dpdk.org/api/patches/97287/?format=api",
    "web_url": "http://patches.dpdk.org/project/dts/patch/20210825103809.15141-3-qinx.sun@intel.com/",
    "project": {
        "id": 3,
        "url": "http://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": "<20210825103809.15141-3-qinx.sun@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/20210825103809.15141-3-qinx.sun@intel.com",
    "date": "2021-08-25T10:38:09",
    "name": "[V4,2/2] tests/cvl_advanced_iavf_rss: add gre inner rss cases for iavf suite",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "dfe747dbdb2ee69f24fe8edbcf621b1561c31ad5",
    "submitter": {
        "id": 1956,
        "url": "http://patches.dpdk.org/api/people/1956/?format=api",
        "name": "Sun, QinX",
        "email": "qinx.sun@intel.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dts/patch/20210825103809.15141-3-qinx.sun@intel.com/mbox/",
    "series": [
        {
            "id": 18440,
            "url": "http://patches.dpdk.org/api/series/18440/?format=api",
            "web_url": "http://patches.dpdk.org/project/dts/list/?series=18440",
            "date": "2021-08-25T10:38:07",
            "name": "add gre inner rss cases for iavf",
            "version": 4,
            "mbox": "http://patches.dpdk.org/series/18440/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/97287/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/97287/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 mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 02D80A0C57;\n\tWed, 25 Aug 2021 04:06:53 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id F21714117D;\n\tWed, 25 Aug 2021 04:06:52 +0200 (CEST)",
            "from mga17.intel.com (mga17.intel.com [192.55.52.151])\n by mails.dpdk.org (Postfix) with ESMTP id DF19D4117D\n for <dts@dpdk.org>; Wed, 25 Aug 2021 04:06:50 +0200 (CEST)",
            "from fmsmga002.fm.intel.com ([10.253.24.26])\n by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 24 Aug 2021 19:06:50 -0700",
            "from unknown (HELO localhost.localdomain) ([10.240.183.105])\n by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 24 Aug 2021 19:06:48 -0700"
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,10086\"; a=\"197675898\"",
            "E=Sophos;i=\"5.84,349,1620716400\"; d=\"scan'208\";a=\"197675898\"",
            "E=Sophos;i=\"5.84,349,1620716400\"; d=\"scan'208\";a=\"536078522\""
        ],
        "From": "Qin Sun <qinx.sun@intel.com>",
        "To": "dts@dpdk.org",
        "Cc": "xueqin.lin@intel.com,\n\tQin Sun <qinx.sun@intel.com>",
        "Date": "Wed, 25 Aug 2021 10:38:09 +0000",
        "Message-Id": "<20210825103809.15141-3-qinx.sun@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20210825103809.15141-1-qinx.sun@intel.com>",
        "References": "<20210825103809.15141-1-qinx.sun@intel.com>",
        "Subject": "[dts] [PATCH V4 2/2] tests/cvl_advanced_iavf_rss: add gre inner rss\n cases for iavf suite",
        "X-BeenThere": "dts@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "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": "according to test plan to add 24 new cases related gre inner rss for iavf suite\n\nSigned-off-by: Qin Sun <qinx.sun@intel.com>\n---\n tests/TestSuite_cvl_advanced_iavf_rss.py | 997 +++++++++++++++++++++++\n 1 file changed, 997 insertions(+)",
    "diff": "diff --git a/tests/TestSuite_cvl_advanced_iavf_rss.py b/tests/TestSuite_cvl_advanced_iavf_rss.py\nindex a7003b38..249f6bcf 100644\n--- a/tests/TestSuite_cvl_advanced_iavf_rss.py\n+++ b/tests/TestSuite_cvl_advanced_iavf_rss.py\n@@ -4150,6 +4150,931 @@ ipv6_64bit_prefix_l3_src_dst_only = {\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+#gre tunnel related data\n+mac_ipv4_gre_ipv4_basic_pkt = {\n+    'ipv4-proto':\n+       'Ether(dst=\"%s\")/IP()/GRE()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\", proto=6)/(\"X\"*480)' % vf0_mac,\n+    'ipv4-tcp':\n+        'Ether(dst=\"%s\")/IP()/GRE()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\", proto=6)/TCP(sport=22,dport=23)/(\"X\"*480)' % vf0_mac,\n+}\n+\n+mac_ipv4_gre_ipv6_basic_pkt = {\n+    'ipv6-nh':\n+        'Ether(dst=\"%s\")/IP()/GRE()/IPv6(dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\", src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\", nh=6)/(\"X\"*480)' % vf0_mac,\n+    'ipv6-tcp':\n+        'Ether(dst=\"%s\")/IP()/GRE()/IPv6(dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\", src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\", nh=6)/TCP(sport=22,dport=23)/(\"X\"*480)' % vf0_mac,\n+}\n+\n+mac_ipv4_gre_ipv4_all = {\n+    'sub_casename': 'ipv4_gre_ipv4_all',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end',\n+    'test': [\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-proto'],\n+            'action': {'save_hash': 'ipv4-proto'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-proto'].replace('dst=\"192.168.0.1\"','dst=\"192.168.1.1\"'),\n+            'action': {'check_hash_different': 'ipv4-proto'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-proto'].replace('src=\"192.168.0.2\"','src=\"192.168.1.2\"'),\n+            'action': {'check_hash_different': 'ipv4-proto'},\n+        },\n+    ],\n+}\n+\n+mac_ipv4_gre_ipv4_l3_src = {\n+    'sub_casename': 'ipv4_gre_ipv4_l3_src',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end',\n+    'test': [\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-proto'],\n+            'action': {'save_hash': 'ipv4-proto'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-proto'].replace('src=\"192.168.0.2\"','src=\"192.168.1.2\"'),\n+            'action': {'check_hash_different': 'ipv4-proto'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-proto'].replace('dst=\"192.168.0.1\"','dst=\"192.168.1.1\"'),\n+            'action': {'check_hash_same': 'ipv4-proto'},\n+        },\n+    ],\n+}\n+\n+mac_ipv4_gre_ipv4_l3_dst = {\n+    'sub_casename': 'ipv4_gre_ipv4_l3_dst',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end',\n+    'test': [\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-proto'],\n+            'action': {'save_hash': 'ipv4-proto'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-proto'].replace('dst=\"192.168.0.1\"','dst=\"192.168.1.1\"'),\n+            'action': {'check_hash_different': 'ipv4-proto'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-proto'].replace('src=\"192.168.0.2\"','src=\"192.168.1.2\"'),\n+            'action': {'check_hash_same': 'ipv4-proto'},\n+        },\n+    ],\n+}\n+\n+mac_ipv4_gre_ipv4_tcp_l3_src = {\n+    'sub_casename': 'ipv4_gre_ipv4_tcp_l3_src',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / 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_gre_ipv4_basic_pkt['ipv4-tcp'],\n+            'action': {'save_hash': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('src=\"192.168.0.2\"', 'src=\"192.168.1.2\"'),\n+            'action': {'check_hash_different': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dst=\"192.168.0.1\"', 'dst=\"192.168.1.1\"'),\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dport=23', 'dport=24'),\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('sport=22', 'sport=21'),\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+    ],\n+}\n+\n+mac_ipv4_gre_ipv4_tcp_l3_dst = {\n+    'sub_casename': 'ipv4_gre_ipv4_tcp_l3_dst',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / 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_gre_ipv4_basic_pkt['ipv4-tcp'],\n+            'action': {'save_hash': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dst=\"192.168.0.1\"', 'dst=\"192.168.1.1\"'),\n+            'action': {'check_hash_different': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('src=\"192.168.0.2\"', 'src=\"192.168.1.2\"'),\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dport=23', 'dport=24'),\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('sport=22', 'sport=21'),\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+    ],\n+}\n+\n+mac_ipv4_gre_ipv4_tcp_l3_src_l4_src = {\n+    'sub_casename': 'ipv4_gre_ipv4_tcp_l3_src_l4_src',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / 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_gre_ipv4_basic_pkt['ipv4-tcp'],\n+            'action': {'save_hash': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('src=\"192.168.0.2\"', 'src=\"192.168.1.2\"'),\n+            'action': {'check_hash_different': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('sport=22', 'sport=21'),\n+            'action': {'check_hash_different': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dst=\"192.168.0.1\"', 'dst=\"192.168.1.1\"'),\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dport=23', 'dport=24'),\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+    ],\n+}\n+\n+mac_ipv4_gre_ipv4_tcp_l3_src_l4_dst = {\n+    'sub_casename': 'ipv4_gre_ipv4_tcp_l3_src_l4_dst',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / 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_gre_ipv4_basic_pkt['ipv4-tcp'],\n+            'action': {'save_hash': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('src=\"192.168.0.2\"', 'src=\"192.168.1.2\"'),\n+            'action': {'check_hash_different': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dport=23', 'dport=24'),\n+            'action': {'check_hash_different': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dst=\"192.168.0.1\"', 'dst=\"192.168.1.1\"'),\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('sport=22', 'sport=21'),\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+    ],\n+}\n+\n+mac_ipv4_gre_ipv4_tcp_l3_dst_l4_src = {\n+    'sub_casename': 'ipv4_gre_ipv4_tcp_l3_dst_l4_src',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / 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_gre_ipv4_basic_pkt['ipv4-tcp'],\n+            'action': {'save_hash': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dst=\"192.168.0.1\"', 'dst=\"192.168.1.1\"'),\n+            'action': {'check_hash_different': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('sport=22', 'sport=21'),\n+            'action': {'check_hash_different': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('src=\"192.168.0.2\"', 'src=\"192.168.1.2\"'),\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet':mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dport=23', 'dport=24'),\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+    ],\n+}\n+\n+mac_ipv4_gre_ipv4_tcp_l3_dst_l4_dst = {\n+    'sub_casename': 'ipv4_gre_ipv4_tcp_l3_dst_l4_dst',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / 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_gre_ipv4_basic_pkt['ipv4-tcp'],\n+            'action': {'save_hash': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dst=\"192.168.0.1\"', 'dst=\"192.168.1.1\"'),\n+            'action': {'check_hash_different': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dport=23', 'dport=24'),\n+            'action': {'check_hash_different': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('src=\"192.168.0.2\"', 'src=\"192.168.1.2\"'),\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('sport=22', 'sport=21'),\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+    ],\n+}\n+\n+mac_ipv4_gre_ipv4_tcp_l4_src = {\n+    'sub_casename': 'ipv4_gre_ipv4_tcp_l4_src',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / 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_gre_ipv4_basic_pkt['ipv4-tcp'],\n+            'action': {'save_hash': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('sport=22', 'sport=21'),\n+            'action': {'check_hash_different': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dst=\"192.168.0.1\"', 'dst=\"192.168.1.1\"'),\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('src=\"192.168.0.2\"', 'src=\"192.168.1.2\"'),\n+\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dport=23', 'dport=24'),\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+    ]\n+}\n+\n+mac_ipv4_gre_ipv4_tcp_l4_dst = {\n+    'sub_casename': 'ipv4_gre_ipv4_tcp_l4_dst',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / 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_gre_ipv4_basic_pkt['ipv4-tcp'],\n+            'action': {'save_hash': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dport=23', 'dport=24'),\n+            'action': {'check_hash_different': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dst=\"192.168.0.1\"', 'dst=\"192.168.1.1\"'),\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('src=\"192.168.0.2\"', 'src=\"192.168.1.2\"'),\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('sport=22', 'sport=21'),\n+            'action': {'check_hash_same': 'ipv4-tcp'},\n+        },\n+    ]\n+}\n+\n+mac_ipv4_gre_ipv4_tcp_all = {\n+    'sub_casename': 'ipv4_gre_ipv4_tcp_all',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end',\n+    'test': [\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'],\n+            'action': {'save_hash': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dst=\"192.168.0.1\"', 'dst=\"192.168.1.1\"'),\n+            'action': {'check_hash_different': 'ipv4-tcp'}\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('src=\"192.168.0.2\"', 'src=\"192.168.1.2\"'),\n+            'action': {'check_hash_different': 'ipv4-tcp'}\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('sport=22', 'sport=21'),\n+            'action': {'check_hash_different': 'ipv4-tcp'}\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dport=23', 'dport=24'),\n+            'action': {'check_hash_different': 'ipv4-tcp'}\n+        },\n+    ]\n+}\n+\n+mac_ipv4_gre_ipv4_tcp_ipv4 = {\n+    'sub_casename': 'ipv4_gre_ipv4_tcp_ipv4',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / ipv4 / tcp / end actions rss types ipv4 end key_len 0 queues end / end',\n+    'test': [\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'],\n+            'action': {'save_hash': 'ipv4-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dst=\"192.168.0.1\"', 'dst=\"192.168.1.1\"'),\n+            'action': {'check_hash_different': 'ipv4-tcp'}\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('src=\"192.168.0.2\"', 'src=\"192.168.1.2\"'),\n+\n+            'action': {'check_hash_different': 'ipv4-tcp'}\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('sport=22', 'sport=21'),\n+\n+            'action': {'check_hash_same': 'ipv4-tcp'}\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv4_basic_pkt['ipv4-tcp'].replace('dport=23', 'dport=24'),\n+\n+            'action': {'check_hash_same': 'ipv4-tcp'}\n+        },\n+    ]\n+}\n+\n+mac_ipv4_gre_ipv6_l3_src = {\n+    'sub_casename': 'ipv4_gre_ipv6_l3_src',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end',\n+    'test': [\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-nh'],\n+            'action': {'save_hash': 'ipv6-nh'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-nh'].replace('src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\"','src=\"ABAB:910B:6666:3457:8295:3333:1800:2930\"'),\n+            'action': {'check_hash_different': 'ipv6-nh'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-nh'].replace('dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\"', 'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\"'),\n+            'action': {'check_hash_same': 'ipv6-nh'},\n+        },\n+    ]\n+}\n+\n+mac_ipv4_gre_ipv6_l3_dst = {\n+    'sub_casename': 'ipv4_gre_ipv6_l3_dst',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end',\n+    'test': [\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-nh'],\n+            'action': {'save_hash': 'ipv6-nh'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-nh'].replace('dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\"',\n+                                                                          'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\"'),\n+            'action': {'check_hash_different': 'ipv6-nh'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-nh'].replace('src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\"',\n+                                                                          'src=\"ABAB:910B:6666:3457:8295:3333:1800:2930\"'),\n+            'action': {'check_hash_same': 'ipv6-nh'},\n+        },\n+    ]\n+}\n+\n+mac_ipv4_gre_ipv6_all = {\n+    'sub_casename': 'ipv4_gre_ipv6_all',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end',\n+    'test': [\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-nh'],\n+            'action': {'save_hash': 'ipv6-nh'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-nh'].replace('dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\"',\n+                                                                          'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\"'),\n+            'action': {'check_hash_different': 'ipv6-nh'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-nh'].replace('src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\"',\n+                                                                          'src=\"ABAB:910B:6666:3457:8295:3333:1800:2930\"'),\n+            'action': {'check_hash_different': 'ipv6-nh'},\n+        },\n+    ]\n+}\n+\n+mac_ipv4_gre_ipv6_tcp_l3_src = {\n+    'sub_casename': 'ipv4_gre_ipv6_tcp_l3_src',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / 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_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'],\n+            'action': {'save_hash': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace(\n+                'src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\"', 'src=\"ABAB:910B:6666:3457:8295:3333:1800:2930\"'),\n+            'action': {'check_hash_different': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-nh'].replace(\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\"',\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\"'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('dport=23', 'dport=24'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('sport=22', 'sport=21'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+    ]\n+}\n+\n+mac_ipv4_gre_ipv6_tcp_l3_dst = {\n+    'sub_casename': 'ipv4_gre_ipv6_tcp_l3_dst',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / 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_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'],\n+            'action': {'save_hash': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-nh'].replace(\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\"',\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\"'),\n+            'action': {'check_hash_different': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace(\n+                'src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\"', 'src=\"ABAB:910B:6666:3457:8295:3333:1800:2930\"'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('dport=23', 'dport=24'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('sport=22', 'sport=21'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+    ]\n+}\n+\n+mac_ipv4_gre_ipv6_tcp_l4_src = {\n+    'sub_casename': 'ipv4_gre_ipv6_tcp_l4_src',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / 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_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'],\n+            'action': {'save_hash': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('sport=22', 'sport=21'),\n+            'action': {'check_hash_different': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace(\n+                'src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\"', 'src=\"ABAB:910B:6666:3457:8295:3333:1800:2930\"'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace(\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\"',\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\"'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('dport=23', 'dport=24'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+    ]\n+}\n+\n+mac_ipv4_gre_ipv6_tcp_l4_dst = {\n+    'sub_casename': 'ipv4_gre_ipv6_tcp_l4_dst',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / 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_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'],\n+            'action': {'save_hash': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('dport=23', 'dport=24'),\n+            'action': {'check_hash_different': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('sport=22', 'sport=21'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace(\n+                'src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\"', 'src=\"ABAB:910B:6666:3457:8295:3333:1800:2930\"'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace(\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\"',\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\"'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+    ]\n+}\n+\n+mac_ipv4_gre_ipv6_tcp_l3_src_l4_src = {\n+    'sub_casename': 'ipv4_gre_ipv6_tcp_l3_src_l4_src',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / 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_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'],\n+            'action': {'save_hash': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace(\n+                'src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\"', 'src=\"ABAB:910B:6666:3457:8295:3333:1800:2930\"'),\n+            'action': {'check_hash_different': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('sport=22', 'sport=21'),\n+            'action': {'check_hash_different': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace(\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\"',\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\"'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('dport=23', 'dport=24'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+    ]\n+}\n+\n+mac_ipv4_gre_ipv6_tcp_l3_src_l4_dst = {\n+    'sub_casename': 'ipv4_gre_ipv6_tcp_l3_src_l4_dst',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / 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_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'],\n+            'action': {'save_hash': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace(\n+                'src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\"', 'src=\"ABAB:910B:6666:3457:8295:3333:1800:2930\"'),\n+            'action': {'check_hash_different': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('dport=23', 'dport=24'),\n+            'action': {'check_hash_different': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('sport=22', 'sport=21'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace(\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\"',\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\"'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+    ]\n+}\n+\n+mac_ipv4_gre_ipv6_tcp_l3_dst_l4_src = {\n+    'sub_casename': 'ipv4_gre_ipv6_tcp_l3_dst_l4_src',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / 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_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'],\n+            'action': {'save_hash': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace(\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\"',\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\"'),\n+            'action': {'check_hash_different': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('sport=22', 'sport=21'),\n+            'action': {'check_hash_different': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('dport=23', 'dport=24'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace(\n+                'src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\"', 'src=\"ABAB:910B:6666:3457:8295:3333:1800:2930\"'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+    ]\n+}\n+\n+mac_ipv4_gre_ipv6_tcp_l3_dst_l4_dst = {\n+    'sub_casename': 'ipv4_gre_ipv6_tcp_l3_dst_l4_dst',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / 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_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'],\n+            'action': {'save_hash': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace(\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\"',\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\"'),\n+            'action': {'check_hash_different': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('dport=23', 'dport=24'),\n+            'action': {'check_hash_different': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace(\n+                'src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\"', 'src=\"ABAB:910B:6666:3457:8295:3333:1800:2930\"'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('sport=22', 'sport=21'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+    ]\n+}\n+\n+mac_ipv4_gre_ipv6_tcp_all = {\n+    'sub_casename': 'ipv4_gre_ipv6_tcp_all',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end',\n+    'test': [\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'],\n+            'action': {'save_hash': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace(\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\"',\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\"'),\n+            'action': {'check_hash_different': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace(\n+                'src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\"', 'src=\"ABAB:910B:6666:3457:8295:3333:1800:2930\"'),\n+            'action': {'check_hash_different': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('dport=23', 'dport=24'),\n+            'action': {'check_hash_different': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('sport=22', 'sport=21'),\n+            'action': {'check_hash_different': 'ipv6-tcp'},\n+        },\n+    ]\n+}\n+\n+mac_ipv4_gre_ipv6_tcp_ipv6 = {\n+    'sub_casename': 'ipv4_gre_ipv6_tcp_ipv6',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / ipv6 / tcp / end actions rss types ipv6 end key_len 0 queues end / end',\n+    'test': [\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'],\n+            'action': {'save_hash': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace(\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\"',\n+                'dst=\"CDCD:910A:2222:5498:8475:1111:3900:2021\"'),\n+            'action': {'check_hash_different': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('dport=23', 'dport=24'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace(\n+                'src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\"', 'src=\"ABAB:910B:6666:3457:8295:3333:1800:2930\"'),\n+            'action': {'check_hash_different': 'ipv6-tcp'},\n+        },\n+        {\n+            'send_packet': mac_ipv4_gre_ipv6_basic_pkt['ipv6-tcp'].replace('sport=22', 'sport=21'),\n+            'action': {'check_hash_same': 'ipv6-tcp'},\n+        },\n+    ]\n+}\n+\n+mac_ipv4_gre_ipv4 = [\n+                     mac_ipv4_gre_ipv4_l3_src,\n+                     mac_ipv4_gre_ipv4_l3_dst,\n+                     mac_ipv4_gre_ipv4_all\n+                     ]\n+\n+mac_ipv6_gre_ipv4 = [eval(str(each).replace('ipv4_gre_ipv4','ipv6_gre_ipv4').replace('IP()','IPv6()')\n+                           .replace('eth / ipv4','eth / ipv6')) for each in mac_ipv4_gre_ipv4]\n+\n+mac_ipv4_gre_ipv6 = [\n+                     mac_ipv4_gre_ipv6_l3_src,\n+                     mac_ipv4_gre_ipv6_l3_dst,\n+                     mac_ipv4_gre_ipv6_all\n+                    ]\n+\n+mac_ipv6_gre_ipv6 = [eval(str(each).replace('ipv4_gre_ipv6','ipv6_gre_ipv6').replace('IP()','IPv6()')\n+                           .replace('eth / ipv4','eth / ipv6')) for each in mac_ipv4_gre_ipv6]\n+\n+mac_ipv4_gre_ipv4_tcp = [\n+                     mac_ipv4_gre_ipv4_tcp_l3_src,\n+                     mac_ipv4_gre_ipv4_tcp_l3_dst,\n+                     mac_ipv4_gre_ipv4_tcp_l4_src,\n+                     mac_ipv4_gre_ipv4_tcp_l4_dst,\n+                     mac_ipv4_gre_ipv4_tcp_l3_src_l4_src,\n+                     mac_ipv4_gre_ipv4_tcp_l3_src_l4_dst,\n+                     mac_ipv4_gre_ipv4_tcp_l3_dst_l4_src,\n+                     mac_ipv4_gre_ipv4_tcp_l3_dst_l4_dst,\n+                     mac_ipv4_gre_ipv4_tcp_all,\n+                     mac_ipv4_gre_ipv4_tcp_ipv4,\n+                    ]\n+\n+mac_ipv6_gre_ipv4_tcp = [eval(str(each).replace('ipv4_gre_ipv4','ipv6_gre_ipv4').replace('IP()','IPv6()')\n+                           .replace('eth / ipv4','eth / ipv6')) for each in mac_ipv4_gre_ipv4_tcp]\n+\n+mac_ipv4_gre_ipv6_tcp = [\n+                    mac_ipv4_gre_ipv6_tcp_l3_src,\n+                    mac_ipv4_gre_ipv6_tcp_l3_dst,\n+                    mac_ipv4_gre_ipv6_tcp_l4_src,\n+                    mac_ipv4_gre_ipv6_tcp_l4_dst,\n+                    mac_ipv4_gre_ipv6_tcp_l3_src_l4_src,\n+                    mac_ipv4_gre_ipv6_tcp_l3_src_l4_dst,\n+                    mac_ipv4_gre_ipv6_tcp_l3_dst_l4_src,\n+                    mac_ipv4_gre_ipv6_tcp_l3_dst_l4_dst,\n+                    mac_ipv4_gre_ipv6_tcp_all,\n+                    mac_ipv4_gre_ipv6_tcp_ipv6,\n+    ]\n+\n+mac_ipv6_gre_ipv6_tcp = [eval(str(each).replace('ipv4_gre_ipv6','ipv6_gre_ipv6').replace('IP()','IPv6()')\n+                           .replace('eth / ipv4','eth / ipv6')) for each in mac_ipv4_gre_ipv6_tcp]\n+\n+mac_ipv4_gre_ipv4_udp = [eval(str(each).replace('tcp','udp').replace('TCP','UDP').replace('proto=6','proto=17')) for each in mac_ipv4_gre_ipv4_tcp]\n+\n+mac_ipv6_gre_ipv4_udp = [eval(str(each).replace('tcp','udp').replace('TCP','UDP').replace('proto=6','proto=17')) for each in mac_ipv6_gre_ipv4_tcp]\n+\n+mac_ipv4_gre_ipv6_udp = [eval(str(each).replace('tcp','udp').replace('TCP','UDP').replace('nh=6','nh=17')) for each in mac_ipv4_gre_ipv6_tcp]\n+\n+mac_ipv6_gre_ipv6_udp = [eval(str(each).replace('tcp','udp').replace('TCP','UDP').replace('nh=6','nh=17')) for each in mac_ipv6_gre_ipv6_tcp]\n+\n+mac_ipv4_gre_ipv4_symmetric = {\n+    'sub_casename': 'mac_ipv4_gre_ipv4_symmetric',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end',\n+    'test': [\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)' % vf0_mac,\n+            'action': {'save_hash': 'ipv4'},\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/(\"X\"*480)' % vf0_mac,\n+            'action': {'check_hash_same': 'ipv4'},\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\",proto=6)/(\"X\"*480)' % vf0_mac,\n+            'action': {'save_hash': 'ipv4-proto'},\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\",proto=6)/(\"X\"*480)' % vf0_mac,\n+            'action': {'check_hash_same': 'ipv4-proto'},\n+        },\n+    ],\n+}\n+\n+mac_ipv6_gre_ipv4_symmetric = eval(str(mac_ipv4_gre_ipv4_symmetric).replace('ipv4_gre_ipv4','ipv6_gre_ipv4').replace('IP()','IPv6()')\n+                           .replace('eth / ipv4','eth / ipv6'))\n+\n+mac_ipv4_gre_ipv6_symmetric = {\n+    'sub_casename': 'mac_ipv4_gre_ipv6_symmetric',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end',\n+    'test': [\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)' % vf0_mac,\n+            'action': {'save_hash': 'ipv6'},\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)' % vf0_mac,\n+            'action': {'check_hash_same': 'ipv6'},\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\", nh=6)/(\"X\"*480)' % vf0_mac,\n+            'action': {'save_hash': 'ipv6-nh'},\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\", nh=6)/(\"X\"*480)' % vf0_mac,\n+            'action': {'check_hash_same': 'ipv6-nh'},\n+        },\n+    ],\n+}\n+\n+mac_ipv6_gre_ipv6_symmetric = eval(str(mac_ipv4_gre_ipv6_symmetric).replace('ipv4_gre_ipv6','ipv6_gre_ipv6').replace('IP()','IPv6()')\n+                           .replace('eth / ipv4','eth / ipv6'))\n+\n+mac_ipv4_gre_ipv4_tcp_symmetric = {\n+    'sub_casename': 'mac_ipv4_gre_ipv4_tcp_symmetric',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp end key_len 0 queues end / end',\n+    'test': [\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)' % vf0_mac,\n+            'action': {'save_hash': 'ipv4'},\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=22,dport=23)/(\"X\"*480)' % vf0_mac,\n+            'action': {'check_hash_same': 'ipv4'},\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=23,dport=22)/(\"X\"*480)' % vf0_mac,\n+            'action': {'check_hash_same': 'ipv4'},\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\",proto=6)/TCP(sport=22,dport=23)/(\"X\"*480)' % vf0_mac,\n+            'action': {'save_hash': 'ipv4-proto'},\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\",proto=6)/TCP(sport=22,dport=23)/(\"X\"*480)' % vf0_mac,\n+            'action': {'check_hash_same': 'ipv4-proto'},\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\",proto=6)/TCP(sport=23,dport=22)/(\"X\"*480)' % vf0_mac,\n+            'action': {'check_hash_same': 'ipv4-proto'},\n+        },\n+    ],\n+}\n+\n+mac_ipv6_gre_ipv4_tcp_symmetric = eval(str(mac_ipv4_gre_ipv4_tcp_symmetric).replace('ipv4_gre_ipv4','ipv6_gre_ipv4').replace('IP()','IPv6()')\n+                           .replace('eth / ipv4','eth / ipv6'))\n+\n+mac_ipv4_gre_ipv6_tcp_symmetric = {\n+    'sub_casename': 'mac_ipv4_gre_ipv6_tcp_symmetric',\n+    'port_id': 0,\n+    'rule': 'flow create 0 ingress pattern eth / ipv4 / gre / ipv6 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end',\n+    'test': [\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/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)' % vf0_mac,\n+            'action': {'save_hash': 'ipv6'},\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/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)' % vf0_mac,\n+            'action': {'check_hash_same': 'ipv6'},\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/TCP(sport=23,dport=22)/(\"X\"*480)' % vf0_mac,\n+            'action': {'check_hash_same': 'ipv6'},\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\", nh=6)/TCP(sport=22,dport=23)/(\"X\"*480)' % vf0_mac,\n+            'action': {'save_hash': 'ipv6-nh'},\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\", nh=6)/TCP(sport=22,dport=23)/(\"X\"*480)' % vf0_mac,\n+            'action': {'check_hash_same': 'ipv6-nh'},\n+        },\n+        {\n+            'send_packet': 'Ether(dst=\"%s\")/IP()/GRE()/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\", nh=6)/TCP(sport=23,dport=22)/(\"X\"*480)' % vf0_mac,\n+            'action': {'check_hash_same': 'ipv6-nh'},\n+        },\n+    ],\n+}\n+\n+mac_ipv6_gre_ipv6_tcp_symmetric = eval(str(mac_ipv4_gre_ipv6_tcp_symmetric).replace('ipv4_gre_ipv6','ipv6_gre_ipv6').replace('IP()','IPv6()')\n+                           .replace('eth / ipv4','eth / ipv6'))\n+\n+mac_ipv4_gre_ipv4_udp_symmetric = eval(str(mac_ipv4_gre_ipv4_tcp_symmetric).replace('tcp','udp').replace('TCP','UDP').replace('proto=6','proto=17'))\n+\n+mac_ipv6_gre_ipv4_udp_symmetric = eval(str(mac_ipv6_gre_ipv4_tcp_symmetric).replace('tcp','udp').replace('TCP','UDP').replace('proto=6','proto=17'))\n+\n+mac_ipv4_gre_ipv6_udp_symmetric = eval(str(mac_ipv4_gre_ipv6_tcp_symmetric).replace('tcp','udp').replace('TCP','UDP').replace('proto=6','proto=17'))\n+\n+mac_ipv6_gre_ipv6_udp_symmetric = eval(str(mac_ipv6_gre_ipv6_tcp_symmetric).replace('tcp','udp').replace('TCP','UDP').replace('proto=6','proto=17'))\n+#gre tunnel end\n+\n class AdvancedIavfRSSTest(TestCase):\n \n     def set_up_all(self):\n@@ -4451,6 +5376,78 @@ class AdvancedIavfRSSTest(TestCase):\n         self.rssprocess.handle_tests(tests, 0)\n         self.verify(not self.rssprocess.error_msgs, 'some subcases failed')\n \n+    def test_mac_ipv4_gre_ipv4(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gre_ipv4)\n+\n+    def test_mac_ipv6_gre_ipv4(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_gre_ipv4)\n+\n+    def test_mac_ipv4_gre_ipv6(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gre_ipv6)\n+\n+    def test_mac_ipv6_gre_ipv6(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_gre_ipv6)\n+\n+    def test_mac_ipv4_gre_ipv4_tcp(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gre_ipv4_tcp)\n+\n+    def test_mac_ipv6_gre_ipv4_tcp(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_gre_ipv4_tcp)\n+\n+    def test_mac_ipv4_gre_ipv6_tcp(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gre_ipv6_tcp)\n+\n+    def test_mac_ipv6_gre_ipv6_tcp(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_gre_ipv6_tcp)\n+\n+    def test_mac_ipv4_gre_ipv4_udp(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gre_ipv4_udp)\n+\n+    def test_mac_ipv6_gre_ipv4_udp(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_gre_ipv4_udp)\n+\n+    def test_mac_ipv4_gre_ipv6_udp(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gre_ipv6_udp)\n+\n+    def test_mac_ipv6_gre_ipv6_udp(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_gre_ipv6_udp)\n+\n+    def test_symmetric_mac_ipv4_gre_ipv4(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gre_ipv4_symmetric)\n+\n+    def test_symmetric_mac_ipv6_gre_ipv4(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_gre_ipv4_symmetric)\n+\n+    def test_symmetric_mac_ipv4_gre_ipv6(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gre_ipv6_symmetric)\n+\n+    def test_symmetric_mac_ipv6_gre_ipv6(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_gre_ipv6_symmetric)\n+\n+    def test_symmetric_mac_ipv4_gre_ipv4_tcp(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gre_ipv4_tcp_symmetric)\n+\n+    def test_symmetric_mac_ipv6_gre_ipv4_tcp(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_gre_ipv4_tcp_symmetric)\n+\n+    def test_symmetric_mac_ipv4_gre_ipv6_tcp(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gre_ipv6_tcp_symmetric)\n+\n+    def test_symmetric_mac_ipv6_gre_ipv6_tcp(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_gre_ipv6_tcp_symmetric)\n+\n+    def test_symmetric_mac_ipv4_gre_ipv4_udp(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gre_ipv4_udp_symmetric)\n+\n+    def test_symmetric_mac_ipv6_gre_ipv4_udp(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_gre_ipv4_udp_symmetric)\n+\n+    def test_symmetric_mac_ipv4_gre_ipv6_udp(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_gre_ipv6_udp_symmetric)\n+\n+    def test_symmetric_mac_ipv6_gre_ipv6_udp(self):\n+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_gre_ipv6_udp_symmetric)\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",
    "prefixes": [
        "V4",
        "2/2"
    ]
}