From 9d5a4bc19b439668aada109aa3e5a5265dc3402b Mon Sep 17 00:00:00 2001 From: "/C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=kaber/emailAddress=kaber@netfilter.org" Date: Mon, 13 Nov 2006 20:19:08 +0000 Subject: Add patch to set max. queue length (Eric Leblond) --- src/libnetfilter_queue.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/libnetfilter_queue.c') diff --git a/src/libnetfilter_queue.c b/src/libnetfilter_queue.c index e39bc81..c7bce9e 100644 --- a/src/libnetfilter_queue.c +++ b/src/libnetfilter_queue.c @@ -288,6 +288,23 @@ int nfq_set_mode(struct nfq_q_handle *qh, 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) -- cgit v1.2.3