aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/ah6.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6/ah6.c')
-rw-r--r--net/ipv6/ah6.c10
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