diff options
Diffstat (limited to 'src/plugins/nat/nat44-ed/nat44_ed_in2out.c')
-rw-r--r-- | src/plugins/nat/nat44-ed/nat44_ed_in2out.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/plugins/nat/nat44-ed/nat44_ed_in2out.c b/src/plugins/nat/nat44-ed/nat44_ed_in2out.c index deec0099933..4ba51bcaea6 100644 --- a/src/plugins/nat/nat44-ed/nat44_ed_in2out.c +++ b/src/plugins/nat/nat44-ed/nat44_ed_in2out.c @@ -155,7 +155,9 @@ nat_ed_alloc_addr_and_port (snat_main_t *sm, u32 rx_fib_index, { if (vec_len (sm->addresses) > 0) { - u32 s_addr_offset = s_addr.as_u32 % vec_len (sm->addresses); + u32 s_addr_offset = (s_addr.as_u32 + (s_addr.as_u32 >> 8) + + (s_addr.as_u32 >> 16) + (s_addr.as_u32 >> 24)) % + vec_len (sm->addresses); snat_address_t *a, *ja = 0, *ra = 0, *ba = 0; int i; |