11#ifndef _DAO_LIB_NETLINK_XFRM_H
12#define _DAO_LIB_NETLINK_XFRM_H
16#include <rte_crypto.h>
18#include <netlink/xfrm/sa.h>
19#include <netlink/xfrm/sp.h>
20#include <netlink/xfrm/ae.h>
21#include <netlink/xfrm/template.h>
22#include <netlink/xfrm/selector.h>
23#include <netlink/xfrm/lifetime.h>
29#define DAO_NETLINK_XFRM_NAME_LEN 64
30#define DAO_NETLINK_XFRM_ALG_MAX_NAME 128
38 unsigned int prefixlen;
104 char key[DAO_NETLINK_CRYPTO_KEY_MAX_NAME_LEN];
106 char algo[DAO_NETLINK_XFRM_ALG_MAX_NAME];
109typedef struct dao_netlink_xfrm_sel {
122} dao_netlink_xfrm_sel_t;
154 unsigned int src_prefixlen;
157 unsigned int dst_prefixlen;
167 dao_netlink_xfrm_sel_t sel;
187 dao_netlink_xfrm_sel_t sel;
222static inline const char *
252static inline const char *
289 struct rte_crypto_sym_xform *cipher,
290 struct rte_crypto_sym_xform *auth);
dao_netlink_xfrm_tunnel_type_t
@ DAO_NETLINK_XFRM_TUNNEL_IPV4
@ DAO_NETLINK_XFRM_TUNNEL_IPV6
int dao_netlink_xfrm_sa_to_crypto_xform(struct dao_netlink_xfrm_sa *sa, dao_netlink_xfrm_policy_dir_t dir, struct rte_crypto_sym_xform *cipher, struct rte_crypto_sym_xform *auth)
static const char * dao_netlink_ipsec_dir_to_str(dao_netlink_xfrm_policy_dir_t dir)
int dao_netlink_xfrm_notifier_register(dao_netlink_xfrm_callback_ops_t *xfrm_ops, void *app_cookie)
dao_netlink_xfrm_sa_mode_t
@ DAO_NETLINK_XFRM_MODE_TRANSPORT
@ DAO_NETLINK_XFRM_MODE_TUNNEL
struct dao_netlink_xfrm_callback_ops dao_netlink_xfrm_callback_ops_t
static const char * dao_netlink_xfrm_tunnel_type_to_str(dao_netlink_xfrm_tunnel_type_t ip_proto)
dao_netlink_xfrm_policy_dir_t
@ DAO_NETLINK_XFRM_POLICY_DIR_OUT
@ DAO_NETLINK_XFRM_POLICY_DIR_FWD
@ DAO_NETLINK_XFRM_POLICY_DIR_IN
struct dao_netlink_ip_addr dao_netlink_ip_addr_t
@ DAO_NETLINK_XFRM_PROTO_AH
@ DAO_NETLINK_XFRM_PROTO_ESP
struct dao_netlink_xfrm_policy dao_netlink_xfrm_policy_t
dao_netlink_xfrm_op_type_t
@ DAO_NETLINK_XFRM_OP_POLICY_UPD
@ DAO_NETLINK_XFRM_OP_POLICY_ADD
dao_netlink_xfrm_sa_flags_t
@ DAO_NETLINK_XFRM_SA_FLAG_USE_AR
@ DAO_NETLINK_XFRM_SA_FLAG_USE_ESN
struct dao_netlink_xfrm_sa dao_netlink_xfrm_sa_t
struct dao_netlink_xfrm_sa_xform dao_netlink_xfrm_sa_xform_t
int(* xfrm_policy_destroy)(dao_netlink_xfrm_policy_t *policy, dao_netlink_xfrm_sa_t *sa, dao_netlink_xfrm_op_type_t op_type, void *app_cookie)
int(* xfrm_policy_create)(dao_netlink_xfrm_policy_t *policy, dao_netlink_xfrm_sa_t *sa, dao_netlink_xfrm_op_type_t op_type, void *app_cookie)
struct dao_netlink_xfrm_sa * ips_sa
dao_netlink_ip_addr_t src_ip
dao_netlink_ip_addr_t dst_ip
dao_netlink_xfrm_policy_dir_t policy_dir
dao_netlink_xfrm_sa_flags_t sa_flags
struct dao_netlink_crypto_key auth_key
struct dao_netlink_crypto_key aead_key
struct dao_netlink_crypto_key cipher_key
dao_netlink_xfrm_tunnel_type_t ip_tunnel_type
dao_netlink_xfrm_sa_mode_t sa_mode
dao_netlink_ip_addr_t in6_src
dao_netlink_ip_addr_t in6_dst
dao_netlink_xfrm_proto_t ipsec_proto
STAILQ_ENTRY(dao_netlink_xfrm_sa) next_sa