cmd/tailscale/cli: make netcheck sort regions, show full region names
@@ -125,20 +125,38 @@ func printReport(dm *tailcfg.DERPMap, report *netcheck.Report) error {
if len(report.RegionLatency) == 0 {
fmt.Printf("\t* Nearest DERP: unknown (no response to latency probes)\n")
} else {
- fmt.Printf("\t* Nearest DERP: %v (%v)\n", report.PreferredDERP, dm.Regions[report.PreferredDERP].RegionCode)
+ fmt.Printf("\t* Nearest DERP: %v\n", dm.Regions[report.PreferredDERP].RegionName)
fmt.Printf("\t* DERP latency:\n")
var rids []int
for rid := range dm.Regions {
rids = append(rids, rid)
}
- sort.Ints(rids)
+ sort.Slice(rids, func(i, j int) bool {
+ l1, ok1 := report.RegionLatency[rids[i]]
+ l2, ok2 := report.RegionLatency[rids[j]]
+ if ok1 != ok2 {
+ if !ok1 {
+ return false
+ }
+ return true
+ }
+ if !ok1 {
+ return rids[i] < rids[j]
+ }
+ return l1 < l2
+ })
for _, rid := range rids {
d, ok := report.RegionLatency[rid]
var latency string
if ok {
latency = d.Round(time.Millisecond / 10).String()
}
- fmt.Printf("\t\t- %v, %3s = %s\n", rid, dm.Regions[rid].RegionCode, latency)
+ r := dm.Regions[rid]
+ var derpNum string
+ if netcheckArgs.verbose {
+ derpNum = fmt.Sprintf("derp%d, ", rid)
+ }
+ fmt.Printf("\t\t- %3s: %-7s (%s%s)\n", r.RegionCode, latency, derpNum, r.RegionName)
}
}
return nil
