mirror of
https://github.com/tailscale/tailscale.git
synced 2025-08-11 21:27:31 +00:00
ipn/ipnlocal,tailcfg: introduce capability to gate TKA init paths
Previously, `TAILSCALE_USE_WIP_CODE` was needed to hit a bunch of the TKA paths. With this change: - Enablement codepaths (NetworkLockInit) and initialization codepaths (tkaBootstrapFromGenesisLocked via tkaSyncIfNeeded) require either the WIP envknob or CapabilityTailnetLockAlpha. - Normal operation codepaths (tkaSyncIfNeeded, tkaFilterNetmapLocked) require TKA to be initialized, or either-or the envknob / capability. - Auxillary commands (ie: changing tka keys) require TKA to be initialized. The end result is that it shouldn't be possible to initialize TKA (or subsequently use any of its features) without being sent the capability or setting the envknob on tailscaled yourself. I've also pulled out a bunch of unnecessary checks for CanSupportNetworkLock(). Signed-off-by: Tom DNetto <tom@tailscale.com>
This commit is contained in:
@@ -87,7 +87,8 @@ type CapabilityVersion int
|
||||
// - 48: 2022-11-02: Node.UnsignedPeerAPIOnly
|
||||
// - 49: 2022-11-03: Client understands EarlyNoise
|
||||
// - 50: 2022-11-14: Client understands CapabilityIngress
|
||||
const CurrentCapabilityVersion CapabilityVersion = 50
|
||||
// - 51: 2022-11-30: Client understands CapabilityTailnetLockAlpha
|
||||
const CurrentCapabilityVersion CapabilityVersion = 51
|
||||
|
||||
type StableID string
|
||||
|
||||
@@ -1707,6 +1708,12 @@ const (
|
||||
CapabilityDataPlaneAuditLogs = "https://tailscale.com/cap/data-plane-audit-logs" // feature enabled
|
||||
CapabilityDebug = "https://tailscale.com/cap/debug" // exposes debug endpoints over the PeerAPI
|
||||
|
||||
// CapabilityTailnetLockAlpha indicates the node is in the tailnet lock alpha,
|
||||
// and initialization of tailnet lock may proceed.
|
||||
//
|
||||
// TODO(tom): Remove this for 1.35 and later.
|
||||
CapabilityTailnetLockAlpha = "https://tailscale.com/cap/tailnet-lock-alpha"
|
||||
|
||||
// Inter-node capabilities as specified in the MapResponse.PacketFilter[].CapGrants.
|
||||
|
||||
// CapabilityFileSharingTarget grants the current node the ability to send
|
||||
|
Reference in New Issue
Block a user