diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2012-04-03 11:15:51 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2012-04-03 11:15:51 -0700 |
commit | c924cab2fd8932bdfb107c4ca7d26128ba56f19e (patch) | |
tree | 0eea6430e211564fc331f66625373ec761837982 /libgo/go/net/sockopt_bsd.go | |
parent | 4c15f6d5728cb694d7d954b2c20409fdc0400b9e (diff) | |
parent | 3cef948a814542119083003a3c35a24e036230b6 (diff) | |
download | gcc-hjl/x32/addr32.tar.gz |
Merge remote-tracking branch 'origin/master' into hjl/x32/addr32hjl/x32/addr32
Diffstat (limited to 'libgo/go/net/sockopt_bsd.go')
-rw-r--r-- | libgo/go/net/sockopt_bsd.go | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/libgo/go/net/sockopt_bsd.go b/libgo/go/net/sockopt_bsd.go index 79e0e57e21e..fff65f362b1 100644 --- a/libgo/go/net/sockopt_bsd.go +++ b/libgo/go/net/sockopt_bsd.go @@ -13,12 +13,17 @@ import ( "syscall" ) -func setDefaultSockopts(s, f, t int) error { +func setDefaultSockopts(s, f, t int, ipv6only bool) error { switch f { case syscall.AF_INET6: - // Allow both IP versions even if the OS default is otherwise. - // Note that some operating systems never admit this option. - syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, 0) + if ipv6only { + syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, 1) + } else { + // Allow both IP versions even if the OS default + // is otherwise. Note that some operating systems + // never admit this option. + syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, 0) + } } // Allow broadcast. err := syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_BROADCAST, 1) |