[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