DPDK  23.07.0
rte_ipsec_sa.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2018 Intel Corporation
3  */
4 
5 #ifndef _RTE_IPSEC_SA_H_
6 #define _RTE_IPSEC_SA_H_
7 
14 #include <rte_common.h>
15 #include <rte_cryptodev.h>
16 #include <rte_security.h>
17 
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21 
25 struct rte_ipsec_sa;
26 
31 
32  uint64_t userdata;
33  uint64_t flags;
38  union {
39  struct {
40  uint8_t hdr_len;
41  uint8_t hdr_l3_off;
42  uint8_t next_proto;
43  const void *hdr;
44  } tun;
45  struct {
46  uint8_t proto;
47  } trs;
48  };
49 };
50 
70 #define RTE_IPSEC_SAFLAG_SQN_ATOM (1ULL << 0)
71 
85 enum {
86  RTE_SATP_LOG2_IPV,
87  RTE_SATP_LOG2_PROTO,
88  RTE_SATP_LOG2_DIR,
89  RTE_SATP_LOG2_MODE,
90  RTE_SATP_LOG2_SQN = RTE_SATP_LOG2_MODE + 2,
91  RTE_SATP_LOG2_ESN,
92  RTE_SATP_LOG2_ECN,
93  RTE_SATP_LOG2_DSCP,
94  RTE_SATP_LOG2_NATT
95 };
96 
97 #define RTE_IPSEC_SATP_IPV_MASK (1ULL << RTE_SATP_LOG2_IPV)
98 #define RTE_IPSEC_SATP_IPV4 (0ULL << RTE_SATP_LOG2_IPV)
99 #define RTE_IPSEC_SATP_IPV6 (1ULL << RTE_SATP_LOG2_IPV)
100 
101 #define RTE_IPSEC_SATP_PROTO_MASK (1ULL << RTE_SATP_LOG2_PROTO)
102 #define RTE_IPSEC_SATP_PROTO_AH (0ULL << RTE_SATP_LOG2_PROTO)
103 #define RTE_IPSEC_SATP_PROTO_ESP (1ULL << RTE_SATP_LOG2_PROTO)
104 
105 #define RTE_IPSEC_SATP_DIR_MASK (1ULL << RTE_SATP_LOG2_DIR)
106 #define RTE_IPSEC_SATP_DIR_IB (0ULL << RTE_SATP_LOG2_DIR)
107 #define RTE_IPSEC_SATP_DIR_OB (1ULL << RTE_SATP_LOG2_DIR)
108 
109 #define RTE_IPSEC_SATP_MODE_MASK (3ULL << RTE_SATP_LOG2_MODE)
110 #define RTE_IPSEC_SATP_MODE_TRANS (0ULL << RTE_SATP_LOG2_MODE)
111 #define RTE_IPSEC_SATP_MODE_TUNLV4 (1ULL << RTE_SATP_LOG2_MODE)
112 #define RTE_IPSEC_SATP_MODE_TUNLV6 (2ULL << RTE_SATP_LOG2_MODE)
113 
114 #define RTE_IPSEC_SATP_SQN_MASK (1ULL << RTE_SATP_LOG2_SQN)
115 #define RTE_IPSEC_SATP_SQN_RAW (0ULL << RTE_SATP_LOG2_SQN)
116 #define RTE_IPSEC_SATP_SQN_ATOM (1ULL << RTE_SATP_LOG2_SQN)
117 
118 #define RTE_IPSEC_SATP_ESN_MASK (1ULL << RTE_SATP_LOG2_ESN)
119 #define RTE_IPSEC_SATP_ESN_DISABLE (0ULL << RTE_SATP_LOG2_ESN)
120 #define RTE_IPSEC_SATP_ESN_ENABLE (1ULL << RTE_SATP_LOG2_ESN)
121 
122 #define RTE_IPSEC_SATP_ECN_MASK (1ULL << RTE_SATP_LOG2_ECN)
123 #define RTE_IPSEC_SATP_ECN_DISABLE (0ULL << RTE_SATP_LOG2_ECN)
124 #define RTE_IPSEC_SATP_ECN_ENABLE (1ULL << RTE_SATP_LOG2_ECN)
125 
126 #define RTE_IPSEC_SATP_DSCP_MASK (1ULL << RTE_SATP_LOG2_DSCP)
127 #define RTE_IPSEC_SATP_DSCP_DISABLE (0ULL << RTE_SATP_LOG2_DSCP)
128 #define RTE_IPSEC_SATP_DSCP_ENABLE (1ULL << RTE_SATP_LOG2_DSCP)
129 
130 #define RTE_IPSEC_SATP_NATT_MASK (1ULL << RTE_SATP_LOG2_NATT)
131 #define RTE_IPSEC_SATP_NATT_DISABLE (0ULL << RTE_SATP_LOG2_NATT)
132 #define RTE_IPSEC_SATP_NATT_ENABLE (1ULL << RTE_SATP_LOG2_NATT)
133 
134 
140 uint64_t
141 rte_ipsec_sa_type(const struct rte_ipsec_sa *sa);
142 
151 int
152 rte_ipsec_sa_size(const struct rte_ipsec_sa_prm *prm);
153 
167 int
168 rte_ipsec_sa_init(struct rte_ipsec_sa *sa, const struct rte_ipsec_sa_prm *prm,
169  uint32_t size);
170 
176 void
177 rte_ipsec_sa_fini(struct rte_ipsec_sa *sa);
178 
179 #ifdef __cplusplus
180 }
181 #endif
182 
183 #endif /* _RTE_IPSEC_SA_H_ */
int rte_ipsec_sa_size(const struct rte_ipsec_sa_prm *prm)
const void * hdr
Definition: rte_ipsec_sa.h:43
struct rte_crypto_sym_xform * crypto_xform
Definition: rte_ipsec_sa.h:37
struct rte_security_ipsec_xform ipsec_xform
Definition: rte_ipsec_sa.h:35
int rte_ipsec_sa_init(struct rte_ipsec_sa *sa, const struct rte_ipsec_sa_prm *prm, uint32_t size)
struct rte_ipsec_sa_prm::@251::@253 tun
uint8_t next_proto
Definition: rte_ipsec_sa.h:42
uint64_t userdata
Definition: rte_ipsec_sa.h:32
uint64_t rte_ipsec_sa_type(const struct rte_ipsec_sa *sa)
uint8_t hdr_l3_off
Definition: rte_ipsec_sa.h:41
void rte_ipsec_sa_fini(struct rte_ipsec_sa *sa)
struct rte_ipsec_sa_prm::@251::@254 trs