FD.io VPP
v21.10.1-2-g0a485f517
Vector Packet Processing
|
Go to the source code of this file.
Data Structures | |
struct | nat44_config_t |
struct | nat_pre_trace_t |
union | nat_6t_t |
struct | nat_6t_flow_t |
struct | snat_address_t |
struct | nat_fib_t |
struct | nat_outside_fib_t |
struct | nat44_lb_addr_port_t |
struct | snat_static_mapping_t |
struct | snat_interface_t |
struct | snat_static_map_resolve_t |
struct | snat_main_per_thread_data_t |
struct | snat_main_s |
struct | nat44_is_idle_session_ctx_t |
struct | snat_runtime_t |
struct | icmp_echo_header_t |
struct | tcp_udp_header_t |
Typedefs | |
typedef enum nat44_config_flags_t_ | nat44_config_flags_t |
typedef int() | nat_alloc_out_addr_and_port_function_t(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) |
typedef struct snat_main_s | snat_main_t |
#define foreach_nat44_config_flag |
Definition at line 46 of file nat44_ed.h.
#define foreach_nat_addr_and_port_alloc_alg |
Definition at line 95 of file nat44_ed.h.
#define foreach_nat_in2out_ed_error |
Definition at line 127 of file nat44_ed.h.
#define foreach_nat_out2in_ed_error |
Definition at line 144 of file nat44_ed.h.
#define foreach_snat_session_state |
Definition at line 108 of file nat44_ed.h.
#define NAT44_SES_I2O_FIN 1 |
Definition at line 165 of file nat44_ed.h.
#define NAT44_SES_I2O_FIN_ACK 4 |
Definition at line 167 of file nat44_ed.h.
#define NAT44_SES_I2O_SYN 16 |
Definition at line 169 of file nat44_ed.h.
#define NAT44_SES_O2I_FIN 2 |
Definition at line 166 of file nat44_ed.h.
#define NAT44_SES_O2I_FIN_ACK 8 |
Definition at line 168 of file nat44_ed.h.
#define NAT44_SES_O2I_SYN 32 |
Definition at line 170 of file nat44_ed.h.
#define NAT44_SES_RST 64 |
Definition at line 171 of file nat44_ed.h.
#define NAT_FLOW_OP_DADDR_REWRITE (1 << 3) |
Definition at line 230 of file nat44_ed.h.
#define NAT_FLOW_OP_DPORT_REWRITE (1 << 4) |
Definition at line 231 of file nat44_ed.h.
#define NAT_FLOW_OP_ICMP_ID_REWRITE (1 << 5) |
Definition at line 232 of file nat44_ed.h.
#define NAT_FLOW_OP_SADDR_REWRITE (1 << 1) |
Definition at line 228 of file nat44_ed.h.
#define NAT_FLOW_OP_SPORT_REWRITE (1 << 2) |
Definition at line 229 of file nat44_ed.h.
#define NAT_FLOW_OP_TXFIB_REWRITE (1 << 6) |
Definition at line 233 of file nat44_ed.h.
#define NAT_FQ_NELTS_DEFAULT 64 |
Definition at line 40 of file nat44_ed.h.
#define NAT_INTERFACE_FLAG_IS_INSIDE 1 |
Definition at line 185 of file nat44_ed.h.
#define NAT_INTERFACE_FLAG_IS_OUTSIDE 2 |
Definition at line 186 of file nat44_ed.h.
#define nat_log_debug | ( | ... | ) | vlib_log(VLIB_LOG_LEVEL_DEBUG, snat_main.log_class, __VA_ARGS__) |
Definition at line 890 of file nat44_ed.h.
#define nat_log_err | ( | ... | ) | vlib_log(VLIB_LOG_LEVEL_ERR, snat_main.log_class, __VA_ARGS__) |
Definition at line 882 of file nat44_ed.h.
#define nat_log_info | ( | ... | ) | vlib_log(VLIB_LOG_LEVEL_INFO, snat_main.log_class, __VA_ARGS__) |
Definition at line 888 of file nat44_ed.h.
#define nat_log_notice | ( | ... | ) | vlib_log(VLIB_LOG_LEVEL_NOTICE, snat_main.log_class, __VA_ARGS__) |
Definition at line 886 of file nat44_ed.h.
#define nat_log_warn | ( | ... | ) | vlib_log(VLIB_LOG_LEVEL_WARNING, snat_main.log_class, __VA_ARGS__) |
Definition at line 884 of file nat44_ed.h.
#define NAT_SM_FLAG_ADDR_ONLY (1 << 4) |
Definition at line 192 of file nat44_ed.h.
#define NAT_SM_FLAG_EXACT_ADDRESS (1 << 5) |
Definition at line 193 of file nat44_ed.h.
#define NAT_SM_FLAG_IDENTITY_NAT (1 << 3) |
Definition at line 191 of file nat44_ed.h.
#define NAT_SM_FLAG_LB (1 << 7) |
Definition at line 195 of file nat44_ed.h.
#define NAT_SM_FLAG_OUT2IN_ONLY (1 << 6) |
Definition at line 194 of file nat44_ed.h.
#define NAT_SM_FLAG_SELF_TWICE_NAT (1 << 1) |
Definition at line 189 of file nat44_ed.h.
#define NAT_SM_FLAG_SWITCH_ADDRESS (1 << 8) |
Definition at line 196 of file nat44_ed.h.
#define NAT_SM_FLAG_TWICE_NAT (1 << 2) |
Definition at line 190 of file nat44_ed.h.
#define SNAT_FLAG_HAIRPINNING (1 << 0) |
Definition at line 43 of file nat44_ed.h.
#define SNAT_SESSION_FLAG_AFFINITY (1 << 6) |
Definition at line 180 of file nat44_ed.h.
#define SNAT_SESSION_FLAG_ENDPOINT_DEPENDENT (1 << 4) |
Definition at line 178 of file nat44_ed.h.
#define SNAT_SESSION_FLAG_EXACT_ADDRESS (1 << 7) |
Definition at line 181 of file nat44_ed.h.
#define SNAT_SESSION_FLAG_FWD_BYPASS (1 << 5) |
Definition at line 179 of file nat44_ed.h.
#define SNAT_SESSION_FLAG_HAIRPINNING (1 << 8) |
Definition at line 182 of file nat44_ed.h.
#define SNAT_SESSION_FLAG_LOAD_BALANCING (1 << 2) |
Definition at line 176 of file nat44_ed.h.
#define SNAT_SESSION_FLAG_STATIC_MAPPING (1 << 0) |
Definition at line 174 of file nat44_ed.h.
#define SNAT_SESSION_FLAG_TWICE_NAT (1 << 3) |
Definition at line 177 of file nat44_ed.h.
#define SNAT_SESSION_FLAG_UNKNOWN_PROTO (1 << 1) |
Definition at line 175 of file nat44_ed.h.
typedef enum nat44_config_flags_t_ nat44_config_flags_t |
typedef int() nat_alloc_out_addr_and_port_function_t(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) |
Definition at line 503 of file nat44_ed.h.
typedef struct snat_main_s snat_main_t |
enum lb_nat_type_t |
Enumerator | |
---|---|
NO_LB_NAT | |
LB_NAT | |
AFFINITY_LB_NAT |
Definition at line 403 of file nat44_ed.h.
Enumerator | |
---|---|
foreach_nat44_config_flag |
Definition at line 52 of file nat44_ed.h.
Enumerator | |
---|---|
foreach_nat_addr_and_port_alloc_alg |
Definition at line 100 of file nat44_ed.h.
Enumerator | |
---|---|
NAT_IN2OUT_ED_N_ERROR |
Definition at line 136 of file nat44_ed.h.
enum nat_next_t |
Definition at line 73 of file nat44_ed.h.
Enumerator | |
---|---|
NAT_OUT2IN_ED_N_ERROR |
Definition at line 155 of file nat44_ed.h.
Enumerator | |
---|---|
NAT_ED_TRNSL_ERR_SUCCESS | |
NAT_ED_TRNSL_ERR_TRANSLATION_FAILED | |
NAT_ED_TRNSL_ERR_FLOW_MISMATCH | |
NAT_ED_TRNSL_ERR_PACKET_TRUNCATED | |
NAT_ED_TRNSL_ERR_INNER_IP_CORRUPT | |
NAT_ED_TRNSL_ERR_INVALID_CSUM |
Definition at line 1049 of file nat44_ed.h.
enum snat_session_state_t |
Enumerator | |
---|---|
foreach_snat_session_state |
Definition at line 120 of file nat44_ed.h.
enum twice_nat_type_t |
Enumerator | |
---|---|
TWICE_NAT_DISABLED | |
TWICE_NAT | |
TWICE_NAT_SELF |
Definition at line 393 of file nat44_ed.h.
typedef CLIB_PACKED | ( | struct { struct { ip4_address_t addr;u32 fib_index;u16 port;} out2in;struct { ip4_address_t addr;u32 fib_index;u16 port;} in2out;nat_protocol_t nat_proto;nat_6t_flow_t i2o;nat_6t_flow_t o2i;u32 flags;u32 lru_head_index;u32 lru_index;f64 last_lru_update;f64 last_heard;f64 ha_last_refreshed;u64 total_bytes;u32 total_pkts;ip4_address_t ext_host_addr;u16 ext_host_port;ip4_address_t ext_host_nat_addr;u16 ext_host_nat_port;u8 state;u32 i2o_fin_seq;u32 o2i_fin_seq;u64 tcp_closed_timestamp;u32 per_vrf_sessions_index;u32 thread_index;} | ) |
void expire_per_vrf_sessions | ( | u32 | fib_index | ) |
|
inlinestatic |
Check if NAT session is forwarding bypass.
s | NAT session |
Definition at line 768 of file nat44_ed.h.
void nat44_addresses_free | ( | snat_address_t ** | addresses | ) |
clib_error_t* nat44_api_hookup | ( | vlib_main_t * | vm | ) |
Definition at line 1685 of file nat44_ed_api.c.
int nat44_ed_add_address | ( | ip4_address_t * | addr, |
u32 | vrf_id, | ||
u8 | twice_nat | ||
) |
Definition at line 388 of file nat44_ed.c.
int nat44_ed_add_del_lb_static_mapping_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 | ||
) |
Definition at line 1399 of file nat44_ed.c.
Definition at line 1635 of file nat44_ed.c.
Definition at line 3362 of file nat44_ed.c.
int nat44_ed_add_lb_static_mapping | ( | ip4_address_t | e_addr, |
u16 | e_port, | ||
nat_protocol_t | proto, | ||
nat44_lb_addr_port_t * | locals, | ||
u32 | flags, | ||
u8 * | tag, | ||
u32 | affinity | ||
) |
Definition at line 1136 of file nat44_ed.c.
int nat44_ed_add_output_interface | ( | u32 | sw_if_index | ) |
Definition at line 1848 of file nat44_ed.c.
int nat44_ed_add_static_mapping | ( | ip4_address_t | l_addr, |
ip4_address_t | e_addr, | ||
u16 | l_port, | ||
u16 | e_port, | ||
nat_protocol_t | proto, | ||
u32 | vrf_id, | ||
u32 | sw_if_index, | ||
u32 | flags, | ||
ip4_address_t | pool_addr, | ||
u8 * | tag | ||
) |
Definition at line 783 of file nat44_ed.c.
int nat44_ed_del_address | ( | ip4_address_t | addr, |
u8 | delete_sm, | ||
u8 | twice_nat | ||
) |
Definition at line 449 of file nat44_ed.c.
Definition at line 1743 of file nat44_ed.c.
Definition at line 3401 of file nat44_ed.c.
int nat44_ed_del_lb_static_mapping | ( | ip4_address_t | e_addr, |
u16 | e_port, | ||
nat_protocol_t | proto, | ||
u32 | flags | ||
) |
Definition at line 1279 of file nat44_ed.c.
int nat44_ed_del_output_interface | ( | u32 | sw_if_index | ) |
Definition at line 1946 of file nat44_ed.c.
int nat44_ed_del_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 3465 of file nat44_ed.c.
int nat44_ed_del_static_mapping | ( | ip4_address_t | l_addr, |
ip4_address_t | e_addr, | ||
u16 | l_port, | ||
u16 | e_port, | ||
nat_protocol_t | proto, | ||
u32 | vrf_id, | ||
u32 | sw_if_index, | ||
u32 | flags | ||
) |
Definition at line 983 of file nat44_ed.c.
void nat44_ed_forwarding_enable_disable | ( | u8 | is_enable | ) |
Definition at line 2524 of file nat44_ed.c.
u32 nat44_ed_get_in2out_worker_index | ( | vlib_buffer_t * | b, |
ip4_header_t * | ip, | ||
u32 | rx_fib_index, | ||
u8 | is_output | ||
) |
Definition at line 2757 of file nat44_ed.c.
u32 nat44_ed_get_out2in_worker_index | ( | vlib_buffer_t * | b, |
ip4_header_t * | ip, | ||
u32 | rx_fib_index, | ||
u8 | is_output | ||
) |
Definition at line 2882 of file nat44_ed.c.
|
inlinestatic |
Check if NAT session has affinity record.
s | NAT session |
Definition at line 778 of file nat44_ed.h.
|
inlinestatic |
Check if exact pool address should be used.
s | SNAT session |
Definition at line 788 of file nat44_ed.h.
|
inlinestatic |
Check if NAT interface is inside.
i | NAT interface |
Definition at line 798 of file nat44_ed.h.
|
inlinestatic |
Check if NAT interface is outside.
i | NAT interface |
Definition at line 808 of file nat44_ed.h.
|
inlinestatic |
Check if NAT session is load-balancing.
s | NAT session |
Definition at line 758 of file nat44_ed.h.
|
inlinestatic |
Check if SNAT session is created from static mapping.
s | SNAT session |
Definition at line 728 of file nat44_ed.h.
|
inlinestatic |
Check if NAT session is twice NAT.
s | NAT session |
Definition at line 748 of file nat44_ed.h.
void nat44_ed_sessions_clear | ( | ) |
Definition at line 3185 of file nat44_ed.c.
int nat44_ed_set_frame_queue_nelts | ( | u32 | frame_queue_nelts | ) |
|
inlinestatic |
Check if NAT44 endpoint-dependent TCP session is closed.
s | NAT session |
Definition at line 818 of file nat44_ed.h.
int nat44_plugin_disable | ( | ) |
Definition at line 2457 of file nat44_ed.c.
int nat44_plugin_enable | ( | nat44_config_t | c | ) |
Definition at line 2364 of file nat44_ed.c.
Set NAT44 session limit (session limit, vrf id)
session_limit | Session limit |
vrf_id | VRF id |
Definition at line 3046 of file nat44_ed.c.
Update NAT44 session limit flushing all data (session limit, vrf id)
session_limit | Session limit |
vrf_id | VRF id |
Definition at line 3065 of file nat44_ed.c.
nat_translation_error_e nat_6t_flow_buf_translate_i2o | ( | vlib_main_t * | vm, |
snat_main_t * | sm, | ||
vlib_buffer_t * | b, | ||
ip4_header_t * | ip, | ||
nat_6t_flow_t * | f, | ||
nat_protocol_t | proto, | ||
int | is_output_feature | ||
) |
Definition at line 3862 of file nat44_ed.c.
nat_translation_error_e nat_6t_flow_buf_translate_o2i | ( | vlib_main_t * | vm, |
snat_main_t * | sm, | ||
vlib_buffer_t * | b, | ||
ip4_header_t * | ip, | ||
nat_6t_flow_t * | f, | ||
nat_protocol_t | proto, | ||
int | is_output_feature | ||
) |
Definition at line 3872 of file nat44_ed.c.
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
void nat_6t_l3_l4_csum_calc | ( | nat_6t_flow_t * | f | ) |
Definition at line 3532 of file nat44_ed.c.
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)
sm | snat global configuration data |
s | NAT session |
thread_index | thread index |
is_ha | is HA event |
Definition at line 231 of file nat44_ed.c.
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.
addresses | vector of outside addresses |
thread_index | thread index |
key | address, port and protocol |
Definition at line 2560 of file nat44_ed.c.
|
inlinestatic |
Check if SNAT session for unknown protocol.
s | SNAT session |
Definition at line 738 of file nat44_ed.h.
int snat_set_workers | ( | uword * | bitmap | ) |
Definition at line 2032 of file nat44_ed.c.
int snat_static_mapping_match | ( | vlib_main_t * | vm, |
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 2597 of file nat44_ed.c.
STATIC_ASSERT_SIZEOF | ( | nat_6t_t | , |
2 * | sizeofu64 | ||
) |
Check if client initiating TCP connection (received SYN from client)
t | TCP header |
Definition at line 828 of file nat44_ed.h.
format_function_t format_ed_session_kvp |
Definition at line 1071 of file nat44_ed.h.
format_function_t format_nat_6t_flow |
Definition at line 1070 of file nat44_ed.h.
format_function_t format_nat_addr_and_port_alloc_alg |
Definition at line 719 of file nat44_ed.h.
format_function_t format_nat_ed_translation_error |
Definition at line 1069 of file nat44_ed.h.
format_function_t format_nat_protocol |
Definition at line 718 of file nat44_ed.h.
format_function_t format_snat_key |
Definition at line 716 of file nat44_ed.h.
format_function_t format_snat_session |
Definition at line 715 of file nat44_ed.h.
format_function_t format_snat_static_map_to_resolve |
Definition at line 714 of file nat44_ed.h.
format_function_t format_snat_static_mapping |
Definition at line 713 of file nat44_ed.h.
format_function_t format_static_mapping_key |
Definition at line 717 of file nat44_ed.h.
vlib_node_registration_t nat44_ed_in2out_node |
(constructor) VLIB_REGISTER_NODE (nat44_ed_in2out_node)
Definition at line 1528 of file nat44_ed_in2out.c.
vlib_node_registration_t nat44_ed_in2out_output_node |
(constructor) VLIB_REGISTER_NODE (nat44_ed_in2out_output_node)
Definition at line 1553 of file nat44_ed_in2out.c.
vlib_node_registration_t nat44_ed_out2in_node |
(constructor) VLIB_REGISTER_NODE (nat44_ed_out2in_node)
Definition at line 1406 of file nat44_ed_out2in.c.
vlib_node_registration_t nat_default_node |
(constructor) VLIB_REGISTER_NODE (nat_default_node)
Definition at line 3510 of file nat44_ed.c.
fib_source_t nat_fib_src_hi |
fib_source_t nat_fib_src_low |
vlib_node_registration_t nat_pre_in2out_node |
(constructor) VLIB_REGISTER_NODE (nat_pre_in2out_node)
Definition at line 1639 of file nat44_ed_in2out.c.
vlib_node_registration_t nat_pre_out2in_node |
(constructor) VLIB_REGISTER_NODE (nat_pre_out2in_node)
Definition at line 1453 of file nat44_ed_out2in.c.
vlib_node_registration_t snat_in2out_node |
vlib_node_registration_t snat_in2out_output_node |
vlib_node_registration_t snat_in2out_output_worker_handoff_node |
(constructor) VLIB_REGISTER_NODE (snat_in2out_output_worker_handoff_node)
Definition at line 315 of file nat44_ed_handoff.c.
vlib_node_registration_t snat_in2out_worker_handoff_node |
(constructor) VLIB_REGISTER_NODE (snat_in2out_worker_handoff_node)
Definition at line 297 of file nat44_ed_handoff.c.
snat_main_t snat_main |
Definition at line 41 of file nat44_ed.c.
vlib_node_registration_t snat_out2in_node |
vlib_node_registration_t snat_out2in_worker_handoff_node |
(constructor) VLIB_REGISTER_NODE (snat_out2in_worker_handoff_node)
Definition at line 332 of file nat44_ed_handoff.c.
unformat_function_t unformat_nat_protocol |
Definition at line 721 of file nat44_ed.h.