ap->addr = *addr;
if (vrf_id != ~0)
ap->fib_index =
- fib_table_find_or_create_and_lock (FIB_PROTOCOL_IP4, vrf_id);
+ fib_table_find_or_create_and_lock (FIB_PROTOCOL_IP4, vrf_id,
+ FIB_SOURCE_PLUGIN_HI);
else
ap->fib_index = ~0;
#define _(N, i, n, s) \
return VNET_API_ERROR_INVALID_VALUE;
fib_index = fib_table_find_or_create_and_lock (FIB_PROTOCOL_IP4,
- vrf_id);
+ vrf_id,
+ FIB_SOURCE_PLUGIN_HI);
/* Find external address in allocated addresses and reserve port for
address and port pair mapping when dynamic translations enabled */
if (!m)
return VNET_API_ERROR_NO_SUCH_ENTRY;
- fib_table_unlock (m->fib_index, FIB_PROTOCOL_IP4);
+ fib_table_unlock (m->fib_index, FIB_PROTOCOL_IP4, FIB_SOURCE_PLUGIN_HI);
/* Free external address port */
if (!sm->static_mapping_only)
}
if (a->fib_index != ~0)
- fib_table_unlock(a->fib_index, FIB_PROTOCOL_IP4);
+ fib_table_unlock(a->fib_index, FIB_PROTOCOL_IP4,
+ FIB_SOURCE_PLUGIN_HI);
/* Delete sessions using address */
if (a->busy_tcp_ports || a->busy_udp_ports || a->busy_icmp_ports)
}
/* Add to translated packets worker lookup */
+ key0.port = udp0->dst_port;
+ kv0.key = key0.as_u64;
kv0.value = next_worker_index;
clib_bihash_add_del_8_8 (&sm->worker_by_out, &kv0, 1);
}
sm->max_translations_per_user = max_translations_per_user;
sm->outside_vrf_id = outside_vrf_id;
sm->outside_fib_index = fib_table_find_or_create_and_lock (FIB_PROTOCOL_IP4,
- outside_vrf_id);
+ outside_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);
+ inside_vrf_id,
+ FIB_SOURCE_PLUGIN_HI);
sm->static_mapping_only = static_mapping_only;
sm->static_mapping_connection_tracking = static_mapping_connection_tracking;