aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/ip6_tunnel.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6/ip6_tunnel.c')
-rw-r--r--net/ipv6/ip6_tunnel.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c
index 6af3fcfdcbbd..0b5b60ec6f4a 100644
--- a/net/ipv6/ip6_tunnel.c
+++ b/net/ipv6/ip6_tunnel.c
@@ -550,6 +550,9 @@ ip4ip6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
550 rel_type = ICMP_DEST_UNREACH; 550 rel_type = ICMP_DEST_UNREACH;
551 rel_code = ICMP_FRAG_NEEDED; 551 rel_code = ICMP_FRAG_NEEDED;
552 break; 552 break;
553 case NDISC_REDIRECT:
554 rel_type = ICMP_REDIRECT;
555 rel_code = ICMP_REDIR_HOST;
553 default: 556 default:
554 return 0; 557 return 0;
555 } 558 }
@@ -608,6 +611,10 @@ ip4ip6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
608 611
609 skb_dst(skb2)->ops->update_pmtu(skb_dst(skb2), rel_info); 612 skb_dst(skb2)->ops->update_pmtu(skb_dst(skb2), rel_info);
610 } 613 }
614 if (rel_type == ICMP_REDIRECT) {
615 if (skb_dst(skb2)->ops->redirect)
616 skb_dst(skb2)->ops->redirect(skb_dst(skb2), skb2);
617 }
611 618
612 icmp_send(skb2, rel_type, rel_code, htonl(rel_info)); 619 icmp_send(skb2, rel_type, rel_code, htonl(rel_info));
613 620