DragonFly submit List (threaded) for 2009-06
DragonFly BSD
DragonFly submit List (threaded) for 2009-06
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

UDP6 Multicast Bug found in kernel.


From: Kyle Butt <kylebutt@xxxxxxxxx>
Date: Fri, 26 Jun 2009 23:31:07 -0400

In trying to get dhcpv6 running on my new router, I found that udp6 multicasct
packets weren't being delivered to userland clients. I could see them via a
non-promiscuous tcpdump, I could ping the multicast address while the process
using it was active, and I could see the associations via ifmcstatus.

I looked in the kernel and found something suspicious. Attached is a patch.

Let me know what you think.

Kyle
From 96cba86ef2bbee7892238be165b1ef6c14bf3b38 Mon Sep 17 00:00:00 2001
From: Kyle Butt <kyle@vidanueva.greenhatgeek.net>
Date: Sat, 27 Jun 2009 00:15:07 -0400
Subject: [PATCH] Skip placemarker PCB's instead of looking for them.

Fixes UDP6 multicast
Compared with other PCB loops including UDP6 unicast and
UDP4 multicast.
---
 sys/netinet6/udp6_usrreq.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/sys/netinet6/udp6_usrreq.c b/sys/netinet6/udp6_usrreq.c
index 0b33627..748429b 100644
--- a/sys/netinet6/udp6_usrreq.c
+++ b/sys/netinet6/udp6_usrreq.c
@@ -231,7 +231,7 @@ udp6_input(struct mbuf **mp, int *offp, int proto)
 		 */
 		last = NULL;
 		LIST_FOREACH(in6p, &udbinfo.pcblisthead, inp_list) {
-			if (!(in6p->inp_flags & INP_PLACEMARKER))
+			if (in6p->inp_flags & INP_PLACEMARKER)
 				continue;
 			if (!(in6p->inp_vflag & INP_IPV6))
 				continue;
-- 
1.6.2.5

Attachment: pgp00000.pgp
Description: PGP signature



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]