FD.io VPP
v18.07.1-19-g511ce25
Vector Packet Processing
|
NAT plugin virtual fragmentation reassembly. More...
Go to the source code of this file.
Data Structures | |
struct | nat_reass_ip4_key_t |
struct | nat_reass_ip6_key_t |
struct | nat_reass_main_t |
Macros | |
#define | NAT_REASS_TIMEOUT_DEFAULT 2 |
#define | NAT_MAX_REASS_DEAFULT 1024 |
#define | NAT_MAX_FRAG_DEFAULT 5 |
#define | NAT_REASS_HT_LOAD_FACTOR (0.75) |
#define | NAT_REASS_FLAG_MAX_FRAG_DROP 1 |
Typedefs | |
typedef int(* | nat_ip4_reass_walk_fn_t) (nat_reass_ip4_t *reass, void *ctx) |
Call back function when walking IPv4 reassemblies, non-zero return value stop walk. More... | |
typedef int(* | nat_ip6_reass_walk_fn_t) (nat_reass_ip6_t *reass, void *ctx) |
Call back function when walking IPv6 reassemblies, non-zero return value stop walk. More... | |
Functions | |
typedef | CLIB_PACKED (struct{nat_reass_ip4_key_t key;u32 lru_list_index;u32 sess_index;u32 thread_index;f64 last_heard;u32 frags_per_reass_list_head_index;u8 frag_n;u8 flags;}) nat_reass_ip4_t |
typedef | CLIB_PACKED (struct{nat_reass_ip6_key_t key;u32 lru_list_index;u32 sess_index;f64 last_heard;u32 frags_per_reass_list_head_index;u8 frag_n;u8 flags;}) nat_reass_ip6_t |
int | nat_reass_set (u32 timeout, u16 max_reass, u8 max_frag, u8 drop_frag, u8 is_ip6) |
Set NAT virtual fragmentation reassembly configuration. More... | |
u32 | nat_reass_get_timeout (u8 is_ip6) |
Get reassembly timeout. More... | |
u16 | nat_reass_get_max_reass (u8 is_ip6) |
Get maximum number of concurrent reassemblies. More... | |
u8 | nat_reass_get_max_frag (u8 is_ip6) |
Get maximum number of fragmets per reassembly. More... | |
u8 | nat_reass_is_drop_frag (u8 is_ip6) |
Get status of virtual fragmentation reassembly. More... | |
clib_error_t * | nat_reass_init (vlib_main_t *vm) |
Initialize NAT virtual fragmentation reassembly. More... | |
nat_reass_ip4_t * | nat_ip4_reass_find (ip4_address_t src, ip4_address_t dst, u16 frag_id, u8 proto) |
Find reassembly. More... | |
nat_reass_ip4_t * | nat_ip4_reass_find_or_create (ip4_address_t src, ip4_address_t dst, u16 frag_id, u8 proto, u8 reset_timeout, u32 **bi_to_drop) |
Find or create reassembly. More... | |
int | nat_ip4_reass_add_fragment (nat_reass_ip4_t *reass, u32 bi, u32 **bi_to_drop) |
Cache fragment. More... | |
void | nat_ip4_reass_get_frags (nat_reass_ip4_t *reass, u32 **bi) |
Get cached fragments. More... | |
void | nat_ip4_reass_walk (nat_ip4_reass_walk_fn_t fn, void *ctx) |
Walk IPv4 reassemblies. More... | |
nat_reass_ip6_t * | nat_ip6_reass_find_or_create (ip6_address_t src, ip6_address_t dst, u32 frag_id, u8 proto, u8 reset_timeout, u32 **bi_to_drop) |
Find or create reassembly. More... | |
int | nat_ip6_reass_add_fragment (nat_reass_ip6_t *reass, u32 bi, u32 **bi_to_drop) |
Cache fragment. More... | |
void | nat_ip6_reass_get_frags (nat_reass_ip6_t *reass, u32 **bi) |
Get cached fragments. More... | |
void | nat_ip6_reass_walk (nat_ip6_reass_walk_fn_t fn, void *ctx) |
Walk IPv6 reassemblies. More... | |
NAT plugin virtual fragmentation reassembly.
Definition in file nat_reass.h.
#define NAT_MAX_FRAG_DEFAULT 5 |
Definition at line 30 of file nat_reass.h.
#define NAT_MAX_REASS_DEAFULT 1024 |
Definition at line 29 of file nat_reass.h.
#define NAT_REASS_FLAG_MAX_FRAG_DROP 1 |
Definition at line 33 of file nat_reass.h.
#define NAT_REASS_HT_LOAD_FACTOR (0.75) |
Definition at line 31 of file nat_reass.h.
#define NAT_REASS_TIMEOUT_DEFAULT 2 |
Definition at line 28 of file nat_reass.h.
typedef int(* nat_ip4_reass_walk_fn_t) (nat_reass_ip4_t *reass, void *ctx) |
Call back function when walking IPv4 reassemblies, non-zero return value stop walk.
Definition at line 248 of file nat_reass.h.
typedef int(* nat_ip6_reass_walk_fn_t) (nat_reass_ip6_t *reass, void *ctx) |
Call back function when walking IPv6 reassemblies, non-zero return value stop walk.
Definition at line 299 of file nat_reass.h.
typedef CLIB_PACKED | ( | struct{nat_reass_ip4_key_t key;u32 lru_list_index;u32 sess_index;u32 thread_index;f64 last_heard;u32 frags_per_reass_list_head_index;u8 frag_n;u8 flags;} | ) |
typedef CLIB_PACKED | ( | struct{nat_reass_ip6_key_t key;u32 lru_list_index;u32 sess_index;f64 last_heard;u32 frags_per_reass_list_head_index;u8 frag_n;u8 flags;} | ) |
Cache fragment.
reass | Reassembly data. |
bi | Buffer index. |
bi_to_drop | Fragments to drop. |
Definition at line 336 of file nat_reass.c.
nat_reass_ip4_t* nat_ip4_reass_find | ( | ip4_address_t | src, |
ip4_address_t | dst, | ||
u16 | frag_id, | ||
u8 | proto | ||
) |
Find reassembly.
src | Source IPv4 address. |
dst | Destination IPv4 address. |
frag_id | Fragment ID. |
proto | L4 protocol. |
Definition at line 199 of file nat_reass.c.
nat_reass_ip4_t* nat_ip4_reass_find_or_create | ( | ip4_address_t | src, |
ip4_address_t | dst, | ||
u16 | frag_id, | ||
u8 | proto, | ||
u8 | reset_timeout, | ||
u32 ** | bi_to_drop | ||
) |
Find or create reassembly.
src | Source IPv4 address. |
dst | Destination IPv4 address. |
frag_id | Fragment ID. |
proto | L4 protocol. |
reset_timeout | If non-zero value reset timeout. |
bi_to_drop | Fragments to drop. |
Definition at line 220 of file nat_reass.c.
void nat_ip4_reass_get_frags | ( | nat_reass_ip4_t * | reass, |
u32 ** | bi | ||
) |
Get cached fragments.
reass | Reassembly data. |
bi | Vector of buffer indexes. |
Definition at line 368 of file nat_reass.c.
void nat_ip4_reass_walk | ( | nat_ip4_reass_walk_fn_t | fn, |
void * | ctx | ||
) |
Walk IPv4 reassemblies.
fn | The function to invoke on each entry visited. |
ctx | A context passed in the visit function. |
Definition at line 380 of file nat_reass.c.
Cache fragment.
reass | Reassembly data. |
bi | Buffer index. |
bi_to_drop | Fragments to drop. |
Definition at line 542 of file nat_reass.c.
nat_reass_ip6_t* nat_ip6_reass_find_or_create | ( | ip6_address_t | src, |
ip6_address_t | dst, | ||
u32 | frag_id, | ||
u8 | proto, | ||
u8 | reset_timeout, | ||
u32 ** | bi_to_drop | ||
) |
Find or create reassembly.
src | Source IPv6 address. |
dst | Destination IPv6 address. |
frag_id | Fragment ID. |
proto | L4 protocol. |
reset_timeout | If non-zero value reset timeout. |
bi_to_drop | Fragments to drop. |
Definition at line 424 of file nat_reass.c.
void nat_ip6_reass_get_frags | ( | nat_reass_ip6_t * | reass, |
u32 ** | bi | ||
) |
Get cached fragments.
reass | Reassembly data. |
bi | Vector of buffer indexes. |
Definition at line 574 of file nat_reass.c.
void nat_ip6_reass_walk | ( | nat_ip6_reass_walk_fn_t | fn, |
void * | ctx | ||
) |
Walk IPv6 reassemblies.
fn | The function to invoke on each entry visited. |
ctx | A context passed in the visit function. |
Definition at line 586 of file nat_reass.c.
Get maximum number of fragmets per reassembly.
is_ip6 | 1 if IPv6, 0 if IPv4. |
Definition at line 157 of file nat_reass.c.
Get maximum number of concurrent reassemblies.
is_ip6 | 1 if IPv6, 0 if IPv4. |
Definition at line 146 of file nat_reass.c.
Get reassembly timeout.
is_ip6 | 1 if IPv6, 0 if IPv4. |
Definition at line 135 of file nat_reass.c.
clib_error_t* nat_reass_init | ( | vlib_main_t * | vm | ) |
Initialize NAT virtual fragmentation reassembly.
vm | vlib main. |
Definition at line 605 of file nat_reass.c.
Get status of virtual fragmentation reassembly.
is_ip6 | 1 if IPv6, 0 if IPv4. |
Definition at line 168 of file nat_reass.c.
Set NAT virtual fragmentation reassembly configuration.
timeout | Reassembly timeout. |
max_reass | Maximum number of concurrent reassemblies. |
max_frag | Maximum number of fragmets per reassembly |
drop_frag | If zero translate fragments, otherwise drop fragments. |
is_ip6 | 1 if IPv6, 0 if IPv4. |
Definition at line 85 of file nat_reass.c.