ipn/ipnlocal: add TS_FORCE_CACHE_NETMAP envknob to force netmap caching

Allow clients to force netmap caching via the TS_FORCE_CACHE_NETMAP
environment variable, bypassing the requirement for the control server
to grant the cache-network-maps node capability.

This is useful for tsnet users who want faster startup times via
cached netmaps but whose control plane doesn't grant the capability.

Change-Id: I447b57311940d51a5ce9021236add48e0333d0b5
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Avery Pennarun 2026-04-10 21:50:39 +02:00
parent 66918a65f6
commit ff4d495e39

View File

@ -6518,7 +6518,7 @@ func (b *LocalBackend) setNetMapLocked(nm *netmap.NetworkMap) {
// not being updated (because of the envknob) and could be read back when
// the node starts up.
if nm != nil {
if b.currentNode().SelfHasCap(tailcfg.NodeAttrCacheNetworkMaps) && envknob.BoolDefaultTrue("TS_USE_CACHED_NETMAP") {
if (b.currentNode().SelfHasCap(tailcfg.NodeAttrCacheNetworkMaps) || envknob.Bool("TS_FORCE_CACHE_NETMAP")) && envknob.BoolDefaultTrue("TS_USE_CACHED_NETMAP") {
if err := b.writeNetmapToDiskLocked(nm); err != nil {
b.logf("write netmap to cache: %v", err)
}