X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fnat%2Fnat.h;h=58bf8b340cee73ccfde192775fa397063f06c3fb;hb=refs%2Fchanges%2F54%2F10254%2F1;hp=5a2d0855e9b7e4e9aa13d3682f34c1d90ec6ac1e;hpb=b932d26ea48ba8aa7677dc3b6ffd5d4729176c8f;p=vpp.git diff --git a/src/plugins/nat/nat.h b/src/plugins/nat/nat.h index 5a2d0855e9b..58bf8b340ce 100644 --- a/src/plugins/nat/nat.h +++ b/src/plugins/nat/nat.h @@ -217,10 +217,12 @@ typedef struct { u16 external_port; u8 addr_only; u8 twice_nat; + u8 out2in_only; u32 vrf_id; u32 fib_index; snat_protocol_t proto; u32 worker_index; + u8 *tag; nat44_lb_addr_port_t *locals; } snat_static_mapping_t; @@ -239,6 +241,7 @@ typedef struct { int addr_only; int twice_nat; int is_add; + u8 *tag; } snat_static_map_resolve_t; typedef struct { @@ -350,10 +353,14 @@ typedef struct snat_main_s { /* Deterministic NAT */ snat_det_map_t * det_maps; + /* If forwarding is enabled */ + u8 forwarding_enabled; + /* Config parameters */ u8 static_mapping_only; u8 static_mapping_connection_tracking; u8 deterministic; + u8 out2in_dpo; u32 translation_buckets; u32 translation_memory_size; u32 max_translations; @@ -422,6 +429,9 @@ void snat_add_del_addr_to_fib (ip4_address_t * addr, int is_add); format_function_t format_snat_user; +format_function_t format_snat_static_mapping; +format_function_t format_snat_static_map_to_resolve; +format_function_t format_det_map_ses; typedef struct { u32 cached_sw_if_index; @@ -536,10 +546,11 @@ void snat_add_address(snat_main_t *sm, ip4_address_t *addr, u32 vrf_id, u8 twice_nat); int snat_del_address(snat_main_t *sm, ip4_address_t addr, u8 delete_sm, u8 twice_nat); +void nat44_add_del_address_dpo (ip4_address_t addr, u8 is_add); 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, - u8 twice_nat); + u8 twice_nat, u8 out2in_only, u8 *tag); clib_error_t * snat_api_init(vlib_main_t * vm, snat_main_t * sm); int snat_set_workers (uword * bitmap); int snat_interface_add_del(u32 sw_if_index, u8 is_inside, int is_del); @@ -552,7 +563,7 @@ u8 * format_snat_protocol(u8 * s, va_list * args); int nat44_add_del_lb_static_mapping (ip4_address_t e_addr, u16 e_port, snat_protocol_t proto, u32 vrf_id, nat44_lb_addr_port_t *locals, u8 is_add, - u8 twice_nat); + u8 twice_nat, u8 out2in_only, u8 *tag); int nat44_del_session (snat_main_t *sm, ip4_address_t *addr, u16 port, snat_protocol_t proto, u32 vrf_id, int is_in); void nat_free_session_data (snat_main_t * sm, snat_session_t * s, @@ -561,6 +572,9 @@ snat_user_t * nat_user_get_or_create (snat_main_t *sm, ip4_address_t *addr, u32 fib_index, u32 thread_index); snat_session_t * nat_session_alloc_or_recycle (snat_main_t *sm, snat_user_t *u, u32 thread_index); +void nat_set_alloc_addr_and_port_mape (u16 psid, u16 psid_offset, + u16 psid_length); +void nat_set_alloc_addr_and_port_default (void); static_always_inline u8 icmp_is_error_message (icmp46_header_t * icmp)