X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Ftlsopenssl%2Ftls_async.c;h=e577f34eacf2ec8da0dd1aa06ad0944a2fa475e1;hb=be4d1aa2c;hp=50124a63678df5eb706d326e3965e1620c826f21;hpb=7040075ef16ba6dd85b49905929caa4e8ac4194f;p=vpp.git diff --git a/src/plugins/tlsopenssl/tls_async.c b/src/plugins/tlsopenssl/tls_async.c index 50124a63678..e577f34eacf 100644 --- a/src/plugins/tlsopenssl/tls_async.c +++ b/src/plugins/tlsopenssl/tls_async.c @@ -142,7 +142,8 @@ openssl_engine_register (char *engine_name, char *algorithm) } if (registered < 0) { - return 0; + clib_error ("engine %s is not regisered in VPP", engine_name); + return -1; } ENGINE_load_builtin_engines (); @@ -151,7 +152,8 @@ openssl_engine_register (char *engine_name, char *algorithm) if (engine == NULL) { - return 0; + clib_warning ("Failed to find engine ENGINE_by_id %s", engine_name); + return -1; } om->engine = engine; @@ -166,7 +168,7 @@ openssl_engine_register (char *engine_name, char *algorithm) { clib_warning ("Failed to set engine %s algorithm %s\n", engine_name, algorithm); - return 0; + return -1; } } else @@ -175,13 +177,13 @@ openssl_engine_register (char *engine_name, char *algorithm) { clib_warning ("Failed to set engine %s to all algorithm", engine_name); - return 0; + return -1; } } om->start_polling = 1; - return 1; + return 0; } @@ -245,7 +247,7 @@ openssl_evt_alloc (void) } int -openssl_async_run (void *evt) +tls_async_openssl_callback (SSL * s, void *evt) { openssl_evt_t *event, *event_tail; openssl_async_t *om = &openssl_async_main; @@ -299,7 +301,7 @@ vpp_add_async_pending_event (tls_ctx_t * ctx, 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.callback = tls_async_openssl_callback; event->engine_callback.arg = &event->cb_args; /* add to pending list */ @@ -326,11 +328,11 @@ vpp_add_async_run_event (tls_ctx_t * ctx, openssl_resume_handler * handler) 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.callback = tls_async_openssl_callback; 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); + return tls_async_openssl_callback (NULL, &event->cb_args); } @@ -340,7 +342,7 @@ event_handler (void *tls_async) openssl_resume_handler *handler; openssl_evt_t *callback; - stream_session_t *tls_session; + session_t *tls_session; int thread_index; tls_ctx_t *ctx; @@ -365,26 +367,10 @@ event_handler (void *tls_async) void dasync_polling () { - openssl_async_t *om = &openssl_async_main; - openssl_evt_t *event; - int *evt_pending; - openssl_tls_callback_t *engine_cb; - u8 thread_index = vlib_get_thread_index (); - - /* POC code here to simulate the engine to call callback */ - evt_pending = &om->status[thread_index].evt_pending_head; - while (*evt_pending >= 0) - { - TLS_DBG (2, "polling... current head = %d\n", *evt_pending); - event = openssl_evt_get_w_thread (*evt_pending, thread_index); - *evt_pending = event->next; - if (event->status == SSL_ASYNC_PENDING) - { - engine_cb = &event->engine_callback; - (*engine_cb->callback) (engine_cb->arg); - } - } - +/* dasync is a fake async device, and could not be polled. + * We have added code in the dasync engine to triggered the callback already, + * so nothing can be done here + */ } void