mirror of
https://github.com/tailscale/tailscale.git
synced 2025-08-23 03:17:43 +00:00
cmd/tailscale/cli,ipn/ipnlocal,wgengine/magicsock: implement tailscale debug peer-relay-servers (#16577)
Updates tailscale/corp#30036 Signed-off-by: Jordan Whited <jordan@tailscale.com>
This commit is contained in:
@@ -57,6 +57,7 @@ type relayManager struct {
|
||||
newServerEndpointCh chan newRelayServerEndpointEvent
|
||||
rxHandshakeDiscoMsgCh chan relayHandshakeDiscoMsgEvent
|
||||
serversCh chan set.Set[netip.AddrPort]
|
||||
getServersCh chan chan set.Set[netip.AddrPort]
|
||||
|
||||
discoInfoMu sync.Mutex // guards the following field
|
||||
discoInfoByServerDisco map[key.DiscoPublic]*relayHandshakeDiscoInfo
|
||||
@@ -185,10 +186,29 @@ func (r *relayManager) runLoop() {
|
||||
if !r.hasActiveWorkRunLoop() {
|
||||
return
|
||||
}
|
||||
case getServersCh := <-r.getServersCh:
|
||||
r.handleGetServersRunLoop(getServersCh)
|
||||
if !r.hasActiveWorkRunLoop() {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (r *relayManager) handleGetServersRunLoop(getServersCh chan set.Set[netip.AddrPort]) {
|
||||
servers := make(set.Set[netip.AddrPort], len(r.serversByAddrPort))
|
||||
for server := range r.serversByAddrPort {
|
||||
servers.Add(server)
|
||||
}
|
||||
getServersCh <- servers
|
||||
}
|
||||
|
||||
func (r *relayManager) getServers() set.Set[netip.AddrPort] {
|
||||
ch := make(chan set.Set[netip.AddrPort])
|
||||
relayManagerInputEvent(r, nil, &r.getServersCh, ch)
|
||||
return <-ch
|
||||
}
|
||||
|
||||
func (r *relayManager) handleServersUpdateRunLoop(update set.Set[netip.AddrPort]) {
|
||||
for k, v := range r.serversByAddrPort {
|
||||
if !update.Contains(k) {
|
||||
@@ -244,6 +264,7 @@ func (r *relayManager) init() {
|
||||
r.newServerEndpointCh = make(chan newRelayServerEndpointEvent)
|
||||
r.rxHandshakeDiscoMsgCh = make(chan relayHandshakeDiscoMsgEvent)
|
||||
r.serversCh = make(chan set.Set[netip.AddrPort])
|
||||
r.getServersCh = make(chan chan set.Set[netip.AddrPort])
|
||||
r.runLoopStoppedCh = make(chan struct{}, 1)
|
||||
r.runLoopStoppedCh <- struct{}{}
|
||||
})
|
||||
|
Reference in New Issue
Block a user