From: Vadim Kochan <[email protected]>

Seems it was caused by specifying all netfilter groups
when flushing connections.

Used separated nfct instance w/o netfilter groups to
flush ipv4/ipv6 connections.

More info can be fetched from the issue item on github:

        https://github.com/netsniff-ng/netsniff-ng/issues/145

Signed-off-by: Vadim Kochan <[email protected]>
---
 flowtop.c | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/flowtop.c b/flowtop.c
index 0927ff5..d2fac50 100644
--- a/flowtop.c
+++ b/flowtop.c
@@ -1044,9 +1044,22 @@ static int collector_cb(enum nf_conntrack_msg_type type,
        return NFCT_CB_CONTINUE;
 }
 
-static inline void collector_flush(struct nfct_handle *handle, uint8_t family)
+static inline void collector_flush(void)
 {
-       nfct_query(handle, NFCT_Q_FLUSH, &family);
+       struct nfct_handle *nfct = nfct_open(CONNTRACK, 0);
+       uint8_t family;
+
+       if (!nfct)
+               panic("Cannot create a nfct to flush connections: %s\n",
+                       strerror(errno));
+
+       family = AF_INET;
+       nfct_query(nfct, NFCT_Q_FLUSH, &family);
+
+       family = AF_INET6;
+       nfct_query(nfct, NFCT_Q_FLUSH, &family);
+
+       nfct_close(nfct);
 }
 
 static void restore_sysctl(void *value)
@@ -1121,15 +1134,14 @@ static void *collector(void *null __maybe_unused)
        struct pollfd poll_fd[1];
        int ret;
 
+       collector_flush();
+
        ct_event = nfct_open(CONNTRACK, NF_NETLINK_CONNTRACK_NEW |
                                      NF_NETLINK_CONNTRACK_UPDATE |
                                      NF_NETLINK_CONNTRACK_DESTROY);
        if (!ct_event)
                panic("Cannot create a nfct handle: %s\n", strerror(errno));
 
-       collector_flush(ct_event, AF_INET);
-       collector_flush(ct_event, AF_INET6);
-
        filter = nfct_filter_create();
        if (!filter)
                panic("Cannot create a nfct filter: %s\n", strerror(errno));
-- 
2.4.2

-- 
You received this message because you are subscribed to the Google Groups 
"netsniff-ng" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to