FD.io VPP  v19.08.3-2-gbabecb413
Vector Packet Processing
nat_ipfix_logging.c File Reference
+ Include dependency graph for nat_ipfix_logging.c:

Go to the source code of this file.

Data Structures

struct  snat_ipfix_logging_nat44_ses_args_t
 
struct  snat_ipfix_logging_addr_exhausted_args_t
 
struct  snat_ipfix_logging_max_entries_per_user_args_t
 
struct  nat_ipfix_logging_max_sessions_args_t
 
struct  nat_ipfix_logging_max_bibs_args_t
 
struct  nat_ipfix_logging_max_frags_ip4_args_t
 
struct  nat_ipfix_logging_max_frags_ip6_args_t
 
struct  nat_ipfix_logging_nat64_ses_args_t
 
struct  nat_ipfix_logging_nat64_bib_args_t
 

Macros

#define NAT44_SESSION_CREATE_LEN   26
 
#define NAT_ADDRESSES_EXHAUTED_LEN   13
 
#define MAX_ENTRIES_PER_USER_LEN   21
 
#define MAX_SESSIONS_LEN   17
 
#define MAX_BIBS_LEN   17
 
#define MAX_FRAGMENTS_IP4_LEN   21
 
#define MAX_FRAGMENTS_IP6_LEN   33
 
#define NAT64_BIB_LEN   38
 
#define NAT64_SES_LEN   62
 
#define NAT44_SESSION_CREATE_FIELD_COUNT   8
 
#define NAT_ADDRESSES_EXHAUTED_FIELD_COUNT   3
 
#define MAX_ENTRIES_PER_USER_FIELD_COUNT   5
 
#define MAX_SESSIONS_FIELD_COUNT   4
 
#define MAX_BIBS_FIELD_COUNT   4
 
#define MAX_FRAGMENTS_FIELD_COUNT   5
 
#define NAT64_BIB_FIELD_COUNT   8
 
#define NAT64_SES_FIELD_COUNT   12
 
#define skip_if_disabled()
 
#define update_template_id(old_id, new_id)
 

Functions

static u8snat_template_rewrite (flow_report_main_t *frm, flow_report_t *fr, ip4_address_t *collector_address, ip4_address_t *src_address, u16 collector_port, nat_event_t event, quota_exceed_event_t quota_event)
 Create an IPFIX template packet rewrite string. More...
 
u8snat_template_rewrite_addr_exhausted (flow_report_main_t *frm, flow_report_t *fr, ip4_address_t *collector_address, ip4_address_t *src_address, u16 collector_port, ipfix_report_element_t *elts, u32 n_elts, u32 *stream_index)
 
u8snat_template_rewrite_nat44_session (flow_report_main_t *frm, flow_report_t *fr, ip4_address_t *collector_address, ip4_address_t *src_address, u16 collector_port, ipfix_report_element_t *elts, u32 n_elts, u32 *stream_index)
 
u8snat_template_rewrite_max_entries_per_usr (flow_report_main_t *frm, flow_report_t *fr, ip4_address_t *collector_address, ip4_address_t *src_address, u16 collector_port, ipfix_report_element_t *elts, u32 n_elts, u32 *stream_index)
 
u8nat_template_rewrite_max_sessions (flow_report_main_t *frm, flow_report_t *fr, ip4_address_t *collector_address, ip4_address_t *src_address, u16 collector_port, ipfix_report_element_t *elts, u32 n_elts, u32 *stream_index)
 
u8nat_template_rewrite_max_bibs (flow_report_main_t *frm, flow_report_t *fr, ip4_address_t *collector_address, ip4_address_t *src_address, u16 collector_port, ipfix_report_element_t *elts, u32 n_elts, u32 *stream_index)
 
u8nat_template_rewrite_max_frags_ip4 (flow_report_main_t *frm, flow_report_t *fr, ip4_address_t *collector_address, ip4_address_t *src_address, u16 collector_port, ipfix_report_element_t *elts, u32 n_elts, u32 *stream_index)
 
u8nat_template_rewrite_max_frags_ip6 (flow_report_main_t *frm, flow_report_t *fr, ip4_address_t *collector_address, ip4_address_t *src_address, u16 collector_port, ipfix_report_element_t *elts, u32 n_elts, u32 *stream_index)
 
