session: add api cb for listen and unlisten 11/40411/2
authorFlorin Coras <fcoras@cisco.com>
Fri, 1 Mar 2024 02:19:30 +0000 (18:19 -0800)
committerDave Barach <vpp@barachs.net>
Fri, 1 Mar 2024 22:22:53 +0000 (22:22 +0000)
Type: improvement

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: I28ccebf4d2f0728dd174ab3ee77a0d7ad4b90951

src/vnet/session/application.h
src/vnet/session/application_interface.h
src/vnet/session/session_api.c
src/vnet/session/session_input.c

index 22896b1..5fea61b 100644 (file)
@@ -406,13 +406,6 @@ app_cert_key_pair_t *app_cert_key_pair_get (u32 index);
 app_cert_key_pair_t *app_cert_key_pair_get_if_valid (u32 index);
 app_cert_key_pair_t *app_cert_key_pair_get_default ();
 
-/* Needed while we support both bapi and mq ctrl messages */
-int mq_send_session_bound_cb (u32 app_wrk_index, u32 api_context,
-                             session_handle_t handle, int rv);
-int mq_send_session_connected_cb (u32 app_wrk_index, u32 api_context,
-                                 session_t * s, session_error_t err);
-void mq_send_unlisten_reply (app_worker_t * app_wrk, session_handle_t sh,
-                            u32 context, int rv);
 void sapi_socket_close_w_handle (u32 api_handle);
 
 crypto_engine_type_t app_crypto_engine_type_add (void);
index b41f7a4..c7ed528 100644 (file)
@@ -62,6 +62,13 @@ typedef struct session_cb_vft_
   /** Notify app that session pool migration happened */
   void (*session_migrate_callback) (session_t * s, session_handle_t new_sh);
 
+  /** Notify app (external only) that listen was processed */
+  int (*session_listened_callback) (u32 app_wrk_index, u32 api_context,
+                                   session_handle_t handle, int rv);
+  /** Notify app (external only) that unlisten was processed */
+  void (*session_unlistened_callback) (u32 app_wrk_index, session_handle_t sh,
+                                      u32 context, int rv);
+
   /** Direct RX callback for built-in application */
   int (*builtin_app_rx_callback) (session_t * session);
 
index 84d44e9..759c6ea 100644 (file)
@@ -271,7 +271,7 @@ snd_msg:
   return 0;
 }
 
-int
+static int
 mq_send_session_bound_cb (u32 app_wrk_index, u32 api_context,
                          session_handle_t handle, int rv)
 {
@@ -325,11 +325,14 @@ snd_msg:
   return 0;
 }
 
-void
-mq_send_unlisten_reply (app_worker_t * app_wrk, session_handle_t sh,
-                       u32 context, int rv)
+static void
+mq_send_unlisten_cb (u32 app_wrk_index, session_handle_t sh, u32 context,
+                    int rv)
 {
   session_unlisten_reply_msg_t m = { 0 };
+  app_worker_t *app_wrk;
+
+  app_wrk = app_worker_get (app_wrk_index);
 
   m.context = context;
   m.handle = sh;
@@ -503,6 +506,8 @@ static session_cb_vft_t session_mq_cb_vft = {
   .session_reset_callback = mq_send_session_reset_cb,
   .session_migrate_callback = mq_send_session_migrate_cb,
   .session_cleanup_callback = mq_send_session_cleanup_cb,
+  .session_listened_callback = mq_send_session_bound_cb,
+  .session_unlistened_callback = mq_send_unlisten_cb,
   .add_segment_callback = mq_send_add_segment_cb,
   .del_segment_callback = mq_send_del_segment_cb,
   .builtin_app_rx_callback = mq_send_io_rx_event,
@@ -1282,6 +1287,8 @@ static session_cb_vft_t session_mq_sapi_cb_vft = {
   .session_reset_callback = mq_send_session_reset_cb,
   .session_migrate_callback = mq_send_session_migrate_cb,
   .session_cleanup_callback = mq_send_session_cleanup_cb,
+  .session_listened_callback = mq_send_session_bound_cb,
+  .session_unlistened_callback = mq_send_unlisten_cb,
   .add_segment_callback = mq_send_add_segment_sapi_cb,
   .del_segment_callback = mq_send_del_segment_sapi_cb,
   .builtin_app_rx_callback = mq_send_io_rx_event,
index b403f7d..41e8beb 100644 (file)
@@ -145,9 +145,9 @@ app_worker_flush_events_inline (app_worker_t *app_wrk, u32 thread_index,
          /* No app cb function currently */
          if (is_builtin)
            break;
-         mq_send_session_bound_cb (app_wrk->wrk_index, evt->as_u64[1] >> 32,
-                                   evt->session_handle,
-                                   evt->as_u64[1] & 0xffffffff);
+         app->cb_fns.session_listened_callback (
+           app_wrk->wrk_index, evt->as_u64[1] >> 32, evt->session_handle,
+           evt->as_u64[1] & 0xffffffff);
          break;
        case SESSION_CTRL_EVT_ACCEPTED:
          s = session_get (evt->session_index, thread_index);
@@ -208,9 +208,9 @@ app_worker_flush_events_inline (app_worker_t *app_wrk, u32 thread_index,
        case SESSION_CTRL_EVT_UNLISTEN_REPLY:
          if (is_builtin)
            break;
-         mq_send_unlisten_reply (app_wrk, evt->session_handle,
-                                 evt->as_u64[1] >> 32,
-                                 evt->as_u64[1] & 0xffffffff);
+         app->cb_fns.session_unlistened_callback (
+           app_wrk->wrk_index, evt->session_handle, evt->as_u64[1] >> 32,
+           evt->as_u64[1] & 0xffffffff);
          break;
        case SESSION_CTRL_EVT_MIGRATED:
          s = session_get (evt->session_index, thread_index);