get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 94879,
    "url": "https://patches.dpdk.org/api/patches/94879/?format=api",
    "web_url": "https://patches.dpdk.org/project/dts/patch/20210627185818.33122-1-qi.fu@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": "<20210627185818.33122-1-qi.fu@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/20210627185818.33122-1-qi.fu@intel.com",
    "date": "2021-06-27T18:58:18",
    "name": "[V4] test_plan: add test plan for cvl dcf flow priority",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "1902529c8cfe6eb718f7ae0a630c2be08578a361",
    "submitter": {
        "id": 1689,
        "url": "https://patches.dpdk.org/api/people/1689/?format=api",
        "name": "Fu, Qi",
        "email": "qi.fu@intel.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dts/patch/20210627185818.33122-1-qi.fu@intel.com/mbox/",
    "series": [
        {
            "id": 17495,
            "url": "https://patches.dpdk.org/api/series/17495/?format=api",
            "web_url": "https://patches.dpdk.org/project/dts/list/?series=17495",
            "date": "2021-06-27T18:58:18",
            "name": "[V4] test_plan: add test plan for cvl dcf flow priority",
            "version": 4,
            "mbox": "https://patches.dpdk.org/series/17495/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/94879/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/94879/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 BC5C6A0A0F;\n\tSun, 27 Jun 2021 12:17:56 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 83DD040692;\n\tSun, 27 Jun 2021 12:17:56 +0200 (CEST)",
            "from mga06.intel.com (mga06.intel.com [134.134.136.31])\n by mails.dpdk.org (Postfix) with ESMTP id D01574068A\n for <dts@dpdk.org>; Sun, 27 Jun 2021 12:17:53 +0200 (CEST)",
            "from fmsmga007.fm.intel.com ([10.253.24.52])\n by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 27 Jun 2021 03:17:51 -0700",
            "from dpdk-qifu-cxl.sh.intel.com ([10.67.119.212])\n by fmsmga007.fm.intel.com with ESMTP; 27 Jun 2021 03:17:49 -0700"
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,10027\"; a=\"268964824\"",
            "E=Sophos;i=\"5.83,302,1616482800\"; d=\"scan'208\";a=\"268964824\"",
            "E=Sophos;i=\"5.83,302,1616482800\"; d=\"scan'208\";a=\"418843282\""
        ],
        "X-ExtLoop1": "1",
        "From": "qifu <qi.fu@intel.com>",
        "To": "dts@dpdk.org",
        "Cc": "qifu <qi.fu@intel.com>",
        "Date": "Sun, 27 Jun 2021 14:58:18 -0400",
        "Message-Id": "<20210627185818.33122-1-qi.fu@intel.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "quoted-printable",
        "Subject": "[dts] [PATCH V4]test_plan: add test plan for cvl dcf flow priority",
        "X-BeenThere": "dts@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "test suite reviews and discussions <dts.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dts>,\n <mailto:dts-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dts/>",
        "List-Post": "<mailto:dts@dpdk.org>",
        "List-Help": "<mailto:dts-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dts>,\n <mailto:dts-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dts-bounces@dpdk.org",
        "Sender": "\"dts\" <dts-bounces@dpdk.org>"
    },
    "content": "add dpdk-21.05 new feature test plan: cvl_dcf_flow_priority_test_plan.rst\nthis feature support add priority 0/1 for dcf switch filter rules.\n\nSigned-off-by: qifu <qi.fu@intel.com>\n---\n .../cvl_dcf_flow_priority_test_plan.rst       | 1789 +++++++++++++++++\n test_plans/index.rst                          |    1 +\n 2 files changed, 1790 insertions(+)\n create mode 100644 test_plans/cvl_dcf_flow_priority_test_plan.rst",
    "diff": "diff --git a/test_plans/cvl_dcf_flow_priority_test_plan.rst b/test_plans/cvl_dcf_flow_priority_test_plan.rst\nnew file mode 100644\nindex 00000000..205993bd\n--- /dev/null\n+++ b/test_plans/cvl_dcf_flow_priority_test_plan.rst\n@@ -0,0 +1,1789 @@\n+.. Copyright (c) <2021>, Intel Corporation\r\n+   All rights reserved.\r\n+\r\n+   Redistribution and use in source and binary forms, with or without\r\n+   modification, are permitted provided that the following conditions\r\n+   are met:\r\n+\r\n+   - Redistributions of source code must retain the above copyright\r\n+     notice, this list of conditions and the following disclaimer.\r\n+\r\n+   - Redistributions in binary form must reproduce the above copyright\r\n+     notice, this list of conditions and the following disclaimer in\r\n+     the documentation and/or other materials provided with the\r\n+     distribution.\r\n+\r\n+   - Neither the name of Intel Corporation nor the names of its\r\n+     contributors may be used to endorse or promote products derived\r\n+     from this software without specific prior written permission.\r\n+\r\n+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r\n+   \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r\n+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\r\n+   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\r\n+   COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\r\n+   INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r\n+   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r\n+   SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r\n+   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r\n+   STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\r\n+   OF THE POSSIBILITY OF SUCH DAMAGE.\r\n+\r\n+================================\r\n+CVL Support Flow Priority in DCF\r\n+================================\r\n+\r\n+Description\r\n+===========\r\n+* DCF is able to accept RTE_FLOW's priority attribute and create a switch rule with corresponding priority.\r\n+* Currently only support priority 0 and 1. 0 means low priority and 1 means high priority.\r\n+* When creating a new switch rule, the driver need to avoid reuse an existing recipe with a different priority even the input set is matched,\r\n+  it should either reject the request or create a new recipe with a different priority.\r\n+* When looking up rule table, matched pkt will hit the high priority rule firstly,\r\n+  it will hit the low priority rule only when there is no high priority rule exist.\r\n+\r\n+\r\n+Prerequisites\r\n+=============\r\n+1. Hardware:\r\n+   columbiaville_25g/columbiaville_100g\r\n+\r\n+2. Software:\r\n+   dpdk: http://dpdk.org/git/dpdk\r\n+   scapy: http://www.secdev.org/projects/scapy/\r\n+\r\n+3. Copy specific ice package to /lib/firmware/updates/intel/ice/ddp/ice.pkg,\r\n+   then load driver::\r\n+\r\n+    rmmod ice\r\n+    insmod ice.ko\r\n+\r\n+4. Compile DPDK::\r\n+\r\n+    CC=gcc meson --werror -Denable_kmods=True -Dlibdir=lib --default-library=static x86_64-native-linuxapp-gcc\r\n+    ninja -C x86_64-native-linuxapp-gcc -j 110\r\n+\r\n+5. Get the pci device id of DUT, for example::\r\n+\r\n+    ./usertools/dpdk-devbind.py -s\r\n+\r\n+    0000:18:00.0 'Device 159b' if=ens785f0 drv=ice unused=vfio-pci\r\n+    0000:18:00.1 'Device 159b' if=ens785f1 drv=ice unused=vfio-pci\r\n+\r\n+6. Enable vlan prune flag::\r\n+\r\n+    ethtool --set-priv-flags ens785f0 vf-vlan-prune-disable on\r\n+\r\n+7. Generate 4 VFs on PF0(not all the VFs are used)::\r\n+\r\n+    echo 4 > /sys/bus/pci/devices/0000:18:00.0/sriov_numvfs\r\n+\r\n+    ./usertools/dpdk-devbind.py -s\r\n+    0000:18:01.0 'Ethernet Adaptive Virtual Function 1889' if=ens785f0v0 drv=iavf unused=vfio-pci\r\n+    0000:18:01.1 'Ethernet Adaptive Virtual Function 1889' if=ens785f0v1 drv=iavf unused=vfio-pci\r\n+    0000:18:01.2 'Ethernet Adaptive Virtual Function 1889' if=ens785f0v2 drv=iavf unused=vfio-pci\r\n+    0000:18:01.3 'Ethernet Adaptive Virtual Function 1889' if=ens785f0v3 drv=iavf unused=vfio-pci\r\n+\r\n+8. Set VF0 as trust::\r\n+\r\n+    ip link set ens785f0 vf 0 trust on\r\n+\r\n+9. Set mac addr for VF1, VF2 and VF3::\r\n+\r\n+    ip link set ens785f0 vf 1 mac 00:11:22:33:44:11\r\n+    ip link set ens785f0 vf 2 mac 00:11:22:33:44:22\r\n+    ip link set ens785f0 vf 3 mac 00:11:22:33:44:33\r\n+\r\n+10. Bind VFs to dpdk driver::\r\n+\r\n+    ./usertools/dpdk-devbind.py -b vfio-pci 0000:18:01.0 0000:18:01.1 0000:18:01.2 0000:18:01.3\r\n+\r\n+11. launch testpmd::\r\n+\r\n+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -n 4 -a 0000:18:01.0,cap=dcf -a 0000:18:01.1 -a 0000:18:01.2 -a 0000:18:01.3 -- -i\r\n+\r\n+    testpmd> set fwd rxonly\r\n+\r\n+    testpmd> set verbose 1\r\n+\r\n+    testpmd> start\r\n+\r\n+    testpmd> show port info all\r\n+\r\n+   check the VF0 driver is net_ice_dcf.\r\n+\r\n+\r\n+test steps for supported pattern\r\n+================================\r\n+1. validate rules: two rules have same pattern, input set but different priority and action(priority 0 -> to vf 1, priority 1 -> to vf 2).\r\n+2. create rules and list rules.\r\n+3. send matched packets, check vf 2 receive the packets for hiting the priority 1.\r\n+4. send mismatched packets, check the packets are not received by vf 1 or 2.\r\n+5. destroy rule with priority 1, list rules.\r\n+6. send matched packets, check vf 1 receive the packets for hiting the priority 0.\r\n+7. send mismatched packets, check the packets are not received by vf 1 or 2.\r\n+8. recreate rules which priority is 1, list rule.\r\n+9. destroy rule with priority 0, list rules.\r\n+10. send matched packets, check vf 2 receive the packets for hiting the priority 1.\r\n+11. send mismatched packets, check the packets are not received by vf 1 or 2.\r\n+12. destroy rule with priority 1, list rules.\r\n+13. send matched packets, check the packets are not received by vf 1 or 2.\r\n+\r\n+\r\n+support pattern and input set\r\n+=============================\r\n+\r\n+  +---------------------+-------------------------------+-------------------------------------------+\r\n+  |    Packet Types     |           Pattern             |                Input Set                  |\r\n+  +=====================+===============================+===========================================+\r\n+  |                     | MAC_PAY                       | [Source MAC], [Dest MAC], [Ether type]    |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV4_FRAG                 | [Dest MAC], [Source IP], [Dest IP],       |\r\n+  |                     |                               | [TTL], [DSCP]                             |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV4_PAY                  | [Dest MAC], [Source IP], [Dest IP],       |\r\n+  |                     |                               | [IP protocol], [TTL], [DSCP]              |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV4_UDP_PAY              | [Dest MAC], [Source IP], [Dest IP],       |\r\n+  |                     |                               | [TTL], [DSCP], [Source Port], [Dest Port] |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |    IPv4/IPv6 +      | MAC_IPV4_TCP_PAY              | [Dest MAC], [Source IP], [Dest IP],       |\r\n+  |    TCP/UDP/IGMP     |                               | [TTL], [DSCP], [Source Port], [Dest Port] |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV4_IGMP                 | [IP protocol]                             |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV6_FRAG_srcip_dstip     | [Source IP], [Dest IP]                    |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV6_FRAG_dstip_tc        | [Dest MAC], [Dest IP], [TC]               |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV6_PAY_srcip_dstip      | [Source IP], [Dest IP]                    |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV6_PAY_dstip_tc         | [Dest MAC], [Dest IP], [TC]               |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV6_UDP_PAY              | [Dest MAC], [Dest IP], [TC],              |\r\n+  |                     |                               | [Source Port], [Dest Port]                |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV6_TCP                  | [Dest MAC], [Dest IP], [TC],              |\r\n+  |                     |                               | [Source Port], [Dest Port]                |\r\n+  +---------------------+-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV4_TUN_IPV4_FRAG        | [Out Dest IP], [VNI/GRE_KEY],             |\r\n+  |                     |                               | [Inner Source IP], [Inner Dest IP]        |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV4_TUN_IPV4_PAY         | [Out Dest IP], [VNI/GRE_KEY],             |\r\n+  |                     |                               | [Inner Source IP], [Inner Dest IP]        |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV4_TUN_IPV4_UDP_PAY     | [Out Dest IP], [VNI/GRE_KEY],             |\r\n+  |                     |                               | [Inner Source IP], [Inner Dest IP],       |\r\n+  |                     |                               | [Inner Source Port], [Inner Dest Port]    |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV4_TUN_IPV4_TCP         | [Out Dest IP], [VNI/GRE_KEY],             |\r\n+  |                     |                               | [Inner Source IP], [Inner Dest IP],       |\r\n+  |                     |                               | [Inner Source Port], [Inner Dest Port]    |\r\n+  |       tunnel:       +-------------------------------+-------------------------------------------+\r\n+  |       NVGRE         | MAC_IPV4_TUN_MAC_IPV4_FRAG    | [Out Dest IP], [VNI/GRE_KEY],             |\r\n+  |                     |                               | [Inner Dest MAC],                         |\r\n+  |                     |                               | [Inner Source IP], [Inner Dest IP]        |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV4_TUN_MAC_IPV4_PAY     | [Out Dest IP], [VNI/GRE_KEY],             |\r\n+  |                     |                               | [Inner Dest MAC],                         |\r\n+  |                     |                               | [Inner Source IP], [Inner Dest IP]        |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV4_TUN_MAC_IPV4_UDP_PAY | [Out Dest IP], [VNI/GRE_KEY],             |\r\n+  |                     |                               | [Inner Dest MAC],                         |\r\n+  |                     |                               | [Inner Source IP],[Inner Dest IP],        |\r\n+  |                     |                               | [Inner Source Port], [Inner Dest Port]    |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV4_TUN_MAC_IPV4_TCP     | [Out Dest IP], [VNI/GRE_KEY],             |\r\n+  |                     |                               | [Inner Dest MAC],                         |\r\n+  |                     |                               | [Inner Source IP], [Inner Dest IP],       |\r\n+  |                     |                               | [Inner Source Port], [Inner Dest Port]    |\r\n+  +---------------------+-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_VLAN_PPPOE_IPV4_PAY       | [Dest MAC], [VLAN], [seid],               |\r\n+  |                     | _session_id_proto_id          | [pppoe_proto_id]                          |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_VLAN_PPPOE_IPV6_PAY       | [Dest MAC], [VLAN], [seid],               |\r\n+  |                     | _session_id_proto_id          | [pppoe_proto_id]                          |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_PPPOE_IPV4_PAY            | [Dest MAC], [seid], [pppoe_proto_id]      |\r\n+  |                     | _session_id_proto_id          |                                           |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_PPPOE_IPV6_PAY            | [Dest MAC], [seid], [pppoe_proto_id]      |\r\n+  |                     | _session_id_proto_id          |                                           |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_PPPOE_IPV4_PAY_IP_address | [Source IP], [Dest IP]                    |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_PPPOE_IPV4_UDP_PAY        | [Source IP], [Dest IP],                   |\r\n+  |                     |                               | [Source Port], [Dest Port]                |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_PPPOE_IPV4_UDP_PAY        | [Source IP], [Dest IP]                    |\r\n+  |                     | _non_src_dst_port             |                                           |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_PPPOE_IPV4_TCP_PAY        | [Source IP], [Dest IP],                   |\r\n+  |                     |                               | [Source Port], [Dest Port]                |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_PPPOE_IPV4_TCP_PAY        | [Source IP], [Dest IP]                    |\r\n+  |                     | _non_src_dst_port             |                                           |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_PPPOE_IPV6_PAY_IP_address | [Source IP], [Dest IP]                    |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_PPPOE_IPV6_UDP_PAY        | [Source IP], [Dest IP],                   |\r\n+  |                     |                               | [Source Port], [Dest Port]                |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_PPPOE_IPV6_UDP_PAY        | [Source IP], [Dest IP]                    |\r\n+  |                     | _non_src_dst_port             |                                           |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_PPPOE_IPV6_TCP_PAY        | [Source IP], [Dest IP],                   |\r\n+  |                     |                               | [Source Port], [Dest Port]                |\r\n+  |       PPPOES        +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_PPPOE_IPV6_TCP_PAY        | [Source IP], [Dest IP],                   |\r\n+  |                     | _non_src_dst_port             |                                           |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_VLAN_PPPOE_IPV4_PAY       | [VLAN], [Source IP], [Dest IP]            |\r\n+  |                     | _IP_address                   |                                           |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_VLAN_PPPOE_IPV4_UDP_PAY   | [VLAN], [Source IP], [Dest IP]            |\r\n+  |                     |                               | [Source Port], [Dest Port]                |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_VLAN_PPPOE_IPV4_UDP_PAY   | [VLAN], [Source IP], [Dest IP]            |\r\n+  |                     | _non_src_dst_port             |                                           |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_VLAN_PPPOE_IPV4_TCP_PAY   | [VLAN], [Source IP], [Dest IP]            |\r\n+  |                     |                               | [Source Port], [Dest Port]                |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_VLAN_PPPOE_IPV4_TCP_PAY   | [VLAN], [Source IP], [Dest IP]            |\r\n+  |                     | _non_src_dst_port             |                                           |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_VLAN_PPPOE_IPV6_PAY       | [VLAN], [Source IP], [Dest IP]            |\r\n+  |                     | _IP_address                   |                                           |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_VLAN_PPPOE_IPV6_UDP_PAY   | [VLAN], [Source IP], [Dest IP]            |\r\n+  |                     |                               | [Source Port], [Dest Port]                |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_VLAN_PPPOE_IPV6_UDP_PAY   | [VLAN], [Source IP], [Dest IP]            |\r\n+  |                     | _non_src_dst_port             |                                           |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_VLAN_PPPOE_IPV6_TCP_PAY   | [VLAN], [Source IP], [Dest IP]            |\r\n+  |                     |                               | [Source Port], [Dest Port]                |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_VLAN_PPPOE_IPV6_TCP_PAY   | [VLAN], [Source IP], [Dest IP]            |\r\n+  |                     | _non_src_dst_port             |                                           |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_PPPOE_LCP_PAY             | [Dest MAC], [seid], [pppoe_proto_id]      |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_PPPOE_IPCP_PAY            | [Dest MAC], [seid], [pppoe_proto_id]      |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_VLAN_PPPOE_LCP_PAY        | [Dest MAC], [VLAN], [seid],               |\r\n+  |                     |                               | [pppoe_proto_id]                          |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_VLAN_PPPOE_IPCP_PAY       | [Dest MAC], [VLAN], [seid],               |\r\n+  |                     |                               | [pppoe_proto_id]                          |\r\n+  +---------------------+-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV4_PFCP_NODE            | [Dest Port], [S-field]                    |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV4_PFCP_SESSION         | [Dest Port], [S-field]                    |\r\n+  |        PFCP         +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV6_PFCP_NODE            | [Dest Port], [S-field]                    |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV6_PFCP_SESSION         | [Dest Port], [S-field]                    |\r\n+  +---------------------+-------------------------------+-------------------------------------------+\r\n+  |                     | IP multicast                  | [Dest IP]                                 |\r\n+  |      multicast      +-------------------------------+-------------------------------------------+\r\n+  |                     | L2 multicast                  | [Dest MAC]                                |\r\n+  +---------------------+-------------------------------+-------------------------------------------+\r\n+  |                     | ethertype filter_PPPOD        | [Ether type]                              |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |   ethertype filter  | ethertype filter_PPPOE        | [Ether type]                              |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | ethertype filter_IPV6         | [Ether type]                              |\r\n+  +---------------------+-------------------------------+-------------------------------------------+\r\n+  |                     | UDP port filter_DHCP discovery| [Source Port], [Dest Port]                |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |   UDP port filter   | UDP port filter_DHCP offer    | [Source Port], [Dest Port]                |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | UDP port filter_VXLAN         | [Dest Port]                               |\r\n+  +---------------------+-------------------------------+-------------------------------------------+\r\n+  |   MAC VLAN filter   | MAC_VLAN filter               | [Dest MAC], [VLAN]                        |\r\n+  +---------------------+-------------------------------+-------------------------------------------+\r\n+  |    VLAN filter      | VLAN filter                   | [VLAN]                                    |\r\n+  +---------------------+-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV4_L2TPv3               | [Source IP], [Dest IP], [Session_id]      |\r\n+  |        L2TPv3       +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV6_L2TPv3               | [Source IP], [Dest IP], [Session_id]      |\r\n+  +---------------------+-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV4_ESP                  | [Source IP], [Dest IP], [SPI]             |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV6_ESP                  | [Source IP], [Dest IP], [SPI]             |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV4_AH                   | [Source IP], [Dest IP], [SPI]             |\r\n+  |         ESP         +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV6_AH                   | [Source IP], [Dest IP], [SPI]             |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV4_NAT-T-ESP            | [Source IP], [Dest IP], [SPI]             |\r\n+  |                     +-------------------------------+-------------------------------------------+\r\n+  |                     | MAC_IPV6_NAT-T-ESP            | [Source IP], [Dest IP], [SPI]             |\r\n+  +---------------------+-------------------------------+-------------------------------------------+\r\n+\r\n+\r\n+test case 01: MAC_PAY (this case is not supported in dpdk-21.05)\r\n+================================================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth src is 00:00:00:00:00:01 dst is 00:11:22:33:44:55 type is 0x0800 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth src is 00:00:00:00:00:01 dst is 00:11:22:33:44:55 type is 0x0800 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth src is 00:00:00:00:00:01 dst is 00:11:22:33:44:55 type is 0x0800 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth src is 00:00:00:00:00:01 dst is 00:11:22:33:44:55 type is 0x0800 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(src=\"00:00:00:00:00:01\",dst=\"00:11:22:33:44:55\")/IP()/Raw(\"x\" *80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(src=\"00:00:00:00:00:02\",dst=\"00:11:22:33:44:55\")/IP()/Raw(\"x\" *80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"00:00:00:00:00:01\",dst=\"00:11:22:33:44:54\")/IP()/Raw(\"x\" *80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"00:00:00:00:00:01\",dst=\"00:11:22:33:44:55\")/IPv6()/Raw(\"x\" *80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 02: MAC_IPV4_FRAG\r\n+===========================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 2 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 2 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 2 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 2 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=2,frag=5)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a3\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=2,frag=5)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.4\",dst=\"192.168.0.2\",tos=4,ttl=2,frag=5)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.5\",tos=4,ttl=2,frag=5)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=5,ttl=2,frag=5)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=3,frag=5)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+\r\n+\r\n+test case 03: MAC_IPV4_PAY\r\n+===============================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 proto is 6 tos is 4 ttl is 2 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 proto is 6 tos is 4 ttl is 2 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 proto is 6 tos is 4 ttl is 2 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 proto is 6 tos is 4 ttl is 2 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=2)/TCP()/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a3\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=2)/TCP()/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.4\",dst=\"192.168.0.2\",tos=4,ttl=2)/TCP()/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.5\",tos=4,ttl=2)/TCP()/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=5,ttl=2)/TCP()/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=3)/TCP()/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=2)/UDP()/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+\r\n+\r\n+test case 04: MAC_IPV4_UDP_PAY\r\n+===============================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / udp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / udp src is 25 dst is 23 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / udp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / udp src is 25 dst is 23 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=3)/UDP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a3\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=3)/UDP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.5\",dst=\"192.168.0.2\",tos=4,ttl=3)/UDP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.7\",tos=4,ttl=3)/UDP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=5,ttl=3)/UDP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=9)/UDP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=3)/UDP(sport=30,dport=23)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=3)/UDP(sport=25,dport=19)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+\r\n+\r\n+test case 05: MAC_IPV4_TCP_PAY\r\n+===============================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / tcp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / tcp src is 25 dst is 23 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / tcp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.1 dst is 192.168.0.2 tos is 4 ttl is 3 / tcp src is 25 dst is 23 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=3)/TCP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a3\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=3)/TCP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.5\",dst=\"192.168.0.2\",tos=4,ttl=3)/TCP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.7\",tos=4,ttl=3)/TCP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=5,ttl=3)/TCP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=9)/TCP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=3)/TCP(sport=30,dport=23)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=3)/TCP(sport=25,dport=19)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+\r\n+\r\n+test case 06: MAC_IPV4_IGMP\r\n+===========================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv4 proto is 0x02 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv4 proto is 0x02 / end actions vf id 1 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv4 proto is 0x02 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 proto is 0x02 / end actions vf id 1 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP()/IGMP()/Raw(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP()/TCP()/Raw(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP()/UDP()/Raw(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+\r\n+\r\n+test case 07: MAC_IPV6_srcip_dstip\r\n+==================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\")/IPv6ExtHdrFragment()/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/IPv6ExtHdrFragment()/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+\r\n+\r\n+test case 08: MAC_IPV6_dstip_tc\r\n+===============================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=3)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=3)/IPv6ExtHdrFragment()/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a3\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=3)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\",tc=3)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=4)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a3\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=3)/IPv6ExtHdrFragment()/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\",tc=3)/IPv6ExtHdrFragment()/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=4)/IPv6ExtHdrFragment()/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+\r\n+\r\n+test case 09: MAC_IPV6_UDP_PAY\r\n+==============================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / udp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / udp src is 25 dst is 23 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / udp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / udp src is 25 dst is 23 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=3)/UDP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a3\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=3)/UDP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\",tc=3)/UDP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=7)/UDP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=3)/UDP(sport=30,dport=23)/(\"X\"*480)], iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=3)/UDP(sport=25,dport=19)/(\"X\"*480)], iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 10: MAC_IPV6_TCP\r\n+==========================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tcp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tcp src is 25 dst is 23 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tcp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth dst is 68:05:ca:8d:ed:a8 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tcp src is 25 dst is 23 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=3)/TCP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a3\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=3)/TCP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\",tc=3)/TCP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=7)/TCP(sport=25,dport=23)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=3)/TCP(sport=30,dport=23)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1518\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\",tc=3)/TCP(sport=25,dport=19)/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+\r\n+\r\n+test case 11: MAC_IPV4_NVGRE_IPV4_PAY\r\n+=====================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether()/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether()/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\" ,frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether()/IP(dst=\"192.168.0.2\")/NVGRE(TNI=2)/Ether()/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=3)/Ether()/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether()/IP(src=\"192.168.1.4\", dst=\"192.168.1.3\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether()/IP(src=\"192.168.1.2\", dst=\"192.168.1.5\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.2\")/NVGRE(TNI=2)/Ether()/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\" ,frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=3)/Ether()/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\" ,frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether()/IP(src=\"192.168.1.4\", dst=\"192.168.1.3\" ,frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether()/IP(src=\"192.168.1.2\", dst=\"192.168.1.5\" ,frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 12: MAC_IPV4_NVGRE_IPV4_UDP_PAY\r\n+=========================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=0x8)/Ether()/IP(src=\"192.168.0.2\", dst=\"192.168.0.3\")/UDP(sport=50,dport=23)/Raw(\"x\"*80)], iface=\"ens786f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether()/IP(dst=\"192.168.0.2\")/NVGRE(TNI=0x8)/Ether()/IP(src=\"192.168.0.2\", dst=\"192.168.0.3\")/UDP(sport=50,dport=23)/Raw(\"x\"*80)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=0x3)/Ether()/IP(src=\"192.168.0.2\", dst=\"192.168.0.3\")/UDP(sport=50,dport=23)/Raw(\"x\"*80)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=0x8)/Ether()/IP(src=\"192.168.0.5\", dst=\"192.168.0.3\")/UDP(sport=50,dport=23)/Raw(\"x\"*80)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=0x8)/Ether()/IP(src=\"192.168.0.2\", dst=\"192.168.0.7\")/UDP(sport=50,dport=23)/Raw(\"x\"*80)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=0x8)/Ether()/IP(src=\"192.168.0.2\", dst=\"192.168.0.3\")/UDP(sport=20,dport=23)/Raw(\"x\"*80)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=0x8)/Ether()/IP(src=\"192.168.0.2\", dst=\"192.168.0.3\")/UDP(sport=50,dport=19)/Raw(\"x\"*80)], iface=\"ens786f0\", count=1)\r\n+\r\n+\r\n+test case 13: MAC_IPV4_NVGRE_IPV4_TCP\r\n+=====================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether()/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether()/IP(dst=\"192.168.0.2\")/NVGRE(TNI=2)/Ether()/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=3)/Ether()/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether()/IP(src=\"192.168.1.5\", dst=\"192.168.1.3\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether()/IP(src=\"192.168.1.2\", dst=\"192.168.1.7\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether()/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/TCP(sport=20,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether()/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/TCP(sport=25,dport=39)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 14: MAC_IPV4_NVGRE_MAC_IPV4_PAY\r\n+=========================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\" ,frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether()/IP(dst=\"192.168.0.2\")/NVGRE(TNI=2)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=3)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether(dst=\"68:05:ca:8d:ed:a9\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.4\", dst=\"192.168.1.3\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.5\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.2\")/NVGRE(TNI=2)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\" ,frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=3)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\" ,frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether(dst=\"68:05:ca:8d:ed:a9\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\" ,frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.4\", dst=\"192.168.1.3\" ,frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.5\" ,frag=5)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 15: MAC_IPV4_NVGRE_MAC_IPV4_UDP_PAY\r\n+=============================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 /  eth dst is 68:05:ca:8d:ed:a8  / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / udp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 /  eth dst is 68:05:ca:8d:ed:a8  / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / udp src is 25 dst is 23 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 /  eth dst is 68:05:ca:8d:ed:a8  / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / udp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 /  eth dst is 68:05:ca:8d:ed:a8  / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / udp src is 25 dst is 23 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=0x8)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)], iface=\"ens786f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether()/IP(dst=\"192.168.0.2\")/NVGRE(TNI=0x8)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=0x3)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=0x8)/Ether(dst=\"68:05:ca:8d:ed:a2\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=0x8)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.5\", dst=\"192.168.1.3\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=0x8)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.7\")/UDP(sport=25,dport=23)/Raw(\"x\"*80)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=0x8)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/UDP(sport=2,dport=23)/Raw(\"x\"*80)], iface=\"ens786f0\", count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=0x8)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/UDP(sport=25,dport=20)/Raw(\"x\"*80)], iface=\"ens786f0\", count=1)\r\n+\r\n+\r\n+test case 16: MAC_IPV4_NVGRE_MAC_IPV4_TCP\r\n+=========================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8  / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8  / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8  / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8  / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether()/IP(dst=\"192.168.0.2\")/NVGRE(TNI=2)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=3)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether(dst=\"68:05:ca:8d:ed:a2\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.5\", dst=\"192.168.1.3\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.7\")/TCP(sport=25,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/TCP(sport=1,dport=23)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/TCP(sport=25,dport=20)/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 17: MAC_IPV4_PFCP_NODE\r\n+================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp(Ether(dst=\"00:11:22:33:44:11\")/IP()/UDP(dport=8805)/PFCP(Sfield=0),iface=\"enp134s0f1\")\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp(Ether(dst=\"00:11:22:33:44:11\")/IP()/UDP(dport=8805)/PFCP(Sfield=1),iface=\"enp134s0f1\")\r\n+    sendp(Ether(dst=\"00:11:22:33:44:11\")/IPv6()/UDP(dport=8805)/PFCP(Sfield=0),iface=\"enp134s0f1\")\r\n+    sendp(Ether(dst=\"00:11:22:33:44:11\")/IPv6()/UDP(dport=8805)/PFCP(Sfield=1),iface=\"enp134s0f1\")\r\n+\r\n+\r\n+test case 18: MAC_IPV4_PFCP_SESSION\r\n+===================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 1 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv4 / udp / pfcp s_field is 1 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 1 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 / udp / pfcp s_field is 1 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp(Ether(dst=\"00:11:22:33:44:11\")/IP()/UDP(dport=8805)/PFCP(Sfield=1),iface=\"enp134s0f1\")\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp(Ether(dst=\"00:11:22:33:44:11\")/IP()/UDP(dport=8805)/PFCP(Sfield=0),iface=\"enp134s0f1\")\r\n+    sendp(Ether(dst=\"00:11:22:33:44:11\")/IPv6()/UDP(dport=8805)/PFCP(Sfield=0),iface=\"enp134s0f1\")\r\n+    sendp(Ether(dst=\"00:11:22:33:44:11\")/IPv6()/UDP(dport=8805)/PFCP(Sfield=1),iface=\"enp134s0f1\")\r\n+\r\n+\r\n+test case 19: MAC_IPV6_PFCP_NODE\r\n+================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 0 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv6 / udp / pfcp s_field is 0 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 0 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv6 / udp / pfcp s_field is 0 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp(Ether(dst=\"00:11:22:33:44:11\")/IPv6()/UDP(dport=8805)/PFCP(Sfield=0),iface=\"enp134s0f1\")\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp(Ether(dst=\"00:11:22:33:44:11\")/IP()/UDP(dport=8805)/PFCP(Sfield=0),iface=\"enp134s0f1\")\r\n+    sendp(Ether(dst=\"00:11:22:33:44:11\")/IP()/UDP(dport=8805)/PFCP(Sfield=1),iface=\"enp134s0f1\")\r\n+    sendp(Ether(dst=\"00:11:22:33:44:11\")/IPv6()/UDP(dport=8805)/PFCP(Sfield=1),iface=\"enp134s0f1\")\r\n+\r\n+\r\n+test case 20: MAC_IPV6_PFCP_SESSION\r\n+===================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 1 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv6 / udp / pfcp s_field is 1 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 1 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv6 / udp / pfcp s_field is 1 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp(Ether(dst=\"00:11:22:33:44:11\")/IPv6()/UDP(dport=8805)/PFCP(Sfield=1),iface=\"enp134s0f1\")\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp(Ether(dst=\"00:11:22:33:44:11\")/IP()/UDP(dport=8805)/PFCP(Sfield=0),iface=\"enp134s0f1\")\r\n+    sendp(Ether(dst=\"00:11:22:33:44:11\")/IP()/UDP(dport=8805)/PFCP(Sfield=1),iface=\"enp134s0f1\")\r\n+    sendp(Ether(dst=\"00:11:22:33:44:11\")/IPv6()/UDP(dport=8805)/PFCP(Sfield=0),iface=\"enp134s0f1\")\r\n+\r\n+\r\n+test case 21: IP multicast\r\n+==========================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv4 dst spec 224.0.0.0 dst mask 240.0.0.0 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv4 dst spec 224.0.0.0 dst mask 240.0.0.0 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv4 dst spec 224.0.0.0 dst mask 240.0.0.0 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 dst spec 224.0.0.0 dst mask 240.0.0.0 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether()/IP(dst=\"239.0.0.0\")/TCP()/Raw(\"x\"*80)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether()/IP(dst=\"128.0.0.0\")/TCP()/Raw(\"x\"*80)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+\r\n+test case 22: L2 multicast\r\n+==========================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth dst spec 01:00:5e:00:00:00 dst mask ff:ff:ff:80:00:00 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth dst spec 01:00:5e:00:00:00 dst mask ff:ff:ff:80:00:00 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth dst spec 01:00:5e:00:00:00 dst mask ff:ff:ff:80:00:00 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth dst spec 01:00:5e:00:00:00 dst mask ff:ff:ff:80:00:00 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"01:00:5e:7f:00:00\")/IP()/TCP()/Raw(\"x\"*80)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"01:00:5e:ff:00:00\")/IP()/TCP()/Raw(\"x\"*80)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+\r\n+test case 23: ethertype filter_PPPOD\r\n+====================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth type is 0x8863 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth type is 0x8863 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth type is 0x8863 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth type is 0x8863 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/PPPoED()/PPP()/IP()/Raw(\"x\" *80)],iface=\"enp27s0f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/PPPoE()/PPP()/IP()/Raw(\"x\" *80)],iface=\"enp27s0f0\",count=1)\r\n+\r\n+\r\n+test case 24: ethertype filter_PPPOE\r\n+====================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth type is 0x8864 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth type is 0x8864 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth type is 0x8864 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth type is 0x8864 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/PPPoE()/PPP()/IP()/Raw(\"x\"*80)],iface=\"enp27s0f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/PPPoED()/PPP()/IP()/Raw(\"x\"*80)],iface=\"enp27s0f0\",count=1)\r\n+\r\n+\r\n+test case 25: ethertype filter_IPV6\r\n+====================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth type is 0x86dd / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth type is 0x86dd / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth type is 0x86dd / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth type is 0x86dd / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IPv6(dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\", tc=3)/TCP(dport=23)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(dst=\"CDCD:910A:2222:5498:8475:1111:3900:2020\", tc=3)/TCP(dport=23)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP()/TCP(dport=23)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+\r\n+test case 26: UDP port filter_DHCP discovery\r\n+============================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv4 / udp src is 68 dst is 67 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv4 / udp src is 68 dst is 67 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv4 / udp src is 68 dst is 67 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 / udp src is 68 dst is 67 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP()/UDP(sport=68,dport=67)/BOOTP(chaddr=\"3c:fd:fe:b2:43:90\")/DHCP(options=[(\"message-type\",\"discover\"),\"end\"])/Raw(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP()/UDP(sport=63,dport=67)/BOOTP(chaddr=\"3c:fd:fe:b2:43:90\")/DHCP(options=[(\"message-type\",\"discover\"),\"end\"])/Raw(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP()/UDP(sport=68,dport=69)/BOOTP(chaddr=\"3c:fd:fe:b2:43:90\")/DHCP(options=[(\"message-type\",\"discover\"),\"end\"])/Raw(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+\r\n+test case 27: UDP port filter_DHCP offer\r\n+========================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv4 / udp src is 67 dst is 68 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv4 / udp src is 67 dst is 68 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv4 / udp src is 67 dst is 68 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 / udp src is 67 dst is 68 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP()/UDP(sport=67,dport=68)/BOOTP(chaddr=\"3c:fd:fe:b2:43:90\",yiaddr=\"192.168.1.0\")/DHCP(options=[(\"message-type\",\"offer\"),\"end\"])/Raw(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP()/UDP(sport=63,dport=68)/BOOTP(chaddr=\"3c:fd:fe:b2:43:90\",yiaddr=\"192.168.1.0\")/DHCP(options=[(\"message-type\",\"offer\"),\"end\"])/Raw(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\")/IP()/UDP(sport=67,dport=63)/BOOTP(chaddr=\"3c:fd:fe:b2:43:90\",yiaddr=\"192.168.1.0\")/DHCP(options=[(\"message-type\",\"offer\"),\"end\"])/Raw(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+\r\n+test case 28: UDP port filter_VXLAN\r\n+===================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv4 / udp dst is 4789 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv4 / udp dst is 4789 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv4 / udp dst is 4789 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 / udp dst is 4789 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/UDP()/VXLAN(vni=2)/Ether()/IP(src=\"192.168.0.2\", dst=\"192.168.0.3\",frag=5)/TCP()/Raw(\"x\"*80)],iface=\"enp27s0f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether()/IP(dst=\"192.168.0.1\")/NVGRE(TNI=2)/Ether()/IP(src=\"192.168.1.2\", dst=\"192.168.1.3\")/TCP()/Raw(\"x\"*80)],iface=\"enp27s0f0\",count=1)\r\n+\r\n+\r\n+test case 29: MAC_VLAN filter\r\n+==============================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1)/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=2)/TCP()/Raw(\"X\"*480)],iface=\"enp27s0f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:54\",type=0x8100)/Dot1Q(vlan=1)/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=2)/TCP()/Raw(\"X\"*480)],iface=\"enp27s0f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2)/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=2)/TCP()/Raw(\"X\"*480)],iface=\"enp27s0f0\",count=1)\r\n+\r\n+\r\n+test case 30: VLAN filter\r\n+==========================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / vlan tci is 1 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / vlan tci is 1 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / vlan tci is 1 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / vlan tci is 1 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1)/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=2)/TCP()/Raw(\"X\"*480)],iface=\"enp27s0f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2)/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=2)/TCP()/Raw(\"X\"*480)],iface=\"enp27s0f0\",count=1)\r\n+\r\n+\r\n+test case 31: MAC_IPV4_L2TPv3\r\n+=============================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 / l2tpv3oip session_id is 1 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv4 src is 192.168.0.2 / l2tpv3oip session_id is 1 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 / l2tpv3oip session_id is 1 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 src is 192.168.0.2 / l2tpv3oip session_id is 1 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst='00:11:22:33:44:12')/IP(src='192.168.0.2', proto=115)/L2TP('\\x00\\x00\\x00\\x01')/('X'*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst='00:11:22:33:44:12')/IP(src='192.168.0.2', proto=115)/L2TP('\\x00\\x00\\x00\\x02')/('X'*480)], iface=\"enp27s0f0\", count=1)\r\n+    sendp([Ether(dst='00:11:22:33:44:12')/IP(src='192.168.1.2', proto=115)/L2TP('\\x00\\x00\\x00\\x01')/('X'*480)], iface=\"enp27s0f0\", count=1)\r\n+    sendp([Ether(dst='00:11:22:33:44:12')/IP(dst='192.168.0.2', proto=115)/L2TP('\\x00\\x00\\x00\\x01')/('X'*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+\r\n+test case 32: MAC_IPV6_L2TPv3\r\n+=============================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / l2tpv3oip session_id is 1 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / l2tpv3oip session_id is 1 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / l2tpv3oip session_id is 1 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / l2tpv3oip session_id is 1 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst='00:11:22:33:44:13')/IPv6(dst='1111:2222:3333:4444:5555:6666:7777:8888', nh=115)/L2TP('\\x00\\x00\\x00\\x01')/('X'*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst='00:11:22:33:44:13')/IPv6(dst='1111:2222:3333:4444:5555:6666:7777:8888', nh=115)/L2TP('\\x00\\x00\\x00\\x02')/('X'*480)], iface=\"enp27s0f0\", count=1)\r\n+    sendp([Ether(dst='00:11:22:33:44:13')/IPv6(dst='1111:2222:3333:4444:5555:6666:7777:9999', nh=115)/L2TP('\\x00\\x00\\x00\\x01')/('X'*480)], iface=\"enp27s0f0\", count=1)\r\n+    sendp([Ether(dst='00:11:22:33:44:13')/IPv6(src='1111:2222:3333:4444:5555:6666:7777:8888', nh=115)/L2TP('\\x00\\x00\\x00\\x01')/('X'*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+\r\n+test case 33: MAC_IPV4_ESP\r\n+===========================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 / esp spi is 1 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv4 src is 192.168.0.2 / esp spi is 1 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 / esp spi is 1 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 src is 192.168.0.2 / esp spi is 1 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IP(src=\"192.168.0.2\", proto=50)/ESP(spi=1)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IP(src=\"192.168.0.2\", proto=50)/ESP(spi=2)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IP(src=\"192.168.1.2\", proto=50)/ESP(spi=1)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IP(dst=\"192.168.0.2\", proto=50)/ESP(spi=1)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+\r\n+test case 34: MAC_IPV6_ESP\r\n+===========================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / esp spi is 1 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / esp spi is 1 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / esp spi is 1 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / esp spi is 1 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IPv6(dst=\"1111:2222:3333:4444:5555:6666:7777:8888\", nh=50)/ESP(spi=1)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IPv6(dst=\"1111:2222:3333:4444:5555:6666:7777:8888\", nh=50)/ESP(spi=2)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IPv6(dst=\"1111:2222:3333:4444:5555:6666:7777:9999\", nh=50)/ESP(spi=1)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IPv6(src=\"1111:2222:3333:4444:5555:6666:7777:8888\", nh=50)/ESP(spi=1)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+\r\n+test case 35: MAC_IPV4_AH\r\n+===========================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 / ah spi is 1 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv4 src is 192.168.0.2 / ah spi is 1 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 / ah spi is 1 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 src is 192.168.0.2 / ah spi is 1 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IP(src=\"192.168.0.2\", proto=51)/AH(spi=1)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IP(src=\"192.168.0.2\", proto=51)/AH(spi=2)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IP(src=\"192.168.1.2\", proto=51)/AH(spi=1)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IP(dst=\"192.168.0.2\", proto=51)/AH(spi=1)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+\r\n+test case 36: MAC_IPV6_AH\r\n+===========================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / ah spi is 1 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / ah spi is 1 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / ah spi is 1 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / ah spi is 1 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IPv6(dst=\"1111:2222:3333:4444:5555:6666:7777:8888\", nh=51)/AH(spi=1)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IPv6(dst=\"1111:2222:3333:4444:5555:6666:7777:8888\", nh=51)/AH(spi=2)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IPv6(dst=\"1111:2222:3333:4444:5555:6666:7777:9999\", nh=51)/AH(spi=1)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IPv6(src=\"1111:2222:3333:4444:5555:6666:7777:8888\", nh=51)/AH(spi=1)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+\r\n+test case 37: MAC_IPV4_NAT-T-ESP\r\n+================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 / udp / esp spi is 1 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv4 src is 192.168.0.2 / udp / esp spi is 1 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 / udp / esp spi is 1 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 src is 192.168.0.2 / udp / esp spi is 1 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IP(src=\"192.168.0.2\")/UDP(dport=4500)/ESP(spi=1)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IP(src=\"192.168.0.2\")/UDP(dport=4500)/ESP(spi=2)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IP(src=\"192.168.1.2\")/UDP(dport=4500)/ESP(spi=1)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IP(dst=\"192.168.0.2\")/UDP(dport=4500)/ESP(spi=1)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+\r\n+test case 38: MAC_IPV6_NAT-T-ESP\r\n+================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / udp / esp spi is 1 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / udp / esp spi is 1 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / udp / esp spi is 1 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv6 dst is 1111:2222:3333:4444:5555:6666:7777:8888 / udp / esp spi is 1 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IPv6(dst=\"1111:2222:3333:4444:5555:6666:7777:8888\")/UDP(dport=4500)/ESP(spi=1)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IPv6(dst=\"1111:2222:3333:4444:5555:6666:7777:8888\")/UDP(dport=4500)/ESP(spi=2)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IPv6(dst=\"1111:2222:3333:4444:5555:6666:7777:9999\")/UDP(dport=4500)/ESP(spi=1)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:13\")/IPv6(src=\"1111:2222:3333:4444:5555:6666:7777:8888\")/UDP(dport=4500)/ESP(spi=1)/(\"X\"*480)], iface=\"enp27s0f0\", count=1)\r\n+\r\n+\r\n+test case 39: MAC_VLAN_PPPOE_IPV4_PAY_session_id_proto_id\r\n+=========================================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP()/Raw(\"x\" * 80)],iface=\"enp27s0f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:54\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP()/Raw(\"x\" * 80)],iface=\"enp27s0f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP()/Raw(\"x\" * 80)],iface=\"enp27s0f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=4)/PPP(proto=0x0021)/IP()/Raw(\"x\" * 80)],iface=\"enp27s0f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6()/Raw(\"x\" * 80)],iface=\"enp27s0f0\",count=1)\r\n+\r\n+\r\n+test case 40: MAC_VLAN_PPPOE_IPV6_PAY_session_id_proto_id\r\n+=========================================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6()/Raw(\"x\" * 80)],iface=\"enp27s0f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:54\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6()/Raw(\"x\" * 80)],iface=\"enp27s0f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6()/Raw(\"x\" * 80)],iface=\"enp27s0f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=4)/PPP(proto=0x0057)/IPv6()/Raw(\"x\" * 80)],iface=\"enp27s0f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP()/Raw(\"x\" * 80)],iface=\"enp27s0f0\",count=1)\r\n+\r\n+\r\n+test case 41: MAC_PPPOE_IPV4_PAY_session_id_proto_id\r\n+====================================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0021 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP()/Raw(\"x\" * 80)],iface=\"enp27s0f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:54\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP()/Raw(\"x\" * 80)],iface=\"enp27s0f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=4)/PPP(proto=0x0021)/IP()/Raw(\"x\" * 80)],iface=\"enp27s0f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6()/Raw(\"x\" * 80)],iface=\"enp27s0f0\",count=1)\r\n+\r\n+\r\n+test case 42: MAC_PPPOE_IPV6_PAY_session_id_proto_id\r\n+====================================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x0057 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6()/Raw(\"x\" * 80)],iface=\"enp27s0f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:54\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6()/Raw(\"x\" * 80)],iface=\"enp27s0f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=4)/PPP(proto=0x0057)/IPv6()/Raw(\"x\" * 80)],iface=\"enp27s0f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP()/Raw(\"x\" * 80)],iface=\"enp27s0f0\",count=1)\r\n+\r\n+\r\n+test case 43: MAC_PPPOE_IPV4_PAY_IP_address\r\n+===========================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.4\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 44: MAC_PPPOE_IPV4_UDP_PAY\r\n+===========================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp src is 25 dst is 23 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp src is 25 dst is 23 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.4\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=27,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=19)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 45: MAC_PPPOE_IPV4_UDP_PAY_non_src_dst_port\r\n+=====================================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.4\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 46: MAC_PPPOE_IPV4_TCP_PAY\r\n+=====================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp src is 25 dst is 23 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp src is 25 dst is 23 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.4\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=27,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=19)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 47: MAC_PPPOE_IPV4_TCP_PAY_non_src_dst_port\r\n+======================================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.4\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 48: MAC_PPPOE_IPV6_PAY_IP_address\r\n+===========================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\")/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 49: MAC_PPPOE_IPV6_UDP_PAY\r\n+====================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp src is 25 dst is 23 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp src is 25 dst is 23 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=27,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=19)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 50: MAC_PPPOE_IPV6_UDP_PAY_non_src_dst_port\r\n+=====================================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 51: MAC_PPPOE_IPV6_TCP_PAY\r\n+=====================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp src is 25 dst is 23 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp src is 25 dst is 23 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=27,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=19)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 52: MAC_PPPOE_IPV6_TCP_PAY_non_src_dst_port\r\n+=====================================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 53: MAC_VLAN_PPPOE_IPV4_PAY_IP_address\r\n+=================================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.4\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 54: MAC_VLAN_PPPOE_IPV4_UDP_PAY\r\n+=========================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp src is 25 dst is 23 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp src is 25 dst is 23 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.4\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=27,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=19)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 55: MAC_VLAN_PPPOE_IPV4_UDP_PAY_non_src_dst_port\r\n+==========================================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.4\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 56: MAC_VLAN_PPPOE_IPV4_TCP_PAY\r\n+=========================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp src is 25 dst is 23 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp src is 25 dst is 23 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.4\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=27,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=19)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 57: MAC_VLAN_PPPOE_IPV4_TCP_PAY_non_src_dst_port\r\n+==========================================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.3\", dst=\"192.168.1.2\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.4\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src=\"192.168.1.1\", dst=\"192.168.1.2\")/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 58: MAC_VLAN_PPPOE_IPV6_PAY_IP_address\r\n+================================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\"*80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 59: MAC_VLAN_PPPOE_IPV6_UDP_PAY\r\n+=========================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp src is 25 dst is 23 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp src is 25 dst is 23 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=27,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=19)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 60: MAC_VLAN_PPPOE_IPV6_UDP_PAY_non_src_dst_port\r\n+==========================================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / udp / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / udp / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / udp / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / udp / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 61: MAC_VLAN_PPPOE_IPV6_TCP_PAY\r\n+=========================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp src is 25 dst is 23 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp src is 25 dst is 23 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp src is 25 dst is 23 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2023\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=27,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=19)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 62: MAC_VLAN_PPPOE_IPV6_TCP_PAY_non_src_dst_port\r\n+==========================================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / tcp / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / tcp / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / tcp / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1536 / tcp / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1537\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/TCP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/UDP(sport=25,dport=23)/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src=\"CDCD:910A:2222:5498:8475:1111:3900:1536\", dst=\"CDCD:910A:2222:5498:8475:1111:3900:2022\")/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 63: MAC_PPPOE_LCP_PAY\r\n+===============================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0xc021 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0xc021 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0xc021 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0xc021 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:53\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=4)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 64: MAC_PPPOE_IPCP_PAY\r\n+================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x8021 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x8021 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x8021 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth dst is 00:11:22:33:44:55 / pppoes seid is 3 / pppoe_proto_id is 0x8021 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:53\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=4)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 65: MAC_VLAN_PPPOE_LCP_PAY\r\n+====================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0xc021 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0xc021 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0xc021 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0xc021 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:53\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=4)/PPP(proto=0xc021)/PPP_LCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case 66: MAC_VLAN_PPPOE_IPCP_PAY\r\n+=====================================\r\n+rules::\r\n+\r\n+    flow validate 0 priority 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x8021 / end actions vf id 1 / end\r\n+    flow validate 0 priority 1 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x8021 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x8021 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes seid is 3 / pppoe_proto_id is 0x8021 / end actions vf id 2 / end\r\n+\r\n+matched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+mismatched pkts::\r\n+\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:53\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=4)/PPP(proto=0x8021)/PPP_IPCP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+    sendp([Ether(src=\"11:22:33:44:55:99\",dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP()/Raw(\"x\" * 80)],iface=\"ens786f0\",count=1)\r\n+\r\n+\r\n+test case: negative test cases\r\n+==============================\r\n+\r\n+1. create rules, check all these rules can not be created::\r\n+\r\n+    flow create 0 priority 2 ingress pattern eth / ipv4 src is 192.168.0.1 dst is 192.168.0.2 / end actions vf id 1 / end\r\n+    flow create 0 priority a ingress pattern eth / ipv4 src is 192.168.0.1 dst is 192.168.0.2 / end actions vf id 1 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.1 dst is 192.168.0.2 / end actions vf id 4 / end\r\n+\r\n+\r\n+test case: exclusive test cases\r\n+===============================\r\n+subcase 1: same pattern/input set/action different priority\r\n+-----------------------------------------------------------\r\n+1. create same pattern, input set and action but different priority, check these two rules can be created::\r\n+\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 src is 192.168.0.1 dst is 192.168.0.2 / end actions vf id 2 / end\r\n+    flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.1 dst is 192.168.0.2 / end actions vf id 2 / end\r\n+\r\n+2. send matched pkts and check vf2 receive this pkt::\r\n+\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=2)/TCP()/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+\r\n+3. destroy rules::\r\n+\r\n+    flow flush 0\r\n+\r\n+subcase 2: same pattern/input set/priority different action\r\n+-----------------------------------------------------------\r\n+1. create same pattern, input set and priority but different action, check these two rules can be created::\r\n+\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 src is 192.168.0.1 dst is 192.168.0.2 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / ipv4 src is 192.168.0.1 dst is 192.168.0.2 / end actions vf id 2 / end\r\n+\r\n+2. send matched pkts and check both vf1 and vf2 receive this pkt::\r\n+\r\n+    sendp([Ether(dst=\"68:05:ca:8d:ed:a8\")/IP(src=\"192.168.0.1\",dst=\"192.168.0.2\",tos=4,ttl=2)/TCP()/(\"X\"*480)], iface=\"ens786f0\", count=1)\r\n+\r\n+3. destroy rules and repeat step 4, check the pkt cannot receive by any vf::\r\n+\r\n+    flow flush 0\r\n+\r\n+subcase 3: some rules overlap\r\n+-----------------------------\r\n+1. create rules::\r\n+\r\n+    flow create 0 priority 0 ingress pattern eth / vlan / vlan / pppoes / pppoe_proto_id is 0x21 / end actions vf id 1 / end\r\n+    flow create 0 priority 0 ingress pattern eth / vlan / vlan tci is 2 / end actions vf id 1 / end\r\n+    flow create 0 priority 1 ingress pattern eth / vlan / vlan / pppoes seid is 1 / ipv4 / end actions vf id 2 / end\r\n+    flow create 0 priority 1 ingress pattern eth dst is 00:00:00:01:03:03 / vlan / vlan / end actions vf id 2 / end\r\n+    flow create 0 priority 1 ingress pattern eth dst is 00:00:00:01:03:03 / end actions vf id 3 / end\r\n+    flow create 0 priority 1 ingress pattern eth / vlan tci is 1 / vlan tci is 2 / end actions vf id 3 / end\r\n+\r\n+2. check all the rules exist in the list::\r\n+\r\n+    flow list 0\r\n+\r\n+3. send pkt which match rule 1, rule 3, rule 4 and rule 5, check the pkts can be received by vf 2 and 3 for high priority::\r\n+\r\n+    sendp([Ether(dst=\"00:00:00:01:03:03\")/Dot1Q(vlan=1)/Dot1Q(vlan=2)/Raw(\"x\"*480)], iface=\"ens786f0\", count=1)\r\n+\r\n+4. destroy rule 5, repeat step 3 and check the pkts can be received by vf 2 and 3 for high priority::\r\n+\r\n+    flow destroy 0 rule 5\r\n+\r\n+5. destroy rule 4, repeat step 3 and check the pkts can be received by vf 2 for high priority::\r\n+\r\n+    flow destroy 0 rule 4\r\n+\r\n+6. destroy rule 3, repeat step 3 and check the pkts can be received by vf 1::\r\n+\r\n+    flow destroy 0 rule 3\r\n+\r\n+7. destroy rule 1, repeat step 3 and check the pkts can not be received::\r\n+\r\n+    flow destroy 0 rule 1\r\n+\r\n+8. send pkt which match rule 0 and rule 2, check the pkts can received by vf 2 for high priority::\r\n+\r\n+    sendp([Ether(dst=\"00:11:22:33:44:55\",type=0x8100)/Dot1Q(vlan=1,type=0x8100)/Dot1Q(vlan=0x2,type=0x8864)/PPPoE(sessionid=0x1)/PPP(proto=0x21)/IP()/UDP(dport=23)/(\"X\"*480)], iface=\"ens786f0\")\r\n+\r\n+9. destroy rule 2, repeat step 8 and check the pkts can be received by vf 1::\r\n+\r\n+    flow destroy 0 rule 2\r\n+\r\n+10. destroy rule 0, repeat step 8 and check the pkts can not be received::\r\n+\r\n+    flow destroy 0 rule 0\r\ndiff --git a/test_plans/index.rst b/test_plans/index.rst\nindex 06a38d12..1be4c6ee 100644\n--- a/test_plans/index.rst\n+++ b/test_plans/index.rst\n@@ -55,6 +55,7 @@ The following are the test plans for the DPDK DTS automated test system.\n     cvl_dcf_date_path_test_plan\n     cvl_dcf_switch_filter_test_plan\n     cvl_dcf_switch_filter_pppoe_test_plan\n+    cvl_dcf_flow_priority_test_plan\n     cvl_ecpri_test_plan\n     cvl_fdir_test_plan\n     cvl_iavf_rss_configure_test_plan\n",
    "prefixes": [
        "V4"
    ]
}