aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/ipcomp6.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/ipcomp6.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/ipcomp6.c')
-rw-r--r--net/ipv6/ipcomp6.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/net/ipv6/ipcomp6.c b/net/ipv6/ipcomp6.c
index 92832385a8ef..7af5aee75d98 100644
--- a/net/ipv6/ipcomp6.c
+++ b/net/ipv6/ipcomp6.c
@@ -64,7 +64,9 @@ static void ipcomp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
64 (struct ip_comp_hdr *)(skb->data + offset); 64 (struct ip_comp_hdr *)(skb->data + offset);
65 struct xfrm_state *x; 65 struct xfrm_state *x;
66 66
67 if (type != ICMPV6_DEST_UNREACH && type != ICMPV6_PKT_TOOBIG) 67 if (type != ICMPV6_DEST_UNREACH &&
68 type != ICMPV6_PKT_TOOBIG &&
69 type != NDISC_REDIRECT)
68 return; 70 return;
69 71
70 spi = htonl(ntohs(ipcomph->cpi)); 72 spi = htonl(ntohs(ipcomph->cpi));
@@ -73,9 +75,10 @@ static void ipcomp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
73 if (!x) 75 if (!x)
74 return; 76 return;
75 77
76 pr_debug("pmtu discovery on SA IPCOMP/%08x/%pI6\n", 78 if (type == NDISC_REDIRECT)
77 spi, &iph->daddr); 79 ip6_redirect(skb, net, 0, 0);
78 ip6_update_pmtu(skb, net, info, 0, 0); 80 else
81 ip6_update_pmtu(skb, net, info, 0, 0);
79 xfrm_state_put(x); 82 xfrm_state_put(x);
80} 83}
81 84