nat: improve nat44-ed outside address distribution
[vpp.git] / src / plugins / nat / nat44-ed / nat44_ed_in2out.c
index deec009..4ba51bc 100644 (file)
@@ -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;