u8nat_template_rewrite_nat64_bib (flow_report_main_t *frm, flow_report_t *fr, ip4_address_t *collector_address, ip4_address_t *src_address, u16 collector_port, ipfix_report_element_t *elts, u32 n_elts, u32 *stream_index)
 
u8nat_template_rewrite_nat64_session (flow_report_main_t *frm, flow_report_t *fr, ip4_address_t *collector_address, ip4_address_t *src_address, u16 collector_port, ipfix_report_element_t *elts, u32 n_elts, u32 *stream_index)
 
static void snat_ipfix_header_create (flow_report_main_t *frm, vlib_buffer_t *b0, u32 *offset)
 
static void snat_ipfix_send (flow_report_main_t *frm, vlib_frame_t *f, vlib_buffer_t *b0, u16 template_id)
 
static void snat_ipfix_logging_nat44_ses (u32 thread_index, u8 nat_event, u32 src_ip, u32 nat_src_ip, snat_protocol_t snat_proto, u16 src_port, u16 nat_src_port, u32 vrf_id, int do_flush)
 
static void snat_ipfix_logging_addr_exhausted (u32 thread_index, u32 pool_id, int do_flush)
 
static void snat_ipfix_logging_max_entries_per_usr (u32 thread_index, u32 limit, u32 src_ip, int do_flush)
 
static void nat_ipfix_logging_max_ses (u32 thread_index, u32 limit, int do_flush)
 
static void nat_ipfix_logging_max_bib (u32 thread_index, u32 limit, int do_flush)
 
static void nat_ipfix_logging_max_frag_ip4 (u32 thread_index, u32 limit, u32 src, int do_flush)
 
static void nat_ipfix_logging_max_frag_ip6 (u32 thread_index, u32 limit, ip6_address_t *src, int do_flush)
 
static void nat_ipfix_logging_nat64_bibe (u32 thread_index, u8 nat_event, ip6_address_t *src_ip, u32 nat_src_ip, u8 proto, u16 src_port, u16 nat_src_port, u32 vrf_id, int do_flush)
 
static void nat_ipfix_logging_nat64_ses (u32 thread_index, u8 nat_event, ip6_address_t *src_ip, u32 nat_src_ip, u8 proto, u16 src_port, u16 nat_src_port, ip6_address_t *dst_ip, u32 nat_dst_ip, u16 dst_port, u16 nat_dst_port, u32 vrf_id, int do_flush)
 
void snat_ipfix_flush (u32 thread_index)
 
void snat_ipfix_flush_from_main (void)
 
void snat_ipfix_logging_nat44_ses_create (u32 thread_index, u32 src_ip, u32 nat_src_ip, snat_protocol_t snat_proto, u16 src_port, u16 nat_src_port, u32 vrf_id)
 Generate NAT44 session create event. More...
 
void snat_ipfix_logging_nat44_ses_delete (u32 thread_index, u32 src_ip, u32 nat_src_ip, snat_protocol_t snat_proto, u16 src_port, u16 nat_src_port, u32 vrf_id)
 Generate NAT44 session delete event. More...
 
void snat_ipfix_logging_addresses_exhausted (u32 thread_index, u32 pool_id)
 Generate NAT addresses exhausted event. More...
 
void snat_ipfix_logging_max_entries_per_user (u32 thread_index, u32 limit, u32 src_ip)
 Generate maximum entries per user exceeded event. More...
 
vlib_frame_tdeterministic_nat_data_callback (flow_report_main_t *frm, flow_report_t *fr, vlib_frame_t *f, u32 *to_next, u32 node_index)
 
void nat_ipfix_logging_max_sessions (u32 thread_index, u32 limit)
 Generate maximum session entries exceeded event. More...
 
void nat_ipfix_logging_max_bibs (u32 thread_index, u32 limit)
 Generate maximum BIB entries exceeded event. More...
 
void nat_ipfix_logging_max_fragments_ip4 (u32 thread_index, u32 limit, ip4_address_t *src)
 Generate maximum IPv4 fragments pending reassembly exceeded event. More...
 
