FD.io VPP  v20.09-64-g4f7b92f0a
Vector Packet Processing
ipsec_tun.h File Reference
+ Include dependency graph for ipsec_tun.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ipsec_ep_t_
 
struct  ipsec_tun_protect_t_
 
struct  ipsec_tun_lkup_result_t_
 

Macros

#define foreach_ipsec_protect_flags
 
#define ITP_MAX_N_SA_IN   4
 
#define FOR_EACH_IPSEC_PROTECT_INPUT_SAI(_itp, _sai, body)
 
#define FOR_EACH_IPSEC_PROTECT_INPUT_SA(_itp, _sa, body)
 

Typedefs

typedef enum ipsec_protect_flags_t_ ipsec_protect_flags_t
 
typedef struct ipsec_ep_t_ ipsec_ep_t
 
typedef struct ipsec_tun_protect_t_ ipsec_tun_protect_t
 
typedef walk_rc_t(* ipsec_tun_protect_walk_cb_t) (index_t itpi, void *arg)
 
typedef struct ipsec_tun_lkup_result_t_ ipsec_tun_lkup_result_t
 

Enumerations

enum  ipsec_protect_flags_t_ { IPSEC_PROTECT_NONE = 0, foreach_ipsec_protect_flags }
 

Functions

typedef CLIB_PACKED (struct { union { struct { ip4_address_t remote_ip;u32 spi;};u64 as_u64;};}) ipsec4_tunnel_key_t
 
typedef CLIB_PACKED (struct { ip6_address_t remote_ip;u32 spi;}) ipsec6_tunnel_key_t
 
u8format_ipsec4_tunnel_key (u8 *s, va_list *args)
 
u8format_ipsec6_tunnel_key (u8 *s, va_list *args)
 
u8format_ipsec_tun_protect_flags (u8 *s, va_list *args)
 
int ipsec_tun_protect_update_one (u32 sw_if_index, const ip_address_t *nh, u32 sa_out, u32 sa_in)
 
int ipsec_tun_protect_update (u32 sw_if_index, const ip_address_t *nh, u32 sa_out, u32 *sa_ins)
 
int ipsec_tun_protect_update_in (u32 sw_if_index, const ip_address_t *nh, u32 sa_in)
 
int ipsec_tun_protect_update_out (u32 sw_if_index, const ip_address_t *nh, u32 sa_out)
 
int ipsec_tun_protect_del (u32 sw_if_index, const ip_address_t *nh)
 
void ipsec_tun_protect_walk (ipsec_tun_protect_walk_cb_t fn, void *cttx)
 
void ipsec_tun_protect_walk_itf (u32 sw_if_index, ipsec_tun_protect_walk_cb_t fn, void *cttx)
 
u8format_ipsec_tun_protect (u8 *s, va_list *args)
 
u8format_ipsec_tun_protect_index (u8 *s, va_list *args)
 
void ipsec_tun_register_nodes (ip_address_family_t af)
 
void ipsec_tun_unregister_nodes (ip_address_family_t af)
 
static ipsec_tun_protect_tipsec_tun_protect_get (u32 index)
 
static index_t ipsec_tun_protect_get_sa_out (adj_index_t ai)
 

Variables

vlib_node_registration_t ipsec4_tun_input_node
 (constructor) VLIB_REGISTER_NODE (ipsec4_tun_input_node) More...
 
vlib_node_registration_t ipsec6_tun_input_node
 (constructor) VLIB_REGISTER_NODE (ipsec6_tun_input_node) More...
 
ipsec_tun_protect_tipsec_tun_protect_pool
 Pool of tunnel protection objects. More...
 
index_tipsec_tun_protect_sa_by_adj_index
 Adj index to TX SA mapping. More...
 

Macro Definition Documentation

◆ FOR_EACH_IPSEC_PROTECT_INPUT_SA

#define FOR_EACH_IPSEC_PROTECT_INPUT_SA (   _itp,
  _sa,
  body 
)
Value:
{ \
u32 __ii; \
for (__ii = 0; __ii < _itp->itp_n_sa_in; __ii++) { \
_sa = ipsec_sa_get(itp->itp_in_sas[__ii]); \
body; \
} \
}
static ipsec_sa_t * ipsec_sa_get(u32 sa_index)
Definition: ipsec.h:285

Definition at line 104 of file ipsec_tun.h.

◆ FOR_EACH_IPSEC_PROTECT_INPUT_SAI

#define FOR_EACH_IPSEC_PROTECT_INPUT_SAI (   _itp,
  _sai,
  body 
)
Value:
{ \
u32 __ii; \
for (__ii = 0; __ii < _itp->itp_n_sa_in; __ii++) { \
_sai = itp->itp_in_sas[__ii]; \
body; \
} \
}

Definition at line 96 of file ipsec_tun.h.

◆ foreach_ipsec_protect_flags

#define foreach_ipsec_protect_flags
Value:
_(L2, 1, "l2") \
_(ENCAPED, 2, "encapped") \
_(ITF, 4, "itf") \

Definition at line 50 of file ipsec_tun.h.

◆ ITP_MAX_N_SA_IN

#define ITP_MAX_N_SA_IN   4

Definition at line 71 of file ipsec_tun.h.

Typedef Documentation

