diff options
| author | Fran Bull <fran@tailscale.com> | 2024-04-11 10:12:13 -0700 |
|---|---|---|
| committer | franbull <fran@tailscale.com> | 2024-04-29 11:40:04 -0700 |
| commit | 1bd1b387b298a09ae49d7084e644e0f4ff0cb4c2 (patch) | |
| tree | 97478e1b29962e885d5fd2b278c5895b77864879 /control/controlknobs/controlknobs.go | |
| parent | 79836e7bfdc63b7e85f94c3cb338db4e920bf43c (diff) | |
| download | tailscale-1bd1b387b298a09ae49d7084e644e0f4ff0cb4c2.tar.xz tailscale-1bd1b387b298a09ae49d7084e644e0f4ff0cb4c2.zip | |
appc: add flag shouldStoreRoutes and controlknob for it
When an app connector is reconfigured and domains to route are removed,
we would like to no longer advertise routes that were discovered for
those domains. In order to do this we plan to store which routes were
discovered for which domains.
Add a controlknob so that we can enable/disable the new behavior.
Updates #11008
Signed-off-by: Fran Bull <fran@tailscale.com>
Diffstat (limited to 'control/controlknobs/controlknobs.go')
| -rw-r--r-- | control/controlknobs/controlknobs.go | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/control/controlknobs/controlknobs.go b/control/controlknobs/controlknobs.go index 6e3a62967..2f80ba38c 100644 --- a/control/controlknobs/controlknobs.go +++ b/control/controlknobs/controlknobs.go @@ -72,6 +72,10 @@ type Knobs struct { // ProbeUDPLifetime is whether the node should probe UDP path lifetime on // the tail end of an active direct connection in magicsock. ProbeUDPLifetime atomic.Bool + + // AppCStoreRoutes is whether the node should store RouteInfo to StateStore + // if it's an app connector. + AppCStoreRoutes atomic.Bool } // UpdateFromNodeAttributes updates k (if non-nil) based on the provided self @@ -96,6 +100,7 @@ func (k *Knobs) UpdateFromNodeAttributes(capMap tailcfg.NodeCapMap) { forceNfTables = has(tailcfg.NodeAttrLinuxMustUseNfTables) seamlessKeyRenewal = has(tailcfg.NodeAttrSeamlessKeyRenewal) probeUDPLifetime = has(tailcfg.NodeAttrProbeUDPLifetime) + appCStoreRoutes = has(tailcfg.NodeAttrStoreAppCRoutes) ) if has(tailcfg.NodeAttrOneCGNATEnable) { @@ -118,6 +123,7 @@ func (k *Knobs) UpdateFromNodeAttributes(capMap tailcfg.NodeCapMap) { k.LinuxForceNfTables.Store(forceNfTables) k.SeamlessKeyRenewal.Store(seamlessKeyRenewal) k.ProbeUDPLifetime.Store(probeUDPLifetime) + k.AppCStoreRoutes.Store(appCStoreRoutes) } // AsDebugJSON returns k as something that can be marshalled with json.Marshal @@ -141,5 +147,6 @@ func (k *Knobs) AsDebugJSON() map[string]any { "LinuxForceNfTables": k.LinuxForceNfTables.Load(), "SeamlessKeyRenewal": k.SeamlessKeyRenewal.Load(), "ProbeUDPLifetime": k.ProbeUDPLifetime.Load(), + "AppCStoreRoutes": k.AppCStoreRoutes.Load(), } } |
