diff --git a/net/interfaces/interfaces_bsd.go b/net/interfaces/interfaces_bsd.go index 99c82e166..2b63908d9 100644 --- a/net/interfaces/interfaces_bsd.go +++ b/net/interfaces/interfaces_bsd.go @@ -35,6 +35,10 @@ func defaultRoute() (d DefaultRouteDetails, err error) { return d, nil } +// ErrNoGatewayIndexFound is returned by DefaultRouteInterfaceIndex when no +// default route is found. +var ErrNoGatewayIndexFound = errors.New("no gateway index found") + // DefaultRouteInterfaceIndex returns the index of the network interface that // owns the default route. It returns the first IPv4 or IPv6 default route it // finds (it does not prefer one or the other). @@ -75,7 +79,7 @@ func DefaultRouteInterfaceIndex() (int, error) { return rm.Index, nil } } - return 0, errors.New("no gateway index found") + return 0, ErrNoGatewayIndexFound } func init() { diff --git a/net/netns/netns_darwin.go b/net/netns/netns_darwin.go index 50d7fcaad..c24c51102 100644 --- a/net/netns/netns_darwin.go +++ b/net/netns/netns_darwin.go @@ -61,7 +61,12 @@ func getInterfaceIndex(logf logger.Logf, address string) (int, error) { defaultIdx := func() (int, error) { idx, err := interfaces.DefaultRouteInterfaceIndex() if err != nil { - logf("[unexpected] netns: DefaultRouteInterfaceIndex: %v", err) + // It's somewhat common for there to be no default gateway route + // (e.g. on a phone with no connectivity), don't log those errors + // since they are expected. + if !errors.Is(err, interfaces.ErrNoGatewayIndexFound) { + logf("[unexpected] netns: DefaultRouteInterfaceIndex: %v", err) + } return -1, err } return idx, nil