From f23f45f0f09656c0ef960febf6e07442c9053e6d Mon Sep 17 00:00:00 2001 From: "/C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=pablo/emailAddress=pablo@netfilter.org" Date: Sun, 23 Oct 2005 22:14:05 +0000 Subject: o Add conntrack event notification test o Define NFCT_ANY_GROUP flag o Now callback can return a value to stop receiving events o implement nfct_unset_callback() --- utils/ctnl_test.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'utils') diff --git a/utils/ctnl_test.c b/utils/ctnl_test.c index 5f33424..8fad660 100644 --- a/utils/ctnl_test.c +++ b/utils/ctnl_test.c @@ -14,6 +14,17 @@ #include #include +static int event_counter(void *arg, unsigned int flags, int type) +{ + static int counter = 0; + + fprintf(stdout, "Event number %d\n", ++counter); + if (counter > 10) + return -1; + + return 0; +} + int main(int argc, char **argv) { struct nfct_conntrack *ct; @@ -53,7 +64,7 @@ int main(int argc, char **argv) goto end; } - cth = nfct_open(CONNTRACK, 0); + cth = nfct_open(CONNTRACK, NFCT_ANY_GROUP); if (!cth) { fprintf(stderr, "Can't open handler\n"); errors++; @@ -75,6 +86,11 @@ int main(int argc, char **argv) fprintf(stdout, "TEST 2: dump conntrack table (%d)\n", ret); if (ret < 0) errors++; + + fprintf(stdout, "TEST 3: Waiting for 10 conntrack events\n"); + nfct_set_callback(cth, event_counter); + ret = nfct_event_conntrack(cth); + fprintf(stdout, "TEST 3: Received 10 conntrack events (%d)\n", ret); nfct_close(cth); nfct_conntrack_free(ct); -- cgit v1.2.3