get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 40660,
    "url": "http://patchwork.dpdk.org/api/patches/40660/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/1528213708-5247-1-git-send-email-orika@mellanox.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<1528213708-5247-1-git-send-email-orika@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1528213708-5247-1-git-send-email-orika@mellanox.com",
    "date": "2018-06-05T15:48:28",
    "name": "[dpdk-dev,RFC] ethdev: support tunnel encapsulation action",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "2d85635feba4b1cc233fe33051454b3363073f83",
    "submitter": {
        "id": 795,
        "url": "http://patchwork.dpdk.org/api/people/795/?format=api",
        "name": "Ori Kam",
        "email": "orika@mellanox.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patchwork.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/1528213708-5247-1-git-send-email-orika@mellanox.com/mbox/",
    "series": [],
    "comments": "http://patchwork.dpdk.org/api/patches/40660/comments/",
    "check": "warning",
    "checks": "http://patchwork.dpdk.org/api/patches/40660/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 460511BAA7;\n\tTue,  5 Jun 2018 17:48:52 +0200 (CEST)",
            "from EUR01-HE1-obe.outbound.protection.outlook.com\n\t(mail-he1eur01on0065.outbound.protection.outlook.com [104.47.0.65])\n\tby dpdk.org (Postfix) with ESMTP id 8A1A11BAA6\n\tfor <dev@dpdk.org>; Tue,  5 Jun 2018 17:48:50 +0200 (CEST)",
            "from localhost.localdomain (141.226.120.58) by\n\tDB6PR05MB3431.eurprd05.prod.outlook.com (2603:10a6:6:1e::18) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n\t15.20.820.11; Tue, 5 Jun 2018 15:48:45 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com;\n\ts=selector1;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=qwJr0T61+F245QUZbHlskxM+laIqDElRYXkfin+nQgI=;\n\tb=otRewhTsI1tdd68MOFDTWEgTTpLkAfKR4aJ5/q5gi486Ztox66wPwL78sLCaa49LkX3HxvR4T3A2mohIaCtuLARdjdyvh0YxJgaTQ2SN7pQdErTZFPy8ns/IaMOhG1u2yS5keIFXLU+zXktjZxHXNxqERR99nTPAjn6fb4HGcr4=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=orika@mellanox.com; ",
        "From": "Ori Kam <orika@mellanox.com>",
        "To": "ferruh.yigit@intel.com, declan.doherty@intel.com, dev@dpdk.org,\n\tadrien.mazarguil@6wind.com, nelio.laranjeiro@6wind.com,\n\torika@mellanox.com",
        "Date": "Tue,  5 Jun 2018 18:48:28 +0300",
        "Message-Id": "<1528213708-5247-1-git-send-email-orika@mellanox.com>",
        "X-Mailer": "git-send-email 1.7.1",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[141.226.120.58]",
        "X-ClientProxiedBy": "AM6PR03CA0032.eurprd03.prod.outlook.com\n\t(2603:10a6:20b::45)\n\tTo DB6PR05MB3431.eurprd05.prod.outlook.com\n\t(2603:10a6:6:1e::18)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-HT": "Tenant",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(7020095)(4652020)(48565401081)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020);\n\tSRVR:DB6PR05MB3431; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; DB6PR05MB3431;\n\t3:jHnHObj8M31NK/liDrJoUkkqnbX7BhSn1vP+jFsBXV++j29ZZmWp2UgeWz0rd209g+USTVahKinZyTNBc+JjtLKuZz8AVD/5XSV/VZ8x4SZN0YIoF0BgVsrsdAZBZmdS4iWSNZzmf6LRB8s5sHoGRZ9Zd9xQRq4j+m3/kJNU8Oz58QgBJNmoR9mKnBWq0dhPbZP3fmzwFWoqKIkYo0G03GodFjxN5Dup0yAjLs5RkkwsrMoqFy0w85WKSPMDgiZf;\n\t25:uz/JrL0DwjY6OiIIX38JQQFB6ZJWMaTB4n6/uIAmhyu2VWXFwwgbX8grqtuYaM7DfuSd+JtF4Tni+d9a5CA7IwojVk3Fg7d4nftBGMdiqvmNt1RMBUsd1ZKoyLQ34qJDchEmMl2dxP+LFTATOrrjzc2Ya0nWPHesWlE0LHfP5tWvTrxwNXhfY5TWuLLHLsJm2hxvFis5AfSVRKhv+iZVFyqNSUWVOEWhjlnDPuWR2S2c8Z6MiKv47lX6O207X35J34j6Jk869PuZtP+E/Pg+F63skokGOhH6VD3K4z06SWJhwMUOWAsCrTq/p6E6+BAuL8JPyRRr6zTDDTxslcwMYQ==;\n\t31:xjdzEwqsrGe736xZC0Py4w9CsR1VBTogs0WdDO8dj9dNwoz+grsfQWQyt9Xm1xCVMedquLWhHT7o+0+/jfkrFNYDtZ/xuEPXvh57DV0hae/fa+4V92yi+KzDS/f2ny4/SSaeQuWtuquoFVvZ/P8zVMhVjqm2w8at1rpHzm+4a7eOj3kbgjbTio4hksjstB49vE4NXHqRgbjHa2ZMy5YkW/aOioMuGCYT6Ntv4TFFLWE=",
            "1; DB6PR05MB3431;\n\t20:stNGfYPBiGzuLseimPBE3iV3aR92k+/tnOjtbb2bC1N6/VvDBYhMErwFyPFof1MXPtt3OQIeSjyjrMtV4BoFVMIMCyvacbJk41yfg2nYHct1Eul0dkZ8ElsBpqz1J/vR731Fe6svPLwdX+N4EU/T/lp9GYF+645L1aN7AgAZfKJmLVTGr6zlMvOJHAlPiLPG/WkbADtWe/VtAybN9sHq77n6Kdh8QI6mLJywTDZcjduJfx6RHr8R2c9gaS3avoiniEjA90Mv1mjSoPMQkwJ91kJ6+oiCHlrw5Rx4aHIId8t9GUDDpAONDHTJ/q6/EcDkCcl6DjXXWdf8ZNUXp0dDTHm9vPPx1b8bICdO4/HKXCWS2+8Vp4kuKUQqs9qw+dVryPaErUEkPWvs1Qsflf5eG20VNwM1UnqrGA4NiyQXutr28yNuVq8iO2MEEcKcP0zhLZktvu+6L585Sq9V2H+zTCMJYmLUuePrGKo7LB6qzcjlwXJd1kGVLwuDRCceo6w6;\n\t4:cLUAYizgKYeewxnEZMzZT5kvBNsmYcNa/quOcpuS+IrdcjYP5QzR0eqI7MA8A0IbFUORHtMOF1SCZozMKgXLahG/4KhtBVpNP9cHinTDjrTp2mCUzHLvuF2NwZB1LtQSlPNbosCiV1dAkUL7SAj0+D+X6J/4CrfFMYfdqRetTildlzN/NJ1FbF8cRJK5ORWb+1mwFr9XvkJvLRj/rLfv1kOJWlRH+eCSJlZa9IOvv20ftPf13n0mQUuGRtRApanqGrv+82C+kJkvJUUwonC8toOwFoxZQ4im7DXbI2/zBv2XXkRcHl0w4VkZ5zGz+mR0r1hlylKF7aTe7x+PP8q1Yw==",
            "=?us-ascii?Q?1; DB6PR05MB3431;\n\t23:NSOmlWSEFSss8gluetWxcDNqYpqHV/L+VJ5mExjfq?=\n\t+YVDbxw1lJ8ufPBKYjJ0eiOAs9RdD5JvryaK5X78DIkt6QsbT5aR9dN5cwJwZcZl9bLZwAIGISwhD7JFyEx416hpcpRgRHlbW5k3OEVpLTppLXOk0RnIEBk30H4HurEpitpDMdmpgOzliarm/BdlW5TbpMPFflXTBRUF63xZSEVWe7z8mJs9CkfATAop8vgMbw+4oHYdEMBoRyCVRq4JRIKyET6yrEP9fGPX8ugHXxpGykl+YBd1Ac9xSTgQ1ZoT8T3sq0XE+fZ4wPvuskZjjO2rsB33HSzLMxlS47EuTUGcRf6PW6DIYRbgIkms+ZJcfVt5FGKat+ufq6LM9YbQcU7vh1YbQ5OLd8WMe+YnZVFa9d/NC19sEggLj7kG45TnKWAfJasH2Dv118ACGackHoJhYHFSRet3Ozz9nQBZUFUWewFduHjw8nVp2PQaI3TY9f0v0Q779kD4VjkdPDN7OqocKdxSTpclVAhzDdoAeTiqp6VsYvSNflY8LbkfeRNP4cFNHKqSQYPlZ+sGrkrcPGtRp0q77LG59McNSrethBhEABSDAMu/cYqpXBXSK6q+dpyENdEp+PUTN6+oNVLo0a6T4qo6m/7CuPiFEYbytORVS2eQesVqgfnqSOTpT9hI+jhehrpk27SrYsEn3gmKPGe4DSe4aXZzrl0pb5Rkyo6hcTQuzGC8Kps1yDUmM9n8ci4dxmzdy/ppSHMXdmnHjBAHsmrbQ0+D8ZmX2l4YnBjxJ4ROZ/T7C+3xiUyfB7iKQAcubRXWjKLkpBrk/jXA+5A093BYstm/zGDOcAaHZjE4pO8XQrCFn2Pyfbpt3CtmhRJOFZSOFOE/Ap0Fh4nZeeWFhzIrGtgxZDxbdf73xrhJh1SmS6ikOVzB2Kf7e1/mSKFctIPNx/5rm5lG0BnCmPzFYQ1Jq/NuZvHCfiGtodkEDYPXwvmr2ZPDUBSCwPb8ozjI+CkJVptoZ3fiq84dNMTLs7aeCbHWWC8RFhMqrbFd0+qDu/NP3UfslUKmgrLELOWca5QCNKbA62tJmHtN1Mwiwnj3qAvrAe7c+aG65Nq4nKtAd3mAQkZ4VtgUbp6tg8uArIt9lne+O2VAgn0rwDislnaT1E4M4+NX8TsUp/GRQ==",
            "1; DB6PR05MB3431;\n\t6:2bHjzGWGue/DN5RZBtV5Olmb1IPvOca2blzMKQG6lP7XgSizaykor+u2qjT6qKnTdLg6vo0LmcJKrlB7lZKhwNqJr7STIGfWix39KpaNjvr0dar0MZLp1CMud6MJgAtO6rcnrGzIlPvWnVrvtOL1ObBNPGncP3CJqZBrpTE8+KG5n0Z0BFQow2JcJsTZ9LKMwIPKYCcXXZvatx00UOR5aTU4pBgh+3bTo8k31vkmpgNI3P96GvbTpdMLj+73tGmnxdLIZXb1gZfTjD2TldhhRaQTghejPAjoodlKuQEs6RxdW4gscv9TGQlSG3ObfFtgVgxFqRuWDLFrxDsO/vAwisP12p2x1HA4DTRjT6sW7rx47pbdy8uK7AvSnmN35Tmqn2OkQzaKQUWmFRiN0r3QkrPm+/CBApKASVo46DAUylhnh/a4j+ZziRzbPrandw9+mQOG0cCNt2PQhueAdP3PpQ==;\n\t5:6RBj4d/KuEMqiEAb89S75AuD2MgC2vlJqFyCY3sIixjINT531EnkjyXJ3DgZng3eJesaPgOfnjvVdCsMxTutWUERkol1dS+T9/0tt4cUWQiJdGtFtF0a4mqtSGx/317WeamIvvPKCJQx3aZJ2lZ0NUZY+keFnb/+dUcYCqeCAwY=;\n\t24:rnL7N0KF9104fhfXbobbIKr0tguLQqSQ6sB/YzIwP+0omtqJq9fftJEYkPS5Wp8XxfKaJQCOnDQNOht0cHEMLSEn7gqNNTLt/7XguUfF24c=",
            "1; DB6PR05MB3431;\n\t7:dA3jNt9yY+hFkzIWVDUgfbagFA2vZbZx5sCIts1WnYF0HydYApd0vgQR0/rf9pP4LsatTWVQNWX2SHeK0fH5MheOMbAPsdFPL78D7oXlOR/gvhF5wbhiGdHtoJU4vdqmqT0iPRuJEN9TIf1iYbIVfxIX6OHm4SzT3SoIBKRPfZuPEueYEjeXJYDDhjvJFCjahITA6txpfWHp9fjtZ/lLSQ/kYCqYVjF8AY2JS4UbhWAoFCZn4R/RFXXsZ2mmME3l"
        ],
        "X-MS-TrafficTypeDiagnostic": "DB6PR05MB3431:",
        "X-LD-Processed": "a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr",
        "X-Microsoft-Antispam-PRVS": "<DB6PR05MB3431EDD06407401C6457755BDB660@DB6PR05MB3431.eurprd05.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:(278428928389397)(788757137089);",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(3231254)(944501410)(52105095)(10201501046)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(20161123564045)(20161123558120)(20161123560045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016);\n\tSRVR:DB6PR05MB3431; BCL:0; PCL:0; RULEID:; SRVR:DB6PR05MB3431; ",
        "X-Forefront-PRVS": "0694C54398",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(6069001)(376002)(366004)(39860400002)(39380400002)(346002)(396003)(199004)(189003)(476003)(7736002)(52116002)(25786009)(105586002)(51416003)(47776003)(305945005)(66066001)(106356001)(956004)(2616005)(486006)(316002)(16586007)(6666003)(561944003)(48376002)(50466002)(97736004)(86362001)(2906002)(6512007)(26005)(50226002)(186003)(53936002)(59450400001)(8936002)(68736007)(36756003)(386003)(6486002)(6506007)(3846002)(6116002)(8676002)(478600001)(81156014)(81166006)(5660300001)(16526019);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR05MB3431; H:localhost.localdomain;\n\tFPR:; \n\tSPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; ",
        "Received-SPF": "None (protection.outlook.com: mellanox.com does not designate\n\tpermitted sender hosts)",
        "X-Microsoft-Antispam-Message-Info": "S+y7NZGBkVTevdooG7liL6WUzZg4HlOkr+bnwLkcTLZmAjnC5ZG7nqV/lZqimcMpNyfM3aLsP4fjkOsgE29JPhfS2akRZaLXjoCjgeAX3ajLrTrlQ0oSlHBHUyBBWvUPxe34W+HO+yScujZo588zt/VPVW4qxZM5+zQMEcQYvUo5YutlA7bEb/W0EK3Ketv6",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-MS-Office365-Filtering-Correlation-Id": "43ed6615-b5db-49a6-8ba1-08d5cafbd2e3",
        "X-OriginatorOrg": "Mellanox.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "05 Jun 2018 15:48:45.5955\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "43ed6615-b5db-49a6-8ba1-08d5cafbd2e3",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "a652971c-7d2e-4d9b-a6a4-d149256f461b",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DB6PR05MB3431",
        "Subject": "[dpdk-dev] [RFC] ethdev: support tunnel encapsulation action",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This RFC contain proposal to add generic support for tunnel\nencapsulation/decapsulation.\n\nDue to the fact that there are many possible tunnel types\nand each tunnel type has number of header variations, there\nis a need for some generic command.\n\nexample for tunnel headers in case of MPLSoGRE:\nETH / VLAN / IPV4 / GRE / MPLS / ETH / IP / L4-L7\nETH / VLAN / IPV6 / GRE / MPLS / ETH / IP / L4-L7\nETH / IPV4 / GRE / MPLS / ETH / IP / L4-L7\nETH / IPV6 / GRE / MPLS / ETH / IP / L4-L7\nETH / VLAN / IPV4 / GRE / MPLS / IP / L4-L7\nETH / VLAN / IPV6 / GRE / MPLS / IP / L4-L7\nETH / IPV4 / GRE / MPLS / IP / L4-L7\nETH / IPV6 / GRE / MPLS / IP / L4-L7\n\nAs can be seen from the examples some of the encapsulation\nis done by overwriting the inner L2 packet spec.\n\nTo support all of those configuration it is much\neaser if we create 2 encap functions one that\nis used to encap L2 packet and one that is used\nto encap L3 packet by removing the L2 and applying\nthe encapsulation header.\n\nThe use of void * buffer will enable the\ninsertion of any valid encapsulation header.\nthe use of such a buffer will also simplify the processing\nneeded to validate and apply vs the use of rte_flow_items.\nThe use of a buffer will also will be easer\nfor some applications (for example vrouter)\n\nFor decap we will also have 2 actions\none for decaping a packet with inner L2\nand one for decaping a packet with inner L3.\nwhen decaping L3 packet the user should\nsupplay the L2 data which should be added to the inner packet.\n\nSigned-off-by: Ori Kam <orika@mellanox.com>\n---\n doc/guides/prog_guide/rte_flow.rst |  141 ++++++++++++++-----------------\n lib/librte_ethdev/rte_flow.h       |  165 +++++++++++++++++++++--------------\n 2 files changed, 161 insertions(+), 145 deletions(-)",
    "diff": "diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst\nindex b305a72..7417833 100644\n--- a/doc/guides/prog_guide/rte_flow.rst\n+++ b/doc/guides/prog_guide/rte_flow.rst\n@@ -1969,112 +1969,95 @@ Implements ``OFPAT_PUSH_MPLS`` (\"push a new MPLS tag\") as defined by the\n    | ``ethertype`` | EtherType |\n    +---------------+-----------+\n \n-Action: ``VXLAN_ENCAP``\n-^^^^^^^^^^^^^^^^^^^^^^^\n-\n-Performs a VXLAN encapsulation action by encapsulating the matched flow in the\n-VXLAN tunnel as defined in the``rte_flow_action_vxlan_encap`` flow items\n-definition.\n+Action: ``TUNNEL_ENCAP``\n+^^^^^^^^^^^^^^^^^^^^^^^^\n \n-This action modifies the payload of matched flows. The flow definition specified\n-in the ``rte_flow_action_tunnel_encap`` action structure must define a valid\n-VLXAN network overlay which conforms with RFC 7348 (Virtual eXtensible Local\n-Area Network (VXLAN): A Framework for Overlaying Virtualized Layer 2 Networks\n-over Layer 3 Networks). The pattern must be terminated with the\n-RTE_FLOW_ITEM_TYPE_END item type.\n+Perform a tunnel encapsulation action by encapsulating the matched flow with\n+the given buffer.\n \n-.. _table_rte_flow_action_vxlan_encap:\n+This action modifies the payload of the matched flows.\n+The buffer must hold a valid tunnel encapsulation header.\n \n-.. table:: VXLAN_ENCAP\n+.. _table_rte_flow_action_tunnel_encap:\n \n+.. table:: TUNNEL_ENCAP\n+    \n    +----------------+-------------------------------------+\n    | Field          | Value                               |\n    +================+=====================================+\n-   | ``definition`` | Tunnel end-point overlay definition |\n+   | ``type``       | Encapsulation tunnel type.          |\n+   +----------------+-------------------------------------+\n+   | ``buf``        | The encapsulation header.           |\n+   +----------------+-------------------------------------+\n+   | ``len``        | Buf len.                            |\n    +----------------+-------------------------------------+\n \n-.. _table_rte_flow_action_vxlan_encap_example:\n-\n-.. table:: IPv4 VxLAN flow pattern example.\n-\n-   +-------+----------+\n-   | Index | Item     |\n-   +=======+==========+\n-   | 0     | Ethernet |\n-   +-------+----------+\n-   | 1     | IPv4     |\n-   +-------+----------+\n-   | 2     | UDP      |\n-   +-------+----------+\n-   | 3     | VXLAN    |\n-   +-------+----------+\n-   | 4     | END      |\n-   +-------+----------+\n-\n-Action: ``VXLAN_DECAP``\n-^^^^^^^^^^^^^^^^^^^^^^^\n+Action: ``TUNNEL_DECAP``\n+^^^^^^^^^^^^^^^^^^^^^^^^\n \n-Performs a decapsulation action by stripping all headers of the VXLAN tunnel\n-network overlay from the matched flow.\n+Perform a tunnel decapsulation on L2 inner packet\n \n-The flow items pattern defined for the flow rule with which a ``VXLAN_DECAP``\n-action is specified, must define a valid VXLAN tunnel as per RFC7348. If the\n-flow pattern does not specify a valid VXLAN tunnel then a\n-RTE_FLOW_ERROR_TYPE_ACTION error should be returned.\n+This action modifies the payload of the matched flows.\n+The buffer must hold a valid tunnel encapsulation header.\n \n-This action modifies the payload of matched flows.\n+.. _table_rte_flow_action_tunnel_decap:\n \n-Action: ``NVGRE_ENCAP``\n-^^^^^^^^^^^^^^^^^^^^^^^\n+.. table:: TUNNEL_DECAP\n+    \n+   +----------------+-------------------------------------+\n+   | Field          | Value                               |\n+   +================+=====================================+\n+   | ``type``       | Encapsulation tunnel type.          |\n+   +----------------+-------------------------------------+\n \n-Performs a NVGRE encapsulation action by encapsulating the matched flow in the\n-NVGRE tunnel as defined in the``rte_flow_action_tunnel_encap`` flow item\n-definition.\n+Action: ``TUNNEL_ENCAP_L3``\n+^^^^^^^^^^^^^^^^^^^^^^^^^^^\n \n-This action modifies the payload of matched flows. The flow definition specified\n-in the ``rte_flow_action_tunnel_encap`` action structure must defined a valid\n-NVGRE network overlay which conforms with RFC 7637 (NVGRE: Network\n-Virtualization Using Generic Routing Encapsulation). The pattern must be\n-terminated with the RTE_FLOW_ITEM_TYPE_END item type.\n+Perform a tunnel encapsulation action by encapsulating the matched flow with\n+the given buffer.\n+The given encapsulation is overwritten the original L2 part of the original\n+packet.\n \n-.. _table_rte_flow_action_nvgre_encap:\n+This action modifies the payload of the matched flows. The buffer must hold\n+a valid tunnel encapsulation header.\n \n-.. table:: NVGRE_ENCAP\n+.. _table_rte_flow_action_tunnel_encap_l3:\n \n+.. table:: TUNNEL_ENCAP_L3\n+    \n    +----------------+-------------------------------------+\n    | Field          | Value                               |\n    +================+=====================================+\n-   | ``definition`` | NVGRE end-point overlay definition  |\n+   | ``type``       | Encapsulation tunnel type.          |\n+   +----------------+-------------------------------------+\n+   | ``buf``        | The encapsulation header.           |\n+   +----------------+-------------------------------------+\n+   | ``len``        | Buf len.                            |\n    +----------------+-------------------------------------+\n \n-.. _table_rte_flow_action_nvgre_encap_example:\n-\n-.. table:: IPv4 NVGRE flow pattern example.\n-\n-   +-------+----------+\n-   | Index | Item     |\n-   +=======+==========+\n-   | 0     | Ethernet |\n-   +-------+----------+\n-   | 1     | IPv4     |\n-   +-------+----------+\n-   | 2     | NVGRE    |\n-   +-------+----------+\n-   | 3     | END      |\n-   +-------+----------+\n+Action: ``TUNNEL_DECAP_L3``\n+^^^^^^^^^^^^^^^^^^^^^^^^^^^\n \n-Action: ``NVGRE_DECAP``\n-^^^^^^^^^^^^^^^^^^^^^^^\n+Perform a tunnel decapsulation action by removing the encapsulating packet header\n+and adding the L2 header which is suplied in the buf parameter.\n \n-Performs a decapsulation action by stripping all headers of the NVGRE tunnel\n-network overlay from the matched flow.\n+This action modifies the payload of the matched flows.\n+The buffer must hold a valid L2 header and the flow must match patteran with the\n+selected tunnel type.\n \n-The flow items pattern defined for the flow rule with which a ``NVGRE_DECAP``\n-action is specified, must define a valid NVGRE tunnel as per RFC7637. If the\n-flow pattern does not specify a valid NVGRE tunnel then a\n-RTE_FLOW_ERROR_TYPE_ACTION error should be returned.\n+.. _table_rte_flow_action_tunnel_decap_l3:\n \n-This action modifies the payload of matched flows.\n+.. table:: TUNNEL_DECAP_L3\n+    \n+   +----------------+-------------------------------------+\n+   | Field          | Value                               |\n+   +================+=====================================+\n+   | ``type``       | Encapsulation tunnel type.          |\n+   +----------------+-------------------------------------+\n+   | ``buf``        | The encapsulation header.           |\n+   +----------------+-------------------------------------+\n+   | ``len``        | Buf len.                            |\n+   +----------------+-------------------------------------+\n \n Negative types\n ~~~~~~~~~~~~~~\ndiff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h\nindex f8ba71c..cc01786 100644\n--- a/lib/librte_ethdev/rte_flow.h\n+++ b/lib/librte_ethdev/rte_flow.h\n@@ -1473,40 +1473,74 @@ enum rte_flow_action_type {\n \tRTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS,\n \n \t/**\n-\t * Encapsulate flow in VXLAN tunnel as defined in\n-\t * rte_flow_action_vxlan_encap action structure.\n+ \t * Encapsulte a packet with tunnel header.\n+ \t *\n+ \t * See struct rte_flow_action_tunnel_encap.\n+ \t */\n+\tRTE_FLOW_ACTION_TYPE_TUNNEL_ENCAP,\n+\n+\t/**\n+ \t * Encapsulte a packet with tunnel header replacing\n+ \t * the inner L2 data.\n+ \t *\n+ \t * See struct rte_flow_action_tunnel_encap_l3.\n+ \t */\n+\tRTE_FLOW_ACTION_TYPE_TUNNEL_ENCAP_L3,\n+\n+\t/**\n+\t * Decapsulate outer most tunnel from matched flow.\n \t *\n-\t * See struct rte_flow_action_vxlan_encap.\n+\t * If flow pattern does not define a valid tunnel then\n+\t * the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION\n+\t * error.\n \t */\n-\tRTE_FLOW_ACTION_TYPE_VXLAN_ENCAP,\n+\tRTE_FLOW_ACTION_TYPE_TUNNEL_DECAP,\n \n \t/**\n-\t * Decapsulate outer most VXLAN tunnel from matched flow.\n+\t * Decapsulate outer most tunnel from matched flow and replace\n+\t * the L2 header with the new header.\n+\t * Valid header must be L2 only.\n \t *\n-\t * If flow pattern does not define a valid VXLAN tunnel (as specified by\n-\t * RFC7348) then the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION\n+\t * If flow pattern does not define a valid tunnel then\n+\t * the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION\n \t * error.\n+\t *\n+\t * See struct rte_flow_action_tunnel_decap_l3\n \t */\n-\tRTE_FLOW_ACTION_TYPE_VXLAN_DECAP,\n+\tRTE_FLOW_ACTION_TYPE_TUNNEL_DECAP_L3,\n+};\n \n+enum rte_flow_tunnel_type {\n \t/**\n-\t * Encapsulate flow in NVGRE tunnel defined in the\n-\t * rte_flow_action_nvgre_encap action structure.\n-\t *\n-\t * See struct rte_flow_action_nvgre_encap.\n+\t * VXLAN tunnel type.\n \t */\n-\tRTE_FLOW_ACTION_TYPE_NVGRE_ENCAP,\n+\tRTE_FLOW_TUNNEL_TYPE_VXLAN,\n \n \t/**\n-\t * Decapsulate outer most NVGRE tunnel from matched flow.\n-\t *\n-\t * If flow pattern does not define a valid NVGRE tunnel (as specified by\n-\t * RFC7637) then the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION\n-\t * error.\n+\t * VXLAN_GPE tunnel type.\n \t */\n-\tRTE_FLOW_ACTION_TYPE_NVGRE_DECAP,\n-};\n+\tRTE_FLOW_TUNNEL_TYPE_VXLAN_GPE,\n \n+\t/**\n+\t * MPLSoGRE tunnel type.\n+\t */\n+\tRTE_FLOW_TUNNEL_TYPE_MPLSoGRE,\n+\n+\t/**\n+\t * MPLSoUDP tunnel type.\n+\t */\n+\tRTE_FLOW_TUNNEL_TYPE_MPLSoUDP,\n+\n+\t/**\n+\t * NVGRE tunnel type.\n+\t */\n+\tRTE_FLOW_TUNNEL_TYPE_NVGRE,\n+\n+\t/**\n+\t * GRE tunnel type.\n+\t */\n+\tRTE_FLOW_TUNNEL_TYPE_GRE,\n+};\n /**\n  * RTE_FLOW_ACTION_TYPE_MARK\n  *\n@@ -1526,7 +1560,7 @@ struct rte_flow_action_mark {\n  * @b EXPERIMENTAL: this structure may change without prior notice\n  *\n  * RTE_FLOW_ACTION_TYPE_JUMP\n- *\n+ o*\n  * Redirects packets to a group on the current device.\n  *\n  * In a hierarchy of groups, which can be used to represent physical or logical\n@@ -1803,69 +1837,68 @@ struct rte_flow_action_of_push_mpls {\n  * @warning\n  * @b EXPERIMENTAL: this structure may change without prior notice\n  *\n- * RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP\n- *\n- * VXLAN tunnel end-point encapsulation data definition\n+ * RTE_FLOW_ACTION_TYPE_TUNNEL_ENCAP\n  *\n- * The tunnel definition is provided through the flow item pattern, the\n- * provided pattern must conform to RFC7348 for the tunnel specified. The flow\n- * definition must be provided in order from the RTE_FLOW_ITEM_TYPE_ETH\n- * definition up the end item which is specified by RTE_FLOW_ITEM_TYPE_END.\n+ * Tunnel end-point encapsulation data definition.\n  *\n- * The mask field allows user to specify which fields in the flow item\n- * definitions can be ignored and which have valid data and can be used\n- * verbatim.\n- *\n- * Note: the last field is not used in the definition of a tunnel and can be\n- * ignored.\n+ * The tunnel definition is provided through the use of buffer that\n+ * holds the encapsulating header.\n+ * Provided header must be a valid outer tunnel header.\n+ */\n+struct rte_flow_action_tunnel_encap {\n+\tenum rte_flow_tunnel_type type; /**< The tunnel type. */\n+\tvoid *buf; /**< The header to be used. */\n+\tuint32_t len; /**< The buf len. */\n+};\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this structure may change without prior notice\n  *\n- * Valid flow definition for RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP include:\n+ * RTE_FLOW_ACTION_TYPE_TUNNEL_DECAP\n  *\n- * - ETH / IPV4 / UDP / VXLAN / END\n- * - ETH / IPV6 / UDP / VXLAN / END\n- * - ETH / VLAN / IPV4 / UDP / VXLAN / END\n+ * Tunnel end-point dencapsulation data definition.\n  *\n+ * The tunnel type must match the flow rule spec.\n  */\n-struct rte_flow_action_vxlan_encap {\n-\t/**\n-\t * Encapsulating vxlan tunnel definition\n-\t * (terminated by the END pattern item).\n-\t */\n-\tstruct rte_flow_item *definition;\n+struct rte_flow_action_tunnel_decap {\n+\tenum rte_flow_tunnel_type type; /**< The tunnel type. */\n };\n \n /**\n  * @warning\n  * @b EXPERIMENTAL: this structure may change without prior notice\n  *\n- * RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP\n- *\n- * NVGRE tunnel end-point encapsulation data definition\n- *\n- * The tunnel definition is provided through the flow item pattern  the\n- * provided pattern must conform with RFC7637. The flow definition must be\n- * provided in order from the RTE_FLOW_ITEM_TYPE_ETH definition up the end item\n- * which is specified by RTE_FLOW_ITEM_TYPE_END.\n+ * RTE_FLOW_ACTION_TYPE_TUNNEL_ENCAP_L3\n  *\n- * The mask field allows user to specify which fields in the flow item\n- * definitions can be ignored and which have valid data and can be used\n- * verbatim.\n+ * Tunnel end-point encapsulation over the inner L2 data definition.\n  *\n- * Note: the last field is not used in the definition of a tunnel and can be\n- * ignored.\n+ * The tunnel definition is provided through the use of buffer that\n+ * holds the encapsulating header.\n+ * Provided header must be a valid outer tunnel header.\n+ */\n+struct rte_flow_action_tunnel_encap_l3 {\n+\tenum rte_flow_tunnel_type type; /**< The tunnel type. */\n+\tvoid *buf; /**< The header to be used. */\n+\tuint32_t len; /**< The buf len. */\n+};\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this structure may change without prior notice\n  *\n- * Valid flow definition for RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP include:\n+ * RTE_FLOW_ACTION_TYPE_TUNNEL_DECAP_L3\n  *\n- * - ETH / IPV4 / NVGRE / END\n- * - ETH / VLAN / IPV6 / NVGRE / END\n+ * Tunnel end-point dencapsulation data definition.\n+ * after the decapsulation, the L2 of the resulted packet\n+ * is replaced with the supplied buffer.\n  *\n+ * The tunnel type must match the flow rule spec.\n  */\n-struct rte_flow_action_nvgre_encap {\n-\t/**\n-\t * Encapsulating vxlan tunnel definition\n-\t * (terminated by the END pattern item).\n-\t */\n-\tstruct rte_flow_item *definition;\n+struct rte_flow_action_tunnel_decap_l3 {\n+\tenum rte_flow_tunnel_type type; /**< The tunnel type. */\n+\tvoid *buf; /**< The L2 header to be used.*/\n+\tuint32_t len; /**< The len of the buf. */\n };\n \n /*\n",
    "prefixes": [
        "dpdk-dev",
        "RFC"
    ]
}