FD.io VPP  v21.01.1
Vector Packet Processing
cnat_node.h File Reference
+ Include dependency graph for cnat_node.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef uword(* cnat_node_sub_t) (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_buffer_t *b, cnat_node_ctx_t *ctx, int rv, cnat_session_t *session)
 

Functions

static_always_inline u8 icmp_type_is_error_message (u8 icmp_type)
 
static_always_inline u8 icmp_type_is_echo (u8 icmp_type)
 
static_always_inline u8 icmp6_type_is_echo (u8 icmp_type)
 
static_always_inline u8 icmp6_type_is_error_message (u8 icmp_type)
 
static_always_inline u8 cmp_ip6_address (const ip6_address_t *a1, const ip6_address_t *a2)
 
static_always_inline u8 has_ip6_address (ip6_address_t *a)
 Inline translation functions. More...
 
static_always_inline void cnat_ip4_translate_l4 (ip4_header_t *ip4, udp_header_t *udp, ip_csum_t *sum, ip4_address_t new_addr[VLIB_N_DIR], u16 new_port[VLIB_N_DIR])
 
static_always_inline void cnat_ip4_translate_l3 (ip4_header_t *ip4, ip4_address_t new_addr[VLIB_N_DIR])
 
static_always_inline void cnat_tcp_update_session_lifetime (tcp_header_t *tcp, u32 index)
 
static_always_inline void cnat_translation_icmp4_echo (ip4_header_t *ip4, icmp46_header_t *icmp, ip4_address_t new_addr[VLIB_N_DIR], u16 new_port[VLIB_N_DIR])
 
static_always_inline void cnat_translation_icmp4_error (ip4_header_t *outer_ip4, icmp46_header_t *icmp, ip4_address_t outer_new_addr[VLIB_N_DIR], u16 outer_new_port[VLIB_N_DIR], u8 snat_outer_ip)
 
static_always_inline void cnat_translation_ip4 (const cnat_session_t *session, ip4_header_t *ip4, udp_header_t *udp)
 
static_always_inline void cnat_ip6_translate_l3 (ip6_header_t *ip6, ip6_address_t new_addr[VLIB_N_DIR])
 
static_always_inline void cnat_ip6_translate_l4 (ip6_header_t *ip6, udp_header_t *udp, ip_csum_t *sum, ip6_address_t new_addr[VLIB_N_DIR], u16 new_port[VLIB_N_DIR])
 
static_always_inline void cnat_translation_icmp6_echo (ip6_header_t *ip6, icmp46_header_t *icmp, ip6_address_t new_addr[VLIB_N_DIR], u16 new_port[VLIB_N_DIR])
 
static_always_inline void cnat_translation_icmp6_error (ip6_header_t *outer_ip6, icmp46_header_t *icmp, ip6_address_t outer_new_addr[VLIB_N_DIR], u16 outer_new_port[VLIB_N_DIR], u8 snat_outer_ip)
 
static_always_inline void cnat_translation_ip6 (const cnat_session_t *session, ip6_header_t *ip6, udp_header_t *udp)
 
static_always_inline void cnat_session_make_key (vlib_buffer_t *b, ip_address_family_t af, clib_bihash_kv_40_48_t *bkey)
 
static_always_inline void cnat_session_create (cnat_session_t *session, cnat_node_ctx_t *ctx, u8 rsession_flags)
 Create NAT sessions. More...
 
static uword cnat_node_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame, cnat_node_sub_t cnat_sub, ip_address_family_t af, u8 do_trace)
 

Typedef Documentation

◆ cnat_node_sub_t

typedef uword(* cnat_node_sub_t) (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_buffer_t *b, cnat_node_ctx_t *ctx, int rv, cnat_session_t *session)

Definition at line 24 of file cnat_node.h.

Function Documentation

◆ cmp_ip6_address()

static_always_inline u8 cmp_ip6_address ( const ip6_address_t *  a1,
const ip6_address_t *  a2 
)

Definition at line 84 of file cnat_node.h.

+ Here is the caller graph for this function:

◆ cnat_ip4_translate_l3()

static_always_inline void cnat_ip4_translate_l3 ( ip4_header_t ip4,
ip4_address_t  new_addr[VLIB_N_DIR] 
)

Definition at line 151 of file cnat_node.h.

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

◆ cnat_ip4_translate_l4()

static_always_inline void cnat_ip4_translate_l4 ( ip4_header_t ip4,
udp_header_t udp,
ip_csum_t sum,
ip4_address_t  new_addr[VLIB_N_DIR],
u16  new_port[VLIB_N_DIR] 
)

