1
0
mirror of https://github.com/golang/go synced 2024-11-17 13:04:54 -07:00

net: never probe IPv4 map support on DragonFly BSD, OpenBSD

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: 7eb67189cd
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>
This commit is contained in:
Josh Rickmar 2021-03-26 13:17:36 +00:00 committed by Tobias Klauser
parent 3e8ba91275
commit 5c9b6e8e63

View File

@ -7,6 +7,7 @@ package net
import ( import (
"context" "context"
"internal/bytealg" "internal/bytealg"
"runtime"
"sync" "sync"
) )
@ -44,6 +45,13 @@ func supportsIPv6() bool {
// IPv4 address inside an IPv6 address at transport layer // IPv4 address inside an IPv6 address at transport layer
// protocols. See RFC 4291, RFC 4038 and RFC 3493. // protocols. See RFC 4291, RFC 4038 and RFC 3493.
func supportsIPv4map() bool { 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) ipStackCaps.Once.Do(ipStackCaps.probe)
return ipStackCaps.ipv4MappedIPv6Enabled return ipStackCaps.ipv4MappedIPv6Enabled
} }