s = nat_session_alloc_or_recycle (sm, u, thread_index);
if (!s)
{
+ nat44_delete_user_with_no_session (sm, u, thread_index);
nat_log_warn ("create NAT session failed");
return 0;
}
u32 pkts_processed = 0;
snat_main_t * sm = &snat_main;
f64 now = vlib_time_now (vm);
- u32 thread_index = vlib_get_thread_index ();
+ u32 thread_index = vm->thread_index;
from = vlib_frame_vector_args (frame);
n_left_from = frame->n_vectors;
&& (udp0->dst_port ==
clib_host_to_net_u16(UDP_DST_PORT_dhcp_to_client))))
{
- vnet_feature_next
- (vnet_buffer (b0)->sw_if_index[VLIB_RX], &next0, b0);
+ vnet_feature_next (&next0, b0);
goto trace0;
}
{
b0->error = node->errors[SNAT_OUT2IN_ERROR_NO_TRANSLATION];
next0 = SNAT_OUT2IN_NEXT_DROP;
- goto trace0;
}
+ goto trace0;
}
/* Create session initiated by host from external network */
&& (udp1->dst_port ==
clib_host_to_net_u16(UDP_DST_PORT_dhcp_to_client))))
{
- vnet_feature_next
- (vnet_buffer (b1)->sw_if_index[VLIB_RX], &next1, b1);
+ vnet_feature_next (&next1, b1);
goto trace1;
}
{
b1->error = node->errors[SNAT_OUT2IN_ERROR_NO_TRANSLATION];
next1 = SNAT_OUT2IN_NEXT_DROP;
- goto trace1;
}
+ goto trace1;
}
/* Create session initiated by host from external network */
&& (udp0->dst_port ==
clib_host_to_net_u16(UDP_DST_PORT_dhcp_to_client))))
{
- vnet_feature_next
- (vnet_buffer (b0)->sw_if_index[VLIB_RX], &next0, b0);
+ vnet_feature_next (&next0, b0);
goto trace00;
}
{
b0->error = node->errors[SNAT_OUT2IN_ERROR_NO_TRANSLATION];
next0 = SNAT_OUT2IN_NEXT_DROP;
- goto trace00;
}
+ goto trace00;
}
/* Create session initiated by host from external network */
u32 pkts_processed = 0;
snat_main_t *sm = &snat_main;
f64 now = vlib_time_now (vm);
- u32 thread_index = vlib_get_thread_index ();
+ u32 thread_index = vm->thread_index;
snat_main_per_thread_data_t *per_thread_data =
&sm->per_thread_data[thread_index];
u32 *fragments_to_drop = 0;
&& (udp0->dst_port
== clib_host_to_net_u16(UDP_DST_PORT_dhcp_to_client))))
{
- vnet_feature_next
- (vnet_buffer (b0)->sw_if_index[VLIB_RX],
- &next0, b0);
+ vnet_feature_next (&next0, b0);
goto trace0;
}
s = nat_session_alloc_or_recycle (sm, u, thread_index);
if (!s)
{
+ nat44_delete_user_with_no_session (sm, u, thread_index);
nat_log_warn ("create NAT session failed");
return 0;
}
s = nat_session_alloc_or_recycle (sm, u, thread_index);
if (!s)
{
+ nat44_delete_user_with_no_session (sm, u, thread_index);
nat_log_warn ("create NAT session failed");
return;
}
s = nat_session_alloc_or_recycle (sm, u, thread_index);
if (!s)
{
+ nat44_delete_user_with_no_session (sm, u, thread_index);
nat_log_warn ("create NAT session failed");
return 0;
}
nat44_ed_out2in_next_t next_index;
snat_main_t *sm = &snat_main;
f64 now = vlib_time_now (vm);
- u32 thread_index = vlib_get_thread_index ();
+ u32 thread_index = vm->thread_index;
snat_main_per_thread_data_t *tsm = &sm->per_thread_data[thread_index];
stats_node_index = is_slow_path ? nat44_ed_out2in_slowpath_node.index :
&& (udp0->dst_port ==
clib_host_to_net_u16(UDP_DST_PORT_dhcp_to_client))))
{
- vnet_feature_next
- (vnet_buffer (b0)->sw_if_index[VLIB_RX], &next0, b0);
+ vnet_feature_next (&next0, b0);
goto trace00;
}
&& (udp1->dst_port ==
clib_host_to_net_u16(UDP_DST_PORT_dhcp_to_client))))
{
- vnet_feature_next
- (vnet_buffer (b1)->sw_if_index[VLIB_RX], &next1, b1);
+ vnet_feature_next (&next1, b1);
goto trace01;
}
&& (udp0->dst_port ==
clib_host_to_net_u16(UDP_DST_PORT_dhcp_to_client))))
{
- vnet_feature_next
- (vnet_buffer (b0)->sw_if_index[VLIB_RX], &next0, b0);
+ vnet_feature_next (&next0, b0);
goto trace0;
}
snat_out2in_next_t next_index;
u32 pkts_processed = 0;
snat_main_t * sm = &snat_main;
- u32 thread_index = vlib_get_thread_index ();
+ u32 thread_index = vm->thread_index;
from = vlib_frame_vector_args (frame);
n_left_from = frame->n_vectors;
u32 n_left_to_next_worker = 0, *to_next_worker = 0;
u32 next_worker_index = 0;
u32 current_worker_index = ~0;
- u32 thread_index = vlib_get_thread_index ();
+ u32 thread_index = vm->thread_index;
vlib_frame_t *d = 0;
ASSERT (vec_len (sm->workers));
sw_if_index0 = vnet_buffer(b0)->sw_if_index[VLIB_RX];
rx_fib_index0 = ip4_fib_table_get_index_for_sw_if_index(sw_if_index0);
- vnet_feature_next (sw_if_index0, &next0, b0);
+ vnet_feature_next (&next0, b0);
if (PREDICT_FALSE(ip0->ttl == 1))
{