Session layer improvements
[vpp.git] / src / vnet / udp / builtin_server.c
index 57f774c..18684d5 100644 (file)
@@ -59,10 +59,10 @@ builtin_server_rx_callback (stream_session_t * s)
   vec_validate (my_copy_buffer, this_transfer - 1);
   _vec_len (my_copy_buffer) = this_transfer;
 
-  actual_transfer = svm_fifo_dequeue_nowait (rx_fifo, 0, this_transfer,
+  actual_transfer = svm_fifo_dequeue_nowait (rx_fifo, this_transfer,
                                             my_copy_buffer);
   ASSERT (actual_transfer == this_transfer);
-  actual_transfer = svm_fifo_enqueue_nowait (tx_fifo, 0, this_transfer,
+  actual_transfer = svm_fifo_enqueue_nowait (tx_fifo, this_transfer,
                                             my_copy_buffer);
   ASSERT (actual_transfer == this_transfer);
 
@@ -72,7 +72,7 @@ builtin_server_rx_callback (stream_session_t * s)
     {
       /* Fabricate TX event, send to ourselves */
       evt.fifo = tx_fifo;
-      evt.event_type = FIFO_EVENT_SERVER_TX;
+      evt.event_type = FIFO_EVENT_APP_TX;
       evt.event_id = 0;
       q = session_manager_get_vpp_event_queue (s->thread_index);
       unix_shared_memory_queue_add (q, (u8 *) & evt,
@@ -91,12 +91,11 @@ static session_cb_vft_t builtin_server = {
 /* *INDENT-ON* */
 
 static int
-bind_builtin_uri_server (u8 * uri)
+attach_builtin_uri_server ()
 {
-  vnet_bind_args_t _a, *a = &_a;
-  char segment_name[128];
+  vnet_app_attach_args_t _a, *a = &_a;
+  u8 segment_name[128];
   u32 segment_name_length;
-  int rv;
   u64 options[16];
 
   segment_name_length = ARRAY_LEN (segment_name);
@@ -104,16 +103,34 @@ bind_builtin_uri_server (u8 * uri)
   memset (a, 0, sizeof (*a));
   memset (options, 0, sizeof (options));
 
-  a->uri = (char *) uri;
-  a->api_client_index = ~0;    /* built-in server */
+  a->api_client_index = ~0;
   a->segment_name = segment_name;
   a->segment_name_length = segment_name_length;
   a->session_cb_vft = &builtin_server;
 
   options[SESSION_OPTIONS_ACCEPT_COOKIE] = 0x12345678;
   options[SESSION_OPTIONS_SEGMENT_SIZE] = (2 << 30);   /*$$$$ config / arg */
+  options[APP_OPTIONS_FLAGS] = APP_OPTIONS_FLAGS_BUILTIN_APP;
+
   a->options = options;
 
+  return vnet_application_attach (a);
+}
+
+static int
+bind_builtin_uri_server (u8 * uri)
+{
+  vnet_bind_args_t _a, *a = &_a;
+  int rv;
+
+  rv = attach_builtin_uri_server ();
+  if (rv)
+    return rv;
+
+  memset (a, 0, sizeof (*a));
+  a->uri = (char *) uri;
+  a->app_index = ~0;           /* built-in server */
+
   rv = vnet_bind_uri (a);
 
   return rv;
@@ -122,11 +139,12 @@ bind_builtin_uri_server (u8 * uri)
 static int
 unbind_builtin_uri_server (u8 * uri)
 {
-  int rv;
+  vnet_unbind_args_t _a, *a = &_a;
 
-  rv = vnet_unbind_uri ((char *) uri, ~0 /* client_index */ );
+  a->app_index = ~0;
+  a->uri = (char *) uri;
 
-  return rv;
+  return vnet_unbind_uri (a);
 }
 
 static clib_error_t *