Definition at line 101 of file cnat_node.h.

+ Here is the caller graph for this function:

◆ cnat_ip6_translate_l3()

static_always_inline void cnat_ip6_translate_l3 ( ip6_header_t ip6,
ip6_address_t  new_addr[VLIB_N_DIR] 
)

Definition at line 350 of file cnat_node.h.

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

◆ cnat_ip6_translate_l4()

static_always_inline void cnat_ip6_translate_l4 ( ip6_header_t ip6,
udp_header_t udp,
ip_csum_t sum,
ip6_address_t  new_addr[VLIB_N_DIR],
u16  new_port[VLIB_N_DIR] 
)

Definition at line 359 of file cnat_node.h.

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

◆ cnat_node_inline()

static uword cnat_node_inline ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame,
cnat_node_sub_t  cnat_sub,
ip_address_family_t  af,
u8  do_trace 
)
inlinestatic

Definition at line 815 of file cnat_node.h.

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

◆ cnat_session_create()

static_always_inline void cnat_session_create ( cnat_session_t session,
cnat_node_ctx_t ctx,
u8  rsession_flags 
)

Create NAT sessions.

Definition at line 721 of file cnat_node.h.

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

◆ cnat_session_make_key()

static_always_inline void cnat_session_make_key ( vlib_buffer_t b,
ip_address_family_t  af,
clib_bihash_kv_40_48_t bkey 
)

Definition at line 607 of file cnat_node.h.

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

◆ cnat_tcp_update_session_lifetime()

static_always_inline void cnat_tcp_update_session_lifetime ( tcp_header_t tcp,
u32  index 
)

Definition at line 178 of file cnat_node.h.

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

◆ cnat_translation_icmp4_echo()

static_always_inline void cnat_translation_icmp4_echo ( ip4_header_t ip4,
icmp46_header_t *  icmp,
ip4_address_t  new_addr[VLIB_N_DIR],
u16  new_port[VLIB_N_DIR] 
)

Definition at line 198 of file cnat_node.h.

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

◆ cnat_translation_icmp4_error()

static_always_inline void cnat_translation_icmp4_error ( ip4_header_t outer_ip4,
icmp46_header_t *  icmp,
ip4_address_t  outer_new_addr[VLIB_N_DIR],
u16  outer_new_port[VLIB_N_DIR],
u8  snat_outer_ip 
)

Definition at line 219 of file cnat_node.h.

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

◆ cnat_translation_icmp6_echo()

static_always_inline void cnat_translation_icmp6_echo ( ip6_header_t ip6,
icmp46_header_t *  icmp,
ip6_address_t  new_addr[VLIB_N_DIR],
u16  new_port[VLIB_N_DIR] 
)

Definition at line 413 of file cnat_node.h.

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

◆ cnat_translation_icmp6_error()

static_always_inline void cnat_translation_icmp6_error ( ip6_header_t outer_ip6,
icmp46_header_t *  icmp,
ip6_address_t  outer_new_addr[VLIB_N_DIR],
u16  outer_new_port[VLIB_N_DIR],
u8  snat_outer_ip 
)

Definition at line 453 of file cnat_node.h.

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

◆ cnat_translation_ip4()

static_always_inline void cnat_translation_ip4 ( const cnat_session_t session,
ip4_header_t ip4,
udp_header_t udp 
)

Definition at line 305 of file cnat_node.h.

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

◆ cnat_translation_ip6()

static_always_inline void cnat_translation_ip6 ( const cnat_session_t session,
ip6_header_t ip6,
udp_header_t udp 
)

Definition at line 562 of file cnat_node.h.

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

◆ has_ip6_address()

static_always_inline u8 has_ip6_address ( ip6_address_t *  a)

Inline translation functions.

Definition at line 95 of file cnat_node.h.

+ Here is the caller graph for this function:

◆ icmp6_type_is_echo()

static_always_inline u8 icmp6_type_is_echo ( u8  icmp_type)

Definition at line 59 of file cnat_node.h.

+ Here is the caller graph for this function:

◆ icmp6_type_is_error_message()

static_always_inline u8 icmp6_type_is_error_message ( u8  icmp_type)

Definition at line 71 of file cnat_node.h.

+ Here is the caller graph for this function:

◆ icmp_type_is_echo()

static_always_inline u8 icmp_type_is_echo ( u8  icmp_type)

Definition at line 47 of file cnat_node.h.

+ Here is the caller graph for this function:

◆ icmp_type_is_error_message()

static_always_inline u8 icmp_type_is_error_message ( u8  icmp_type)

Definition at line 31 of file cnat_node.h.

+ Here is the caller graph for this function: