session: Add session_sapi_enable_disable
[vpp.git] / src / vnet / session / session.c
index f6b61ab..f33dbea 100644 (file)
@@ -347,16 +347,15 @@ void
 session_half_open_delete_notify (transport_connection_t *tc)
 {
   /* Notification from ctrl thread accepted without rpc */
-  if (tc->thread_index <= 1)
+  if (!tc->thread_index)
     {
       session_half_open_free (ho_session_get (tc->s_index));
     }
   else
     {
       void *args = uword_to_pointer ((uword) tc->s_index, void *);
-      u32 ctrl_thread = vlib_num_workers () ? 1 : 0;
-      session_send_rpc_evt_to_thread (ctrl_thread, session_half_open_free_rpc,
-                                     args);
+      session_send_rpc_evt_to_thread_force (0, session_half_open_free_rpc,
+                                           args);
     }
 }
 
@@ -1288,8 +1287,6 @@ session_dgram_accept (transport_connection_t * tc, u32 listener_index,
       return rv;
     }
 
-  s->session_state = SESSION_STATE_READY;
-
   return 0;
 }
 
@@ -1818,9 +1815,11 @@ session_manager_main_enable (vlib_main_t * vm)
       wrk->ctrl_head = clib_llist_make_head (wrk->event_elts, evt_list);
       wrk->new_head = clib_llist_make_head (wrk->event_elts, evt_list);
       wrk->old_head = clib_llist_make_head (wrk->event_elts, evt_list);
+      wrk->pending_connects = clib_llist_make_head (wrk->event_elts, evt_list);
       wrk->vm = vlib_get_main_by_index (i);
       wrk->last_vlib_time = vlib_time_now (vm);
       wrk->last_vlib_us_time = wrk->last_vlib_time * CLIB_US_TIME_FREQ;
+      wrk->timerfd = -1;
       vec_validate (wrk->session_to_enqueue, smm->last_transport_proto_type);
 
       if (num_threads > 1)
@@ -1900,6 +1899,7 @@ session_node_enable_disable (u8 is_en)
          vlib_node_set_state (vm, session_queue_node.index, mstate);
          if (is_en)
            {
+             session_main_get_worker (0)->state = SESSION_WRK_INTERRUPT;
              vlib_node_set_state (vm, session_queue_process_node.index,
                                   state);
              n = vlib_get_node (vm, session_queue_process_node.index);
@@ -1963,7 +1963,7 @@ session_main_init (vlib_main_t * vm)
   smm->evt_qs_segment_size = 1 << 20;
 #endif
 
-  smm->last_transport_proto_type = TRANSPORT_PROTO_DTLS;
+  smm->last_transport_proto_type = TRANSPORT_PROTO_SRTP;
 
   return 0;
 }
@@ -2069,7 +2069,7 @@ session_config_fn (vlib_main_t * vm, unformat_input_t * input)
       else if (unformat (input, "segment-baseva 0x%lx", &smm->session_baseva))
        ;
       else if (unformat (input, "use-app-socket-api"))
-       appns_sapi_enable ();
+       (void) appns_sapi_enable_disable (1 /* is_enable */);
       else if (unformat (input, "poll-main"))
        smm->poll_main = 1;
       else if (unformat (input, "use-private-rx-mqs"))