avoid using thread local storage for thread index
[vpp.git] / src / vnet / geneve / encap.c
index 59d5c96..9774323 100644 (file)
@@ -79,7 +79,7 @@ geneve_encap_inline (vlib_main_t * vm,
   vnet_interface_main_t *im = &vnm->interface_main;
   u32 pkts_encapsulated = 0;
   u16 old_l0 = 0, old_l1 = 0;
-  u32 thread_index = vlib_get_thread_index ();
+  u32 thread_index = vm->thread_index;
   u32 stats_sw_if_index, stats_n_packets, stats_n_bytes;
   u32 sw_if_index0 = 0, sw_if_index1 = 0;
   u32 next0 = 0, next1 = 0;
@@ -153,6 +153,9 @@ geneve_encap_inline (vlib_main_t * vm,
              /* Note: change to always set next0 if it may be set to drop */
              next0 = t0->next_dpo.dpoi_next_node;
            }
+
+         ASSERT (t0 != NULL);
+
          vnet_buffer (b0)->ip.adj_index[VLIB_TX] = t0->next_dpo.dpoi_index;
 
          /* Get next node index and adj index from tunnel next_dpo */
@@ -164,6 +167,9 @@ geneve_encap_inline (vlib_main_t * vm,
              /* Note: change to always set next1 if it may be set to drop */
              next1 = t1->next_dpo.dpoi_next_node;
            }
+
+         ASSERT (t1 != NULL);
+
          vnet_buffer (b1)->ip.adj_index[VLIB_TX] = t1->next_dpo.dpoi_index;
 
          /* Apply the rewrite string. $$$$ vnet_rewrite? */