diff options
author | Filip Tehlar <ftehlar@cisco.com> | 2021-07-23 08:51:10 +0000 |
---|---|---|
committer | Filip Tehlar <ftehlar@cisco.com> | 2021-09-28 16:06:19 +0000 |
commit | 36217e3ca8a1ca2e7a341b6b44ffc25e6497191c (patch) | |
tree | ba45e2b144e0d66a69c0502a7823c28239d0bc66 /src/vlibapi/api_common.h | |
parent | 3459ece6da90627b161e2128b5926f1e58e7db65 (diff) |
api: API trace improvements
Type: improvement
* add support for JSON format in API trace
* add ability to replay JSON API trace in both VPP and VAT2
* use CRC for backward compatibility check during JSON API replay
* fix API trace CLI (and remove duplicits)
* remove custom dump
* remove vppapitrace.py
* update docs accordingly
Change-Id: I5294f68bebe6cbe738630f457f3a87720e06486b
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
Signed-off-by: Ole Troan <ot@cisco.com>
Diffstat (limited to 'src/vlibapi/api_common.h')
-rw-r--r-- | src/vlibapi/api_common.h | 25 |
1 files changed, 20 insertions, 5 deletions
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 <vppinfra/clib_error.h> #include <vppinfra/elog.h> +#include <vppinfra/cJSON.h> #include <vlibapi/api_types.h> #include <svm/svm_common.h> #include <svm/queue.h> @@ -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; |