u32 session_index;
u32 counter_index;
u32 nincr = 0;
- u32 cpu_index = os_get_cpu_number ();
+ u32 thread_index = vm->thread_index;
/* *INDENT-OFF* */
pool_foreach (session, lm->sessions,
session_index_to_counter_index (session_index,
SESSION_COUNTER_USER_TO_NETWORK);
vlib_increment_combined_counter (&lm->counter_main,
- cpu_index,
+ thread_index,
counter_index,
1/*pkt*/, 1111 /*bytes*/);
vlib_increment_combined_counter (&lm->counter_main,
- cpu_index,
+ thread_index,
counter_index+1,
1/*pkt*/, 2222 /*bytes*/);
nincr++;
return 0;
}
-static uword
-dummy_interface_tx (vlib_main_t * vm,
- vlib_node_runtime_t * node, vlib_frame_t * frame)
-{
- clib_warning ("you shouldn't be here, leaking buffers...");
- return frame->n_vectors;
-}
-
/* *INDENT-OFF* */
VNET_DEVICE_CLASS (l2tpv3_device_class,static) = {
.name = "L2TPv3",
.format_device_name = format_l2tpv3_name,
.name_renumber = l2tpv3_name_renumber,
- .tx_function = dummy_interface_tx,
};
/* *INDENT-ON* */
return VNET_API_ERROR_INVALID_VALUE;
pool_get (lm->sessions, s);
- memset (s, 0, sizeof (*s));
+ clib_memset (s, 0, sizeof (*s));
clib_memcpy (&s->our_address, our_address, sizeof (s->our_address));
clib_memcpy (&s->client_address, client_address,
sizeof (s->client_address));
if (sw_if_index)
*sw_if_index = hi->sw_if_index;
+ if (!lm->proto_registered)
+ {
+ ip6_register_protocol (IP_PROTOCOL_L2TP, l2t_decap_local_node.index);
+ lm->proto_registered = true;
+ }
+
return 0;
}
return 0;
}
-/* Enable/disable L2TPv3 intercept on IP6 fowarding path */
+/* Enable/disable L2TPv3 intercept on IP6 forwarding path */
static clib_error_t *
set_ip6_l2tpv3 (vlib_main_t * vm,
unformat_input_t * input, vlib_cli_command_t * cmd)
pi = ip_get_protocol_info (im, IP_PROTOCOL_L2TP);
pi->unformat_pg_edit = unformat_pg_l2tp_header;
+ lm->proto_registered = false;
+
/* insure these nodes are included in build */
l2tp_encap_init (vm);
- l2tp_decap_init ();
return 0;
}