]> Cypherpunks repositories - gostls13.git/commitdiff
net: enable v4-over-v6 on ip sockets
authorRuss Cox <rsc@golang.org>
Fri, 24 Sep 2010 20:52:06 +0000 (16:52 -0400)
committerRuss Cox <rsc@golang.org>
Fri, 24 Sep 2010 20:52:06 +0000 (16:52 -0400)
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

src/pkg/net/sock.go

index d04d4dd7c2afc6ec3fdb296ef512c0b1562492d9..3e105ad4abde4ec8fd2b53471f52d61b2858115f 100644 (file)
@@ -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 {