session: use generic session pool for listeners
[vpp.git] / src / vnet / tls / tls.c
index 040db02..492b3cc 100644 (file)
@@ -189,7 +189,8 @@ tls_notify_app_enqueue (tls_ctx_t * ctx, stream_session_t * app_session)
 {
   application_t *app;
   app = application_get_if_valid (app_session->app_index);
-  tls_add_app_q_evt (app, app_session);
+  if (PREDICT_TRUE (app != 0))
+    tls_add_app_q_evt (app, app_session);
 }
 
 int
@@ -383,8 +384,7 @@ tls_session_accept_callback (stream_session_t * tls_session)
   tls_ctx_t *lctx, *ctx;
   u32 ctx_handle;
 
-  tls_listener = listen_session_get (tls_session->session_type,
-                                    tls_session->listener_index);
+  tls_listener = listen_session_get (tls_session->listener_index);
   lctx = tls_listener_ctx_get (tls_listener->opaque);
 
   ctx_handle = tls_ctx_alloc (lctx->tls_ctx_engine);
@@ -556,7 +556,6 @@ tls_start_listen (u32 app_listener_index, transport_endpoint_t * tep)
   stream_session_t *tls_listener;
   tls_ctx_t *lctx;
   u32 lctx_index;
-  session_type_t st;
   stream_session_t *app_listener;
   tls_engine_type_t engine_type;
 
@@ -580,8 +579,7 @@ tls_start_listen (u32 app_listener_index, transport_endpoint_t * tep)
   tls_listener = listen_session_get_from_handle (tls_handle);
   tls_listener->opaque = lctx_index;
 
-  st = session_type_from_proto_and_ip (TRANSPORT_PROTO_TLS, sep->is_ip4);
-  app_listener = listen_session_get (st, app_listener_index);
+  app_listener = listen_session_get (app_listener_index);
 
   lctx = tls_listener_ctx_get (lctx_index);
   lctx->parent_app_index = sep->app_index;
@@ -667,10 +665,10 @@ format_tls_listener (u8 * s, va_list * args)
 {
   u32 tc_index = va_arg (*args, u32);
   tls_ctx_t *ctx = tls_listener_ctx_get (tc_index);
-  u32 listener_index, type;
+  u32 listener_index, thread_index;
 
-  listen_session_parse_handle (ctx->tls_session_handle, &type,
-                              &listener_index);
+  listen_session_parse_handle (ctx->tls_session_handle, &listener_index,
+                              &thread_index);
   return format (s, "[TLS] listener app %u child %u", ctx->parent_app_index,
                 listener_index);
 }
@@ -708,7 +706,7 @@ tls_register_engine (const tls_engine_vft_t * vft, tls_engine_type_t type)
   tls_vfts[type] = *vft;
 }
 
-clib_error_t *
+static clib_error_t *
 tls_init (vlib_main_t * vm)
 {
   vlib_thread_main_t *vtm = vlib_get_thread_main ();
@@ -725,8 +723,9 @@ tls_init (vlib_main_t * vm)
   memset (options, 0, sizeof (options));
 
   a->session_cb_vft = &tls_app_cb_vft;
-  a->api_client_index = (1 << 24) + 1;
+  a->api_client_index = APP_INVALID_INDEX;
   a->options = options;
+  a->name = format (0, "tls");
   a->options[APP_OPTIONS_SEGMENT_SIZE] = segment_size;
   a->options[APP_OPTIONS_RX_FIFO_SIZE] = fifo_size;
   a->options[APP_OPTIONS_TX_FIFO_SIZE] = fifo_size;
@@ -752,7 +751,7 @@ tls_init (vlib_main_t * vm)
                               FIB_PROTOCOL_IP4, ~0);
   transport_register_protocol (TRANSPORT_PROTO_TLS, &tls_proto,
                               FIB_PROTOCOL_IP6, ~0);
-
+  vec_free (a->name);
   return 0;
 }