remove DNS lookups from IPv6 check, close the connection

log ipv6 availability logic

more debugging for ipv6 availability checks

more debugging for ipv6 availability checks
This commit is contained in:
Alex
2025-02-12 20:49:57 -05:00
committed by Cuong Manh Le
parent 23e6ad6e1f
commit c329402f5d
4 changed files with 14 additions and 2 deletions

View File

@@ -160,6 +160,7 @@ func resetDNS(iface *net.Interface) (err error) {
}
// TODO(cuonglm): handle DHCPv6 properly.
mainLog.Load().Debug().Msg("checking for IPv6 availability")
if ctrldnet.IPv6Available(ctx) {
c := client6.NewClient()
conversation, err := c.Exchange(iface.Name)
@@ -179,6 +180,8 @@ func resetDNS(iface *net.Interface) (err error) {
}
}
}
} else {
mainLog.Load().Debug().Msg("IPv6 is not available")
}
return ignoringEINTR(func() error {

View File

@@ -102,11 +102,14 @@ func (m *mdns) init(quitCh chan struct{}) error {
v4ConnList = append(v4ConnList, conn)
go m.readLoop(conn)
}
ctrld.ProxyLogger.Load().Debug().Msgf("checking for IPv6 availability in mdns init")
if ctrldnet.IPv6Available(context.Background()) {
if conn, err := net.ListenMulticastUDP("udp6", &iface, mdnsV6Addr); err == nil {
v6ConnList = append(v6ConnList, conn)
go m.readLoop(conn)
}
} else {
ctrld.ProxyLogger.Load().Debug().Msgf("IPv6 is not available in mdns init")
}
}

View File

@@ -49,8 +49,12 @@ func init() {
}
func supportIPv6(ctx context.Context) bool {
_, err := probeStackDialer.DialContext(ctx, "tcp6", net.JoinHostPort(controldIPv6Test, "443"))
return err == nil
c, err := probeStackDialer.DialContext(ctx, "tcp6", v6BootstrapDNS)
if err != nil {
return false
}
c.Close()
return true
}
func supportListenIPv6Local() bool {

2
net.go
View File

@@ -18,6 +18,7 @@ const ipv6ProbingInterval = 10 * time.Second
func hasIPv6() bool {
hasIPv6Once.Do(func() {
Log(context.Background(), ProxyLogger.Load().Debug(), "checking for IPv6 availability once")
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
val := ctrldnet.IPv6Available(ctx)
@@ -43,6 +44,7 @@ func probingIPv6(ctx context.Context, old bool) {
if ipv6Available.CompareAndSwap(old, cur) {
old = cur
}
Log(ctx, ProxyLogger.Load().Debug(), "IPv6 availability: %v", cur)
}()
}
}