|
@@ -37,8 +37,9 @@ static const struct xt_table packet_mangler = {
|
|
|
};
|
|
|
|
|
|
static unsigned int
|
|
|
-ipt_mangle_out(struct sk_buff *skb, const struct net_device *out)
|
|
|
+ipt_mangle_out(struct sk_buff *skb, const struct nf_hook_state *state)
|
|
|
{
|
|
|
+ struct net_device *out = state->out;
|
|
|
unsigned int ret;
|
|
|
const struct iphdr *iph;
|
|
|
u_int8_t tos;
|
|
@@ -58,7 +59,7 @@ ipt_mangle_out(struct sk_buff *skb, const struct net_device *out)
|
|
|
daddr = iph->daddr;
|
|
|
tos = iph->tos;
|
|
|
|
|
|
- ret = ipt_do_table(skb, NF_INET_LOCAL_OUT, NULL, out,
|
|
|
+ ret = ipt_do_table(skb, NF_INET_LOCAL_OUT, state,
|
|
|
dev_net(out)->ipv4.iptable_mangle);
|
|
|
/* Reroute for ANY change. */
|
|
|
if (ret != NF_DROP && ret != NF_STOLEN) {
|
|
@@ -84,12 +85,12 @@ iptable_mangle_hook(const struct nf_hook_ops *ops,
|
|
|
const struct nf_hook_state *state)
|
|
|
{
|
|
|
if (ops->hooknum == NF_INET_LOCAL_OUT)
|
|
|
- return ipt_mangle_out(skb, state->out);
|
|
|
+ return ipt_mangle_out(skb, state);
|
|
|
if (ops->hooknum == NF_INET_POST_ROUTING)
|
|
|
- return ipt_do_table(skb, ops->hooknum, state->in, state->out,
|
|
|
+ return ipt_do_table(skb, ops->hooknum, state,
|
|
|
dev_net(state->out)->ipv4.iptable_mangle);
|
|
|
/* PREROUTING/INPUT/FORWARD: */
|
|
|
- return ipt_do_table(skb, ops->hooknum, state->in, state->out,
|
|
|
+ return ipt_do_table(skb, ops->hooknum, state,
|
|
|
dev_net(state->in)->ipv4.iptable_mangle);
|
|
|
}
|
|
|
|