void nat_ipfix_logging_max_fragments_ip6 (u32 thread_index, u32 limit, ip6_address_t *src)
 Generate maximum IPv6 fragments pending reassembly exceeded event. More...
 
void nat_ipfix_logging_nat64_bib (u32 thread_index, ip6_address_t *src_ip, ip4_address_t *nat_src_ip, u8 proto, u16 src_port, u16 nat_src_port, u32 vrf_id, u8 is_create)
 Generate NAT64 BIB create and delete events. More...
 
void nat_ipfix_logging_nat64_session (u32 thread_index, ip6_address_t *src_ip, ip4_address_t *nat_src_ip, u8 proto, u16 src_port, u16 nat_src_port, ip6_address_t *dst_ip, ip4_address_t *nat_dst_ip, u16 dst_port, u16 nat_dst_port, u32 vrf_id, u8 is_create)
 Generate NAT64 session create and delete events. More...
 
vlib_frame_tdata_callback (flow_report_main_t *frm, flow_report_t *fr, vlib_frame_t *f, u32 *to_next, u32 node_index)
 
int snat_ipfix_logging_enable_disable (int enable, u32 domain_id, u16 src_port)
 Enable/disable NAT plugin IPFIX logging. More...
 
void snat_ipfix_logging_init (vlib_main_t *vm)
 Initialize NAT plugin IPFIX logging. More...
 
static uword ipfix_flush_process (vlib_main_t *vm, vlib_node_runtime_t *rt, vlib_frame_t *f)
 

Variables

vlib_node_registration_t snat_ipfix_flush_node
 (constructor) VLIB_REGISTER_NODE (snat_ipfix_flush_node) More...
 
snat_ipfix_logging_main_t snat_ipfix_logging_main
 

Macro Definition Documentation

◆ MAX_BIBS_FIELD_COUNT

#define MAX_BIBS_FIELD_COUNT   4

Definition at line 41 of file nat_ipfix_logging.c.

◆ MAX_BIBS_LEN

#define MAX_BIBS_LEN   17

Definition at line 31 of file nat_ipfix_logging.c.

◆ MAX_ENTRIES_PER_USER_FIELD_COUNT

#define MAX_ENTRIES_PER_USER_FIELD_COUNT   5

Definition at line 39 of file nat_ipfix_logging.c.

◆ MAX_ENTRIES_PER_USER_LEN

#define MAX_ENTRIES_PER_USER_LEN   21

Definition at line 29 of file nat_ipfix_logging.c.

◆ MAX_FRAGMENTS_FIELD_COUNT

#define MAX_FRAGMENTS_FIELD_COUNT   5

Definition at line 42 of file nat_ipfix_logging.c.

◆ MAX_FRAGMENTS_IP4_LEN

#define MAX_FRAGMENTS_IP4_LEN   21

Definition at line 32 of file nat_ipfix_logging.c.

◆ MAX_FRAGMENTS_IP6_LEN

#define MAX_FRAGMENTS_IP6_LEN   33

Definition at line 33 of file nat_ipfix_logging.c.

◆ MAX_SESSIONS_FIELD_COUNT

#define MAX_SESSIONS_FIELD_COUNT   4

Definition at line 40 of file nat_ipfix_logging.c.

◆ MAX_SESSIONS_LEN

#define MAX_SESSIONS_LEN   17

Definition at line 30 of file nat_ipfix_logging.c.

◆ NAT44_SESSION_CREATE_FIELD_COUNT

#define NAT44_SESSION_CREATE_FIELD_COUNT   8

Definition at line 37 of file nat_ipfix_logging.c.

◆ NAT44_SESSION_CREATE_LEN

#define NAT44_SESSION_CREATE_LEN   26

Definition at line 27 of file nat_ipfix_logging.c.

◆ NAT64_BIB_FIELD_COUNT

#define NAT64_BIB_FIELD_COUNT   8

Definition at line 43 of file nat_ipfix_logging.c.

◆ NAT64_BIB_LEN

#define NAT64_BIB_LEN   38

Definition at line 34 of file nat_ipfix_logging.c.

◆ NAT64_SES_FIELD_COUNT

#define NAT64_SES_FIELD_COUNT   12

Definition at line 44 of file nat_ipfix_logging.c.

◆ NAT64_SES_LEN

