diff options
| author | Brad Fitzpatrick <bradfitz@tailscale.com> | 2021-01-28 08:06:56 -0800 |
|---|---|---|
| committer | Brad Fitzpatrick <bradfitz@tailscale.com> | 2021-01-28 12:44:09 -0800 |
| commit | 8cce724cee4d2ffd85b3d2bfdf987979708f292f (patch) | |
| tree | e5db2b675b4d14b182b0dfe1e493d96c87781519 | |
| parent | 7a16ac80b7bd0189b2b173f957646d0940f3444c (diff) | |
| download | tailscale-bradfitz/linux_v6_off.tar.xz tailscale-bradfitz/linux_v6_off.zip | |
wgengine/router: don't configure IPv6 on Linux when IPv6 is unavailablebradfitz/linux_v6_off
Fixes #1214
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
| -rw-r--r-- | wgengine/router/router_linux.go | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/wgengine/router/router_linux.go b/wgengine/router/router_linux.go index f65d12742..2f92d5d69 100644 --- a/wgengine/router/router_linux.go +++ b/wgengine/router/router_linux.go @@ -366,7 +366,9 @@ func (r *linuxRouter) setNetfilterMode(mode NetfilterMode) error { // address is already assigned to the interface, or if the addition // fails. func (r *linuxRouter) addAddress(addr netaddr.IPPrefix) error { - + if !r.v6Available && addr.IP.Is6() { + return nil + } if err := r.cmd.run("ip", "addr", "add", addr.String(), "dev", r.tunname); err != nil { return fmt.Errorf("adding address %q to tunnel interface: %w", addr, err) } @@ -380,6 +382,9 @@ func (r *linuxRouter) addAddress(addr netaddr.IPPrefix) error { // the address is not assigned to the interface, or if the removal // fails. func (r *linuxRouter) delAddress(addr netaddr.IPPrefix) error { + if !r.v6Available && addr.IP.Is6() { + return nil + } if err := r.delLoopbackRule(addr.IP); err != nil { return err } @@ -437,6 +442,9 @@ func (r *linuxRouter) delLoopbackRule(addr netaddr.IP) error { // interface. Fails if the route already exists, or if adding the // route fails. func (r *linuxRouter) addRoute(cidr netaddr.IPPrefix) error { + if !r.v6Available && cidr.IP.Is6() { + return nil + } args := []string{ "ip", "route", "add", normalizeCIDR(cidr), @@ -452,6 +460,9 @@ func (r *linuxRouter) addRoute(cidr netaddr.IPPrefix) error { // interface. Fails if the route doesn't exist, or if removing the // route fails. func (r *linuxRouter) delRoute(cidr netaddr.IPPrefix) error { + if !r.v6Available && cidr.IP.Is6() { + return nil + } args := []string{ "ip", "route", "del", normalizeCIDR(cidr), |
