get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 98847,
    "url": "http://patches.dpdk.org/api/patches/98847/?format=api",
    "web_url": "http://patches.dpdk.org/project/dts/patch/20210914181204.20088-4-zhiminx.huang@intel.com/",
    "project": {
        "id": 3,
        "url": "http://patches.dpdk.org/api/projects/3/?format=api",
        "name": "DTS",
        "link_name": "dts",
        "list_id": "dts.dpdk.org",
        "list_email": "dts@dpdk.org",
        "web_url": "",
        "scm_url": "git://dpdk.org/tools/dts",
        "webscm_url": "http://git.dpdk.org/tools/dts/",
        "list_archive_url": "https://inbox.dpdk.org/dts",
        "list_archive_url_format": "https://inbox.dpdk.org/dts/{}",
        "commit_url_format": ""
    },
    "msgid": "<20210914181204.20088-4-zhiminx.huang@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/20210914181204.20088-4-zhiminx.huang@intel.com",
    "date": "2021-09-14T18:12:03",
    "name": "[V2,3/4] tests/cvl_fdir:add esp flow test case",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": false,
    "hash": "b55a898e80e0fdb955155eb088900c587d9fccaf",
    "submitter": {
        "id": 1685,
        "url": "http://patches.dpdk.org/api/people/1685/?format=api",
        "name": "Huang, ZhiminX",
        "email": "zhiminx.huang@intel.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dts/patch/20210914181204.20088-4-zhiminx.huang@intel.com/mbox/",
    "series": [
        {
            "id": 18896,
            "url": "http://patches.dpdk.org/api/series/18896/?format=api",
            "web_url": "http://patches.dpdk.org/project/dts/list/?series=18896",
            "date": "2021-09-14T18:12:00",
            "name": "enable esp flow",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/18896/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/98847/comments/",
    "check": "pending",
    "checks": "http://patches.dpdk.org/api/patches/98847/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 892BBA0C46;\n\tTue, 14 Sep 2021 11:41:41 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 83832410E5;\n\tTue, 14 Sep 2021 11:41:41 +0200 (CEST)",
            "from mga06.intel.com (mga06.intel.com [134.134.136.31])\n by mails.dpdk.org (Postfix) with ESMTP id 6A083410E9\n for <dts@dpdk.org>; Tue, 14 Sep 2021 11:41:39 +0200 (CEST)",
            "from orsmga007.jf.intel.com ([10.7.209.58])\n by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 14 Sep 2021 02:41:39 -0700",
            "from unknown (HELO localhost.localdomain) ([10.240.183.103])\n by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 14 Sep 2021 02:41:37 -0700"
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,10106\"; a=\"282942490\"",
            "E=Sophos;i=\"5.85,292,1624345200\"; d=\"scan'208\";a=\"282942490\"",
            "E=Sophos;i=\"5.85,292,1624345200\"; d=\"scan'208\";a=\"471919057\""
        ],
        "From": "Zhimin Huang <zhiminx.huang@intel.com>",
        "To": "dts@dpdk.org",
        "Cc": "xueqin.lin@intel.com,\n\tZhimin Huang <zhiminx.huang@intel.com>",
        "Date": "Wed, 15 Sep 2021 02:12:03 +0800",
        "Message-Id": "<20210914181204.20088-4-zhiminx.huang@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20210914181204.20088-1-zhiminx.huang@intel.com>",
        "References": "<20210914181204.20088-1-zhiminx.huang@intel.com>",
        "Subject": "[dts] [PATCH V2 3/4] tests/cvl_fdir:add esp flow test case",
        "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 21.08 new feature testcase,this feature support esp flow to match outer ip header.\ntake ip src/dst and spi for inputset,add 4 new cases in cvl_fdir test suite.\n\nSigned-off-by: Zhimin Huang <zhiminx.huang@intel.com>\n---\n tests/TestSuite_cvl_fdir.py | 336 ++++++++++++++++++++++++++++++++++++\n 1 file changed, 336 insertions(+)",
    "diff": "diff --git a/tests/TestSuite_cvl_fdir.py b/tests/TestSuite_cvl_fdir.py\nindex 0c3a1917..9cf3c352 100644\n--- a/tests/TestSuite_cvl_fdir.py\n+++ b/tests/TestSuite_cvl_fdir.py\n@@ -334,6 +334,50 @@ L2_Ethertype = [\n     'Ether(dst=\"00:11:22:33:44:55\",type=0x88f7)/\"\\\\x00\\\\x02\"',\n     'Ether(dst=\"00:11:22:33:44:55\",type=0x8847)']\n \n+MAC_IPV4_ESP = {\n+    \"matched\": [\n+        \"Ether(dst='00:11:22:33:44:55')/IP(src='192.168.0.20',dst='192.168.0.21',proto=50)/ESP(spi=7)/Raw('x'*480)\",\n+    ],\n+    \"unmatched\": [\n+        \"Ether(dst='00:11:22:33:44:55')/IP(src='192.168.0.22',dst='192.168.0.21',proto=50)/ESP(spi=7)/Raw('x'*480)\",\n+        \"Ether(dst='00:11:22:33:44:55')/IP(src='192.168.0.20',dst='192.168.0.11',proto=50)/ESP(spi=7)/Raw('x'*480)\",\n+        \"Ether(dst='00:11:22:33:44:55')/IP(src='192.168.0.20',dst='192.168.0.21',proto=50)/ESP(spi=17)/Raw('x'*480)\",\n+    ]\n+}\n+\n+MAC_IPV6_ESP = {\n+    \"matched\": [\n+        \"Ether(dst='00:11:22:33:44:55')/IPv6(src='2001::1',dst='2001::2',nh=50)/ESP(spi=7)/Raw('x'*480)\",\n+    ],\n+    \"unmatched\": [\n+        \"Ether(dst='00:11:22:33:44:55')/IPv6(src='1111:2222:3333:4444:5555:6666:7777:8888',dst='2001::2',nh=50)/ESP(spi=7)/Raw('x'*480)\",\n+        \"Ether(dst='00:11:22:33:44:55')/IPv6(src='2001::1',dst='1111:2222:3333:4444:5555:6666:7777:9999',nh=50)/ESP(spi=7)/Raw('x'*480)\",\n+        \"Ether(dst='00:11:22:33:44:55')/IPv6(src='2001::1',dst='2001::2',nh=50)/ESP(spi=17)/Raw('x'*480)\",\n+    ]\n+}\n+\n+MAC_IPV4_NAT_T_ESP = {\n+    \"matched\": [\n+        \"Ether(dst='00:11:22:33:44:55')/IP(src='192.168.0.20',dst='192.168.0.21')/UDP(dport=4500)/ESP(spi=7)/Raw('x'*480)\",\n+    ],\n+    \"unmatched\": [\n+        \"Ether(dst='00:11:22:33:44:55')/IP(src='192.168.0.22',dst='192.168.0.21')/UDP(dport=4500)/ESP(spi=7)/Raw('x'*480)\",\n+        \"Ether(dst='00:11:22:33:44:55')/IP(src='192.168.0.20',dst='192.168.0.11')/UDP(dport=4500)/ESP(spi=7)/Raw('x'*480)\",\n+        \"Ether(dst='00:11:22:33:44:55')/IP(src='192.168.0.20',dst='192.168.0.21')/UDP(dport=4500)/ESP(spi=77)/Raw('x'*480)\",\n+    ]\n+}\n+\n+MAC_IPV6_NAT_T_ESP = {\n+    \"matched\": [\n+        \"Ether(dst='00:11:22:33:44:55')/IPv6(src='2001::1',dst='2001::2')/UDP(dport=4500)/ESP(spi=7)/Raw('x'*480)\",\n+    ],\n+    \"unmatched\": [\n+        \"Ether(dst='00:11:22:33:44:55')/IPv6(src='2001::8',dst='2001::2')/UDP(dport=4500)/ESP(spi=7)/Raw('x'*480)\",\n+        \"Ether(dst='00:11:22:33:44:55')/IPv6(src='2001::1',dst='2001::9')/UDP(dport=4500)/ESP(spi=7)/Raw('x'*480)\",\n+        \"Ether(dst='00:11:22:33:44:55')/IPv6(src='2001::1',dst='2001::2')/UDP(dport=4500)/ESP(spi=77)/Raw('x'*480)\",\n+    ]\n+}\n+\n tv_mac_ipv4_pay_queue_index = {\n     \"name\": \"test_mac_ipv4_pay_queue_index\",\n     \"rule\": \"flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / end\",\n@@ -2148,6 +2192,282 @@ vectors_l2_ethertype = [tv_l2_ethertype_queue_index,\n                         tv_l2_ethertype_mark_rss,\n                         tv_l2_ethertype_mark]\n \n+tv_mac_ipv4_esp_queue_index = {\n+    \"name\": \"tv_mac_ipv4_esp_queue_index\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / esp spi is 7 / end actions queue index 13 / mark id 7 / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV4_ESP['matched'],\n+                  \"unmatched\": MAC_IPV4_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"mark_id\": 7, \"queue\": 13}\n+}\n+\n+tv_mac_ipv4_esp_queue_group = {\n+    \"name\": \"tv_mac_ipv4_esp_queue_group\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / esp spi is 7 / end actions rss queues 1 2 3 4 end / mark id 6 / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV4_ESP['matched'],\n+                  \"unmatched\": MAC_IPV4_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"mark_id\": 6, \"queue\": [1, 2, 3, 4]}\n+}\n+\n+tv_mac_ipv4_esp_passthru = {\n+    \"name\": \"tv_mac_ipv4_esp_passthru\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / esp spi is 7 / end actions passthru / mark id 1 / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV4_ESP['matched'],\n+                  \"unmatched\": MAC_IPV4_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"rss\": True, \"mark_id\": 1}\n+}\n+\n+tv_mac_ipv4_esp_drop = {\n+    \"name\": \"tv_mac_ipv4_esp_drop\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / esp spi is 7 / end actions drop / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV4_ESP['matched'],\n+                  \"unmatched\": MAC_IPV4_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"drop\": 1}\n+}\n+\n+tv_mac_ipv4_esp_mark_rss = {\n+    \"name\": \"tv_mac_ipv4_esp_mark_rss\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / esp spi is 7 / end actions mark id 2 / rss / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV4_ESP['matched'],\n+                  \"unmatched\": MAC_IPV4_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"mark_id\": 2, \"rss\": True}\n+}\n+\n+tv_mac_ipv4_esp_mark = {\n+    \"name\": \"tv_mac_ipv4_esp_mark\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / esp spi is 7 / end actions mark id 15 / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV4_ESP['matched'],\n+                  \"unmatched\": MAC_IPV4_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"mark_id\": 15}\n+}\n+\n+vectors_mac_ipv4_esp = [\n+    tv_mac_ipv4_esp_queue_index,\n+    tv_mac_ipv4_esp_queue_group,\n+    tv_mac_ipv4_esp_passthru,\n+    tv_mac_ipv4_esp_drop,\n+    tv_mac_ipv4_esp_mark_rss,\n+    tv_mac_ipv4_esp_mark,\n+]\n+\n+tv_mac_ipv6_esp_queue_index = {\n+    \"name\": \"tv_mac_ipv6_esp_queue_index\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / esp spi is 7 / end actions queue index 13 / mark id 7 / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV6_ESP['matched'],\n+                  \"unmatched\": MAC_IPV6_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"mark_id\": 7, \"queue\": 13}\n+}\n+\n+tv_mac_ipv6_esp_queue_group = {\n+    \"name\": \"tv_mac_ipv6_esp_queue_group\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / esp spi is 7 / end actions rss queues 1 2 3 4 end / mark id 6 / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV6_ESP['matched'],\n+                  \"unmatched\": MAC_IPV6_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"mark_id\": 6, \"queue\": [1, 2, 3, 4]}\n+}\n+\n+tv_mac_ipv6_esp_passthru = {\n+    \"name\": \"tv_mac_ipv6_esp_passthru\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / esp spi is 7 / end actions passthru / mark id 1 / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV6_ESP['matched'],\n+                  \"unmatched\": MAC_IPV6_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"rss\": True, \"mark_id\": 1}\n+}\n+\n+tv_mac_ipv6_esp_drop = {\n+    \"name\": \"tv_mac_ipv6_esp_drop\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / esp spi is 7 / end actions drop / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV6_ESP['matched'],\n+                  \"unmatched\": MAC_IPV6_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"drop\": 1}\n+}\n+\n+tv_mac_ipv6_esp_mark_rss = {\n+    \"name\": \"tv_mac_ipv6_esp_mark_rss\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / esp spi is 7 / end actions mark / rss / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV6_ESP['matched'],\n+                  \"unmatched\": MAC_IPV6_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"mark_id\": 0, \"rss\": True}\n+}\n+\n+tv_mac_ipv6_esp_mark = {\n+    \"name\": \"tv_mac_ipv6_esp_mark\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / esp spi is 7 / end actions mark id 15 / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV6_ESP['matched'],\n+                  \"unmatched\": MAC_IPV6_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"mark_id\": 15}\n+}\n+\n+vectors_mac_ipv6_esp = [\n+    tv_mac_ipv6_esp_queue_index,\n+    tv_mac_ipv6_esp_queue_group,\n+    tv_mac_ipv6_esp_passthru,\n+    tv_mac_ipv6_esp_drop,\n+    tv_mac_ipv6_esp_mark_rss,\n+    tv_mac_ipv6_esp_mark,\n+]\n+\n+tv_mac_ipv4_nat_t_esp_queue_index = {\n+    \"name\": \"tv_mac_ipv4_nat_t_esp_queue_index\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / esp spi is 7 / end actions queue index 13 / mark id 7 / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV4_NAT_T_ESP['matched'],\n+                  \"unmatched\": MAC_IPV4_NAT_T_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"mark_id\": 7, \"queue\": 13}\n+}\n+\n+tv_mac_ipv4_nat_t_esp_queue_group = {\n+    \"name\": \"tv_mac_ipv4_nat_t_esp_queue_group\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / esp spi is 7 / end actions rss queues 1 2 3 4 end / mark id 6 / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV4_NAT_T_ESP['matched'],\n+                  \"unmatched\": MAC_IPV4_NAT_T_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"mark_id\": 6, \"queue\": [1, 2, 3, 4]}\n+}\n+\n+tv_mac_ipv4_nat_t_esp_passthru = {\n+    \"name\": \"tv_mac_ipv4_nat_t_esp_passthru\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / esp spi is 7 / end actions passthru / mark id 1 / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV4_NAT_T_ESP['matched'],\n+                  \"unmatched\": MAC_IPV4_NAT_T_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"rss\": True, \"mark_id\": 1}\n+}\n+\n+tv_mac_ipv4_nat_t_esp_drop = {\n+    \"name\": \"tv_mac_ipv4_nat_t_esp_drop\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / esp spi is 7 / end actions drop / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV4_NAT_T_ESP['matched'],\n+                  \"unmatched\": MAC_IPV4_NAT_T_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"drop\": 1}\n+}\n+\n+tv_mac_ipv4_nat_t_esp_mark_rss = {\n+    \"name\": \"tv_mac_ipv4_nat_t_esp_mark_rss\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / esp spi is 7 / end actions mark id 2 / rss / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV4_NAT_T_ESP['matched'],\n+                  \"unmatched\": MAC_IPV4_NAT_T_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"mark_id\": 2, \"rss\": True}\n+}\n+\n+tv_mac_ipv4_nat_t_esp_mark = {\n+    \"name\": \"tv_mac_ipv4_nat_t_esp_mark\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / esp spi is 7 / end actions mark id 15 / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV4_NAT_T_ESP['matched'],\n+                  \"unmatched\": MAC_IPV4_NAT_T_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"mark_id\": 15}\n+}\n+\n+vectors_mac_ipv4_nat_t_esp = [\n+    tv_mac_ipv4_nat_t_esp_queue_index,\n+    tv_mac_ipv4_nat_t_esp_queue_group,\n+    tv_mac_ipv4_nat_t_esp_passthru,\n+    tv_mac_ipv4_nat_t_esp_drop,\n+    tv_mac_ipv4_nat_t_esp_mark_rss,\n+    tv_mac_ipv4_nat_t_esp_mark,\n+]\n+\n+tv_mac_ipv6_nat_t_esp_queue_index = {\n+    \"name\": \"tv_mac_ipv6_nat_t_esp_queue_index\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / udp / esp spi is 7 / end actions queue index 13 / mark id 7 / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV6_NAT_T_ESP['matched'],\n+                  \"unmatched\": MAC_IPV6_NAT_T_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"mark_id\": 7, \"queue\": 13}\n+}\n+\n+tv_mac_ipv6_nat_t_esp_queue_group = {\n+    \"name\": \"tv_mac_ipv6_nat_t_esp_queue_group\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / udp / esp spi is 7 / end actions rss queues 1 2 3 4 end / mark id 6 / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV6_NAT_T_ESP['matched'],\n+                  \"unmatched\": MAC_IPV6_NAT_T_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"mark_id\": 6, \"queue\": [1, 2, 3, 4]}\n+}\n+\n+tv_mac_ipv6_nat_t_esp_passthru = {\n+    \"name\": \"tv_mac_ipv6_nat_t_esp_passthru\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / udp / esp spi is 7 / end actions passthru / mark id 1 / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV6_NAT_T_ESP['matched'],\n+                  \"unmatched\": MAC_IPV6_NAT_T_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"rss\": True, \"mark_id\": 1}\n+}\n+\n+tv_mac_ipv6_nat_t_esp_drop = {\n+    \"name\": \"tv_mac_ipv6_nat_t_esp_drop\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / udp / esp spi is 7 / end actions drop / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV6_NAT_T_ESP['matched'],\n+                  \"unmatched\": MAC_IPV6_NAT_T_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"drop\": 1}\n+}\n+\n+tv_mac_ipv6_nat_t_esp_mark_rss = {\n+    \"name\": \"tv_mac_ipv6_nat_t_esp_mark_rss\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / udp / esp spi is 7 / end actions mark id 2 / rss / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV6_NAT_T_ESP['matched'],\n+                  \"unmatched\": MAC_IPV6_NAT_T_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"mark_id\": 2, \"rss\": True}\n+}\n+\n+tv_mac_ipv6_nat_t_esp_mark = {\n+    \"name\": \"tv_mac_ipv6_nat_t_esp_mark\",\n+    \"rule\": \"flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / udp / esp spi is 7 / end actions mark id 15 / end\",\n+    \"scapy_str\": {\"match\": MAC_IPV6_NAT_T_ESP['matched'],\n+                  \"unmatched\": MAC_IPV6_NAT_T_ESP['unmatched'],\n+                  },\n+    \"check_func\": rfc.check_mark,\n+    \"check_param\": {\"port_id\": 0, \"mark_id\": 15}\n+}\n+\n+vectors_mac_ipv6_nat_t_esp = [\n+    tv_mac_ipv6_nat_t_esp_queue_index,\n+    tv_mac_ipv6_nat_t_esp_queue_group,\n+    tv_mac_ipv6_nat_t_esp_passthru,\n+    tv_mac_ipv6_nat_t_esp_drop,\n+    tv_mac_ipv6_nat_t_esp_mark_rss,\n+    tv_mac_ipv6_nat_t_esp_mark,\n+]\n+\n class TestCVLFdir(TestCase):\n \n     def query_count(self, hits_set, hits, port_id=0, rule_id=0):\n@@ -3183,6 +3503,22 @@ class TestCVLFdir(TestCase):\n     def test_l2_ethertype(self):\n         self._multirules_process(vectors_l2_ethertype)\n \n+    @skip_unsupported_pkg('os default')\n+    def test_mac_ipv4_esp(self):\n+        self._rte_flow_validate(vectors_mac_ipv4_esp)\n+\n+    @skip_unsupported_pkg('os default')\n+    def test_mac_ipv6_esp(self):\n+        self._rte_flow_validate(vectors_mac_ipv6_esp)\n+\n+    @skip_unsupported_pkg('os default')\n+    def test_mac_ipv4_nat_t_esp(self):\n+        self._rte_flow_validate(vectors_mac_ipv4_nat_t_esp)\n+\n+    @skip_unsupported_pkg('os default')\n+    def test_mac_ipv6_nat_t_esp(self):\n+        self._rte_flow_validate(vectors_mac_ipv6_nat_t_esp)\n+\n     def test_unsupported_ethertype(self):\n         rule = ['flow create 0 ingress pattern eth type is 0x0800 / end actions queue index 1 / end',\n                 'flow create 0 ingress pattern eth type is 0x86dd / end actions queue index 1 / end']\n",
    "prefixes": [
        "V2",
        "3/4"
    ]
}