DPDK
25.11.0
Toggle main menu visibility
Loading...
Searching...
No Matches
rte_swx_ipsec.h
Go to the documentation of this file.
1
/* SPDX-License-Identifier: BSD-3-Clause
2
* Copyright(c) 2022 Intel Corporation
3
*/
4
#ifndef __INCLUDE_RTE_SWX_IPSEC_H__
5
#define __INCLUDE_RTE_SWX_IPSEC_H__
6
44
45
#include <stdint.h>
46
#include <stdio.h>
47
#include <netinet/in.h>
48
49
#include <rte_compat.h>
50
#include <
rte_crypto_sym.h
>
51
#include <
rte_ip6.h
>
52
53
#ifdef __cplusplus
54
extern
"C"
{
55
#endif
56
60
62
struct
rte_swx_ipsec;
63
65
#ifndef RTE_SWX_IPSEC_NAME_SIZE
66
#define RTE_SWX_IPSEC_NAME_SIZE 64
67
#endif
68
70
#ifndef RTE_SWX_IPSEC_BURST_SIZE_MAX
71
#define RTE_SWX_IPSEC_BURST_SIZE_MAX 256
72
#endif
73
75
struct
rte_swx_ipsec_burst_size
{
77
uint32_t
ring_rd
;
78
80
uint32_t
ring_wr
;
81
83
uint32_t
crypto_wr
;
84
86
uint32_t
crypto_rd
;
87
};
88
92
struct
rte_swx_ipsec_params
{
94
const
char
*
ring_in_name
;
95
97
const
char
*
ring_out_name
;
98
100
const
char
*
crypto_dev_name
;
101
103
uint32_t
crypto_dev_queue_pair_id
;
104
106
struct
rte_swx_ipsec_burst_size
bsz
;
107
109
uint32_t
n_sa_max
;
110
};
111
115
struct
rte_swx_ipsec_input_packet_metadata
{
116
/* SA ID. */
117
uint32_t sa_id;
118
};
119
128
__rte_experimental
129
struct
rte_swx_ipsec *
130
rte_swx_ipsec_find
(
const
char
*name);
131
150
__rte_experimental
151
int
152
rte_swx_ipsec_create
(
struct
rte_swx_ipsec **ipsec,
153
const
char
*name,
154
struct
rte_swx_ipsec_params
*params,
155
int
numa_node);
156
163
__rte_experimental
164
void
165
rte_swx_ipsec_free
(
struct
rte_swx_ipsec *ipsec);
166
170
177
__rte_experimental
178
void
179
rte_swx_ipsec_run
(
struct
rte_swx_ipsec *ipsec);
180
181
/*
182
* IPsec Control Plane API
183
*/
184
186
#define RTE_SWX_IPSEC_KEY_SIZE_MAX 64
187
189
struct
rte_swx_ipsec_sa_cipher_params
{
191
enum
rte_crypto_cipher_algorithm
alg
;
192
194
uint8_t
key
[
RTE_SWX_IPSEC_KEY_SIZE_MAX
];
195
197
uint32_t
key_size
;
198
};
199
201
struct
rte_swx_ipsec_sa_authentication_params
{
203
enum
rte_crypto_auth_algorithm
alg
;
204
206
uint8_t
key
[
RTE_SWX_IPSEC_KEY_SIZE_MAX
];
207
209
uint32_t
key_size
;
210
};
211
213
struct
rte_swx_ipsec_sa_aead_params
{
215
enum
rte_crypto_aead_algorithm
alg
;
216
218
uint8_t
key
[
RTE_SWX_IPSEC_KEY_SIZE_MAX
];
219
221
uint32_t
key_size
;
222
};
223
225
struct
rte_swx_ipsec_sa_encap_params
{
227
struct
{
229
uint32_t
spi
;
230
}
esp
;
231
233
int
tunnel_mode
;
234
236
int
tunnel_ipv4
;
237
239
union
{
241
struct
{
243
struct
in_addr
src_addr
;
244
246
struct
in_addr
dst_addr
;
247
}
ipv4
;
248
250
struct
{
252
struct
rte_ipv6_addr
src_addr
;
253
255
struct
rte_ipv6_addr
dst_addr
;
256
}
ipv6
;
257
}
tunnel
;
258
};
259
261
struct
rte_swx_ipsec_sa_params
{
263
int
encrypt
;
264
266
struct
{
267
union
{
268
struct
{
270
struct
rte_swx_ipsec_sa_cipher_params
cipher
;
271
273
struct
rte_swx_ipsec_sa_authentication_params
auth
;
274
} cipher_auth;
275
277
struct
rte_swx_ipsec_sa_aead_params
aead
;
278
};
279
281
int
is_aead
;
282
}
crypto
;
283
285
struct
rte_swx_ipsec_sa_encap_params
encap
;
286
};
287
300
__rte_experimental
301
int
302
rte_swx_ipsec_sa_add
(
struct
rte_swx_ipsec *ipsec,
303
struct
rte_swx_ipsec_sa_params
*sa_params,
304
uint32_t *sa_id);
305
317
__rte_experimental
318
void
319
rte_swx_ipsec_sa_delete
(
struct
rte_swx_ipsec *ipsec,
320
uint32_t sa_id);
321
370
__rte_experimental
371
struct
rte_swx_ipsec_sa_params
*
372
rte_swx_ipsec_sa_read
(
struct
rte_swx_ipsec *ipsec,
373
const
char
*
string
,
374
int
*is_blank_or_comment,
375
const
char
**errmsg);
376
377
#ifdef __cplusplus
378
}
379
#endif
380
381
#endif
rte_crypto_sym.h
rte_crypto_auth_algorithm
rte_crypto_auth_algorithm
Definition
rte_crypto_sym.h:311
rte_crypto_aead_algorithm
rte_crypto_aead_algorithm
Definition
rte_crypto_sym.h:480
rte_crypto_cipher_algorithm
rte_crypto_cipher_algorithm
Definition
rte_crypto_sym.h:120
rte_ip6.h
rte_swx_ipsec_free
__rte_experimental void rte_swx_ipsec_free(struct rte_swx_ipsec *ipsec)
rte_swx_ipsec_sa_delete
__rte_experimental void rte_swx_ipsec_sa_delete(struct rte_swx_ipsec *ipsec, uint32_t sa_id)
rte_swx_ipsec_create
__rte_experimental int rte_swx_ipsec_create(struct rte_swx_ipsec **ipsec, const char *name, struct rte_swx_ipsec_params *params, int numa_node)
RTE_SWX_IPSEC_KEY_SIZE_MAX
#define RTE_SWX_IPSEC_KEY_SIZE_MAX
Definition
rte_swx_ipsec.h:186
rte_swx_ipsec_sa_read
__rte_experimental struct rte_swx_ipsec_sa_params * rte_swx_ipsec_sa_read(struct rte_swx_ipsec *ipsec, const char *string, int *is_blank_or_comment, const char **errmsg)
rte_swx_ipsec_sa_add
__rte_experimental int rte_swx_ipsec_sa_add(struct rte_swx_ipsec *ipsec, struct rte_swx_ipsec_sa_params *sa_params, uint32_t *sa_id)
rte_swx_ipsec_run
__rte_experimental void rte_swx_ipsec_run(struct rte_swx_ipsec *ipsec)
rte_swx_ipsec_find
__rte_experimental struct rte_swx_ipsec * rte_swx_ipsec_find(const char *name)
rte_ipv6_addr
Definition
rte_ip6.h:53
rte_swx_ipsec_burst_size
Definition
rte_swx_ipsec.h:75
rte_swx_ipsec_burst_size::crypto_rd
uint32_t crypto_rd
Definition
rte_swx_ipsec.h:86
rte_swx_ipsec_burst_size::crypto_wr
uint32_t crypto_wr
Definition
rte_swx_ipsec.h:83
rte_swx_ipsec_burst_size::ring_rd
uint32_t ring_rd
Definition
rte_swx_ipsec.h:77
rte_swx_ipsec_burst_size::ring_wr
uint32_t ring_wr
Definition
rte_swx_ipsec.h:80
rte_swx_ipsec_input_packet_metadata
Definition
rte_swx_ipsec.h:115
rte_swx_ipsec_params
Definition
rte_swx_ipsec.h:92
rte_swx_ipsec_params::ring_in_name
const char * ring_in_name
Definition
rte_swx_ipsec.h:94
rte_swx_ipsec_params::bsz
struct rte_swx_ipsec_burst_size bsz
Definition
rte_swx_ipsec.h:106
rte_swx_ipsec_params::n_sa_max
uint32_t n_sa_max
Definition
rte_swx_ipsec.h:109
rte_swx_ipsec_params::crypto_dev_queue_pair_id
uint32_t crypto_dev_queue_pair_id
Definition
rte_swx_ipsec.h:103
rte_swx_ipsec_params::crypto_dev_name
const char * crypto_dev_name
Definition
rte_swx_ipsec.h:100
rte_swx_ipsec_params::ring_out_name
const char * ring_out_name
Definition
rte_swx_ipsec.h:97
rte_swx_ipsec_sa_aead_params
Definition
rte_swx_ipsec.h:213
rte_swx_ipsec_sa_aead_params::alg
enum rte_crypto_aead_algorithm alg
Definition
rte_swx_ipsec.h:215
rte_swx_ipsec_sa_aead_params::key_size
uint32_t key_size
Definition
rte_swx_ipsec.h:221
rte_swx_ipsec_sa_aead_params::key
uint8_t key[RTE_SWX_IPSEC_KEY_SIZE_MAX]
Definition
rte_swx_ipsec.h:218
rte_swx_ipsec_sa_authentication_params
Definition
rte_swx_ipsec.h:201
rte_swx_ipsec_sa_authentication_params::alg
enum rte_crypto_auth_algorithm alg
Definition
rte_swx_ipsec.h:203
rte_swx_ipsec_sa_authentication_params::key_size
uint32_t key_size
Definition
rte_swx_ipsec.h:209
rte_swx_ipsec_sa_authentication_params::key
uint8_t key[RTE_SWX_IPSEC_KEY_SIZE_MAX]
Definition
rte_swx_ipsec.h:206
rte_swx_ipsec_sa_cipher_params
Definition
rte_swx_ipsec.h:189
rte_swx_ipsec_sa_cipher_params::alg
enum rte_crypto_cipher_algorithm alg
Definition
rte_swx_ipsec.h:191
rte_swx_ipsec_sa_cipher_params::key_size
uint32_t key_size
Definition
rte_swx_ipsec.h:197
rte_swx_ipsec_sa_cipher_params::key
uint8_t key[RTE_SWX_IPSEC_KEY_SIZE_MAX]
Definition
rte_swx_ipsec.h:194
rte_swx_ipsec_sa_encap_params
Definition
rte_swx_ipsec.h:225
rte_swx_ipsec_sa_encap_params::dst_addr
struct in_addr dst_addr
Definition
rte_swx_ipsec.h:246
rte_swx_ipsec_sa_encap_params::tunnel
union rte_swx_ipsec_sa_encap_params::@360301216071374135100272065106340145167071302130 tunnel
rte_swx_ipsec_sa_encap_params::esp
struct rte_swx_ipsec_sa_encap_params::@224377124142025045015150344236060234326156352026 esp
rte_swx_ipsec_sa_encap_params::src_addr
struct in_addr src_addr
Definition
rte_swx_ipsec.h:243
rte_swx_ipsec_sa_encap_params::ipv6
struct rte_swx_ipsec_sa_encap_params::@360301216071374135100272065106340145167071302130::@041161150144116236334157370125161377224355317006 ipv6
rte_swx_ipsec_sa_encap_params::tunnel_mode
int tunnel_mode
Definition
rte_swx_ipsec.h:233
rte_swx_ipsec_sa_encap_params::tunnel_ipv4
int tunnel_ipv4
Definition
rte_swx_ipsec.h:236
rte_swx_ipsec_sa_encap_params::ipv4
struct rte_swx_ipsec_sa_encap_params::@360301216071374135100272065106340145167071302130::@325040217160201102376220154246104313010212244333 ipv4
rte_swx_ipsec_sa_encap_params::spi
uint32_t spi
Definition
rte_swx_ipsec.h:229
rte_swx_ipsec_sa_params
Definition
rte_swx_ipsec.h:261
rte_swx_ipsec_sa_params::is_aead
int is_aead
Definition
rte_swx_ipsec.h:281
rte_swx_ipsec_sa_params::auth
struct rte_swx_ipsec_sa_authentication_params auth
Definition
rte_swx_ipsec.h:273
rte_swx_ipsec_sa_params::encrypt
int encrypt
Definition
rte_swx_ipsec.h:263
rte_swx_ipsec_sa_params::cipher
struct rte_swx_ipsec_sa_cipher_params cipher
Definition
rte_swx_ipsec.h:270
rte_swx_ipsec_sa_params::aead
struct rte_swx_ipsec_sa_aead_params aead
Definition
rte_swx_ipsec.h:277
rte_swx_ipsec_sa_params::crypto
struct rte_swx_ipsec_sa_params::@222240041112232264303034031347054027037171141343 crypto
rte_swx_ipsec_sa_params::encap
struct rte_swx_ipsec_sa_encap_params encap
Definition
rte_swx_ipsec.h:285
lib
pipeline
rte_swx_ipsec.h
Generated by
1.17.0