2023-01-27 21:37:20 +00:00
|
|
|
// Copyright (c) Tailscale Inc & AUTHORS
|
|
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
2021-06-22 22:29:01 +00:00
|
|
|
|
|
|
|
// Package controlknobs contains client options configurable from control which can be turned on
|
|
|
|
// or off. The ability to turn options on and off is for incrementally adding features in.
|
|
|
|
package controlknobs
|
|
|
|
|
|
|
|
import (
|
2022-08-04 04:51:02 +00:00
|
|
|
"sync/atomic"
|
|
|
|
|
2023-09-11 19:03:39 +00:00
|
|
|
"tailscale.com/syncs"
|
|
|
|
"tailscale.com/types/opt"
|
2021-06-22 22:29:01 +00:00
|
|
|
)
|
|
|
|
|
2023-09-11 19:03:39 +00:00
|
|
|
// Knobs is the set of knobs that the control plane's coordination server can
|
|
|
|
// adjust at runtime.
|
|
|
|
type Knobs struct {
|
|
|
|
// DisableUPnP indicates whether to attempt UPnP mapping.
|
|
|
|
DisableUPnP atomic.Bool
|
2021-06-22 22:29:01 +00:00
|
|
|
|
2023-09-11 19:03:39 +00:00
|
|
|
// DisableDRPO is whether control says to disable the
|
|
|
|
// DERP route optimization (Issue 150).
|
|
|
|
DisableDRPO atomic.Bool
|
2021-06-22 22:29:01 +00:00
|
|
|
|
2023-09-11 19:03:39 +00:00
|
|
|
// KeepFullWGConfig is whether we should disable the lazy wireguard
|
|
|
|
// programming and instead give WireGuard the full netmap always, even for
|
|
|
|
// idle peers.
|
|
|
|
KeepFullWGConfig atomic.Bool
|
|
|
|
|
|
|
|
// RandomizeClientPort is whether control says we should randomize
|
|
|
|
// the client port.
|
|
|
|
RandomizeClientPort atomic.Bool
|
2021-06-22 22:29:01 +00:00
|
|
|
|
2023-09-11 19:03:39 +00:00
|
|
|
// OneCGNAT is whether the the node should make one big CGNAT route
|
|
|
|
// in the OS rather than one /32 per peer.
|
|
|
|
OneCGNAT syncs.AtomicValue[opt.Bool]
|
2023-09-12 00:53:21 +00:00
|
|
|
|
|
|
|
// ForceBackgroundSTUN forces netcheck STUN queries to keep
|
|
|
|
// running in magicsock, even when idle.
|
|
|
|
ForceBackgroundSTUN atomic.Bool
|
2021-06-22 22:29:01 +00:00
|
|
|
}
|