NAT44: fix undesired dependency between static mapping and address from the pool... 58/15758/2
authorMatus Fabian <matfabia@cisco.com>
Wed, 7 Nov 2018 07:17:31 +0000 (23:17 -0800)
committerDamjan Marion <dmarion@me.com>
Wed, 7 Nov 2018 11:59:29 +0000 (11:59 +0000)
Change-Id: Iaa404361eac2a6612dcdaba3f73bae41a35c5446
Signed-off-by: Matus Fabian <matfabia@cisco.com>
src/plugins/nat/nat.c
src/plugins/nat/nat_format.c

index 8115a57..e7d59f7 100755 (executable)
@@ -558,6 +558,10 @@ is_snat_address_used_in_static_mapping (snat_main_t * sm, ip4_address_t addr)
   /* *INDENT-OFF* */
   pool_foreach (m, sm->static_mappings,
   ({
+      if (is_addr_only_static_mapping (m) ||
+          is_out2in_only_static_mapping (m) ||
+          is_identity_static_mapping (m))
+        continue;
       if (m->external_addr.as_u32 == addr.as_u32)
         return 1;
   }));
@@ -954,6 +958,9 @@ snat_add_static_mapping (ip4_address_t l_addr, ip4_address_t e_addr,
 
       if (identity_nat)
        {
+         if (vrf_id == ~0)
+           vrf_id = sm->inside_vrf_id;
+
          for (i = 0; i < vec_len (m->locals); i++)
            {
              if (m->locals[i].vrf_id == vrf_id)
index 5ce00dc..8e5ac4c 100644 (file)
@@ -226,7 +226,8 @@ format_snat_static_mapping (u8 * s, va_list * args)
        s = format (s, "identity mapping %U",
                    format_ip4_address, &m->local_addr);
       else
-       s = format (s, "identity mapping %U:%d",
+       s = format (s, "identity mapping %U %U:%d",
+                   format_snat_protocol, m->proto,
                    format_ip4_address, &m->local_addr, m->local_port);
 
       /* *INDENT-OFF* */