+static u8 *
+format_vnet_crypto_engine_candidates (u8 * s, va_list * args)
+{
+ vnet_crypto_engine_t *e;
+ vnet_crypto_main_t *cm = &crypto_main;
+
+ vnet_crypto_op_id_t id = va_arg (*args, vnet_crypto_op_id_t);
+ u32 ei = va_arg (*args, u32);
+ int is_chained = va_arg (*args, int);
+
+ vec_foreach (e, cm->engines)
+ {
+ void * h = is_chained ? (void *) e->chained_ops_handlers[id]
+ : (void *) e->ops_handlers[id];
+
+ if (h)
+ {
+ s = format (s, "%U", format_vnet_crypto_engine, e - cm->engines);
+ if (ei == e - cm->engines)
+ s = format (s, "%c ", '*');
+ else
+ s = format (s, " ");
+ }
+ }
+ return s;
+}
+