* Robert Watson <[email protected]> [090203 06:17]: > > >* Robert Watson <[email protected]> [090202 17:06]: > >>On Sun, 1 Feb 2009, Derek Tattersall wrote: > >> > >>>In order to become familiar with multicast implementation using FreeBSD, > >>>I found via Google a pair of test programs which multicast sent a simple > >>>text message and received the text message. I added some code to report > >>>the source address, because none of the references that I looked at > >>>specified the source IP address in the frame. > >>> > >>>I ran the sender on A -current system, AMD64 vintage last week. The > >>>receiver was on a -current system I386 vintage last week. TCPDUMP shows > >>>the source IP address in the frame as (correctly) 192.168.0.15. The > >>>receiver reports the source IP address as 200.231.191.191. I have also > >>>run the same test with an OpenBSD 4.4 Release I386 system as the > >>>receiver. The openBSD system reports the sender as 192.168.0.15. A > >>>Fedora 10 system reported the source IP address as 0.0.0.0. > >>> > >>>Googling the RFCs and other information and referring to Comer's and > >>>Stevens' books on TCPIP I can't determine what should be reported. Does > >>>anybody have clue for me? > >> > >>It might depend on how you're querying the source address. Could you > >>post a code excerpt? > > > >It's a straightforward test program. > > Your assumption, that the address returned from recvfrom(2) should be > correct, seems generally right to me. However, it looks like you may not > be initializing senderLen to the size of senderAddr, which means that the > size getting passed in may be random stack garbage. In which case what you > find in the sockaddr_in might also be random stack garbage, or might be the > address, depending on whether the uninitialized length was long enough to > fit an IP address in. Could you try adding something like: > > senderLen = sizeof(senderAddr); > > before the call to recvfrom(2)? > > Thanks, > > Robert N M Watson > Computer Laboratory > University of Cambridge > -------------------------------- Snip test program --------------- You nailed it! Initializing the length of the sockaddr stucture was the answer. Thanks very much for pointing out the flaw.
-- Best regards, Derek Tattersall [email protected] [email protected] [email protected] _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "[email protected]"
