From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 40A8B425EC; Wed, 20 Sep 2023 11:23:11 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2DCEA40E78; Wed, 20 Sep 2023 11:23:11 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.88]) by mails.dpdk.org (Postfix) with ESMTP id 2AAA040E64 for ; Wed, 20 Sep 2023 11:23:08 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1695201789; x=1726737789; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=U90EdiU3G0LFANijyojdu+j27Khwsrf06aIUFZJ8uFM=; b=di0JsbGidV3S2xfX7e3D1XfDwaV2utKVjkMr47yC5Gnv9EXO/vbXENTT zKxTcKUO7OvvFqegmtqII55eKptXE5MFrwVZ48ORhmLVTt0QK5wwmX/eO fHj7F/ar4QKBNDtapURBs9DArshdobdV2g67XjkxMjnguPf8UaZvgj/Q/ nKEtP+q8JzHuv8Omyf3qGgFHKDgRd9ypJIHIL+gkqx7ugpz3GPURlOXCf LD+glkO66gDgTX2F5MxtZCtEetJYLs54eEMVb4N+m+70IorGCCLBE7eCX 9sZA5CYqbzqAJT0Bzzxv0MA8dvwGH8W3g0UubZSHF/58kKSZeBadC19jN A==; X-IronPort-AV: E=McAfee;i="6600,9927,10838"; a="411113660" X-IronPort-AV: E=Sophos;i="6.02,161,1688454000"; d="scan'208";a="411113660" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Sep 2023 02:23:07 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10838"; a="723197633" X-IronPort-AV: E=Sophos;i="6.02,161,1688454000"; d="scan'208";a="723197633" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga006.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 20 Sep 2023 02:23:05 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Wed, 20 Sep 2023 02:23:04 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32 via Frontend Transport; Wed, 20 Sep 2023 02:23:04 -0700 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.41) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.32; Wed, 20 Sep 2023 02:23:02 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=n/L0/irPxTWs57LMYKjqjxpBaVMtBrxvUrxtvO3vJhfF0cc2+KXnnuOLxlMKebiq0w46C/1yTBl1LabP5E1z5fzL4JztdCEEZU2jqB3fjbE6inws4BVgfg+zb5ESruPBfXO6gkBxb3bdrFSqec0M7Opp227mBYpq0y+e9ypTrfFuWOWFjOE33ydLpve3i/JLn3sW1lzbUhaDcjlYkR/UAtvDRO147q6fmhL5TWYlkXwdgs2eo7E7R2KKyO6cyQgtnVUteOqK598B+haPEAzaWvY/qeqZfIWdwZFstnlPifXY3WUyefTQsaFqkRLaM4haNRrz0ItFmelrvYBl0k7gfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=NQgXOMg467zgNbg/Wm0KsVc/vYP6LwJRhW2a5Yq9SVE=; b=BwrE0AFS+QrgVjn2jeVNzbxMuHjO9JuxtmR+/3JRb4Pl7Q3WFofaH9dvqUMH/ib/fUzV5KBkvAEQ5Fv5arN+bZXcismYDBR/FIBoFbxCeuAinKaXAKYT80vsIkY2yE1kDN8k9IW+6NzFsDKQZ/tR4K79Mv4i//I1IvYJucZXOOuGYkFQgOkjkMBXpuvYK3Z2OJBOEydwH6jrvIslPFLantk/6bCpanc4BaCskUIG8BHaGfcARZntHs9/ozXVqN/xJY6ywOl/Sp6EUQjLqt6pr1tzt+CuAyFseFH/1VbNVHYxfST92DNoUv0KsCgRCqTRoBOuASVNyB6ou774RZVCtQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from PH8PR11MB6803.namprd11.prod.outlook.com (2603:10b6:510:1cb::12) by SA3PR11MB7582.namprd11.prod.outlook.com (2603:10b6:806:31e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.20; Wed, 20 Sep 2023 09:22:57 +0000 Received: from PH8PR11MB6803.namprd11.prod.outlook.com ([fe80::7602:b1b7:3114:c3da]) by PH8PR11MB6803.namprd11.prod.outlook.com ([fe80::7602:b1b7:3114:c3da%3]) with mapi id 15.20.6768.029; Wed, 20 Sep 2023 09:22:57 +0000 From: "Van Haaren, Harry" To: Anoob Joseph , Thomas Monjalon , Akhil Goyal , Jerin Jacob , Konstantin Ananyev CC: Hemant Agrawal , "dev@dpdk.org" , "Matz, Olivier" , Vidya Sagar Velumuri Subject: RE: [RFC PATCH 1/3] net: add headers for TLS/DTLS packets Thread-Topic: [RFC PATCH 1/3] net: add headers for TLS/DTLS packets Thread-Index: AQHZzCQH2O3rm7i2yECVwTDplZNDE7AjlxWA Date: Wed, 20 Sep 2023 09:22:57 +0000 Message-ID: References: <20230811071712.240-1-anoobj@marvell.com> <20230811071712.240-2-anoobj@marvell.com> In-Reply-To: <20230811071712.240-2-anoobj@marvell.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH8PR11MB6803:EE_|SA3PR11MB7582:EE_ x-ms-office365-filtering-correlation-id: dbe1600c-b518-4efa-382b-08dbb9bb2d5d x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ZzV39MStqDxh98wRsiYhPPNrGnWT8jjKrlHAlg8bcXD9QRfnPkwN178GJCrEH/wpmD0uKgjYCj0QjeqG0foWeyZbCiDMbZlsmDVgG+XWx6jULMNuzQODSR4Pg1s3/ElJ+3QnP9ur3Q2YJQ51NsiXzv/kZfJANDQAPioadbuR8cWQesXD3C5/Hu2kMk08WBuE55gRNbVlfaZHu6zh8tmt6UjUeuDx09h3xOd96xz0XLbPVz5S3XDUuu6Nzunsxcd0WoaY0stylyewa8bEDzPzwH/LfmfLAPxWVNegGKC88bQK5JGkhtY3ZA+9IXmMvj6rDPOd9PpANmDa1Hyj8PvgPzaqrdrNrspcFFHS25Ao6TrliUG1YltsEazznoEUG0nxa2SWrkE0wsUvwA8suf+E8Xd8Q8Urtuw+XDZ5hdM2IRYxG0hqqoOBU7EWEi+VLMGflQgqFvBF7CBLRRsezH39LLo+q8H0ANf2dO3XhNfo9TM/uHig8NR1X2iAvJAm5r5pmoeaZ+pN7jmGplo5FpA+VDJINGrLxPMu7UgC/Bv4ks62RnRtUohkAcPjnuAKJPiyi81cFVV0ynjezH4N2EMFSxBJIfkt+pytrw7w1BCn/XU= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH8PR11MB6803.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39860400002)(376002)(396003)(366004)(136003)(346002)(186009)(451199024)(1800799009)(316002)(2906002)(86362001)(26005)(9686003)(966005)(6506007)(7696005)(33656002)(71200400001)(478600001)(83380400001)(82960400001)(38100700002)(55016003)(122000001)(38070700005)(41300700001)(53546011)(52536014)(8676002)(4326008)(8936002)(64756008)(66476007)(66446008)(66946007)(76116006)(66556008)(54906003)(5660300002)(110136005); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?OAPrMqiOtFT+IC0KW4PiUAqnpv/OxVzNgO4nepCS93OMclw13CvKMzd0HQZA?= =?us-ascii?Q?Odo2PPICiZHF2VCBQQpjgItFjKdS1EEXp+a5OX+4DSc03U1Q0x/t3qWpWn3e?= =?us-ascii?Q?aUFwGYbFq1O8FKaOQorar+nN7gb2LWiJvhDvoPjuuCDNCYI3V8Wsd2PYKZF+?= =?us-ascii?Q?EY2dfE75M3aC04CEc7deKacVpmTxFMpUqSU/zRBjKikVjho/IeGdZwrnavSi?= =?us-ascii?Q?uu5nHHL5S6/7w0V66gpYExzC2WfaTnbOSr+6OafquiLFem0dv2hudSCV5AnS?= =?us-ascii?Q?o/F3Xl7zvrdu3Uucrtg9021+YpS41fYIjSNevb0zV3L98edC9GO5DZnseFsw?= =?us-ascii?Q?/bvycVBiArqTk+igRZC2lfsvPsWQg2uUzq/bqgv4SjDaNphF3BF24AwCrJWf?= =?us-ascii?Q?/NjrbjkbSO1t9d59agCVh3hRRdZMbMbIKqDWzSNjacoYit5LlbFJ5V6OuudW?= =?us-ascii?Q?HFjMrLU6okyfdLiRi8nUubT/9YMFQ1Tmw1zN4YzR+Usot8+Gv4NN99R95Eyy?= =?us-ascii?Q?kfwTuu6GJ6dYYCMV3X3BL0xog9vr+TQrMmV/Isk0HtutgR7mccDDO+cGKfHK?= =?us-ascii?Q?RmbeKplJnC48hKA5JyLoHiFNGzXw0cp33KxOZtQdyJw+H8Gk0xFnhtfcLuZL?= =?us-ascii?Q?+vhKpFwq/Y6n48xM/aiQibXVXFLa+rd01EBssnidC/Wgx7eb9L+SGWEhm4Y5?= =?us-ascii?Q?MCoA61zdJSR+swWYelkD29gLzNw3YGBwPMbZpGrkeP7FPe2JBmyAvsCFL65B?= =?us-ascii?Q?LZGee+S/DTXhgksICbP21TxQRcBvzHrV5Vcf3dKeuOxeYquABmqEQYFVyxpo?= =?us-ascii?Q?T3Z85Zj8M0Ii2bpL/j39Blji/zbdvxvooT55mXvDU1ZphtLYM/e2jfFRwH3N?= =?us-ascii?Q?dqLssP2g0GqtHNsZDZdzHafKbQsDP5IcRoOPeXzejOpNXxYdboH2HM8y0QN/?= =?us-ascii?Q?KuNVD5KwMI3CFjcxHq85Oah9t2naLHH0vAcofa+7XZIlsMBmC6LOph8wIGJe?= =?us-ascii?Q?xCRYkvh01zQQYUxID0LRFohBkQcJr8tsztLedE0PbkUWPyPTxIdW77r3VmuM?= =?us-ascii?Q?XHmhZycaddmxCN4FG/XIijoXCLt8Jt8q7HVFNB0Gj0T7+JkQScXSCY7zf5yn?= =?us-ascii?Q?N4P9U3YJFfGAwjWz+eed3B4AzQmF0SJnI+8zNL29p24XjYRwh0XPu4nszINf?= =?us-ascii?Q?Go+JaNEn1xgA4sBZzgsV41ctyksBy+LIvlY/A8kJZiV8yqGiEwMZf0b+zqwZ?= =?us-ascii?Q?j7JEZ8kZ4kcUP4oroLpUFfzfE3CB0dPoqh/2WvHw1z7zUmBXZf5XTZUA2nHz?= =?us-ascii?Q?fACs4x6j9XrjStvItH3tSffI6WqjoCZj1sTvFx9awlgTVm3c84jVkKNxzE1o?= =?us-ascii?Q?geiVCd4QYFsn+wG7i+UTzQC20eC8m/tIZDQPgz1JYtdvyCoMuGSx3Y9p/rUp?= =?us-ascii?Q?B8kYzXuhwsoXQ3fgXi7jU+YxFIUbxALfibMYSGzjXszD0gqbYjDLd+gY/4Pb?= =?us-ascii?Q?4pXzgnOlWeGguuHN6K8u55TD4dA5CJT6xz59MnSgITzQI9mMUqnhwV/SUkTb?= =?us-ascii?Q?Vm4/MImWL33PZHrd5PE5z9xQxC1MEn8wmHxTqTj6?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH8PR11MB6803.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dbe1600c-b518-4efa-382b-08dbb9bb2d5d X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Sep 2023 09:22:57.4021 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 893LCgijI47Z5Kyd1s1i02uetTvuJVd/AgLdbSx4Z4a5gxX0KPE6D9AuNI5usZsVvy/FOlpibDTMk5zdMXmmYY930bHb7Nnf/iaPYb3vfcg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR11MB7582 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org > -----Original Message----- > From: Anoob Joseph > Sent: Friday, August 11, 2023 8:17 AM > To: Thomas Monjalon ; Akhil Goyal > ; Jerin Jacob ; Konstantin Ananye= v > > Cc: Hemant Agrawal ; dev@dpdk.org; Matz, > Olivier ; Vidya Sagar Velumuri > > Subject: [RFC PATCH 1/3] net: add headers for TLS/DTLS packets >=20 > From: Akhil Goyal >=20 > Added TLS and DTLS packet headers for L4 security applications. >=20 > Signed-off-by: Akhil Goyal > Signed-off-by: Anoob Joseph > Signed-off-by: Vidya Sagar Velumuri > --- > doc/api/doxy-api-index.md | 2 ++ > lib/net/meson.build | 2 ++ > lib/net/rte_dtls.h | 61 +++++++++++++++++++++++++++++++++++++++ > lib/net/rte_tls.h | 48 ++++++++++++++++++++++++++++++ > 4 files changed, 113 insertions(+) > create mode 100644 lib/net/rte_dtls.h > create mode 100644 lib/net/rte_tls.h >=20 > diff --git a/doc/api/doxy-api-index.md b/doc/api/doxy-api-index.md > index fdeda13932..03e2445bb1 100644 > --- a/doc/api/doxy-api-index.md > +++ b/doc/api/doxy-api-index.md > @@ -128,6 +128,8 @@ The public API headers are grouped by topics: > [eCPRI](@ref rte_ecpri.h), > [PDCP hdr](@ref rte_pdcp_hdr.h), > [PDCP](@ref rte_pdcp.h), > + [TLS](@ref rte_tls.h), > + [DTLS](@ref rte_dtls.h), > [L2TPv2](@ref rte_l2tpv2.h), > [PPP](@ref rte_ppp.h), > [IB](@ref rte_ib.h) > diff --git a/lib/net/meson.build b/lib/net/meson.build > index b1bc27bad5..0b69138949 100644 > --- a/lib/net/meson.build > +++ b/lib/net/meson.build > @@ -5,6 +5,8 @@ headers =3D files( > 'rte_ip.h', > 'rte_tcp.h', > 'rte_udp.h', > + 'rte_tls.h', > + 'rte_dtls.h', > 'rte_esp.h', > 'rte_sctp.h', > 'rte_icmp.h', > diff --git a/lib/net/rte_dtls.h b/lib/net/rte_dtls.h > new file mode 100644 > index 0000000000..1455c07a92 > --- /dev/null > +++ b/lib/net/rte_dtls.h > @@ -0,0 +1,61 @@ > +/* SPDX-License-Identifier: BSD-3-Clause > + * Copyright(C) 2023 Marvell. > + */ > + > +#ifndef RTE_DTLS_H > +#define RTE_DTLS_H > + > +/** > + * @file > + * > + * Datagram transport layer security(DTLS) related defines. > + */ > + > +#include > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > +#define RTE_DTLS_TYPE_INVALID 0 /**< Invalid DTLS message type. */ > +#define RTE_DTLS_TYPE_CCS 20 /**< Change cipher message. */ I don't see the "CCS" acronym in the RFC, suggest to make more accurate/ver= bose; - Rename to RTE_DTLS_TYPE_CHANGE_CIPHER (or RTE_DTLS_TYPE_CHANGE_CIPHER_SPE= C if preferred) - Reword description to "change cipher" to "change cipher spec message." > +#define RTE_DTLS_TYPE_ALERT 21 /**< Alert message. */ > +#define RTE_DTLS_TYPE_HANDSHAKE 22 /**< Handshake message for > DTLS. */ > +#define RTE_DTLS_TYPE_APPDATA 23 /**< DTLS application data message. > */ > +#define RTE_DTLS_TYPE_HEARTBEAT 24 /**< DTLS 1.3 heartbeat message. */ > +#define RTE_DTLS_TYPE_CIPHERTEXT_WITH_CID 25 /**< DTLS 1.3 > ciphertext with CID message. */ > +#define RTE_DTLS_TYPE_ACK 26 /**< DTLS 1.3 ACK message. */ > +#define RTE_DTLS_TYPE_MAX 255 /**< Maximum value as DTLS > content type. */ > + > +#define RTE_DTLS_VERSION_1_2 0xFEFD /**< DTLS 1.2 version. 1's > complement of 1.2. */ > +#define RTE_DTLS_VERSION_1_3 0xFEFC /**< DTLS 1.3 version. 1's > complement of 1.3. */ > > + > +/** > + * DTLS Header > + */ > +__extension__ > +struct rte_dtls_hdr { > + /** Content type of DTLS packet. Defined as RTE_DTLS_TYPE_*. */ > + uint8_t type; > + /** DTLS Version defined as RTE_DTLS_VERSION*. */ > + rte_be16_t version; (same comment on be16_t vs struct as in TLS version below, no rework needed= ) > +#if RTE_BYTE_ORDER =3D=3D RTE_LITTLE_ENDIAN > + /** The sequence number for the DTLS record. */ > + uint64_t sequence_number : 48; > + /** A counter value that is incremented on every cipher state change. > */ > + uint64_t epoch : 16; > +#elif RTE_BYTE_ORDER =3D=3D RTE_BIG_ENDIAN > + /** A counter value that is incremented on every cipher state change. > */ > + uint64_t epoch : 16; > + /** The sequence number for the DTLS record. */ > + uint64_t sequence_number : 48; > +#endif > + /** The length (in bytes) of the following DTLS packet. */ > + rte_be16_t length; > +} __rte_packed; > + > +#ifdef __cplusplus > +} > +#endif > + > +#endif /* RTE_DTLS_H */ > diff --git a/lib/net/rte_tls.h b/lib/net/rte_tls.h > new file mode 100644 > index 0000000000..d708d06014 > --- /dev/null > +++ b/lib/net/rte_tls.h > @@ -0,0 +1,48 @@ > +/* SPDX-License-Identifier: BSD-3-Clause > + * Copyright(C) 2023 Marvell. > + */ > + > +#ifndef RTE_TLS_H > +#define RTE_TLS_H > + > +/** > + * @file > + * > + * Transport layer security(TLS) related defines. > + */ > + > +#include > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > +#define RTE_TLS_TYPE_INVALID 0 /**< Invalid TLS message type. */ > +#define RTE_TLS_TYPE_CCS 20 /**< Change cipher message. */ > +#define RTE_TLS_TYPE_ALERT 21 /**< Alert message. */ > +#define RTE_TLS_TYPE_HANDSHAKE 22 /**< Handshake message for TLS. */ > +#define RTE_TLS_TYPE_APPDATA 23 /**< TLS application data message. */ > +#define RTE_TLS_TYPE_HEARTBEAT 24 /**< TLS 1.3 heartbeat message. */ > +#define RTE_TLS_TYPE_MAX 255 /**< Maximum value as TLS content type. > */ > + > +#define RTE_TLS_VERSION_1_2 0x0303 /**< TLS 1.2 version. */ > +#define RTE_TLS_VERSION_1_3 0x0304 /**< TLS 1.3 version. */ > + > +/** > + * TLS Header > + */ > +__extension__ > +struct rte_tls_hdr { > + /** Content type of TLS packet. Defined as RTE_TLS_TYPE_*. */ > + uint8_t type; > + /** TLS Version defined as RTE_TLS_VERSION*. */ > + rte_be16_t version; In the RFC, version is defined as "struct ProtocolVersion" with two uint8's= ? https://www.rfc-editor.org/rfc/rfc5246.html#appendix-A.1 With correct endianness handling this is the same, but the struct with is s= impler to RFC, while rte_be16_t is easier to ensure single load/store at code level. No need to change, just pointing out the different impl (but same effect) a= s RFC. > + /** The length (in bytes) of the following TLS packet. */ > + rte_be16_t length; > +} __rte_packed; > + > +#ifdef __cplusplus > +} > +#endif > + > +#endif /* RTE_TLS_H */ > -- > 2.25.1