]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - net/ipv4/netfilter/iptable_raw.c
netfilter: xtables: compact table hook functions (1/2)
[net-next-2.6.git] / net / ipv4 / netfilter / iptable_raw.c
index 993edc23be09cad1688af4e4611b213e7a4d7435..2c55575e89f5447619f8d648cceba6d7a9a13d5f 100644 (file)
@@ -45,23 +45,15 @@ static const struct xt_table packet_raw = {
 
 /* The work comes in here from netfilter.c. */
 static unsigned int
-ipt_hook(unsigned int hook,
-        struct sk_buff *skb,
-        const struct net_device *in,
-        const struct net_device *out,
-        int (*okfn)(struct sk_buff *))
+iptable_raw_hook(unsigned int hook, struct sk_buff *skb,
+                const struct net_device *in, const struct net_device *out,
+                int (*okfn)(struct sk_buff *))
 {
-       return ipt_do_table(skb, hook, in, out,
-                           dev_net(in)->ipv4.iptable_raw);
-}
+       if (hook == NF_INET_PRE_ROUTING)
+               return ipt_do_table(skb, hook, in, out,
+                                   dev_net(in)->ipv4.iptable_raw);
 
-static unsigned int
-ipt_local_hook(unsigned int hook,
-              struct sk_buff *skb,
-              const struct net_device *in,
-              const struct net_device *out,
-              int (*okfn)(struct sk_buff *))
-{
+       /* OUTPUT: */
        /* root is playing with raw sockets. */
        if (skb->len < sizeof(struct iphdr) ||
            ip_hdrlen(skb) < sizeof(struct iphdr))
@@ -73,14 +65,14 @@ ipt_local_hook(unsigned int hook,
 /* 'raw' is the very first table. */
 static struct nf_hook_ops ipt_ops[] __read_mostly = {
        {
-               .hook = ipt_hook,
+               .hook = iptable_raw_hook,
                .pf = NFPROTO_IPV4,
                .hooknum = NF_INET_PRE_ROUTING,
                .priority = NF_IP_PRI_RAW,
                .owner = THIS_MODULE,
        },
        {
-               .hook = ipt_local_hook,
+               .hook = iptable_raw_hook,
                .pf = NFPROTO_IPV4,
                .hooknum = NF_INET_LOCAL_OUT,
                .priority = NF_IP_PRI_RAW,
@@ -100,7 +92,7 @@ static int __net_init iptable_raw_net_init(struct net *net)
 
 static void __net_exit iptable_raw_net_exit(struct net *net)
 {
-       ipt_unregister_table(net->ipv4.iptable_raw);
+       ipt_unregister_table(net, net->ipv4.iptable_raw);
 }
 
 static struct pernet_operations iptable_raw_net_ops = {