diff options
author | David S. Miller <davem@davemloft.net> | 2012-07-12 03:25:15 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-07-12 03:25:15 -0400 |
commit | ec18d9a2691d69cd14b48f9b919fddcef28b7f5c (patch) | |
tree | 4d10135edfe25d4ff56e39330b0f7797b2034b8a /net/ipv6/esp6.c | |
parent | 3a5ad2ee5e2c5030d8a303d06f9148a2f893a369 (diff) |
ipv6: Add redirect support to all protocol icmp error handlers.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/esp6.c')
-rw-r--r-- | net/ipv6/esp6.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/net/ipv6/esp6.c b/net/ipv6/esp6.c index 89a615ba84f8..6dc7fd353ef5 100644 --- a/net/ipv6/esp6.c +++ b/net/ipv6/esp6.c | |||
@@ -434,16 +434,19 @@ static void esp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, | |||
434 | struct xfrm_state *x; | 434 | struct xfrm_state *x; |
435 | 435 | ||
436 | if (type != ICMPV6_DEST_UNREACH && | 436 | if (type != ICMPV6_DEST_UNREACH && |
437 | type != ICMPV6_PKT_TOOBIG) | 437 | type != ICMPV6_PKT_TOOBIG && |
438 | type != NDISC_REDIRECT) | ||
438 | return; | 439 | return; |
439 | 440 | ||
440 | x = xfrm_state_lookup(net, skb->mark, (const xfrm_address_t *)&iph->daddr, | 441 | x = xfrm_state_lookup(net, skb->mark, (const xfrm_address_t *)&iph->daddr, |
441 | esph->spi, IPPROTO_ESP, AF_INET6); | 442 | esph->spi, IPPROTO_ESP, AF_INET6); |
442 | if (!x) | 443 | if (!x) |
443 | return; | 444 | return; |
444 | pr_debug("pmtu discovery on SA ESP/%08x/%pI6\n", | 445 | |
445 | ntohl(esph->spi), &iph->daddr); | 446 | if (type == NDISC_REDIRECT) |
446 | ip6_update_pmtu(skb, net, info, 0, 0); | 447 | ip6_redirect(skb, net, 0, 0); |
448 | else | ||
449 | ip6_update_pmtu(skb, net, info, 0, 0); | ||
447 | xfrm_state_put(x); | 450 | xfrm_state_put(x); |
448 | } | 451 | } |
449 | 452 | ||