Skip to contentSkip to conversation

ipv6: Add an error handler for icmp6

PATCH In review Steffen Klassert 2 participants 2 messages Jan 17, 2013 – Jan 18, 2013

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ipv6: Add an error handler for icmp6

pmtu and redirect events are now handled in the protocols error handler, so add an error handler for icmp6 to do this. It is needed in the case when we have no socket context. Based on a patch by Duan Jiong.

---
 net/ipv6/icmp.c |   12 ++++++++++++
 1 file changed, 12 insertions(+)
net/ipv6/icmp.c +12 -0
index b4a9fd5..fff5bdd 100644
@@ -81,10 +81,22 @@ static inline struct sock *icmpv6_sk(struct net *net)
 	return net->ipv6.icmp_sk[smp_processor_id()];
 }
 
+static void icmpv6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
+		       u8 type, u8 code, int offset, __be32 info)
+{
+	struct net *net = dev_net(skb->dev);
+
+	if (type == ICMPV6_PKT_TOOBIG)
+		ip6_update_pmtu(skb, net, info, 0, 0);
+	else if (type == NDISC_REDIRECT)
+		ip6_redirect(skb, net, 0, 0);
+}
+
 static int icmpv6_rcv(struct sk_buff *skb);
 
 static const struct inet6_protocol icmpv6_protocol = {
 	.handler	=	icmpv6_rcv,
+	.err_handler	=	icmpv6_err,
 	.flags		=	INET6_PROTO_NOPOLICY|INET6_PROTO_FINAL,
 };
 
Signature · 1 line
1.7.9.5
maintainer
#1 lore raw

From: Steffen Klassert <[email protected]>
Date: Thu, 17 Jan 2013 09:09:49 +0100

Quoted 6 lines

pmtu and redirect events are now handled in the protocols error handler, so add an error handler for icmp6 to do this. It is needed in the case when we have no socket context. Based on a patch by Duan Jiong.

Applied and queued up for -stable, thanks Steffen.