IPv6 multicast sendto() 'operation not supported'
Donald McLachlan
don at mainframe.dgrc.crc.ca
Fri Feb 27 05:30:24 PST 2004
Hi,
Yes, the bind() succeeded, and in fact the receiver side was able to receive
packets. Only sendto() failed.
Don
> From jinmei at isl.rdc.toshiba.co.jp Thu Feb 26 21:54:52 2004
>
> >>>>> On Thu, 26 Feb 2004 11:27:31 -0500 (EST),
> >>>>> Donald McLachlan <don at mainframe.dgrc.crc.ca> said:
>
> > In preparation for writing an IPv6 multicast application I wrote a little
> > test program (shown below). This program worked on linux (RedHat), but
> > when I try it on a FreeBSD box (5.0, running zebra router and pim6dd)
> > sendto() fails with "Operation not supported" ... ???
>
> > To verify my app was OK, I installed a solaris box on the LAN beside the
> > linux box and the app compiled and worked fine.
>
> > Thinking it might be a bug in 5.0 or an interaction with zebra/pim6dd I
> > installed a FreeBSD 5.2 box on the lan beside the other 2 app boxes and
> > I get the same error again. Anyone know what is missing/wrong in my test app?
>
> > [ I'm guessing FreeBSD wants some extra socket options set, but I don't know
> > which ones. ]
>
> Did your code really succeed the bind(2) call in the main function?
>
> > bzero((char *)&sin, (int)sizeof(sin)); /* setup address info */
> > bcopy(the_addr, (char *)&sin.sin6_addr, sizeof(the_addr));
> > sin.sin6_family = AF_INET6;
> > sin.sin6_port = htons(3000);
> > /* bind addr to sock */
> > if(bind(sock, (struct sockaddr *)&sin, sizeof(sin)) < 0)
> > {
> > perror("bind");
> > exit(errno);
> > }
>
> FreeBSD should require a valid sin6_len (which should be
> sizeof(sockaddr_in6)), so the program should have stopped here.
>
> JINMEI, Tatuya
> Communication Platform Lab.
> Corporate R&D Center, Toshiba Corp.
> jinmei at isl.rdc.toshiba.co.jp
>
More information about the freebsd-net
mailing list