ioam: pot plugin - pot profile read API
Addition of read API to ioam-pot plugin which returns the current pot profile(s) configured Change-Id: I188e53811391e053860009dde3719612a2446521 Signed-off-by: Sagar Srivastav <sagsriva@cisco.com>
This commit is contained in:

committed by
Damjan Marion

parent
d24625fbd1
commit
b4bc55b9d7
@ -95,3 +95,39 @@ define pot_profile_del_reply {
|
||||
u32 context;
|
||||
i32 retval;
|
||||
};
|
||||
|
||||
/** \brief Show POT Profiles
|
||||
@param client_index - opaque cookie to identify the sender
|
||||
@param context - sender context, to match reply w/ request
|
||||
@param id - id of the profile
|
||||
*/
|
||||
define pot_profile_show_config_dump {
|
||||
u32 client_index;
|
||||
u32 context;
|
||||
u8 id;
|
||||
};
|
||||
|
||||
/** \brief Show POT profile reply
|
||||
@param id - id of the profile
|
||||
@param validator - True/False to indicate if this is verifier
|
||||
@param secret_key - Verification key
|
||||
@param secret_share - Share of the 1st polynomial
|
||||
@param prime - Prime number used for modulo operation
|
||||
@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
|
||||
*/
|
||||
define pot_profile_show_config_details {
|
||||
u32 context;
|
||||
i32 retval;
|
||||
u8 id;
|
||||
u8 validator;
|
||||
u64 secret_key;
|
||||
u64 secret_share;
|
||||
u64 prime;
|
||||
u64 bit_mask;
|
||||
u64 lpc;
|
||||
u64 polynomial_public;
|
||||
};
|
||||
|
@ -83,7 +83,7 @@ do { \
|
||||
return; \
|
||||
\
|
||||
rmp = vl_msg_api_alloc (sizeof (*rmp)); \
|
||||
rmp->_vl_msg_id = ntohs((t)); \
|
||||
rmp->_vl_msg_id = ntohs((t)+sm->msg_id_base); \
|
||||
rmp->context = mp->context; \
|
||||
rmp->retval = ntohl(rv); \
|
||||
do {body;} while (0); \
|
||||
@ -96,6 +96,7 @@ do { \
|
||||
_(POT_PROFILE_ADD, pot_profile_add) \
|
||||
_(POT_PROFILE_ACTIVATE, pot_profile_activate) \
|
||||
_(POT_PROFILE_DEL, pot_profile_del) \
|
||||
_(POT_PROFILE_SHOW_CONFIG_DUMP, pot_profile_show_config_dump) \
|
||||
|
||||
static void vl_api_pot_profile_add_t_handler
|
||||
(vl_api_pot_profile_add_t *mp)
|
||||
@ -132,6 +133,51 @@ static void vl_api_pot_profile_add_t_handler
|
||||
REPLY_MACRO(VL_API_POT_PROFILE_ADD_REPLY);
|
||||
}
|
||||
|
||||
static void send_pot_profile_details(vl_api_pot_profile_show_config_dump_t *mp, u8 id)
|
||||
{
|
||||
vl_api_pot_profile_show_config_details_t * rmp;
|
||||
pot_main_t * sm = &pot_main;
|
||||
pot_profile *profile = pot_profile_find(id);
|
||||
int rv = 0;
|
||||
if(profile){
|
||||
REPLY_MACRO2(VL_API_POT_PROFILE_SHOW_CONFIG_DETAILS,
|
||||
rmp->id=id;
|
||||
rmp->validator=profile->validator;
|
||||
rmp->secret_key=clib_host_to_net_u64(profile->secret_key);
|
||||
rmp->secret_share=clib_host_to_net_u64(profile->secret_share);
|
||||
rmp->prime=clib_host_to_net_u64(profile->prime);
|
||||
rmp->bit_mask=clib_host_to_net_u64(profile->bit_mask);
|
||||
rmp->lpc=clib_host_to_net_u64(profile->lpc);
|
||||
rmp->polynomial_public=clib_host_to_net_u64(profile->poly_pre_eval);
|
||||
);
|
||||
}
|
||||
else{
|
||||
REPLY_MACRO2(VL_API_POT_PROFILE_SHOW_CONFIG_DETAILS,
|
||||
rmp->id=id;
|
||||
rmp->validator=0;
|
||||
rmp->secret_key=0;
|
||||
rmp->secret_share=0;
|
||||
rmp->prime=0;
|
||||
rmp->bit_mask=0;
|
||||
rmp->lpc=0;
|
||||
rmp->polynomial_public=0;
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
static void vl_api_pot_profile_show_config_dump_t_handler
|
||||
(vl_api_pot_profile_show_config_dump_t *mp)
|
||||
{
|
||||
u8 id = mp->id;
|
||||
u8 dump_call_id = ~0;
|
||||
if(dump_call_id==id){
|
||||
for(id=0;id<MAX_POT_PROFILES;id++)
|
||||
send_pot_profile_details(mp,id);
|
||||
}
|
||||
else
|
||||
send_pot_profile_details(mp,id);
|
||||
}
|
||||
|
||||
static void vl_api_pot_profile_activate_t_handler
|
||||
(vl_api_pot_profile_activate_t *mp)
|
||||
{
|
||||
|
@ -63,6 +63,18 @@ _(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) \
|
||||
@ -79,6 +91,23 @@ _(pot_profile_del_reply)
|
||||
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
|
||||
@ -87,6 +116,7 @@ foreach_standard_reply_retval_handler;
|
||||
_(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)
|
||||
|
||||
|
||||
/* M: construct, but don't yet send a message */
|
||||
@ -255,6 +285,28 @@ static int api_pot_profile_del (vat_main_t *vam)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int api_pot_profile_show_config_dump (vat_main_t *vam)
|
||||
{
|
||||
pot_test_main_t * sm = &pot_test_main;
|
||||
unformat_input_t *input = vam->input;
|
||||
vl_api_pot_profile_show_config_dump_t *mp;
|
||||
f64 timeout;
|
||||
u8 id = 0;
|
||||
|
||||
while(unformat_check_input(input) != UNFORMAT_END_OF_INPUT)
|
||||
{
|
||||
if(unformat(input,"id %d",&id));
|
||||
else
|
||||
break;
|
||||
}
|
||||
M(POT_PROFILE_SHOW_CONFIG_DUMP, pot_profile_show_config_dump);
|
||||
|
||||
mp->id = id;
|
||||
|
||||
S; W;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* List of messages that the api test plugin sends,
|
||||
* and that the data plane plugin processes
|
||||
@ -266,7 +318,7 @@ _(pot_profile_add, "name <name> id [0-1] " \
|
||||
"[validator-key <0xu64>] [validity <0xu64>]") \
|
||||
_(pot_profile_activate, "name <name> id [0-1] ") \
|
||||
_(pot_profile_del, "[id <nn>]") \
|
||||
|
||||
_(pot_profile_show_config_dump, "id [0-1]")
|
||||
|
||||
void vat_api_hookup (vat_main_t *vam)
|
||||
{
|
||||
@ -301,7 +353,7 @@ clib_error_t * vat_plugin_register (vat_main_t *vam)
|
||||
|
||||
sm->vat_main = vam;
|
||||
|
||||
name = format (0, "pot_%08x%c", api_version, 0);
|
||||
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)
|
||||
|
Reference in New Issue
Block a user