DPDK  19.11.14
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 <stdint.h>
10 
11 #include <rte_compat.h>
12 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 struct rte_ipsec_sad;
26 
28 enum {
29  RTE_IPSEC_SAD_SPI_ONLY = 0,
30  RTE_IPSEC_SAD_SPI_DIP,
31  RTE_IPSEC_SAD_SPI_DIP_SIP,
32  RTE_IPSEC_SAD_KEY_TYPE_MASK,
33 };
34 
35 struct rte_ipsec_sadv4_key {
36  uint32_t spi;
37  uint32_t dip;
38  uint32_t sip;
39 };
40 
41 struct rte_ipsec_sadv6_key {
42  uint32_t spi;
43  uint8_t dip[16];
44  uint8_t sip[16];
45 };
46 
47 union rte_ipsec_sad_key {
48  struct rte_ipsec_sadv4_key v4;
49  struct rte_ipsec_sadv6_key v6;
50 };
51 
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)
__rte_experimental void rte_ipsec_sad_destroy(struct rte_ipsec_sad *sad)