#define NAT64_SES_LEN   62

Definition at line 35 of file nat_ipfix_logging.c.

◆ NAT_ADDRESSES_EXHAUTED_FIELD_COUNT

#define NAT_ADDRESSES_EXHAUTED_FIELD_COUNT   3

Definition at line 38 of file nat_ipfix_logging.c.

◆ NAT_ADDRESSES_EXHAUTED_LEN

#define NAT_ADDRESSES_EXHAUTED_LEN   13

Definition at line 28 of file nat_ipfix_logging.c.

◆ skip_if_disabled

#define skip_if_disabled ( )
Value:
do { \
snat_ipfix_logging_main_t *silm = &snat_ipfix_logging_main; \
if (PREDICT_TRUE (!clib_atomic_fetch_or(&silm->enabled, 0))) \
return; \
} while (0)
#define PREDICT_TRUE(x)
Definition: clib.h:113
snat_ipfix_logging_main_t snat_ipfix_logging_main
#define clib_atomic_fetch_or(a, b)
Definition: atomics.h:27

Definition at line 116 of file nat_ipfix_logging.c.

◆ update_template_id

#define update_template_id (   old_id,
  new_id 
)
Value:
do { \
u16 template_id = clib_atomic_fetch_or(old_id, 0); \
clib_atomic_cmp_and_swap(old_id, template_id, new_id); \
} while (0)
#define clib_atomic_fetch_or(a, b)
Definition: atomics.h:27

Definition at line 123 of file nat_ipfix_logging.c.

Function Documentation

◆ data_callback()

vlib_frame_t* data_callback ( flow_report_main_t frm,
flow_report_t fr,
vlib_frame_t f,
u32 to_next,
u32  node_index 
)

Definition at line 1781 of file nat_ipfix_logging.c.

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

◆ deterministic_nat_data_callback()

vlib_frame_t* deterministic_nat_data_callback ( flow_report_main_t frm,
flow_report_t fr,
vlib_frame_t f,
u32 to_next,
u32  node_index 
)

Definition at line 1640 of file nat_ipfix_logging.c.

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

◆ ipfix_flush_process()

static uword ipfix_flush_process ( vlib_main_t vm,
vlib_node_runtime_t rt,
vlib_frame_t f 
)
static

Definition at line 1947 of file nat_ipfix_logging.c.

+ Here is the call graph for this function:

◆ nat_ipfix_logging_max_bib()

static void nat_ipfix_logging_max_bib ( u32  thread_index,
u32  limit,
int  do_flush 
)
static

Definition at line 1016 of file nat_ipfix_logging.c.

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

◆ nat_ipfix_logging_max_bibs()

void nat_ipfix_logging_max_bibs ( u32  thread_index,
u32  limit 
)

Generate maximum BIB entries exceeded event.

Parameters
thread_indexthread index
limitconfigured limit

Definition at line 1672 of file nat_ipfix_logging.c.

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

◆ nat_ipfix_logging_max_frag_ip4()

static void nat_ipfix_logging_max_frag_ip4 ( u32  thread_index,
u32  limit,
u32  src,
int  do_flush 
)
static

Definition at line 1104 of file nat_ipfix_logging.c.

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

◆ nat_ipfix_logging_max_frag_ip6()

static void nat_ipfix_logging_max_frag_ip6 ( u32  thread_index,
u32  limit,
ip6_address_t src,
int  do_flush 
)
static

Definition at line 1196 of file nat_ipfix_logging.c.

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

◆ nat_ipfix_logging_max_fragments_ip4()

void nat_ipfix_logging_max_fragments_ip4 ( u32  thread_index,
u32  limit,
ip4_address_t src 
)

Generate maximum IPv4 fragments pending reassembly exceeded event.

Parameters
thread_indexthread index
limitconfigured limit
srcsource IPv4 address

Definition at line 1688 of file nat_ipfix_logging.c.

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

◆ nat_ipfix_logging_max_fragments_ip6()

void nat_ipfix_logging_max_fragments_ip6 ( u32  thread_index,
u32  limit,
ip6_address_t src 
)

Generate maximum IPv6 fragments pending reassembly exceeded event.

Parameters
thread_indexthread index
limitconfigured limit
srcsource IPv6 address

