diff options
| -rw-r--r-- | include/linux/ipv6.h | 1 | ||||
| -rw-r--r-- | net/ipv6/ip6_output.c | 5 |
2 files changed, 4 insertions, 2 deletions
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h index e0cc9a7db2b5..7bdf6ffe2b49 100644 --- a/include/linux/ipv6.h +++ b/include/linux/ipv6.h | |||
| @@ -250,6 +250,7 @@ struct inet6_skb_parm { | |||
| 250 | 250 | ||
| 251 | #define IP6SKB_XFRM_TRANSFORMED 1 | 251 | #define IP6SKB_XFRM_TRANSFORMED 1 |
| 252 | #define IP6SKB_FORWARDED 2 | 252 | #define IP6SKB_FORWARDED 2 |
| 253 | #define IP6SKB_REROUTED 4 | ||
| 253 | }; | 254 | }; |
| 254 | 255 | ||
| 255 | #define IP6CB(skb) ((struct inet6_skb_parm*)((skb)->cb)) | 256 | #define IP6CB(skb) ((struct inet6_skb_parm*)((skb)->cb)) |
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 | /* |
