diff options
Diffstat (limited to 'src/vlibmemory')
-rw-r--r-- | src/vlibmemory/vlib.api | 24 | ||||
-rw-r--r-- | src/vlibmemory/vlib_api.c | 12 | ||||
-rw-r--r-- | src/vlibmemory/vlibapi_test.c | 25 |
3 files changed, 61 insertions, 0 deletions
diff --git a/src/vlibmemory/vlib.api b/src/vlibmemory/vlib.api index 5e8ba47ba7d..c017fc7919a 100644 --- a/src/vlibmemory/vlib.api +++ b/src/vlibmemory/vlib.api @@ -243,6 +243,30 @@ define get_f64_increment_by_one_reply f64 f64_value; }; +/** \brief Control ping from client to api server request + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request +*/ +define control_ping +{ + u32 client_index; + u32 context; +}; + +/** \brief Control ping from the client to the server response + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request + @param retval - return code for the request + @param vpe_pid - the pid of the vpe, returned by the server +*/ +define control_ping_reply +{ + u32 context; + i32 retval; + u32 client_index; + u32 vpe_pid; +}; + /* * Local Variables: * eval: (c-set-style "gnu") diff --git a/src/vlibmemory/vlib_api.c b/src/vlibmemory/vlib_api.c index e5d77eb5bf6..0d9444619af 100644 --- a/src/vlibmemory/vlib_api.c +++ b/src/vlibmemory/vlib_api.c @@ -329,6 +329,16 @@ vl_api_get_f64_increment_by_one_t_handler ( })); } +static void +vl_api_control_ping_t_handler (vl_api_control_ping_t *mp) +{ + vl_api_control_ping_reply_t *rmp; + int rv = 0; + + REPLY_MACRO2 (VL_API_CONTROL_PING_REPLY, + ({ rmp->vpe_pid = ntohl (getpid ()); })); +} + #include <vlibmemory/vlib.api.c> static clib_error_t * vlib_apis_hookup (vlib_main_t *vm) @@ -341,6 +351,8 @@ vlib_apis_hookup (vlib_main_t *vm) msg_id_base = setup_message_id_table (); am->is_mp_safe[VL_API_GET_NODE_GRAPH] = 1; + am->is_mp_safe[VL_API_CONTROL_PING] = 1; + am->is_mp_safe[VL_API_CONTROL_PING_REPLY] = 1; return 0; } diff --git a/src/vlibmemory/vlibapi_test.c b/src/vlibmemory/vlibapi_test.c index 820096ab80d..c91cd7942f9 100644 --- a/src/vlibmemory/vlibapi_test.c +++ b/src/vlibmemory/vlibapi_test.c @@ -449,6 +449,31 @@ api_get_node_graph (vat_main_t *vam) return ret; } +static void +vl_api_control_ping_reply_t_handler (vl_api_control_ping_reply_t *mp) +{ + vat_main_t *vam = &vat_main; + i32 retval = ntohl (mp->retval); + if (vam->async_mode) + { + vam->async_errors += (retval < 0); + } + else + { + vam->retval = retval; + vam->result_ready = 1; + } + if (vam->socket_client_main) + vam->socket_client_main->control_pings_outstanding--; +} + +static int +api_control_ping (vat_main_t *vam) +{ + // not yet implemented + return -1; +} + #define VL_API_LOCAL_SETUP_MESSAGE_ID_TABLE local_setup_message_id_table static void local_setup_message_id_table (vat_main_t *vam) |