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 <[email protected]>
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: pgpoh2ugXNqP9.pgp
Description: PGP signature

Reply via email to