From: Russ Cox Date: Fri, 24 Sep 2010 20:52:06 +0000 (-0400) Subject: net: enable v4-over-v6 on ip sockets X-Git-Tag: weekly.2010-09-29~51 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=d47266558d93573d2ed7ef2c2cc8b177a366fd51;p=gostls13.git net: enable v4-over-v6 on ip sockets Not all OS make that the default. Can finally do this now that the syscall package has the right definitions. Fixes #679. R=r CC=golang-dev https://golang.org/cl/2204048 --- diff --git a/src/pkg/net/sock.go b/src/pkg/net/sock.go index d04d4dd7c2..3e105ad4ab 100644 --- a/src/pkg/net/sock.go +++ b/src/pkg/net/sock.go @@ -38,6 +38,12 @@ func socket(net string, f, p, t int, la, ra syscall.Sockaddr, toAddr func(syscal // Allow broadcast. syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_BROADCAST, 1) + if f == syscall.AF_INET6 { + // using ip, tcp, udp, etc. + // allow both protocols even if the OS default is otherwise. + syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, 0) + } + if la != nil { e = syscall.Bind(s, la) if e != 0 {