From: Mikio Hara Date: Fri, 28 Mar 2014 04:27:51 +0000 (+0900) Subject: net: make IPv6 capability test more suitable for address family selection on the... X-Git-Tag: go1.3beta1~242 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=a05ffd85aa6f8cc532bd50df8dbdee8e8040afcc;p=gostls13.git net: make IPv6 capability test more suitable for address family selection on the dual IP stack node For now we strictly use IPV6_V6ONLY=1 for IPv6-only communications and IPV6_V6ONLY=0 for both IPv4 and IPv6 communications. So let the capability test do the same. LGTM=iant R=golang-codereviews, gobot, iant CC=golang-codereviews https://golang.org/cl/80140044 --- diff --git a/src/pkg/net/ipsock_posix.go b/src/pkg/net/ipsock_posix.go index d2f45060f9..2ba4c8efd5 100644 --- a/src/pkg/net/ipsock_posix.go +++ b/src/pkg/net/ipsock_posix.go @@ -40,12 +40,13 @@ func probeIPv4Stack() bool { func probeIPv6Stack() (supportsIPv6, supportsIPv4map bool) { var probes = []struct { laddr TCPAddr + value int ok bool }{ // IPv6 communication capability - {TCPAddr{IP: ParseIP("::1")}, false}, + {laddr: TCPAddr{IP: ParseIP("::1")}, value: 1}, // IPv6 IPv4-mapped address communication capability - {TCPAddr{IP: IPv4(127, 0, 0, 1)}, false}, + {laddr: TCPAddr{IP: IPv4(127, 0, 0, 1)}, value: 0}, } for i := range probes { @@ -54,7 +55,7 @@ func probeIPv6Stack() (supportsIPv6, supportsIPv4map bool) { continue } defer closesocket(s) - syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, 0) + syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, probes[i].value) sa, err := probes[i].laddr.sockaddr(syscall.AF_INET6) if err != nil { continue