diff options
author | /C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=pablo/emailAddress=pablo@netfilter.org </C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=pablo/emailAddress=pablo@netfilter.org> | 2005-10-27 02:08:38 +0000 |
---|---|---|
committer | /C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=pablo/emailAddress=pablo@netfilter.org </C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=pablo/emailAddress=pablo@netfilter.org> | 2005-10-27 02:08:38 +0000 |
commit | 38d44b9935a3001ce7872bcb22c481dcfe504925 (patch) | |
tree | 5cc265b19395289d730936fa51481be3420cc1fd /utils | |
parent | 36c2ce21e743134783740063798c7015dd69513b (diff) |
o new nfct_handler prototype
o NFCT_COUNTERS splitted in NFCT_COUNTERS_[ORIG|RPLY]
o all global vars are now static
o kill nfct_set_handler, it was too much
o fixed very stupid bug in counters printing
o fixed conntrack getting: invalid netlink flags NLM_F_[ROOT|MATCH]
o nfnl_send returns the proper error to the client, instead of returning -1
o some cleanup's: killed the ret, it was useless
o test for the conntrack API completed, still missing the expectation test
Diffstat (limited to 'utils')
-rw-r--r-- | utils/ctnl_test.c | 46 |
1 files changed, 39 insertions, 7 deletions
diff --git a/utils/ctnl_test.c b/utils/ctnl_test.c index 8fad660..fccadbe 100644 --- a/utils/ctnl_test.c +++ b/utils/ctnl_test.c @@ -12,6 +12,7 @@ #include <stdio.h> #include <stdlib.h> #include <errno.h> +#include <signal.h> #include <libnetfilter_conntrack/libnetfilter_conntrack.h> static int event_counter(void *arg, unsigned int flags, int type) @@ -19,15 +20,24 @@ 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) + if (counter >= 10) return -1; return 0; } +static struct nfct_conntrack *ct; +static struct nfct_handle *cth; + +static void event_sighandler(int s) +{ + nfct_conntrack_free(ct); + nfct_close(cth); +} + +/* I know, better with fork() as Rusty does in nfsim ;), later */ int main(int argc, char **argv) { - struct nfct_conntrack *ct; struct nfct_tuple orig = { .src = { .v4 = inet_addr("1.1.1.1") }, .dst = { .v4 = inet_addr("2.2.2.2") }, @@ -49,7 +59,6 @@ int main(int argc, char **argv) unsigned long timeout = 100; unsigned long mark = 0; unsigned long id = NFCT_ANY_ID; - struct nfct_handle *cth; int ret = 0, errors = 0; /* Here we go... */ @@ -82,16 +91,39 @@ int main(int argc, char **argv) errors++; nfct_set_callback(cth, nfct_default_conntrack_display); + ret = nfct_dump_conntrack_table_reset_counters(cth); + fprintf(stdout, "TEST 2: dump conntrack table and reset (%d)\n", ret); + if (ret < 0) + errors++; + ret = nfct_dump_conntrack_table(cth); - fprintf(stdout, "TEST 2: dump conntrack table (%d)\n", ret); + fprintf(stdout, "TEST 3: dump conntrack table (%d)\n", ret); + if (ret < 0) + errors++; + + ret = nfct_get_conntrack(cth, &orig, NFCT_DIR_ORIGINAL, NFCT_ANY_ID); + fprintf(stdout, "TEST 4: get conntrack (%d)\n", ret); + if (ret < 0) + errors++; + + ct->status |= IPS_SEEN_REPLY; + ct->timeout = 1000; + ret = nfct_update_conntrack(cth, ct); + fprintf(stdout, "TEST 5: update conntrack (%d)\n", ret); if (ret < 0) errors++; - fprintf(stdout, "TEST 3: Waiting for 10 conntrack events\n"); + ret = nfct_delete_conntrack(cth, &orig, NFCT_DIR_ORIGINAL, NFCT_ANY_ID); + fprintf(stdout, "TEST 6: delete conntrack (%d)\n", ret); + if (ret < 0) + errors++; + + fprintf(stdout, "TEST 7: Waiting for 10 conntrack events\n"); + signal(SIGINT, event_sighandler); nfct_set_callback(cth, event_counter); ret = nfct_event_conntrack(cth); - fprintf(stdout, "TEST 3: Received 10 conntrack events (%d)\n", ret); - + fprintf(stdout, "TEST 7: Received 10 conntrack events (%d)\n", ret); + nfct_close(cth); nfct_conntrack_free(ct); |