[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