diff options
Diffstat (limited to 'net/ipv6/ah6.c')
-rw-r--r-- | net/ipv6/ah6.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/net/ipv6/ah6.c b/net/ipv6/ah6.c index 49d4d26bda88..7e6139508ee7 100644 --- a/net/ipv6/ah6.c +++ b/net/ipv6/ah6.c | |||
@@ -613,16 +613,18 @@ static void ah6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, | |||
613 | struct xfrm_state *x; | 613 | struct xfrm_state *x; |
614 | 614 | ||
615 | if (type != ICMPV6_DEST_UNREACH && | 615 | if (type != ICMPV6_DEST_UNREACH && |
616 | type != ICMPV6_PKT_TOOBIG) | 616 | type != ICMPV6_PKT_TOOBIG && |
617 | type != NDISC_REDIRECT) | ||
617 | return; | 618 | return; |
618 | 619 | ||
619 | x = xfrm_state_lookup(net, skb->mark, (xfrm_address_t *)&iph->daddr, ah->spi, IPPROTO_AH, AF_INET6); | 620 | x = xfrm_state_lookup(net, skb->mark, (xfrm_address_t *)&iph->daddr, ah->spi, IPPROTO_AH, AF_INET6); |
620 | if (!x) | 621 | if (!x) |
621 | return; | 622 | return; |
622 | 623 | ||
623 | NETDEBUG(KERN_DEBUG "pmtu discovery on SA AH/%08x/%pI6\n", | 624 | if (type == NDISC_REDIRECT) |
624 | ntohl(ah->spi), &iph->daddr); | 625 | ip6_redirect(skb, net, 0, 0); |
625 | ip6_update_pmtu(skb, net, info, 0, 0); | 626 | else |
627 | ip6_update_pmtu(skb, net, info, 0, 0); | ||
626 | xfrm_state_put(x); | 628 | xfrm_state_put(x); |
627 | } | 629 | } |
628 | 630 | ||