mirror of
https://github.com/tailscale/tailscale.git
synced 2025-03-03 20:45:24 +00:00
wgengine/router: don't assume Linux was built with IP_MULTIPLE_TABLES
Updates #3351 Updates #391 Change-Id: I7e66b686e05f3c970846513679cc62556ebe322a Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com> (cherry picked from commit 9259377a7f65a5f4c21b096d0da5249d75b97134)
This commit is contained in:
parent
6db09061bc
commit
bcb979f8bf
@ -99,7 +99,7 @@ type linuxRouter struct {
|
|||||||
ipRuleFixLimiter *rate.Limiter
|
ipRuleFixLimiter *rate.Limiter
|
||||||
|
|
||||||
// Various feature checks for the network stack.
|
// Various feature checks for the network stack.
|
||||||
ipRuleAvailable bool
|
ipRuleAvailable bool // whether kernel was built with IP_MULTIPLE_TABLES
|
||||||
v6Available bool
|
v6Available bool
|
||||||
v6NATAvailable bool
|
v6NATAvailable bool
|
||||||
|
|
||||||
@ -165,8 +165,13 @@ func newUserspaceRouterAdvanced(logf logger.Logf, tunname string, linkMon *monit
|
|||||||
if r.useIPCommand() {
|
if r.useIPCommand() {
|
||||||
r.ipRuleAvailable = (cmd.run("ip", "rule") == nil)
|
r.ipRuleAvailable = (cmd.run("ip", "rule") == nil)
|
||||||
} else {
|
} else {
|
||||||
// Pretend it is.
|
if rules, err := netlink.RuleList(netlink.FAMILY_V4); err != nil {
|
||||||
r.ipRuleAvailable = true
|
r.logf("error querying IP rules (does kernel have IP_MULTIPLE_TABLES?): %v", err)
|
||||||
|
r.logf("warning: running without policy routing")
|
||||||
|
} else {
|
||||||
|
r.logf("policy routing available; found %d rules", len(rules))
|
||||||
|
r.ipRuleAvailable = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return r, nil
|
return r, nil
|
||||||
|
Loading…
x
Reference in New Issue
Block a user