+int
+vpp_add_async_run_event (tls_ctx_t * ctx, openssl_resume_handler * handler)
+{
+ u32 eidx;
+ openssl_evt_t *event;
+ openssl_ctx_t *oc = (openssl_ctx_t *) ctx;
+ u32 thread_id = ctx->c_thread_index;
+
+ eidx = openssl_evt_alloc ();
+ event = openssl_evt_get (eidx);
+
+ event->ctx_index = oc->openssl_ctx_index;
+ event->status = SSL_ASYNC_PENDING;
+ event->handler = handler;
+ event->cb_args.event_index = eidx;
+ event->cb_args.thread_index = thread_id;
+ event->engine_callback.callback = openssl_async_run;
+ event->engine_callback.arg = &event->cb_args;
+
+ /* This is a retry event, and need to put to ring to make it run again */
+ return openssl_async_run (&event->cb_args);
+
+}
+