diff --git a/net/netcheck/netcheck.go b/net/netcheck/netcheck.go index 66da47d6f..f5eae417e 100644 --- a/net/netcheck/netcheck.go +++ b/net/netcheck/netcheck.go @@ -1342,6 +1342,9 @@ func (c *Client) logConciseReport(r *Report, dm *tailcfg.DERPMap) { } fmt.Fprintf(w, " v6=%v", r.IPv6) + if !r.IPv6 { + fmt.Fprintf(w, " v6os=%v", r.OSHasIPv6) + } fmt.Fprintf(w, " mapvarydest=%v", r.MappingVariesByDestIP) fmt.Fprintf(w, " hair=%v", r.HairPinning) if r.AnyPortMappingChecked() { diff --git a/tailcfg/tailcfg.go b/tailcfg/tailcfg.go index cd7fef896..b59e23a34 100644 --- a/tailcfg/tailcfg.go +++ b/tailcfg/tailcfg.go @@ -597,11 +597,10 @@ func (ni *NetInfo) String() string { if ni == nil { return "NetInfo(nil)" } - return fmt.Sprintf("NetInfo{varies=%v hairpin=%v ipv6=%v udp=%v icmpv4=%v derp=#%v portmap=%v link=%q}", + return fmt.Sprintf("NetInfo{varies=%v hairpin=%v ipv6=%v ipv6os=%v udp=%v icmpv4=%v derp=#%v portmap=%v link=%q}", ni.MappingVariesByDestIP, ni.HairPinning, ni.WorkingIPv6, - ni.WorkingUDP, ni.WorkingICMPv4, ni.PreferredDERP, - ni.portMapSummary(), - ni.LinkType) + ni.OSHasIPv6, ni.WorkingUDP, ni.WorkingICMPv4, + ni.PreferredDERP, ni.portMapSummary(), ni.LinkType) } func (ni *NetInfo) portMapSummary() string { diff --git a/wgengine/magicsock/magicsock.go b/wgengine/magicsock/magicsock.go index 8ffc44fd1..596b6d6b1 100644 --- a/wgengine/magicsock/magicsock.go +++ b/wgengine/magicsock/magicsock.go @@ -807,6 +807,7 @@ func (c *Conn) updateNetInfo(ctx context.Context) (*netcheck.Report, error) { ni.DERPLatency[fmt.Sprintf("%d-v6", rid)] = d.Seconds() } ni.WorkingIPv6.Set(report.IPv6) + ni.OSHasIPv6.Set(report.OSHasIPv6) ni.WorkingUDP.Set(report.UDP) ni.WorkingICMPv4.Set(report.ICMPv4) ni.PreferredDERP = report.PreferredDERP