diff options
Diffstat (limited to 'net/ipv6/ip6_output.c')
-rw-r--r-- | net/ipv6/ip6_output.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 26de3c0ea31e..e46d4683eab0 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
@@ -441,8 +441,10 @@ int ip6_forward(struct sk_buff *skb) | |||
441 | 441 | ||
442 | /* IPv6 specs say nothing about it, but it is clear that we cannot | 442 | /* IPv6 specs say nothing about it, but it is clear that we cannot |
443 | send redirects to source routed frames. | 443 | send redirects to source routed frames. |
444 | We don't send redirects to frames decapsulated from IPsec. | ||
444 | */ | 445 | */ |
445 | if (skb->dev == dst->dev && dst->neighbour && opt->srcrt == 0) { | 446 | if (skb->dev == dst->dev && dst->neighbour && opt->srcrt == 0 && |
447 | !skb->sp) { | ||
446 | struct in6_addr *target = NULL; | 448 | struct in6_addr *target = NULL; |
447 | struct rt6_info *rt; | 449 | struct rt6_info *rt; |
448 | struct neighbour *n = dst->neighbour; | 450 | struct neighbour *n = dst->neighbour; |