Browse Source

fix a kernel bug where IPv6 packets are received on IPv4 sockets, this fixes dual stack software like OLSRd when running on Kernel 2.4 Signed-off-by: Alina Friedrichsen <[email protected]>

SVN-Revision: 21461
Jo-Philipp Wich 16 years ago
parent
commit
f155da0922

+ 18 - 0
target/linux/brcm-2.4/patches/200-fix_ipv6_receiving_with_ipv4_socket.patch

@@ -0,0 +1,18 @@
+--- a/net/ipv4/udp.c	2009-12-26 00:06:59.000000000 +0100
++++ b/net/ipv4/udp.c	2009-12-27 00:27:05.003012266 +0100
+@@ -711,7 +711,14 @@
+ 	skb = skb_recv_datagram(sk, flags, noblock, &err);
+ 	if (!skb)
+ 		goto out;
+-  
++
++	if (skb->nh.iph->version != 4) {
++		skb_free_datagram(sk, skb);
++		if (noblock)
++			return -EAGAIN;
++		goto try_again;
++	}
++
+   	copied = skb->len - sizeof(struct udphdr);
+ 	if (copied > len) {
+ 		copied = len;