crypto: Crypto set handler API to support set all as CLI

Type: improvement

Signed-off-by: Yulong Pei <yulong.pei@intel.com>
Change-Id: I43556f8c76c7aae64d9c927e1fda3c1774d7e49d
This commit is contained in:
Yulong Pei
2020-09-14 19:45:03 -07:00
committed by Andrew Yourtchenko
parent b3a8f4e350
commit 8c91b2ae2b
2 changed files with 37 additions and 4 deletions

View File

@ -41,7 +41,7 @@ autoreply define crypto_set_async_dispatch
vl_api_crypto_dispatch_mode_t mode;
};
/** \brief crypto: use polling or interrupt dispatch
/** \brief crypto: set crypto handler
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param alg_name - Name of the algorithm to add

View File

@ -54,6 +54,7 @@ vl_api_crypto_set_async_dispatch_t_handler (vl_api_crypto_set_async_dispatch_t
static void
vl_api_crypto_set_handler_t_handler (vl_api_crypto_set_handler_t * mp)
{
vnet_crypto_main_t *cm = &crypto_main;
vl_api_crypto_set_handler_reply_t *rmp;
int rv = 0;
char *engine;
@ -64,10 +65,42 @@ vl_api_crypto_set_handler_t_handler (vl_api_crypto_set_handler_t * mp)
alg_name = (char *) mp->alg_name;
oct = (crypto_op_class_type_t) mp->oct;
if (mp->is_async)
rv = vnet_crypto_set_async_handler2 (alg_name, engine);
if (strcmp ("all", alg_name) == 0)
{
if (mp->is_async)
{
char *key;
u8 *value;
/* *INDENT-OFF* */
hash_foreach_mem (key, value, cm->async_alg_index_by_name,
({
(void) value;
rv += vnet_crypto_set_async_handler2 (key, engine);
}));
/* *INDENT-ON* */
}
else
{
char *key;
u8 *value;
/* *INDENT-OFF* */
hash_foreach_mem (key, value, cm->alg_index_by_name,
({
(void) value;
rv += vnet_crypto_set_handler2 (key, engine, oct);
}));
/* *INDENT-ON* */
}
}
else
rv = vnet_crypto_set_handler2 (alg_name, engine, oct);
{
if (mp->is_async)
rv = vnet_crypto_set_async_handler2 (alg_name, engine);
else
rv = vnet_crypto_set_handler2 (alg_name, engine, oct);
}
REPLY_MACRO (VL_API_CRYPTO_SET_HANDLER_REPLY);
}