diff options
author | Jan Engelhardt <jengelh@medozas.de> | 2010-04-13 09:32:16 -0400 |
---|---|---|
committer | Patrick McHardy <kaber@trash.net> | 2010-04-13 09:32:16 -0400 |
commit | 9c6eb28aca52d562f3ffbaebaa56385df9972a43 (patch) | |
tree | 775683fe8a8549274610872b44e4778c76195fa2 /net/ipv6/ip6_output.c | |
parent | 9e50849054a4824f06c66d2b449de21b98e03770 (diff) |
netfilter: ipv6: add IPSKB_REROUTED exclusion to NF_HOOK/POSTROUTING invocation
Similar to how IPv4's ip_output.c works, have ip6_output also check
the IPSKB_REROUTED flag. It will be set from xt_TEE for cloned packets
since Xtables can currently only deal with a single packet in flight
at a time.
Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
Acked-by: David S. Miller <davem@davemloft.net>
[Patrick: changed to use an IP6SKB value instead of IPSKB]
Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'net/ipv6/ip6_output.c')
-rw-r--r-- | net/ipv6/ip6_output.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 236ac7813744..c10a38a71a5e 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
@@ -172,8 +172,9 @@ int ip6_output(struct sk_buff *skb) | |||
172 | return 0; | 172 | return 0; |
173 | } | 173 | } |
174 | 174 | ||
175 | return NF_HOOK(NFPROTO_IPV6, NF_INET_POST_ROUTING, skb, NULL, dev, | 175 | return NF_HOOK_COND(NFPROTO_IPV6, NF_INET_POST_ROUTING, skb, NULL, dev, |
176 | ip6_finish_output); | 176 | ip6_finish_output, |
177 | !(IP6CB(skb)->flags & IP6SKB_REROUTED)); | ||
177 | } | 178 | } |
178 | 179 | ||
179 | /* | 180 | /* |