Definition at line 1705 of file nat_ipfix_logging.c.

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

◆ nat_ipfix_logging_max_ses()

static void nat_ipfix_logging_max_ses ( u32  thread_index,
u32  limit,
int  do_flush 
)
static

Definition at line 928 of file nat_ipfix_logging.c.

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

◆ nat_ipfix_logging_max_sessions()

void nat_ipfix_logging_max_sessions ( u32  thread_index,
u32  limit 
)

Generate maximum session entries exceeded event.

Parameters
thread_indexthread index
limitconfigured limit

Definition at line 1657 of file nat_ipfix_logging.c.

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

◆ nat_ipfix_logging_nat64_bib()

void nat_ipfix_logging_nat64_bib ( u32  thread_index,
ip6_address_t src_ip,
ip4_address_t nat_src_ip,
u8  proto,
u16  src_port,
u16  nat_src_port,
u32  vrf_id,
u8  is_create 
)

Generate NAT64 BIB create and delete events.

Parameters
thread_indexthread index
src_ipsource IPv6 address
nat_src_iptransaltes source IPv4 address
protoL4 protocol
src_portsource port
nat_src_porttranslated source port
vrf_idVRF ID
is_createnon-zero value if create event otherwise delete event

Definition at line 1727 of file nat_ipfix_logging.c.

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

◆ nat_ipfix_logging_nat64_bibe()

static void nat_ipfix_logging_nat64_bibe ( u32  thread_index,
u8  nat_event,
ip6_address_t src_ip,
u32  nat_src_ip,
u8  proto,
u16  src_port,
u16  nat_src_port,
u32  vrf_id,
int  do_flush 
)
static

Definition at line 1288 of file nat_ipfix_logging.c.

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

◆ nat_ipfix_logging_nat64_ses()

static void nat_ipfix_logging_nat64_ses ( u32  thread_index,
u8  nat_event,
ip6_address_t src_ip,
u32  nat_src_ip,
u8  proto,
u16  src_port,
u16  nat_src_port,
ip6_address_t dst_ip,
u32  nat_dst_ip,
u16  dst_port,
u16  nat_dst_port,
u32  vrf_id,
int  do_flush 
)
static

Definition at line 1389 of file nat_ipfix_logging.c.

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

◆ nat_ipfix_logging_nat64_session()

void nat_ipfix_logging_nat64_session ( u32  thread_index,
ip6_address_t src_ip,
ip4_address_t nat_src_ip,
u8  proto,
u16  src_port,
u16  nat_src_port,
ip6_address_t dst_ip,
ip4_address_t nat_dst_ip,
u16  dst_port,
u16  nat_dst_port,
u32  vrf_id,
u8  is_create 
)

Generate NAT64 session create and delete events.

Parameters
thread_indexthread index
src_ipsource IPv6 address
nat_src_iptransaltes source IPv4 address
protoL4 protocol
src_portsource port
nat_src_porttranslated source port
dst_ipdestination IPv6 address
nat_dst_ipdestination IPv4 address
dst_portdestination port
nat_dst_porttranslated destination port
vrf_idVRF ID
is_createnon-zero value if create event otherwise delete event

Definition at line 1760 of file nat_ipfix_logging.c.

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

◆ nat_template_rewrite_max_bibs()

u8* nat_template_rewrite_max_bibs ( flow_report_main_t frm,
flow_report_t fr,
ip4_address_t collector_address,
ip4_address_t src_address,
u16  collector_port,
ipfix_report_element_t elts,
u32  n_elts,
u32 stream_index 
)

Definition at line 488 of file nat_ipfix_logging.c.

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

◆ nat_template_rewrite_max_frags_ip4()

u8* nat_template_rewrite_max_frags_ip4 ( flow_report_main_t frm,
flow_report_t fr,
ip4_address_t collector_address,
ip4_address_t src_address,
u16  collector_port,
ipfix_report_element_t elts,
u32  n_elts,
u32 stream_index 
)

Definition at line 502 of file nat_ipfix_logging.c.

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

◆ nat_template_rewrite_max_frags_ip6()

u8* nat_template_rewrite_max_frags_ip6 ( flow_report_main_t frm,
flow_report_t fr,
ip4_address_t collector_address,
ip4_address_t src_address,
u16  collector_port,
ipfix_report_element_t elts,
u32  n_elts,
u32 stream_index 
)

