summaryrefslogtreecommitdiff
path: root/ipacm/src/IPACM_ConntrackClient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ipacm/src/IPACM_ConntrackClient.cpp')
-rw-r--r--ipacm/src/IPACM_ConntrackClient.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/ipacm/src/IPACM_ConntrackClient.cpp b/ipacm/src/IPACM_ConntrackClient.cpp
index 8a2499c..29afd50 100644
--- a/ipacm/src/IPACM_ConntrackClient.cpp
+++ b/ipacm/src/IPACM_ConntrackClient.cpp
@@ -482,12 +482,18 @@ void* IPACM_ConntrackClient::TCPRegisterWithConnTrack(void *)
blocks waiting for events. */
IPACMDBG("Waiting for events\n");
+ctcatch:
ret = nfct_catch(pClient->tcp_hdl);
- if(ret == -1)
+ if((ret == -1) && (errno != ENOMSG))
{
- IPACMERR("(%d)(%s)\n", ret, strerror(errno));
+ IPACMERR("(%d)(%d)(%s)\n", ret, errno, strerror(errno));
return NULL;
}
+ else
+ {
+ IPACMDBG("ctcatch ret:%d, errno:%d\n", ret, errno);
+ goto ctcatch;
+ }
IPACMDBG("Exit from tcp thread\n");
@@ -568,14 +574,15 @@ void* IPACM_ConntrackClient::UDPRegisterWithConnTrack(void *)
/* Block to catch events from net filter connection track */
ctcatch:
ret = nfct_catch(pClient->udp_hdl);
- if(ret == -1)
+ /* Due to conntrack dump, sequence number might mismatch for initial events. */
+ if((ret == -1) && (errno != ENOMSG) && (errno != EILSEQ))
{
- IPACMDBG("(%d)(%s)\n", ret, strerror(errno));
+ IPACMDBG("(%d)(%d)(%s)\n", ret, errno, strerror(errno));
return NULL;
}
else
{
- IPACMDBG("ctcatch ret:%d\n", ret);
+ IPACMDBG("ctcatch ret:%d, errno:%d\n", ret, errno);
goto ctcatch;
}