summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@tailscale.com>2021-01-28 08:06:56 -0800
committerBrad Fitzpatrick <bradfitz@tailscale.com>2021-01-28 12:44:09 -0800
commit8cce724cee4d2ffd85b3d2bfdf987979708f292f (patch)
treee5db2b675b4d14b182b0dfe1e493d96c87781519
parent7a16ac80b7bd0189b2b173f957646d0940f3444c (diff)
downloadtailscale-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.go13
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),