mirror of
https://github.com/tailscale/tailscale.git
synced 2024-12-12 19:24:40 +00:00
wgengine/router: handle DisableIPv4 in Linux router
This commit is contained in:
parent
d8eb111ac8
commit
91d28e7155
@ -112,6 +112,7 @@ type linuxRouter struct {
|
||||
v6Available bool
|
||||
v6NATAvailable bool
|
||||
fwmaskWorks bool // whether we can use 'ip rule...fwmark <mark>/<mask>'
|
||||
hasV4Prefix bool // false when 'DisableIPv4' is set on the tailnet
|
||||
|
||||
// ipPolicyPrefBase is the base priority at which ip rules are installed.
|
||||
ipPolicyPrefBase int
|
||||
@ -418,6 +419,26 @@ func (r *linuxRouter) Set(cfg *Config) error {
|
||||
cfg = &shutdownConfig
|
||||
}
|
||||
|
||||
// Because the tailnet may have IPv4 disabled, check if we have any v4
|
||||
// prefixes from addresses, routes, or local routes.
|
||||
r.hasV4Prefix = false
|
||||
findV4 := func(arr []netip.Prefix) {
|
||||
// Skip useless loop if we've already found a v4 prefix
|
||||
if r.hasV4Prefix {
|
||||
return
|
||||
}
|
||||
for _, pref := range arr {
|
||||
if pref.Addr().Is4() {
|
||||
r.hasV4Prefix = true
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
findV4(cfg.LocalAddrs)
|
||||
findV4(cfg.Routes)
|
||||
findV4(cfg.LocalRoutes)
|
||||
findV4(cfg.SubnetRoutes)
|
||||
|
||||
if err := r.setNetfilterMode(cfg.NetfilterMode); err != nil {
|
||||
errs = append(errs, err)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user