Fix multiple NAT translation with interface address as external 64/12964/2
authorAlexander Chernavin <achernavin@netgate.com>
Fri, 8 Jun 2018 15:28:27 +0000 (11:28 -0400)
committerOle Trøan <otroan@employees.org>
Mon, 11 Jun 2018 05:45:50 +0000 (05:45 +0000)
Change-Id: Idd65c6d0489bf83984a2c34d22d3f94000fc7018
Signed-off-by: Alexander Chernavin <achernavin@netgate.com>
src/plugins/nat/nat.c

index 1d493a6..5953c42 100755 (executable)
@@ -759,14 +759,14 @@ int snat_add_static_mapping(ip4_address_t l_addr, ip4_address_t e_addr,
       for (i = 0; i < vec_len (sm->to_resolve); i++)
         {
           rp = sm->to_resolve + i;
-          if (rp->sw_if_index != sw_if_index &&
-              rp->l_addr.as_u32 != l_addr.as_u32 &&
-              rp->vrf_id != vrf_id && rp->addr_only != addr_only)
+          if (rp->sw_if_index != sw_if_index ||
+              rp->l_addr.as_u32 != l_addr.as_u32 ||
+              rp->vrf_id != vrf_id || rp->addr_only != addr_only)
             continue;
 
           if (!addr_only)
             {
-              if (rp->l_port != l_port && rp->e_port != e_port && rp->proto != proto)
+              if (rp->l_port != l_port || rp->e_port != e_port || rp->proto != proto)
                 continue;
             }