X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fnat%2Fnat.h;h=237d945a72499d2801e0af97640761b93dff1966;hb=dd1e3e780;hp=c9139b352007bbf3d9b56c759ec5616290462735;hpb=e69e423743630b52e13db58c3f0229df8a46c07f;p=vpp.git diff --git a/src/plugins/nat/nat.h b/src/plugins/nat/nat.h index c9139b35200..237d945a724 100644 --- a/src/plugins/nat/nat.h +++ b/src/plugins/nat/nat.h @@ -110,6 +110,24 @@ typedef struct u8 cached; } nat44_reass_trace_t; +/* NAT API Configuration flags */ +#define foreach_nat_config_flag \ + _(0x01, IS_TWICE_NAT) \ + _(0x02, IS_SELF_TWICE_NAT) \ + _(0x04, IS_OUT2IN_ONLY) \ + _(0x08, IS_ADDR_ONLY) \ + _(0x10, IS_OUTSIDE) \ + _(0x20, IS_INSIDE) \ + _(0x40, IS_STATIC) \ + _(0x80, IS_EXT_HOST_VALID) \ + +typedef enum nat_config_flags_t_ +{ +#define _(n,f) NAT_API_##f = n, + foreach_nat_config_flag +#undef _ +} nat_config_flags_t; + /* External address and port allocation modes */ #define foreach_nat_addr_and_port_alloc_alg \ _(0, DEFAULT, "default") \ @@ -206,6 +224,9 @@ typedef CLIB_PACKED(struct /* Last heard timer */ f64 last_heard; + /* Last HA refresh */ + f64 ha_last_refreshed; + /* Counters */ u64 total_bytes; u32 total_pkts; @@ -944,7 +965,7 @@ int snat_add_interface_address (snat_main_t * sm, u32 sw_if_index, int is_del, * @param port L4 port number * @param proto L4 protocol * @param vrf_id VRF ID - * @param is_in 1 = inside network addres and por pair, 0 = outside + * @param is_in 1 = inside network address and port pair, 0 = outside * * @return 0 on success, non-zero value otherwise */ @@ -958,7 +979,7 @@ int nat44_del_session (snat_main_t * sm, ip4_address_t * addr, u16 port, * @param port L4 port number * @param proto L4 protocol * @param vrf_id VRF ID - * @param is_in 1 = inside network addres and por pair, 0 = outside + * @param is_in 1 = inside network address and port pair, 0 = outside * * @return 0 on success, non-zero value otherwise */ @@ -971,9 +992,10 @@ int nat44_del_ed_session (snat_main_t * sm, ip4_address_t * addr, u16 port, * * @param s NAT session * @param thread_index thread index + * @param is_ha is HA event */ void nat_free_session_data (snat_main_t * sm, snat_session_t * s, - u32 thread_index); + u32 thread_index, u8 is_ha); /** * @brief Find or create NAT user @@ -997,7 +1019,7 @@ snat_user_t *nat_user_get_or_create (snat_main_t * sm, ip4_address_t * addr, */ snat_session_t *nat_session_alloc_or_recycle (snat_main_t * sm, snat_user_t * u, - u32 thread_index); + u32 thread_index, f64 now); /** * @brief Allocate NAT endpoint-dependent session @@ -1038,7 +1060,7 @@ void nat_set_alloc_addr_and_port_default (void); * * @param addresses vector of outside addresses * @param thread_index thread index - * @param k adddress, port and protocol + * @param k address, port and protocol */ void snat_free_outside_address_and_port (snat_address_t * addresses, u32 thread_index, @@ -1102,7 +1124,6 @@ int snat_static_mapping_match (snat_main_t * sm, void snat_add_del_addr_to_fib (ip4_address_t * addr, u8 p_len, u32 sw_if_index, int is_add); - /* * Why is this here? Because we don't need to touch this layer to * simply reply to an icmp. We need to change id to a unique