From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0042.outbound.protection.outlook.com [104.47.34.42]) by dpdk.org (Postfix) with ESMTP id 7BE8C2A66 for ; Thu, 23 Nov 2017 12:20:38 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=gv4E+geNq9nO1aHBkh8wy5Ll19ZbnjsafVuMrv+fgsI=; b=Z5S9jRL8RDZerZ2XQJM5CoKI7YUemjwHTQcOk57f+nc3r9Izj6B1JgnCkqQ2/bMCbeAoMZ32/KYd+n0zy0dd2jvV9pkguQ441cgY7l7hIgmNsEfOO5xhNmXA8J0M95sXOU3VR2j0hmLJM5xMQAHwsdwei0MkIjtIUHK+piz4hUA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Anoob.Joseph@cavium.com; Received: from ajoseph83.caveonetworks.com (14.140.2.178) by MWHPR0701MB3641.namprd07.prod.outlook.com (2603:10b6:301:7d::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.260.4; Thu, 23 Nov 2017 11:20:34 +0000 From: Anoob Joseph To: Akhil Goyal , Declan Doherty , Radu Nicolau , Sergio Gonzalez Monroy Cc: Jerin Jacob , Narayana Prasad , dev@dpdk.org Date: Thu, 23 Nov 2017 11:19:27 +0000 Message-Id: <1511435969-5887-2-git-send-email-anoob.joseph@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1511435969-5887-1-git-send-email-anoob.joseph@caviumnetworks.com> References: <1511333716-11955-1-git-send-email-anoob.joseph@caviumnetworks.com> <1511435969-5887-1-git-send-email-anoob.joseph@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [14.140.2.178] X-ClientProxiedBy: CO2PR04CA0056.namprd04.prod.outlook.com (2603:10b6:102:1::24) To MWHPR0701MB3641.namprd07.prod.outlook.com (2603:10b6:301:7d::34) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9b58c2ab-d75e-42ea-8488-08d532643814 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(7168020)(4627115)(201703031133081)(201702281549075)(5600025)(4604075)(2017052603199); SRVR:MWHPR0701MB3641; X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3641; 3:LGjza7XAR5NDE3prUcMhfYTVPnsFlRVrK9IPrgDZwOlh+SPUDOb8mg4r74fhnJx6f9ztDqXf8l1/caU5KK/YOiavjUteCVF2NX0ERi1fEy2mAnX8BcvFtvdGNZiMhRUfu/jFiXjZgFNA3cQ+eKVvHHIi+MVIhnwC1SmquLsoZfGynexL2rMzwCa/g/8OBuTTwqZ35ZMtYD4f11r60xiYKq/im/+e7UDEKqIVxcjPaB3Ii1Al2QHVXr20cJlyToAF; 25:pF9SHqYSlVqWAKnghZN7QH/BrtUJwSI6kVyE2Xqo1IcUzYUckyAwJG5gYfTMJ/3uJZQMHb06AN5klLf+ZLI8ikswRav5rePN7UPGL+zR6oaAAuRFqyuZ+1c9AinAlGFLyrn5IGc2G71yHsXrHtivpw4r3DjfHEg8w6M1p6SxwHkXGEM6syoblchRpA7/p9T0hAtFHXdM6grYW45AYXbyXhNOZbehTCB42qCM4kEFqyUkEuE8gyjuVJQuIOz8p4XDwPtW/dZcdmRM/8sDALd6noismDEcKyiFidSRKlDUB6hg6eNjBxQzXwB8q6x64m0hQvwEpoLsjbmDH+aCBBWsow==; 31:3hSfqQYi4nbtTod0AZ2FLncHcdB7Juy8yrBar33SQiunSYtZVhdQgTKKzcjO+kJQ2mcU9c6Bmv5Fs9XcbAWpyDGz/WpvEERNkAOwiCsV/Sn4yKoKMfuCMmil7g5jr9dmU2BX/Oiqtj+pSj8zFac1YjQcEHLR4bW9zcHXATkImfUyP1GmvPO0J63vld7DaXhU2j3XtF4wmWrIkNF6sSsV0wgFZYXKdiefKi50LPz6QFM= X-MS-TrafficTypeDiagnostic: MWHPR0701MB3641: X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3641; 20:oyzNQIrhygIpRJL9Bk1fovcVWd6OeWOfPjK2Eq+HjB8kzroKwz9gw2bLl8a3l9yedrXFQ7ja+OL4lVUdXjnXfJnAvj8uEhMiLFZuLpCvvzgH8zMAvQe6gmnrpCgdErYTI7lI7RMaRllSQviDEv8puULj8rSobJ1d3hZVVI4V3XzozxquSSMqgk0bLjeRbShndEHdo4I5qhbPKS/CbIkZPA5zX5NE+iJcykk326466EO4rGeAKVAYLM0XFg+AiO8Ed+BoBycl+M4yJ2khb3J85PBtfRcG2zo0DAg1ljLp78BIvuqo2txWIgrnhKZijXS91Lda4N9UHqlGMAdsWQI8wrw2DetGmXD0TzB/BH5t3tmMjwzkmnLOD9nNyegUOHCYiTnPGsCfXVM6gOP4w7FCQo1SjbVDoJKyO1fj0+viz2YlxajwxPrk5BD5e4eEAkL4c1QD6FSrJNM07o221FMzafdFZL+X2R3akHSf5hIQzc3GZQnh8KQO13dLgfG4uQ1p45Tk117lsmuVHgRhXtnA5JIfAb08gLSE1XtEp26RaKVI6Nq7Fk9L+COlTRHo3RLAC538aR+fXiD6UuRHWXuUpEIiWefrwrM9cX6ZR5OGAPM=; 4:F6KApig5amwl3PZ+9NfgOMjMIzoN4EHOr5x5GHQZbcHcVPVcii4IytbtUoqn7KZ5POiIj7ewofF/xgj9/oVu7pw+vkO/8ySoY0tismn4uNVtJDC7/tItavGKw00ivxfEQOzoQDPGTmr9rxRURVBOtkP3IUlEkd2v4b9+81dChagMSQ4hOXkzmRxWZeqTnfbIQFQlSD9F0aVRW8iKj1CGamw+LDdKNF4EzXEH+iRJK82RCmXahWWw3zEaPAfym2aX3FzmqWwDcp9u+PUNA/Sx+F5zRk6y6EAefH+9cvM6CZUhtenkHcS+5xi3+6gPaFyP X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192374486261705); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(3002001)(3231022)(10201501046)(93006095)(6041248)(20161123558100)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123562025)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:MWHPR0701MB3641; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:MWHPR0701MB3641; X-Forefront-PRVS: 05009853EF X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(366004)(346002)(376002)(199003)(189002)(316002)(50466002)(110136005)(16586007)(36756003)(53936002)(6116002)(478600001)(4326008)(52116002)(6512007)(68736007)(55236003)(25786009)(47776003)(72206003)(54906003)(66066001)(5890100001)(16526018)(48376002)(105586002)(8676002)(305945005)(5003940100001)(6506006)(50226002)(106356001)(7736002)(33646002)(69596002)(15650500001)(8656006)(6486002)(101416001)(3846002)(189998001)(97736004)(81156014)(6666003)(2906002)(53416004)(42882006)(8936002)(81166006)(5660300001)(2950100002)(76176999)(50986999)(5009440100003)(110426004); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR0701MB3641; H:ajoseph83.caveonetworks.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR0701MB3641; 23:LVwF6RKS5Ib9vqDwrlQVcqDbWx5DfuYOyLGf+Q3?= =?us-ascii?Q?W08r/7rpTn2L7+EnQ2D4DZaQQHZelMv3uq/l0oejMm9v+kYIfjQkrsTzLFAI?= =?us-ascii?Q?+6ON37lirudppBs1CofxSi25/WI/CmgwpRogL9U1PCBrbbgvM+gP0lTUkoz/?= =?us-ascii?Q?+3gDCzOlhlDY1uQz0no5o9dS9sfr8+NO55v3Obd0NWNjpgc3+LsJS49Yz5ik?= =?us-ascii?Q?/IgX/h6mfozQvXLfi70o4z1S5/NXQ1FiaiET6wqIlX4ofG/ukib1cT3zWPzS?= =?us-ascii?Q?s38VH6Rihb0CHjly9VUv9CezarG9KgwWs5c+/RLrCpDmfqc44f77ma4H5isq?= =?us-ascii?Q?ZqV8TUhYOU5etxuCxiTqjgRtYPEvQqrjOr/RSjVmyC5wYazVW4s067mwWDzF?= =?us-ascii?Q?doXC+wEgKhduxxVeiMSwnAiRidSt1edOB555ZWqFP98B42cwovYu/kbi/wVD?= =?us-ascii?Q?6HWchZlb5esdYeT97lJC3KqxAdsSayTDs1C40xNEwGEvSo/R6ZYwMo15NUUo?= =?us-ascii?Q?/RRjT1LmufmS6E/4OFAfBrksUV/qYhiW+0e56XZ6Wqxedhk3o2bLpmRuaZYY?= =?us-ascii?Q?YVJodxD41MI0EMCf+b5jtBDTXcW3zsj33bwu2o8DHuEt4w28i0NRTprvG78u?= =?us-ascii?Q?beKMTTB2ZQBojwxvhHuNEiPjxZToSnu5OfU8XXPJlOJY2dVj1g6SWEkj5JaT?= =?us-ascii?Q?TejLDsHPzNfJcpiiLrgIXQNLC7uyDVtr0uOscVS0L+vCfQ9+v86cvjPCy/rb?= =?us-ascii?Q?D58OdzF5YXBXTovNYy+WDZGLCxEPwj28XRF+6NZb8TeofuuNPX3cHrj5qOSB?= =?us-ascii?Q?otUv63lk8pORknb9TQT15TXKbQXkn0xSe6CTm/kwSuMUyM9tjjTUfqXt2/Oj?= =?us-ascii?Q?hais3BHDsjSHthRk732/iXHaB5IWVrFq1R+9luSmJLM5kEtMT0+tpJcWfZCk?= =?us-ascii?Q?wxx7PDtmP9E0XVnLv4y/TOtVKzjSU9kPSvpgDpXMCxRbzZbs25Dls3BBcoSc?= =?us-ascii?Q?njQfWY48VtooBzpQHPouKsUDE7SPQoSvv2aX+ju8ogq/jmyRIbROmnIFTd9K?= =?us-ascii?Q?nnIm7qTCGpOKfhcd07ZFUhwc95u501OWs1lL9/yrLb/UbXrtQTKue0fcyN9l?= =?us-ascii?Q?rlS+GUvzdbMfjbO+PKTJENVJt4uI5/+RugV+raI+ELqhgeVpe6eZXlIKVE71?= =?us-ascii?Q?CHtB7khZxIEHjz2Fz1YSnkFRSaL8gYLBu1iZP3FkPXIdqenK0OPNh7Vlazb3?= =?us-ascii?Q?LQoemedkLvLYVKBgCGpOyhgHCDR6SjLJios4xa5Jy1QFEW40z1Fp1kIZ2Nqk?= =?us-ascii?Q?95ogl+llIrQmyx8sfz2GyuXs9ApyyeP9HplkWNhnnDy/+?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3641; 6:8I/zo4aTQ5FFyYjGpflVVvMk/3ZXehhUKZqrQZWO9eyJXgkw0lKKUSlNKJHxCO/KRckPV6YJ+WDJzuU3i0yC6CoHhg0BZtboRnoTckn/w0rR+B2o9XR70Qk6R8dlJG1Q3Ylmfkr1tbqWaxmcuPGDToYNJVcvuRVjlZ29uN+OGKXH5O7u2xngalW9dzmUxiLFID6mko4shASMe0e9FZ3jEONZl2qWPZtqnNGmxLd913xjSHtzup3Wh9PhaEG480LXWrBWofTQLi3RaeHQQtLkaUtY9EXARpE5NTFJurQ6Z/9g4h/K+ZrJe8uWcdhhLlk7NEfiojpIBbliRl0ntyi6HH1no42YIGAxfRAvVPs5cFM=; 5:ZU6m+7my/poVWX79S6rCITgi99ptnvM/ftPB2yV6/uN+xWEOwTrFq9GuAR7oXAtmMASeKU5/+tMJCxqQQwqGWcepFh1zyw7vWjt/0WOs2e+nqbSw2+PItPNYycQsufwhzeqC3UJsEUCT+yyEBfknBo2CdaJQqGL9W5S9snXpmeo=; 24:pWLBwkJ3Wccrt+ODDL3SY4I2IuTgGjOAtDyRF9A645S5Lt52JwG/H81e5b+gBnM9VE5wU+znHOx3mlAHnxe8xkEq6KfLGXcepQjOpkRFtvs=; 7:Imzcog66dtvNNRVMlO1yXrMFDQbvTCo7CfzUiwl7JrsyRPptgGN86D+1I4TUrAlzxQ0moGx5Q1JVuTsi8AlO3ag1tqfURiwdoKkI/LEd5wexJvoYY2R/OquX3kQ4LfQLC/PtPrMiseYKqjARLb/+PR/lOCJtXisVHkyvhqOr7+Q5xPfXhNrGKXF6iAhY52ELB2+m2Qm2TsdVHovlMas+R3fP7gpfvZYMrLfC2jH8L0LwIKF1AMN2hI6EUv4CWd2n SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Nov 2017 11:20:34.1155 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9b58c2ab-d75e-42ea-8488-08d532643814 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR0701MB3641 Subject: [dpdk-dev] [PATCH v3 1/2] lib/security: add support for get metadata 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: Thu, 23 Nov 2017 11:20:39 -0000 In case of inline protocol processed ingress traffic, the packet may not have enough information to determine the security parameters with which the packet was processed. In such cases, application could get metadata from the packet which could be used to identify the security parameters with which the packet was processed. Signed-off-by: Anoob Joseph --- v3: * Replaced 64 bit metadata in conf with (void *)userdata * The API(rte_security_get_pkt_metadata) would return void * instead of uint64_t v2: * Replaced get_session and get_cookie APIs with get_pkt_metadata API lib/librte_security/rte_security.c | 13 +++++++++++++ lib/librte_security/rte_security.h | 19 +++++++++++++++++++ lib/librte_security/rte_security_driver.h | 16 ++++++++++++++++ 3 files changed, 48 insertions(+) diff --git a/lib/librte_security/rte_security.c b/lib/librte_security/rte_security.c index 1227fca..a1d78b6 100644 --- a/lib/librte_security/rte_security.c +++ b/lib/librte_security/rte_security.c @@ -108,6 +108,19 @@ rte_security_set_pkt_metadata(struct rte_security_ctx *instance, sess, m, params); } +void * +rte_security_get_pkt_metadata(struct rte_security_ctx *instance, + struct rte_mbuf *pkt) +{ + void *md = NULL; + + RTE_FUNC_PTR_OR_ERR_RET(*instance->ops->get_pkt_metadata, NULL); + if (instance->ops->get_pkt_metadata(instance->device, pkt, &md)) + return NULL; + + return md; +} + const struct rte_security_capability * rte_security_capabilities_get(struct rte_security_ctx *instance) { diff --git a/lib/librte_security/rte_security.h b/lib/librte_security/rte_security.h index 653929b..35c306a 100644 --- a/lib/librte_security/rte_security.h +++ b/lib/librte_security/rte_security.h @@ -274,6 +274,8 @@ struct rte_security_session_conf { /**< Configuration parameters for security session */ struct rte_crypto_sym_xform *crypto_xform; /**< Security Session Crypto Transformations */ + void *userdata; + /**< Application specific metadata */ }; struct rte_security_session { @@ -346,6 +348,23 @@ rte_security_set_pkt_metadata(struct rte_security_ctx *instance, struct rte_mbuf *mb, void *params); /** + * Get metadata from the packet. This returns metadata associated with the + * security session which processed the packet. + * + * This is valid only for inline processed ingress packets. + * + * @param instance security instance + * @param pkt packet mbuf + * + * @return + * - On success, metadata + * - On failure, NULL + */ +void * +rte_security_get_pkt_metadata(struct rte_security_ctx *instance, + struct rte_mbuf *pkt); + +/** * Attach a session to a symmetric crypto operation * * @param sym_op crypto operation diff --git a/lib/librte_security/rte_security_driver.h b/lib/librte_security/rte_security_driver.h index 997fbe7..561ae83 100644 --- a/lib/librte_security/rte_security_driver.h +++ b/lib/librte_security/rte_security_driver.h @@ -122,6 +122,20 @@ typedef int (*security_set_pkt_metadata_t)(void *device, void *params); /** + * Get metadata from the packet. + * + * @param device Crypto/eth device pointer + * @param pkt Packet mbuf + * @param mt Pointer to receive metadata + * + * @return + * - Returns 0 if metadata is retrieved successfully. + * - Returns -ve value for errors. + */ +typedef int (*security_get_pkt_metadata_t)(void *device, + struct rte_mbuf *pkt, void **md); + +/** * Get security capabilities of the device. * * @param device crypto/eth device pointer @@ -145,6 +159,8 @@ struct rte_security_ops { /**< Clear a security sessions private data. */ security_set_pkt_metadata_t set_pkt_metadata; /**< Update mbuf metadata. */ + security_get_pkt_metadata_t get_pkt_metadata; + /**< Get metadata from packet. */ security_capabilities_get_t capabilities_get; /**< Get security capabilities. */ }; -- 2.7.4