feature/relayserver: consider relay:server node attribute for enablement (#15901)

Updates tailscale/corp#27502

Signed-off-by: Jordan Whited <jordan@tailscale.com>
This commit is contained in:
Jordan Whited 2025-05-07 09:15:33 -07:00 committed by GitHub
parent 48dacf1bf7
commit 7e2630235f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -72,10 +72,20 @@ func (e *extension) Init(host ipnext.Host) error {
profile, prefs := host.Profiles().CurrentProfileState()
e.profileStateChanged(profile, prefs, false)
host.Hooks().ProfileStateChange.Add(e.profileStateChanged)
// TODO(jwhited): callback for netmap/nodeattr changes (e.hasNodeAttrRelayServer)
host.Hooks().OnSelfChange.Add(e.selfNodeViewChanged)
return nil
}
func (e *extension) selfNodeViewChanged(nodeView tailcfg.NodeView) {
e.mu.Lock()
defer e.mu.Unlock()
e.hasNodeAttrRelayServer = nodeView.HasCap(tailcfg.NodeAttrRelayServer)
if !e.hasNodeAttrRelayServer && e.server != nil {
e.server.Close()
e.server = nil
}
}
func (e *extension) profileStateChanged(_ ipn.LoginProfileView, prefs ipn.PrefsView, sameNode bool) {
e.mu.Lock()
defer e.mu.Unlock()