session: first approximation implementation of tls
[vpp.git] / src / vnet / udp / udp.c
index c12e837..3b8b707 100644 (file)
@@ -321,7 +321,9 @@ const static transport_proto_vft_t udp_proto = {
   .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* */
 
@@ -334,6 +336,7 @@ udp_init (vlib_main_t * vm)
   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;
@@ -353,10 +356,11 @@ udp_init (vlib_main_t * vm)
   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
@@ -367,6 +371,13 @@ udp_init (vlib_main_t * vm)
   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;
 }