mirror of
https://github.com/tailscale/tailscale.git
synced 2025-08-20 18:07:34 +00:00
client, cmd/hello, ipn, wgengine: fix whois for netstack-forwarded connections
Updates #504 Updates #707 Signed-off-by: Naman Sood <mail@nsood.in>
This commit is contained in:
@@ -125,6 +125,7 @@ type userspaceEngine struct {
|
||||
pingers map[wgkey.Key]*pinger // legacy pingers for pre-discovery peers
|
||||
pendOpen map[flowtrack.Tuple]*pendingOpenFlow // see pendopen.go
|
||||
networkMapCallbacks map[*someHandle]NetworkMapCallback
|
||||
tsIPByIPPort map[netaddr.IPPort]netaddr.IP // allows registration of IP:ports as belonging to a certain Tailscale IP for whois lookups
|
||||
|
||||
// Lock ordering: magicsock.Conn.mu, wgLock, then mu.
|
||||
}
|
||||
@@ -1341,6 +1342,31 @@ func (e *userspaceEngine) Ping(ip netaddr.IP, cb func(*ipnstate.PingResult)) {
|
||||
e.magicConn.Ping(ip, cb)
|
||||
}
|
||||
|
||||
func (e *userspaceEngine) RegisterIPPortIdentity(ipport netaddr.IPPort, tsIP netaddr.IP) {
|
||||
e.mu.Lock()
|
||||
defer e.mu.Unlock()
|
||||
if e.tsIPByIPPort == nil {
|
||||
e.tsIPByIPPort = make(map[netaddr.IPPort]netaddr.IP)
|
||||
}
|
||||
e.tsIPByIPPort[ipport] = tsIP
|
||||
}
|
||||
|
||||
func (e *userspaceEngine) UnregisterIPPortIdentity(ipport netaddr.IPPort) {
|
||||
e.mu.Lock()
|
||||
defer e.mu.Unlock()
|
||||
if e.tsIPByIPPort == nil {
|
||||
return
|
||||
}
|
||||
delete(e.tsIPByIPPort, ipport)
|
||||
}
|
||||
|
||||
func (e *userspaceEngine) WhoIsIPPort(ipport netaddr.IPPort) (tsIP netaddr.IP, ok bool) {
|
||||
e.mu.Lock()
|
||||
defer e.mu.Unlock()
|
||||
tsIP, ok = e.tsIPByIPPort[ipport]
|
||||
return tsIP, ok
|
||||
}
|
||||
|
||||
// diagnoseTUNFailure is called if tun.CreateTUN fails, to poke around
|
||||
// the system and log some diagnostic info that might help debug why
|
||||
// TUN failed. Because TUN's already failed and things the program's
|
||||
|
Reference in New Issue
Block a user