rte_ipsec_sa.h
Contents
Detailed Description
Defines API to manage IPsec Security Association (SA) objects.
Definition in file rte_ipsec_sa.h.
Enumeration Type Documentation
anonymousenum
SA type is an 64-bit value that contain the following information:
• IP version (IPv4/IPv6)
• IPsec proto (ESP/AH)
• inbound/outbound
• mode (TRANSPORT/TUNNEL)
• for TUNNEL outer IP version (IPv4/IPv6)
• are SA SQN operations 'atomic'
• ESN enabled/disabled
• NAT-T UDP encapsulated (TUNNEL mode only) ...
Definition at line 85 of file rte_ipsec_sa.h.
Function Documentation
uint64_trte_ipsec_sa_type(conststructrte_ipsec_sa*sa)
get type of given SA
Returns
SA type value.
intrte_ipsec_sa_size(conststructrte_ipsec_sa_prm*prm)
Calculate required SA size based on provided input parameters.
Parametersprm Parameters that will be used to initialise SA object.
Returns
• Actual size required for SA with given parameters.
• -EINVAL if the parameters are invalid.
intrte_ipsec_sa_init(structrte_ipsec_sa*sa,conststructrte_ipsec_sa_prm*prm,uint32_tsize)
initialise SA based on provided input parameters.
Parameterssa SA object to initialise.
prm Parameters used to initialise given SA object.
size size of the provided buffer for SA.
Returns
• Actual size of SA object if operation completed successfully.
• -EINVAL if the parameters are invalid.
• -ENOSPC if the size of the provided buffer is not big enough.
voidrte_ipsec_sa_fini(structrte_ipsec_sa*sa)
cleanup SA
Parameterssa Pointer to SA object to de-initialize.
Macro Definition Documentation
#defineRTE_IPSEC_SAFLAG_SQN_ATOM(1ULL<<0)
Indicates that SA will(/will not) need an 'atomic' access to sequence number and replay window. 'atomic'
here means: functions:
• rte_ipsec_pkt_crypto_prepare
• rte_ipsec_pkt_process can be safely used in MT environment, as long as the user can guarantee that they
obey multiple readers/single writer model for SQN+replay_window operations. To be more specific: for
outbound SA there are no restrictions. for inbound SA the caller has to guarantee that at any given
moment only one thread is executing rte_ipsec_pkt_process() for given SA. Note that it is caller
responsibility to maintain correct order of packets to be processed. In other words - it is a caller
responsibility to serialize process() invocations.
Definition at line 70 of file rte_ipsec_sa.h.
Name
rte_ipsec_sa.h
Synopsis
#include <rte_common.h>
#include <rte_cryptodev.h>
#include <rte_security.h>
DataStructures
struct rte_ipsec_sa_prmMacros
#define RTE_IPSEC_SAFLAG_SQN_ATOM (1ULL << 0)
Enumerations
enum
Functions
uint64_t rte_ipsec_sa_type (const struct rte_ipsec_sa *sa)
int rte_ipsec_sa_size (const struct rte_ipsec_sa_prm *prm)
int rte_ipsec_sa_init (struct rte_ipsec_sa *sa, const struct rte_ipsec_sa_prm *prm, uint32_t size)
void rte_ipsec_sa_fini (struct rte_ipsec_sa *sa)
