From 9e7578fb294628bca41a37884e4b1297c2371058 Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Fri, 23 Dec 2022 01:49:01 +0700 Subject: [PATCH] cmd/ctrld: use better approach for checking IPv6 available Some operating systems may throw a confirmation dialog when attempting to listen on any interface other than loopback. A better approach is checking for any interface which is up and can be routed IP traffic. --- cmd/ctrld/net.go | 6 ++++-- go.mod | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/cmd/ctrld/net.go b/cmd/ctrld/net.go index 76265d8..ce98405 100644 --- a/cmd/ctrld/net.go +++ b/cmd/ctrld/net.go @@ -3,6 +3,8 @@ package main import ( "net" "sync" + + "golang.org/x/net/nettest" ) var ( @@ -11,8 +13,8 @@ var ( ) func probeStack() { - if ln, err := net.Listen("tcp6", "[::]:0"); err == nil { - ln.Close() + // TODO(cuonglm): use nettest.SupportsIPv6 once https://github.com/golang/go/issues/57386 fixed. + if _, err := nettest.RoutedInterface("ip6", net.FlagUp); err == nil { ipv6Enabled = true } } diff --git a/go.mod b/go.mod index 668925e..f6d12e4 100644 --- a/go.mod +++ b/go.mod @@ -13,6 +13,7 @@ require ( github.com/spf13/cobra v1.4.0 github.com/spf13/viper v1.9.0 github.com/stretchr/testify v1.8.0 + golang.org/x/net v0.1.0 golang.org/x/sys v0.1.0 tailscale.com v1.34.1 ) @@ -45,7 +46,6 @@ require ( golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90 // indirect golang.org/x/exp v0.0.0-20220827204233-334a2380cb91 // indirect golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect - golang.org/x/net v0.1.0 // indirect golang.org/x/text v0.4.0 // indirect golang.org/x/tools v0.1.12 // indirect gopkg.in/ini.v1 v1.66.2 // indirect