From 655b4f8fc5e14a0faa13a218d34757a546a4b5da Mon Sep 17 00:00:00 2001 From: Aaron Klotz Date: Wed, 31 Jul 2024 11:45:14 -0600 Subject: [PATCH] net/netns: remove some logspam by avoiding logging parse errors due to unspecified addresses I updated the address parsing stuff to return a specific error for unspecified hosts passed as empty strings, and look for that when logging errors. I explicitly did not make parseAddress return a netip.Addr containing an unspecified address because at this layer, in the absence of any host, we don't necessarily know the address family we're dealing with. For the purposes of this code I think this is fine, at least until we implement #12588. Fixes #12979 Signed-off-by: Aaron Klotz --- net/netns/netns_darwin.go | 4 +++- net/netns/netns_dw.go | 6 ++++++ net/netns/netns_windows.go | 4 +++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/net/netns/netns_darwin.go b/net/netns/netns_darwin.go index 55e29cc29..ac5e89d76 100644 --- a/net/netns/netns_darwin.go +++ b/net/netns/netns_darwin.go @@ -92,7 +92,9 @@ func getInterfaceIndex(logf logger.Logf, netMon *netmon.Monitor, address string) // If the address doesn't parse, use the default index. addr, err := parseAddress(address) if err != nil { - logf("[unexpected] netns: error parsing address %q: %v", address, err) + if err != errUnspecifiedHost { + logf("[unexpected] netns: error parsing address %q: %v", address, err) + } return defaultIdx() } diff --git a/net/netns/netns_dw.go b/net/netns/netns_dw.go index bf654666f..f92ba9462 100644 --- a/net/netns/netns_dw.go +++ b/net/netns/netns_dw.go @@ -6,16 +6,22 @@ package netns import ( + "errors" "net" "net/netip" ) +var errUnspecifiedHost = errors.New("unspecified host") + func parseAddress(address string) (addr netip.Addr, err error) { host, _, err := net.SplitHostPort(address) if err != nil { // error means the string didn't contain a port number, so use the string directly host = address } + if host == "" { + return addr, errUnspecifiedHost + } return netip.ParseAddr(host) } diff --git a/net/netns/netns_windows.go b/net/netns/netns_windows.go index c78001560..afbda0f47 100644 --- a/net/netns/netns_windows.go +++ b/net/netns/netns_windows.go @@ -102,7 +102,9 @@ func controlC(logf logger.Logf, network, address string, c syscall.RawConn) (err } } } else { - logf("[unexpected] netns: error parsing address %q: %v", address, err) + if err != errUnspecifiedHost { + logf("[unexpected] netns: error parsing address %q: %v", address, err) + } ifaceIdxV4, ifaceIdxV6 = defIfaceIdxV4, defIfaceIdxV6 } } else {