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/vlibmemory/memclnt_api.c | |
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/vlibmemory/memclnt_api.c')
-rw-r--r-- | src/vlibmemory/memclnt_api.c | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/src/vlibmemory/memclnt_api.c b/src/vlibmemory/memclnt_api.c index 5ebc31f71dc..23d0088308f 100644 --- a/src/vlibmemory/memclnt_api.c +++ b/src/vlibmemory/memclnt_api.c @@ -52,16 +52,6 @@ #include <vlibmemory/vl_memory_api_h.h> #undef vl_printfun -static inline void * -vl_api_trace_plugin_msg_ids_t_print (vl_api_trace_plugin_msg_ids_t *a, - void *handle) -{ - vl_print (handle, "vl_api_trace_plugin_msg_ids: %s first %u last %u\n", - a->plugin_name, clib_host_to_net_u16 (a->first_msg_id), - clib_host_to_net_u16 (a->last_msg_id)); - return handle; -} - /* instantiate all the endian swap functions we know about */ #define vl_endianfun #include <vlibmemory/vl_memory_api_h.h> @@ -154,6 +144,12 @@ vlib_api_init (void) vl_msg_api_msg_config_t cfg; vl_msg_api_msg_config_t *c = &cfg; + cJSON_Hooks cjson_hooks = { + .malloc_fn = clib_mem_alloc, + .free_fn = clib_mem_free, + }; + cJSON_InitHooks (&cjson_hooks); + clib_memset (c, 0, sizeof (*c)); #define _(N, n) \ @@ -689,19 +685,25 @@ rpc_api_hookup (vlib_main_t *vm) { api_main_t *am = vlibapi_get_main (); #define _(N, n) \ - vl_msg_api_set_handlers ( \ - VL_API_##N, #n, vl_api_##n##_t_handler, vl_noop_handler, vl_noop_handler, \ - vl_api_##n##_t_print, sizeof (vl_api_##n##_t), 0 /* do not trace */); + vl_msg_api_set_handlers (VL_API_##N, #n, vl_api_##n##_t_handler, \ + vl_noop_handler, vl_noop_handler, \ + vl_api_##n##_t_print, sizeof (vl_api_##n##_t), \ + 0 /* do not trace */, vl_api_##n##_t_print_json, \ + vl_api_##n##_t_tojson, vl_api_##n##_t_fromjson); foreach_rpc_api_msg; #undef _ #define _(N, n) \ - vl_msg_api_set_handlers ( \ - VL_API_##N, #n, vl_api_##n##_t_handler, vl_noop_handler, vl_noop_handler, \ - vl_api_##n##_t_print, sizeof (vl_api_##n##_t), 1 /* do trace */); + vl_msg_api_set_handlers (VL_API_##N, #n, vl_api_##n##_t_handler, \ + vl_noop_handler, vl_noop_handler, \ + vl_api_##n##_t_print, sizeof (vl_api_##n##_t), \ + 1 /* do trace */, vl_api_##n##_t_print_json, \ + vl_api_##n##_t_tojson, vl_api_##n##_t_fromjson); foreach_plugin_trace_msg; #undef _ + am->api_trace_cfg[VL_API_TRACE_PLUGIN_MSG_IDS].replay_enable = 0; + /* No reason to halt the parade to create a trace record... */ am->is_mp_safe[VL_API_TRACE_PLUGIN_MSG_IDS] = 1; rpc_call_main_thread_cb_fn = vl_api_rpc_call_main_thread; |