diff options
Diffstat (limited to 'src/plugins/nat/in2out.c')
-rwxr-xr-x | src/plugins/nat/in2out.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/plugins/nat/in2out.c b/src/plugins/nat/in2out.c index 3f8c4abe60f..d5bd9f5c851 100755 --- a/src/plugins/nat/in2out.c +++ b/src/plugins/nat/in2out.c @@ -460,6 +460,7 @@ icmp_match_in2out_slow (snat_main_t * sm, vlib_node_runtime_t * node, snat_session_key_t * p_value, u8 * p_dont_translate, void *d, void *e) { + snat_main_per_thread_data_t *tsm = &sm->per_thread_data[thread_index]; u32 sw_if_index0; u32 rx_fib_index0; snat_session_key_t key0; @@ -483,8 +484,7 @@ icmp_match_in2out_slow (snat_main_t * sm, vlib_node_runtime_t * node, kv0.key = key0.as_u64; - if (clib_bihash_search_8_8 (&sm->per_thread_data[thread_index].in2out, &kv0, - &value0)) + if (clib_bihash_search_8_8 (&tsm->in2out, &kv0, &value0)) { if (vnet_buffer (b0)->sw_if_index[VLIB_TX] != ~0) { @@ -521,7 +521,7 @@ icmp_match_in2out_slow (snat_main_t * sm, vlib_node_runtime_t * node, } next0 = slow_path (sm, b0, ip0, rx_fib_index0, &key0, &s0, node, next0, - thread_index, vlib_time_now (sm->vlib_main)); + thread_index, vlib_time_now (tsm->vlib_main)); if (PREDICT_FALSE (next0 == SNAT_IN2OUT_NEXT_DROP)) goto out; @@ -547,8 +547,7 @@ icmp_match_in2out_slow (snat_main_t * sm, vlib_node_runtime_t * node, goto out; } - s0 = pool_elt_at_index (sm->per_thread_data[thread_index].sessions, - value0.value); + s0 = pool_elt_at_index (tsm->sessions, value0.value); } out: @@ -660,6 +659,7 @@ icmp_in2out (snat_main_t * sm, vlib_node_runtime_t * node, u32 next0, u32 thread_index, void *d, void *e) { + snat_main_per_thread_data_t *tsm = &sm->per_thread_data[thread_index]; snat_session_key_t sm0; u8 protocol; icmp_echo_header_t *echo0, *inner_echo0 = 0; @@ -686,11 +686,12 @@ icmp_in2out (snat_main_t * sm, if (PREDICT_TRUE (!ip4_is_fragment (ip0))) { - sum0 = ip_incremental_checksum_buffer (sm->vlib_main, b0, (u8 *) icmp0 - - (u8 *) - vlib_buffer_get_current (b0), - ntohs (ip0->length) - - ip4_header_bytes (ip0), 0); + sum0 = + ip_incremental_checksum_buffer (tsm->vlib_main, b0, + (u8 *) icmp0 - + (u8 *) vlib_buffer_get_current (b0), + ntohs (ip0->length) - + ip4_header_bytes (ip0), 0); checksum0 = ~ip_csum_fold (sum0); if (PREDICT_FALSE (checksum0 != 0 && checksum0 != 0xffff)) { @@ -818,6 +819,7 @@ icmp_in2out_slow_path (snat_main_t * sm, u32 next0, f64 now, u32 thread_index, snat_session_t ** p_s0) { + snat_main_per_thread_data_t *tsm = &sm->per_thread_data[thread_index]; next0 = icmp_in2out (sm, b0, ip0, icmp0, sw_if_index0, rx_fib_index0, node, next0, thread_index, p_s0, 0); snat_session_t *s0 = *p_s0; @@ -826,7 +828,7 @@ icmp_in2out_slow_path (snat_main_t * sm, /* Accounting */ nat44_session_update_counters (s0, now, vlib_buffer_length_in_chain - (sm->vlib_main, b0), thread_index); + (tsm->vlib_main, b0), thread_index); /* Per-user LRU list maintenance */ nat44_session_update_lru (sm, s0, thread_index); } |