DPDK 22.11.5
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
19extern "C" {
20#endif
21
25struct 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
85enum {
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
140uint64_t
141rte_ipsec_sa_type(const struct rte_ipsec_sa *sa);
142
151int
153
167int
168rte_ipsec_sa_init(struct rte_ipsec_sa *sa, const struct rte_ipsec_sa_prm *prm,
169 uint32_t size);
170
176void
177rte_ipsec_sa_fini(struct rte_ipsec_sa *sa);
178
179#ifdef __cplusplus
180}
181#endif
182
183#endif /* _RTE_IPSEC_SA_H_ */
uint64_t rte_ipsec_sa_type(const struct rte_ipsec_sa *sa)
void rte_ipsec_sa_fini(struct rte_ipsec_sa *sa)
int rte_ipsec_sa_init(struct rte_ipsec_sa *sa, const struct rte_ipsec_sa_prm *prm, uint32_t size)
int rte_ipsec_sa_size(const struct rte_ipsec_sa_prm *prm)
struct rte_crypto_sym_xform * crypto_xform
Definition: rte_ipsec_sa.h:37
uint64_t userdata
Definition: rte_ipsec_sa.h:32
struct rte_ipsec_sa_prm::@212::@215 trs
struct rte_ipsec_sa_prm::@212::@214 tun
uint8_t hdr_l3_off
Definition: rte_ipsec_sa.h:41
const void * hdr
Definition: rte_ipsec_sa.h:43
uint8_t next_proto
Definition: rte_ipsec_sa.h:42
struct rte_security_ipsec_xform ipsec_xform
Definition: rte_ipsec_sa.h:35