wgengine/netstack: remove SubnetRouterWrapper

It was used when we only supported subnet routers on linux
and would nil out the SubnetRoutes slice as no other router
worked with it, but now we support subnet routers on ~all platforms.

The field it was setting to nil is now only used for network logging
and nowhere else, so keep the field but drop the SubnetRouterWrapper
as it's not useful.

Updates #cleanup

Change-Id: Id03f9b6ec33e47ad643e7b66e07911945f25db79
Signed-off-by: Maisem Ali <maisem@tailscale.com>
pull/11661/head
Maisem Ali 1 year ago committed by Brad Fitzpatrick
parent fe22032fb3
commit 3f4c5daa15

@ -709,7 +709,6 @@ func tryEngine(logf logger.Logf, sys *tsd.System, name string) (onlyNetstack boo
conf.DNS = d conf.DNS = d
conf.Router = r conf.Router = r
if handleSubnetsInNetstack() { if handleSubnetsInNetstack() {
conf.Router = netstack.NewSubnetRouterWrapper(conf.Router)
netstackSubnetRouter = true netstackSubnetRouter = true
} }
sys.Set(conf.Router) sys.Set(conf.Router)

@ -1,28 +0,0 @@
// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause
package netstack
import (
"tailscale.com/wgengine/router"
)
type subnetRouter struct {
router.Router
}
// NewSubnetRouterWrapper returns a Router wrapper that prevents the
// underlying Router r from seeing any advertised subnet routes, as
// netstack will handle them instead.
func NewSubnetRouterWrapper(r router.Router) router.Router {
return &subnetRouter{
Router: r,
}
}
func (r *subnetRouter) Set(c *router.Config) error {
if c != nil {
c.SubnetRoutes = nil // netstack will handle
}
return r.Router.Set(c)
}

@ -80,8 +80,13 @@ type Config struct {
// callback. If zero, the MTU is unchanged. // callback. If zero, the MTU is unchanged.
NewMTU int NewMTU int
// SubnetRoutes is the list of subnets that this node is
// advertising to other Tailscale nodes.
// As of 2023-10-11, this field is only used for network
// flow logging and is otherwise ignored.
SubnetRoutes []netip.Prefix
// Linux-only things below, ignored on other platforms. // Linux-only things below, ignored on other platforms.
SubnetRoutes []netip.Prefix // subnets being advertised to other Tailscale nodes
SNATSubnetRoutes bool // SNAT traffic to local subnets SNATSubnetRoutes bool // SNAT traffic to local subnets
NetfilterMode preftype.NetfilterMode // how much to manage netfilter rules NetfilterMode preftype.NetfilterMode // how much to manage netfilter rules
NetfilterKind string // what kind of netfilter to use (nftables, iptables) NetfilterKind string // what kind of netfilter to use (nftables, iptables)

@ -12,7 +12,6 @@ import (
"tailscale.com/tstest" "tailscale.com/tstest"
"tailscale.com/types/logger" "tailscale.com/types/logger"
"tailscale.com/wgengine" "tailscale.com/wgengine"
"tailscale.com/wgengine/netstack"
"tailscale.com/wgengine/router" "tailscale.com/wgengine/router"
) )
@ -55,7 +54,7 @@ func TestIsNetstackRouter(t *testing.T) {
name: "hybrid_netstack", name: "hybrid_netstack",
conf: wgengine.Config{ conf: wgengine.Config{
Tun: newFakeOSTUN(), Tun: newFakeOSTUN(),
Router: netstack.NewSubnetRouterWrapper(newFakeOSRouter()), Router: newFakeOSRouter(),
}, },
setNetstackRouter: true, setNetstackRouter: true,
want: true, want: true,

Loading…
Cancel
Save