aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/vnet/session/session.c16
-rw-r--r--src/vnet/session/session.h1
2 files changed, 17 insertions, 0 deletions
diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c
index f1598519363..c1becf2c5ea 100644
--- a/src/vnet/session/session.c
+++ b/src/vnet/session/session.c
@@ -104,6 +104,22 @@ session_program_tx_io_evt (session_handle_tu_t sh, session_evt_type_t evt_type)
}
int
+session_program_rx_io_evt (session_handle_tu_t sh)
+{
+ if (sh.thread_index == vlib_get_thread_index ())
+ {
+ session_t *s = session_get_from_handle (sh);
+ return session_enqueue_notify (s);
+ }
+ else
+ {
+ return session_send_evt_to_thread ((void *) &sh.session_index, 0,
+ (u32) sh.thread_index,
+ SESSION_IO_EVT_BUILTIN_RX);
+ }
+}
+
+int
session_send_ctrl_evt_to_thread (session_t * s, session_evt_type_t evt_type)
{
/* only events supported are disconnect, shutdown and reset */
diff --git a/src/vnet/session/session.h b/src/vnet/session/session.h
index a5604bf8725..67a182573e4 100644
--- a/src/vnet/session/session.h
+++ b/src/vnet/session/session.h
@@ -461,6 +461,7 @@ int session_send_io_evt_to_thread_custom (void *data, u32 thread_index,
session_evt_type_t evt_type);
int session_program_tx_io_evt (session_handle_tu_t sh,
session_evt_type_t evt_type);
+int session_program_rx_io_evt (session_handle_tu_t sh);
void session_send_rpc_evt_to_thread (u32 thread_index, void *fp,
void *rpc_args);
void session_send_rpc_evt_to_thread_force (u32 thread_index, void *fp,