X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=blobdiff_plain;f=src%2Fvlibapi%2Fapi_common.h;h=a955636ba3f799a3b3e4c419f91f10212445b135;hp=3fdc1bbdd36d573f1eaaa9ff97b34d357317db3e;hb=36217e3ca;hpb=3459ece6da90627b161e2128b5926f1e58e7db65 diff --git a/src/vlibapi/api_common.h b/src/vlibapi/api_common.h index 3fdc1bbdd36..a955636ba3f 100644 --- a/src/vlibapi/api_common.h +++ b/src/vlibapi/api_common.h @@ -27,6 +27,7 @@ #include #include +#include #include #include #include @@ -128,6 +129,9 @@ typedef struct void *cleanup; /**< non-default message cleanup handler */ void *endian; /**< message endian function */ void *print; /**< message print function */ + void *print_json; /**< message print function (JSON format) */ + void *tojson; /**< binary to JSON convert function */ + void *fromjson; /**< JSON to binary convert function */ int size; /**< message size */ int traced; /**< is this message to be traced? */ int replay; /**< is this message to be replayed? */ @@ -173,11 +177,10 @@ void vl_msg_api_trace_only (void *the_msg); void vl_msg_api_cleanup_handler (void *the_msg); void vl_msg_api_replay_handler (void *the_msg); void vl_msg_api_socket_handler (void *the_msg); -void vl_msg_api_set_handlers (int msg_id, char *msg_name, - void *handler, - void *cleanup, - void *endian, - void *print, int msg_size, int traced); +void vl_msg_api_set_handlers (int msg_id, char *msg_name, void *handler, + void *cleanup, void *endian, void *print, + int msg_size, int traced, void *print_json, + void *tojson, void *fromjson); void vl_msg_api_clean_handlers (int msg_id); void vl_msg_api_config (vl_msg_api_msg_config_t *); void vl_msg_api_set_cleanup_handler (int msg_id, void *fp); @@ -241,9 +244,21 @@ typedef struct api_main_t /** Message print function vector */ void (**msg_print_handlers) (void *, void *); + /** Message print function vector in JSON */ + void (**msg_print_json_handlers) (void *, void *); + + /** Message convert function vector */ + cJSON *(**msg_tojson_handlers) (void *); + + /** Message convert function vector */ + void *(**msg_fromjson_handlers) (cJSON *, int *); + /** Message name vector */ const char **msg_names; + /** API message ID by name hash table */ + uword *msg_id_by_name; + /** Don't automatically free message buffer vetor */ u8 *message_bounce;