[netfilter-cvslog] r6694 - in trunk/libnetfilter_queue: include/libnetfilter_queue src

kaber at netfilter.org kaber at netfilter.org
Mon Nov 13 21:19:08 CET 2006


Author: kaber at netfilter.org
Date: 2006-11-13 21:19:08 +0100 (Mon, 13 Nov 2006)
New Revision: 6694

Modified:
   trunk/libnetfilter_queue/include/libnetfilter_queue/libnetfilter_queue.h
   trunk/libnetfilter_queue/include/libnetfilter_queue/linux_nfnetlink_queue.h
   trunk/libnetfilter_queue/src/libnetfilter_queue.c
Log:
Add patch to set max. queue length (Eric Leblond)


Modified: trunk/libnetfilter_queue/include/libnetfilter_queue/libnetfilter_queue.h
===================================================================
--- trunk/libnetfilter_queue/include/libnetfilter_queue/libnetfilter_queue.h	2006-11-13 19:38:44 UTC (rev 6693)
+++ trunk/libnetfilter_queue/include/libnetfilter_queue/libnetfilter_queue.h	2006-11-13 20:19:08 UTC (rev 6694)
@@ -49,6 +49,9 @@
 extern int nfq_set_mode(struct nfq_q_handle *qh,
 			  u_int8_t mode, unsigned int len);
 
+int nfq_set_queue_maxlen(struct nfq_q_handle *qh,
+			u_int32_t queuelen);
+
 extern int nfq_set_verdict(struct nfq_q_handle *qh,
 			     u_int32_t id,
 			     u_int32_t verdict,

Modified: trunk/libnetfilter_queue/include/libnetfilter_queue/linux_nfnetlink_queue.h
===================================================================
--- trunk/libnetfilter_queue/include/libnetfilter_queue/linux_nfnetlink_queue.h	2006-11-13 19:38:44 UTC (rev 6693)
+++ trunk/libnetfilter_queue/include/libnetfilter_queue/linux_nfnetlink_queue.h	2006-11-13 20:19:08 UTC (rev 6694)
@@ -1,13 +1,13 @@
 #ifndef _NFNETLINK_QUEUE_H
 #define _NFNETLINK_QUEUE_H
 
-#include <linux/types.h>
-#include <libnfnetlink/linux_nfnetlink.h>
-
 #ifndef aligned_u64
 #define aligned_u64 unsigned long long __attribute__((aligned(8)))
 #endif
 
+#include <linux/types.h>
+#include <libnfnetlink/linux_nfnetlink.h>
+
 enum nfqnl_msg_types {
 	NFQNL_MSG_PACKET,		/* packet from kernel to userspace */
 	NFQNL_MSG_VERDICT,		/* verdict from userspace to kernel */
@@ -86,6 +86,7 @@
 	NFQA_CFG_UNSPEC,
 	NFQA_CFG_CMD,			/* nfqnl_msg_config_cmd */
 	NFQA_CFG_PARAMS,		/* nfqnl_msg_config_params */
+	NFQA_CFG_QUEUE_MAXLEN,		/* u_int32_t */
 	__NFQA_CFG_MAX
 };
 #define NFQA_CFG_MAX (__NFQA_CFG_MAX-1)

Modified: trunk/libnetfilter_queue/src/libnetfilter_queue.c
===================================================================
--- trunk/libnetfilter_queue/src/libnetfilter_queue.c	2006-11-13 19:38:44 UTC (rev 6693)
+++ trunk/libnetfilter_queue/src/libnetfilter_queue.c	2006-11-13 20:19:08 UTC (rev 6694)
@@ -288,6 +288,23 @@
 	return nfnl_talk(qh->h->nfnlh, nmh, 0, 0, NULL, NULL, NULL);
 }
 
+int nfq_set_queue_maxlen(struct nfq_q_handle *qh,
+				u_int32_t queuelen)
+{
+	char buf[NFNL_HEADER_LEN
+		+NFA_LENGTH(sizeof(struct nfqnl_msg_config_params))];
+	u_int32_t queue_maxlen = htonl(queuelen);
+	struct nlmsghdr *nmh = (struct nlmsghdr *) buf;
+
+	nfnl_fill_hdr(qh->h->nfnlssh, nmh, 0, AF_UNSPEC, qh->id,
+			NFQNL_MSG_CONFIG, NLM_F_REQUEST|NLM_F_ACK);
+
+	nfnl_addattr_l(nmh, sizeof(buf), NFQA_CFG_QUEUE_MAXLEN, &queue_maxlen,
+			sizeof(queue_maxlen));
+
+	return nfnl_talk(qh->h->nfnlh, nmh, 0, 0, NULL, NULL, NULL);
+}
+
 static int __set_verdict(struct nfq_q_handle *qh, u_int32_t id,
 		u_int32_t verdict, u_int32_t mark, int set_mark,
 		u_int32_t data_len, unsigned char *data)




More information about the netfilter-cvslog mailing list