DPDK  19.11.1
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_FLAG_IPV6 0x1
52 
53 #define RTE_IPSEC_SAD_FLAG_RW_CONCURRENCY 0x2
54 
58  int socket_id;
60  uint32_t max_sa[RTE_IPSEC_SAD_KEY_TYPE_MASK];
62  uint32_t flags;
63 };
64 
83 __rte_experimental
84 int
85 rte_ipsec_sad_add(struct rte_ipsec_sad *sad,
86  const union rte_ipsec_sad_key *key,
87  int key_type, void *sa);
88 
104 __rte_experimental
105 int
106 rte_ipsec_sad_del(struct rte_ipsec_sad *sad,
107  const union rte_ipsec_sad_key *key,
108  int key_type);
109 /*
110  * Create SAD
111  *
112  * @param name
113  * SAD name
114  * @param conf
115  * Structure containing the configuration
116  * @return
117  * Handle to SAD object on success
118  * NULL otherwise with rte_errno set to an appropriate values.
119  */
120 __rte_experimental
121 struct rte_ipsec_sad *
122 rte_ipsec_sad_create(const char *name, const struct rte_ipsec_sad_conf *conf);
123 
134 __rte_experimental
135 struct rte_ipsec_sad *
136 rte_ipsec_sad_find_existing(const char *name);
137 
146 __rte_experimental
147 void
148 rte_ipsec_sad_destroy(struct rte_ipsec_sad *sad);
149 
166 __rte_experimental
167 int
168 rte_ipsec_sad_lookup(const struct rte_ipsec_sad *sad,
169  const union rte_ipsec_sad_key *keys[],
170  void *sa[], uint32_t n);
171 
172 #ifdef __cplusplus
173 }
174 #endif
175 
176 #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:60
__rte_experimental void rte_ipsec_sad_destroy(struct rte_ipsec_sad *sad)