YOSHIFUJI Hideaki / 吉藤英明
2002-May-02 12:31 UTC
problem with X11 forwarding and use_localhost on Linux (solution) (fwd)
Hi, I think we should try other AF for "x11_use_localhost" case. --- openssh-3.1p1/channels.c Tue Mar 5 10:57:45 2002 +++ openssh-3.1p1-fix/channels.c Thu May 2 21:26:28 2002 @@ -2356,6 +2356,13 @@ continue; } } +#ifdef IPV6_V6ONLY + if (ai->ai_family == AF_INET6) { + int on = 1; + if (setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)) < 0) + debug("x11_create_display_inet: setsockopt(IPV6_V6ONLY) failed."); + } +#endif if (bind(sock, ai->ai_addr, ai->ai_addrlen) < 0) { debug("bind port %d: %.100s", port, strerror(errno)); close(sock); @@ -2374,7 +2381,12 @@ if (num_socks == NUM_SOCKS) break; #else - break; + if (x11_use_localhost) { + if (num_socks == NUM_SOCKS) + break; + } else { + break; + } #endif } freeaddrinfo(aitop); In article <Pine.HPX.4.44.0204301333550.2022-100000 at jenny> (at Tue, 30 Apr 2002 13:35:52 -0700 (PDT)), Kevin Steves <kevin at atomicgears.com> says:> itojun, > > do you have any recommendations on this? > > http://bugzilla.mindrot.org/show_bug.cgi?id=164 > > ---------- Forwarded message ---------- > Date: Mon, 29 Apr 2002 11:32:21 +0200 > From: Stig Venaas <Stig.Venaas at uninett.no> > To: Kevin Steves <kevin at atomicgears.com> > Cc: openssh-unix-dev at mindrot.org > Subject: Re: problem with X11 forwarding and use_localhost on Linux > (solution) > > On Thu, Apr 25, 2002 at 10:09:40AM -0700, Kevin Steves wrote: > > : #else > > :- break; > > :+ if (!x11_use_localhost || num_socks == NUM_SOCKS) > > :+ break; > > : #endif > > : } > > : freeaddrinfo(aitop); > > > > this is what is in: > > http://bugzilla.mindrot.org/show_bug.cgi?id=164 > > Right, I should have checked there. > > > i still don't understand exactly why DONT_TRY_OTHER_AF is needed? > > It's needed because if you first bind an IPv6 socket to the ANY address, > then subsequent IPv4 bind will fail on Linux. You could of course remove > DONT_TRY_OTHER_AF, but then you need to ignore the error on the IPv4 bind > call. Currently it will clean up (closing the already opened IPv6 socket), > and then try the next display (which will again fail) until MAX_DISPLAYS > is reached, and it will then simply fail. If the code for the ANY case > was separated from the x11_use_localhost case, you would only need > DONT_TRY_OTHER_AF in the ANY part, that is the only part where Linux is > different from *BSD. > > Stig > _______________________________________________ > openssh-unix-dev at mindrot.org mailing list > http://www.mindrot.org/mailman/listinfo/openssh-unix-dev > >-- Hideaki YOSHIFUJI @ USAGI Project <yoshfuji at linux-ipv6.org> GPG FP: 9022 65EB 1ECF 3AD1 0BDF 80D8 4807 F894 E062 0EEA