nat: nat44 enable/disable dynamic config
[vpp.git] / src / plugins / nat / nat_affinity.c
index 2c22ae0..e7a7354 100644 (file)
@@ -43,24 +43,37 @@ format_affinity_kvp (u8 * s, va_list * args)
   return s;
 }
 
-clib_error_t *
-nat_affinity_init (vlib_main_t * vm)
+void
+nat_affinity_enable ()
 {
   nat_affinity_main_t *nam = &nat_affinity_main;
   vlib_thread_main_t *tm = vlib_get_thread_main ();
-  clib_error_t *error = 0;
 
   if (tm->n_vlib_mains > 1)
     clib_spinlock_init (&nam->affinity_lock);
-
   clib_bihash_init_16_8 (&nam->affinity_hash, "nat-affinity",
                         AFFINITY_HASH_BUCKETS, AFFINITY_HASH_MEMORY);
   clib_bihash_set_kvp_format_fn_16_8 (&nam->affinity_hash,
                                      format_affinity_kvp);
+}
 
-  nam->vlib_main = vm;
+void
+nat_affinity_disable ()
+{
+  nat_affinity_main_t *nam = &nat_affinity_main;
+  vlib_thread_main_t *tm = vlib_get_thread_main ();
 
-  return error;
+  if (tm->n_vlib_mains > 1)
+    clib_spinlock_free (&nam->affinity_lock);
+  clib_bihash_free_16_8 (&nam->affinity_hash);
+}
+
+clib_error_t *
+nat_affinity_init (vlib_main_t * vm)
+{
+  nat_affinity_main_t *nam = &nat_affinity_main;
+  nam->vlib_main = vm;
+  return 0;
 }
 
 static_always_inline void