feature/routecheck: add ts_omit_routecheck feature flag (#19638)

RouteCheck, which checks that overlapping routers are reachable, is
enabled by default for both tailscaled and tsnet.

Updates #17366
Updates tailscale/corp#33033

Signed-off-by: Simon Law <sfllaw@tailscale.com>
This commit is contained in:
Simon Law
2026-05-15 15:50:50 -07:00
committed by GitHub
parent 894ff5d8ee
commit 5d1bf80597
7 changed files with 69 additions and 0 deletions
@@ -0,0 +1,13 @@
// Copyright (c) Tailscale Inc & contributors
// SPDX-License-Identifier: BSD-3-Clause
// Code generated by gen.go; DO NOT EDIT.
//go:build ts_omit_routecheck
package buildfeatures
// HasRouteCheck is whether the binary was built with support for modular feature "Support checking the reachability of overlapping routers, for choosing between multiple network paths to the same IP address".
// Specifically, it's whether the binary was NOT built with the "ts_omit_routecheck" build tag.
// It's a const so it can be used for dead code elimination.
const HasRouteCheck = false
@@ -0,0 +1,13 @@
// Copyright (c) Tailscale Inc & contributors
// SPDX-License-Identifier: BSD-3-Clause
// Code generated by gen.go; DO NOT EDIT.
//go:build !ts_omit_routecheck
package buildfeatures
// HasRouteCheck is whether the binary was built with support for modular feature "Support checking the reachability of overlapping routers, for choosing between multiple network paths to the same IP address".
// Specifically, it's whether the binary was NOT built with the "ts_omit_routecheck" build tag.
// It's a const so it can be used for dead code elimination.
const HasRouteCheck = true
+8
View File
@@ -0,0 +1,8 @@
// Copyright (c) Tailscale Inc & contributors
// SPDX-License-Identifier: BSD-3-Clause
//go:build !ts_omit_routecheck
package condregister
import _ "tailscale.com/feature/routecheck"
+4
View File
@@ -235,6 +235,10 @@ var Features = map[FeatureTag]FeatureMeta{
Desc: "Linux systemd-resolved integration",
Deps: []FeatureTag{"dbus"},
},
"routecheck": {
Sym: "RouteCheck",
Desc: "Support checking the reachability of overlapping routers, for choosing between multiple network paths to the same IP address",
},
"sdnotify": {
Sym: "SDNotify",
Desc: "systemd notification support",
+17
View File
@@ -0,0 +1,17 @@
// Copyright (c) Tailscale Inc & contributors
// SPDX-License-Identifier: BSD-3-Clause
// Package routecheck registers support for RouteCheck,
// which checks the reachability of overlapping routers.
//
// When there are multiple network paths to an IP address, it is being routed by
// overlapping routers. The client uses reachability to pick between those
// paths: either sticking with an active WireGuard session or choosing from the
// peers that it has determined it can reach. It doesnt need reachability for
// IP addresses that have only one network path, since it can naively attempt to
// establish a WireGuard session.
package routecheck
func init() {
// TODO(sfllaw): Initialize the new routecheck package.
}