diff options
author | Yasuyuki KOZAKAI <yasuyuki@netfilter.org> | 2007-08-04 08:24:29 +0000 |
---|---|---|
committer | Yasuyuki KOZAKAI <yasuyuki@netfilter.org> | 2007-08-04 08:24:29 +0000 |
commit | a7bf6d0decd93ade089a98a8de76a529cd96427e (patch) | |
tree | cf4d988e897add0e5fd3d6bd62464db2ca50493d | |
parent | e4cc20b2367362c2f9c84c0daaccd985e3236118 (diff) |
Add IPv6 support to DSCP target
-rw-r--r-- | extensions/Makefile | 4 | ||||
-rw-r--r-- | extensions/libxt_DSCP.c (renamed from extensions/libipt_DSCP.c) | 51 | ||||
-rw-r--r-- | include/linux/netfilter/xt_DSCP.h (renamed from include/linux/netfilter_ipv4/ipt_DSCP.h) | 16 |
3 files changed, 44 insertions, 27 deletions
diff --git a/extensions/Makefile b/extensions/Makefile index 53e3e9eb..5830faa8 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 conntrack ecn helper icmp iprange owner policy realm tos ttl unclean DNAT DSCP ECN LOG MASQUERADE MIRROR NETMAP REDIRECT REJECT SAME SNAT TOS TTL ULOG +PF_EXT_SLIB:=ah addrtype conntrack ecn helper icmp iprange owner policy realm tos ttl unclean DNAT ECN LOG MASQUERADE MIRROR NETMAP REDIRECT REJECT SAME SNAT TOS TTL ULOG PF6_EXT_SLIB:=eui64 hl icmp6 owner policy HL LOG -PFX_EXT_SLIB:=connmark connlimit comment dscp esp hashlimit length limit mac mark multiport physdev pkttype sctp state standard tcp tcpmss udp CLASSIFY CONNMARK MARK NFQUEUE NOTRACK TCPMSS TRACE +PFX_EXT_SLIB:=connmark connlimit comment dscp esp hashlimit length limit mac mark multiport physdev pkttype sctp state standard tcp tcpmss udp CLASSIFY CONNMARK DSCP MARK NFQUEUE NOTRACK TCPMSS TRACE ifeq ($(DO_SELINUX), 1) PF_EXT_SE_SLIB:= diff --git a/extensions/libipt_DSCP.c b/extensions/libxt_DSCP.c index 029c54fe..b062c638 100644 --- a/extensions/libipt_DSCP.c +++ b/extensions/libxt_DSCP.c @@ -14,9 +14,9 @@ #include <stdlib.h> #include <getopt.h> -#include <iptables.h> -#include <linux/netfilter_ipv4/ip_tables.h> -#include <linux/netfilter_ipv4/ipt_DSCP.h> +#include <xtables.h> +#include <linux/netfilter/x_tables.h> +#include <linux/netfilter/xt_DSCP.h> /* This is evil, but it's my code - HW*/ #include "libipt_dscp_helper.c" @@ -49,7 +49,7 @@ static const struct option opts[] = { }; static void -parse_dscp(const char *s, struct ipt_DSCP_info *dinfo) +parse_dscp(const char *s, struct xt_DSCP_info *dinfo) { unsigned int dscp; @@ -57,7 +57,7 @@ parse_dscp(const char *s, struct ipt_DSCP_info *dinfo) exit_error(PARAMETER_PROBLEM, "Invalid dscp `%s'\n", s); - if (dscp > IPT_DSCP_MAX) + if (dscp > XT_DSCP_MAX) exit_error(PARAMETER_PROBLEM, "DSCP `%d` out of range\n", dscp); @@ -67,7 +67,7 @@ parse_dscp(const char *s, struct ipt_DSCP_info *dinfo) static void -parse_class(const char *s, struct ipt_DSCP_info *dinfo) +parse_class(const char *s, struct xt_DSCP_info *dinfo) { unsigned int dscp = class_to_dscp(s); @@ -81,8 +81,8 @@ parse(int c, char **argv, int invert, unsigned int *flags, const void *entry, struct xt_entry_target **target) { - struct ipt_DSCP_info *dinfo - = (struct ipt_DSCP_info *)(*target)->data; + struct xt_DSCP_info *dinfo + = (struct xt_DSCP_info *)(*target)->data; switch (c) { case 'F': @@ -127,8 +127,8 @@ print(const void *ip, const struct xt_entry_target *target, int numeric) { - const struct ipt_DSCP_info *dinfo = - (const struct ipt_DSCP_info *)target->data; + const struct xt_DSCP_info *dinfo = + (const struct xt_DSCP_info *)target->data; printf("DSCP set "); print_dscp(dinfo->dscp, numeric); } @@ -137,27 +137,44 @@ print(const void *ip, static void save(const void *ip, const struct xt_entry_target *target) { - const struct ipt_DSCP_info *dinfo = - (const struct ipt_DSCP_info *)target->data; + const struct xt_DSCP_info *dinfo = + (const struct xt_DSCP_info *)target->data; printf("--set-dscp 0x%02x ", dinfo->dscp); } -static struct iptables_target dscp = { +static struct xtables_target dscp = { + .family = AF_INET, .name = "DSCP", .version = IPTABLES_VERSION, - .size = IPT_ALIGN(sizeof(struct ipt_DSCP_info)), - .userspacesize = IPT_ALIGN(sizeof(struct ipt_DSCP_info)), + .size = XT_ALIGN(sizeof(struct xt_DSCP_info)), + .userspacesize = XT_ALIGN(sizeof(struct xt_DSCP_info)), .help = &help, .init = &init, .parse = &parse, .final_check = &final_check, .print = &print, .save = &save, - .extra_opts = opts + .extra_opts = opts, +}; + +static struct xtables_target dscp6 = { + .family = AF_INET6, + .name = "DSCP", + .version = IPTABLES_VERSION, + .size = XT_ALIGN(sizeof(struct xt_DSCP_info)), + .userspacesize = XT_ALIGN(sizeof(struct xt_DSCP_info)), + .help = &help, + .init = &init, + .parse = &parse, + .final_check = &final_check, + .print = &print, + .save = &save, + .extra_opts = opts, }; void _init(void) { - register_target(&dscp); + xtables_register_target(&dscp); + xtables_register_target(&dscp6); } diff --git a/include/linux/netfilter_ipv4/ipt_DSCP.h b/include/linux/netfilter/xt_DSCP.h index 678edee5..3c7c9639 100644 --- a/include/linux/netfilter_ipv4/ipt_DSCP.h +++ b/include/linux/netfilter/xt_DSCP.h @@ -1,20 +1,20 @@ -/* iptables module for setting the IPv4 DSCP field +/* x_tables module for setting the IPv4/IPv6 DSCP field * * (C) 2002 Harald Welte <laforge@gnumonks.org> * based on ipt_FTOS.c (C) 2000 by Matthew G. Marsh <mgm@paktronix.com> * This software is distributed under GNU GPL v2, 1991 - * + * * See RFC2474 for a description of the DSCP field within the IP Header. * - * Id: ipt_DSCP.h,v 1.7 2002/03/14 12:03:13 laforge Exp + * xt_DSCP.h,v 1.7 2002/03/14 12:03:13 laforge Exp */ -#ifndef _IPT_DSCP_TARGET_H -#define _IPT_DSCP_TARGET_H -#include <linux/netfilter_ipv4/ipt_dscp.h> +#ifndef _XT_DSCP_TARGET_H +#define _XT_DSCP_TARGET_H +#include <linux/netfilter/xt_dscp.h> /* target info */ -struct ipt_DSCP_info { +struct xt_DSCP_info { u_int8_t dscp; }; -#endif /* _IPT_DSCP_TARGET_H */ +#endif /* _XT_DSCP_TARGET_H */ |