[NETFILTER]: Merge ipt_tos into xt_dscp
authorJan Engelhardt <jengelh@computergmbh.de>
Wed, 5 Dec 2007 07:37:54 +0000 (23:37 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 28 Jan 2008 22:55:58 +0000 (14:55 -0800)
Merge ipt_tos into xt_dscp.

Merge ipt_tos (tos v0 match) into xt_dscp. They both match on the same
field in the IPv4 header, so it seems reasonable to keep them in one
piece. This is part one of the implicit 4-patch series to move tos to
xtables and extend it by IPv6.

Signed-off-by: Jan Engelhardt <jengelh@computergmbh.de>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/netfilter/Kconfig
net/ipv4/netfilter/Makefile
net/ipv4/netfilter/ipt_tos.c [deleted file]
net/netfilter/Kconfig
net/netfilter/xt_dscp.c

index 244e91daf04e759f6ffb4b3fa3af470a6df534ae..232817c828c9532e3229c22ae94706a698bf0e86 100644 (file)
@@ -63,15 +63,6 @@ config IP_NF_MATCH_IPRANGE
 
          To compile it as a module, choose M here.  If unsure, say N.
 
-config IP_NF_MATCH_TOS
-       tristate "TOS match support"
-       depends on IP_NF_IPTABLES
-       help
-         TOS matching allows you to match packets based on the Type Of
-         Service fields of the IP packet.
-
-         To compile it as a module, choose M here.  If unsure, say N.
-
 config IP_NF_MATCH_RECENT
        tristate '"recent" match support'
        depends on IP_NF_IPTABLES
index 42199e93b86cb16d862731cdd359da90b086178a..00c19c74ce77d92ec605b53c8d00f4b8483bb6d3 100644 (file)
@@ -46,7 +46,6 @@ obj-$(CONFIG_IP_NF_MATCH_AH) += ipt_ah.o
 obj-$(CONFIG_IP_NF_MATCH_ECN) += ipt_ecn.o
 obj-$(CONFIG_IP_NF_MATCH_IPRANGE) += ipt_iprange.o
 obj-$(CONFIG_IP_NF_MATCH_RECENT) += ipt_recent.o
-obj-$(CONFIG_IP_NF_MATCH_TOS) += ipt_tos.o
 obj-$(CONFIG_IP_NF_MATCH_TTL) += ipt_ttl.o
 
 # targets
diff --git a/net/ipv4/netfilter/ipt_tos.c b/net/ipv4/netfilter/ipt_tos.c
deleted file mode 100644 (file)
index 7d60868..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Kernel module to match TOS values. */
-
-/* (C) 1999-2001 Paul `Rusty' Russell
- * (C) 2002-2004 Netfilter Core Team <coreteam@netfilter.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/ip.h>
-#include <linux/module.h>
-#include <linux/skbuff.h>
-
-#include <linux/netfilter_ipv4/ipt_tos.h>
-#include <linux/netfilter/x_tables.h>
-
-MODULE_LICENSE("GPL");
-MODULE_DESCRIPTION("iptables TOS match module");
-
-static bool
-tos_mt(const struct sk_buff *skb, const struct net_device *in,
-       const struct net_device *out, const struct xt_match *match,
-       const void *matchinfo, int offset, unsigned int protoff, bool *hotdrop)
-{
-       const struct ipt_tos_info *info = matchinfo;
-
-       return (ip_hdr(skb)->tos == info->tos) ^ info->invert;
-}
-
-static struct xt_match tos_mt_reg __read_mostly = {
-       .name           = "tos",
-       .family         = AF_INET,
-       .match          = tos_mt,
-       .matchsize      = sizeof(struct ipt_tos_info),
-       .me             = THIS_MODULE,
-};
-
-static int __init tos_mt_init(void)
-{
-       return xt_register_match(&tos_mt_reg);
-}
-
-static void __exit tos_mt_exit(void)
-{
-       xt_unregister_match(&tos_mt_reg);
-}
-
-module_init(tos_mt_init);
-module_exit(tos_mt_exit);
index d220607cc037a167a90e1b859930f6b4796e5f29..1804916e95f1a1fec9953bd8ab7f3a44fb569b68 100644 (file)
@@ -487,7 +487,7 @@ config NETFILTER_XT_MATCH_DCCP
          <file:Documentation/kbuild/modules.txt>.  If unsure, say `N'.
 
 config NETFILTER_XT_MATCH_DSCP
-       tristate '"dscp" match support'
+       tristate '"dscp" and "tos" match support'
        depends on NETFILTER_XTABLES
        help
          This option adds a `DSCP' match, which allows you to match against
@@ -495,6 +495,10 @@ config NETFILTER_XT_MATCH_DSCP
 
          The DSCP field can have any value between 0x0 and 0x3f inclusive.
 
+         It will also add a "tos" match, which allows you to match packets
+         based on the Type Of Service fields of the IPv4 packet (which share
+         the same bits as DSCP).
+
          To compile it as a module, choose M here.  If unsure, say N.
 
 config NETFILTER_XT_MATCH_ESP
index 63f7354ca9aa0be95d25a8ac6720c8363b0a8089..75b0df990d4fe8bd10786ab92dfbbf76101952f8 100644 (file)
 #include <linux/ipv6.h>
 #include <net/dsfield.h>
 
-#include <linux/netfilter/xt_dscp.h>
 #include <linux/netfilter/x_tables.h>
+#include <linux/netfilter/xt_dscp.h>
+#include <linux/netfilter_ipv4/ipt_tos.h>
 
 MODULE_AUTHOR("Harald Welte <laforge@netfilter.org>");
-MODULE_DESCRIPTION("x_tables DSCP matching module");
+MODULE_DESCRIPTION("x_tables DSCP/tos matching module");
 MODULE_LICENSE("GPL");
 MODULE_ALIAS("ipt_dscp");
 MODULE_ALIAS("ip6t_dscp");
+MODULE_ALIAS("ipt_tos");
 
 static bool
 dscp_mt(const struct sk_buff *skb, const struct net_device *in,
@@ -60,6 +62,16 @@ dscp_mt_check(const char *tablename, const void *info,
        return true;
 }
 
+static bool tos_mt_v0(const struct sk_buff *skb, const struct net_device *in,
+                      const struct net_device *out,
+                      const struct xt_match *match, const void *matchinfo,
+                      int offset, unsigned int protoff, bool *hotdrop)
+{
+       const struct ipt_tos_info *info = matchinfo;
+
+       return (ip_hdr(skb)->tos == info->tos) ^ info->invert;
+}
+
 static struct xt_match dscp_mt_reg[] __read_mostly = {
        {
                .name           = "dscp",
@@ -77,6 +89,14 @@ static struct xt_match dscp_mt_reg[] __read_mostly = {
                .matchsize      = sizeof(struct xt_dscp_info),
                .me             = THIS_MODULE,
        },
+       {
+               .name           = "tos",
+               .revision       = 0,
+               .family         = AF_INET,
+               .match          = tos_mt_v0,
+               .matchsize      = sizeof(struct ipt_tos_info),
+               .me             = THIS_MODULE,
+       },
 };
 
 static int __init dscp_mt_init(void)