[netfilter-cvslog] r4445 - in trunk/libnetfilter_conntrack:
include/libnetfilter_conntrack src utils
laforge at netfilter.org
laforge at netfilter.org
Fri Nov 4 15:32:51 CET 2005
Author: laforge at netfilter.org
Date: 2005-11-04 15:32:50 +0100 (Fri, 04 Nov 2005)
New Revision: 4445
Modified:
trunk/libnetfilter_conntrack/include/libnetfilter_conntrack/libnetfilter_conntrack.h
trunk/libnetfilter_conntrack/src/libnetfilter_conntrack.c
trunk/libnetfilter_conntrack/utils/ctnl_test.c
Log:
add extra 'data' argument to callback functions
Modified: trunk/libnetfilter_conntrack/include/libnetfilter_conntrack/libnetfilter_conntrack.h
===================================================================
--- trunk/libnetfilter_conntrack/include/libnetfilter_conntrack/libnetfilter_conntrack.h 2005-11-03 20:47:17 UTC (rev 4444)
+++ trunk/libnetfilter_conntrack/include/libnetfilter_conntrack/libnetfilter_conntrack.h 2005-11-04 14:32:50 UTC (rev 4445)
@@ -197,7 +197,7 @@
};
struct nfct_handle;
-typedef int (*nfct_callback)(void *arg, unsigned int flags, int);
+typedef int (*nfct_callback)(void *arg, unsigned int flags, int, void *data);
typedef int (*nfct_handler)(struct nfct_handle *cth, struct nlmsghdr *nlh,
void *arg);
@@ -230,16 +230,16 @@
* [Register|unregister] callbacks
*/
extern void nfct_register_callback(struct nfct_handle *cth,
- nfct_callback callback);
+ nfct_callback callback, void *data);
extern void nfct_unregister_callback(struct nfct_handle *cth);
/*
* callback displayers
*/
-extern int nfct_default_conntrack_display(void *arg, unsigned int, int);
-extern int nfct_default_conntrack_display_id(void *arg, unsigned int, int);
-extern int nfct_default_expect_display(void *arg, unsigned int, int);
-extern int nfct_default_expect_display_id(void *arg, unsigned int, int);
+extern int nfct_default_conntrack_display(void *arg, unsigned int, int, void *);
+extern int nfct_default_conntrack_display_id(void *arg, unsigned int, int, void *);
+extern int nfct_default_expect_display(void *arg, unsigned int, int, void *);
+extern int nfct_default_expect_display_id(void *arg, unsigned int, int, void *);
/*
* [Create|update|get|destroy] conntracks
Modified: trunk/libnetfilter_conntrack/src/libnetfilter_conntrack.c
===================================================================
--- trunk/libnetfilter_conntrack/src/libnetfilter_conntrack.c 2005-11-03 20:47:17 UTC (rev 4444)
+++ trunk/libnetfilter_conntrack/src/libnetfilter_conntrack.c 2005-11-04 14:32:50 UTC (rev 4445)
@@ -26,6 +26,7 @@
struct nfct_handle {
struct nfnl_handle nfnlh;
nfct_callback callback; /* user callback */
+ void *callback_data; /* user data for callback */
nfct_handler handler; /* netlink handler */
};
@@ -106,14 +107,17 @@
return err;
}
-void nfct_register_callback(struct nfct_handle *cth, nfct_callback callback)
+void nfct_register_callback(struct nfct_handle *cth, nfct_callback callback,
+ void *data)
{
cth->callback = callback;
+ cth->callback_data = data;
}
void nfct_unregister_callback(struct nfct_handle *cth)
{
cth->callback = NULL;
+ cth->callback_data = NULL;
}
static void nfct_build_tuple_ip(struct nfnlhdr *req, int size,
@@ -484,7 +488,8 @@
if (cth->callback)
ret = cth->callback((void *) &ct, flags,
- typemsg2enum(type, nlh->nlmsg_flags));
+ typemsg2enum(type, nlh->nlmsg_flags),
+ cth->callback_data);
return ret;
}
@@ -541,8 +546,8 @@
int nfct_sprintf_counters(char *buf, struct nfct_conntrack *ct, int dir)
{
return (sprintf(buf, "packets=%llu bytes=%llu ",
- ct->counters[dir].packets,
- ct->counters[dir].bytes));
+ (unsigned long long) ct->counters[dir].packets,
+ (unsigned long long) ct->counters[dir].bytes));
}
int nfct_sprintf_mark(char *buf, struct nfct_conntrack *ct)
@@ -617,7 +622,8 @@
return --size;
}
-int nfct_default_conntrack_display(void *arg, unsigned int flags, int type)
+int nfct_default_conntrack_display(void *arg, unsigned int flags, int type,
+ void *data)
{
char buf[512];
int size;
@@ -630,7 +636,8 @@
return 0;
}
-int nfct_default_conntrack_display_id(void *arg, unsigned int flags, int type)
+int nfct_default_conntrack_display_id(void *arg, unsigned int flags, int type,
+ void *data)
{
char buf[512];
int size;
@@ -673,7 +680,8 @@
return --size;
}
-int nfct_default_expect_display(void *arg, unsigned int flags, int type)
+int nfct_default_expect_display(void *arg, unsigned int flags, int type,
+ void *data)
{
char buf[256];
int size = 0;
@@ -686,7 +694,8 @@
return 0;
}
-int nfct_default_expect_display_id(void *arg, unsigned int flags, int type)
+int nfct_default_expect_display_id(void *arg, unsigned int flags, int type,
+ void *data)
{
char buf[256];
int size = 0;
@@ -739,7 +748,8 @@
if (cth->callback)
ret = cth->callback((void *)&exp, 0,
- typemsg2enum(type, nlh->nlmsg_flags));
+ typemsg2enum(type, nlh->nlmsg_flags),
+ cth->callback_data);
return 0;
}
Modified: trunk/libnetfilter_conntrack/utils/ctnl_test.c
===================================================================
--- trunk/libnetfilter_conntrack/utils/ctnl_test.c 2005-11-03 20:47:17 UTC (rev 4444)
+++ trunk/libnetfilter_conntrack/utils/ctnl_test.c 2005-11-04 14:32:50 UTC (rev 4445)
@@ -15,7 +15,7 @@
#include <signal.h>
#include <libnetfilter_conntrack/libnetfilter_conntrack.h>
-static int event_counter(void *arg, unsigned int flags, int type)
+static int event_counter(void *arg, unsigned int flags, int type, void *data)
{
static int counter = 0;
@@ -90,7 +90,7 @@
if (ret < 0 && ret != -EEXIST)
errors++;
- nfct_register_callback(cth, nfct_default_conntrack_display);
+ nfct_register_callback(cth, nfct_default_conntrack_display, NULL);
ret = nfct_dump_conntrack_table_reset_counters(cth);
fprintf(stdout, "TEST 2: dump conntrack table and reset (%d)\n", ret);
if (ret < 0)
@@ -132,7 +132,7 @@
fprintf(stdout, "TEST 7: Waiting for 10 conntrack events\n");
signal(SIGINT, event_sighandler);
- nfct_register_callback(cth, event_counter);
+ nfct_register_callback(cth, event_counter, NULL);
ret = nfct_event_conntrack(cth);
fprintf(stdout, "TEST 7: Received 10 conntrack events (%d)\n", ret);
More information about the netfilter-cvslog
mailing list