Am Mittwoch 23 Dezember 2009 14:07:54 schrieb Jarek Kamiński:
> Na grupie linux.debian.devel napisałe(a)ś:
> > I have failures now with a client that cannot connect() to the IPv4
> > address but get an ENETUNREACH instead.
> > The application DOES set this socket option:
> > socket(PF_INET6, SOCK_STREAM, IPPROTO_IP) = 3
> 
>                                 ^-- You meant IPPROTO_TCP?
> 
> > setsockopt(3, SOL_IPV6, IPV6_V6ONLY, [0], 4) = 0
> > bind(3, {sa_family=AF_INET6,....) = 0
> > listen(3, ....) = 0
> >
> > Did you ever test that "setting this option back to 0 by a program before
> > bind() and listen()" actually works?
> 
> Yes. Following code actually works (runs with bindv6only enabled,
> listens on [::]:1234 and accepts connection made to localhost:1234):
> #v+
> #include <sys/socket.h>
> #include <netinet/in.h>
> 
> int main ()
> {
>       int no = 0;
>       int listenfd = socket (AF_INET6, SOCK_STREAM, IPPROTO_TCP);
>       int clientfd;
>       char buf[1024];
>       ssize_t rv;
>       struct sockaddr_in6 addr = { AF_INET6, htons(1234), 0, IN6ADDR_ANY_INIT 
> };
>       setsockopt (listenfd, SOL_IPV6, IPV6_V6ONLY, &no, sizeof(no));
>       bind (listenfd, (void*)&addr, sizeof(addr));
>       listen (listenfd, 1);
>       clientfd = accept (listenfd, 0, 0);
>       while ((rv = read (clientfd, buf, sizeof(buf))) > 0)
>               write (1, buf, rv);
>       return 0;
> }

I do:
int v6only = 0;
int fd = socket(AF_INET6, SOCK_STREAM, 0);
setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (void*)&v6only, sizeof(v6only));
bind(fd, (struct sockaddr *) &my_sock, sizeof(struct sockaddr_in6));
listen(fd, 2);
...

And the client cannot connect! The value of IPPROTO_IPV6 and SOL_IPV6 are both 
41, thus this cannot be the cause.
Maybe the difference is the "0" vs. "IPPROTO_TCP"? "0" is supposed to work, 
though.

Additionally: what happens when I want to open an ::FFFF:127.0.0.1 as an IPv6 
socket?
But even when using IN6ADDR_ANY, the client cannot connect to 127.0.0.1.

Thanks

HS


--
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to