]> Cypherpunks repositories - gostls13.git/commitdiff
net: never probe IPv4 map support on DragonFly BSD, OpenBSD
authorJosh Rickmar <jrick@companyzero.com>
Fri, 26 Mar 2021 13:17:36 +0000 (13:17 +0000)
committerTobias Klauser <tobias.klauser@gmail.com>
Mon, 12 Apr 2021 21:26:59 +0000 (21:26 +0000)
DragonFly BSD and OpenBSD do not implement mapping IPv4 addresses to
the IPv6 address space, and a runtime check can be avoided.

As the IP stack capabilities probe was only being called from
supportsIPv4map to check for this support, the OS-specific handling
can be added to this function rather than continuing to run the probe.

Change-Id: I5800c197b1be502a6efa79e3edd6356bde8637fb
GitHub-Last-Rev: 7eb67189cd955fb12382a6f2a05f324d2747dcc3
GitHub-Pull-Request: golang/go#45243
Reviewed-on: https://go-review.googlesource.com/c/go/+/304870
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Trust: Tobias Klauser <tobias.klauser@gmail.com>

src/net/ipsock.go

index 7d0684d176400d0a1c2bd23a0a8b460a75bc8ff5..0f5da2577c6a62e12faad7b2ec0b75cb23841431 100644 (file)
@@ -7,6 +7,7 @@ package net
 import (
        "context"
        "internal/bytealg"
+       "runtime"
        "sync"
 )
 
@@ -44,6 +45,13 @@ func supportsIPv6() bool {
 // IPv4 address inside an IPv6 address at transport layer
 // protocols. See RFC 4291, RFC 4038 and RFC 3493.
 func supportsIPv4map() bool {
+       // Some operating systems provide no support for mapping IPv4
+       // addresses to IPv6, and a runtime check is unnecessary.
+       switch runtime.GOOS {
+       case "dragonfly", "openbsd":
+               return false
+       }
+
        ipStackCaps.Once.Do(ipStackCaps.probe)
        return ipStackCaps.ipv4MappedIPv6Enabled
 }