DPDK 23.11.0
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
7#ifdef __cplusplus
8extern "C" {
9#endif
10
49#include <stdint.h>
50#include <stdio.h>
51#include <netinet/in.h>
52
53#include <rte_compat.h>
54#include <rte_crypto_sym.h>
55
61struct rte_swx_ipsec;
62
64#ifndef RTE_SWX_IPSEC_NAME_SIZE
65#define RTE_SWX_IPSEC_NAME_SIZE 64
66#endif
67
69#ifndef RTE_SWX_IPSEC_BURST_SIZE_MAX
70#define RTE_SWX_IPSEC_BURST_SIZE_MAX 256
71#endif
72
76 uint32_t ring_rd;
77
79 uint32_t ring_wr;
80
82 uint32_t crypto_wr;
83
85 uint32_t crypto_rd;
86};
87
93 const char *ring_in_name;
94
96 const char *ring_out_name;
97
99 const char *crypto_dev_name;
100
103
106
108 uint32_t n_sa_max;
109};
110
115 /* SA ID. */
116 uint32_t sa_id;
117};
118
127__rte_experimental
128struct rte_swx_ipsec *
129rte_swx_ipsec_find(const char *name);
130
149__rte_experimental
150int
151rte_swx_ipsec_create(struct rte_swx_ipsec **ipsec,
152 const char *name,
153 struct rte_swx_ipsec_params *params,
154 int numa_node);
155
162__rte_experimental
163void
164rte_swx_ipsec_free(struct rte_swx_ipsec *ipsec);
165
176__rte_experimental
177void
178rte_swx_ipsec_run(struct rte_swx_ipsec *ipsec);
179
180/*
181 * IPsec Control Plane API
182 */
183
185#define RTE_SWX_IPSEC_KEY_SIZE_MAX 64
186
198
210
222
226 struct {
228 uint32_t spi;
230
233
236
238 union {
240 struct {
242 struct in_addr src_addr;
243
245 struct in_addr dst_addr;
247
249 struct {
251 struct in6_addr src_addr;
252
254 struct in6_addr dst_addr;
257};
258
263
265 struct {
266 union {
267 struct {
270
273 } cipher_auth;
274
277 };
278
282
285};
286
299__rte_experimental
300int
301rte_swx_ipsec_sa_add(struct rte_swx_ipsec *ipsec,
302 struct rte_swx_ipsec_sa_params *sa_params,
303 uint32_t *sa_id);
304
316__rte_experimental
317void
318rte_swx_ipsec_sa_delete(struct rte_swx_ipsec *ipsec,
319 uint32_t sa_id);
320
369__rte_experimental
371rte_swx_ipsec_sa_read(struct rte_swx_ipsec *ipsec,
372 const char *string,
373 int *is_blank_or_comment,
374 const char **errmsg);
375
376#ifdef __cplusplus
377}
378#endif
379
380#endif
rte_crypto_auth_algorithm
rte_crypto_aead_algorithm
rte_crypto_cipher_algorithm
struct rte_ether_addr src_addr
Definition rte_ether.h:1
struct rte_ether_addr dst_addr
Definition rte_ether.h:0
__rte_experimental void rte_swx_ipsec_free(struct rte_swx_ipsec *ipsec)
__rte_experimental void rte_swx_ipsec_sa_delete(struct rte_swx_ipsec *ipsec, uint32_t sa_id)
__rte_experimental int rte_swx_ipsec_create(struct rte_swx_ipsec **ipsec, const char *name, struct rte_swx_ipsec_params *params, int numa_node)
#define RTE_SWX_IPSEC_KEY_SIZE_MAX
__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_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_experimental void rte_swx_ipsec_run(struct rte_swx_ipsec *ipsec)
__rte_experimental struct rte_swx_ipsec * rte_swx_ipsec_find(const char *name)
const char * ring_in_name
struct rte_swx_ipsec_burst_size bsz
uint32_t crypto_dev_queue_pair_id
const char * crypto_dev_name
const char * ring_out_name
enum rte_crypto_aead_algorithm alg
uint8_t key[RTE_SWX_IPSEC_KEY_SIZE_MAX]
enum rte_crypto_auth_algorithm alg
uint8_t key[RTE_SWX_IPSEC_KEY_SIZE_MAX]
enum rte_crypto_cipher_algorithm alg
uint8_t key[RTE_SWX_IPSEC_KEY_SIZE_MAX]
struct rte_swx_ipsec_sa_encap_params::@330::@331 ipv4
struct rte_swx_ipsec_sa_encap_params::@330::@332 ipv6
struct rte_swx_ipsec_sa_encap_params::@329 esp
union rte_swx_ipsec_sa_encap_params::@330 tunnel
struct rte_swx_ipsec_sa_authentication_params auth
struct rte_swx_ipsec_sa_cipher_params cipher
struct rte_swx_ipsec_sa_aead_params aead
struct rte_swx_ipsec_sa_params::@333 crypto
struct rte_swx_ipsec_sa_encap_params encap