// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: BUSL-1.1 //go:build linux package platform import ( "fmt" "os" "sync" ) const ipv6SupportProcFile = "/proc/net/if_inet6" var ( ipv6SupportOnce sync.Once ipv6Supported bool ipv6SupportedErr error ) func SupportsIPv6() (bool, error) { ipv6SupportOnce.Do(func() { ipv6Supported, ipv6SupportedErr = checkIfKernelSupportsIPv6() }) return ipv6Supported, ipv6SupportedErr } func checkIfKernelSupportsIPv6() (bool, error) { _, err := os.Stat(ipv6SupportProcFile) if os.IsNotExist(err) { return false, nil } else if err != nil { return false, fmt.Errorf("error checking for ipv6 support file %s: %w", ipv6SupportProcFile, err) } return true, nil }