From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50063.outbound.protection.outlook.com [40.107.5.63]) by dpdk.org (Postfix) with ESMTP id 98CEC1B44C for ; Mon, 22 Oct 2018 19:38:45 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FlX+dAKQWFCN+dbHo7SGfWicRgh1hbEQ3VDZOb9lYuU=; b=SKvE49RckrVljI+VVuvxwZBHx6w4GtqGoSkduJS28eSwabHhrayZaHv3xviB1r3nKGVP6qOUQLNJ/uNa5ZWweClloYhtPZN01q/3IPgfXOGUJptSv8mYAWqnCZl8nQSxzumYW2Ak5QZTIenFZ2C9zby5oHQyKFezbX3Vtzq0Xi8= Received: from mellanox.com (37.142.13.130) by AM4PR05MB3426.eurprd05.prod.outlook.com (2603:10a6:205:6::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1250.30; Mon, 22 Oct 2018 17:38:42 +0000 From: Ori Kam To: wenzhuo.lu@intel.com, jingjing.wu@intel.com, bernard.iremonger@intel.com, arybchenko@solarflare.com, ferruh.yigit@intel.com, stephen@networkplumber.org, adrien.mazarguil@6wind.com Cc: dev@dpdk.org, dekelp@mellanox.com, thomas@monjalon.net, nelio.laranjeiro@6wind.com, yskoh@mellanox.com, orika@mellanox.com, shahafs@mellanox.com Date: Mon, 22 Oct 2018 17:38:09 +0000 Message-Id: <1540229891-112870-2-git-send-email-orika@mellanox.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1540229891-112870-1-git-send-email-orika@mellanox.com> References: <1539796072-111646-1-git-send-email-orika@mellanox.com> <1540229891-112870-1-git-send-email-orika@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: CWLP265CA0300.GBRP265.PROD.OUTLOOK.COM (2603:10a6:401:5d::24) To AM4PR05MB3426.eurprd05.prod.outlook.com (2603:10a6:205:6::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1f8b9b2c-4de2-4066-42b3-08d638453681 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:AM4PR05MB3426; X-Microsoft-Exchange-Diagnostics: 1; AM4PR05MB3426; 3:Bewhjo9xhAMM3aadJ71BoM2ffjilS6On0m8dRInfL+MCb9GSDN0UGvckNqeVyn8OdLXoyf/Gu1lCqLqyzn9t2qaXYvQqBDJKSiPOiKD3+V86qX0YdEhQmR8eslj/m5vgQKY4uWVZKFwkGR0oRrRpodHaKzv6TgIX0ngNQkvMshgPmpt0ZSxQWlZ6VjNXw+1ywW1Y/IOoOjNIASS6o8s1QfSQOra2p9kz6CrBecwX2PA1R0LbKY/q24bHY5+q3Vfe; 25:9Wo41/2LJoIINmI4CiEvhekuhFUepKDzGagdCXZRUERM8eaj3vJplXuOKXLXC4OOUK+QfRdfCGc6XzHv8oCgLMS9Olub0O2w8MW9lkHilBLinKV3jNXXBtN+y2yiyUbQ7raPXF2qNHjokX4yCw04MnQdS4/zjm2RKalxZPiw7KIxUw1rVGoYpBXzNCknv38ljZJxRfvxBGLnwNtO3bzokT59dDb26V6l8wp7H7ZHcpAfiWshQy9OVv/XPIcbMVW+Co1jbFrrG0Qr+7hkgEUCsy8yBccdrKmsgAfjIXn8xx3vS2ZgsI01FjzbUt9a8rVUufEtKyUoz5twzDEp3D33jQ==; 31:GF99QyPKXIHWcdHXxQvme2IOM4tFkTIV9kkEhY2BCK2yMjIOYA4QiIwU97YdrpHj/pq8ggauEVPdycHySEBLenJWgqQuiRhyHnvOgjCMRxf/eOLHL/Z6TcClvyZSBCndHlZW7oPA86Q8HN6tWtwf4yRLqDRedx+Ab2UpYfLWKSS8Lu8+o2P9V91tQ8wncZLRhZOvKOUauEtoRZKO3ybvH7BwQ4toOoWao6a/C6YZb9M= X-MS-TrafficTypeDiagnostic: AM4PR05MB3426: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; AM4PR05MB3426; 20:xG+Rq2yCgO1+7ge610rH7cYPhhLRpjAzeVpGWRIXMTHE6bthfHV83lOu+6p6uYgcrL+JAizgIeh/vtXxb2dQCRtpAXYFQcLI9adro1RWVWhZXYNl36UFIK1HiYdlByuY8Z/R263xRJlq+xTNiM18JEFeEzMIGOxLS7NW/x4YSPAZEznxACZ/gJ99d5PzIq1wA710obTzbVqlQ7kHhikJVMOMFyZro+TLAoFyztYQWaticWhPa+T9vQQx2BinTqI92yjtiPLKUtC3FGVAuT9lqBU30MVjeAfA2p5iSpGoS1NpmZF1vnOFrspuyZOjHkFrwNoMqLTw6UszsJjMks407rLvr/4N5kaJt4a/+eV3oG9HNFY6osoGci73OBIwqtEwLeUvvdE9ft0JB91JRx6aevU6xs/jvgsQ21O1lozWWebcoJJFhEc7pYKhClR6wfsgrUUv+9ilc6ymZewP6cj+L1nj6pZQHGjZUavNZo9ic/08CAyjuGhXl9OybKSJgrtJ; 4:Umc+BpCgZMPpmWDL0AEFISxvNbBgXO5aoRPO/pPZ5Wj0+RLk+tuwO815f5c/W5HO15qa1xilk6qqklfQVTlPv+jv1w78B7ZAoPV3X2QDmf5fZSj9lBp9xGEn40ROYMRT/ZTwsnReS3l9A6pa0dklJbwET8HXKUMAHUNKThg005xvIsDfcp4zxIequXu5G3ZmP+fmHwcK7s75n4BLtPamEvSkE+TNTktvKzj0kX09SAJc7XPBxSOi04E3jUdm4CU0JtdaMFlRHSbE5REH2vJyiA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231355)(944501410)(52105095)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:AM4PR05MB3426; BCL:0; PCL:0; RULEID:; SRVR:AM4PR05MB3426; X-Forefront-PRVS: 08331F819E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(376002)(346002)(136003)(366004)(39860400002)(396003)(189003)(199004)(97736004)(478600001)(186003)(386003)(5660300001)(106356001)(6346003)(4326008)(66066001)(81166006)(81156014)(16586007)(105586002)(7416002)(26005)(53936002)(55016002)(8886007)(48376002)(4720700003)(68736007)(33026002)(50466002)(3846002)(7696005)(2906002)(14444005)(51416003)(486006)(107886003)(16526019)(36756003)(50226002)(6666004)(8676002)(316002)(446003)(52116002)(76176011)(8936002)(956004)(21086003)(69596002)(305945005)(7736002)(6116002)(25786009)(476003)(2616005)(47776003)(11346002)(86362001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR05MB3426; H:mellanox.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=orika@mellanox.com; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM4PR05MB3426; 23:6VDheN8Tgvk3f13C0Q8ELR9gSNTQnFvNQbVW9QpqW?= =?us-ascii?Q?IksYi50MHyuHe93oecSbBNmAJNDcAHSGTsZ9gmKagF/KEow4fphpk5iuV6Of?= =?us-ascii?Q?fDZRILDPGnhl1htmwyW4SdGX7SNmeEUPdOkDOcAOrzxrqfAHyl8xdbOEiOsq?= =?us-ascii?Q?H/BfpCKUR9YO7xp7fXB/qjVbQAriRnKT0aw7ZWARhCxxlemQ5YUcdtl6rJ0p?= =?us-ascii?Q?N9iNUcKB6GGIa2x+8Vnpt+KKqRw2RfsE8KYiB1RtZwjAmQlNKvUvafaMOsZf?= =?us-ascii?Q?Dikmr1BezsLDdH9/gvfjP3AOyP0wNdP3GcdWjYT+jakC8Tlsjy3MTF4mkj8H?= =?us-ascii?Q?jC9jhZ0qFcGnZ6OtyGHHuDdboouRB7iLZPPnGsS3pjS1JUhvNjzLIqQUU+vh?= =?us-ascii?Q?zo4W7DkNrCRpb8gBa1PlHLwIRFNbqizvokmBcm1JgzZTvB0zy7OLJqRWhIfd?= =?us-ascii?Q?vr7cEBQOql9s/nP1pW5Si2yT3pd5WlAnF3dUn6PmGFObLxmrrmJFIsAcT0NL?= =?us-ascii?Q?yUXI5+6AH5pW8afDrC7i6sJlhXdHNpJM87XhjnQNRDpMYsNDTmWFfi3n1QKN?= =?us-ascii?Q?BgbAnIvd2/MOIxbK2pXfBxaacA5+MlopB22ei0Qc6cBmU4xDPWhvgmLDI1Vi?= =?us-ascii?Q?mk84T/9hmsWKoafZ9aVIPmv00orqfT1esNKijJoZYDktGVLBWANWiEzhPfqd?= =?us-ascii?Q?N36AhIyVf87hmkVn2eLhc6DvjjaqG6MQL9jELggrsb8GYVvOp9UVzZ0wtFYX?= =?us-ascii?Q?3uKp+2/ea7V8NkLKIgQ2lZG5BPpGJMNhyBw5vr9Krlh5KRbfZp0jc9tEtdFJ?= =?us-ascii?Q?ubIzu8OioCqM6c5gOyQYDOw1ooO5Kf2Yd8qjTab8ZGhQK/h3+YqnyCWu+Nfh?= =?us-ascii?Q?G3hXPndDa94fh8ogO2e3M0reiy6tLHuCoUmcnjCHHBdT/PEngNDw7BuwC57c?= =?us-ascii?Q?KXiVgp6KicuuR3aQKB8c8BTXwXw4MEqkx0Po2TtAeq1TqsrIPycHnbXYP+mV?= =?us-ascii?Q?4EEwwcud9++uM/BKbfFrmO0VJuttwYsK+haEN01aDGopBx566T3A/ls3Fx9G?= =?us-ascii?Q?4ppk5WQFFejyFUZrKR16T9RwexgY7ftGPsKMBW6ahE7Kd7wO1C/Z6/VGE6WT?= =?us-ascii?Q?Zpc6JQjwYETaM0ZuDvw9cB47s1U7n/uoC1l9gxR+MhDdhp9+R2pZhZTD0ONe?= =?us-ascii?Q?yFZDr2kOAZw01B1Obl3pMfE7Gyj0LVjxhYTWAfd9l0a4XQymHWJibBAZxF3h?= =?us-ascii?Q?jwpbIYh4Lr9QCbw0PlXWEoQqNNhAxujm+QUrHns5kCzWTbFlH4RF1pAXBYGs?= =?us-ascii?Q?HWqKBuN674lUpwavxxQR08=3D?= X-Microsoft-Antispam-Message-Info: DQAXIh/ovlvcTaXCax3wyA5TaRPXY5UTZWic6VFbgxbpsp9n10x5aLzJEXVJl1YJmql5mzda3a4ZO2sIDoKtjhLO+DWWBRAg34rWfzgdvqp724/S7ZxcVeeLRXzaZHIU8eG+atM5F0qflcwko0Q+CD6R7dfQ3t8Iy6yNFYBag6Zk1ZOHBCU7JAcycg3PPiwdLwTFD5waEEn7Un8kGyMLliem5bErfRrtULoFzgqM6t8wc8rGwJnXF/pZnHYNBcfnvBEOvDPnbNhMCWsltP4afXYpBzPH+Jk82rx7z+ALtUcl65WROWBuFXOT1l4tWrjaI5fZlP4hVdP0Shi1K3Q8+0p4GPu9ccFMfx6Jecfshpw= X-Microsoft-Exchange-Diagnostics: 1; AM4PR05MB3426; 6:W/56iOvzBNZzsHfqCPVeNL+4+3uAZmnIIkCL9MvYgw5+WD7AzCFWkukXLUM53fIbqY+Ks5VECY23ZlrJQfooYD7GSzgNsEwqiWYAdHDz3Bkfw/d4+BS1xvNMvS1c2wGL/C2zIceQpYjSa5+qVC/5t8vQcSf2k/yMcHNLyAzvlDiDHrPGzZFRWDox/jrVfGtvZX8avd1N6QhpocrqM0w1rOPEDCNRzViK/yXfDA7UU0OT5iaYajs44KF+gc43vAXWuP+lRW5RZizFD4jb2BLsIe0U4Geuo1cx2iHiA3Oggt1FNJvDRSv+HJEnLO2dRAOfInPL60Bza3imz8SckUQj6QobiXxx3hrn4obl/xNXkmOvAxiM+b2+B4/WAGGCVzcH/QeXuctrNeSOWI7M9ffPCUkN+md4b9cSO6yXZ66XwmGTo48lkhDrQO8uyQKr3aYV0b43EXhd7X5rtELsWqI7OA==; 5:Hg4aNZREZKFMXqFGFFa1bxIUKhEfAYBonNi/9EcxjpmWg59sYGSD+9h236+ih8bz07iElZ8rcRpddiAHxJWfhOMZFVpwt71KEA0xeGgsKDWj6SLwSswElP5ZUTcJDNPO9IuZJjxF2firWSIEyXlYjVen9tEYyEJKRhM+xbUTVFo=; 7:gjrKaRUfMcCRUTsjI7fTI4VjdsGB8c1rtwRucvJjHJfEM+ULB4EEotd1N+quf0NsjwL9Ugly7yjNGdQqzfmsoRWJFqJLzjJIl7GSBNVDFWCQKPwK76+FfrldIwbu232yEf5OYLR+1RbZtvLXQLigYIHY4juqZxTp2GfuH1PqhOgrCKLGEhQiFlFJWA8CfI16UdwPnc91YLZWaPl4nSvRW4V5l113FveZ4NFofAacTLcgGkWojkUCvpEWc+9wQpq7 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Oct 2018 17:38:42.4283 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1f8b9b2c-4de2-4066-42b3-08d638453681 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR05MB3426 Subject: [dpdk-dev] [PATCH v6 1/3] ethdev: add raw encapsulation action X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Oct 2018 17:38:45 -0000 Currenlty the encap/decap actions only support encapsulation of VXLAN and NVGRE L2 packets (L2 encapsulation is where the inner packet has a valid Ethernet header, while L3 encapsulation is where the inner packet doesn't have the Ethernet header). In addtion the parameter to to the encap action is a list of rte items, this results in 2 extra translation, between the application to the actioni and from the action to the NIC. This results in negative impact on the insertion performance. Looking forward there are going to be a need to support many more tunnel encapsulations. For example MPLSoGRE, MPLSoUDP. Adding the new encapsulation will result in duplication of code. For example the code for handling NVGRE and VXLAN are exactly the same, and each new tunnel will have the same exact structure. This patch introduce a raw encapsulation that can support L2 tunnel types and L3 tunnel types. In addtion the new encapsulations commands are using raw buffer inorder to save the converstion time, both for the application and the PMD. In order to encapsulate L3 tunnel type there is a need to use both actions in the same rule: The decap to remove the L2 of the original packet, and then encap command to encapsulate the packet with the tunnel. For decap L3 there is also a need to use both commands in the same flow first the decap command to remove the outer tunnel header and then encap to add the L2 header. Signed-off-by: Ori Kam Acked-by: Andrew Rybchenko --- v6: * fix typo --- doc/guides/prog_guide/rte_flow.rst | 51 ++++++++++++++++++++++++++++++++ lib/librte_ethdev/rte_flow.c | 2 ++ lib/librte_ethdev/rte_flow.h | 59 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 112 insertions(+) diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst index a5ec441..d060ff6 100644 --- a/doc/guides/prog_guide/rte_flow.rst +++ b/doc/guides/prog_guide/rte_flow.rst @@ -2076,6 +2076,57 @@ RTE_FLOW_ERROR_TYPE_ACTION error should be returned. This action modifies the payload of matched flows. +Action: ``RAW_ENCAP`` +^^^^^^^^^^^^^^^^^^^^^ + +Adds outer header whose template is provided in its data buffer, +as defined in the ``rte_flow_action_raw_encap`` definition. + +This action modifies the payload of matched flows. The data supplied must +be a valid header, either holding layer 2 data in case of adding layer 2 after +decap layer 3 tunnel (for example MPLSoGRE) or complete tunnel definition +starting from layer 2 and moving to the tunnel item itself. When applied to +the original packet the resulting packet must be a valid packet. + +.. _table_rte_flow_action_raw_encap: + +.. table:: RAW_ENCAP + + +----------------+----------------------------------------+ + | Field | Value | + +================+========================================+ + | ``data`` | Encapsulation data | + +----------------+----------------------------------------+ + | ``preserve`` | Bit-mask of data to preserve on output | + +----------------+----------------------------------------+ + | ``size`` | Size of data and preserve | + +----------------+----------------------------------------+ + +Action: ``RAW_DECAP`` +^^^^^^^^^^^^^^^^^^^^^^^ + +Remove outer header whose template is provided in its data buffer, +as defined in the ``rte_flow_action_raw_decap`` + +This action modifies the payload of matched flows. The data supplied must +be a valid header, either holding layer 2 data in case of removing layer 2 +before eincapsulation of layer 3 tunnel (for example MPLSoGRE) or complete +tunnel definition starting from layer 2 and moving to the tunnel item itself. +When applied to the original packet the resulting packet must be a +valid packet. + +.. _table_rte_flow_action_raw_decap: + +.. table:: RAW_DECAP + + +----------------+----------------------------------------+ + | Field | Value | + +================+========================================+ + | ``data`` | Decapsulation data | + +----------------+----------------------------------------+ + | ``size`` | Size of data | + +----------------+----------------------------------------+ + Action: ``SET_IPV4_SRC`` ^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c index bc9e719..1e5cd73 100644 --- a/lib/librte_ethdev/rte_flow.c +++ b/lib/librte_ethdev/rte_flow.c @@ -123,6 +123,8 @@ struct rte_flow_desc_data { MK_FLOW_ACTION(VXLAN_DECAP, 0), MK_FLOW_ACTION(NVGRE_ENCAP, sizeof(struct rte_flow_action_vxlan_encap)), MK_FLOW_ACTION(NVGRE_DECAP, 0), + MK_FLOW_ACTION(RAW_ENCAP, sizeof(struct rte_flow_action_raw_encap)), + MK_FLOW_ACTION(RAW_DECAP, sizeof(struct rte_flow_action_raw_decap)), MK_FLOW_ACTION(SET_IPV4_SRC, sizeof(struct rte_flow_action_set_ipv4)), MK_FLOW_ACTION(SET_IPV4_DST, diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h index 68bbf57..4066483 100644 --- a/lib/librte_ethdev/rte_flow.h +++ b/lib/librte_ethdev/rte_flow.h @@ -1508,6 +1508,20 @@ enum rte_flow_action_type { RTE_FLOW_ACTION_TYPE_NVGRE_DECAP, /** + * Add outer header whose template is provided in its data buffer + * + * See struct rte_flow_action_raw_encap. + */ + RTE_FLOW_ACTION_TYPE_RAW_ENCAP, + + /** + * Remove outer header whose template is provided in its data buffer. + * + * See struct rte_flow_action_raw_decap + */ + RTE_FLOW_ACTION_TYPE_RAW_DECAP, + + /** * Modify IPv4 source address in the outermost IPv4 header. * * If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_IPV4, @@ -1946,6 +1960,51 @@ struct rte_flow_action_nvgre_encap { * @warning * @b EXPERIMENTAL: this structure may change without prior notice * + * RTE_FLOW_ACTION_TYPE_RAW_ENCAP + * + * Raw tunnel end-point encapsulation data definition. + * + * The data holds the headers definitions to be applied on the packet. + * The data must start with ETH header up to the tunnel item header itself. + * When used right after RAW_DECAP (for decapsulating L3 tunnel type for + * example MPLSoGRE) the data will just hold layer 2 header. + * + * The preserve parameter holds which bits in the packet the PMD is not allowed + * to change, this parameter can also be NULL and then the PMD is allowed + * to update any field. + * + * size holds the number of bytes in @p data and @p preserve. + */ +struct rte_flow_action_raw_encap { + uint8_t *data; /**< Encapsulation data. */ + uint8_t *preserve; /**< Bit-mask of @p data to preserve on output. */ + size_t size; /**< Size of @p data and @p preserve. */ +}; + +/** + * @warning + * @b EXPERIMENTAL: this structure may change without prior notice + * + * RTE_FLOW_ACTION_TYPE_RAW_DECAP + * + * Raw tunnel end-point decapsulation data definition. + * + * The data holds the headers definitions to be removed from the packet. + * The data must start with ETH header up to the tunnel item header itself. + * When used right before RAW_DECAP (for encapsulating L3 tunnel type for + * example MPLSoGRE) the data will just hold layer 2 header. + * + * size holds the number of bytes in @p data. + */ +struct rte_flow_action_raw_decap { + uint8_t *data; /**< Encapsulation data. */ + size_t size; /**< Size of @p data and @p preserve. */ +}; + +/** + * @warning + * @b EXPERIMENTAL: this structure may change without prior notice + * * RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC * RTE_FLOW_ACTION_TYPE_SET_IPV4_DST * -- 1.8.3.1