crypto: make crypto-dispatch node working in adaptive mode
[vpp.git] / src / plugins / wireguard / wireguard.c
index 40c2c09..a87f73d 100644 (file)
 
 wg_main_t wg_main;
 wg_async_post_next_t wg_encrypt_async_next;
+wg_async_post_next_t wg_decrypt_async_next;
 
 void
 wg_set_async_mode (u32 is_enabled)
 {
-  vnet_crypto_request_async_mode (is_enabled);
-
   if (is_enabled)
     wg_op_mode_set_ASYNC ();
   else
@@ -39,15 +38,30 @@ wg_set_async_mode (u32 is_enabled)
 
 static void
 wireguard_register_post_node (vlib_main_t *vm)
+
 {
   wg_async_post_next_t *eit;
+  wg_async_post_next_t *dit;
 
   eit = &wg_encrypt_async_next;
+  dit = &wg_decrypt_async_next;
 
   eit->wg4_post_next =
     vnet_crypto_register_post_node (vm, "wg4-output-tun-post-node");
   eit->wg6_post_next =
     vnet_crypto_register_post_node (vm, "wg6-output-tun-post-node");
+
+  dit->wg4_post_next =
+    vnet_crypto_register_post_node (vm, "wg4-input-post-node");
+  dit->wg6_post_next =
+    vnet_crypto_register_post_node (vm, "wg6-input-post-node");
+}
+
+void
+wg_secure_zero_memory (void *v, size_t n)
+{
+  static void *(*const volatile memset_v) (void *, int, size_t) = &memset;
+  memset_v (v, 0, n);
 }
 
 static clib_error_t *