session: first approximation implementation of tls
[vpp.git] / src / vnet / session / session_node.c
index e9cfc7b..9cd0ef1 100644 (file)
@@ -20,7 +20,7 @@
 #include <vnet/session/transport.h>
 #include <vnet/session/application.h>
 #include <vnet/session/session_debug.h>
-#include <vlibmemory/unix_shared_memory_queue.h>
+#include <svm/queue.h>
 
 vlib_node_registration_t session_queue_node;
 
@@ -389,6 +389,20 @@ session_tx_fifo_dequeue_and_snd (vlib_main_t * vm, vlib_node_runtime_t * node,
                                         n_tx_pkts, 0);
 }
 
+int
+session_tx_fifo_dequeue_internal (vlib_main_t * vm,
+                                 vlib_node_runtime_t * node,
+                                 session_manager_main_t * smm,
+                                 session_fifo_event_t * e0,
+                                 stream_session_t * s0, u32 thread_index,
+                                 int *n_tx_pkts)
+{
+  application_t *app;
+  app = application_get (s0->opaque);
+  svm_fifo_unset_event (s0->server_tx_fifo);
+  return app->cb_fns.builtin_app_tx_callback (s0);
+}
+
 always_inline stream_session_t *
 session_event_get_session (session_fifo_event_t * e, u8 thread_index)
 {
@@ -406,7 +420,7 @@ dump_thread_0_event_queue (void)
   int i, index;
   i8 *headp;
 
-  unix_shared_memory_queue_t *q;
+  svm_queue_t *q;
   q = smm->vpp_event_queues[my_thread_index];
 
   index = q->head;
@@ -486,7 +500,7 @@ u8
 session_node_lookup_fifo_event (svm_fifo_t * f, session_fifo_event_t * e)
 {
   session_manager_main_t *smm = vnet_get_session_manager_main ();
-  unix_shared_memory_queue_t *q;
+  svm_queue_t *q;
   session_fifo_event_t *pending_event_vector, *evt;
   int i, index, found = 0;
   i8 *headp;
@@ -505,7 +519,7 @@ session_node_lookup_fifo_event (svm_fifo_t * f, session_fifo_event_t * e)
       clib_memcpy (e, headp, q->elsize);
       found = session_node_cmp_event (e, f);
       if (found)
-       break;
+       return 1;
       if (++index == q->maxsize)
        index = 0;
     }
@@ -533,7 +547,7 @@ session_queue_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node,
   session_fifo_event_t *my_pending_event_vector, *pending_disconnects, *e;
   session_fifo_event_t *my_fifo_events;
   u32 n_to_dequeue, n_events;
-  unix_shared_memory_queue_t *q;
+  svm_queue_t *q;
   application_t *app;
   int n_tx_packets = 0;
   u32 my_thread_index = vm->thread_index;
@@ -586,7 +600,7 @@ session_queue_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node,
   for (i = 0; i < n_to_dequeue; i++)
     {
       vec_add2 (my_fifo_events, e, 1);
-      unix_shared_memory_queue_sub_raw (q, (u8 *) e);
+      svm_queue_sub_raw (q, (u8 *) e);
     }
 
   /* The other side of the connection is not polling */
@@ -649,7 +663,7 @@ skip_dequeue:
              continue;
            }
          s0 = session_get_from_handle (e0->session_handle);
-         stream_session_disconnect (s0);
+         stream_session_disconnect_transport (s0);
          break;
        case FIFO_EVENT_BUILTIN_RX:
          s0 = session_event_get_session (e0, my_thread_index);
@@ -657,7 +671,7 @@ skip_dequeue:
            continue;
          svm_fifo_unset_event (s0->server_rx_fifo);
          app = application_get (s0->app_index);
-         app->cb_fns.builtin_server_rx_callback (s0);
+         app->cb_fns.builtin_app_rx_callback (s0);
          break;
        case FIFO_EVENT_RPC:
          fp = e0->rpc_args.fp;