get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 108767,
    "url": "https://patches.dpdk.org/api/patches/108767/?format=api",
    "web_url": "https://patches.dpdk.org/project/dts/patch/20220317124205.639640-3-yaqi.tang@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": "<20220317124205.639640-3-yaqi.tang@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/20220317124205.639640-3-yaqi.tang@intel.com",
    "date": "2022-03-17T12:42:04",
    "name": "[V3,2/3] test_plans/cvl_iavf_fdir_pppol2tpoudp: cvl iavf enable fdir for pppol2tpoudp",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "5690b9a4929302a8c5e7bd11a3a9e49e5f39e38b",
    "submitter": {
        "id": 2357,
        "url": "https://patches.dpdk.org/api/people/2357/?format=api",
        "name": "Yaqi Tang",
        "email": "yaqi.tang@intel.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dts/patch/20220317124205.639640-3-yaqi.tang@intel.com/mbox/",
    "series": [
        {
            "id": 22176,
            "url": "https://patches.dpdk.org/api/series/22176/?format=api",
            "web_url": "https://patches.dpdk.org/project/dts/list/?series=22176",
            "date": "2022-03-17T12:42:02",
            "name": "cvl iavf enable fdir for pppol2tpoudp",
            "version": 3,
            "mbox": "https://patches.dpdk.org/series/22176/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/108767/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/108767/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 37205A0093;\n\tThu, 17 Mar 2022 13:42:17 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 2FC7A41147;\n\tThu, 17 Mar 2022 13:42:17 +0100 (CET)",
            "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n by mails.dpdk.org (Postfix) with ESMTP id 28F8641147\n for <dts@dpdk.org>; Thu, 17 Mar 2022 13:42:13 +0100 (CET)",
            "from fmsmga001.fm.intel.com ([10.253.24.23])\n by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 17 Mar 2022 05:42:12 -0700",
            "from dpdk-yaqi.sh.intel.com ([10.67.118.156])\n by fmsmga001.fm.intel.com with ESMTP; 17 Mar 2022 05:42:10 -0700"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1647520933; x=1679056933;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=1zf9VWzGv03mgB6NTD2gTp1u1EeACz40r8f6/SF0SZE=;\n b=FZ2kfIodRnn39YU43fNE1+iu+nlpqnXRwTNFE+gDX/dgmwc7cntpLqaV\n x3qCPXUmUJBLuy0Gu7uoBQyOYKgk2PSfcAXDiKMPq3zWYJ4B/bmeVn8Eg\n XxkNuch7zibVq6ZgmW0zjYYR+jL5nxv9OhxP64iXKSvEucv+lhFiWKmM6\n kQtM2Wr4hegfUdDerFOYhguBUTWcaAqeYIyMxM+de8g0NAD0gxTE+BBQH\n RjrItfAG1oumc2n62ExHCwSoW0tSQ6WGJKae4FGt6nDbhZeiI9pojKNwm\n xSgXWCmFycXeHumZrCJSb3hH8oASnQpwIywqhyMrPgAhGJBpSsBOaBSd5 A==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,10288\"; a=\"244309235\"",
            "E=Sophos;i=\"5.90,188,1643702400\"; d=\"scan'208\";a=\"244309235\"",
            "E=Sophos;i=\"5.90,188,1643702400\"; d=\"scan'208\";a=\"690923835\""
        ],
        "X-ExtLoop1": "1",
        "From": "Yaqi Tang <yaqi.tang@intel.com>",
        "To": "dts@dpdk.org",
        "Cc": "xueqin.lin@intel.com,\n\tYaqi Tang <yaqi.tang@intel.com>",
        "Subject": "[dts][PATCH V3 2/3] test_plans/cvl_iavf_fdir_pppol2tpoudp: cvl iavf\n enable fdir for pppol2tpoudp",
        "Date": "Thu, 17 Mar 2022 20:42:04 +0800",
        "Message-Id": "<20220317124205.639640-3-yaqi.tang@intel.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20220317124205.639640-1-yaqi.tang@intel.com>",
        "References": "<20220317124205.639640-1-yaqi.tang@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "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"
    },
    "content": "Support IAVF PPPoL2TPv2oUDP FDIR, and required to distribute packets based on MAC src, L2TP session ID, inner IP src+dest address and TCP/UDP src+dest port.\n\nSigned-off-by: Yaqi Tang <yaqi.tang@intel.com>\n---\n .../cvl_iavf_fdir_pppol2tpoudp_test_plan.rst  | 1931 +++++++++++++++++\n 1 file changed, 1931 insertions(+)\n create mode 100644 test_plans/cvl_iavf_fdir_pppol2tpoudp_test_plan.rst",
    "diff": "diff --git a/test_plans/cvl_iavf_fdir_pppol2tpoudp_test_plan.rst b/test_plans/cvl_iavf_fdir_pppol2tpoudp_test_plan.rst\nnew file mode 100644\nindex 00000000..76cbdd20\n--- /dev/null\n+++ b/test_plans/cvl_iavf_fdir_pppol2tpoudp_test_plan.rst\n@@ -0,0 +1,1931 @@\n+.. Copyright (c) <2022>, 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: FDIR For PPPoL2TPv2oUDP\n+=================================\n+\n+Description\n+===========\n+\n+Support IAVF PPPoL2TPv2oUDP FDIR.\n+Required to distribute packets based on MAC src, L2TP session ID, inner IP src+dest address and TCP/UDP src+dest port.\n+\n+Prerequisites\n+=============\n+\n+Topology\n+--------\n+1node/1nic/2port/fwd\n+2node/1nic/1port/loopback\n+\n+Hardware\n+--------\n+Supportted NICs: columbiaville_25g/columbiaville_100g\n+\n+Software\n+--------\n+dpdk: http://dpdk.org/git/dpdk\n+scapy: http://www.secdev.org/projects/scapy/\n+\n+General set up\n+--------------\n+1. Copy specific ice package to /lib/firmware/updates/intel/ice/ddp/ice.pkg,\n+   then load driver::\n+\n+    # cp <ice package> /lib/firmware/updates/intel/ice/ddp/ice.pkg\n+    # rmmod ice\n+    # insmod <ice build dir>/ice.ko\n+\n+2. Compile DPDK::\n+\n+    # CC=gcc meson --werror -Denable_kmods=True -Dlibdir=lib --default-library=static <dpdk build dir>\n+    # ninja -C <dpdk build dir> -j 110\n+\n+3. Get the pci device id and interface of DUT and tester. \n+   For example, 0000:3b:00.0 and 0000:af:00.0 is pci device id,\n+   ens785f0 and ens260f0 is interface::\n+\n+    <dpdk dir># ./usertools/dpdk-devbind.py -s\n+\n+     0000:3b:00.0 'Ethernet Controller E810-C for SFP 1593' if=ens785f0 drv=ice unused=vfio-pci\n+     0000:af:00.0 'Ethernet Controller XXV710 for 25GbE SFP28 158b' if=ens260f0 drv=i40e unused=vfio-pci\n+\n+4. Generate 1 VF on PF0, set mac address for this VF::\n+\n+    # echo 1 > /sys/bus/pci/devices/0000:3b:00.0/sriov_numvfs\n+    # ip link set ens785f0 vf 0 mac 00:11:22:33:44:55\n+\n+5. Bind the DUT port to dpdk::\n+\n+    <dpdk dir># ./usertools/dpdk-devbind.py -b vfio-pci <DUT port pci device id>\n+\n+6. Launch the userland ``testpmd`` application on DUT as follows and ::\n+\n+    <dpdk build dir>/app/dpdk-testpmd <EAL options> -- -i --rxq=<queue number> --txq=<queue number>\n+    testpmd> set fwd rxonly\n+    testpmd> set verbose 1\n+    testpmd> show port info all\n+    testpmd> start\n+\n+..note::\n+\n+    For <EAL options>, you can use \"-l 1,2,3,4 -n 4\", you can also refer to testpmd doc for other setings.\n+\n+Test Case\n+=========\n+\n+Common Steps\n+------------\n+1. validate rules.\n+2. create rules and list rules.\n+3. send matched packets, check the action hiting the rule.\n+4. send mismatched packets, check the packets will not hit any rules.\n+5. destroy rule, list rules.\n+6. send matched packets, check the packets will not hit any rules.\n+\n+All the packets in this test plan use below settings:\n+src mac: 11:22:33:44:55:77\n+src mac change inputset: 00:00:00:00:00:01\n+session_id: 0x1111\n+session_id change inputset: 0x2222\n+ipv4 src: 10.0.0.11\n+ipv4 dst: 10.0.0.22\n+ipv4 src change inputset: 10.0.0.10\n+ipv4 dst change inputset: 10.0.0.20\n+ipv6 src: ABAB:910B:6666:3457:8295:3333:1800:2929\n+ipv6 dst: CDCD:910A:2222:5498:8475:1111:3900:2020\n+ipv6 src change inputset: ABAB:910B:6666:3457:8295:3333:1800:2920\n+ipv6 dst change inputset: CDCD:910A:2222:5498:8475:1111:3900:2022\n+dport: 1701\n+offset: 6\n+sport: 11\n+sport change inputset: 10\n+dport: 22\n+dport change inputset: 20\n+\n+Test case 1: MAC_IPV4_L2TPV2_CONTROL\n+------------------------------------\n+This case is designed to check distribute MAC IPv4 L2TPV2 control packets based on MAC src and L2TP session ID as input set.\n+\n+Subcase 1: l2tpv2_session_id_MAC_IPV4_L2TPV2_CONTROL\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type control session_id is <session_id> / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0xc80,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0xc80,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0xc80,len=12,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0xc80,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+Subcase 2: eth_l2_src_only_MAC_IPV4_L2TPV2_CONTROL\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv4 / udp / l2tpv2 type control / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0xc80,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0xc80,len=12,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0xc80,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0xc80,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+Test case 2: MAC_IPV6_L2TPV2_CONTROL\n+------------------------------------\n+This case is designed to check distribute MAC IPv6 L2TPV2 control packets based on MAC src and L2TP session ID as input set.\n+\n+Subcase 1: l2tpv2_session_id_MAC_IPV6_L2TPV2_CONTROL\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type control session_id is 0x1111 / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0xc80,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0xc80,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0xc80,len=12,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0xc80,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+Subcase 2: eth_l2_src_only_MAC_IPV6_L2TPV2_CONTROL\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv6 / udp / l2tpv2 type control / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0xc80,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0xc80,len=12,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0xc80,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0xc80,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+Test case 3: MAC_IPV4_L2TPV2\n+----------------------------\n+This case is designed to check distribute MAC IPv4 L2TPV2 data packets based on MAC src and L2TP session ID as input set.\n+\n+Subcase 1: l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data session_id is <session_id> / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+Subcase 2: eth_l2_src_only_MAC_IPV4_L2TPV2_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv4 / udp / l2tpv2 type data / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+Subcase 3: l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l session_id is <session_id> / end actions queue index 2 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=8,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=8,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=8,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=8,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+Subcase 4: eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv4 / udp / l2tpv2 type data_l / end actions queue index 3/ end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=8,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=8,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=8,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=8,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+Subcase 5: l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s session_id is 0x1111 / end actions queue index 4 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)], iface=\"<tester interface>\")\n+ \n+Subcase 6: eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv4 / udp / l2tpv2 type data_s / end actions queue index 6 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+Subcase 7: l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o session_id is <session_id> offset_size is <offset> / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id change inputset>,offset=<offset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)], iface=\"<tester interface>\")\n+\n+Subcase 8: eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv4 / udp / l2tpv2 type data_o offset_size is <offset> / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id change inputset>,offset=<offset>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)], iface=\"<tester interface>\")\n+\n+Subcase 9: l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s session_id is 0x1111 / end actions queue index 2 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=12,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+Subcase 10: eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv4 / udp / l2tpv2 type data_l_s / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=12,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+ \n+Test case 4: MAC_IPV6_L2TPV2 \n+----------------------------\n+This case is designed to check distribute MAC IPv6 L2TPV2 data packets based on MAC src and L2TP session ID as input set.\n+\n+Subcase 1: l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data session_id is 0x1111 / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+Subcase 2: eth_l2_src_only_MAC_IPV6_L2TPV2_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv6 / udp / l2tpv2 type data / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+Subcase 3: l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l session_id is <session_id> / end actions queue index 2 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=8,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=8,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=8,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=8,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+Subcase 4: eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv6 / udp / l2tpv2 type data_l / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=8,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=8,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=8,session_id=<session_id>], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=8,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+Subcase 5: l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s session_id is <session_id> / end actions queue index 4 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+Subcase 6: eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv6 / udp / l2tpv2 type data_s / end actions queue index 6 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+Subcase 7: l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o session_id is <session_id> offset_size is <offset> / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)], iface=\"<tester interface>\")\n+ \n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id change inputset>,offset=<offset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)], iface=\"<tester interface>\")\n+\n+Subcase 8: eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv6 / udp / l2tpv2 type data_o offset_size is <offset> / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id change inputset>,offset=<offset>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)], iface=\"<tester interface>\")\n+\n+Subcase 9: l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s session_id is <session_id> / end actions queue index 2 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=12,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+Subcase 10: eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv6 / udp / l2tpv2 type data_l_s / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=12,session_id=<session_id change inputset>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=12,session_id=<session_id>)], iface=\"<tester interface>\")\n+\n+Test case 5: MAC_IPV4_PPPoL2TPV2 \n+--------------------------------\n+This case is designed to check distribute MAC IPv4 PPPoL2TPV2 data packets based on MAC src and L2TP session ID as input set.\n+\n+Subcase 1: l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data session_id is <session_id> / ppp / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id change inputset>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Subcase 2: eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv4 / udp / l2tpv2 type data / ppp / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id change inputset>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Subcase 3: l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l session_id is <session_id> / ppp / end actions queue index 2 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=12,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=12,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=12,session_id=<session_id change inputset>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=12,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Subcase 4: eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv4 / udp / l2tpv2 type data_l / ppp / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=12,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=12,session_id=<session_id change inputset>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=12,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=12,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Subcase 5: l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s session_id is <session_id> / ppp / end actions queue index 4 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id change inputset>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Subcase 6: eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv4 / udp / l2tpv2 type data_s / ppp / end actions queue index 6/ end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id change inputset>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Subcase 7: l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o session_id is <session_id> offset_size is <offset> / ppp / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id change inputset>,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Subcase 8: eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv4 / udp / l2tpv2 type data_o offset_size is <offset> / ppp / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id change inputset>,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Subcase 9: l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s session_id is <session_id> / ppp / end actions queue index 2 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=16,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=16,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=16,session_id=<session_id change inputset>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=16,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Subcase 10: eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv4 / udp / l2tpv2 type data_l_s / ppp / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=16,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=16,session_id=<session_id change inputset>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=16,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=16,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Test case 6: MAC_IPV6_PPPoL2TPV2 \n+--------------------------------\n+This case is designed to check distribute MAC IPv6 PPPoL2TPV2 data packets based on MAC src and L2TP session ID as input set.\n+\n+Subcase 1: l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data session_id is <session_id> / ppp / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id change inputset>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Subcase 2: eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv6 / udp / l2tpv2 type data / ppp / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id change inputset>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Subcase 3: l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l session_id is <session_id> / ppp / end actions queue index 2 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=12,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=12,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=12,session_id=<session_id change inputset>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=12,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Subcase 4: eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv6 / udp / l2tpv2 type data_l / ppp / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=12,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=12,session_id=<session_id change inputset>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=12,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=12,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Subcase 5: l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s session_id is <session_id> / ppp / end actions queue index 4 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id change inputset>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Subcase 6: eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv6 / udp / l2tpv2 type data_s / ppp / end actions queue index 6 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id change inputset>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Subcase 7: l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o session_id is <session_id> offset_size is <offset> / ppp / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id change inputset>,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Subcase 8: eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+     testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv6 / udp / l2tpv2 type data_o offset_size is <offset> / ppp / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id change inputset>,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,session_id=<session_id>,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Subcase 9: l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s session_id is <session_id> / ppp / end actions queue index 2 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=16,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=16,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=16,session_id=<session_id change inputset>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=16,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Subcase 10: eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth src is <src mac change inputset> / ipv6 / udp / l2tpv2 type data_l_s / ppp / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=16,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=16,session_id=<session_id change inputset>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=16,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=16,session_id=<session_id>)/HDLC()/Raw(b\"\\\\x00\\\\x00\")], iface=\"<tester interface>\")\n+\n+Test case 7: MAC_IPV4_PPPoL2TPV2_IPV4_PAY\n+-----------------------------------------\n+This case is designed to check distribute MAC IPv4 PPPoL2TPV2 IPv4 data packets based on inner IP src+dest address as input set.\n+\n+Subcase 1: ipv4_MAC_IPV4_PPPoL2TPV2_IPV4_PAY_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data / ppp / ipv4 src is <ipv4 src> dst is <ipv4 dst> / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+Subcase 2: ipv4_MAC_IPV4_PPPoL2TPV2_IPV4_PAY_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l / ppp / ipv4 src is <ipv4 src> dst is <ipv4 dst> / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+Subcase 3: ipv4_MAC_IPV4_PPPoL2TPV2_IPV4_PAY_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s / ppp / ipv4 src is <ipv4 src> dst is <ipv4 dst> / end actions queue index 7 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/iIP(src=\"<ipv4 src>\",dst=\"<ipv4 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+Subcase 4: ipv4_MAC_IPV4_PPPoL2TPV2_IPV4_PAY_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o offset_size is <offset> / ppp / ipv4 src is <ipv4 src> dst is <ipv4 dst> / end actions queue index 2 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+Subcase 5: ipv4_MAC_IPV4_PPPoL2TPV2_IPV4_PAY_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s / ppp / ipv4 src is <ipv4 src> dst is <ipv4 dst> / end actions queue index 4 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+Test case 8: MAC_IPV4_PPPoL2TPV2_IPV4_UDP_PAY\n+---------------------------------------------\n+This case is designed to check distribute MAC IPv4 PPPoL2TPV2 IPv4 UDP data packets based on IP src+dest address and inner UDP src+dest port as input set.\n+\n+Subcase 1: ipv4_udp_MAC_IPV4_PPPoL2TPV2_IPV4_UDP_PAY_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data / ppp / ipv4 src is <ipv4 src> / udp src is <inner sport> / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(sport=<inner sport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+Subcase 2: ipv4_udp_MAC_IPV4_PPPoL2TPV2_IPV4_UDP_PAY_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l / ppp / ipv4 src is <ipv4 src> / udp dst is <inner dport> / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Subcase 3: ipv4_udp_MAC_IPV4_PPPoL2TPV2_IPV4_UDP_PAY_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s / ppp / ipv4 dst is <ipv4 dst> / udp src is <inner sport> / end actions queue index 7 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(sport=<inner sport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst change inputset>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+Subcase 4: ipv4_udp_MAC_IPV4_PPPoL2TPV2_IPV4_UDP_PAY_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o offset_size is <offset> / ppp / ipv4 dst is <ipv4 dst> / udp dst is <inner dport> / end actions queue index 2 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst change inputset>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Subcase 5: ipv4_udp_MAC_IPV4_PPPoL2TPV2_IPV4_UDP_PAY_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s / ppp / ipv4 src is <ipv4 src> / udp dst is <inner dport> / end actions queue index 4 / end\n+\n+matched packets::\n+\n+  >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+  >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+  >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+  >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+  >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Test case 9: MAC_IPV4_PPPoL2TPV2_IPV4_TCP \n+-----------------------------------------\n+This case is designed to check distribute MAC IPv4 PPPoL2TPV2 IPv4 TCP data packets based on IP src+dest address and inner TCP src+dest port as input set.\n+\n+Subcase 1: ipv4_tcp_MAC_IPV4_PPPoL2TPV2_IPV4_TCP_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data / ppp / ipv4 src is <ipv4 src> / tcp src is <inner sport> / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(sport=<inner sport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+Subcase 2: ipv4_tcp_MAC_IPV4_PPPoL2TPV2_IPV4_TCP_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l / ppp / ipv4 src is <ipv4 src> / tcp dst is <inner dport> / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Subcase 3: ipv4_tcp_MAC_IPV4_PPPoL2TPV2_IPV4_TCP_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s / ppp / ipv4 dst is <ipv4 dst> / tcp src is <inner sport> / end actions queue index 7 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(sport=<inner sport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst change inputset>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+Subcase 4: ipv4_tcp_MAC_IPV4_PPPoL2TPV2_IPV4_TCP_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o offset_size is <offset> / ppp / ipv4 dst is <ipv4 dst> / tcp dst is <inner dport> / end actions queue index 2 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst change inputset>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Subcase 5: ipv4_tcp_MAC_IPV4_PPPoL2TPV2_IPV4_TCP_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s / ppp / ipv4 src is <ipv4 src> / tcp dst is <inner dport> / end actions queue index 4 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Test case 10: MAC_IPV4_PPPoL2TPV2_IPV6_PAY\n+------------------------------------------\n+This case is designed to check distribute MAC IPv4 PPPoL2TPV2 IPv6 data packets based on IP src+dest address as input set.\n+\n+Subcase 1: ipv6_MAC_IPV4_PPPoL2TPV2_IPV6_PAY_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data / ppp / ipv6 src is <ipv6 src> dst is <ipv6 dst> / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+\n+Subcase 2: ipv6_MAC_IPV4_PPPoL2TPV2_IPV6_PAY_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l / ppp / ipv6 src is <ipv6 src> dst is <ipv6 dst> / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+\n+Subcase 3: ipv6_MAC_IPV4_PPPoL2TPV2_IPV6_PAY_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s / ppp / ipv6 src is <ipv6 src> dst is <ipv6 dst> / end actions queue index 7 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+\n+Subcase 4: ipv6_MAC_IPV4_PPPoL2TPV2_IPV6_PAY_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o offset_size is <offset> / ppp / ipv6 src is <ipv6 src>9 dst is <ipv6 dst> / end actions queue index 2 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+\n+Subcase 5: ipv6_MAC_IPV4_PPPoL2TPV2_IPV6_PAY_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s / ppp / ipv6 src is <ipv6 src> dst is <ipv6 dst> / end actions queue index 4 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+\n+Test case 11: MAC_IPV4_PPPoL2TPV2_IPV6_UDP_PAY\n+----------------------------------------------\n+This case is designed to check distribute MAC IPv4 PPPoL2TPV2 IPv6 data packets based on IP src+dest address and inner UDP src+dest port as input set.\n+\n+Subcase 1: ipv6_udp_MAC_IPV4_PPPoL2TPV2_IPV6_UDP_PAY_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data / ppp / ipv6 dst is <ipv6 dst> / udp src is <inner sport> / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(sport=<inner sport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst change inputset>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+Subcase 2: ipv6_udp_MAC_IPV4_PPPoL2TPV2_IPV6_UDP_PAY_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l / ppp / ipv6 src is <ipv6 src> / udp dst is <inner dport> / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/UDP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Subcase 3: ipv6_udp_MAC_IPV4_PPPoL2TPV2_IPV6_UDP_PAY_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s / ppp / ipv6 dst is <ipv6 dst> / udp src is <inner sport> / end actions queue index 7 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(sport=<inner sport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst change inputset>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+Subcase 4: ipv6_udp_MAC_IPV4_PPPoL2TPV2_IPV6_UDP_PAY_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o offset_size is <offset> / ppp / ipv6 src is <ipv6 src> / udp dst is <inner dport> / end actions queue index 2 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/UDP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Subcase 5: ipv6_udp_MAC_IPV4_PPPoL2TPV2_IPV6_UDP_PAY_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s / ppp / ipv6 dst is <ipv6 dst> / udp dst is <inner dport> / end actions queue index 4 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst change inputset>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Test case 12: MAC_IPV4_PPPoL2TPV2_IPV6_TCP\n+------------------------------------------\n+This case is designed to check distribute MAC IPv4 PPPoL2TPV2 IPv6 data packets based on IP src+dest address and inner TCP src+dest port as input set.\n+\n+Subcase 1: ipv6_tcp_MAC_IPV4_PPPoL2TPV2_IPV6_TCP_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data / ppp / ipv6 dst is <ipv6 dst> / tcp src is <inner sport> / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/TCP(sport=<inner sport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst change inputset>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+Subcase 2: ipv6_tcp_MAC_IPV4_PPPoL2TPV2_IPV6_TCP_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l / ppp / ipv6 src is <ipv6 src> / tcp dst is <inner dport> / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Subcase 3: ipv6_tcp_MAC_IPV4_PPPoL2TPV2_IPV6_TCP_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s / ppp / ipv6 dst is <ipv6 dst> / tcp src is <inner sport> / end actions queue index 7 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/TCP(sport=<inner sport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst change inputset>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+Subcase 4: ipv6_tcp_MAC_IPV4_PPPoL2TPV2_IPV6_TCP_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o offset_size is <offset> / ppp / ipv6 src is <ipv6 src> / tcp dst is <inner dport> / end actions queue index 2 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Subcase 5: ipv6_tcp_MAC_IPV4_PPPoL2TPV2_IPV6_TCP_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s / ppp / ipv6 src is <ipv6 src> / tcp src is <inner sport> / end actions queue index 4 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(sport=<inner sport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+Test case 13: MAC_IPV6_PPPoL2TPV2_IPV4_PAY\n+------------------------------------------\n+This case is designed to check distribute MAC IPv6 PPPoL2TPV2 IPv4 data packets based on IP src+dest address as input set.\n+\n+Subcase 1: ipv4_MAC_IPV6_PPPoL2TPV2_IPV4_PAY_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data / ppp / ipv4 src is <ipv4 src> dst is <ipv4 dst> / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+Subcase 2: ipv4_MAC_IPV6_PPPoL2TPV2_IPV4_PAY_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l / ppp / ipv4 src is <ipv4 src> dst is <ipv4 dst> / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+Subcase 3: ipv4_MAC_IPV6_PPPoL2TPV2_IPV4_PAY_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s / ppp / ipv4 src is <ipv4 src> dst is <ipv4 dst> / end actions queue index 7 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+Subcase 4: ipv4_MAC_IPV6_PPPoL2TPV2_IPV4_PAY_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o offset_size is <offset> / ppp / ipv4 src is <ipv4 src> dst is <ipv4 dst> / end actions queue index 2 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+Subcase 5: ipv4_MAC_IPV6_PPPoL2TPV2_IPV4_PAY_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s / ppp / ipv4 src is <ipv4 src> dst is <ipv4 dst> / end actions queue index 4 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\",dst=\"<ipv4 dst>\")], iface=\"<tester interface>\")\n+\n+Test case 14: MAC_IPV6_PPPoL2TPV2_IPV4_UDP_PAY\n+----------------------------------------------\n+This case is designed to check distribute MAC IPv6 PPPoL2TPV2 IPv4 UDP data packets based on IP src+dest address and inner UDP src+dest port as input set.\n+\n+Subcase 1: ipv4_udp_MAC_IPV6_PPPoL2TPV2_IPV4_UDP_PAY_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data / ppp / ipv4 src is <ipv4 src> / udp dst is <inner dport> / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Subcase 2: ipv4_udp_MAC_IPV6_PPPoL2TPV2_IPV4_UDP_PAY_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l / ppp / ipv4 dst is <ipv4 dst> / udp src is <inner sport> / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(sport=<inner sport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst change inputset>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+Subcase 3: ipv4_udp_MAC_IPV6_PPPoL2TPV2_IPV4_UDP_PAY_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s / ppp / ipv4 src is <ipv4 src> / udp dst is <inner dport> / end actions queue index 7 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Subcase 4: ipv4_udp_MAC_IPV6_PPPoL2TPV2_IPV4_UDP_PAY_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o offset_size is <offset> / ppp / ipv4 dst is <ipv4 dst> / udp src is <inner sport> / end actions queue index 2 / end\n+\n+matched packets::\n+\n+  >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+  >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+  >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(sport=<inner sport change inputset>)], iface=\"<tester interface>\")\n+  >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst change inputset>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+  >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+Subcase 5: ipv4_udp_MAC_IPV6_PPPoL2TPV2_IPV4_UDP_PAY_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s / ppp / ipv4 dst is <ipv4 dst> / udp dst is <inner dport> / end actions queue index 4 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst change inputset>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Test case 15: MAC_IPV6_PPPoL2TPV2_IPV4_TCP\n+------------------------------------------\n+This case is designed to check distribute MAC IPv6 PPPoL2TPV2 IPv4 TCP data packets based on IP src+dest address and inner TCP src+dest port as input set.\n+\n+Subcase 1: ipv4_tcp_MAC_IPV6_PPPoL2TPV2_IPV4_TCP_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data / ppp / ipv4 src is <ipv4 src> / tcp dst is <inner dport> / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Subcase 2: ipv4_tcp_MAC_IPV6_PPPoL2TPV2_IPV4_TCP_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l / ppp / ipv4 dst is <ipv4 dst> / tcp src is <inner sport> / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(sport=<inner sport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst change inputset>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+Subcase 3: ipv4_tcp_MAC_IPV6_PPPoL2TPV2_IPV4_TCP_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s / ppp / ipv4 src is <ipv4 src> / tcp dst is <inner dport> / end actions queue index 7 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+  >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+  >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src change inputset>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+  >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(src=\"<ipv4 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Subcase 4: ipv4_tcp_MAC_IPV6_PPPoL2TPV2_IPV4_TCP_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o offset_size is <offset> / ppp / ipv4 dst is <ipv4 dst> / tcp src is <inner sport> / end actions queue index 2 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(sport=<inner sport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst change inputset>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+Subcase 5: ipv4_tcp_MAC_IPV6_PPPoL2TPV2_IPV4_TCP_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s / ppp / ipv4 dst is <ipv4 dst> / tcp dst is <inner dport> / end actions queue index 4 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst change inputset>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x21\")/IP(dst=\"<ipv4 dst>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Test case 16: MAC_IPV6_PPPoL2TPV2_IPV6_PAY\n+------------------------------------------\n+This case is designed to check distribute MAC IPv6 PPPoL2TPV2 IPv6 data packets based on IP src+dest address as input set.\n+\n+Subcase 1: ipv6_MAC_IPV6_PPPoL2TPV2_IPV6_PAY_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data / ppp / ipv6 src is <ipv6 src> dst is <ipv6 dst> / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>7\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+\n+Subcase 2: ipv6_MAC_IPV6_PPPoL2TPV2_IPV6_PAY_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l / ppp / ipv6 src is <ipv6 src> dst is <ipv6 dst> / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+\n+Subcase 3: ipv6_MAC_IPV6_PPPoL2TPV2_IPV6_PAY_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s / ppp / ipv6 src is <ipv6 src> dst is <ipv6 dst> / end actions queue index 7 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+\n+Subcase 4: ipv6_MAC_IPV6_PPPoL2TPV2_IPV6_PAY_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o offset_size is <offset> / ppp / ipv6 src <ipv6 src> dst is <ipv6 dst> / end actions queue index 2 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+ \n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+ \n+Subcase 5: ipv6_MAC_IPV6_PPPoL2TPV2_IPV6_PAY_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s / ppp / ipv6 src is <ipv6 src> dst is <ipv6 dst> / end actions queue index 4 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst change inputset>\")], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\",dst=\"<ipv6 dst>\")], iface=\"<tester interface>\")\n+\n+Test case 17: MAC_IPV6_PPPoL2TPV2_IPV6_UDP_PAY\n+----------------------------------------------\n+This case is designed to check distribute MAC IPv6 PPPoL2TPV2 IPv6 UDP data packets based on IP src+dest address and inner UDP src+dest port as input set.\n+\n+Subcase 1: ipv6_udp_MAC_IPV6_PPPoL2TPV2_IPV6_UDP_PAY_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data / ppp / ipv6 dst is <ipv6 dst> / udp src is <inner sport> / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(sport=<inner sport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst change inputset>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+Subcase 2: ipv6_udp_MAC_IPV6_PPPoL2TPV2_IPV6_UDP_PAY_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l / ppp / ipv6 src is <ipv6 src> / udp dst is <inner dport> / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/UDP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Subcase 3: ipv6_udp_MAC_IPV6_PPPoL2TPV2_IPV6_UDP_PAY_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s / ppp / ipv6 dst is <ipv6 dst> / udp src is <inner sport> / end actions queue index 7 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(sport=<inner sport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst change inputset>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+Subcase 4: ipv6_udp_MAC_IPV6_PPPoL2TPV2_IPV6_UDP_PAY_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o offset_size is <offset> / ppp / ipv6 src is <ipv6 src> / udp dst is <inner dport> / end actions queue index 2 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/UDP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Subcase 5: ipv6_udp_MAC_IPV6_PPPoL2TPV2_IPV6_UDP_PAY_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s / ppp / ipv6 dst is <ipv6 dst> / udp dst is <inner dport> / end actions queue index 4 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst change inputset>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/UDP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Test case 18: MAC_IPV6_PPPoL2TPV2_IPV6_TCP\n+------------------------------------------\n+This case is designed to check distribute MAC IPv6 PPPoL2TPV2 IPv6 TCP data packets based on IP src+dest address and inner TCP src+dest port as input set.\n+\n+Subcase 1: ipv6_tcp_MAC_IPV6_PPPoL2TPV2_IPV6_TCP_DATA\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data / ppp / ipv6 dst is <ipv6 dst> / tcp src is <inner sport> / end actions queue index 3 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/TCP(sport=<inner sport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst change inputset>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x000)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+Subcase 2: ipv6_tcp_MAC_IPV6_PPPoL2TPV2_IPV6_TCP_DATA_L\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l / ppp / ipv6 src is <ipv6 src> / tcp dst is <inner dport> / end actions queue index 5 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(dport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Subcase 3: ipv6_tcp_MAC_IPV6_PPPoL2TPV2_IPV6_TCP_DATA_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s / ppp / ipv6 dst is <ipv6 dst> / tcp src is <inner sport> / end actions queue index 7 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/TCP(sport=<inner sport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst change inputset>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x080)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(dst=\"<ipv6 dst>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+Subcase 4: ipv6_tcp_MAC_IPV6_PPPoL2TPV2_IPV6_TCP_DATA_O\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o offset_size is <offset> / ppp / ipv6 src is <ipv6 src> / tcp dst is <inner dport> / end actions queue index 2 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(dport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(sport=<inner dport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(sport=<inner dport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\")/TCP(sport=<inner dport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x020,offset=<offset>)/Raw(b\"\\\\x00\\\\x00\\\\x00\\\\x00\")/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(sport=<inner dport>)], iface=\"<tester interface>\")\n+\n+Subcase 5: ipv6_tcp_MAC_IPV6_PPPoL2TPV2_IPV6_TCP_DATA_L_S\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+rules::\n+\n+    testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s / ppp / ipv6 src is <ipv6 src> / tcp src is <inner sport> / end actions queue index 4 / end\n+\n+matched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac change inputset>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n+mismatched packets::\n+\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(sport=<inner sport change inputset>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IPv6()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src change inputset>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+    >>> sendp([Ether(src=\"<src mac>\")/IP()/UDP(dport=<dport>)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b\"\\\\x00\\\\x57\")/IPv6(src=\"<ipv6 src>\")/TCP(sport=<inner sport>)], iface=\"<tester interface>\")\n+\n",
    "prefixes": [
        "V3",
        "2/3"
    ]
}