summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author/C=JP/ST=JP/CN=Yasuyuki Kozakai/emailAddress=yasuyuki@netfilter.org </C=JP/ST=JP/CN=Yasuyuki Kozakai/emailAddress=yasuyuki@netfilter.org>2007-07-24 07:29:36 +0000
committer/C=JP/ST=JP/CN=Yasuyuki Kozakai/emailAddress=yasuyuki@netfilter.org </C=JP/ST=JP/CN=Yasuyuki Kozakai/emailAddress=yasuyuki@netfilter.org>2007-07-24 07:29:36 +0000
commit844b4c9432da59af221219be3fb21c8e31088e89 (patch)
tree6520cff017338b7c3e3761088c448d0a3eaaf741
parent8087c67c932d61f1b054b1a31737d6fe89e8272c (diff)
Unifies libip[6]t_NFQUEUE.c into libxt_NFQUEUE.c
-rw-r--r--extensions/Makefile6
-rw-r--r--extensions/libip6t_NFQUEUE.c114
-rw-r--r--extensions/libxt_NFQUEUE.c (renamed from extensions/libipt_NFQUEUE.c)46
-rw-r--r--include/linux/netfilter/xt_NFQUEUE.h (renamed from include/linux/netfilter_ipv4/ipt_NFQUEUE.h)8
4 files changed, 39 insertions, 135 deletions
diff --git a/extensions/Makefile b/extensions/Makefile
index 3159b3d..fa3fdb5 100644
--- a/extensions/Makefile
+++ b/extensions/Makefile
@@ -5,9 +5,9 @@
# header files are present in the include/linux directory of this iptables
# package (HW)
#
-PF_EXT_SLIB:=ah addrtype connlimit connmark conntrack ecn hashlimit helper icmp iprange owner policy realm state tos ttl unclean CLASSIFY CONNMARK DNAT DSCP ECN LOG MARK MASQUERADE MIRROR NETMAP NFQUEUE REDIRECT REJECT SAME SNAT TOS TTL TRACE ULOG
-PF6_EXT_SLIB:=connlimit connmark eui64 hl icmp6 owner policy state CONNMARK HL LOG NFQUEUE MARK TRACE
-PFX_EXT_SLIB:=comment dscp esp length limit mac mark multiport physdev pkttype sctp standard tcp tcpmss udp NOTRACK TCPMSS
+PF_EXT_SLIB:=ah addrtype connlimit connmark conntrack ecn hashlimit helper icmp iprange owner policy realm state tos ttl unclean CLASSIFY CONNMARK DNAT DSCP ECN LOG MARK MASQUERADE MIRROR NETMAP REDIRECT REJECT SAME SNAT TOS TTL TRACE ULOG
+PF6_EXT_SLIB:=connlimit connmark eui64 hl icmp6 owner policy state CONNMARK HL LOG MARK TRACE
+PFX_EXT_SLIB:=comment dscp esp length limit mac mark multiport physdev pkttype sctp standard tcp tcpmss udp NFQUEUE NOTRACK TCPMSS
ifeq ($(DO_SELINUX), 1)
PF_EXT_SE_SLIB:=CONNSECMARK
diff --git a/extensions/libip6t_NFQUEUE.c b/extensions/libip6t_NFQUEUE.c
deleted file mode 100644
index afc3a6e..0000000
--- a/extensions/libip6t_NFQUEUE.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/* Shared library add-on to ip666666tables for NFQ
- *
- * (C) 2005 by Harald Welte <laforge@netfilter.org>
- *
- * This program is distributed under the terms of GNU GPL v2, 1991
- *
- */
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <getopt.h>
-
-#include <ip6tables.h>
-#include <linux/netfilter_ipv6/ip6_tables.h>
-#include <linux/netfilter_ipv4/ipt_NFQUEUE.h>
-
-static void init(struct xt_entry_target *t, unsigned int *nfcache)
-{
-}
-
-static void help(void)
-{
- printf(
-"NFQUEUE target options\n"
-" --queue-num value Send packet to QUEUE number <value>.\n"
-" Valid queue numbers are 0-65535\n"
-);
-}
-
-static struct option opts[] = {
- { "queue-num", 1, 0, 'F' },
- { 0 }
-};
-
-static void
-parse_num(const char *s, struct ipt_NFQ_info *tinfo)
-{
- unsigned int num;
-
- if (string_to_number(s, 0, 65535, &num) == -1)
- exit_error(PARAMETER_PROBLEM,
- "Invalid queue number `%s'\n", s);
-
- tinfo->queuenum = num & 0xffff;
- return;
-}
-
-static int
-parse(int c, char **argv, int invert, unsigned int *flags,
- const void *entry,
- struct xt_entry_target **target)
-{
- struct ipt_NFQ_info *tinfo
- = (struct ipt_NFQ_info *)(*target)->data;
-
- switch (c) {
- case 'F':
- if (*flags)
- exit_error(PARAMETER_PROBLEM, "NFQUEUE target: "
- "Only use --queue-num ONCE!");
- parse_num(optarg, tinfo);
- break;
- default:
- return 0;
- }
-
- return 1;
-}
-
-static void
-final_check(unsigned int flags)
-{
-}
-
-/* Prints out the targinfo. */
-static void
-print(const void *ip,
- const struct xt_entry_target *target,
- int numeric)
-{
- const struct ipt_NFQ_info *tinfo =
- (const struct ipt_NFQ_info *)target->data;
- printf("NFQUEUE num %u", tinfo->queuenum);
-}
-
-/* Saves the union ip6t_targinfo in parsable form to stdout. */
-static void
-save(const void *ip, const struct xt_entry_target *target)
-{
- const struct ipt_NFQ_info *tinfo =
- (const struct ipt_NFQ_info *)target->data;
-
- printf("--queue-num %u ", tinfo->queuenum);
-}
-
-static struct ip6tables_target nfqueue = {
- .next = NULL,
- .name = "NFQUEUE",
- .version = IPTABLES_VERSION,
- .size = IP6T_ALIGN(sizeof(struct ipt_NFQ_info)),
- .userspacesize = IP6T_ALIGN(sizeof(struct ipt_NFQ_info)),
- .help = &help,
- .init = &init,
- .parse = &parse,
- .final_check = &final_check,
- .print = &print,
- .save = &save,
- .extra_opts = opts
-};
-
-void _init(void)
-{
- register_target6(&nfqueue);
-}
diff --git a/extensions/libipt_NFQUEUE.c b/extensions/libxt_NFQUEUE.c
index 5d608fc..558e80b 100644
--- a/extensions/libipt_NFQUEUE.c
+++ b/extensions/libxt_NFQUEUE.c
@@ -10,9 +10,9 @@
#include <stdlib.h>
#include <getopt.h>
-#include <iptables.h>
-#include <linux/netfilter_ipv4/ip_tables.h>
-#include <linux/netfilter_ipv4/ipt_NFQUEUE.h>
+#include <xtables.h>
+#include <linux/netfilter/x_tables.h>
+#include <linux/netfilter/xt_NFQUEUE.h>
static void init(struct xt_entry_target *t, unsigned int *nfcache)
{
@@ -33,7 +33,7 @@ static struct option opts[] = {
};
static void
-parse_num(const char *s, struct ipt_NFQ_info *tinfo)
+parse_num(const char *s, struct xt_NFQ_info *tinfo)
{
unsigned int num;
@@ -50,8 +50,8 @@ parse(int c, char **argv, int invert, unsigned int *flags,
const void *entry,
struct xt_entry_target **target)
{
- struct ipt_NFQ_info *tinfo
- = (struct ipt_NFQ_info *)(*target)->data;
+ struct xt_NFQ_info *tinfo
+ = (struct xt_NFQ_info *)(*target)->data;
switch (c) {
case 'F':
@@ -78,8 +78,8 @@ print(const void *ip,
const struct xt_entry_target *target,
int numeric)
{
- const struct ipt_NFQ_info *tinfo =
- (const struct ipt_NFQ_info *)target->data;
+ const struct xt_NFQ_info *tinfo =
+ (const struct xt_NFQ_info *)target->data;
printf("NFQUEUE num %u", tinfo->queuenum);
}
@@ -87,18 +87,35 @@ print(const void *ip,
static void
save(const void *ip, const struct xt_entry_target *target)
{
- const struct ipt_NFQ_info *tinfo =
- (const struct ipt_NFQ_info *)target->data;
+ const struct xt_NFQ_info *tinfo =
+ (const struct xt_NFQ_info *)target->data;
printf("--queue-num %u ", tinfo->queuenum);
}
-static struct iptables_target nfqueue = {
+static struct xtables_target nfqueue = {
.next = NULL,
+ .family = AF_INET,
.name = "NFQUEUE",
.version = IPTABLES_VERSION,
- .size = IPT_ALIGN(sizeof(struct ipt_NFQ_info)),
- .userspacesize = IPT_ALIGN(sizeof(struct ipt_NFQ_info)),
+ .size = XT_ALIGN(sizeof(struct xt_NFQ_info)),
+ .userspacesize = XT_ALIGN(sizeof(struct xt_NFQ_info)),
+ .help = &help,
+ .init = &init,
+ .parse = &parse,
+ .final_check = &final_check,
+ .print = &print,
+ .save = &save,
+ .extra_opts = opts
+};
+
+static struct xtables_target nfqueue6 = {
+ .next = NULL,
+ .family = AF_INET6,
+ .name = "NFQUEUE",
+ .version = IPTABLES_VERSION,
+ .size = XT_ALIGN(sizeof(struct xt_NFQ_info)),
+ .userspacesize = XT_ALIGN(sizeof(struct xt_NFQ_info)),
.help = &help,
.init = &init,
.parse = &parse,
@@ -110,5 +127,6 @@ static struct iptables_target nfqueue = {
void _init(void)
{
- register_target(&nfqueue);
+ xtables_register_target(&nfqueue);
+ xtables_register_target(&nfqueue6);
}
diff --git a/include/linux/netfilter_ipv4/ipt_NFQUEUE.h b/include/linux/netfilter/xt_NFQUEUE.h
index b5b2943..9a9af79 100644
--- a/include/linux/netfilter_ipv4/ipt_NFQUEUE.h
+++ b/include/linux/netfilter/xt_NFQUEUE.h
@@ -5,12 +5,12 @@
* This software is distributed under GNU GPL v2, 1991
*
*/
-#ifndef _IPT_NFQ_TARGET_H
-#define _IPT_NFQ_TARGET_H
+#ifndef _XT_NFQ_TARGET_H
+#define _XT_NFQ_TARGET_H
/* target info */
-struct ipt_NFQ_info {
+struct xt_NFQ_info {
u_int16_t queuenum;
};
-#endif /* _IPT_DSCP_TARGET_H */
+#endif /* _XT_NFQ_TARGET_H */