| 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