srtp_ctx_alloc_w_thread (u32 thread_index)
{
srtp_tc_t *ctx;
- pool_get_zero (srtp_main.ctx_pool[thread_index], ctx);
+ pool_get_aligned_safe (srtp_main.ctx_pool[thread_index], ctx,
+ CLIB_CACHE_LINE_BYTES);
+ clib_memset (ctx, 0, sizeof (*ctx));
ctx->c_thread_index = thread_index;
ctx->srtp_ctx_handle = ctx - srtp_main.ctx_pool[thread_index];
ctx->app_session_handle = SESSION_INVALID_HANDLE;
{
sp = &ctx->srtp_policy[i];
sp_cfg = &cfg->policies[i];
+ clib_memset (sp, 0, sizeof (*sp));
srtp_crypto_policy_set_rtp_default (&sp->rtp);
srtp_crypto_policy_set_rtcp_default (&sp->rtcp);
sp->ssrc.value = sp_cfg->ssrc_value;
sp->key = clib_mem_alloc (sp_cfg->key_len);
clib_memcpy (sp->key, sp_cfg->key, sp_cfg->key_len);
- sp->ekt = 0;
sp->next = i < 1 ? &ctx->srtp_policy[i + 1] : 0;
sp->window_size = sp_cfg->window_size;
sp->allow_repeat_tx = sp_cfg->allow_repeat_tx;
{
srtp_tc_t *ctx;
- pool_get (srtp_main.ctx_pool[thread_index], ctx);
+ pool_get_aligned_safe (srtp_main.ctx_pool[thread_index], ctx,
+ CLIB_CACHE_LINE_BYTES);
clib_memcpy (ctx, ctx_ptr, sizeof (*ctx));
ctx->c_thread_index = thread_index;
app_session = session_get (ctx->c_s_index, ctx->c_thread_index);
app_session->app_wrk_index = ctx->parent_app_wrk_index;
app_session->connection_index = ctx->srtp_ctx_handle;
+ app_session->opaque = ctx->parent_app_api_context;
app_session->session_type =
session_type_from_proto_and_ip (TRANSPORT_PROTO_SRTP, ctx->udp_is_ip4);
int
srtp_add_vpp_q_builtin_rx_evt (session_t *s)
{
- if (svm_fifo_set_event (s->rx_fifo))
- session_send_io_evt_to_thread (s->rx_fifo, SESSION_IO_EVT_BUILTIN_RX);
+ session_enqueue_notify (s);
return 0;
}
app_worker_t *app_wrk;
app_wrk = app_worker_get_if_valid (app_session->app_wrk_index);
if (PREDICT_TRUE (app_wrk != 0))
- app_worker_lock_and_send_event (app_wrk, app_session, SESSION_IO_EVT_RX);
+ app_worker_rx_notify (app_wrk, app_session);
}
static inline int
ctx->parent_app_api_context = sep->opaque;
ctx->udp_is_ip4 = sep->is_ip4;
ctx->srtp_ctx_handle = ctx_index;
+ ctx->c_flags |= TRANSPORT_CONNECTION_F_NO_LOOKUP;
srtp_init_policy (ctx, (transport_endpt_cfg_srtp_t *) sep->ext_cfg->data);
}
static u32
-srtp_start_listen (u32 app_listener_index, transport_endpoint_t *tep)
+srtp_start_listen (u32 app_listener_index, transport_endpoint_cfg_t *tep)
{
vnet_listen_args_t _bargs, *args = &_bargs;
session_handle_t udp_al_handle;
lctx->srtp_session_handle = udp_al_handle;
lctx->app_session_handle = listen_session_get_handle (app_listener);
lctx->udp_is_ip4 = sep->is_ip4;
+ lctx->c_s_index = app_listener_index;
+ lctx->c_flags |= TRANSPORT_CONNECTION_F_NO_LOOKUP;
srtp_init_policy (lctx, (transport_endpt_cfg_srtp_t *) sep->ext_cfg->data);