29 #define UNSUPPORTED_IN_DET_MODE_STR \ 30 "This command is unsupported in deterministic mode" 31 #define SUPPORTED_ONLY_IN_DET_MODE_STR \ 32 "This command is supported only in deterministic mode" 53 if (
unformat (line_input,
"%U", unformat_bitmap_list, &bitmap))
75 case VNET_API_ERROR_INVALID_WORKER:
78 case VNET_API_ERROR_FEATURE_DISABLED:
80 "Supported only if 2 or more workes available.");
142 if (
unformat (line_input,
"domain %d", &domain_id))
144 else if (
unformat (line_input,
"src-port %d", &src_port))
146 else if (
unformat (line_input,
"disable"))
182 else if (
unformat (input,
"verbose"))
224 u32 psid, psid_offset, psid_length, port_start, port_end;
235 if (
unformat (line_input,
"default"))
239 (line_input,
"map-e psid %d psid-offset %d psid-len %d", &psid,
240 &psid_offset, &psid_length))
245 (line_input,
"port-range %d - %d", &port_start, &port_end))
247 if (port_end <= port_start)
251 "The end-port must be greater than start-port");
286 case NAT_ADDR_AND_PORT_ALLOC_ALG_MAPE:
290 case NAT_ADDR_AND_PORT_ALLOC_ALG_RANGE:
316 if (
unformat (line_input,
"disable"))
318 else if (
unformat (line_input,
"%d", &mss))
357 u32 port, session_refresh_interval = 10;
371 (line_input,
"refresh-intervval %u", &session_refresh_interval))
397 u32 port, path_mtu = 512;
409 else if (
unformat (line_input,
"path-mtu %u", &path_mtu))
435 u32 path_mtu, session_refresh_interval, resync_ack_missed;
454 session_refresh_interval);
463 vlib_cli_output (vm,
" completed (%d ACK missed)\n", resync_ack_missed);
495 u32 start_host_order, end_host_order;
512 if (
unformat (line_input,
"%U - %U",
516 else if (
unformat (line_input,
"tenant-vrf %u", &vrf_id))
519 end_addr = start_addr;
520 else if (
unformat (line_input,
"twice-nat"))
522 else if (
unformat (line_input,
"del"))
538 start_host_order = clib_host_to_net_u32 (start_addr.
as_u32);
539 end_host_order = clib_host_to_net_u32 (end_addr.
as_u32);
541 if (end_host_order < start_host_order)
547 count = (end_host_order - start_host_order) + 1;
554 this_addr = start_addr;
556 for (i = 0; i <
count; i++)
565 case VNET_API_ERROR_VALUE_EXIST:
568 case VNET_API_ERROR_NO_SUCH_ENTRY:
571 case VNET_API_ERROR_UNSPECIFIED:
575 case VNET_API_ERROR_FEATURE_DISABLED:
578 "twice NAT available only for endpoint-dependent mode.");
616 #define _(N, i, n, s) \ 617 vlib_cli_output (vm, " %d busy %s ports", ap->busy_##n##_ports, s); 630 #define _(N, i, n, s) \ 631 vlib_cli_output (vm, " %d busy %s ports", ap->busy_##n##_ports, s); 647 u32 *inside_sw_if_indices = 0;
648 u32 *outside_sw_if_indices = 0;
649 u8 is_output_feature = 0;
663 vec_add1 (inside_sw_if_indices, sw_if_index);
666 vec_add1 (outside_sw_if_indices, sw_if_index);
667 else if (
unformat (line_input,
"output-feature"))
668 is_output_feature = 1;
669 else if (
unformat (line_input,
"del"))
679 if (
vec_len (inside_sw_if_indices))
681 for (i = 0; i <
vec_len (inside_sw_if_indices); i++)
683 sw_if_index = inside_sw_if_indices[
i];
684 if (is_output_feature)
687 (sw_if_index, 1, is_del))
690 is_del ?
"del" :
"add",
701 is_del ?
"del" :
"add",
710 if (
vec_len (outside_sw_if_indices))
712 for (i = 0; i <
vec_len (outside_sw_if_indices); i++)
714 sw_if_index = outside_sw_if_indices[
i];
715 if (is_output_feature)
718 (sw_if_index, 0, is_del))
721 is_del ?
"del" :
"add",
732 is_del ?
"del" :
"add",
761 vlib_cli_output (vm,
" %U %s", format_vnet_sw_if_index_name, vnm,
763 (nat_interface_is_inside(i) &&
764 nat_interface_is_outside(i)) ?
"in out" :
765 (nat_interface_is_inside(i) ?
"in" :
"out"));
770 vlib_cli_output (vm,
" %U output-feature %s",
771 format_vnet_sw_if_index_name, vnm,
773 (nat_interface_is_inside(i) &&
774 nat_interface_is_outside(i)) ?
"in out" :
775 (nat_interface_is_inside(i) ?
"in" :
"out"));
791 u32 l_port = 0, e_port = 0, vrf_id = ~0;
823 else if (
unformat (line_input,
"external %U %u",
828 else if (
unformat (line_input,
"external %U",
831 else if (
unformat (line_input,
"vrf %u", &vrf_id))
835 else if (
unformat (line_input,
"twice-nat"))
837 else if (
unformat (line_input,
"self-twice-nat"))
839 else if (
unformat (line_input,
"out2in-only"))
841 else if (
unformat (line_input,
"del"))
851 if (twice_nat && addr_only)
857 if (!addr_only && !proto_set)
864 vrf_id, addr_only, sw_if_index, proto, is_add,
865 twice_nat, out2in_only, 0, 0);
869 case VNET_API_ERROR_INVALID_VALUE:
872 case VNET_API_ERROR_NO_SUCH_ENTRY:
878 case VNET_API_ERROR_NO_SUCH_FIB:
881 case VNET_API_ERROR_VALUE_EXIST:
884 case VNET_API_ERROR_FEATURE_DISABLED:
887 "twice-nat/out2in-only available only for endpoint-dependent mode.");
908 u32 port = 0, vrf_id = ~0;
929 else if (
unformat (line_input,
"external %U",
932 else if (
unformat (line_input,
"vrf %u", &vrf_id))
937 else if (
unformat (line_input,
"del"))
948 vrf_id, addr_only, sw_if_index, proto, is_add,
953 case VNET_API_ERROR_INVALID_VALUE:
956 case VNET_API_ERROR_NO_SUCH_ENTRY:
962 case VNET_API_ERROR_NO_SUCH_FIB:
965 case VNET_API_ERROR_VALUE_EXIST:
987 u32 l_port = 0, e_port = 0, vrf_id = 0, probability = 0, affinity = 0;
1005 if (
unformat (line_input,
"local %U:%u probability %u",
1009 local.addr = l_addr;
1010 local.port = (
u16) l_port;
1011 local.probability = (
u8) probability;
1014 else if (
unformat (line_input,
"local %U:%u vrf %u probability %u",
1019 local.addr = l_addr;
1020 local.port = (
u16) l_port;
1021 local.probability = (
u8) probability;
1022 local.vrf_id = vrf_id;
1031 else if (
unformat (line_input,
"twice-nat"))
1033 else if (
unformat (line_input,
"self-twice-nat"))
1035 else if (
unformat (line_input,
"out2in-only"))
1037 else if (
unformat (line_input,
"del"))
1039 else if (
unformat (line_input,
"affinity %u", &affinity))
1062 is_add, twice_nat, out2in_only, 0,
1067 case VNET_API_ERROR_INVALID_VALUE:
1070 case VNET_API_ERROR_NO_SUCH_ENTRY:
1076 case VNET_API_ERROR_VALUE_EXIST:
1079 case VNET_API_ERROR_FEATURE_DISABLED:
1102 u32 l_port = 0, e_port = 0, vrf_id = 0, probability = 0;
1117 if (
unformat (line_input,
"local %U:%u probability %u",
1120 else if (
unformat (line_input,
"local %U:%u vrf %u probability %u",
1130 else if (
unformat (line_input,
"del"))
1140 if (!l_port || !e_port)
1154 l_port, proto, vrf_id, probability,
1159 case VNET_API_ERROR_INVALID_VALUE:
1163 case VNET_API_ERROR_NO_SUCH_ENTRY:
1166 case VNET_API_ERROR_VALUE_EXIST:
1169 case VNET_API_ERROR_FEATURE_DISABLED:
1173 case VNET_API_ERROR_UNSPECIFIED:
1202 vlib_cli_output (vm,
" %U", format_snat_static_mapping, m);
1236 else if (
unformat (line_input,
"twice-nat"))
1238 else if (
unformat (line_input,
"del"))
1325 vlib_cli_output (vm,
" %U", format_snat_user, tsm, u, verbose);
1340 int is_in = 0, is_ed = 0;
1360 else if (
unformat (line_input,
"in"))
1365 else if (
unformat (line_input,
"out"))
1370 else if (
unformat (line_input,
"vrf %u", &vrf_id))
1375 &eh_addr, &eh_port))
1415 u8 forwarding_enable;
1416 u8 forwarding_enable_set = 0;
1428 if (!forwarding_enable_set &&
unformat (line_input,
"enable"))
1430 forwarding_enable = 1;
1431 forwarding_enable_set = 1;
1433 else if (!forwarding_enable_set &&
unformat (line_input,
"disable"))
1435 forwarding_enable = 0;
1436 forwarding_enable_set = 1;
1446 if (!forwarding_enable_set)
1467 u32 in_plen, out_plen;
1488 else if (
unformat (line_input,
"del"))
1528 vlib_cli_output (vm,
" in %U/%d out %U/%d\n",
1529 format_ip4_address, &dm->in_addr, dm->in_plen,
1530 format_ip4_address, &dm->out_addr, dm->out_plen);
1531 vlib_cli_output (vm,
" outside address sharing ratio: %d\n",
1533 vlib_cli_output (vm,
" number of ports per inside host: %d\n",
1534 dm->ports_per_host);
1535 vlib_cli_output (vm,
" sessions number: %d\n", dm->ses_num);
1621 if (out_port < 1024 || out_port > 65535)
1664 else if (
unformat (line_input,
"tcp-established %u",
1672 "Invalid TCP established timeouts value");
1676 else if (
unformat (line_input,
"tcp-transitory %u",
1684 "Invalid TCP transitory timeouts value");
1696 else if (
unformat (line_input,
"reset"))
1754 vec_foreach_index (i, dm->sessions)
1756 ses = vec_elt_at_index (dm->sessions, i);
1758 vlib_cli_output (vm,
" %U", format_det_map_ses, dm, ses, &i);
1773 u32 out_port, ext_port;
1788 if (
unformat (line_input,
"%U:%d %U:%d",
1832 u32 in_port, ext_port;
1847 if (
unformat (line_input,
"%U:%d %U:%d",
1891 .path =
"set nat workers",
1893 .short_help =
"set nat workers <workers-list>",
1907 .path =
"show nat workers",
1908 .short_help =
"show nat workers",
1922 .path =
"set nat timeout",
1925 "set nat timeout [udp <sec> | tcp-established <sec> " 1926 "tcp-transitory <sec> | icmp <sec> | reset]",
1941 .path =
"show nat timeouts",
1942 .short_help =
"show nat timeouts",
1956 .path =
"nat ipfix logging",
1958 .short_help =
"nat ipfix logging [domain <domain-id>] [src-port <port>] [disable]",
1974 .path =
"nat addr-port-assignment-alg",
1975 .short_help =
"nat addr-port-assignment-alg <alg-name> [<alg-params>]",
1986 .path =
"show nat addr-port-assignment-alg",
1987 .short_help =
"show nat addr-port-assignment-alg",
2002 .path =
"nat mss-clamping",
2003 .short_help =
"nat mss-clamping <mss-value>|disable",
2014 .path =
"show nat mss-clamping",
2015 .short_help =
"show nat mss-clamping",
2026 .path =
"nat ha failover",
2027 .short_help =
"nat ha failover <ip4-address>:<port> [refresh-intervval <sec>]",
2038 .path =
"nat ha listener",
2039 .short_help =
"nat ha listener <ip4-address>:<port> [path-mtu <path-mtu>]",
2050 .path =
"show nat ha",
2051 .short_help =
"show nat ha",
2062 .path =
"nat ha flush",
2063 .short_help =
"nat ha flush",
2074 .path =
"nat ha resync",
2075 .short_help =
"nat ha resync",
2086 .path =
"show nat44 hash tables",
2087 .short_help =
"show nat44 hash tables [detail|verbose]",
2103 .path =
"nat44 add address",
2104 .short_help =
"nat44 add address <ip4-range-start> [- <ip4-range-end>] " 2105 "[tenant-vrf <vrf-id>] [twice-nat] [del]",
2134 .path =
"show nat44 addresses",
2135 .short_help =
"show nat44 addresses",
2150 .path =
"set interface nat44",
2152 .short_help =
"set interface nat44 in <intfc> out <intfc> [output-feature] " 2167 .path =
"show nat44 interfaces",
2168 .short_help =
"show nat44 interfaces",
2187 .path =
"nat44 add static mapping",
2190 "nat44 add static mapping tcp|udp|icmp local <addr> [<port>] " 2191 "external <addr> [<port>] [vrf <table-id>] [twice-nat|self-twice-nat] " 2192 "[out2in-only] [del]",
2209 .path =
"nat44 add identity mapping",
2211 .short_help =
"nat44 add identity mapping <interface>|<ip4-addr> " 2212 "[<protocol> <port>] [vrf <table-id>] [del]",
2226 .path =
"nat44 add load-balancing static mapping",
2229 "nat44 add load-balancing static mapping protocol tcp|udp " 2230 "external <addr>:<port> local <addr>:<port> [vrf <table-id>] " 2231 "probability <n> [twice-nat|self-twice-nat] [out2in-only] " 2232 "[affinity <timeout-seconds>] [del]",
2245 .path =
"nat44 add load-balancing back-end",
2248 "nat44 add load-balancing back-end protocol tcp|udp " 2249 "external <addr>:<port> local <addr>:<port> [vrf <table-id>] " 2250 "probability <n> [del]",
2269 .path =
"show nat44 static mappings",
2270 .short_help =
"show nat44 static mappings",
2283 .path =
"nat44 add interface address",
2284 .short_help =
"nat44 add interface address <interface> [twice-nat] [del]",
2300 .path =
"show nat44 interface address",
2301 .short_help =
"show nat44 interface address",
2312 .path =
"show nat44 sessions",
2313 .short_help =
"show nat44 sessions [detail]",
2327 .path =
"nat44 del session",
2328 .short_help =
"nat44 del session in|out <addr>:<port> tcp|udp|icmp [vrf <id>] [external-host <addr>:<port>]",
2345 .path =
"nat44 forwarding",
2346 .short_help =
"nat44 forwarding enable|disable",
2362 .path =
"nat44 deterministic add",
2363 .short_help =
"nat44 deterministic add in <addr>/<plen> out <addr>/<plen> [del]",
2380 .path =
"show nat44 deterministic mappings",
2381 .short_help =
"show nat44 deterministic mappings",
2396 .path =
"nat44 deterministic forward",
2397 .short_help =
"nat44 deterministic forward <addr>",
2411 .path =
"nat44 deterministic reverse",
2412 .short_help =
"nat44 deterministic reverse <addr>:<port>",
2428 .path =
"show nat44 deterministic sessions",
2429 .short_help =
"show nat44 deterministic sessions",
2442 .path =
"nat44 deterministic close session out",
2443 .short_help =
"nat44 deterministic close session out " 2444 "<out_addr>:<out_port> <ext_addr>:<ext_port>",
2457 .path =
"nat44 deterministic close session in",
2458 .short_help =
"nat44 deterministic close session in " 2459 "<in_addr>:<in_port> <ext_addr>:<ext_port>",
static clib_error_t * add_address_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
static clib_error_t * snat_det_reverse_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
#define nat_log_info(...)
#define vec_foreach_index(var, v)
Iterate over vector indices.
static clib_error_t * nat44_show_sessions_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
int snat_del_address(snat_main_t *sm, ip4_address_t addr, u8 delete_sm, u8 twice_nat)
Delete external address from NAT44 pool.
int nat64_set_udp_timeout(u32 timeout)
Set UDP session timeout.
nat_affinity_main_t nat_affinity_main
vnet_main_t * vnet_get_main(void)
#define SNAT_TCP_ESTABLISHED_TIMEOUT
clib_memset(h->entries, 0, sizeof(h->entries[0]) *entries)
static clib_error_t * nat_ha_resync_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
#define vec_add1(V, E)
Add 1 element to end of vector (unspecified alignment).
static void snat_det_ses_close(snat_det_map_t *dm, snat_det_session_t *ses)
static snat_det_session_t * snat_det_find_ses_by_in(snat_det_map_t *dm, ip4_address_t *in_addr, u16 in_port, snat_det_out_key_t out_key)
static void snat_det_forward(snat_det_map_t *dm, ip4_address_t *in_addr, ip4_address_t *out_addr, u16 *lo_port)
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.
unformat_function_t unformat_vnet_sw_interface
snat_det_map_t * det_maps
static clib_error_t * add_identity_mapping_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
void nat_ha_get_resync_status(u8 *in_resync, u32 *resync_ack_missed)
Get resync status.
static void snat_det_reverse(snat_det_map_t *dm, ip4_address_t *out_addr, u16 out_port, ip4_address_t *in_addr)
static clib_error_t * snat_det_close_session_out_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
format_function_t format_vnet_sw_if_index_name
int snat_interface_add_del(u32 sw_if_index, u8 is_inside, int is_del)
Enable/disable NAT44 feature on the interface.
static clib_error_t * nat_show_ha_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
clib_bihash_8_8_t user_hash
int nat44_add_del_lb_static_mapping(ip4_address_t e_addr, u16 e_port, snat_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)
static clib_error_t * nat44_show_hash_commnad_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
int nat_ha_resync(u32 client_index, u32 pid, nat_ha_resync_event_cb_t event_callback)
Resync HA (resend existing sessions to new failover)
#define pool_foreach(VAR, POOL, BODY)
Iterate through pool.
static clib_error_t * snat_det_map_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
ip4_address_t ext_host_addr
clib_bihash_16_8_t affinity_hash
int snat_add_address(snat_main_t *sm, ip4_address_t *addr, u32 vrf_id, u8 twice_nat)
Add external address to NAT44 pool.
int nat64_set_icmp_timeout(u32 timeout)
Set ICMP session timeout.
static clib_error_t * snat_det_close_session_in_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
static clib_error_t * snat_det_forward_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
#define vec_elt_at_index(v, i)
Get vector value at index i checking that i is in bounds.
#define clib_error_return(e, args...)
int snat_ipfix_logging_enable_disable(int enable, u32 domain_id, u16 src_port)
Enable/disable NAT plugin IPFIX logging.
static clib_error_t * nat44_set_alloc_addr_and_port_alg_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
static clib_error_t * nat_set_mss_clamping_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
u32 * auto_add_sw_if_indices_twice_nat
vlib_worker_thread_t * vlib_worker_threads
nat_addr_and_port_alloc_alg_t addr_and_port_alloc_alg
static clib_error_t * nat44_show_addresses_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
clib_bihash_16_8_t out2in_ed
static snat_det_map_t * snat_det_map_by_out(snat_main_t *sm, ip4_address_t *out_addr)
static clib_error_t * snat_forwarding_set_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
static clib_error_t * nat44_det_show_sessions_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
snat_static_mapping_t * static_mappings
void nat_ha_get_listener(ip4_address_t *addr, u16 *port, u32 *path_mtu)
Get HA listener/local configuration.
void nat_ha_flush(u8 is_resync)
Flush the current HA data (for testing)
clib_bihash_8_8_t static_mapping_by_external
static clib_error_t * snat_feature_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
void nat_set_alloc_addr_and_port_default(void)
Set address and port assignment algorithm to default/standard.
snat_interface_t * output_feature_interfaces
static clib_error_t * add_lb_static_mapping_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
static u8 snat_proto_to_ip_proto(snat_protocol_t snat_proto)
static clib_error_t * snat_ipfix_logging_enable_disable_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
u32 ft_table_id
Table ID (hash key) for this FIB.
static clib_error_t * nat_show_workers_commnad_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
static clib_error_t * nat44_show_interfaces_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
void nat44_add_del_address_dpo(ip4_address_t addr, u8 is_add)
Add/delete external address to FIB DPO (out2in DPO mode)
#define vec_free(V)
Free vector's memory (no header).
deterministic NAT definitions
format_function_t format_snat_static_map_to_resolve
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)
format_function_t format_nat_addr_and_port_alloc_alg
static clib_error_t * set_timeout_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
u32 tcp_transitory_timeout
int nat_ha_set_listener(ip4_address_t *addr, u16 port, u32 path_mtu)
Set HA listener (local settings)
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, snat_protocol_t proto, int is_add, twice_nat_type_t twice_nat, u8 out2in_only, u8 *tag, u8 identity_nat)
Add/delete NAT44 static mapping.
int snat_det_add_map(snat_main_t *sm, ip4_address_t *in_addr, u8 in_plen, ip4_address_t *out_addr, u8 out_plen, int is_add)
Add/delete deterministic NAT mapping.
static clib_error_t * nat_ha_failover_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
#define VLIB_CLI_COMMAND(x,...)
u32 * auto_add_sw_if_indices
static clib_error_t * nat_show_mss_clamping_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
static snat_det_map_t * snat_det_map_by_user(snat_main_t *sm, ip4_address_t *user_addr)
static clib_error_t * nat_ha_flush_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
static clib_error_t * nat_ha_listener_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
unformat_function_t unformat_snat_protocol
int nat_ha_set_failover(ip4_address_t *addr, u16 port, u32 session_refresh_interval)
Set HA failover (remote settings)
void nat_set_alloc_addr_and_port_range(u16 start_port, u16 end_port)
Set address and port assignment algorithm for port range.
static clib_error_t * add_static_mapping_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
#define clib_bitmap_free(v)
Free a bitmap.
int nat44_del_session(snat_main_t *sm, ip4_address_t *addr, u16 port, snat_protocol_t proto, u32 vrf_id, int is_in)
Delete NAT44 session.
snat_address_t * twice_nat_addresses
static clib_error_t * nat44_del_session_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
NAT64 global declarations.
int nat64_set_tcp_timeouts(u32 trans, u32 est)
Set TCP session timeouts.
void increment_v4_address(ip4_address_t *a)
Increment IPv4 address.
static clib_error_t * nat_show_timeouts_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant)
#define UNSUPPORTED_IN_DET_MODE_STR
static clib_error_t * snat_add_interface_address_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
snat_main_per_thread_data_t * per_thread_data
fib_table_t * fib_table_get(fib_node_index_t index, fib_protocol_t proto)
Get a pointer to a FIB table.
snat_address_t * addresses
static clib_error_t * nat44_show_alloc_addr_and_port_alg_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
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 interfce.
static clib_error_t * nat44_show_interface_address_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
void nat_ha_get_failover(ip4_address_t *addr, u16 *port, u32 *session_refresh_interval)
Get HA failover/remote settings.
static clib_error_t * nat44_show_static_mappings_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
static clib_error_t * add_lb_backend_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
#define SNAT_ICMP_TIMEOUT
static snat_det_session_t * snat_det_get_ses_by_out(snat_det_map_t *dm, ip4_address_t *in_addr, u64 out_key)
snat_static_map_resolve_t * to_resolve
#define SUPPORTED_ONLY_IN_DET_MODE_STR
#define vec_foreach(var, vec)
Vector iterator.
int snat_set_workers(uword *bitmap)
Set NAT plugin workers.
clib_bihash_16_8_t in2out_ed
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.
NAT plugin client-IP based session affinity for load-balancing.
#define SNAT_TCP_TRANSITORY_TIMEOUT
void vlib_cli_output(vlib_main_t *vm, char *fmt,...)
snat_session_t * sessions
clib_bihash_8_8_t static_mapping_by_local
static clib_error_t * nat44_det_show_mappings_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
int nat44_lb_static_mapping_add_del_local(ip4_address_t e_addr, u16 e_port, ip4_address_t l_addr, u16 l_port, snat_protocol_t proto, u32 vrf_id, u8 probability, u8 is_add)
static clib_error_t * set_workers_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
snat_interface_t * interfaces
u32 tcp_established_timeout
static uword pool_elts(void *v)
Number of active elements in a pool.