diff options
Diffstat (limited to 'src/plugins/nat/nat44-ei/nat44_ei.c')
-rw-r--r-- | src/plugins/nat/nat44-ei/nat44_ei.c | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/src/plugins/nat/nat44-ei/nat44_ei.c b/src/plugins/nat/nat44-ei/nat44_ei.c index 30c61b21d91..4f2fa6112d5 100644 --- a/src/plugins/nat/nat44-ei/nat44_ei.c +++ b/src/plugins/nat/nat44-ei/nat44_ei.c @@ -1684,6 +1684,20 @@ nat44_ei_get_in2out_worker_index (ip4_header_t *ip0, u32 rx_fib_index0, } u32 +nat44_ei_get_thread_idx_by_port (u16 e_port) +{ + nat44_ei_main_t *nm = &nat44_ei_main; + u32 thread_idx = nm->num_workers; + if (nm->num_workers > 1) + { + thread_idx = nm->first_worker_index + + nm->workers[(e_port - 1024) / nm->port_per_thread % + _vec_len (nm->workers)]; + } + return thread_idx; +} + +u32 nat44_ei_get_out2in_worker_index (vlib_buffer_t *b, ip4_header_t *ip0, u32 rx_fib_index0, u8 is_output) { @@ -1761,9 +1775,8 @@ nat44_ei_get_out2in_worker_index (vlib_buffer_t *b, ip4_header_t *ip0, } /* worker by outside port */ - next_worker_index = nm->first_worker_index; - next_worker_index += - nm->workers[(clib_net_to_host_u16 (port) - 1024) / nm->port_per_thread]; + next_worker_index = + nat44_ei_get_thread_idx_by_port (clib_net_to_host_u16 (port)); return next_worker_index; } @@ -2050,19 +2063,6 @@ nat44_ei_del_session (nat44_ei_main_t *nm, ip4_address_t *addr, u16 port, return VNET_API_ERROR_NO_SUCH_ENTRY; } -u32 -nat44_ei_get_thread_idx_by_port (u16 e_port) -{ - nat44_ei_main_t *nm = &nat44_ei_main; - u32 thread_idx = nm->num_workers; - if (nm->num_workers > 1) - { - thread_idx = nm->first_worker_index + - nm->workers[(e_port - 1024) / nm->port_per_thread]; - } - return thread_idx; -} - void nat44_ei_add_del_addr_to_fib (ip4_address_t *addr, u8 p_len, u32 sw_if_index, int is_add) |