hscontrol: replace tailscale line refs with doc links

Line numbers drift on every upstream bump.
This commit is contained in:
Kristoffer Dalby
2026-09-23 08:52:20 +00:00
committed by Kristoffer Dalby
parent 0e8a3bba54
commit 06fa3075da
3 changed files with 12 additions and 10 deletions
+1 -2
View File
@@ -222,8 +222,7 @@ func NewHeadscale(cfg *types.Config) (*Headscale, error) {
// DNS routes vanish, taking the resolver with them for ~6 min
// until the next route-changing netmap. Empty slice survives
// Clone and carries the same "resolve locally" semantics
// (tailscale.com/ipn/ipnlocal/node_backend.go:869 documents the
// empty-resolver Routes form for Issue 2706).
// ([tailcfg.DNSConfig.Routes] documents the empty-resolver form).
app.cfg.TailcfgDNSConfig.Routes[d.WithoutTrailingDot()] = []*dnstype.Resolver{}
}
}
+2 -1
View File
@@ -302,7 +302,8 @@ func (b *MapResponseBuilder) buildTailPeers(peers views.Slice[types.NodeView]) (
// [tailcfg.Node.CapMap] on a peer carries the small set of
// caps the Tailscale client reads from the peer view rather
// than the self view (suggest-exit-node, dns-subdomain-resolve
// — see ipn/ipnlocal/local.go:7534 and node_backend.go:745).
// — see [tailcfg.NodeAttrSuggestExitNode] and
// [tailcfg.NodeAttrDNSSubdomainResolve]).
// The Tailscale-hosted control plane stamps these only when
// the peer satisfies the cap's emission condition; every other
// cap stays off the peer view, leaving CapMap empty for most
+9 -7
View File
@@ -93,20 +93,21 @@ var unmodelledTailnetStateCaps = []nodecap.Cap{
// [tailcfg.CapabilityTailnetLock]: tailnet-lock signs node keys
// with a tailnet-wide signing key so peers can detect silent
// re-keying by the control plane. Client reads at
// ipn/ipnlocal/local.go:1752 (b.capTailnetLock). Headscale has no
// tailnet-lock implementation.
// re-keying by the control plane. Client gates
// [tailscale.com/ipn/ipnlocal.LocalBackend.NetworkLockStatus] on it.
// Headscale has no tailnet-lock implementation.
nodecap.TailnetLock,
// [tailcfg.NodeAttrServiceHost]: marks a node as approved to host
// VIP services (Tailscale Services). Client reads via
// UnmarshalNodeCapViewJSON at ipn/ipnlocal/local.go:2704.
// VIP services (Tailscale Services). Client decodes it via
// [tailcfg.UnmarshalNodeCapViewJSON] into [tailcfg.ServiceIPMappings].
// Headscale does not implement Tailscale Services.
nodecap.ServiceHost,
// [tailcfg.NodeAttrStoreAppCRoutes]: tells an app-connector node
// to persist learned routes across restarts. Client reads via
// controlknobs:148. Headscale does not implement app connectors.
// [tailscale.com/control/controlknobs.Knobs.UpdateFromNodeAttributes]. Headscale does not implement app
// connectors.
nodecap.StoreAppCRoutes,
// [tailcfg.CapabilityWarnFunnelNoHTTPS]: deprecated in Tailscale
@@ -140,7 +141,8 @@ var unmodelledTailnetStateCaps = []nodecap.Cap{
// [tailcfg.NodeAttrProbeUDPLifetime]: tunes magicsock's UDP
// path-lifetime probe behavior. Internal performance knob; not
// policy-driven. Client reads via controlknobs:147.
// policy-driven. Client reads via
// [tailscale.com/control/controlknobs.Knobs.UpdateFromNodeAttributes].
nodecap.ProbeUDPLifetime,
// [tailcfg.NodeAttrSSHBehaviorV1]: configures the embedded SSH