From 0fa66d618e7d839782a896f75bc8b0337cc2a2b8 Mon Sep 17 00:00:00 2001 From: Ole Troan Date: Mon, 9 Dec 2019 14:25:09 +0100 Subject: ioam: use explicit api types Also remove API boilerplate. Type: fix Signed-off-by: Ole Troan Change-Id: I62e795f5af3843af7912707ade4ba178ff326942 --- src/plugins/ioam/lib-pot/pot.api | 12 +-- src/plugins/ioam/lib-pot/pot_api.c | 6 +- src/plugins/ioam/lib-pot/pot_test.c | 144 +++--------------------------------- 3 files changed, 14 insertions(+), 148 deletions(-) (limited to 'src/plugins/ioam/lib-pot') diff --git a/src/plugins/ioam/lib-pot/pot.api b/src/plugins/ioam/lib-pot/pot.api index 45dc53793a0..18a8f2b698e 100644 --- a/src/plugins/ioam/lib-pot/pot.api +++ b/src/plugins/ioam/lib-pot/pot.api @@ -25,7 +25,6 @@ option version = "1.0.0"; @param max_bits - Max bits to be used for Random number generation @param lpc - Lagrange basis polynomial @param polynomial_public - pre-evaluated public polynomial - @param list_name_len - length of the name of this profile list @param list_name - name of this profile list */ autoreply define pot_profile_add { @@ -39,34 +38,29 @@ autoreply define pot_profile_add { u8 max_bits; u64 lpc; u64 polynomial_public; - u8 list_name_len; - u8 list_name[list_name_len]; + string list_name[]; }; /** \brief Proof of Transit(POT): Activate POT profile in the list @param id - id of the profile - @param list_name_len - length of the name of this profile list @param list_name - name of this profile list */ autoreply define pot_profile_activate { u32 client_index; u32 context; u8 id; - u8 list_name_len; - u8 list_name[list_name_len]; + string list_name[]; }; /** \brief Delete POT Profile @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request - @param list_name_len - length of the name of the profile list @param list_name - name of profile list to delete */ autoreply define pot_profile_del { u32 client_index; u32 context; - u8 list_name_len; - u8 list_name[list_name_len]; + string list_name[]; }; /** \brief Show POT Profiles diff --git a/src/plugins/ioam/lib-pot/pot_api.c b/src/plugins/ioam/lib-pot/pot_api.c index 0d0e49de20a..2ecfc51d97a 100644 --- a/src/plugins/ioam/lib-pot/pot_api.c +++ b/src/plugins/ioam/lib-pot/pot_api.c @@ -43,8 +43,7 @@ static void vl_api_pot_profile_add_t_handler pot_profile *profile = NULL; u8 *name = 0; - if (mp->list_name_len) - name = format(0, "%s", mp->list_name); + name = vl_api_from_api_to_vec(&mp->list_name); pot_profile_list_init(name); id = mp->id; @@ -122,8 +121,7 @@ static void vl_api_pot_profile_activate_t_handler u8 id; u8 *name = NULL; - if (mp->list_name_len) - name = format(0, "%s", mp->list_name); + name = vl_api_from_api_to_vec(&mp->list_name); if (!pot_profile_list_is_enabled(name)) { rv = -1; } else { diff --git a/src/plugins/ioam/lib-pot/pot_test.c b/src/plugins/ioam/lib-pot/pot_test.c index 1db4286b7dc..90cff23888b 100644 --- a/src/plugins/ioam/lib-pot/pot_test.c +++ b/src/plugins/ioam/lib-pot/pot_test.c @@ -31,15 +31,6 @@ #include #include -#define vl_endianfun /* define message structures */ -#define vl_printfun -#define vl_api_version(n,v) static u32 api_version=(v); -#define vl_print(handle, ...) -#include -#undef vl_endianfun -#undef vl_printfun -#undef vl_api_version - typedef struct { /* API message ID base */ u16 msg_id_base; @@ -48,66 +39,6 @@ typedef struct { pot_test_main_t pot_test_main; -#define foreach_standard_reply_retval_handler \ -_(pot_profile_add_reply) \ -_(pot_profile_activate_reply) \ -_(pot_profile_del_reply) - -#define foreach_custom_reply_retval_handler \ -_(pot_profile_show_config_details, \ - errmsg(" ID:%d\n",mp->id); \ - errmsg(" Validator:%d\n",mp->validator); \ - errmsg(" secret_key:%Lx\n",clib_net_to_host_u64(mp->secret_key)); \ - errmsg(" secret_share:%Lx\n",clib_net_to_host_u64(mp->secret_share)); \ - errmsg(" prime:%Lx\n",clib_net_to_host_u64(mp->prime)); \ - errmsg(" bitmask:%Lx\n",clib_net_to_host_u64(mp->bit_mask)); \ - errmsg(" lpc:%Lx\n",clib_net_to_host_u64(mp->lpc)); \ - errmsg(" public poly:%Lx\n",clib_net_to_host_u64(mp->polynomial_public)); \ - ) - -#define _(n) \ - static void vl_api_##n##_t_handler \ - (vl_api_##n##_t * mp) \ - { \ - vat_main_t * vam = pot_test_main.vat_main; \ - i32 retval = ntohl(mp->retval); \ - if (vam->async_mode) { \ - vam->async_errors += (retval < 0); \ - } else { \ - vam->retval = retval; \ - vam->result_ready = 1; \ - } \ - } -foreach_standard_reply_retval_handler; -#undef _ - -#define _(n,body) \ - static void vl_api_##n##_t_handler \ - (vl_api_##n##_t * mp) \ - { \ - vat_main_t * vam = pot_test_main.vat_main; \ - i32 retval = ntohl(mp->retval); \ - if (vam->async_mode) { \ - vam->async_errors += (retval < 0); \ - } else { \ - vam->retval = retval; \ - vam->result_ready = 1; \ - } \ - do{body;}while(0); \ - } -foreach_custom_reply_retval_handler; -#undef _ - -/* - * Table of message reply handlers, must include boilerplate handlers - * we just generated - */ -#define foreach_vpe_api_reply_msg \ -_(POT_PROFILE_ADD_REPLY, pot_profile_add_reply) \ -_(POT_PROFILE_ACTIVATE_REPLY, pot_profile_activate_reply) \ -_(POT_PROFILE_DEL_REPLY, pot_profile_del_reply) \ -_(POT_PROFILE_SHOW_CONFIG_DETAILS, pot_profile_show_config_details) - static int api_pot_profile_add (vat_main_t *vam) { #define MAX_BITS 64 @@ -155,10 +86,9 @@ static int api_pot_profile_add (vat_main_t *vam) goto OUT; } - M2(POT_PROFILE_ADD, mp, vec_len(name)); + M2(POT_PROFILE_ADD, mp, sizeof(vl_api_string_t) + vec_len(name)); - mp->list_name_len = vec_len(name); - clib_memcpy(mp->list_name, name, mp->list_name_len); + vl_api_to_api_string(vec_len(name), (const char *)name, &mp->list_name); mp->secret_share = clib_host_to_net_u64(secret_share); mp->polynomial_public = clib_host_to_net_u64(poly2); mp->lpc = clib_host_to_net_u64(lpc); @@ -211,10 +141,8 @@ static int api_pot_profile_activate (vat_main_t *vam) goto OUT; } - M2(POT_PROFILE_ACTIVATE, mp, vec_len(name)); - - mp->list_name_len = vec_len(name); - clib_memcpy(mp->list_name, name, mp->list_name_len); + M2(POT_PROFILE_ACTIVATE, mp, sizeof(vl_api_string_t) + vec_len(name)); + vl_api_to_api_string(vec_len(name), (const char *)name, &mp->list_name); mp->id = id; S(mp); @@ -233,7 +161,6 @@ static int api_pot_profile_del (vat_main_t *vam) int ret; M(POT_PROFILE_DEL, mp); - mp->list_name_len = 0; S(mp); W (ret); return ret; @@ -260,64 +187,11 @@ static int api_pot_profile_show_config_dump (vat_main_t *vam) W (ret); return ret; } - -/* - * List of messages that the api test plugin sends, - * and that the data plane plugin processes - */ -#define foreach_vpe_api_msg \ -_(pot_profile_add, "name id [0-1] " \ - "prime-number <0xu64> bits-in-random [0-64] " \ - "secret-share <0xu64> lpc <0xu64> polynomial-public <0xu64> " \ - "[validator-key <0xu64>] [validity <0xu64>]") \ -_(pot_profile_activate, "name id [0-1] ") \ -_(pot_profile_del, "[id ]") \ -_(pot_profile_show_config_dump, "id [0-1]") - -static void -pot_vat_api_hookup (vat_main_t *vam) +static int vl_api_pot_profile_show_config_details_t_handler (vat_main_t *vam) { - pot_test_main_t * sm = &pot_test_main; - /* Hook up handlers for replies from the data plane plug-in */ -#define _(N,n) \ - vl_msg_api_set_handlers((VL_API_##N + sm->msg_id_base), \ - #n, \ - vl_api_##n##_t_handler, \ - vl_noop_handler, \ - vl_api_##n##_t_endian, \ - vl_api_##n##_t_print, \ - sizeof(vl_api_##n##_t), 1); - foreach_vpe_api_reply_msg; -#undef _ - - /* API messages we can send */ -#define _(n,h) hash_set_mem (vam->function_by_name, #n, api_##n); - foreach_vpe_api_msg; -#undef _ - - /* Help strings */ -#define _(n,h) hash_set_mem (vam->help_by_name, #n, h); - foreach_vpe_api_msg; -#undef _ + return -1; } - -clib_error_t * -pot_vat_plugin_register (vat_main_t *vam) -{ - pot_test_main_t * sm = &pot_test_main; - u8 * name; - - sm->vat_main = vam; - - name = format (0, "ioam_pot_%08x%c", api_version, 0); - sm->msg_id_base = vl_client_get_first_plugin_msg_id ((char *) name); - vec_free(name); - - if (sm->msg_id_base != (u16) ~0) - pot_vat_api_hookup (vam); - else - return clib_error_return (0, "ioam_pot plugin not loaded..."); - - return 0; -} +/* Override generated plugin register symbol */ +#define vat_plugin_register pot_vat_plugin_register +#include -- cgit 1.2.3-korg