when deleting l3 static mapping with addr_only, 91/10991/3
authorahdj007 <dong.juan1@zte.com.cn>
Wed, 7 Mar 2018 03:05:35 +0000 (11:05 +0800)
committerDamjan Marion <dmarion.lists@gmail.com>
Tue, 10 Apr 2018 10:35:15 +0000 (10:35 +0000)
lb session with the same user maybe deleted.

Change-Id: Ie58579cf4f8babb594f3c44aa185720134c58c3d
Signed-off-by: ahdj007 <dong.juan1@zte.com.cn>
src/plugins/nat/nat.c [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index b4e5c79..48535d9
@@ -1063,6 +1063,9 @@ int snat_add_static_mapping(ip4_address_t l_addr, ip4_address_t e_addr,
                               (clib_net_to_host_u16 (s->out2in.port) != e_port))
                             continue;
                         }
+                      
+                      if (s->flags & SNAT_SESSION_FLAG_LOAD_BALANCING)
+                          continue;
 
                       nat_free_session_data (sm, s, tsm - sm->per_thread_data);
                       clib_dlist_remove (tsm->list_pool, s->per_user_index);
@@ -1073,7 +1076,7 @@ int snat_add_static_mapping(ip4_address_t l_addr, ip4_address_t e_addr,
                       if (!addr_only)
                         break;
                     }
-                  if (addr_only)
+                  if (addr_only && (u->nstaticsessions == 0))
                     {
                       pool_put (tsm->users, u);
                       clib_bihash_add_del_8_8 (&tsm->user_hash, &kv, 0);