(clib_net_to_host_u16 (s->out2in.port) != e_port))
continue;
}
-
- if (s->flags & SNAT_SESSION_FLAG_LOAD_BALANCING)
- continue;
+
+ if (is_lb_session (s))
+ continue;
nat_free_session_data (sm, s, tsm - sm->per_thread_data);
clib_dlist_remove (tsm->list_pool, s->per_user_index);
elt = pool_elt_at_index (tsm->list_pool, elt->next);
ses_index = elt->value;
+ if (!(is_lb_session (s)))
+ continue;
+
if ((s->in2out.addr.as_u32 != local->addr.as_u32) &&
(clib_net_to_host_u16 (s->in2out.port) != local->port))
continue;
* address.
* @param is_addr_only If matched mapping is address only
* @param twice_nat If matched mapping is twice NAT.
+ * @param lb If matched mapping is load-balanced.
*
* @returns 0 if match found otherwise 1.
*/
snat_session_key_t * mapping,
u8 by_external,
u8 *is_addr_only,
- u8 *twice_nat)
+ u8 *twice_nat,
+ u8 *lb)
{
clib_bihash_kv_8_8_t kv, value;
snat_static_mapping_t *m;
if (PREDICT_FALSE(twice_nat != 0))
*twice_nat = m->twice_nat;
+ if (PREDICT_FALSE(lb != 0))
+ *lb = vec_len (m->locals) > 0;
+
return 0;
}
snat_config (vlib_main_t * vm, unformat_input_t * input)
{
snat_main_t * sm = &snat_main;
+ nat66_main_t * nm = &nat66_main;
u32 translation_buckets = 1024;
u32 translation_memory_size = 128<<20;
u32 user_buckets = 128;
u32 user_memory_size = 64<<20;
u32 max_translations_per_user = 100;
u32 outside_vrf_id = 0;
+ u32 outside_ip6_vrf_id = 0;
u32 inside_vrf_id = 0;
u32 static_mapping_buckets = 1024;
u32 static_mapping_memory_size = 64<<20;
else if (unformat (input, "outside VRF id %d",
&outside_vrf_id))
;
+ else if (unformat (input, "outside ip6 VRF id %d",
+ &outside_ip6_vrf_id))
+ ;
else if (unformat (input, "inside VRF id %d",
&inside_vrf_id))
;
sm->outside_fib_index = fib_table_find_or_create_and_lock (FIB_PROTOCOL_IP4,
outside_vrf_id,
FIB_SOURCE_PLUGIN_HI);
+ nm->outside_vrf_id = outside_ip6_vrf_id;
+ nm->outside_fib_index = fib_table_find_or_create_and_lock (FIB_PROTOCOL_IP6,
+ outside_ip6_vrf_id,
+ FIB_SOURCE_PLUGIN_HI);
sm->inside_vrf_id = inside_vrf_id;
sm->inside_fib_index = fib_table_find_or_create_and_lock (FIB_PROTOCOL_IP4,
inside_vrf_id,