◆ ipsec_ep_t

typedef struct ipsec_ep_t_ ipsec_ep_t

◆ ipsec_protect_flags_t

◆ ipsec_tun_lkup_result_t

◆ ipsec_tun_protect_t

◆ ipsec_tun_protect_walk_cb_t

typedef walk_rc_t(* ipsec_tun_protect_walk_cb_t) (index_t itpi, void *arg)

Definition at line 126 of file ipsec_tun.h.

Enumeration Type Documentation

◆ ipsec_protect_flags_t_

Enumerator
IPSEC_PROTECT_NONE 
foreach_ipsec_protect_flags 

Definition at line 55 of file ipsec_tun.h.

Function Documentation

◆ CLIB_PACKED() [1/2]

typedef CLIB_PACKED ( struct { union { struct { ip4_address_t remote_ip;u32 spi;};u64 as_u64;};}  )

◆ CLIB_PACKED() [2/2]

typedef CLIB_PACKED ( struct { ip6_address_t remote_ip;u32 spi;}  )

◆ format_ipsec4_tunnel_key()

u8* format_ipsec4_tunnel_key ( u8 s,
va_list *  args 
)

Definition at line 399 of file ipsec_format.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ format_ipsec6_tunnel_key()

u8* format_ipsec6_tunnel_key ( u8 s,
va_list *  args 
)

Definition at line 412 of file ipsec_format.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ format_ipsec_tun_protect()

u8* format_ipsec_tun_protect ( u8 s,
va_list *  args 
)

Definition at line 373 of file ipsec_format.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ format_ipsec_tun_protect_flags()

u8* format_ipsec_tun_protect_flags ( u8 s,
va_list *  args 
)

Definition at line 357 of file ipsec_format.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ format_ipsec_tun_protect_index()

u8* format_ipsec_tun_protect_index ( u8 s,
va_list *  args 
)

Definition at line 343 of file ipsec_format.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ipsec_tun_protect_del()

int ipsec_tun_protect_del ( u32  sw_if_index,
const ip_address_t nh 
)

Definition at line 769 of file ipsec_tun.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ipsec_tun_protect_get()

static ipsec_tun_protect_t* ipsec_tun_protect_get ( u32  index)
inlinestatic

Definition at line 162 of file ipsec_tun.h.

+ Here is the caller graph for this function:

◆ ipsec_tun_protect_get_sa_out()

static index_t ipsec_tun_protect_get_sa_out ( adj_index_t  ai)
inlinestatic

Definition at line 169 of file ipsec_tun.h.

+ Here is the caller graph for this function:

◆ ipsec_tun_protect_update()

int ipsec_tun_protect_update ( u32  sw_if_index,
const ip_address_t nh,
u32  sa_out,
u32 sa_ins 
)

Definition at line 616 of file ipsec_tun.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ipsec_tun_protect_update_in()

int ipsec_tun_protect_update_in ( u32  sw_if_index,
const ip_address_t nh,
u32  sa_in 
)

Definition at line 557 of file ipsec_tun.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ipsec_tun_protect_update_one()

int ipsec_tun_protect_update_one ( u32  sw_if_index,
const ip_address_t nh,
u32  sa_out,
u32  sa_in 
)

Definition at line 495 of file ipsec_tun.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ipsec_tun_protect_update_out()

int ipsec_tun_protect_update_out ( u32  sw_if_index,
const ip_address_t nh,
u32  sa_out 
)

Definition at line 508 of file ipsec_tun.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ipsec_tun_protect_walk()

void ipsec_tun_protect_walk ( ipsec_tun_protect_walk_cb_t  fn,
void *  cttx 
)

Definition at line 801 of file ipsec_tun.c.

+ Here is the caller graph for this function:

◆ ipsec_tun_protect_walk_itf()

void ipsec_tun_protect_walk_itf ( u32  sw_if_index,
ipsec_tun_protect_walk_cb_t  fn,
void *  cttx 
)

Definition at line 814 of file ipsec_tun.c.

+ Here is the caller graph for this function:

◆ ipsec_tun_register_nodes()

void ipsec_tun_register_nodes ( ip_address_family_t  af)

Definition at line 89 of file ipsec_tun.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ipsec_tun_unregister_nodes()

void ipsec_tun_unregister_nodes ( ip_address_family_t  af)

Definition at line 106 of file ipsec_tun.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ ipsec4_tun_input_node

vlib_node_registration_t ipsec4_tun_input_node

(constructor) VLIB_REGISTER_NODE (ipsec4_tun_input_node)

Definition at line 367 of file ipsec_tun_in.c.

◆ ipsec6_tun_input_node

vlib_node_registration_t ipsec6_tun_input_node

(constructor) VLIB_REGISTER_NODE (ipsec6_tun_input_node)

Definition at line 390 of file ipsec_tun_in.c.

◆ ipsec_tun_protect_pool

ipsec_tun_protect_t* ipsec_tun_protect_pool

Pool of tunnel protection objects.

Definition at line 34 of file ipsec_tun.c.

◆ ipsec_tun_protect_sa_by_adj_index

index_t* ipsec_tun_protect_sa_by_adj_index

Adj index to TX SA mapping.

Definition at line 44 of file ipsec_tun.c.