FD.io VPP
v20.09-64-g4f7b92f0a
Vector Packet Processing
|
NAT plugin global declarations. More...
Go to the source code of this file.
Functions | |
VNET_FEATURE_INIT (nat_pre_in2out, static) | |
VNET_FEATURE_INIT (nat_pre_out2in, static) | |
VNET_FEATURE_INIT (snat_in2out_worker_handoff, static) | |
VNET_FEATURE_INIT (snat_out2in_worker_handoff, static) | |
VNET_FEATURE_INIT (ip4_snat_in2out, static) | |
VNET_FEATURE_INIT (ip4_snat_out2in, static) | |
VNET_FEATURE_INIT (ip4_nat_classify, static) | |
VNET_FEATURE_INIT (ip4_nat44_ed_in2out, static) | |
VNET_FEATURE_INIT (ip4_nat44_ed_out2in, static) | |
VNET_FEATURE_INIT (ip4_nat44_ed_classify, static) | |
VNET_FEATURE_INIT (ip4_nat_handoff_classify, static) | |
VNET_FEATURE_INIT (ip4_snat_in2out_fast, static) | |
VNET_FEATURE_INIT (ip4_snat_out2in_fast, static) | |
VNET_FEATURE_INIT (ip4_snat_hairpin_dst, static) | |
VNET_FEATURE_INIT (ip4_nat44_ed_hairpin_dst, static) | |
VNET_FEATURE_INIT (ip4_snat_in2out_output, static) | |
VNET_FEATURE_INIT (ip4_snat_in2out_output_worker_handoff, static) | |
VNET_FEATURE_INIT (ip4_snat_hairpin_src, static) | |
VNET_FEATURE_INIT (nat_pre_in2out_output, static) | |
VNET_FEATURE_INIT (ip4_nat44_ed_in2out_output, static) | |
VNET_FEATURE_INIT (ip4_nat44_ed_hairpin_src, static) | |
VNET_FEATURE_INIT (ip4_nat_hairpinning, static) | |
VNET_FEATURE_INIT (ip4_nat44_ed_hairpinning, static) | |
VLIB_PLUGIN_REGISTER () | |
void | nat_free_session_data (snat_main_t *sm, snat_session_t *s, u32 thread_index, u8 is_ha) |
Free NAT44 session data (lookup keys, external address port) More... | |
void | nat44_free_session_data (snat_main_t *sm, snat_session_t *s, u32 thread_index, u8 is_ha) |
Free NAT44 ED session data (lookup keys, external address port) More... | |
snat_user_t * | nat_user_get_or_create (snat_main_t *sm, ip4_address_t *addr, u32 fib_index, u32 thread_index) |
Find or create NAT user. More... | |
snat_session_t * | nat_session_alloc_or_recycle (snat_main_t *sm, snat_user_t *u, u32 thread_index, f64 now) |
Allocate new NAT session or recycle last used. More... | |
void | snat_add_del_addr_to_fib (ip4_address_t *addr, u8 p_len, u32 sw_if_index, int is_add) |
Add/del NAT address to FIB. More... | |
int | snat_add_address (snat_main_t *sm, ip4_address_t *addr, u32 vrf_id, u8 twice_nat) |
Add external address to NAT44 pool. More... | |
static int | is_snat_address_used_in_static_mapping (snat_main_t *sm, ip4_address_t addr) |
static void | snat_add_static_mapping_when_resolved (snat_main_t *sm, ip4_address_t l_addr, u16 l_port, u32 sw_if_index, u16 e_port, u32 vrf_id, nat_protocol_t proto, int addr_only, int is_add, u8 *tag, int twice_nat, int out2in_only, int identity_nat, ip4_address_t pool_addr, int exact) |
static u32 | get_thread_idx_by_port (u16 e_port) |
void | snat_static_mapping_del_sessions (snat_main_t *sm, snat_main_per_thread_data_t *tsm, snat_user_key_t u_key, int addr_only, ip4_address_t e_addr, u16 e_port) |
void | snat_ed_static_mapping_del_sessions (snat_main_t *sm, snat_main_per_thread_data_t *tsm, ip4_address_t l_addr, u16 l_port, u8 protocol, u32 fib_index, int addr_only, ip4_address_t e_addr, u16 e_port) |
int | snat_add_static_mapping (ip4_address_t l_addr, ip4_address_t e_addr, u16 l_port, u16 e_port, u32 vrf_id, int addr_only, u32 sw_if_index, nat_protocol_t proto, int is_add, twice_nat_type_t twice_nat, u8 out2in_only, u8 *tag, u8 identity_nat, ip4_address_t pool_addr, int exact) |
Add/delete NAT44 static mapping. More... | |
int | nat44_add_del_lb_static_mapping (ip4_address_t e_addr, u16 e_port, nat_protocol_t proto, nat44_lb_addr_port_t *locals, u8 is_add, twice_nat_type_t twice_nat, u8 out2in_only, u8 *tag, u32 affinity) |
Add/delete static mapping with load-balancing (multiple backends) More... | |
int | nat44_lb_static_mapping_add_del_local (ip4_address_t e_addr, u16 e_port, ip4_address_t l_addr, u16 l_port, nat_protocol_t proto, u32 vrf_id, u8 probability, u8 is_add) |
int | snat_del_address (snat_main_t *sm, ip4_address_t addr, u8 delete_sm, u8 twice_nat) |
Delete external address from NAT44 pool. More... | |
static void | nat_validate_counters (snat_main_t *sm, u32 sw_if_index) |
void | expire_per_vrf_sessions (u32 fib_index) |
void | update_per_vrf_sessions_vec (u32 fib_index, int is_del) |
int | snat_interface_add_del (u32 sw_if_index, u8 is_inside, int is_del) |
Enable/disable NAT44 feature on the interface. More... | |
int | snat_interface_add_del_output_feature (u32 sw_if_index, u8 is_inside, int is_del) |
Enable/disable NAT44 output feature on the interface (postrouting NAT) More... | |
int | snat_set_workers (uword *bitmap) |
Set NAT plugin workers. More... | |
static void | snat_update_outside_fib (u32 sw_if_index, u32 new_fib_index, u32 old_fib_index) |
static void | snat_ip4_table_bind (ip4_main_t *im, uword opaque, u32 sw_if_index, u32 new_fib_index, u32 old_fib_index) |
static void | snat_ip4_add_del_interface_address_cb (ip4_main_t *im, uword opaque, u32 sw_if_index, ip4_address_t *address, u32 address_length, u32 if_address_index, u32 is_delete) |
static void | nat_ip4_add_del_addr_only_sm_cb (ip4_main_t *im, uword opaque, u32 sw_if_index, ip4_address_t *address, u32 address_length, u32 if_address_index, u32 is_delete) |
static int | nat_alloc_addr_and_port_default (snat_address_t *addresses, u32 fib_index, u32 thread_index, nat_protocol_t proto, ip4_address_t *addr, u16 *port, u16 port_per_thread, u32 snat_thread_index) |
void | test_key_calc_split () |
static clib_error_t * | nat_ip_table_add_del (vnet_main_t *vnm, u32 table_id, u32 is_add) |
VNET_IP_TABLE_ADD_DEL_FUNCTION (nat_ip_table_add_del) | |
static clib_error_t * | snat_init (vlib_main_t *vm) |
void | snat_free_outside_address_and_port (snat_address_t *addresses, u32 thread_index, ip4_address_t *addr, u16 port, nat_protocol_t protocol) |
Free outside address and port pair. More... | |
static int | nat_set_outside_address_and_port (snat_address_t *addresses, u32 thread_index, ip4_address_t addr, u16 port, nat_protocol_t protocol) |
int | snat_static_mapping_match (snat_main_t *sm, ip4_address_t match_addr, u16 match_port, u32 match_fib_index, nat_protocol_t match_protocol, ip4_address_t *mapping_addr, u16 *mapping_port, u32 *mapping_fib_index, u8 by_external, u8 *is_addr_only, twice_nat_type_t *twice_nat, lb_nat_type_t *lb, ip4_address_t *ext_host_addr, u8 *is_identity_nat, snat_static_mapping_t **out) |
Match NAT44 static mapping. More... | |
int | snat_alloc_outside_address_and_port (snat_address_t *addresses, u32 fib_index, u32 thread_index, nat_protocol_t proto, ip4_address_t *addr, u16 *port, u16 port_per_thread, u32 snat_thread_index) |
Alloc outside address and port. More... | |
static int | nat_alloc_addr_and_port_mape (snat_address_t *addresses, u32 fib_index, u32 thread_index, nat_protocol_t proto, ip4_address_t *addr, u16 *port, u16 port_per_thread, u32 snat_thread_index) |
static int | nat_alloc_addr_and_port_range (snat_address_t *addresses, u32 fib_index, u32 thread_index, nat_protocol_t proto, ip4_address_t *addr, u16 *port, u16 port_per_thread, u32 snat_thread_index) |
void | nat44_add_del_address_dpo (ip4_address_t addr, u8 is_add) |
Add/delete external address to FIB DPO (out2in DPO mode) More... | |
u8 * | format_session_kvp (u8 *s, va_list *args) |
u8 * | format_static_mapping_kvp (u8 *s, va_list *args) |
u8 * | format_user_kvp (u8 *s, va_list *args) |
u8 * | format_ed_session_kvp (u8 *s, va_list *args) |
static u32 | snat_get_worker_in2out_cb (ip4_header_t *ip0, u32 rx_fib_index0, u8 is_output) |
static u32 | snat_get_worker_out2in_cb (vlib_buffer_t *b, ip4_header_t *ip0, u32 rx_fib_index0, u8 is_output) |
static u32 | nat44_ed_get_worker_in2out_cb (ip4_header_t *ip, u32 rx_fib_index, u8 is_output) |
static u32 | nat44_ed_get_worker_out2in_cb (vlib_buffer_t *b, ip4_header_t *ip, u32 rx_fib_index, u8 is_output) |
void | nat_ha_sadd_cb (ip4_address_t *in_addr, u16 in_port, ip4_address_t *out_addr, u16 out_port, ip4_address_t *eh_addr, u16 eh_port, ip4_address_t *ehn_addr, u16 ehn_port, u8 proto, u32 fib_index, u16 flags, u32 thread_index) |
void | nat_ha_sdel_cb (ip4_address_t *out_addr, u16 out_port, ip4_address_t *eh_addr, u16 eh_port, u8 proto, u32 fib_index, u32 ti) |
void | nat_ha_sref_cb (ip4_address_t *out_addr, u16 out_port, ip4_address_t *eh_addr, u16 eh_port, u8 proto, u32 fib_index, u32 total_pkts, u64 total_bytes, u32 thread_index) |
void | nat_ha_sadd_ed_cb (ip4_address_t *in_addr, u16 in_port, ip4_address_t *out_addr, u16 out_port, ip4_address_t *eh_addr, u16 eh_port, ip4_address_t *ehn_addr, u16 ehn_port, u8 proto, u32 fib_index, u16 flags, u32 thread_index) |
void | nat_ha_sdel_ed_cb (ip4_address_t *out_addr, u16 out_port, ip4_address_t *eh_addr, u16 eh_port, u8 proto, u32 fib_index, u32 ti) |
void | nat_ha_sref_ed_cb (ip4_address_t *out_addr, u16 out_port, ip4_address_t *eh_addr, u16 eh_port, u8 proto, u32 fib_index, u32 total_pkts, u64 total_bytes, u32 thread_index) |
static u32 | nat_calc_bihash_buckets (u32 n_elts) |
static u32 | nat_calc_bihash_memory (u32 n_buckets, uword kv_size) |
u32 | nat44_get_max_session_limit () |
int | nat44_set_session_limit (u32 session_limit, u32 vrf_id) |
Set NAT44 session limit (session limit, vrf id) More... | |
int | nat44_update_session_limit (u32 session_limit, u32 vrf_id) |
Update NAT44 session limit flushing all data (session limit, vrf id) More... | |
void | nat44_db_init (snat_main_per_thread_data_t *tsm) |
Initialize NAT44 data. More... | |
void | nat44_db_free (snat_main_per_thread_data_t *tsm) |
Free NAT44 data. More... | |
void | nat44_sessions_clear () |
static clib_error_t * | snat_config (vlib_main_t *vm, unformat_input_t *input) |
int | snat_add_interface_address (snat_main_t *sm, u32 sw_if_index, int is_del, u8 twice_nat) |
Add/delete NAT44 pool address from specific interface. More... | |
int | nat44_del_session (snat_main_t *sm, ip4_address_t *addr, u16 port, nat_protocol_t proto, u32 vrf_id, int is_in) |
Delete NAT44 session. More... | |
int | nat44_del_ed_session (snat_main_t *sm, ip4_address_t *addr, u16 port, ip4_address_t *eh_addr, u16 eh_port, u8 proto, u32 vrf_id, int is_in) |
Delete NAT44 endpoint-dependent session. More... | |
void | nat_set_alloc_addr_and_port_mape (u16 psid, u16 psid_offset, u16 psid_length) |
Set address and port assignment algorithm for MAP-E CE. More... | |
void | nat_set_alloc_addr_and_port_range (u16 start_port, u16 end_port) |
Set address and port assignment algorithm for port range. More... | |
void | nat_set_alloc_addr_and_port_default (void) |
Set address and port assignment algorithm to default/standard. More... | |
VLIB_NODE_FN() | nat_default_node (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame) |
Variables | |
snat_main_t | snat_main |
fib_source_t | nat_fib_src_hi |
fib_source_t | nat_fib_src_low |
vlib_node_registration_t | nat_default_node |
(constructor) VLIB_REGISTER_NODE (nat_default_node) More... | |
NAT plugin global declarations.
Definition in file nat.c.
void expire_per_vrf_sessions | ( | u32 | fib_index | ) |
|
static |
void nat44_add_del_address_dpo | ( | ip4_address_t | addr, |
u8 | is_add | ||
) |
int nat44_add_del_lb_static_mapping | ( | ip4_address_t | e_addr, |
u16 | e_port, | ||
nat_protocol_t | proto, | ||
nat44_lb_addr_port_t * | locals, | ||
u8 | is_add, | ||
twice_nat_type_t | twice_nat, | ||
u8 | out2in_only, | ||
u8 * | tag, | ||
u32 | affinity | ||
) |
Add/delete static mapping with load-balancing (multiple backends)
e_addr | external IPv4 address |
e_port | external port number |
proto | L4 protocol |
locals | list of local backends |
is_add | 1 = add, 0 = delete |
twice_nat | twice-nat mode |
out2in_only | if 1 rule match only out2in direction |
tag | opaque string tag |
affinity | 0 = disabled, otherwise client IP affinity sticky time |
Definition at line 1281 of file nat.c.
void nat44_db_free | ( | snat_main_per_thread_data_t * | tsm | ) |
void nat44_db_init | ( | snat_main_per_thread_data_t * | tsm | ) |
int nat44_del_ed_session | ( | snat_main_t * | sm, |
ip4_address_t * | addr, | ||
u16 | port, | ||
ip4_address_t * | eh_addr, | ||
u16 | eh_port, | ||
u8 | proto, | ||
u32 | vrf_id, | ||
int | is_in | ||
) |
Delete NAT44 endpoint-dependent session.
sm | snat global configuration data |
addr | IPv4 address |
port | L4 port number |
proto | L4 protocol |
vrf_id | VRF ID |
is_in | 1 = inside network address and port pair, 0 = outside |
Definition at line 4582 of file nat.c.
int nat44_del_session | ( | snat_main_t * | sm, |
ip4_address_t * | addr, | ||
u16 | port, | ||
nat_protocol_t | proto, | ||
u32 | vrf_id, | ||
int | is_in | ||
) |
Delete NAT44 session.
addr | IPv4 address |
port | L4 port number |
proto | L4 protocol |
vrf_id | VRF ID |
is_in | 1 = inside network address and port pair, 0 = outside |
Definition at line 4544 of file nat.c.
|
static |
|
static |
void nat44_free_session_data | ( | snat_main_t * | sm, |
snat_session_t * | s, | ||
u32 | thread_index, | ||
u8 | is_ha | ||
) |
u32 nat44_get_max_session_limit | ( | ) |
int nat44_lb_static_mapping_add_del_local | ( | ip4_address_t | e_addr, |
u16 | e_port, | ||
ip4_address_t | l_addr, | ||
u16 | l_port, | ||
nat_protocol_t | proto, | ||
u32 | vrf_id, | ||
u8 | probability, | ||
u8 | is_add | ||
) |
void nat44_sessions_clear | ( | ) |
|
static |
|
static |
|
static |
VLIB_NODE_FN() nat_default_node | ( | vlib_main_t * | vm, |
vlib_node_runtime_t * | node, | ||
vlib_frame_t * | frame | ||
) |
void nat_free_session_data | ( | snat_main_t * | sm, |
snat_session_t * | s, | ||
u32 | thread_index, | ||
u8 | is_ha | ||
) |
void nat_ha_sadd_cb | ( | ip4_address_t * | in_addr, |
u16 | in_port, | ||
ip4_address_t * | out_addr, | ||
u16 | out_port, | ||
ip4_address_t * | eh_addr, | ||
u16 | eh_port, | ||
ip4_address_t * | ehn_addr, | ||
u16 | ehn_port, | ||
u8 | proto, | ||
u32 | fib_index, | ||
u16 | flags, | ||
u32 | thread_index | ||
) |
void nat_ha_sadd_ed_cb | ( | ip4_address_t * | in_addr, |
u16 | in_port, | ||
ip4_address_t * | out_addr, | ||
u16 | out_port, | ||
ip4_address_t * | eh_addr, | ||
u16 | eh_port, | ||
ip4_address_t * | ehn_addr, | ||
u16 | ehn_port, | ||
u8 | proto, | ||
u32 | fib_index, | ||
u16 | flags, | ||
u32 | thread_index | ||
) |
void nat_ha_sdel_cb | ( | ip4_address_t * | out_addr, |
u16 | out_port, | ||
ip4_address_t * | eh_addr, | ||
u16 | eh_port, | ||
u8 | proto, | ||
u32 | fib_index, | ||
u32 | ti | ||
) |
void nat_ha_sdel_ed_cb | ( | ip4_address_t * | out_addr, |
u16 | out_port, | ||
ip4_address_t * | eh_addr, | ||
u16 | eh_port, | ||
u8 | proto, | ||
u32 | fib_index, | ||
u32 | ti | ||
) |
void nat_ha_sref_cb | ( | ip4_address_t * | out_addr, |
u16 | out_port, | ||
ip4_address_t * | eh_addr, | ||
u16 | eh_port, | ||
u8 | proto, | ||
u32 | fib_index, | ||
u32 | total_pkts, | ||
u64 | total_bytes, | ||
u32 | thread_index | ||
) |
void nat_ha_sref_ed_cb | ( | ip4_address_t * | out_addr, |
u16 | out_port, | ||
ip4_address_t * | eh_addr, | ||
u16 | eh_port, | ||
u8 | proto, | ||
u32 | fib_index, | ||
u32 | total_pkts, | ||
u64 | total_bytes, | ||
u32 | thread_index | ||
) |
|
static |
|
static |
snat_session_t* nat_session_alloc_or_recycle | ( | snat_main_t * | sm, |
snat_user_t * | u, | ||
u32 | thread_index, | ||
f64 | now | ||
) |
Allocate new NAT session or recycle last used.
sm | snat global configuration data |
u | NAT user |
thread_index | thread index |
now | time now |
Definition at line 505 of file nat.c.
void nat_set_alloc_addr_and_port_default | ( | void | ) |
|
static |
snat_user_t* nat_user_get_or_create | ( | snat_main_t * | sm, |
ip4_address_t * | addr, | ||
u32 | fib_index, | ||
u32 | thread_index | ||
) |
Find or create NAT user.
sm | snat global configuration data |
addr | IPv4 address |
fib_index | FIB table index |
thread_index | thread index |
Definition at line 446 of file nat.c.
|
static |
int snat_add_address | ( | snat_main_t * | sm, |
ip4_address_t * | addr, | ||
u32 | vrf_id, | ||
u8 | twice_nat | ||
) |
Add external address to NAT44 pool.
sm | snat global configuration data |
addr | IPv4 address |
vrf_id | VRF id of tenant, ~0 means independent of VRF |
twice_nat | 1 if twice NAT address |
Definition at line 608 of file nat.c.
void snat_add_del_addr_to_fib | ( | ip4_address_t * | addr, |
u8 | p_len, | ||
u32 | sw_if_index, | ||
int | is_add | ||
) |
Add/del NAT address to FIB.
Add the external NAT address to the FIB as receive entries. This ensures that VPP will reply to ARP for this address and we don't need to enable proxy ARP on the outside interface.
addr | IPv4 address |
plen | address prefix length |
sw_if_index | software index of the outside interface |
is_add | 0 = delete, 1 = add. |
Definition at line 580 of file nat.c.
int snat_add_interface_address | ( | snat_main_t * | sm, |
u32 | sw_if_index, | ||
int | is_del, | ||
u8 | twice_nat | ||
) |
Add/delete NAT44 pool address from specific interface.
sw_if_index | software index of the interface |
is_del | 1 = delete, 0 = add |
twice_nat | 1 = twice NAT address for external hosts |
Definition at line 4476 of file nat.c.
int snat_add_static_mapping | ( | ip4_address_t | l_addr, |
ip4_address_t | e_addr, | ||
u16 | l_port, | ||
u16 | e_port, | ||
u32 | vrf_id, | ||
int | addr_only, | ||
u32 | sw_if_index, | ||
nat_protocol_t | proto, | ||
int | is_add, | ||
twice_nat_type_t | twice_nat, | ||
u8 | out2in_only, | ||
u8 * | tag, | ||
u8 | identity_nat, | ||
ip4_address_t | pool_addr, | ||
int | exact | ||
) |
Add/delete NAT44 static mapping.
l_addr | local IPv4 address |
e_addr | external IPv4 address |
l_port | local port number |
e_port | external port number |
vrf_id | local VRF ID |
addr_only | 1 = 1:1NAT, 0 = 1:1NAPT |
sw_if_index | use interface address as external IPv4 address |
proto | L4 protocol |
is_add | 1 = add, 0 = delete |
twice_nat | twice-nat mode |
out2in_only | if 1 rule match only out2in direction |
tag | opaque string tag |
identity_nat | identity NAT |
pool_addr | pool IPv4 address |
exact | 1 = exact pool address |
Definition at line 837 of file nat.c.
|
static |
int snat_alloc_outside_address_and_port | ( | snat_address_t * | addresses, |
u32 | fib_index, | ||
u32 | thread_index, | ||
nat_protocol_t | proto, | ||
ip4_address_t * | addr, | ||
u16 * | port, | ||
u16 | port_per_thread, | ||
u32 | snat_thread_index | ||
) |
Alloc outside address and port.
addresses | vector of outside addresses |
fib_index | FIB table index |
thread_index | thread index |
port_per_thread | number of ports per thread |
snat_thread_index | NAT thread index |
Definition at line 2975 of file nat.c.
|
static |
int snat_del_address | ( | snat_main_t * | sm, |
ip4_address_t | addr, | ||
u8 | delete_sm, | ||
u8 | twice_nat | ||
) |
Delete external address from NAT44 pool.
sm | snat global configuration data |
addr | IPv4 address |
delete_sm | 1 if delete static mapping using address |
twice_nat | 1 if twice NAT address |
Definition at line 1666 of file nat.c.
void snat_ed_static_mapping_del_sessions | ( | snat_main_t * | sm, |
snat_main_per_thread_data_t * | tsm, | ||
ip4_address_t | l_addr, | ||
u16 | l_port, | ||
u8 | protocol, | ||
u32 | fib_index, | ||
int | addr_only, | ||
ip4_address_t | e_addr, | ||
u16 | e_port | ||
) |
void snat_free_outside_address_and_port | ( | snat_address_t * | addresses, |
u32 | thread_index, | ||
ip4_address_t * | addr, | ||
u16 | port, | ||
nat_protocol_t | protocol | ||
) |
|
static |
|
static |
|
static |
Enable/disable NAT44 feature on the interface.
sw_if_index | software index of the interface |
is_inside | 1 = inside, 0 = outside |
is_del | 1 = delete, 0 = add |
Definition at line 1886 of file nat.c.
Enable/disable NAT44 output feature on the interface (postrouting NAT)
sw_if_index | software index of the interface |
is_inside | 1 = inside, 0 = outside |
is_del | 1 = delete, 0 = add |
Definition at line 2137 of file nat.c.
|
static |
|
static |
int snat_set_workers | ( | uword * | bitmap | ) |
void snat_static_mapping_del_sessions | ( | snat_main_t * | sm, |
snat_main_per_thread_data_t * | tsm, | ||
snat_user_key_t | u_key, | ||
int | addr_only, | ||
ip4_address_t | e_addr, | ||
u16 | e_port | ||
) |
int snat_static_mapping_match | ( | snat_main_t * | sm, |
ip4_address_t | match_addr, | ||
u16 | match_port, | ||
u32 | match_fib_index, | ||
nat_protocol_t | match_protocol, | ||
ip4_address_t * | mapping_addr, | ||
u16 * | mapping_port, | ||
u32 * | mapping_fib_index, | ||
u8 | by_external, | ||
u8 * | is_addr_only, | ||
twice_nat_type_t * | twice_nat, | ||
lb_nat_type_t * | lb, | ||
ip4_address_t * | ext_host_addr, | ||
u8 * | is_identity_nat, | ||
snat_static_mapping_t ** | out | ||
) |
Match NAT44 static mapping.
key | address and port to match |
addr | external/local address of the matched mapping |
port | port of the matched mapping |
fib_index | fib index of the matched mapping |
by_external | if 0 match by local address otherwise match by external address |
is_addr_only | 1 if matched mapping is address only |
twice_nat | matched mapping is twice NAT type |
lb | 1 if matched mapping is load-balanced |
ext_host_addr | external host address |
is_identity_nat | 1 if indentity mapping |
out | if !=0 set to pointer of the mapping structure |
Definition at line 2815 of file nat.c.
void test_key_calc_split | ( | ) |
void update_per_vrf_sessions_vec | ( | u32 | fib_index, |
int | is_del | ||
) |
VLIB_PLUGIN_REGISTER | ( | ) |
VNET_FEATURE_INIT | ( | nat_pre_in2out | , |
static | |||
) |
VNET_FEATURE_INIT | ( | nat_pre_out2in | , |
static | |||
) |
VNET_FEATURE_INIT | ( | snat_in2out_worker_handoff | , |
static | |||
) |
VNET_FEATURE_INIT | ( | snat_out2in_worker_handoff | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_snat_in2out | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_snat_out2in | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_nat_classify | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_nat44_ed_in2out | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_nat44_ed_out2in | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_nat44_ed_classify | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_nat_handoff_classify | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_snat_in2out_fast | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_snat_out2in_fast | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_snat_hairpin_dst | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_nat44_ed_hairpin_dst | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_snat_in2out_output | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_snat_in2out_output_worker_handoff | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_snat_hairpin_src | , |
static | |||
) |
VNET_FEATURE_INIT | ( | nat_pre_in2out_output | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_nat44_ed_in2out_output | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_nat44_ed_hairpin_src | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_nat_hairpinning | , |
static | |||
) |
VNET_FEATURE_INIT | ( | ip4_nat44_ed_hairpinning | , |
static | |||
) |
VNET_IP_TABLE_ADD_DEL_FUNCTION | ( | nat_ip_table_add_del | ) |
vlib_node_registration_t nat_default_node |
(constructor) VLIB_REGISTER_NODE (nat_default_node)
fib_source_t nat_fib_src_hi |
fib_source_t nat_fib_src_low |
snat_main_t snat_main |