From: Dave Barach Date: Fri, 12 May 2017 15:59:25 +0000 (-0400) Subject: Add vl_msg_api_get_message_length[_inline] X-Git-Tag: v17.07-rc1~169 X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commitdiff_plain;h=bfd9227e6da567e0e19e026afe94cd4c0b65f725 Add vl_msg_api_get_message_length[_inline] Change-Id: I6d86cf7966d51ec7a507bbb59c586adbfb45be05 Signed-off-by: Dave Barach --- diff --git a/src/vlibapi/api.h b/src/vlibapi/api.h index 7538050e7b2..3403e1c60d7 100644 --- a/src/vlibapi/api.h +++ b/src/vlibapi/api.h @@ -25,6 +25,7 @@ #include #include #include +#include typedef enum { @@ -280,6 +281,7 @@ u16 vl_msg_api_get_msg_ids (const char *name, int n); void vl_msg_api_add_msg_name_crc (api_main_t * am, const char *string, u32 id); u32 vl_api_get_msg_index (u8 * name_and_crc); +u32 vl_msg_api_get_msg_length (void *msg_arg); /* node_serialize.c prototypes */ u8 *vlib_node_serialize (vlib_node_main_t * nm, u8 * vector, @@ -336,6 +338,15 @@ static void __vl_msg_api_add_##tag##_function_##x (void) \ _error = _f (ci); \ }) +static inline u32 +vl_msg_api_get_msg_length_inline (void *msg_arg) +{ + u8 *msg = (u8 *) msg_arg; + + msgbuf_t *header = (msgbuf_t *) (msg - offsetof (msgbuf_t, data)); + + return clib_net_to_host_u32 (header->data_len); +} #endif /* included_api_h */ /* diff --git a/src/vlibapi/api_shared.c b/src/vlibapi/api_shared.c index 0817f38e40a..5c1a9940dc7 100644 --- a/src/vlibapi/api_shared.c +++ b/src/vlibapi/api_shared.c @@ -624,6 +624,12 @@ vl_msg_api_replay_handler (void *the_msg) /* do NOT free the message buffer... */ } +u32 +vl_msg_api_get_msg_length (void *msg_arg) +{ + return vl_msg_api_get_msg_length_inline (msg_arg); +} + /* * vl_msg_api_socket_handler */