util/multierr: new package

github.com/go-multierror/multierror served us well.
But we need a few feature from it (implement Is),
and it's not worth maintaining a fork of such a small module.

Instead, I did a clean room implementation inspired by its API.

Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
This commit is contained in:
Josh Bleecher Snyder
2021-11-02 14:30:48 -07:00
committed by Josh Bleecher Snyder
parent 17b5782b3a
commit 3fd5f4380f
14 changed files with 186 additions and 19 deletions

View File

@@ -15,7 +15,6 @@ import (
"sort"
"time"
"github.com/go-multierror/multierror"
ole "github.com/go-ole/go-ole"
"golang.org/x/sys/windows"
"golang.zx2c4.com/wireguard/tun"
@@ -24,6 +23,7 @@ import (
"tailscale.com/health"
"tailscale.com/net/interfaces"
"tailscale.com/net/tsaddr"
"tailscale.com/util/multierr"
"tailscale.com/wgengine/winnet"
)
@@ -809,5 +809,5 @@ func syncRoutes(ifc *winipcfg.IPAdapterAddresses, want []*winipcfg.RouteData, do
}
}
return multierror.New(errs)
return multierr.New(errs...)
}

View File

@@ -17,7 +17,6 @@ import (
"time"
"github.com/coreos/go-iptables/iptables"
"github.com/go-multierror/multierror"
"github.com/tailscale/netlink"
"golang.org/x/sys/unix"
"golang.org/x/time/rate"
@@ -27,6 +26,7 @@ import (
"tailscale.com/syncs"
"tailscale.com/types/logger"
"tailscale.com/types/preftype"
"tailscale.com/util/multierr"
"tailscale.com/version/distro"
"tailscale.com/wgengine/monitor"
)
@@ -320,7 +320,7 @@ func (r *linuxRouter) Set(cfg *Config) error {
}
r.snatSubnetRoutes = cfg.SNATSubnetRoutes
return multierror.New(errs)
return multierr.New(errs...)
}
// setNetfilterMode switches the router to the given netfilter