get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 90052,
    "url": "http://patches.dpdk.org/api/patches/90052/?format=api",
    "web_url": "http://patches.dpdk.org/project/dts/patch/20210330140621.39818-1-yuan.peng@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": "<20210330140621.39818-1-yuan.peng@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/20210330140621.39818-1-yuan.peng@intel.com",
    "date": "2021-03-30T14:06:21",
    "name": "test_plans: add gtpogre to CVL pf/iavf RSS",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "5c8b6a30da7e9ed948b959c83e11c9c63519118c",
    "submitter": {
        "id": 429,
        "url": "http://patches.dpdk.org/api/people/429/?format=api",
        "name": "Peng, Yuan",
        "email": "yuan.peng@intel.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dts/patch/20210330140621.39818-1-yuan.peng@intel.com/mbox/",
    "series": [
        {
            "id": 15959,
            "url": "http://patches.dpdk.org/api/series/15959/?format=api",
            "web_url": "http://patches.dpdk.org/project/dts/list/?series=15959",
            "date": "2021-03-30T14:06:21",
            "name": "test_plans: add gtpogre to CVL pf/iavf RSS",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/15959/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/90052/comments/",
    "check": "pending",
    "checks": "http://patches.dpdk.org/api/patches/90052/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 77C7EA034F;\n\tTue, 30 Mar 2021 08:07:24 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 3F1D1140FDF;\n\tTue, 30 Mar 2021 08:07:24 +0200 (CEST)",
            "from mga14.intel.com (mga14.intel.com [192.55.52.115])\n by mails.dpdk.org (Postfix) with ESMTP id D799D140F83\n for <dts@dpdk.org>; Tue, 30 Mar 2021 08:07:21 +0200 (CEST)",
            "from fmsmga001.fm.intel.com ([10.253.24.23])\n by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 29 Mar 2021 23:07:20 -0700",
            "from pengyuan-dpdk.sh.intel.com ([10.67.117.236])\n by fmsmga001.fm.intel.com with ESMTP; 29 Mar 2021 23:07:17 -0700"
        ],
        "IronPort-SDR": [
            "\n tpQTGWKMQxOMtmFNWzQx1dS0ropMY/ygGEaocyjLqu2pjXXJBW6W4UVIvXd10Wc31hjJb47CE0\n k+kewBhdPUkQ==",
            "\n CGGqaKL1hjVhAM3yaapCDMZWye8tOWZn+i3nLKwtMtVBCLqdcStcxVYjq3wujUaEvKTvAmFaoQ\n cvWHxtITWX9Q=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9938\"; a=\"191167300\"",
            "E=Sophos;i=\"5.81,290,1610438400\"; d=\"scan'208\";a=\"191167300\"",
            "E=Sophos;i=\"5.81,290,1610438400\"; d=\"scan'208\";a=\"516301486\""
        ],
        "X-ExtLoop1": "1",
        "From": "Peng Yuan <yuan.peng@intel.com>",
        "To": "dts@dpdk.org",
        "Cc": "Peng Yuan <yuan.peng@intel.com>",
        "Date": "Tue, 30 Mar 2021 14:06:21 +0000",
        "Message-Id": "<20210330140621.39818-1-yuan.peng@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "Subject": "[dts] [PATCH]test_plans: add gtpogre to CVL pf/iavf RSS",
        "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": "Add cvl_advanced_iavf_rss_gtpogre_test_plan.rst to test_plans\nAdd cvl_advanced_rss_gtpogre_test_plan.rst to test_plans\nAdd the two new test plans to index.rst\n\nSigned-off-by: Peng Yuan <yuan.peng@intel.com>\n--\nv2",
    "diff": "diff --git a/test_plans/cvl_advanced_iavf_rss_gtpogre_test_plan.rst b/test_plans/cvl_advanced_iavf_rss_gtpogre_test_plan.rst\nnew file mode 100644\nindex 00000000..a1b3ccf4\n--- /dev/null\n+++ b/test_plans/cvl_advanced_iavf_rss_gtpogre_test_plan.rst\n@@ -0,0 +1,2058 @@\n+.. Copyright (c) <2021>, Intel Corporation\n+   All rights reserved.\n+\n+   Redistribution and use in source and binary forms, with or without\n+   modification, are permitted provided that the following conditions\n+   are met:\n+\n+   - Redistributions of source code must retain the above copyright\n+     notice, this list of conditions and the following disclaimer.\n+\n+   - Redistributions in binary form must reproduce the above copyright\n+     notice, this list of conditions and the following disclaimer in\n+     the documentation and/or other materials provided with the\n+     distribution.\n+\n+   - Neither the name of Intel Corporation nor the names of its\n+     contributors may be used to endorse or promote products derived\n+     from this software without specific prior written permission.\n+\n+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n+   \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n+   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n+   COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n+   INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n+   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n+   SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n+   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\n+   STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n+   OF THE POSSIBILITY OF SUCH DAMAGE.\n+\n+===============================\n+CVL IAVF: Advanced RSS For GTPU\n+===============================\n+\n+Description\n+===========\n+\n+GTP over GRE feature enhances packet core performance in 4G LTE and 5G networks.\n+In GTP over GRE market segment package the parse graph is expanded to look for\n+a GTP or PFCP header after parsing a GRE header. GTP over GRE packets contain\n+two tunnel protocols.\n+The next header after the GRE header may be IPv4 or IPv6.  If an IPv6 header\n+is present, extension headers may be present. Then unlike in other types of\n+packages in case of finding UDP header parser does not assume UDP_LAST protocol\n+after GRE tunnel, but looks for GTP or PFCP headers. In case of finding those\n+headers the GRE header and the next IP header found in the packet after the\n+GRE header shall not be reported. Parser reports one of the already existing\n+GTP or PFCP ptypes.\n+\n+support pattern and input set\n+-----------------------------\n+.. table::\n+\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | Hash function: toeplitz                                                                                                        |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | Packet Type                        | All the Input Set options in combination                                                  |\n+    +====================================+===========================================================================================+\n+    | MAC_IPV4_GTPU_EH_IPV4              | ipv4, l3-src-only, l3-dst-only                                                            |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV4_GTPU_EH_IPV4_UDP          | ipv4, ipv4-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only                        |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV4_GTPU_EH_IPV4_TCP          | ipv4, ipv4-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only                        |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV4_GTPU_IPV4                 | ipv4, gtpu, l3-src-only, l3-dst-only                                                      |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV4_GTPU_IPV4_UDP             | ipv4, ipv4-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only                        |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV4_GTPU_IPV4_TCP             | ipv4, ipv4-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only                        |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV4_GTPU_EH_IPV6              | ipv6, l3-src-only, l3-dst-only                                                            |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV4_GTPU_EH_IPV6_UDP          | ipv6, ipv6-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only                        |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV4_GTPU_EH_IPV6_TCP          | ipv6, ipv6-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only                        |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV4_GTPU_IPV6                 | ipv6, gtpu, l3-src-only, l3-dst-only                                                      |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV4_GTPU_IPV6_UDP             | ipv6, ipv6-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only                        |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV4_GTPU_IPV6_TCP             | ipv6, ipv6-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only                        |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV6_GTPU_EH_IPV4              | ipv4, l3-src-only, l3-dst-only                                                            |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV6_GTPU_EH_IPV4_UDP          | ipv4, ipv4-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only                        |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV6_GTPU_EH_IPV4_TCP          | ipv4, ipv4-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only                        |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV6_GTPU_IPV4                 | ipv4, gtpu, l3-src-only, l3-dst-only                                                      |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV6_GTPU_IPV4_UDP             | ipv4, ipv4-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only                        |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV6_GTPU_IPV4_TCP             | ipv4, ipv4-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only                        |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV6_GTPU_EH_IPV6              | ipv6, l3-src-only, l3-dst-only                                                            |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV6_GTPU_EH_IPV6_UDP          | ipv6, ipv6-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only                        |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV6_GTPU_EH_IPV6_TCP          | ipv6, ipv6-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only                        |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV6_GTPU_IPV6                 | ipv6, gtpu, l3-src-only, l3-dst-only                                                      |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV6_GTPU_IPV6_UDP             | ipv6, ipv6-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only                        |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV6_GTPU_IPV6_TCP             | ipv6, ipv6-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only                        |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV4_GTPU                      | ipv4, l3-src-only, l3-dst-only                                                            |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV6_GTPU                      | ipv6, l3-src-only, l3-dst-only                                                            |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV4_GTPC                      | ipv4, l3-src-only, l3-dst-only                                                            |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+    | MAC_IPV6_GTPC                      | ipv6, l3-src-only, l3-dst-only                                                            |\n+    +------------------------------------+-------------------------------------------------------------------------------------------+\n+\n+\n+.. table::\n+\n+    +------------------------------------+------------------------------------------------+\n+    | Hash function: Symmetric_toeplitz                                                   |\n+    +------------------------------------+------------------------------------------------+\n+    | Pattern                            | all the input set options in combination       |\n+    +====================================+================================================+\n+    | MAC_IPV4_GTPU_EH_IPV4              | ipv4                                           |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV4_GTPU_EH_IPV4_UDP          | ipv4-udp                                       |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV4_GTPU_EH_IPV4_TCP          | ipv4-tcp                                       |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV4_GTPU_IPV4                 | ipv4                                           |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV4_GTPU_IPV4_UDP             | ipv4-udp                                       |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV4_GTPU_IPV4_TCP             | ipv4-tcp                                       |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV4_GTPU_EH_IPV6              | ipv6                                           |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV4_GTPU_EH_IPV6_UDP          | ipv6-udp                                       |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV4_GTPU_EH_IPV6_TCP          | ipv6-tcp                                       |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV4_GTPU_IPV6                 | ipv6                                           |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV4_GTPU_IPV6_UDP             | ipv6-udp                                       |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV4_GTPU_IPV6_TCP             | ipv6-tcp                                       |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV6_GTPU_EH_IPV4              | ipv4                                           |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV6_GTPU_EH_IPV4_UDP          | ipv4-udp                                       |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV6_GTPU_EH_IPV4_TCP          | ipv4-tcp                                       |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV6_GTPU_IPV4                 | ipv4                                           |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV6_GTPU_IPV4_UDP             | ipv4-udp                                       |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV6_GTPU_IPV4_TCP             | ipv4-tcp                                       |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV6_GTPU_EH_IPV6              | ipv6                                           |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV6_GTPU_EH_IPV6_UDP          | ipv6-udp                                       |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV6_GTPU_EH_IPV6_TCP          | ipv6-tcp                                       |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV6_GTPU_IPV6                 | ipv6                                           |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV6_GTPU_IPV6_UDP             | ipv6-udp                                       |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV6_GTPU_IPV6_TCP             | ipv6-tcp                                       |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV4_GTPU                      | ipv4                                           |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV6_GTPU                      | ipv6                                           |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV4_GTPC                      | ipv4                                           |\n+    +------------------------------------+------------------------------------------------+\n+    | MAC_IPV6_GTPC                      | ipv6                                           |\n+    +------------------------------------+------------------------------------------------+\n+\n+\n+Prerequisites\n+=============\n+\n+1. Hardware:\n+\n+  - Intel E810 series ethernet cards: columbiaville_25g/columbiaville_100g/\n+\n+2. Software:\n+\n+  - dpdk: http://dpdk.org/git/dpdk\n+  - scapy: http://www.secdev.org/projects/scapy/\n+\n+.. note::\n+\n+    This rss feature designed for CVL NIC 25G and 100G, so below cases only support CVL NIC.\n+\n+3. Copy gtpogre pkg to /lib/firmware/updates/intel/ice/ddp/ice.pkg\n+   Then reload ice driver\n+\n+4. create a VF from a PF in DUT, set mac address for thi VF::\n+\n+    echo 1 > /sys/bus/pci/devices/0000\\:18\\:00.0/sriov_numvfs\n+    ip link set enp24s0f0 vf 0 mac 00:11:22:33:44:55\n+\n+5. bind VF to vfio-pci::\n+\n+    modprobe vfio-pci\n+    usertools/dpdk-devbind.py --force --bind=vfio-pci 0000:18:01.0\n+\n+.. note::\n+\n+    The kernel must be >= 3.6+ and VT-d must be enabled in bios.\n+\n+6. Launch the testpmd to configuration queue of rx and tx number 16 in DUT::\n+\n+    testpmd>./x86_64-native-linuxapp-gcc/app/dpdk-testpmd  -c 0xff -n 4 -w 0000:18:01.0 -- -i --rxq=16 --txq=16\n+    testpmd>set fwd rxonly\n+    testpmd>set verbose 1\n+\n+7. For test case \"parse PFCP over GRE packet\", we need to add print log\n+   in testpmd to show the PFCP ptype, then compile DPDK again::\n+\n+    diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c\n+    index af5a28d84..37d996380 100644\n+    --- a/drivers/net/iavf/iavf_rxtx.c\n+    +++ b/drivers/net/iavf/iavf_rxtx.c\n+    @@ -1692,6 +1692,7 @@ iavf_rx_scan_hw_ring_flex_rxd(struct iavf_rx_queue *rxq)\n+\n+                            mb->packet_type = ptype_tbl[IAVF_RX_FLEX_DESC_PTYPE_M &\n+                                    rte_le_to_cpu_16(rxdp[j].wb.ptype_flex_flags0)];\n+    +                       printf(\"ptype: %3d\\n\", IAVF_RX_FLEX_DESC_PTYPE_M & rte_le_to_cpu_16(rxdp[j].wb.ptype_flex_flags0));\n+                            iavf_flex_rxd_to_vlan_tci(mb, &rxdp[j]);\n+                            rxq->rxd_to_pkt_fields(rxq, mb, &rxdp[j]);\n+                            stat_err0 = rte_le_to_cpu_16(rxdp[j].wb.status_error0);\n+    @@ -2346,6 +2347,7 @@ iavf_set_rx_function(struct rte_eth_dev *dev)\n+                    IAVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);\n+            struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(dev->data->dev_private);\n+\n+    +#if 0\n+     #ifdef RTE_ARCH_X86\n+            struct iavf_rx_queue *rxq;\n+            int i;\n+    @@ -2425,6 +2427,7 @@ iavf_set_rx_function(struct rte_eth_dev *dev)\n+\n+                    return;\n+            }\n+    +#endif\n+     #endif\n+\n+            if (dev->data->scattered_rx) {\n+\n+8. start scapy and configuration NVGRE and GTP profile in tester\n+   scapy::\n+\n+    >>> import sys\n+    >>> from scapy.contrib.gtp import *\n+\n+\n+toeplitz cases\n+==============\n+\n+all the test cases in the pattern::\n+\n+    outer ipv4 + inner ipv4\n+    outer ipv4 + inner ipv6\n+    outer ipv6 + inner ipv4\n+    outer ipv6 + inner ipv6\n+\n+run the same test steps as below:\n+\n+1. validate rule.\n+2. create rule and list rule.\n+3. send a basic hit pattern packet,record the hash value.\n+   check the packet distributed to queue by rss.\n+4. send hit pattern packets with changed input set in the rule.\n+   check the received packets have different hash value with basic packet.\n+   check all the packets are distributed to queues by rss.\n+5. send hit pattern packets with changed input set not in the rule.\n+   check the received packet have same hash value with the basic packet.\n+   check all the packets are distributed to queues by rss.\n+   note: if there is not this type packet in the case, omit this step.\n+\n+6. destroy the rule and list rule. check the flow list has no rule.\n+\n+\n+\n+Pattern: outer ipv4 + inner ipv4\n+--------------------------------\n+\n+The Ptype of GTPoGRE is parsed same as GTP packet, so they match gtp RSS rule.\n+We just need to add the GTPoGRE packet to the packets check.\n+we need to add GTPoGRE packet to \"basic hit pattern packets\",\n+\"hit pattern/defined input set\" and \"hit pattern/not defined input set\".\n+the GTPoGRE packet format in this pattern is to add::\n+\n+    IP(proto=0x2F)/GRE(proto=0x0800)/\n+\n+after Ether layer, before IP layer, just like::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+Test case: MAC_IPV4_GTPU_EH_IPV4 with UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+\n+DL case\n+\n+basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_L3DST\n+:::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.10.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.10.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_L3SRC\n+:::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.10.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.10.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4\n+:::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.10.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.10.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.10.1\", src=\"192.168.10.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+UL case:\n+\n+   basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_L3DST\n+:::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_L3DST.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_L3SRC\n+:::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_L3SRC.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4\n+:::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4.\n+\n+Test case: MAC_IPV4_GTPU_EH_IPV4_UDP with UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+\n+DL case\n+\n+basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3SRC_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3SRC_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3DST_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3DST_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.10.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3\n+::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+UL case\n+\n+basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP_L3DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3DST.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP_L3SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3SRC.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP_L3SRC_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3SRC_L4SRC.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP_L3SRC_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3SRC_L4DST.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP_L3DST_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3DST_L4SRC.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP_L3DST_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3DST_L4DST.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L4DST.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L4SRC.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP_L3\n+::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP.\n+\n+\n+Test case: MAC_IPV4_GTPU_EH_IPV4_TCP with UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+\n+DL case\n+\n+basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP_L3DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP_L3SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP_L3SRC_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP_L3SRC_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP_L3DST_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP_L3DST_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp / end actions rss types ipv4-tcp l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.10.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp / end actions rss types ipv4-tcp l4-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP_L3\n+::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / tcp / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+UL case\n+\n+basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP_L3DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3DST.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP_L3SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3SRC.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP_L3SRC_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3SRC_L4SRC.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP_L3SRC_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3SRC_L4DST.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP_L3DST_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3DST_L4SRC.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP_L3DST_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3DST_L4DST.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss types ipv4-tcp l4-dst-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L4DST.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss types ipv4-tcp l4-src-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L4SRC.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP_L3\n+::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP.\n+\n+\n+Test case: MAC_IPV4_GTPU_EH_IPV4 without UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_L3DST\n+::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.10.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.10.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.10.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.10.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_L3SRC\n+:::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    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+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.10.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.10.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.10.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.10.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4\n+:::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.10.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.10.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.10.1\", src=\"192.168.10.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+Test case: MAC_IPV4_GTPU_EH_IPV4_UDP without UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP_L3DST\n+::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP_L3SRC\n+::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP_L3SRC_L4SRC\n+::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP_L3SRC_L4DST\n+::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP_L3DST_L4SRC\n+::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP_L3DST_L4DST\n+::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP_L4DST\n+::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.10.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.10.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP_L4SRC\n+::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP_L3\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    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+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP\n+::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+\n+Test case: MAC_IPV4_GTPU_EH_IPV4_TCP without UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP_L3DST\n+::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP_L3SRC\n+::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP_L3SRC_L4SRC\n+::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP_L3SRC_L4DST\n+::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP_L3DST_L4SRC\n+::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP_L3DST_L4DST\n+::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP_L4DST\n+::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss types ipv4-tcp l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.10.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.10.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP_L4SRC\n+::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss types ipv4-tcp l4-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP_L3\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP\n+::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+\n+Test case: MAC_IPV4_GTPU_IPV4\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_L3DST\n+:::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.10.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.10.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_L3SRC\n+:::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.10.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.10.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4\n+:::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.10.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.10.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.10.1\", src=\"192.168.10.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_gtpu\n+::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss types gtpu end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123457)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.10.1\", src=\"192.168.10.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+Test case: MAC_IPV4_GTPU_IPV4_UDP\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP_L3DST\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP_L3SRC\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP_L3SRC_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP_L3SRC_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP_L3DST_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP_L3DST_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP_L4DST\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.10.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP_L4SRC\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP_L3\n+::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP\n+:::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/UDP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+\n+Test case: MAC_IPV4_GTPU_IPV4_TCP\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP_L3DST\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP_L3SRC\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP_L3SRC_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP_L3SRC_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP_L3DST_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP_L3DST_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss types ipv4-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP_L4DST\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss types ipv4-tcp l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.10.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP_L4SRC\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss types ipv4-tcp l4-src-only end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP_L3\n+::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+hit pattern but not defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP\n+:::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end\n+\n+hit pattern and defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=12, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=13)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.10.1\", dst=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.10.2\")/TCP(sport=22, dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+\n+\n+Pattern: outer ipv4 + inner ipv6\n+--------------------------------\n+\n+reconfig all the cases of \"Pattern: outer ipv4 + inner ipv4\"\n+\n+    rule:\n+        change inner ipv4 to ipv6, change ipv4-udp to ipv6-udp, change ipv4-tcp to ipv6-tcp.\n+    packets:\n+        change the packet's inner L3 layer from IP to IPv6;\n+        change the ipv4 address to ipv6 address.\n+\n+Pattern: outer ipv6 + inner ipv4\n+--------------------------------\n+\n+reconfig all the cases of \"Pattern: outer ipv4 + inner ipv4\"\n+\n+    rule:\n+        change outer ipv4 to ipv6.\n+    packets:\n+        change the packet's outer L3 layer from::\n+\n+          IP(proto=0x2F)/GRE(proto=0x0800)/IP()\n+\n+        to::\n+\n+          IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()\n+\n+        after Ether layer, before IP layer, just like::\n+\n+          sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+\n+Pattern: outer ipv6 + inner ipv6\n+--------------------------------\n+\n+reconfig all the cases of \"Pattern: outer ipv4 + inner ipv4\"\n+\n+    rule:\n+        change outer ipv4 to ipv6.\n+        change inner ipv4 to ipv6, change ipv4-udp to ipv6-udp, change ipv4-tcp to ipv6-tcp.\n+    packets:\n+        change the packet's inner L3 layer from IP to IPv6;\n+        change the ipv4 address to ipv6 address.\n+        change the packet's outer L3 layer from::\n+\n+          IP(proto=0x2F)/GRE(proto=0x0800)/IP()\n+\n+        to::\n+\n+          IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()\n+\n+        after Ether layer, before IP layer, just like::\n+\n+          sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+\n+symmetric cases\n+===============\n+\n+all the test cases run the same test steps as below:\n+\n+1. validate rule.\n+2. create rule and list rule.\n+3. send a basic hit pattern packet,record the hash value.\n+4. send a hit pattern packet with switched value of input set in the rule.\n+   check the received packets have same hash value.\n+   check both the packets are distributed to queues by rss.\n+5. destroy the rule and list rule.\n+6. send the packet in step 4.\n+   check the received packet has different hash value with which in step 3(including the case has no hash value).\n+\n+Pattern: symmetric outer ipv4 + inner ipv4\n+------------------------------------------\n+\n+Test case: symmetric MAC_IPV4_GTPU_EH_IPV4 with UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+Subcase: symmetric MAC_IPV4_GTPU_EH_DL_IPV4\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end\n+\n+hit pattern/defined input set:\n+MAC_IPV4_GTPU_EH_DL_IPV4 nonfrag::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\")/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.2\",dst=\"192.168.0.1\")/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+MAC_IPV4_GTPU_EH_DL_IPV4 frag::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.3\",dst=\"192.168.0.8\",frag=6)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.8\",dst=\"192.168.0.3\",frag=6)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+MAC_IPV4_GTPU_EH_DL_IPV4_ICMP::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.10\",dst=\"192.168.0.20\")/ICMP()/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.20\",dst=\"192.168.0.10\")/ICMP()/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+MAC_IPV4_GTPU_EH_DL_IPV4_UDP::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.10\",dst=\"192.168.0.20\")/UDP()/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.20\",dst=\"192.168.0.10\")/UDP()/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+\n+Subcase: symmetric MAC_IPV4_GTPU_EH_UL_IPV4\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase symmetric MAC_IPV4_GTPU_EH_DL_IPV4.\n+\n+\n+Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_UDP with UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+Subcase: symmetric MAC_IPV4_GTPU_EH_DL_IPV4_UDP\n+:::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.2\", dst=\"192.168.0.1\")/UDP(sport=22,dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=23,dport=22)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.2\", dst=\"192.168.0.1\")/UDP(sport=23,dport=22)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+\n+Subcase: symmetric MAC_IPV4_GTPU_EH_UL_IPV4_UDP\n+:::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase symmetric MAC_IPV4_GTPU_EH_DL_IPV4.\n+\n+\n+Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_TCP with UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+the rules and packets in this test case is similar to \"Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_UDP with UL/DL\"\n+just change some parts of rules and packets::\n+\n+    rule:\n+        change inner udp to tcp, change ipv4-udp to ipv4-tcp\n+    packets:\n+        change the packet's inner L4 layer UDP to TCP\n+\n+Subcase: symmetric MAC_IPV4_GTPU_EH_DL_IPV4_TCP\n+:::::::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: symmetric MAC_IPV4_GTPU_EH_UL_IPV4_TCP\n+:::::::::::::::::::::::::::::::::::::::::::::::\n+\n+Test case: symmetric MAC_IPV4_GTPU_EH_IPV4 without UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv6 / udp / gtpu / gtp_psc / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+MAC_IPV4_GTPU_EH_DL_IPV4 nonfrag::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\")/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.2\",dst=\"192.168.0.1\")/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+MAC_IPV4_GTPU_EH_DL_IPV4 frag::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.3\",dst=\"192.168.0.8\",frag=6)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.8\",dst=\"192.168.0.3\",frag=6)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+MAC_IPV4_GTPU_EH_DL_IPV4_ICMP::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.10\",dst=\"192.168.0.20\")/ICMP()/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.20\",dst=\"192.168.0.10\")/ICMP()/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+MAC_IPV4_GTPU_EH_DL_IPV4_UDP::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.10\",dst=\"192.168.0.20\")/UDP()/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.20\",dst=\"192.168.0.10\")/UDP()/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+\n+Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_UDP without UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+MAC_IPV4_GTPU_EH_DL_IPV4_UDP::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.2\", dst=\"192.168.0.1\")/UDP(sport=22,dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=23,dport=22)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src=\"192.168.0.2\", dst=\"192.168.0.1\")/UDP(sport=23,dport=22)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+MAC_IPV4_GTPU_EH_UL_IPV4_UDP::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.2\", dst=\"192.168.0.1\")/UDP(sport=22,dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=23,dport=22)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src=\"192.168.0.2\", dst=\"192.168.0.1\")/UDP(sport=23,dport=22)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+\n+Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_TCP without UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+the rules and packets in this test case is similar to \"Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_UDP without UL/DL\"\n+just change some parts of rules and packets::\n+\n+    rule:\n+        change inner udp to tcp, change ipv4-udp to ipv4-tcp\n+    packets:\n+        change the packet's inner L4 layer UDP to TCP\n+\n+\n+Test case: symmetric MAC_IPV4_GTPU_IPV4\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+MAC_IPV4_GTPU_IPV4 nonfrag::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\")/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.2\",dst=\"192.168.0.1\")/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+MAC_IPV4_GTPU_IPV4 frag::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.3\",dst=\"192.168.0.8\",frag=6)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.8\",dst=\"192.168.0.3\",frag=6)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+MAC_IPV4_GTPU_IPV4_ICMP::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.10\",dst=\"192.168.0.20\")/ICMP()/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.20\",dst=\"192.168.0.10\")/ICMP()/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+MAC_IPV4_GTPU_IPV4_UDP::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.10\",dst=\"192.168.0.20\")/UDP()/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.20\",dst=\"192.168.0.10\")/UDP()/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+Test case: symmetric MAC_IPV4_GTPU_IPV4_UDP\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.2\", dst=\"192.168.0.1\")/UDP(sport=22,dport=23)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.1\", dst=\"192.168.0.2\")/UDP(sport=23,dport=22)/(\"X\"*480)], iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src=\"192.168.0.2\", dst=\"192.168.0.1\")/UDP(sport=23,dport=22)/(\"X\"*480)], iface=\"enp134s0f0\")\n+\n+\n+Test case: symmetric MAC_IPV4_GTPU_IPV4_TCP\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+the rules and packets in this test case is similar to \"Test case: symmetric MAC_IPV4_GTPU_IPV4_UDP\"\n+just change some parts of rules and packets::\n+\n+    rule:\n+        change inner udp to tcp, change ipv4-udp to ipv4-tcp\n+    packets:\n+        change the packet's inner L4 layer UDP to TCP\n+\n+\n+\n+Pattern: symmetric outer ipv4 + inner ipv6\n+------------------------------------------\n+\n+reconfig all the cases of \"Pattern: symmetric outer ipv4 + inner ipv4\"\n+\n+    rule:\n+        change inner ipv4 to ipv6, change ipv4-udp to ipv6-udp, change ipv4-tcp to ipv6-tcp.\n+    packets:\n+        change the packet's inner L3 layer from IP to IPv6;\n+        change the ipv4 address to ipv6 address.\n+\n+\n+Pattern: symmetric outer ipv6 + inner ipv4\n+------------------------------------------\n+\n+reconfig all the cases of \"Pattern: symmetric outer ipv4 + inner ipv4\"\n+\n+    rule:\n+        change outer ipv4 to ipv6.\n+    packets:\n+        change the packet's outer L3 layer from::\n+\n+          IP(proto=0x2F)/GRE(proto=0x0800)/IP()\n+\n+        to::\n+\n+          IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()\n+\n+        after Ether layer, before IP layer, just like::\n+\n+          sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+\n+Pattern: symmetric outer ipv6 + inner ipv6\n+------------------------------------------\n+\n+reconfig all the cases of \"Pattern: symmetric outer ipv4 + inner ipv4\"\n+\n+    rule:\n+        change outer ipv4 to ipv6.\n+        change inner ipv4 to ipv6, change ipv4-udp to ipv6-udp, change ipv4-tcp to ipv6-tcp.\n+    packets:\n+        change the packet's inner L3 layer from IP to IPv6;\n+        change the ipv4 address to ipv6 address.\n+        change the packet's outer L3 layer from::\n+\n+          IP(proto=0x2F)/GRE(proto=0x0800)/IP()\n+\n+        to::\n+\n+          IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()\n+\n+        after Ether layer, before IP layer, just like::\n+\n+          sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+\n+inner L4 protocol hash case\n+===========================\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP/TCP\n+-----------------------------------\n+1. create rules::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end\n+\n+2. send packets::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+3. check the two packets received with different hash values, and distributed to queue by RSS.\n+\n+4. flush the rules, send the two packets again, check they are distributed to the same queue::\n+\n+    testpmd> flow flush 0\n+\n+Subcase: MAC_IPV6_GTPU_IPV4_UDP/TCP\n+-----------------------------------\n+1. create rules::\n+\n+    flow create 0 ingress pattern eth / ipv6 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end\n+    flow create 0 ingress pattern eth / ipv6 / udp / gtpu / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end\n+\n+2. send packets::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+3. check the two packets received with different hash values, and distributed to queue by RSS.\n+\n+4. flush the rules, send the two packets again, check they are distributed to the same queue::\n+\n+    testpmd> flow flush 0\n+\n+Subcase: MAC_IPV4_GTPU_IPV6_UDP/TCP\n+-----------------------------------\n+1. create rules::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end\n+\n+2. send packets::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(dst=\"1111:2222:3333:4444:5555:6666:7777:8888\",src=\"2222:3333:4444:5555:6666:7777:8888:9999\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(dst=\"1111:2222:3333:4444:5555:6666:7777:8888\",src=\"2222:3333:4444:5555:6666:7777:8888:9999\")/UDP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+3. check the two packets received with different hash values, and distributed to queue by RSS.\n+\n+4. flush the rules, send the two packets again, check they are distributed to the same queue::\n+\n+    testpmd> flow flush 0\n+\n+Subcase: MAC_IPV6_GTPU_IPV6_UDP/TCP\n+-----------------------------------\n+1. create rules::\n+\n+    flow create 0 ingress pattern eth / ipv6 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end\n+    flow create 0 ingress pattern eth / ipv6 / udp / gtpu / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end\n+\n+2. send packets::\n+\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(dst=\"1111:2222:3333:4444:5555:6666:7777:8888\",src=\"2222:3333:4444:5555:6666:7777:8888:9999\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp134s0f0\")\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(dst=\"1111:2222:3333:4444:5555:6666:7777:8888\",src=\"2222:3333:4444:5555:6666:7777:8888:9999\")/UDP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp134s0f0\")\n+\n+3. check the two packets received with different hash values, and distributed to queue by RSS.\n+\n+4. flush the rules, send the two packets again, check they are distributed to the same queue::\n+\n+    testpmd> flow flush 0\n+\n+parse PFCP over GRE packet\n+==========================\n+Send packet::\n+\n+    sendp(Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(sport=22, dport=8805)/PFCP(Sfield=0),iface=\"enp216s0f0\")\n+    sendp(Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(sport=22, dport=8805)/PFCP(Sfield=1, SEID=123),iface=\"enp216s0f0\")\n+    sendp(Ether(dst=\"00:11:22:33:44:55\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(sport=22, dport=8805)/PFCP(Sfield=0),iface=\"enp216s0f0\")\n+    sendp(Ether(dst=\"00:11:22:33:44:55\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(sport=22, dport=8805)/PFCP(Sfield=1, SEID=256),iface=\"enp216s0f0\")\n+\n+It can be parsed as MAC_IPV4_PFCP_NODE::\n+\n+    ptype: 351\n+    port 0/queue 0: received 1 packets\n+      src=00:00:00:00:00:00 - dst=00:11:22:33:44:55 - type=0x0800 - length=82 - nb_segs=1 - sw ptype: L2_ETHER L3_IPV4 TUNNEL_GRE INNER_L3_IPV4 INNER_L4_UDP  - l2_len=14 - l3_len=20 - tunnel_len=4 - inner_l3_len=20 - inner_l4_len=8 - Receive queue=0x0\n+      ol_flags: PKT_RX_L4_CKSUM_UNKNOWN PKT_RX_IP_CKSUM_UNKNOWN PKT_RX_OUTER_L4_CKSUM_UNKNOWN\n+\n+Send packet::\n+\n+    sendp(Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(sport=22, dport=8805)/PFCP(Sfield=1, SEID=123),iface=\"enp216s0f0\")\n+\n+It can be parsed as MAC_IPV4_PFCP_SESSION::\n+\n+    ptype: 352\n+    port 0/queue 0: received 1 packets\n+      src=00:00:00:00:00:00 - dst=00:11:22:33:44:55 - type=0x0800 - length=82 - nb_segs=1 - sw ptype: L2_ETHER L3_IPV4 TUNNEL_GRE INNER_L3_IPV4 INNER_L4_UDP  - l2_len=14 - l3_len=20 - tunnel_len=4 - inner_l3_len=20 - inner_l4_len=8 - Receive queue=0x0\n+      ol_flags: PKT_RX_L4_CKSUM_UNKNOWN PKT_RX_IP_CKSUM_UNKNOWN PKT_RX_OUTER_L4_CKSUM_UNKNOWN\n+\n+Send packet::\n+\n+    sendp(Ether(dst=\"00:11:22:33:44:55\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(sport=22, dport=8805)/PFCP(Sfield=0),iface=\"enp216s0f0\")\n+\n+It can be parsed as MAC_IPV6_PFCP_NODE::\n+\n+    ptype: 353\n+    port 0/queue 0: received 1 packets\n+      src=00:00:00:00:00:00 - dst=00:11:22:33:44:55 - type=0x86dd - length=122 - nb_segs=1 - sw ptype: L2_ETHER L3_IPV6 TUNNEL_GRE INNER_L3_IPV6 INNER_L4_UDP  - l2_len=14 - l3_len=40 - tunnel_len=4 - inner_l3_len=40 - inner_l4_len=8 - Receive queue=0x0\n+      ol_flags: PKT_RX_L4_CKSUM_UNKNOWN PKT_RX_IP_CKSUM_UNKNOWN PKT_RX_OUTER_L4_CKSUM_UNKNOWN\n+\n+Send packet::\n+\n+    sendp(Ether(dst=\"00:11:22:33:44:55\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(sport=22, dport=8805)/PFCP(Sfield=1, SEID=256),iface=\"enp216s0f0\")\n+\n+It can be parsed as MAC_IPV6_PFCP_SESSION::\n+\n+    ptype: 354\n+    port 0/queue 0: received 1 packets\n+      src=00:00:00:00:00:00 - dst=00:11:22:33:44:55 - type=0x86dd - length=122 - nb_segs=1 - sw ptype: L2_ETHER L3_IPV6 TUNNEL_GRE INNER_L3_IPV6 INNER_L4_UDP  - l2_len=14 - l3_len=40 - tunnel_len=4 - inner_l3_len=40 - inner_l4_len=8 - Receive queue=0x0\n+      ol_flags: PKT_RX_L4_CKSUM_UNKNOWN PKT_RX_IP_CKSUM_UNKNOWN PKT_RX_OUTER_L4_CKSUM_UNKNOWN\ndiff --git a/test_plans/cvl_advanced_rss_gtpogre_test_plan.rst b/test_plans/cvl_advanced_rss_gtpogre_test_plan.rst\nnew file mode 100644\nindex 00000000..30977694\n--- /dev/null\n+++ b/test_plans/cvl_advanced_rss_gtpogre_test_plan.rst\n@@ -0,0 +1,1861 @@\n+.. Copyright (c) <2021>, Intel Corporation\n+         All rights reserved.\n+\n+   Redistribution and use in source and binary forms, with or without\n+   modification, are permitted provided that the following conditions\n+   are met:\n+\n+   - Redistributions of source code must retain the above copyright\n+     notice, this list of conditions and the following disclaimer.\n+\n+   - Redistributions in binary form must reproduce the above copyright\n+     notice, this list of conditions and the following disclaimer in\n+     the documentation and/or other materials provided with the\n+     distribution.\n+\n+   - Neither the name of Intel Corporation nor the names of its\n+     contributors may be used to endorse or promote products derived\n+     from this software without specific prior written permission.\n+\n+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n+   \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n+   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n+   COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n+   INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n+   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n+   SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n+   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\n+   STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n+   OF THE POSSIBILITY OF SUCH DAMAGE.\n+\n+=============================\n+CVL: Advanced RSS FOR GTPoGRE\n+=============================\n+\n+Description\n+===========\n+GTP over GRE feature enhances packet core performance in 4G LTE and 5G networks.\n+In GTP over GRE market segment package the parse graph is expanded to look for\n+a GTP or PFCP header after parsing a GRE header. GTP over GRE packets contain\n+two tunnel protocols.\n+The next header after the GRE header may be IPv4 or IPv6.  If an IPv6 header\n+is present, extension headers may be present. Then unlike in other types of\n+packages in case of finding UDP header parser does not assume UDP_LAST protocol\n+after GRE tunnel, but looks for GTP or PFCP headers. In case of finding those\n+headers the GRE header and the next IP header found in the packet after the\n+GRE header shall not be reported. Parser reports one of the already existing\n+GTP or PFCP ptypes.\n+\n+Pattern and input set\n+---------------------\n+.. table::\n+\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    | Hash function: toeplitz                                                                                                                      |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    | Packet Type                   | Pattern                   | All the Input Set options in combination                                         |\n+    +===============================+===========================+==================================================================================+\n+    | GTP-U data packet types       | MAC_IPV4_GTPU_IPV4        | gtpu, ipv4, l3-src-only, l3-dst-only                                             |\n+    | IPv4/IPv6 transport           |                           |                                                                                  |\n+    | IPv4/IPv6 payload             |                           |                                                                                  |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV4_GTPU_IPV4_UDP    | gtpu, ipv4-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only, ipv4         |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV4_GTPU_IPV4_TCP    | gtpu, ipv4-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only, ipv4         |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV4_GTPU_IPV6        | gtpu, ipv6, l3-src-only, l3-dst-only                                             |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV4_GTPU_IPV6_UDP    | gtpu, ipv6-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only, ipv6         |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV4_GTPU_IPV6_TCP    | gtpu, ipv6-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only, ipv6         |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV6_GTPU_IPV4        | gtpu, ipv4, l3-src-only, l3-dst-only                                             |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV6_GTPU_IPV4_UDP    | gtpu, ipv4-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only, ipv4         |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV6_GTPU_IPV4_TCP    | gtpu, ipv4-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only, ipv4         |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV6_GTPU_IPV6        | gtpu, ipv6, l3-src-only, l3-dst-only                                             |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV6_GTPU_IPV6_UDP    | gtpu, ipv6-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only, ipv6         |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV6_GTPU_IPV6_TCP    | gtpu, ipv6-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only, ipv6         |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV4_GTPU_EH_IPV4     | gtpu, ipv4, l3-src-only, l3-dst-only                                             |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV4_GTPU_EH_IPV4_UDP | gtpu, ipv4-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only, ipv4         |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV4_GTPU_EH_IPV4_TCP | gtpu, ipv4-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only, ipv4         |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV4_GTPU_EH_IPV6     | gtpu, ipv6, l3-src-only, l3-dst-only                                             |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV4_GTPU_EH_IPV6_UDP | gtpu, ipv6-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only, ipv6         |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV4_GTPU_EH_IPV6_TCP | gtpu, ipv6-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only, ipv6         |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV6_GTPU_EH_IPV4     | gtpu, ipv4, l3-src-only, l3-dst-only                                             |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV6_GTPU_EH_IPV4_UDP | gtpu, ipv4-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only, ipv4         |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV6_GTPU_EH_IPV4_TCP | gtpu, ipv4-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only, ipv4         |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV6_GTPU_EH_IPV6     | gtpu, ipv6, l3-src-only, l3-dst-only                                             |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV6_GTPU_EH_IPV6_UDP | gtpu, ipv6-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only, ipv6         |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+    |                               | MAC_IPV6_GTPU_EH_IPV6_TCP | gtpu, ipv6-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only, ipv6         |\n+    +-------------------------------+---------------------------+----------------------------------------------------------------------------------+\n+\n+.. table::\n+\n+    +-------------------------------+---------------------------+-------------------+\n+    | Hash function: Symmetric_toeplitz                                             |\n+    +-------------------------------+---------------------------+-------------------+\n+    | Packet Type                   | Pattern                   | Input Set         |\n+    +===============================+===========================+===================+\n+    | GTP-U data packet types       | MAC_IPV4_GTPU_IPV4        | ipv4              |\n+    | IPv4/IPv6 transport           |                           |                   |\n+    | IPv4/IPv6 payload             |                           |                   |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV4_GTPU_IPV4_UDP    | ipv4-udp          |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV4_GTPU_IPV4_TCP    | ipv4-tcp          |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV4_GTPU_IPV6        | ipv6              |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV4_GTPU_IPV6_UDP    | ipv6-udp          |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV4_GTPU_IPV6_TCP    | ipv6-tcp          |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV6_GTPU_IPV4        | ipv4              |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV6_GTPU_IPV4_UDP    | ipv4-udp          |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV6_GTPU_IPV4_TCP    | ipv4-tcp          |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV6_GTPU_IPV6        | ipv6              |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV6_GTPU_IPV6_UDP    | ipv6-udp          |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV6_GTPU_IPV6_TCP    | ipv6-tcp          |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV4_GTPU_EH_IPV4     | ipv4              |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV4_GTPU_EH_IPV4_UDP | ipv4-udp          |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV4_GTPU_EH_IPV4_TCP | ipv4-tcp          |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV4_GTPU_EH_IPV6     | ipv6              |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV4_GTPU_EH_IPV6_UDP | ipv6-udp          |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV4_GTPU_EH_IPV6_TCP | ipv6-tcp          |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV6_GTPU_EH_IPV4     | ipv4              |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV6_GTPU_EH_IPV4_UDP | ipv4-udp          |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV6_GTPU_EH_IPV4_TCP | ipv4-tcp          |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV6_GTPU_EH_IPV6     | ipv6              |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV6_GTPU_EH_IPV6_UDP | ipv6-udp          |\n+    +-------------------------------+---------------------------+-------------------+\n+    |                               | MAC_IPV6_GTPU_EH_IPV6_TCP | ipv6-tcp          |\n+    +-------------------------------+---------------------------+-------------------+\n+\n+.. note::\n+\n+   The ptype of GTPoGRE is parsed the same as GTP packet,\n+   so they match gtpu RSS rule.\n+\n+Prerequisites\n+=============\n+\n+1. Hardware:\n+\n+   - Intel E810 series ethernet cards: columbiaville_25g/columbiaville_100g/\n+\n+2. Software:\n+\n+   - dpdk: http://dpdk.org/git/dpdk\n+   - scapy: http://www.secdev.org/projects/scapy/\n+\n+.. note::\n+\n+   This rss feature designed for CVL NIC 25G and 100g, so below the case only support CVL nic.\n+\n+3. Copy gtpogre pkg to /lib/firmware/updates/intel/ice/ddp/ice.pkg\n+   Then reload ice driver\n+\n+4. bind the CVL port to dpdk driver in DUT::\n+\n+    modprobe vfio-pci\n+    usertools/dpdk-devbind.py --force --bind=vfio-pci 0000:3b:00.0\n+\n+.. note::\n+\n+   The kernel must be >= 3.6+ and VT-d must be enabled in bios.\n+\n+5. Launch the testpmd to configuration queue of rx and tx number 64 in DUT::\n+\n+    testpmd>./x86_64-native-linuxapp-gcc/app/dpdk-testpmd  -c 0xff -n 4 -- -i --rxq=64 --txq=64 --disable-rss --port-topology=loop\n+    testpmd>set fwd rxonly\n+    testpmd>set verbose 1\n+\n+6. For test case \"parse PFCP over GRE packet\", we need to add print log\n+   in testpmd to show the PFCP ptype, then compile DPDK again::\n+\n+    diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c\n+    index 4136d045e..17e588f5f 100644\n+    --- a/drivers/net/ice/ice_rxtx.c\n+    +++ b/drivers/net/ice/ice_rxtx.c\n+    @@ -1573,6 +1573,7 @@ ice_rx_scan_hw_ring(struct ice_rx_queue *rxq)\n+                            pkt_flags = ice_rxd_error_to_pkt_flags(stat_err0);\n+                            mb->packet_type = ptype_tbl[ICE_RX_FLEX_DESC_PTYPE_M &\n+                                    rte_le_to_cpu_16(rxdp[j].wb.ptype_flex_flags0)];\n+    +                       printf(\"ptype: %3d\\n\", ICE_RX_FLEX_DESC_PTYPE_M & rte_le_to_cpu_16(rxdp[j].wb.ptype_flex_flags0));\n+                            ice_rxd_to_vlan_tci(mb, &rxdp[j]);\n+                            rxq->rxd_to_pkt_fields(rxq, mb, &rxdp[j]);\n+\n+    @@ -3048,6 +3049,7 @@ ice_set_rx_function(struct rte_eth_dev *dev)\n+            PMD_INIT_FUNC_TRACE();\n+            struct ice_adapter *ad =\n+                    ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);\n+    +#if 0\n+     #ifdef RTE_ARCH_X86\n+            struct ice_rx_queue *rxq;\n+            int i;\n+    @@ -3126,7 +3128,7 @@ ice_set_rx_function(struct rte_eth_dev *dev)\n+                    }\n+                    return;\n+            }\n+    -\n+    +#endif\n+     #endif\n+\n+7. start scapy and configuration NVGRE and GTP profile in tester\n+   scapy::\n+\n+    >>> import sys\n+    >>> from scapy.contrib.gtp import *\n+\n+toeplitz cases\n+==============\n+all the test cases in the pattern::\n+\n+    outer ipv4 + inner ipv4\n+    outer ipv4 + inner ipv6\n+    outer ipv6 + inner ipv4\n+    outer ipv6 + inner ipv6\n+\n+run the same test steps as below:\n+\n+1. validate rule.\n+2. create rule and list rule.\n+3. send a basic hit pattern packet,record the hash value.\n+   check the packet distributed to queue by rss.\n+4. send hit pattern packets with changed input set in the rule.\n+   check the received packets have different hash value with basic packet.\n+   check all the packets are distributed to queues by rss.\n+5. send hit pattern packets with changed input set not in the rule.\n+   check the received packet have same hash value with the basic packet.\n+   check all the packets are distributed to queues by rss.\n+   note: if there is not this type packet in the case, omit this step.\n+6. send not hit pattern packets with input set in the rule.\n+   check the received packets have not hash value, and distributed to queue 0.\n+   note: if there is not this type packet in the case, omit this step.\n+7. distroy the rule and list rule.\n+8. send same packets with step 3.\n+   check the received packets have not hash value, and distributed to queue 0,\n+\n+Pattern: outer ipv4 + inner ipv4\n+--------------------------------\n+The Ptype of GTPoGRE is parsed same as GTP packet, so they match gtp RSS rule.\n+We just need to add the GTPoGRE packet to the packets check.\n+we need to add GTPoGRE packet to \"basic hit pattern packets\",\n+\"hit pattern/defined input set\" and \"hit pattern/not defined input set\".\n+the GTPoGRE packet format in this pattern is to add::\n+\n+    IP(proto=0x2F)/GRE(proto=0x0800)/\n+\n+after Ether layer, before IP layer, just like::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+\n+Test case: MAC_IPV4_GTPU_EH_IPV4 with UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+\n+DL case\n+\n+basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+all the DL cases have same pattern, so we send same\n+not hit pattern/not defined input set packets::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_L3DST\n+:::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_L3SRC\n+:::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4\n+:::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_GTPU\n+::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types gtpu end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+\n+UL case\n+\n+basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+all the UL cases have same pattern, so we send same\n+not hit pattern/not defined input set packets::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_L3DST\n+:::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_L3DST.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_L3SRC\n+:::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_L3SRC.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4\n+:::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_GTPU\n+::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss types gtpu end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_UL_IPV4_GTPU.\n+\n+\n+Test case: MAC_IPV4_GTPU_EH_IPV4_UDP with UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+\n+DL case\n+\n+basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+all the DL cases have same pattern, so we send same\n+not hit pattern/not defined input set packets::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=32, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=32, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3SRC_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3SRC_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=32, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3DST_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3DST_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=32, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/UDP(sport=32, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/UDP(sport=22, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP_IPV4\n+::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_UDP_GTPU\n+::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types gtpu end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/UDP(sport=32, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+UL case\n+\n+basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+all the UL cases have same pattern, so we send same\n+not hit pattern/not defined input set packets::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP_L3DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3DST.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP_L3SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3SRC.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP_L3SRC_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3DST_L4DST.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP_L3SRC_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3DST_L4SRC.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP_L3DST_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3SRC_L4DST.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP_L3DST_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L3SRC_L4SRC.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L4DST.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_L4SRC.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP_IPV4\n+::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_IPV4.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP.\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_UDP_GTPU\n+::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss types gtpu end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase MAC_IPV4_GTPU_EH_DL_IPV4_UDP_GTPU.\n+\n+\n+Test case: MAC_IPV4_GTPU_EH_IPV4_TCP with UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+the rules and packets in this test case is similar to \"Test case: MAC_IPV4_GTPU_EH_IPV4_UDP with UL/DL\"\n+just change some parts of rules and packets:\n+\n+    rule:\n+        change inner udp to tcp, change ipv4-udp to ipv4-tcp\n+    packets:\n+        if the packet's inner L4 layer is UDP, change it to TCP;\n+        if the packet's inner L4 layer is TCP, change it to UDP;\n+\n+DL case\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP_L3DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP_L3SRT\n+:::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP_L3DST_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP_L3DST_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP_L3SRC_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP_L3SRC_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP\n+:::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_DL_IPV4_TCP_GTPU\n+::::::::::::::::::::::::::::::::::::::::::\n+\n+UL case\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP_L3DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP_L3SRT\n+:::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP_L3DST_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP_L3DST_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP_L3SRC_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP_L3SRC_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP\n+:::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_UL_IPV4_TCP_GTPU\n+::::::::::::::::::::::::::::::::::::::::::\n+\n+\n+Test case: MAC_IPV4_GTPU_EH_IPV4 without UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+all the cases have same pattern, so we send same\n+not hit pattern/not defined input set packets::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_L3DST\n+::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_L3SRC\n+::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    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+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4\n+::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_GTPU\n+:::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types gtpu end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Test case: MAC_IPV4_GTPU_EH_IPV4_UDP without UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+all the cases have same pattern, so we send same\n+not hit pattern/not defined input set packets::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP_L3DST\n+::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=32, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=32, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP_L3SRC\n+::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=32, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=32, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP_L3SRC_L4SRC\n+::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP_L3SRC_L4DST\n+::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=32, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=32, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP_L3DST_L4SRC\n+::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP_L3DST_L4DST\n+::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=32, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=32, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP_L4DST\n+::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/UDP(sport=32, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/UDP(sport=32, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP_L4SRC\n+::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/UDP(sport=22, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/UDP(sport=22, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP_IPV4\n+:::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    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+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP\n+::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_UDP_GTPU\n+:::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types gtpu end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/UDP(sport=32, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/UDP(sport=32, dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Test case: MAC_IPV4_GTPU_EH_IPV4_TCP without UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+the rules and packets in this test case is similar to \"Test case: MAC_IPV4_GTPU_EH_IPV4_UDP without UL/DL\"\n+just change some parts of rules and packets:\n+\n+    rule:\n+        change inner udp to tcp, change ipv4-udp to ipv4-tcp\n+    packets:\n+        if the packet's inner L4 layer is UDP, change it to TCP;\n+        if the packet's inner L4 layer is TCP, change it to UDP;\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP_L3DST\n+::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP_L3SRT\n+::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP_L3DST_L4DST\n+::::::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP_L3DST_L4SRC\n+::::::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP_L3SRC_L4DST\n+::::::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP_L3SRC_L4SRC\n+::::::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP_L4DST\n+::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP_L4SRC\n+::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP\n+::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV4_TCP_GTPU\n+:::::::::::::::::::::::::::::::::::::::\n+\n+\n+Test case: MAC_IPV4_GTPU_IPV4\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+all the cases have same pattern, so we send same\n+not hit pattern/not defined input set packets::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_L3DST\n+:::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_L3SRC\n+:::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4\n+:::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_GTPU\n+::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss types gtpu end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Test case: MAC_IPV4_GTPU_IPV4_UDP\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+basic hit pattern packets are the same in this test case::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+all the cases have same pattern, so we send same\n+not hit pattern/not defined input set packets::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/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)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP_L3DST\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=32,dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP_L3SRC\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=32,dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP_L3SRC_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP_L3SRC_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=32,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP_L3DST_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP_L3DST_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=32,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP_L4DST\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/UDP(sport=32,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP_L4SRC\n+:::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP_IPV4\n+::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32,dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP\n+:::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.1.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.1.2\")/UDP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=32,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP_GTPU\n+::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types gtpu end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+hit pattern/not defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.1.1\", src=\"192.168.1.2\")/UDP(sport=32,dport=33)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+\n+Test case: MAC_IPV4_GTPU_IPV4_TCP\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+the rules and packets in this test case is similar to \"Test case: MAC_IPV4_GTPU_IPV4_UDP\"\n+just change some parts of rules and packets:\n+\n+    rule:\n+        change inner udp to tcp, change ipv4-udp to ipv4-tcp\n+    packets:\n+        if the packet's inner L4 layer is UDP, change it to TCP;\n+        if the packet's inner L4 layer is TCP, change it to UDP;\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP_L3DST\n+:::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP_L3SRT\n+:::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP_L3DST_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP_L3DST_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP_L3SRC_L4DST\n+:::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP_L3SRC_L4SRC\n+:::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP_L4DST\n+:::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP_L4SRC\n+:::::::::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP\n+:::::::::::::::::::::::::::::::\n+\n+Subcase: MAC_IPV4_GTPU_IPV4_TCP_GTPU\n+::::::::::::::::::::::::::::::::::::\n+\n+Pattern: outer ipv4 + inner ipv6\n+--------------------------------\n+\n+reconfig all the cases of \"Pattern: outer ipv4 + inner ipv4\"\n+\n+    rule:\n+        change inner ipv4 to ipv6, change ipv4-udp to ipv6-udp, change ipv4-tcp to ipv6-tcp.\n+    packets:\n+        change the packet's inner L3 layer from IP to IPv6;\n+        change the ipv4 address to ipv6 address.\n+\n+Pattern: outer ipv6 + inner ipv4\n+--------------------------------\n+\n+reconfig all the cases of \"Pattern: outer ipv4 + inner ipv4\"\n+\n+    rule:\n+        change outer ipv4 to ipv6.\n+    packets:\n+        change the packet's outer L3 layer from::\n+\n+          IP(proto=0x2F)/GRE(proto=0x0800)/IP()\n+\n+        to::\n+\n+          IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()\n+\n+        after Ether layer, before IP layer, just like::\n+\n+          sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Pattern: outer ipv6 + inner ipv6\n+--------------------------------\n+\n+reconfig all the cases of \"Pattern: outer ipv4 + inner ipv4\"\n+\n+    rule:\n+        change outer ipv4 to ipv6.\n+        change inner ipv4 to ipv6, change ipv4-udp to ipv6-udp, change ipv4-tcp to ipv6-tcp.\n+    packets:\n+        change the packet's inner L3 layer from IP to IPv6;\n+        change the ipv4 address to ipv6 address.\n+        change the packet's outer L3 layer from::\n+\n+          IP(proto=0x2F)/GRE(proto=0x0800)/IP()\n+\n+        to::\n+\n+          IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()\n+\n+        after Ether layer, before IP layer, just like::\n+\n+          sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+inner L4 protocal hash case\n+===========================\n+Subcase: MAC_IPV4_GTPU_IPV4_UDP/TCP\n+-----------------------------------\n+1. start testpmd without disable rss::\n+\n+    ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xff -n 4 -- -i --rxq=64 --txq=64 --port-topology=loop\n+\n+2. create rules::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end\n+\n+3. send packets::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+4. check the two packets received with different hash values, and distributed to queue by RSS.\n+\n+5. flush the rules, send the two packets again, check they are distributed to the same queue.\n+\n+Subcase: MAC_IPV4_GTPU_EH_IPV6_UDP/TCP\n+--------------------------------------\n+1. start testpmd without disable rss::\n+\n+    ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xff -n 4 -- -i --rxq=64 --txq=64 --port-topology=loop\n+\n+2. create rules::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end\n+\n+3. send packets::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/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)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/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)],iface=\"enp216s0f0\")\n+\n+4. check the two packets received with different hash values, and distributed to queue by RSS.\n+\n+5. flush the rules, send the two packets again, check they are distributed to the same queue.\n+\n+Subcase: MAC_IPV6_GTPU_IPV4_UDP/TCP\n+-----------------------------------\n+1. start testpmd without disable rss::\n+\n+    ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xff -n 4 -- -i --rxq=64 --txq=64 --port-topology=loop\n+\n+2. create rules::\n+\n+    flow create 0 ingress pattern eth / ipv6 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end\n+    flow create 0 ingress pattern eth / ipv6 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end\n+\n+3. send packets::\n+\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/TCP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:ca:a3:28:94\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/UDP(sport=22,dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+4. check the two packets received with different hash values, and distributed to queue by RSS.\n+\n+5. flush the rules, send the two packets again, check they are distributed to the same queue.\n+\n+Subcase: MAC_IPV6_GTPU_EH_IPV6_UDP/TCP\n+--------------------------------------\n+1. start testpmd without disable rss::\n+\n+    ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xff -n 4 -- -i --rxq=64 --txq=64 --port-topology=loop\n+\n+2. create rules::\n+\n+    flow create 0 ingress pattern eth / ipv6 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end\n+    flow create 0 ingress pattern eth / ipv6 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end\n+\n+3. send packets::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/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)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/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)],iface=\"enp216s0f0\")\n+\n+4. check the two packets received with different hash values, and distributed to queue by RSS.\n+\n+5. flush the rules, send the two packets again, check they are distributed to the same queue.\n+\n+\n+symmetric cases\n+===============\n+\n+start testpmd without disable rss::\n+\n+    ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xff -n 4 -- -i --rxq=64 --txq=64 --port-topology=loop\n+\n+all the test cases run the same test steps as below:\n+\n+1. validate rule.\n+2. if the rule inner protocol is IPV4_UDP/TCP or IPV6_UDP/TCP,\n+   set \"port config all rss all\".\n+3. send a basic hit pattern packet,record the hash value.\n+   then send a hit pattern packet with switched value of input set in the rule.\n+   check the two received packets have different hash value.\n+   check both the packets are distributed to queues by rss.\n+4. create rule and list rule.\n+5. send same packets with step 2.\n+   check the received packets have same hash value.\n+   check both the packets are distributed to queues by rss.\n+6. send two not hit pattern packets with switched value of input set in the rule.\n+   check the received packets have different hash value.\n+   check both the packets are distributed to queues by rss.\n+   note: if there is not this type packet in the case, omit this step.\n+7. distroy the rule and list rule.\n+8. send the same packets in step3, only switch ip address.\n+   check the received packets which switched ip address have different hash value.\n+\n+Pattern: symmetric outer ipv4 + inner ipv4\n+------------------------------------------\n+\n+Test case: symmetric MAC_IPV4_GTPU_EH_IPV4 with UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+Subcase: symmetric MAC_IPV4_GTPU_EH_DL_IPV4\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end\n+\n+hit pattern/defined input set:\n+MAC_IPV4_GTPU_EH_DL_IPV4::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+not hit pattern with switched value of input set in the rule:\n+MAC_IPV4_GTPU_EH_UL_IPV4::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+MAC_IPV4_GTPU_EH_DL_IPV6::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+MAC_IPV4_GTPU_IPV4::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: symmetric MAC_IPV4_GTPU_EH_UL_IPV4\n+:::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase symmetric MAC_IPV4_GTPU_EH_DL_IPV4.\n+\n+Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_UDP with UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+Subcase: symmetric MAC_IPV4_GTPU_EH_DL_IPV4_UDP\n+:::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end\n+\n+hit pattern/defined input set::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=23, dport=22)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=23, dport=22)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+not hit pattern with switched value of input set in the rule:\n+MAC_IPV4_GTPU_EH_UL_IPV4_UDP::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+MAC_IPV4_GTPU_EH_DL_IPV4_TCP::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/TCP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+MAC_IPV4_GTPU_EH_DL_IPV6_UDP::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/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)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/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)],iface=\"enp216s0f0\")\n+\n+MAC_IPV4_GTPU_IPV4_UDP::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.2\", src=\"192.168.0.1\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Subcase: symmetric MAC_IPV4_GTPU_EH_UL_IPV4_UDP\n+:::::::::::::::::::::::::::::::::::::::::::::::\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end\n+\n+packets: change the pdu_type value(0->1/1->0) of packets of Subcase symmetric MAC_IPV4_GTPU_EH_DL_IPV4_UDP.\n+\n+\n+Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_TCP with UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+the rules and packets in this test case is similar to \"Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_UDP with UL/DL\"\n+just change some parts of rules and packets:\n+\n+    rule:\n+        change inner udp to tcp, change ipv4-udp to ipv4-tcp\n+    packets:\n+        if the packet's inner L4 layer is UDP, change it to TCP;\n+        if the packet's inner L4 layer is TCP, change it to UDP;\n+\n+Subcase: symmetric MAC_IPV4_GTPU_EH_DL_IPV4_TCP\n+:::::::::::::::::::::::::::::::::::::::::::::::\n+\n+Subcase: symmetric MAC_IPV4_GTPU_EH_UL_IPV4_TCP\n+:::::::::::::::::::::::::::::::::::::::::::::::\n+\n+Test case: symmetric MAC_IPV4_GTPU_EH_IPV4 without UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end\n+\n+hit pattern/defined input set:\n+MAC_IPV4_GTPU_EH_IPV4::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.3\",src=\"192.168.0.4\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.4\",src=\"192.168.0.3\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+not hit pattern with switched value of input set in the rule:\n+MAC_IPV4_GTPU_EH_IPV6::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+MAC_IPV4_GTPU_IPV4::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_UDP without UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end\n+\n+hit pattern/defined input set:\n+MAC_IPV4_GTPU_EH_DL_IPV4_UDP::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/UDP(sport=23, dport=22)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/UDP(sport=23, dport=22)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+MAC_IPV4_GTPU_EH_UL_IPV4_UDP::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/UDP(sport=23, dport=22)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/UDP(sport=23, dport=22)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+not hit pattern with switched value of input set in the rule:\n+MAC_IPV4_GTPU_EH_IPV4_TCP::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/TCP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/TCP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+MAC_IPV4_GTPU_EH_IPV6_UDP::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/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)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/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)],iface=\"enp216s0f0\")\n+\n+MAC_IPV4_GTPU_IPV4_UDP::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/UDP(sport=23, dport=22)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_TCP without UL/DL\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+the rules and packets in this test case is similar to \"Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_UDP without UL/DL\"\n+just change some parts of rules and packets:\n+\n+    rule:\n+        change inner udp to tcp, change ipv4-udp to ipv4-tcp\n+    packets:\n+        if the packet's inner L4 layer is UDP, change it to TCP;\n+        if the packet's inner L4 layer is TCP, change it to UDP;\n+\n+\n+Test case: symmetric MAC_IPV4_GTPU_IPV4\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end\n+\n+hit pattern/defined input set:\n+MAC_IPV4_GTPU_IPV4::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+not hit pattern with switched value of input set in the rule:\n+MAC_IPV4_GTPU_IPV6::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(dst=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",src=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src=\"ABAB:910B:6666:3457:8295:3333:1800:2929\",dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+MAC_IPV4_GTPU_EH_IPV4::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Test case: symmetric MAC_IPV4_GTPU_IPV4_UDP\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+rule::\n+\n+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end\n+\n+hit pattern/defined input set:\n+MAC_IPV4_GTPU_IPV4_UDP::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/UDP(sport=23, dport=22)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/UDP(sport=23, dport=22)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+not hit pattern with switched value of input set in the rule:\n+MAC_IPV4_GTPU_EH_IPV4_UDP::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/UDP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+MAC_IPV4_GTPU_IPV4_TCP::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.2\",src=\"192.168.0.1\")/TCP(sport=22, dport=23)/(\"X\"*480)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst=\"192.168.0.1\",src=\"192.168.0.2\")/TCP(sport=23, dport=22)/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+MAC_IPV4_GTPU_IPV6_UDP::\n+\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/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)],iface=\"enp216s0f0\")\n+    sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/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)],iface=\"enp216s0f0\")\n+\n+Test case: symmetric MAC_IPV4_GTPU_IPV4_TCP\n+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n+the rules and packets in this test case is similar to \"Test case: symmetric MAC_IPV4_GTPU_IPV4_UDP\"\n+just change some parts of rules and packets:\n+\n+    rule:\n+        change inner udp to tcp, change ipv4-udp to ipv4-tcp\n+    packets:\n+        if the packet's inner L4 layer is UDP, change it to TCP;\n+        if the packet's inner L4 layer is TCP, change it to UDP;\n+\n+Pattern: symmetric outer ipv4 + inner ipv6\n+------------------------------------------\n+\n+reconfig all the cases of \"Pattern: symmetric outer ipv4 + inner ipv4\"\n+\n+    rule:\n+        change inner ipv4 to ipv6, change ipv4-udp to ipv6-udp, change ipv4-tcp to ipv6-tcp.\n+    packets:\n+        change the packet's inner L3 layer from IP to IPv6;\n+        change the ipv4 address to ipv6 address.\n+\n+Pattern: symmetric outer ipv6 + inner ipv4\n+------------------------------------------\n+\n+reconfig all the cases of \"Pattern: symmetric outer ipv4 + inner ipv4\"\n+\n+    rule:\n+        change outer ipv4 to ipv6.\n+    packets:\n+        change the packet's outer L3 layer from::\n+\n+          IP(proto=0x2F)/GRE(proto=0x0800)/IP()\n+\n+        to::\n+\n+          IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()\n+\n+        after Ether layer, before IP layer, just like::\n+\n+          sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+Pattern: symmetric outer ipv6 + inner ipv6\n+------------------------------------------\n+\n+reconfig all the cases of \"Pattern: symmetric outer ipv4 + inner ipv4\"\n+\n+    rule:\n+        change outer ipv4 to ipv6.\n+        change inner ipv4 to ipv6, change ipv4-udp to ipv6-udp, change ipv4-tcp to ipv6-tcp.\n+    packets:\n+        change the packet's inner L3 layer from IP to IPv6;\n+        change the ipv4 address to ipv6 address.\n+        change the packet's outer L3 layer from::\n+\n+          IP(proto=0x2F)/GRE(proto=0x0800)/IP()\n+\n+        to::\n+\n+          IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()\n+\n+        after Ether layer, before IP layer, just like::\n+\n+          sendp([Ether(dst=\"68:05:CA:BB:26:E0\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(dst=\"192.168.0.1\", src=\"192.168.0.2\")/(\"X\"*480)],iface=\"enp216s0f0\")\n+\n+parse PFCP over GRE packet\n+==========================\n+Send packet::\n+\n+    sendp(Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(sport=22, dport=8805)/PFCP(Sfield=0),iface=\"enp216s0f0\")\n+    sendp(Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(sport=22, dport=8805)/PFCP(Sfield=1, SEID=123),iface=\"enp216s0f0\")\n+    sendp(Ether(dst=\"00:11:22:33:44:55\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(sport=22, dport=8805)/PFCP(Sfield=0),iface=\"enp216s0f0\")\n+    sendp(Ether(dst=\"00:11:22:33:44:55\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(sport=22, dport=8805)/PFCP(Sfield=1, SEID=256),iface=\"enp216s0f0\")\n+\n+It can be parsed as MAC_IPV4_PFCP_NODE::\n+\n+    ptype: 351\n+    port 0/queue 0: received 1 packets\n+      src=00:00:00:00:00:00 - dst=00:11:22:33:44:55 - type=0x0800 - length=82 - nb_segs=1 - sw ptype: L2_ETHER L3_IPV4 TUNNEL_GRE INNER_L3_IPV4 INNER_L4_UDP  - l2_len=14 - l3_len=20 - tunnel_len=4 - inner_l3_len=20 - inner_l4_len=8 - Receive queue=0x0\n+      ol_flags: PKT_RX_L4_CKSUM_UNKNOWN PKT_RX_IP_CKSUM_UNKNOWN PKT_RX_OUTER_L4_CKSUM_UNKNOWN\n+\n+Send packet::\n+\n+    sendp(Ether(dst=\"00:11:22:33:44:55\")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(sport=22, dport=8805)/PFCP(Sfield=1, SEID=123),iface=\"enp216s0f0\")\n+\n+It can be parsed as MAC_IPV4_PFCP_SESSION::\n+\n+    ptype: 352\n+    port 0/queue 0: received 1 packets\n+      src=00:00:00:00:00:00 - dst=00:11:22:33:44:55 - type=0x0800 - length=82 - nb_segs=1 - sw ptype: L2_ETHER L3_IPV4 TUNNEL_GRE INNER_L3_IPV4 INNER_L4_UDP  - l2_len=14 - l3_len=20 - tunnel_len=4 - inner_l3_len=20 - inner_l4_len=8 - Receive queue=0x0\n+      ol_flags: PKT_RX_L4_CKSUM_UNKNOWN PKT_RX_IP_CKSUM_UNKNOWN PKT_RX_OUTER_L4_CKSUM_UNKNOWN\n+\n+Send packet::\n+\n+    sendp(Ether(dst=\"00:11:22:33:44:55\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(sport=22, dport=8805)/PFCP(Sfield=0),iface=\"enp216s0f0\")\n+\n+It can be parsed as MAC_IPV6_PFCP_NODE::\n+\n+    ptype: 353\n+    port 0/queue 0: received 1 packets\n+      src=00:00:00:00:00:00 - dst=00:11:22:33:44:55 - type=0x86dd - length=122 - nb_segs=1 - sw ptype: L2_ETHER L3_IPV6 TUNNEL_GRE INNER_L3_IPV6 INNER_L4_UDP  - l2_len=14 - l3_len=40 - tunnel_len=4 - inner_l3_len=40 - inner_l4_len=8 - Receive queue=0x0\n+      ol_flags: PKT_RX_L4_CKSUM_UNKNOWN PKT_RX_IP_CKSUM_UNKNOWN PKT_RX_OUTER_L4_CKSUM_UNKNOWN\n+\n+Send packet::\n+\n+    sendp(Ether(dst=\"00:11:22:33:44:55\")/IPv6(nh=0x2F)/GRE(proto=0x86dd)/IPv6()/UDP(sport=22, dport=8805)/PFCP(Sfield=1, SEID=256),iface=\"enp216s0f0\")\n+\n+It can be parsed as MAC_IPV6_PFCP_SESSION::\n+\n+    ptype: 354\n+    port 0/queue 0: received 1 packets\n+      src=00:00:00:00:00:00 - dst=00:11:22:33:44:55 - type=0x86dd - length=122 - nb_segs=1 - sw ptype: L2_ETHER L3_IPV6 TUNNEL_GRE INNER_L3_IPV6 INNER_L4_UDP  - l2_len=14 - l3_len=40 - tunnel_len=4 - inner_l3_len=40 - inner_l4_len=8 - Receive queue=0x0\n+      ol_flags: PKT_RX_L4_CKSUM_UNKNOWN PKT_RX_IP_CKSUM_UNKNOWN PKT_RX_OUTER_L4_CKSUM_UNKNOWN\ndiff --git a/test_plans/index.rst b/test_plans/index.rst\nindex 2be687a9..947eb05d 100644\n--- a/test_plans/index.rst\n+++ b/test_plans/index.rst\n@@ -44,8 +44,10 @@ The following are the test plans for the DPDK DTS automated test system.\n     coremask_test_plan\n     cvl_advanced_rss_test_plan\n     cvl_advanced_rss_gtpu_test_plan\n+    cvl_advanced_rss_gtpogre_test_plan\n     cvl_advanced_iavf_rss_test_plan\n     cvl_advanced_iavf_rss_gtpu_test_plan\n+    cvl_advanced_iavf_rss_gtpogre_test_plan\n     cvl_advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp_test_plan\n     cvl_advanced_rss_pppoe_vlan_esp_ah_l2tp_pfcp_test_plan\n     cvl_dcf_acl_filter_test_plan\n",
    "prefixes": []
}