Definition at line 516 of file nat_ipfix_logging.c.

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

◆ nat_template_rewrite_max_sessions()

u8* nat_template_rewrite_max_sessions ( flow_report_main_t frm,
flow_report_t fr,
ip4_address_t collector_address,
ip4_address_t src_address,
u16  collector_port,
ipfix_report_element_t elts,
u32  n_elts,
u32 stream_index 
)

Definition at line 474 of file nat_ipfix_logging.c.

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

◆ nat_template_rewrite_nat64_bib()

u8* nat_template_rewrite_nat64_bib ( flow_report_main_t frm,
flow_report_t fr,
ip4_address_t collector_address,
ip4_address_t src_address,
u16  collector_port,
ipfix_report_element_t elts,
u32  n_elts,
u32 stream_index 
)

Definition at line 530 of file nat_ipfix_logging.c.

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

◆ nat_template_rewrite_nat64_session()

u8* nat_template_rewrite_nat64_session ( flow_report_main_t frm,
flow_report_t fr,
ip4_address_t collector_address,
ip4_address_t src_address,
u16  collector_port,
ipfix_report_element_t elts,
u32  n_elts,
u32 stream_index 
)

Definition at line 543 of file nat_ipfix_logging.c.

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

◆ snat_ipfix_flush()

void snat_ipfix_flush ( u32  thread_index)

Definition at line 1504 of file nat_ipfix_logging.c.

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

◆ snat_ipfix_flush_from_main()

void snat_ipfix_flush_from_main ( void  )

Definition at line 1523 of file nat_ipfix_logging.c.

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

◆ snat_ipfix_header_create()

static void snat_ipfix_header_create ( flow_report_main_t frm,
vlib_buffer_t b0,
u32 offset 
)
inlinestatic

Definition at line 556 of file nat_ipfix_logging.c.

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

◆ snat_ipfix_logging_addr_exhausted()

static void snat_ipfix_logging_addr_exhausted ( u32  thread_index,
u32  pool_id,
int  do_flush 
)
static

Definition at line 752 of file nat_ipfix_logging.c.

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

◆ snat_ipfix_logging_addresses_exhausted()

void snat_ipfix_logging_addresses_exhausted ( u32  thread_index,
u32  pool_id 
)

Generate NAT addresses exhausted event.

Parameters
thread_indexthread index
pool_idNAT pool ID

Definition at line 1614 of file nat_ipfix_logging.c.

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

◆ snat_ipfix_logging_enable_disable()

int snat_ipfix_logging_enable_disable ( int  enable,
u32  domain_id,
u16  src_port 
)

Enable/disable NAT plugin IPFIX logging.

Parameters
enable1 if enable, 0 if disable
domain_idobservation domain ID
src_portsource port number
Returns
0 if success

Definition at line 1805 of file nat_ipfix_logging.c.

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

◆ snat_ipfix_logging_init()

void snat_ipfix_logging_init ( vlib_main_t vm)

Initialize NAT plugin IPFIX logging.

Parameters
vmvlib main

Definition at line 1930 of file nat_ipfix_logging.c.

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

◆ snat_ipfix_logging_max_entries_per_user()

void snat_ipfix_logging_max_entries_per_user ( u32  thread_index,
u32  limit,
u32  src_ip 
)

Generate maximum entries per user exceeded event.

Parameters
thread_indexthread index
limitmaximum NAT entries that can be created per user
src_ipsource IPv4 address

Definition at line 1630 of file nat_ipfix_logging.c.

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

◆ snat_ipfix_logging_max_entries_per_usr()

static void snat_ipfix_logging_max_entries_per_usr ( u32  thread_index,
u32  limit,
u32  src_ip,
int  do_flush 
)
static

Definition at line 836 of file nat_ipfix_logging.c.

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

◆ snat_ipfix_logging_nat44_ses()

static void snat_ipfix_logging_nat44_ses ( u32  thread_index,
u8  nat_event,
u32  src_ip,
u32  nat_src_ip,
snat_protocol_t  snat_proto,
u16  src_port,
u16  nat_src_port,
u32  vrf_id,
int  do_flush 
)
static

