net/tstun: add better logging of natV4Config
It might as well have been spewing out gibberish. This adds a nicer output format for us to be able to read and identify whats going on. Sample output ``` natV4Config{nativeAddr: 100.83.114.95, listenAddrs: [10.32.80.33], dstMasqAddrs: [10.32.80.33: 407 peers]} ``` Fixes tailscale/corp#14650 Signed-off-by: Maisem Ali <maisem@tailscale.com>
This commit is contained in:
parent
ed50f360db
commit
3056a98bbd
|
@ -545,6 +545,44 @@ type natV4Config struct {
|
||||||
dstAddrToPeerKeyMapper *table.RoutingTable
|
dstAddrToPeerKeyMapper *table.RoutingTable
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *natV4Config) String() string {
|
||||||
|
if c == nil {
|
||||||
|
return "<nil>"
|
||||||
|
}
|
||||||
|
var b strings.Builder
|
||||||
|
b.WriteString("natV4Config{")
|
||||||
|
fmt.Fprintf(&b, "nativeAddr: %v, ", c.nativeAddr)
|
||||||
|
fmt.Fprint(&b, "listenAddrs: [")
|
||||||
|
|
||||||
|
i := 0
|
||||||
|
c.listenAddrs.Range(func(k netip.Addr, _ struct{}) bool {
|
||||||
|
if i > 0 {
|
||||||
|
b.WriteString(", ")
|
||||||
|
}
|
||||||
|
b.WriteString(k.String())
|
||||||
|
i++
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
count := map[netip.Addr]int{}
|
||||||
|
c.dstMasqAddrs.Range(func(_ key.NodePublic, v netip.Addr) bool {
|
||||||
|
count[v]++
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
|
||||||
|
i = 0
|
||||||
|
b.WriteString("], dstMasqAddrs: [")
|
||||||
|
for k, v := range count {
|
||||||
|
if i > 0 {
|
||||||
|
b.WriteString(", ")
|
||||||
|
}
|
||||||
|
fmt.Fprintf(&b, "%v: %v peers", k, v)
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
b.WriteString("]}")
|
||||||
|
|
||||||
|
return b.String()
|
||||||
|
}
|
||||||
|
|
||||||
// mapDstIP returns the destination IP to use for a packet to dst.
|
// mapDstIP returns the destination IP to use for a packet to dst.
|
||||||
// If dst is not one of the listen addresses, it is returned as-is,
|
// If dst is not one of the listen addresses, it is returned as-is,
|
||||||
// otherwise the native address is returned.
|
// otherwise the native address is returned.
|
||||||
|
@ -635,7 +673,7 @@ func (t *Wrapper) SetWGConfig(wcfg *wgcfg.Config) {
|
||||||
cfg := natV4ConfigFromWGConfig(wcfg)
|
cfg := natV4ConfigFromWGConfig(wcfg)
|
||||||
old := t.natV4Config.Swap(cfg)
|
old := t.natV4Config.Swap(cfg)
|
||||||
if !reflect.DeepEqual(old, cfg) {
|
if !reflect.DeepEqual(old, cfg) {
|
||||||
t.logf("nat config: %+v", cfg)
|
t.logf("nat config: %v", cfg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue