|
@@ -71,51 +71,6 @@ static const struct xt_table packet_mangler = {
|
|
|
.af = NFPROTO_IPV4,
|
|
|
};
|
|
|
|
|
|
-/* The work comes in here from netfilter.c. */
|
|
|
-static unsigned int
|
|
|
-ipt_pre_routing_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_mangle);
|
|
|
-}
|
|
|
-
|
|
|
-static unsigned int
|
|
|
-ipt_post_routing_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(out)->ipv4.iptable_mangle);
|
|
|
-}
|
|
|
-
|
|
|
-static unsigned int
|
|
|
-ipt_local_in_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_mangle);
|
|
|
-}
|
|
|
-
|
|
|
-static unsigned int
|
|
|
-ipt_forward_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_mangle);
|
|
|
-}
|
|
|
-
|
|
|
static unsigned int
|
|
|
ipt_local_hook(unsigned int hook,
|
|
|
struct sk_buff *skb,
|
|
@@ -158,37 +113,53 @@ ipt_local_hook(unsigned int hook,
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
+/* The work comes in here from netfilter.c. */
|
|
|
+static unsigned int
|
|
|
+iptable_mangle_hook(unsigned int hook,
|
|
|
+ struct sk_buff *skb,
|
|
|
+ const struct net_device *in,
|
|
|
+ const struct net_device *out,
|
|
|
+ int (*okfn)(struct sk_buff *))
|
|
|
+{
|
|
|
+ if (hook == NF_INET_LOCAL_OUT)
|
|
|
+ return ipt_local_hook(hook, skb, in, out, okfn);
|
|
|
+
|
|
|
+ /* PREROUTING/INPUT/FORWARD: */
|
|
|
+ return ipt_do_table(skb, hook, in, out,
|
|
|
+ dev_net(in)->ipv4.iptable_mangle);
|
|
|
+}
|
|
|
+
|
|
|
static struct nf_hook_ops ipt_ops[] __read_mostly = {
|
|
|
{
|
|
|
- .hook = ipt_pre_routing_hook,
|
|
|
+ .hook = iptable_mangle_hook,
|
|
|
.owner = THIS_MODULE,
|
|
|
.pf = NFPROTO_IPV4,
|
|
|
.hooknum = NF_INET_PRE_ROUTING,
|
|
|
.priority = NF_IP_PRI_MANGLE,
|
|
|
},
|
|
|
{
|
|
|
- .hook = ipt_local_in_hook,
|
|
|
+ .hook = iptable_mangle_hook,
|
|
|
.owner = THIS_MODULE,
|
|
|
.pf = NFPROTO_IPV4,
|
|
|
.hooknum = NF_INET_LOCAL_IN,
|
|
|
.priority = NF_IP_PRI_MANGLE,
|
|
|
},
|
|
|
{
|
|
|
- .hook = ipt_forward_hook,
|
|
|
+ .hook = iptable_mangle_hook,
|
|
|
.owner = THIS_MODULE,
|
|
|
.pf = NFPROTO_IPV4,
|
|
|
.hooknum = NF_INET_FORWARD,
|
|
|
.priority = NF_IP_PRI_MANGLE,
|
|
|
},
|
|
|
{
|
|
|
- .hook = ipt_local_hook,
|
|
|
+ .hook = iptable_mangle_hook,
|
|
|
.owner = THIS_MODULE,
|
|
|
.pf = NFPROTO_IPV4,
|
|
|
.hooknum = NF_INET_LOCAL_OUT,
|
|
|
.priority = NF_IP_PRI_MANGLE,
|
|
|
},
|
|
|
{
|
|
|
- .hook = ipt_post_routing_hook,
|
|
|
+ .hook = iptable_mangle_hook,
|
|
|
.owner = THIS_MODULE,
|
|
|
.pf = NFPROTO_IPV4,
|
|
|
.hooknum = NF_INET_POST_ROUTING,
|