diff options
Diffstat (limited to 'src/vnet/session')
-rw-r--r-- | src/vnet/session/node.c | 6 | ||||
-rw-r--r-- | src/vnet/session/session.h | 10 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/vnet/session/node.c b/src/vnet/session/node.c index ce7c38683f5..fffc8eb385a 100644 --- a/src/vnet/session/node.c +++ b/src/vnet/session/node.c @@ -401,6 +401,7 @@ session_queue_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node, u32 my_thread_index = vm->thread_index; int i, rv; f64 now = vlib_time_now (vm); + void (*fp) (void *); SESSION_EVT_DBG (SESSION_EVT_POLL_GAP_TRACK, smm, my_thread_index); @@ -496,6 +497,11 @@ skip_dequeue: app = application_get (s0->app_index); app->cb_fns.builtin_server_rx_callback (s0); break; + case FIFO_EVENT_RPC: + fp = e0->rpc_args.fp; + (*fp) (e0->rpc_args.arg); + break; + default: clib_warning ("unhandled event type %d", e0->event_type); } diff --git a/src/vnet/session/session.h b/src/vnet/session/session.h index 5c281df7854..efb9e30b5cc 100644 --- a/src/vnet/session/session.h +++ b/src/vnet/session/session.h @@ -32,7 +32,8 @@ typedef enum FIFO_EVENT_APP_TX, FIFO_EVENT_TIMEOUT, FIFO_EVENT_DISCONNECT, - FIFO_EVENT_BUILTIN_RX + FIFO_EVENT_BUILTIN_RX, + FIFO_EVENT_RPC, } fifo_event_type_t; #define foreach_session_input_error \ @@ -91,12 +92,19 @@ typedef enum SESSION_STATE_N_STATES, } stream_session_state_t; +typedef struct +{ + void *fp; + void *arg; +} rpc_args_t; + /* *INDENT-OFF* */ typedef CLIB_PACKED (struct { union { svm_fifo_t * fifo; u64 session_handle; + rpc_args_t rpc_args; }; u8 event_type; u16 event_id; |