DPDK  21.08.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 
84 enum {
85  RTE_SATP_LOG2_IPV,
86  RTE_SATP_LOG2_PROTO,
87  RTE_SATP_LOG2_DIR,
88  RTE_SATP_LOG2_MODE,
89  RTE_SATP_LOG2_SQN = RTE_SATP_LOG2_MODE + 2,
90  RTE_SATP_LOG2_ESN,
91  RTE_SATP_LOG2_ECN,
92  RTE_SATP_LOG2_DSCP
93 };
94 
95 #define RTE_IPSEC_SATP_IPV_MASK (1ULL << RTE_SATP_LOG2_IPV)
96 #define RTE_IPSEC_SATP_IPV4 (0ULL << RTE_SATP_LOG2_IPV)
97 #define RTE_IPSEC_SATP_IPV6 (1ULL << RTE_SATP_LOG2_IPV)
98 
99 #define RTE_IPSEC_SATP_PROTO_MASK (1ULL << RTE_SATP_LOG2_PROTO)
100 #define RTE_IPSEC_SATP_PROTO_AH (0ULL << RTE_SATP_LOG2_PROTO)
101 #define RTE_IPSEC_SATP_PROTO_ESP (1ULL << RTE_SATP_LOG2_PROTO)
102 
103 #define RTE_IPSEC_SATP_DIR_MASK (1ULL << RTE_SATP_LOG2_DIR)
104 #define RTE_IPSEC_SATP_DIR_IB (0ULL << RTE_SATP_LOG2_DIR)
105 #define RTE_IPSEC_SATP_DIR_OB (1ULL << RTE_SATP_LOG2_DIR)
106 
107 #define RTE_IPSEC_SATP_MODE_MASK (3ULL << RTE_SATP_LOG2_MODE)
108 #define RTE_IPSEC_SATP_MODE_TRANS (0ULL << RTE_SATP_LOG2_MODE)
109 #define RTE_IPSEC_SATP_MODE_TUNLV4 (1ULL << RTE_SATP_LOG2_MODE)
110 #define RTE_IPSEC_SATP_MODE_TUNLV6 (2ULL << RTE_SATP_LOG2_MODE)
111 
112 #define RTE_IPSEC_SATP_SQN_MASK (1ULL << RTE_SATP_LOG2_SQN)
113 #define RTE_IPSEC_SATP_SQN_RAW (0ULL << RTE_SATP_LOG2_SQN)
114 #define RTE_IPSEC_SATP_SQN_ATOM (1ULL << RTE_SATP_LOG2_SQN)
115 
116 #define RTE_IPSEC_SATP_ESN_MASK (1ULL << RTE_SATP_LOG2_ESN)
117 #define RTE_IPSEC_SATP_ESN_DISABLE (0ULL << RTE_SATP_LOG2_ESN)
118 #define RTE_IPSEC_SATP_ESN_ENABLE (1ULL << RTE_SATP_LOG2_ESN)
119 
120 #define RTE_IPSEC_SATP_ECN_MASK (1ULL << RTE_SATP_LOG2_ECN)
121 #define RTE_IPSEC_SATP_ECN_DISABLE (0ULL << RTE_SATP_LOG2_ECN)
122 #define RTE_IPSEC_SATP_ECN_ENABLE (1ULL << RTE_SATP_LOG2_ECN)
123 
124 #define RTE_IPSEC_SATP_DSCP_MASK (1ULL << RTE_SATP_LOG2_DSCP)
125 #define RTE_IPSEC_SATP_DSCP_DISABLE (0ULL << RTE_SATP_LOG2_DSCP)
126 #define RTE_IPSEC_SATP_DSCP_ENABLE (1ULL << RTE_SATP_LOG2_DSCP)
127 
133 uint64_t
134 rte_ipsec_sa_type(const struct rte_ipsec_sa *sa);
135 
144 int
145 rte_ipsec_sa_size(const struct rte_ipsec_sa_prm *prm);
146 
160 int
161 rte_ipsec_sa_init(struct rte_ipsec_sa *sa, const struct rte_ipsec_sa_prm *prm,
162  uint32_t size);
163 
169 void
170 rte_ipsec_sa_fini(struct rte_ipsec_sa *sa);
171 
172 #ifdef __cplusplus
173 }
174 #endif
175 
176 #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)
uint8_t next_proto
Definition: rte_ipsec_sa.h:42
struct rte_ipsec_sa_prm::@259::@262 trs
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
struct rte_ipsec_sa_prm::@259::@261 tun
void rte_ipsec_sa_fini(struct rte_ipsec_sa *sa)