diff options
author | Skylar Chang <chiaweic@codeaurora.org> | 2013-10-10 14:44:47 -0700 |
---|---|---|
committer | Skylar Chang <chiaweic@codeaurora.org> | 2013-10-10 14:44:47 -0700 |
commit | e9f5938b44ed7c88a0033fc545d351a5967e6d13 (patch) | |
tree | cbb072b36f1663c8ff58aec983d94503fbdb3435 /ipacm/src/IPACM_ConntrackListener.cpp | |
parent | 98bd07d294d5442d353227b2ee9e558a23718c70 (diff) | |
download | ipacfg-mgr-e9f5938b44ed7c88a0033fc545d351a5967e6d13.tar.gz |
IPANAT fix: delete IPANAT entry when ECM client went away
IPANAT will delete the corresponding ipv4 NAT rules in IPA
when receiving destroy event from Conntrack in linux kernel
Change-Id: I810c95b16a43794f6e13c393fcece303aabd7ed1
Diffstat (limited to 'ipacm/src/IPACM_ConntrackListener.cpp')
-rwxr-xr-x[-rw-r--r--] | ipacm/src/IPACM_ConntrackListener.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/ipacm/src/IPACM_ConntrackListener.cpp b/ipacm/src/IPACM_ConntrackListener.cpp index ace8a68..cc7c524 100644..100755 --- a/ipacm/src/IPACM_ConntrackListener.cpp +++ b/ipacm/src/IPACM_ConntrackListener.cpp @@ -475,6 +475,7 @@ void IPACM_ConntrackListener::ProcessTCPorUDPMsg( uint32_t status = 0; NatApp *na = NULL; + IPACMDBG("Received type:%d with proto:%d", type, l4proto); status = nfct_get_attr_u32(ct, ATTR_STATUS); if(IPS_DST_NAT & status) @@ -606,9 +607,11 @@ void IPACM_ConntrackListener::ProcessTCPorUDPMsg( IPACMDBG("TCP state TCP_CONNTRACK_ESTABLISHED(%d)\n", tcp_state); na->AddEntry(&rule); } - else if(TCP_CONNTRACK_FIN_WAIT == tcp_state) + else if(TCP_CONNTRACK_FIN_WAIT == tcp_state || + type == NFCT_T_DESTROY) { - IPACMDBG("TCP state TCP_CONNTRACK_FIN_WAIT(%d)\n", tcp_state); + IPACMDBG("TCP state TCP_CONNTRACK_FIN_WAIT(%d) " + "or type NFCT_T_DESTROY(%d)\n", tcp_state, type); na->DeleteEntry(&rule); } else |