Definition at line 648 of file nat_ipfix_logging.c.

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

◆ snat_ipfix_logging_nat44_ses_create()

void snat_ipfix_logging_nat44_ses_create ( u32  thread_index,
u32  src_ip,
u32  nat_src_ip,
snat_protocol_t  snat_proto,
u16  src_port,
u16  nat_src_port,
u32  vrf_id 
)

Generate NAT44 session create event.

Parameters
thread_indexthread index
src_ipsource IPv4 address
nat_src_iptransaltes source IPv4 address
snat_protoNAT transport protocol
src_portsource port
nat_src_porttranslated source port
vrf_idVRF ID

Definition at line 1567 of file nat_ipfix_logging.c.

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

◆ snat_ipfix_logging_nat44_ses_delete()

void snat_ipfix_logging_nat44_ses_delete ( u32  thread_index,
u32  src_ip,
u32  nat_src_ip,
snat_protocol_t  snat_proto,
u16  src_port,
u16  nat_src_port,
u32  vrf_id 
)

Generate NAT44 session delete event.

Parameters
thread_indexthread index
src_ipsource IPv4 address
nat_src_iptransaltes source IPv4 address
snat_protoNAT transport protocol
src_portsource port
nat_src_porttranslated source port
vrf_idVRF ID

Definition at line 1593 of file nat_ipfix_logging.c.

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

◆ snat_ipfix_send()

static void snat_ipfix_send ( flow_report_main_t frm,
vlib_frame_t f,
vlib_buffer_t b0,
u16  template_id 
)
inlinestatic

Definition at line 608 of file nat_ipfix_logging.c.

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

◆ snat_template_rewrite()

static u8* snat_template_rewrite ( flow_report_main_t frm,
flow_report_t fr,
ip4_address_t collector_address,
ip4_address_t src_address,
u16  collector_port,
nat_event_t  event,
quota_exceed_event_t  quota_event 
)
inlinestatic

Create an IPFIX template packet rewrite string.

Parameters
frmflow report main
frflow report
collector_addresscollector address
src_addresssource address
collector_portcollector
eventNAT event ID
quota_eventNAT quota exceeded event ID
Returns
template packet

Definition at line 143 of file nat_ipfix_logging.c.

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

◆ snat_template_rewrite_addr_exhausted()

u8* snat_template_rewrite_addr_exhausted ( flow_report_main_t frm,
flow_report_t fr,
ip4_address_t collector_address,
ip4_address_t src_address,
u16  collector_port,
ipfix_report_element_t elts,
u32  n_elts,
u32 stream_index 
)

Definition at line 434 of file nat_ipfix_logging.c.

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

◆ snat_template_rewrite_max_entries_per_usr()

u8* snat_template_rewrite_max_entries_per_usr ( flow_report_main_t frm,
flow_report_t fr,
ip4_address_t collector_address,
ip4_address_t src_address,
u16  collector_port,
ipfix_report_element_t elts,
u32  n_elts,
u32 stream_index 
)

Definition at line 460 of file nat_ipfix_logging.c.

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

◆ snat_template_rewrite_nat44_session()

u8* snat_template_rewrite_nat44_session ( flow_report_main_t frm,
flow_report_t fr,
ip4_address_t collector_address,
ip4_address_t src_address,
u16  collector_port,
ipfix_report_element_t elts,
u32  n_elts,
u32 stream_index 
)

Definition at line 447 of file nat_ipfix_logging.c.

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

Variable Documentation

◆ snat_ipfix_flush_node

vlib_node_registration_t snat_ipfix_flush_node
Initial value:
= {
.function = ipfix_flush_process,
.name = "snat-ipfix-flush",
.state = VLIB_NODE_STATE_INTERRUPT,
}
static uword ipfix_flush_process(vlib_main_t *vm, vlib_node_runtime_t *rt, vlib_frame_t *f)

(constructor) VLIB_REGISTER_NODE (snat_ipfix_flush_node)

Definition at line 24 of file nat_ipfix_logging.c.

◆ snat_ipfix_logging_main

snat_ipfix_logging_main_t snat_ipfix_logging_main

Definition at line 25 of file nat_ipfix_logging.c.