FD.io VPP  v21.01.1
Vector Packet Processing
cnat_session_t_ Struct Reference

A session represents the memory of a translation. More...

Data Fields

struct {
   ip46_address_t   cs_ip [VLIB_N_DIR]
 IP 4/6 address in the rx/tx direction. More...
 
   u16   cs_port [VLIB_N_DIR]
 ports in rx/tx More...
 
   ip_protocol_t   cs_proto
 The IP protocol TCP or UDP only supported. More...
 
   u8   cs_af
 The address family describing the IP addresses. More...
 
key
 this key sits in the same memory location a 'key' in the bihash kvp More...
 
struct {
   ip46_address_t   cs_ip [VLIB_N_DIR]
 The IP address to translate to. More...
 
   u16   cs_port [VLIB_N_DIR]
 the port to translate to. More...
 
   index_t   cs_lbi
 The load balance object to use to forward. More...
 
   u32   cs_ts_index
 Timestamp index this session was last used. More...
 
   union {
      u32   flags
 session flags if cs_lbi == INDEX_INVALID More...
 
      u32   ct_index
 Persist translation->ct_lb.dpoi_next_node when cs_lbi != INDEX_INVALID. More...
 
   } 
 
value
 this value sits in the same memory location a 'value' in the bihash kvp More...
 

Detailed Description

A session represents the memory of a translation.

In the tx direction (from behind to in front of the NAT), the session is preserved so subsequent packets follow the same path even if the translation has been updated. In the tx direction the session represents the swap from the VIP to the server address In the RX direction the swap is from the server address/port to VIP.

A session exists only as key and value in the bihash, there is no pool for this object. If there were a pool, one would need to be concerned about what worker is using it.

Definition at line 38 of file cnat_session.h.

Field Documentation

◆ cs_af

u8 cnat_session_t_::cs_af

The address family describing the IP addresses.

Definition at line 63 of file cnat_session.h.

◆ cs_ip

ip46_address_t cnat_session_t_::cs_ip[VLIB_N_DIR]

IP 4/6 address in the rx/tx direction.

The IP address to translate to.

Definition at line 48 of file cnat_session.h.

◆ cs_lbi

index_t cnat_session_t_::cs_lbi

The load balance object to use to forward.

Definition at line 88 of file cnat_session.h.

◆ cs_port

u16 cnat_session_t_::cs_port[VLIB_N_DIR]

ports in rx/tx

the port to translate to.

Definition at line 53 of file cnat_session.h.

◆ cs_proto

ip_protocol_t cnat_session_t_::cs_proto

The IP protocol TCP or UDP only supported.

Definition at line 58 of file cnat_session.h.

◆ cs_ts_index

u32 cnat_session_t_::cs_ts_index

Timestamp index this session was last used.

Definition at line 93 of file cnat_session.h.

◆ ct_index

u32 cnat_session_t_::ct_index

Persist translation->ct_lb.dpoi_next_node when cs_lbi != INDEX_INVALID.

Definition at line 105 of file cnat_session.h.

◆ flags

u32 cnat_session_t_::flags

session flags if cs_lbi == INDEX_INVALID

Definition at line 100 of file cnat_session.h.

◆ key

struct { ... } cnat_session_t_::key

this key sits in the same memory location a 'key' in the bihash kvp

◆ value

struct { ... } cnat_session_t_::value

this value sits in the same memory location a 'value' in the bihash kvp


The documentation for this struct was generated from the following file: