DPDK  20.08.0
rte_ipsec_sad.h
Go to the documentation of this file.
1 
2 /* SPDX-License-Identifier: BSD-3-Clause
3  * Copyright(c) 2019 Intel Corporation
4  */
5 
6 #ifndef _RTE_IPSEC_SAD_H_
7 #define _RTE_IPSEC_SAD_H_
8 
9 #include <rte_compat.h>
10 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 struct rte_ipsec_sad;
24 
26 enum {
27  RTE_IPSEC_SAD_SPI_ONLY = 0,
28  RTE_IPSEC_SAD_SPI_DIP,
29  RTE_IPSEC_SAD_SPI_DIP_SIP,
30  RTE_IPSEC_SAD_KEY_TYPE_MASK,
31 };
32 
33 struct rte_ipsec_sadv4_key {
34  uint32_t spi;
35  uint32_t dip;
36  uint32_t sip;
37 };
38 
39 struct rte_ipsec_sadv6_key {
40  uint32_t spi;
41  uint8_t dip[16];
42  uint8_t sip[16];
43 };
44 
45 union rte_ipsec_sad_key {
46  struct rte_ipsec_sadv4_key v4;
47  struct rte_ipsec_sadv6_key v6;
48 };
49 
51 #define RTE_IPSEC_SAD_NAMESIZE 64
52 
53 #define RTE_IPSEC_SAD_FLAG_IPV6 0x1
54 
55 #define RTE_IPSEC_SAD_FLAG_RW_CONCURRENCY 0x2
56 
60  int socket_id;
62  uint32_t max_sa[RTE_IPSEC_SAD_KEY_TYPE_MASK];
64  uint32_t flags;
65 };
66 
85 __rte_experimental
86 int
87 rte_ipsec_sad_add(struct rte_ipsec_sad *sad,
88  const union rte_ipsec_sad_key *key,
89  int key_type, void *sa);
90 
106 __rte_experimental
107 int
108 rte_ipsec_sad_del(struct rte_ipsec_sad *sad,
109  const union rte_ipsec_sad_key *key,
110  int key_type);
111 /*
112  * Create SAD
113  *
114  * @param name
115  * SAD name
116  * @param conf
117  * Structure containing the configuration
118  * @return
119  * Handle to SAD object on success
120  * NULL otherwise with rte_errno set to an appropriate values.
121  */
122 __rte_experimental
123 struct rte_ipsec_sad *
124 rte_ipsec_sad_create(const char *name, const struct rte_ipsec_sad_conf *conf);
125 
136 __rte_experimental
137 struct rte_ipsec_sad *
138 rte_ipsec_sad_find_existing(const char *name);
139 
148 __rte_experimental
149 void
150 rte_ipsec_sad_destroy(struct rte_ipsec_sad *sad);
151 
168 __rte_experimental
169 int
170 rte_ipsec_sad_lookup(const struct rte_ipsec_sad *sad,
171  const union rte_ipsec_sad_key *keys[],
172  void *sa[], uint32_t n);
173 
174 #ifdef __cplusplus
175 }
176 #endif
177 
178 #endif /* _RTE_IPSEC_SAD_H_ */
__rte_experimental int rte_ipsec_sad_del(struct rte_ipsec_sad *sad, const union rte_ipsec_sad_key *key, int key_type)
__rte_experimental int rte_ipsec_sad_add(struct rte_ipsec_sad *sad, const union rte_ipsec_sad_key *key, int key_type, void *sa)
__rte_experimental struct rte_ipsec_sad * rte_ipsec_sad_find_existing(const char *name)
__rte_experimental int rte_ipsec_sad_lookup(const struct rte_ipsec_sad *sad, const union rte_ipsec_sad_key *keys[], void *sa[], uint32_t n)
uint32_t max_sa[RTE_IPSEC_SAD_KEY_TYPE_MASK]
Definition: rte_ipsec_sad.h:62
__rte_experimental void rte_ipsec_sad_destroy(struct rte_ipsec_sad *sad)