aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/session
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet/session')
-rw-r--r--src/vnet/session/node.c6
-rw-r--r--src/vnet/session/session.h10
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;