nat: fix per thread data vlib_main_t usage take 2
[vpp.git] / src / plugins / nat / nat.c
index c30324b..cc0789d 100755 (executable)
@@ -216,7 +216,6 @@ nat_free_session_data (snat_main_t * sm, snat_session_t * s, u32 thread_index,
        }
       else
        {
-         proto = snat_proto_to_ip_proto (s->in2out.protocol);
          l_port = s->in2out.port;
          r_port = s->ext_host_port;
          l_addr = &s->in2out.addr;
@@ -348,7 +347,6 @@ nat44_set_session_limit (u32 session_limit, u32 vrf_id)
   return 0;
 }
 
-
 void
 nat44_free_session_data (snat_main_t * sm, snat_session_t * s,
                         u32 thread_index, u8 is_ha)
@@ -2566,7 +2564,6 @@ snat_init (vlib_main_t * vm)
   ip4_add_del_interface_address_callback_t cb4;
   vlib_node_t *node;
 
-  sm->vlib_main = vm;
   sm->vnet_main = vnet_get_main ();
   sm->ip4_main = im;
   sm->ip4_lookup_main = lm;
@@ -2663,6 +2660,7 @@ snat_init (vlib_main_t * vm)
     {
       for (i = 0; i < sm->num_workers; i++)
        bitmap = clib_bitmap_set (bitmap, i, 1);
+      // sets thread indexes for workes
       snat_set_workers (bitmap);
       clib_bitmap_free (bitmap);
     }
@@ -3623,14 +3621,15 @@ nat_ha_sadd_cb (ip4_address_t * in_addr, u16 in_port,
                u32 fib_index, u16 flags, u32 thread_index)
 {
   snat_main_t *sm = &snat_main;
+  snat_main_per_thread_data_t *tsm = &sm->per_thread_data[thread_index];
   snat_session_key_t key;
   snat_user_t *u;
   snat_session_t *s;
   clib_bihash_kv_8_8_t kv;
-  f64 now = vlib_time_now (sm->vlib_main);
+  vlib_main_t *vm = vlib_get_main ();
+  f64 now = vlib_time_now (vm);
   nat_outside_fib_t *outside_fib;
   fib_node_index_t fei = FIB_NODE_INDEX_INVALID;
-  snat_main_per_thread_data_t *tsm;
   fib_prefix_t pfx = {
     .fp_proto = FIB_PROTOCOL_IP4,
     .fp_len = 32,
@@ -3639,8 +3638,6 @@ nat_ha_sadd_cb (ip4_address_t * in_addr, u16 in_port,
                },
   };
 
-  tsm = vec_elt_at_index (sm->per_thread_data, thread_index);
-
   key.addr.as_u32 = out_addr->as_u32;
   key.port = out_port;
   key.protocol = proto;
@@ -3773,13 +3770,14 @@ nat_ha_sadd_ed_cb (ip4_address_t * in_addr, u16 in_port,
                   u32 fib_index, u16 flags, u32 thread_index)
 {
   snat_main_t *sm = &snat_main;
+  snat_main_per_thread_data_t *tsm = &sm->per_thread_data[thread_index];
   snat_session_key_t key;
   snat_session_t *s;
   clib_bihash_kv_16_8_t kv;
-  f64 now = vlib_time_now (sm->vlib_main);
+  vlib_main_t *vm = vlib_get_main ();
+  f64 now = vlib_time_now (vm);
   nat_outside_fib_t *outside_fib;
   fib_node_index_t fei = FIB_NODE_INDEX_INVALID;
-  snat_main_per_thread_data_t *tsm;
   fib_prefix_t pfx = {
     .fp_proto = FIB_PROTOCOL_IP4,
     .fp_len = 32,
@@ -3788,8 +3786,6 @@ nat_ha_sadd_ed_cb (ip4_address_t * in_addr, u16 in_port,
                },
   };
 
-  tsm = vec_elt_at_index (sm->per_thread_data, thread_index);
-
   key.addr.as_u32 = out_addr->as_u32;
   key.port = out_port;
   key.protocol = proto;