get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 84358,
    "url": "https://patches.dpdk.org/api/patches/84358/?format=api",
    "web_url": "https://patches.dpdk.org/project/dts/patch/20201119175811.14035-1-xueqin.lin@intel.com/",
    "project": {
        "id": 3,
        "url": "https://patches.dpdk.org/api/projects/3/?format=api",
        "name": "DTS",
        "link_name": "dts",
        "list_id": "dts.dpdk.org",
        "list_email": "dts@dpdk.org",
        "web_url": "",
        "scm_url": "git://dpdk.org/tools/dts",
        "webscm_url": "http://git.dpdk.org/tools/dts/",
        "list_archive_url": "https://inbox.dpdk.org/dts",
        "list_archive_url_format": "https://inbox.dpdk.org/dts/{}",
        "commit_url_format": ""
    },
    "msgid": "<20201119175811.14035-1-xueqin.lin@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/20201119175811.14035-1-xueqin.lin@intel.com",
    "date": "2020-11-19T17:58:11",
    "name": "test_plan/iavf_fdir: add fdir case for layer3 co-exist GTPU",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "48e4cbb3fa5e93336e09d0f5d77f0bb7be86e764",
    "submitter": {
        "id": 498,
        "url": "https://patches.dpdk.org/api/people/498/?format=api",
        "name": "Lin, Xueqin",
        "email": "xueqin.lin@intel.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dts/patch/20201119175811.14035-1-xueqin.lin@intel.com/mbox/",
    "series": [
        {
            "id": 13973,
            "url": "https://patches.dpdk.org/api/series/13973/?format=api",
            "web_url": "https://patches.dpdk.org/project/dts/list/?series=13973",
            "date": "2020-11-19T17:58:11",
            "name": "test_plan/iavf_fdir: add fdir case for layer3 co-exist GTPU",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/13973/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/84358/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/84358/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dts-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 202D7A04DD;\n\tThu, 19 Nov 2020 11:03:37 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id DA7DCF3E;\n\tThu, 19 Nov 2020 11:03:35 +0100 (CET)",
            "from mga03.intel.com (mga03.intel.com [134.134.136.65])\n by dpdk.org (Postfix) with ESMTP id 0C8FF3B5\n for <dts@dpdk.org>; Thu, 19 Nov 2020 11:03:33 +0100 (CET)",
            "from fmsmga005.fm.intel.com ([10.253.24.32])\n by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 19 Nov 2020 02:03:31 -0800",
            "from unknown (HELO xlin-dpdk50.sh.intel.com) ([10.67.118.237])\n by fmsmga005.fm.intel.com with ESMTP; 19 Nov 2020 02:03:30 -0800"
        ],
        "IronPort-SDR": [
            "\n pjLEHMIhCGh4fhrgPGpyw81oYl2Bm/JdPFJZqBcnKFnkXvrGpeUmHCaBvtnVuFine2qO6wHYU7\n 8hB0SvlCBKaA==",
            "\n vQF2MJgnZmrZLbgc6qD8+S+lsEsVXK8TcWiygAUx0ZEya30K0DuRIqOwBjJDgDOUKYKm+TbKVb\n z4fAWF9QsdkA=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9809\"; a=\"171362250\"",
            "E=Sophos;i=\"5.77,490,1596524400\"; d=\"scan'208\";a=\"171362250\"",
            "E=Sophos;i=\"5.77,490,1596524400\"; d=\"scan'208\";a=\"534704710\""
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "From": "Xueqin Lin <xueqin.lin@intel.com>",
        "To": "dts@dpdk.org",
        "Cc": "Xueqin Lin <xueqin.lin@intel.com>",
        "Date": "Thu, 19 Nov 2020 12:58:11 -0500",
        "Message-Id": "<20201119175811.14035-1-xueqin.lin@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "Subject": "[dts] [PATCH] test_plan/iavf_fdir: add fdir case for layer3\n\tco-exist GTPU",
        "X-BeenThere": "dts@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "test suite reviews and discussions <dts.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dts>,\n <mailto:dts-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dts/>",
        "List-Post": "<mailto:dts@dpdk.org>",
        "List-Help": "<mailto:dts-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dts>,\n <mailto:dts-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dts-bounces@dpdk.org",
        "Sender": "\"dts\" <dts-bounces@dpdk.org>"
    },
    "content": "Signed-off-by: Lin Xueqin <xueqin.lin@intel.com>\n\n---\n test_plans/iavf_fdir_test_plan.rst | 225 +++++++++++++++++++++++++++++\n 1 file changed, 225 insertions(+)",
    "diff": "diff --git a/test_plans/iavf_fdir_test_plan.rst b/test_plans/iavf_fdir_test_plan.rst\nindex ed71d58..80429cc 100644\n--- a/test_plans/iavf_fdir_test_plan.rst\n+++ b/test_plans/iavf_fdir_test_plan.rst\n@@ -2424,6 +2424,231 @@ Subcase 15: MAC_IPV6_GTPU outer src ipv6 mark/rss\n 4. verify matched packets are distributed by RSS without FDIR matched ID.\n    check there is no rule listed.\n \n+Test case: Layer3 co-exist GTPU\n+===============================\n+\n+Subcase 1: Layer3 co-exist GTP EH fdir + dst\n+--------------------------------------------\n+\n+Rules::\n+    #1  flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.31 / udp / gtpu / gtp_psc / end actions rss queues 1 2 end / mark id 1 / end\n+    #2  flow create 0 ingress pattern eth / ipv6 dst is ::32 / udp / gtpu / gtp_psc / end actions rss queues 3 4 5 6 end / mark id 2 / end\n+    #3  flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.33 / udp / gtpu / gtp_psc / end actions queue index 7 / mark id 3 / end\n+    #4  flow create 0 ingress pattern eth / ipv6 dst is ::14 / udp / gtpu / gtp_psc / end actions queue index 8 / mark id 4 / end\n+    #5  flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.35 / udp / gtpu / gtp_psc / end actions passthru / mark id 5 / end\n+    #6  flow create 0 ingress pattern eth / ipv6 dst is ::36 / udp / gtpu / gtp_psc / end actions passthru / mark id 6 / end\n+    #7  flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.37 / udp / gtpu / gtp_psc / end actions drop / end\n+    #8  flow create 0 ingress pattern eth / ipv6 dst is ::38 / udp / gtpu / gtp_psc / end actions drop / end\n+\n+Matched packets::\n+    p_gtpu1 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.21\", dst=\"192.168.0.31\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/UDP()/Raw('x'*20)\n+    p_gtpu2 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::12\", dst=\"::32\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/TCP()/Raw('x'*20)\n+    p_gtpu3 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.23\", dst=\"192.168.0.33\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/Raw('x'*20)\n+    p_gtpu4 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::4\", dst=\"::14\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IP()/TCP()/Raw('x'*20)\n+    p_gtpu5 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.25\", dst=\"192.168.0.35\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/Raw('x'*20)\n+    p_gtpu6 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::16\", dst=\"::36\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IP()/ICMP()/Raw('x'*20)\n+    p_gtpu7 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.27\", dst=\"192.168.0.37\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+    p_gtpu8 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::8\", dst=\"::38\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+\n+Mismatched packets::\n+    p_gtpu1 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.21\", dst=\"192.168.0.32\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/UDP()/Raw('x'*20)\n+    p_gtpu2 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::12\", dst=\"::33\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/TCP()/Raw('x'*20)\n+    p_gtpu3 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.23\", dst=\"192.168.0.34\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/Raw('x'*20)\n+    p_gtpu4 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::4\", dst=\"::15\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IP()/TCP()/Raw('x'*20)\n+    p_gtpu5 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.25\", dst=\"192.168.0.36\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/Raw('x'*20)\n+    p_gtpu6 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::16\", dst=\"::37\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IP()/ICMP()/Raw('x'*20)\n+    p_gtpu7 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.27\", dst=\"192.168.0.38\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+    p_gtpu8 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::8\", dst=\"::39\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+\n+1. Create above filter rules.\n+\n+2. Send matched packets.\n+\n+3. Check result::\n+\n+    Check p_gtpu1 is distributed to queue 1 or 2 with FDIR matched ID=0x1.\n+    Check p_gtpu2 is distributed to queue 3 or 4 or 5 or 6 with FDIR matched ID=0x2.\n+    Check p_gtpu3 is distributed to queue 7 with FDIR matched ID=0x3.\n+    Check p_gtpu4 is distributed to queue 8 with FDIR matched ID=0x4.\n+    Check p_gtpu5 is distributed by RSS with FDIR matched ID=0x5.\n+    Check p_gtpu6 is distributed by RSS with FDIR matched ID=0x6.\n+    Check p_gtpu7 is dropped.\n+    Check p_gtpu8 is dropped.\n+\n+4. Send mismatched packets.\n+\n+5. Check result::\n+\n+    Check p_gtpu1 is distributed by RSS without FDIR matched ID=0x1.\n+    Check p_gtpu2 is distributed by RSS without FDIR matched ID=0x2.\n+    Check p_gtpu3 is distributed by RSS without FDIR matched ID=0x3.\n+    Check p_gtpu4 is distributed by RSS without FDIR matched ID=0x4.\n+    Check p_gtpu5 is distributed by RSS without FDIR matched ID=0x5.\n+    Check p_gtpu6 is distributed by RSS without FDIR matched ID=0x6.\n+    Check p_gtpu7 is not dropped, distributed by RSS.\n+    Check p_gtpu8 is not dropped, distributed by RSS.\n+\n+6. Verify rules can be listed and destroyed::\n+\n+    testpmd> flow list 0\n+\n+7. Flush the rule, check there is no rule listed::\n+\n+    testpmd> flow flush 0\n+\n+8. Send matched packets.\n+\n+9. Verify matched packets are distributed by RSS without FDIR matched ID.\n+\n+10. Repeate above steps.\n+\n+Subcase 2: Layer3 co-exist GTP fdir + dst\n+-----------------------------------------\n+\n+Rules::\n+    #1  flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.31 / udp / gtpu / end actions rss queues 1 2 end / mark id 1 / end\n+    #2\tflow create 0 ingress pattern eth / ipv6 dst is ::32 / udp / gtpu / end actions rss queues 3 4 5 6 end / mark id 2 / end\n+    #3\tflow create 0 ingress pattern eth / ipv4 dst is 192.168.0.33 / udp / gtpu / end actions queue index 7 / mark id 3 / end\n+    #4\tflow create 0 ingress pattern eth / ipv6 dst is ::14 / udp / gtpu / end actions queue index 8 / mark id 4 / end\n+    #5\tflow create 0 ingress pattern eth / ipv4 dst is 192.168.0.35 / udp / gtpu / end actions passthru / mark id 5 / end\n+    #6\tflow create 0 ingress pattern eth / ipv6 dst is ::36 / udp / gtpu / end actions passthru / mark id 6 / end\n+    #7\tflow create 0 ingress pattern eth / ipv4 dst is 192.168.0.37 / udp / gtpu / end actions drop / end\n+    #8\tflow create 0 ingress pattern eth / ipv6 dst is ::38 / udp / gtpu / end actions drop / end\n+\n+Matched packets::\n+    p_gtpu1 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.21\", dst=\"192.168.0.31\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/UDP()/Raw('x'*20)\n+    p_gtpu2 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::12\", dst=\"::32\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/TCP()/Raw('x'*20)\n+    p_gtpu3 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.23\", dst=\"192.168.0.33\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)\n+    p_gtpu4 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::4\", dst=\"::14\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/TCP()/Raw('x'*20)\n+    p_gtpu5 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.25\", dst=\"192.168.0.35\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)\n+    p_gtpu6 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::16\", dst=\"::36\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/ICMP()/Raw('x'*20)\n+    p_gtpu7 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.27\", dst=\"192.168.0.37\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+    p_gtpu8 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::8\", dst=\"::38\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+\n+Mismatched packets::\n+    p_gtpu1 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.21\", dst=\"192.168.0.32\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/UDP()/Raw('x'*20)\n+    p_gtpu2 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::12\", dst=\"::33\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/TCP()/Raw('x'*20)\n+    p_gtpu3 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.23\", dst=\"192.168.0.34\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)\n+    p_gtpu4 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::4\", dst=\"::15\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/TCP()/Raw('x'*20)\n+    p_gtpu5 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.25\", dst=\"192.168.0.36\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)\n+    p_gtpu6 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::16\", dst=\"::37\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/ICMP()/Raw('x'*20)\n+    p_gtpu7 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.27\", dst=\"192.168.0.38\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+    p_gtpu8 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::8\", dst=\"::39\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+\n+Test steps as subcase 1.\n+\n+Subcase 3: Layer3 co-exist GTP EH fdir + src\n+--------------------------------------------\n+\n+Rules::\n+    #1  flow create 0 ingress pattern eth / ipv4 src is 192.168.0.21 / udp / gtpu / gtp_psc / end actions rss queues 1 2 end / mark id 1 / end\n+    #2\tflow create 0 ingress pattern eth / ipv6 src is ::12 / udp / gtpu / gtp_psc / end actions rss queues 3 4 5 6 end / mark id 2 / end\n+    #3\tflow create 0 ingress pattern eth / ipv4 src is 192.168.0.23 / udp / gtpu / gtp_psc / end actions queue index 7 / mark id 3 / end\n+    #4\tflow create 0 ingress pattern eth / ipv6 src is 2001::4 / udp / gtpu / gtp_psc / end actions queue index 8 / mark id 4 / end\n+    #5\tflow create 0 ingress pattern eth / ipv4 src is 192.168.0.25 / udp / gtpu / gtp_psc / end actions passthru / mark id 5 / end\n+    #6\tflow create 0 ingress pattern eth / ipv6 src is ::16 / udp / gtpu / gtp_psc / end actions passthru / mark id 6 / end\n+    #7\tflow create 0 ingress pattern eth / ipv4 src is 192.168.0.27 / udp / gtpu / gtp_psc / end actions drop / end\n+    #8\tflow create 0 ingress pattern eth / ipv6 src is 2001::8 / udp / gtpu / gtp_psc / end actions drop / end\n+\n+Matched packets::\n+\n+    p_gtpu1 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.21\", dst=\"192.168.0.31\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/UDP()/Raw('x'*20)\n+    p_gtpu2 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::12\", dst=\"::32\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/TCP()/Raw('x'*20)\n+    p_gtpu3 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.23\", dst=\"192.168.0.33\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/Raw('x'*20)\n+    p_gtpu4 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::4\", dst=\"::14\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IP()/TCP()/Raw('x'*20)\n+    p_gtpu5 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.25\", dst=\"192.168.0.35\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/Raw('x'*20)\n+    p_gtpu6 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::16\", dst=\"::36\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IP()/ICMP()/Raw('x'*20)\n+    p_gtpu7 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.27\", dst=\"192.168.0.37\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+    p_gtpu8 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::8\", dst=\"::38\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+\n+Mismatched packets::\n+\n+    p_gtpu1 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.22\", dst=\"192.168.0.31\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/UDP()/Raw('x'*20)\n+    p_gtpu2 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::13\", dst=\"::32\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/TCP()/Raw('x'*20)\n+    p_gtpu3 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.24\", dst=\"192.168.0.33\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/Raw('x'*20)\n+    p_gtpu4 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::5\", dst=\"::14\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IP()/TCP()/Raw('x'*20)\n+    p_gtpu5 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.26\", dst=\"192.168.0.35\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/Raw('x'*20)\n+    p_gtpu6 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::17\", dst=\"::36\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IP()/ICMP()/Raw('x'*20)\n+    p_gtpu7 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.28\", dst=\"192.168.0.37\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+    p_gtpu8 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::9\", dst=\"::38\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+\n+Test steps as subcase 1.\n+\n+Subcase 4: Layer3 co-exist GTP fdir + src\n+-----------------------------------------\n+\n+Rules::\n+\n+    #1  flow create 0 ingress pattern eth / ipv4 src is 192.168.0.21 / udp / gtpu / end actions rss queues 1 2 end / mark id 1 / end\n+    #2\tflow create 0 ingress pattern eth / ipv6 src is ::12 / udp / gtpu / end actions rss queues 3 4 5 6 end / mark id 2 / end\n+    #3\tflow create 0 ingress pattern eth / ipv4 src is 192.168.0.23 / udp / gtpu / end actions queue index 7 / mark id 3 / end\n+    #4\tflow create 0 ingress pattern eth / ipv6 src is 2001::4 / udp / gtpu / end actions queue index 8 / mark id 4 / end\n+    #5\tflow create 0 ingress pattern eth / ipv4 src is 192.168.0.25 / udp / gtpu / end actions passthru / mark id 5 / end\n+    #6\tflow create 0 ingress pattern eth / ipv6 src is ::16 / udp / gtpu / end actions passthru / mark id 6 / end\n+    #7\tflow create 0 ingress pattern eth / ipv4 src is 192.168.0.27 / udp / gtpu / end actions drop / end\n+    #8\tflow create 0 ingress pattern eth / ipv6 src is 2001::8 / udp / gtpu / end actions drop / end\n+Matched packets::\n+\n+    p_gtpu1 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.21\", dst=\"192.168.0.31\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/UDP()/Raw('x'*20)\n+    p_gtpu2 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::12\", dst=\"::32\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/TCP()/Raw('x'*20)\n+    p_gtpu3 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.23\", dst=\"192.168.0.33\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)\n+    p_gtpu4 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::4\", dst=\"::14\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/TCP()/Raw('x'*20)\n+    p_gtpu5 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.25\", dst=\"192.168.0.35\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)\n+    p_gtpu6 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::16\", dst=\"::36\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/ICMP()/Raw('x'*20)\n+    p_gtpu7 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.27\", dst=\"192.168.0.37\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+    p_gtpu8 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::8\", dst=\"::38\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+\n+Mismatched packets::\n+\n+    p_gtpu1 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.22\", dst=\"192.168.0.31\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/UDP()/Raw('x'*20)\n+    p_gtpu2 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::13\", dst=\"::32\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/TCP()/Raw('x'*20)\n+    p_gtpu3 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.24\", dst=\"192.168.0.33\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)\n+    p_gtpu4 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::5\", dst=\"::14\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/TCP()/Raw('x'*20)\n+    p_gtpu5 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.26\", dst=\"192.168.0.35\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)\n+    p_gtpu6 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::17\", dst=\"::36\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/ICMP()/Raw('x'*20)\n+    p_gtpu7 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.28\", dst=\"192.168.0.37\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+    p_gtpu8 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::9\", dst=\"::38\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+\n+Test steps as subcase 1.\n+\n+Subcase 5: Layer3 co-exist GTP with/without EH fdir + src/dst\n+-------------------------------------------------------------\n+\n+Rules::\n+\n+    #1  flow create 0 ingress pattern eth / ipv4 src is 192.168.0.21 dst is 192.168.0.31 / udp / gtpu / gtp_psc / end actions rss queues 1 2 end / mark id 1 / end\n+    #2\tflow create 0 ingress pattern eth / ipv6 src is ::12 dst is ::32 / udp / gtpu / gtp_psc / end actions rss queues 3 4 5 6 end / mark id 2 / end\n+    #3\tflow create 0 ingress pattern eth / ipv4 src is 192.168.0.23 dst is 192.168.0.33 / udp / gtpu / gtp_psc / end actions queue index 7 / mark id 3 / end\n+    #4\tflow create 0 ingress pattern eth / ipv6 src is 2001::4 dst is ::14 / udp / gtpu / gtp_psc / end actions queue index 8 / mark id 4 / end\n+    #5\tflow create 0 ingress pattern eth / ipv4 src is 192.168.0.25 dst is 192.168.0.35 / udp / gtpu / end actions passthru / mark id 5 / end\n+    #6\tflow create 0 ingress pattern eth / ipv6 src is ::16 dst is ::36 / udp / gtpu / end actions passthru / mark id 6 / end\n+    #7\tflow create 0 ingress pattern eth / ipv4 src is 192.168.0.27 dst is 192.168.0.37 / udp / gtpu / end actions drop / end\n+    #8\tflow create 0 ingress pattern eth / ipv6 src is 2001::8 dst is ::38 / udp / gtpu / end actions drop / end\n+\n+Matched packets::\n+\n+    p_gtpu1 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.21\", dst=\"192.168.0.31\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/UDP()/Raw('x'*20)\n+    p_gtpu2 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::12\", dst=\"::32\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/TCP()/Raw('x'*20)\n+    p_gtpu3 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.23\", dst=\"192.168.0.33\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/Raw('x'*20)\n+    p_gtpu4 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::4\", dst=\"::14\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IP()/TCP()/Raw('x'*20)\n+    p_gtpu5 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.25\", dst=\"192.168.0.35\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)\n+    p_gtpu6 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::16\", dst=\"::36\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/ICMP()/Raw('x'*20)\n+    p_gtpu7 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.27\", dst=\"192.168.0.37\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+    p_gtpu8 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::8\", dst=\"::38\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+\n+Mismatched packets::\n+\n+    p_gtpu1 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.22\", dst=\"192.168.0.32\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/UDP()/Raw('x'*20)\n+    p_gtpu2 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::13\", dst=\"::33\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/TCP()/Raw('x'*20)\n+    p_gtpu3 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.24\", dst=\"192.168.0.34\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/Raw('x'*20)\n+    p_gtpu4 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::5\", dst=\"::15\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IP()/TCP()/Raw('x'*20)\n+    p_gtpu5 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.26\", dst=\"192.168.0.36\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)\n+    p_gtpu6 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"::17\", dst=\"::37\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/ICMP()/Raw('x'*20)\n+    p_gtpu7 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IP(src=\"192.168.0.28\", dst=\"192.168.0.38\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+    p_gtpu8 = Ether(src=\"a4:bf:01:51:27:ca\", dst=\"00:11:22:33:44:55\")/IPv6(src=\"2001::9\", dst=\"::39\")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)\n+\n+Test steps as subcase 1.\n+\n \n Test case: L2 Ethertype pattern\n ===============================\n",
    "prefixes": []
}