.send_space = udp_send_space,
.format_connection = format_udp_session,
.format_half_open = format_udp_half_open_session,
- .format_listener = format_udp_listener_session
+ .format_listener = format_udp_listener_session,
+ .tx_type = TRANSPORT_TX_DEQUEUE,
+ .service_type = TRANSPORT_SERVICE_VC,
};
/* *INDENT-ON* */
u32 num_threads;
clib_error_t *error = 0;
ip_protocol_info_t *pi;
+ int i;
if ((error = vlib_call_init_function (vm, ip_main_init)))
return error;
pi->format_header = format_udp_header;
pi->unformat_pg_edit = unformat_pg_udp_header;
-
/* Register as transport with URI */
- transport_register_protocol (TRANSPORT_PROTO_UDP, 1, &udp_proto);
- transport_register_protocol (TRANSPORT_PROTO_UDP, 0, &udp_proto);
+ transport_register_protocol (TRANSPORT_PROTO_UDP, &udp_proto,
+ FIB_PROTOCOL_IP4, ip4_lookup_node.index);
+ transport_register_protocol (TRANSPORT_PROTO_UDP, &udp_proto,
+ FIB_PROTOCOL_IP6, ip6_lookup_node.index);
/*
* Initialize data structures
vec_validate (um->connection_peekers, num_threads - 1);
vec_validate (um->peekers_readers_locks, num_threads - 1);
vec_validate (um->peekers_write_locks, num_threads - 1);
+
+ if (num_threads > 1)
+ for (i = 0; i < num_threads; i++)
+ {
+ clib_spinlock_init (&um->peekers_readers_locks[i]);
+ clib_spinlock_init (&um->peekers_write_locks[i]);
+ }
return error;
}