aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/esp6.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-07-12 03:25:15 -0400
committerDavid S. Miller <davem@davemloft.net>2012-07-12 03:25:15 -0400
commitec18d9a2691d69cd14b48f9b919fddcef28b7f5c (patch)
tree4d10135edfe25d4ff56e39330b0f7797b2034b8a /net/ipv6/esp6.c
parent3a5ad2ee5e2c5030d8a303d06f9148a2f893a369 (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.c11
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