X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fioam%2Flib-pot%2Fpot_test.c;h=b30b21e9471b49e0263f767bcbd043f53d48f0e6;hb=2dbee9361e74d03727a8b618ba80a5e28c006011;hp=9f9d0c99bcf8144c303708886e148a0a1ea2c36d;hpb=fe6bdfd84573cd8813a211f9094ee734f088ce16;p=vpp.git diff --git a/src/plugins/ioam/lib-pot/pot_test.c b/src/plugins/ioam/lib-pot/pot_test.c index 9f9d0c99bcf..b30b21e9471 100644 --- a/src/plugins/ioam/lib-pot/pot_test.c +++ b/src/plugins/ioam/lib-pot/pot_test.c @@ -21,35 +21,15 @@ #include #include #include -#include + #include + +#define __plugin_msg_base pot_test_main.msg_id_base #include /* Declare message IDs */ -#include - -/* define message structures */ -#define vl_typedefs -#include -#undef vl_typedefs - -/* declare message handlers for each api */ - -#define vl_endianfun /* define message structures */ -#include -#undef vl_endianfun - -/* instantiate all the print functions we know about */ -#define vl_print(handle, ...) -#define vl_printfun -#include -#undef vl_printfun - -/* Get the API version number. */ -#define vl_api_version(n,v) static u32 api_version=(v); -#include -#undef vl_api_version - +#include +#include typedef struct { /* API message ID base */ @@ -59,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 @@ -130,9 +50,9 @@ static int api_pot_profile_add (vat_main_t *vam) u64 secret_key = 0; u32 bits = MAX_BITS; u64 lpc = 0, poly2 = 0; - f64 timeout; u8 id = 0; int rv = 0; + int ret; while (unformat_check_input(input) != UNFORMAT_END_OF_INPUT) { @@ -165,11 +85,10 @@ static int api_pot_profile_add (vat_main_t *vam) rv = -99; goto OUT; } - - M2(POT_PROFILE_ADD, pot_profile_add, vec_len(name)); - mp->list_name_len = vec_len(name); - clib_memcpy(mp->list_name, name, mp->list_name_len); + M2(POT_PROFILE_ADD, mp, sizeof(vl_api_string_t) + vec_len(name)); + + vl_api_vec_to_api_string(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); @@ -185,9 +104,11 @@ static int api_pot_profile_add (vat_main_t *vam) } mp->id = id; mp->max_bits = bits; - - S; W; - + + S(mp); + W (ret); + return ret; + OUT: vec_free(name); return(rv); @@ -201,8 +122,8 @@ static int api_pot_profile_activate (vat_main_t *vam) u8 *name = NULL; u8 id = 0; int rv = 0; - f64 timeout; - + int ret; + while (unformat_check_input(input) != UNFORMAT_END_OF_INPUT) { if (unformat(input, "name %s", &name)) @@ -219,15 +140,15 @@ static int api_pot_profile_activate (vat_main_t *vam) rv = -99; goto OUT; } - - M2(POT_PROFILE_ACTIVATE, pot_profile_activate, 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_vec_to_api_string(name, &mp->list_name); mp->id = id; - - S; W; - + + S(mp); + W (ret); + return ret; + OUT: vec_free(name); return(rv); @@ -237,20 +158,20 @@ OUT: static int api_pot_profile_del (vat_main_t *vam) { vl_api_pot_profile_del_t *mp; - f64 timeout; - - M(POT_PROFILE_DEL, pot_profile_del); - mp->list_name_len = 0; - S; W; - return 0; + int ret; + + M(POT_PROFILE_DEL, mp); + S(mp); + W (ret); + return ret; } static int api_pot_profile_show_config_dump (vat_main_t *vam) { unformat_input_t *input = vam->input; vl_api_pot_profile_show_config_dump_t *mp; - f64 timeout; u8 id = 0; + int ret; while(unformat_check_input(input) != UNFORMAT_END_OF_INPUT) { @@ -258,68 +179,19 @@ static int api_pot_profile_show_config_dump (vat_main_t *vam) else break; } - M(POT_PROFILE_SHOW_CONFIG_DUMP, pot_profile_show_config_dump); + M(POT_PROFILE_SHOW_CONFIG_DUMP, mp); mp->id = id; - S; W; - return 0; + S(mp); + 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 * 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); - - if (sm->msg_id_base != (u16) ~0) - pot_vat_api_hookup (vam); - - vec_free(name); - - return 0; -} +/* Override generated plugin register symbol */ +#define vat_plugin_register pot_vat_plugin_register +#include