Date: Thu, 29 Sep 2005 22:14:37 +0000 (GMT) From: wpaul@FreeBSD.ORG (Bill Paul) To: josh.carroll@psualum.com Cc: freebsd-current@freebsd.org Subject: Re: UDP multicast packets not seen on listening interface in BETA5 Message-ID: <20050929221437.CCAFA16A420@hub.freebsd.org> In-Reply-To: <8cb6106e0509290919177de1c4@mail.gmail.com> from Josh Carroll at "Sep 29, 2005 09:19:48 am"
next in thread | previous in thread | raw e-mail | index | archive | help
> All, > > I'm having a bit of trouble with a program I wrote to listen for > multicast packets from my DSL modem in order to monitor/collect line > stats. It has worked previously in 5.4 and 6.0-BETA3. The source is > availabe here for anyone that wants to poke around in it: > > http://wdiag.sourceforge.net > > Anyway, recently I rebuilt world and the kernel from BETA5 sources > (previously on BETA3 or thereabouts). The application no longer finds > the multicast packets, but works fine in BETA3. > > Let me briefly describe what the program does. It simply bind()'s to > port 1875/udp (INADDR_ANY), joins the proper multicast group, calls > select() then recvfrom() to look for the packet. It waits for a > timeout period, then fails if it doesn't see the packet in that time > period, which is what is happening in BETA5. > > I ran tcpdump and I do see the packets hitting the interface: > > 09:00:45.394614 IP 192.168.1.254.1875 > 224.73.193.62.1875: UDP, length 120 > > I suspect maybe I am not properly joining the multicast group, so it's > ignoring the packet. But like I said, this worked in BETA3 which is > why I'm stumped. > > nc -v -u -l 1875 > > Doesn't see any packets either, for what it's worth, though I don't > know off hand whether nc can do multicast or not. > > Also I verified the program is indeed listening with sockstat: > root westell 2194 3 udp4 *:1875 *:* > > Any ideas where I can begin to troubleshoot this? Well no, because you left out one vital piece of information, which is what kind of network adapter are you using? Yes, it matters. Yes, you should feel silly for not thinking it was important enough to mention. It's _ALWAYS_ important enough to mention. No, you aren't allowed to play the "but I just wanted to see if this sounded familiar to someone" game. Running tcpdump, unless you use the -p flag, will put the NIC into promiscuous mode. This means you'll pick up all multicast frames (and everything else) regardless of how the NIC's multicast filter is programmed. Just joining a group will not put the interface into promiscuous mode: it'll just program the NIC's multicast filter to accept that particular group. That is of course unless someone a) broke the driver for your NIC or b) broke SIOCADDMULTI support somewhere in the stack. Until you tell us what NIC you have, there's no easy way to tell which is the case. -Bill -- ============================================================================= -Bill Paul (510) 749-2329 | Senior Engineer, Master of Unix-Fu wpaul@windriver.com | Wind River Systems ============================================================================= <adamw> you're just BEGGING to face the moose =============================================================================
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050929221437.CCAFA16A420>