From: ahdj007 Date: Wed, 7 Mar 2018 03:05:35 +0000 (+0800) Subject: when deleting l3 static mapping with addr_only, X-Git-Tag: v18.07-rc1~495 X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commitdiff_plain;h=28c2631c3c396da1e2fc62260838f8ce9810d5b5 when deleting l3 static mapping with addr_only, lb session with the same user maybe deleted. Change-Id: Ie58579cf4f8babb594f3c44aa185720134c58c3d Signed-off-by: ahdj007 --- diff --git a/src/plugins/nat/nat.c b/src/plugins/nat/nat.c old mode 100644 new mode 100755 index b4e5c799ac6..48535d9be0a --- a/src/plugins/nat/nat.c +++ b/src/plugins/nat/nat.c @@ -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);