nat: add thread index assertions 68/31768/6
authorKlement Sekera <ksekera@cisco.com>
Thu, 25 Mar 2021 14:39:15 +0000 (15:39 +0100)
committerOle Tr�an <otroan@employees.org>
Wed, 26 May 2021 07:38:01 +0000 (07:38 +0000)
Add extra assertions to debug build.

Type: improvement
Signed-off-by: Klement Sekera <ksekera@cisco.com>
Change-Id: Ib20130365e8f9dbb556fcbb4321dd184c7eff603

src/plugins/nat/nat44-ed/nat44_ed.h
src/plugins/nat/nat44-ed/nat44_ed_in2out.c
src/plugins/nat/nat44-ed/nat44_ed_inlines.h
src/plugins/nat/nat44-ed/nat44_ed_out2in.c

index 1668d02..91b3645 100644 (file)
@@ -344,6 +344,7 @@ typedef CLIB_PACKED(struct
   /* per vrf sessions index */
   u32 per_vrf_sessions_index;
 
+  u32 thread_index;
 }) snat_session_t;
 
 typedef struct
index fe5fbac..85cda76 100644 (file)
@@ -1122,6 +1122,8 @@ nat44_ed_in2out_fast_path_node_fn_inline (vlib_main_t *vm,
 
     skip_lookup:
 
+      ASSERT (thread_index == s0->thread_index);
+
       if (PREDICT_FALSE (per_vrf_sessions_is_expired (s0, thread_index)))
        {
          // session is closed, go slow path
index d1cd85e..b2b578a 100644 (file)
@@ -329,6 +329,8 @@ nat_ed_ses_i2o_flow_hash_add_del (snat_main_t *sm, u32 thread_idx,
       nat_6t_flow_to_ed_kv (&kv, &s->i2o, thread_idx, s - tsm->sessions);
       nat_6t_l3_l4_csum_calc (&s->i2o);
     }
+
+  ASSERT (thread_idx == s->thread_index);
   return clib_bihash_add_del_16_8 (&sm->flow_hash, &kv, is_add);
 }
 
@@ -348,6 +350,7 @@ nat_ed_ses_o2i_flow_hash_add_del (snat_main_t *sm, u32 thread_idx,
       nat_6t_flow_to_ed_kv (&kv, &s->o2i, thread_idx, s - tsm->sessions);
       nat_6t_l3_l4_csum_calc (&s->o2i);
     }
+  ASSERT (thread_idx == s->thread_index);
   return clib_bihash_add_del_16_8 (&sm->flow_hash, &kv, is_add);
 }
 
@@ -441,6 +444,9 @@ nat_ed_session_alloc (snat_main_t *sm, u32 thread_index, f64 now, u8 proto)
   s->ha_last_refreshed = now;
   vlib_set_simple_counter (&sm->total_sessions, thread_index, 0,
                           pool_elts (tsm->sessions));
+#if CLIB_ASSERT_ENABLE
+  s->thread_index = thread_index;
+#endif
   return s;
 }
 
index 4545557..039d464 100644 (file)
@@ -933,6 +933,8 @@ nat44_ed_out2in_fast_path_node_fn_inline (vlib_main_t * vm,
                           ed_value_get_session_index (&value0));
     skip_lookup:
 
+      ASSERT (thread_index == s0->thread_index);
+
       if (PREDICT_FALSE (per_vrf_sessions_is_expired (s0, thread_index)))
        {
          // session is closed, go slow path