* Trade memory for speed, for now */
u32 *session_type_to_next;
+ /** Thread for cl and ho that rely on cl allocs */
+ u32 transport_cl_thread;
+
transport_proto_t last_transport_proto_type;
/*
session_send_io_evt_to_thread (s->tx_fifo, SESSION_IO_EVT_TX);
}
+always_inline u32
+transport_cl_thread (void)
+{
+ return session_main.transport_cl_thread;
+}
+
/*
* Listen sessions
*/
smm->local_endpoints_table_memory);
num_threads = 1 /* main thread */ + vtm->n_threads;
if (num_threads > 1)
- clib_spinlock_init (&local_endpoints_lock);
+ {
+ clib_spinlock_init (&local_endpoints_lock);
+ /* Main not polled if there are workers */
+ smm->transport_cl_thread = 1;
+ }
}
/*
{
tls_ctx_t *ctx;
- ctx = tls_ctx_get_w_thread (ctx_handle, 1 /* udp allocs on thread 1 */);
+ ctx = tls_ctx_get_w_thread (ctx_handle, transport_cl_thread ());
ctx->tls_session_handle = session_handle (us);
ctx->c_flags |= TRANSPORT_CONNECTION_F_NO_LOOKUP;
return -1;
}
- ctx_handle = tls_ctx_alloc_w_thread (engine_type, 1 /* because of udp */);
- ctx = tls_ctx_get_w_thread (ctx_handle, 1);
+ ctx_handle = tls_ctx_alloc_w_thread (engine_type, transport_cl_thread ());
+ ctx = tls_ctx_get_w_thread (ctx_handle, transport_cl_thread ());
ctx->parent_app_wrk_index = sep->app_wrk_index;
ctx->parent_app_api_context = sep->opaque;
ctx->tcp_is_ip4 = sep->is_ip4;
dtls_half_open_get (u32 ho_index)
{
tls_ctx_t *ho_ctx;
- ho_ctx = tls_ctx_get_w_thread (ho_index, 1 /* udp connects */);
+ ho_ctx = tls_ctx_get_w_thread (ho_index, transport_cl_thread ());
return &ho_ctx->connection;
}
dtls_cleanup_ho (u32 ho_index)
{
tls_ctx_t *ctx;
- ctx = tls_ctx_get_w_thread (ho_index, 1 /* udp connects */);
+ ctx = tls_ctx_get_w_thread (ho_index, transport_cl_thread ());
tls_ctx_free (ctx);
}
tls_ctx_t *ho_ctx;
session_t *us;
- ho_ctx = tls_ctx_get_w_thread (ho_index, 1 /* udp connects */);
+ ho_ctx = tls_ctx_get_w_thread (ho_index, transport_cl_thread ());
us = session_get_from_handle (ho_ctx->tls_session_handle);
s = format (s, "[%d:%d][%s] half-open app_wrk %u engine %u us %d:%d",
udp_connection_register_port (vm, lcl_port, rmt->is_ip4);
/* We don't poll main thread if we have workers */
- if (vlib_num_workers ())
- thread_index = 1;
+ thread_index = transport_cl_thread ();
uc = udp_connection_alloc (thread_index);
ip_copy (&uc->c_rmt_ip, &rmt->ip, rmt->is_ip4);
u32 thread_index;
/* We don't poll main thread if we have workers */
- thread_index = vlib_num_workers ()? 1 : 0;
+ thread_index = transport_cl_thread ();
uc = udp_connection_get (conn_index, thread_index);
if (!uc)
return 0;
self.thru_host_stack_setup()
self.client_uni_dir_dtls_timeout = 20
- self.server_dtls_args = ["-p dtls", self.server_port]
+ self.server_dtls_args = ["-p", "dtls", self.server_port]
self.client_uni_dir_dtls_test_args = ["-N", "1000", "-U", "-X",
- "-p dtls", "-T 1400",
+ "-p", "dtls", "-T 1400",
self.loop0.local_ip4,
self.server_port]