|
|
|
|
@ -306,7 +306,7 @@ func TestPeerRoutes(t *testing.T) { |
|
|
|
|
} |
|
|
|
|
for _, tt := range tests { |
|
|
|
|
t.Run(tt.name, func(t *testing.T) { |
|
|
|
|
got := peerRoutes(t.Logf, tt.peers, 2) |
|
|
|
|
got := peerRoutes(t.Logf, tt.peers, 2, true) |
|
|
|
|
if !reflect.DeepEqual(got, tt.want) { |
|
|
|
|
t.Errorf("got = %v; want %v", got, tt.want) |
|
|
|
|
} |
|
|
|
|
@ -7295,3 +7295,105 @@ func TestStripKeysFromPrefs(t *testing.T) { |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestRouteAllDisabled(t *testing.T) { |
|
|
|
|
pp := netip.MustParsePrefix |
|
|
|
|
|
|
|
|
|
tests := []struct { |
|
|
|
|
name string |
|
|
|
|
peers []wgcfg.Peer |
|
|
|
|
wantEndpoints []netip.Prefix |
|
|
|
|
routeAll bool |
|
|
|
|
}{ |
|
|
|
|
{ |
|
|
|
|
name: "route_all_disabled", |
|
|
|
|
routeAll: false, |
|
|
|
|
peers: []wgcfg.Peer{ |
|
|
|
|
{ |
|
|
|
|
AllowedIPs: []netip.Prefix{ |
|
|
|
|
// if one ip in the Tailscale ULA range is added, the entire range is added to the router config
|
|
|
|
|
pp("fd7a:115c:a1e0::2501:9b83/128"), |
|
|
|
|
pp("100.80.207.38/32"), |
|
|
|
|
pp("100.80.207.56/32"), |
|
|
|
|
pp("100.80.207.40/32"), |
|
|
|
|
pp("100.94.122.93/32"), |
|
|
|
|
pp("100.79.141.115/32"), |
|
|
|
|
|
|
|
|
|
// a /28 range will not be added, since this is not a Service IP range (which is always /32, a single IP)
|
|
|
|
|
pp("100.64.0.0/28"), |
|
|
|
|
|
|
|
|
|
// ips outside the tailscale cgnat/ula range are not added to the router config
|
|
|
|
|
pp("192.168.0.45/32"), |
|
|
|
|
pp("fd7a:115c:b1e0::2501:9b83/128"), |
|
|
|
|
pp("fdf8:f966:e27c:0:5:0:0:10/128"), |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
wantEndpoints: []netip.Prefix{ |
|
|
|
|
pp("100.80.207.38/32"), |
|
|
|
|
pp("100.80.207.56/32"), |
|
|
|
|
pp("100.80.207.40/32"), |
|
|
|
|
pp("100.94.122.93/32"), |
|
|
|
|
pp("100.79.141.115/32"), |
|
|
|
|
pp("fd7a:115c:a1e0::/48"), |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
name: "route_all_enabled", |
|
|
|
|
routeAll: true, |
|
|
|
|
peers: []wgcfg.Peer{ |
|
|
|
|
{ |
|
|
|
|
AllowedIPs: []netip.Prefix{ |
|
|
|
|
// if one ip in the Tailscale ULA range is added, the entire range is added to the router config
|
|
|
|
|
pp("fd7a:115c:a1e0::2501:9b83/128"), |
|
|
|
|
pp("100.80.207.38/32"), |
|
|
|
|
pp("100.80.207.56/32"), |
|
|
|
|
pp("100.80.207.40/32"), |
|
|
|
|
pp("100.94.122.93/32"), |
|
|
|
|
pp("100.79.141.115/32"), |
|
|
|
|
|
|
|
|
|
// ips outside the tailscale cgnat/ula range are not added to the router config
|
|
|
|
|
pp("192.168.0.45/32"), |
|
|
|
|
pp("fd7a:115c:b1e0::2501:9b83/128"), |
|
|
|
|
pp("fdf8:f966:e27c:0:5:0:0:10/128"), |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
wantEndpoints: []netip.Prefix{ |
|
|
|
|
pp("100.80.207.38/32"), |
|
|
|
|
pp("100.80.207.56/32"), |
|
|
|
|
pp("100.80.207.40/32"), |
|
|
|
|
pp("100.94.122.93/32"), |
|
|
|
|
pp("100.79.141.115/32"), |
|
|
|
|
pp("192.168.0.45/32"), |
|
|
|
|
pp("fd7a:115c:a1e0::/48"), |
|
|
|
|
pp("fd7a:115c:b1e0::2501:9b83/128"), |
|
|
|
|
pp("fdf8:f966:e27c:0:5:0:0:10/128"), |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for _, tt := range tests { |
|
|
|
|
t.Run(tt.name, func(t *testing.T) { |
|
|
|
|
prefs := ipn.Prefs{RouteAll: tt.routeAll} |
|
|
|
|
lb := newTestLocalBackend(t) |
|
|
|
|
cfg := &wgcfg.Config{ |
|
|
|
|
Peers: tt.peers, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
rcfg := lb.routerConfigLocked(cfg, prefs.View(), false) |
|
|
|
|
for _, p := range rcfg.Routes { |
|
|
|
|
found := false |
|
|
|
|
for _, r := range tt.wantEndpoints { |
|
|
|
|
if p.Addr() == r.Addr() { |
|
|
|
|
found = true |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if !found { |
|
|
|
|
t.Errorf("unexpected prefix %q in router config", p.String()) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|