wgengine/wgcfg/nmcfg: consolidate exit node log lines
These were getting rate-limited for nodes with many peers.
Consolate the output into single lines, which are nicer anyway.
package nmcfg
import (
+ "bytes"
"fmt"
"net"
"strconv"
@@ -60,6 +61,11 @@ func WGCfg(nm *netmap.NetworkMap, logf logger.Logf, flags netmap.WGConfigFlags,
Peers: make([]wgcfg.Peer, 0, len(nm.Peers)),
}
+ // Logging buffers
+ skippedUnselected := new(bytes.Buffer)
+ skippedIPs := new(bytes.Buffer)
+ skippedSubnets := new(bytes.Buffer)
+
for _, peer := range nm.Peers {
if controlclient.Debug.OnlyDisco && peer.DiscoKey.IsZero() {
continue
@@ -92,16 +98,23 @@ func WGCfg(nm *netmap.NetworkMap, logf logger.Logf, flags netmap.WGConfigFlags,
continue
}
didExitNodeWarn = true
- logf("[v1] wgcfg: skipping unselected default route from %q (%v)", nodeDebugName(peer), peer.Key.ShortString())
+ if skippedUnselected.Len() > 0 {
+ skippedUnselected.WriteString(", ")
+ }
+ fmt.Fprintf(skippedUnselected, "%q (%v)", nodeDebugName(peer), peer.Key.ShortString())
continue
} else if allowedIP.IsSingleIP() && tsaddr.IsTailscaleIP(allowedIP.IP) && (flags&netmap.AllowSingleHosts) == 0 {
- logf("[v1] wgcfg: skipping node IP %v from %q (%v)",
- allowedIP.IP, nodeDebugName(peer), peer.Key.ShortString())
+ if skippedIPs.Len() > 0 {
+ skippedIPs.WriteString(", ")
+ }
+ fmt.Fprintf(skippedIPs, "%v from %q (%v)", allowedIP.IP, nodeDebugName(peer), peer.Key.ShortString())
continue
} else if cidrIsSubnet(peer, allowedIP) {
if (flags & netmap.AllowSubnetRoutes) == 0 {
- logf("[v1] wgcfg: not accepting subnet route %v from %q (%v)",
- allowedIP, nodeDebugName(peer), peer.Key.ShortString())
+ if skippedSubnets.Len() > 0 {
+ skippedSubnets.WriteString(", ")
+ }
+ fmt.Fprintf(skippedSubnets, "%v from %q (%v)", allowedIP, nodeDebugName(peer), peer.Key.ShortString())
continue
}
}
@@ -109,6 +122,16 @@ func WGCfg(nm *netmap.NetworkMap, logf logger.Logf, flags netmap.WGConfigFlags,
}
}
+ if skippedUnselected.Len() > 0 {
+ logf("[v1] wgcfg: skipped unselected default routes from: %s", skippedUnselected.Bytes())
+ }
+ if skippedIPs.Len() > 0 {
+ logf("[v1] wgcfg: skipped node IPs: %s", skippedIPs)
+ }
+ if skippedSubnets.Len() > 0 {
+ logf("[v1] wgcfg: did not accept subnet routes: %s", skippedSubnets)
+ }
+
return cfg, nil
}
