mirror of
https://github.com/tailscale/tailscale.git
synced 2025-02-18 02:48:40 +00:00
internal/deepprint: handle common map types specially
This commit is contained in:
parent
6ab2176dc7
commit
f858bfd61b
@ -16,10 +16,12 @@ import (
|
||||
"crypto/sha256"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"sort"
|
||||
|
||||
"inet.af/netaddr"
|
||||
"tailscale.com/tailcfg"
|
||||
"tailscale.com/types/wgkey"
|
||||
"tailscale.com/util/dnsname"
|
||||
)
|
||||
|
||||
func Hash(v ...interface{}) string {
|
||||
@ -51,6 +53,8 @@ var (
|
||||
wgkeyKeyType = reflect.TypeOf(wgkey.Key{})
|
||||
wgkeyPrivateType = reflect.TypeOf(wgkey.Private{})
|
||||
tailcfgDiscoKeyType = reflect.TypeOf(tailcfg.DiscoKey{})
|
||||
mapFQDNIPType = reflect.TypeOf(map[dnsname.FQDN][]netaddr.IP{})
|
||||
mapFQDNIPPortType = reflect.TypeOf(map[dnsname.FQDN][]netaddr.IPPort{})
|
||||
)
|
||||
|
||||
func print(w *bufio.Writer, v reflect.Value, visited map[uintptr]bool) {
|
||||
@ -116,6 +120,44 @@ func print(w *bufio.Writer, v reflect.Value, visited map[uintptr]bool) {
|
||||
w.Write(x[:])
|
||||
}
|
||||
return
|
||||
case mapFQDNIPType:
|
||||
x := v.Interface().(map[dnsname.FQDN][]netaddr.IP)
|
||||
keys := make([]dnsname.FQDN, 0, len(x))
|
||||
for k := range x {
|
||||
keys = append(keys, k)
|
||||
}
|
||||
sort.Slice(keys, func(i, j int) bool { return string(keys[i]) < string(keys[j]) })
|
||||
fmt.Fprintf(w, "map[%d]{\n", len(x))
|
||||
for _, k := range keys {
|
||||
w.WriteString(string(k))
|
||||
w.WriteString(": ")
|
||||
for _, ip := range x[dnsname.FQDN(k)] {
|
||||
b, _ := ip.MarshalText()
|
||||
w.Write(b)
|
||||
w.WriteString(",")
|
||||
}
|
||||
}
|
||||
w.WriteString("}\n")
|
||||
return
|
||||
case mapFQDNIPPortType:
|
||||
x := v.Interface().(map[dnsname.FQDN][]netaddr.IPPort)
|
||||
keys := make([]dnsname.FQDN, 0, len(x))
|
||||
for k := range x {
|
||||
keys = append(keys, k)
|
||||
}
|
||||
sort.Slice(keys, func(i, j int) bool { return string(keys[i]) < string(keys[j]) })
|
||||
fmt.Fprintf(w, "map[%d]{\n", len(x))
|
||||
for _, k := range keys {
|
||||
w.WriteString(string(k))
|
||||
w.WriteString(": ")
|
||||
for _, ipp := range x[dnsname.FQDN(k)] {
|
||||
b, _ := ipp.MarshalText()
|
||||
w.Write(b)
|
||||
w.WriteString(",")
|
||||
}
|
||||
}
|
||||
w.WriteString("}\n")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user