mirror of
https://github.com/tailscale/tailscale.git
synced 2025-05-08 00:26:52 +00:00
wgengine/magicsock: restore a bit of logging on node becoming active
Fixes #2695 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
51976ab3a2
commit
37053801bb
@ -853,11 +853,17 @@ func (c *Conn) populateCLIPingResponseLocked(res *ipnstate.PingResult, latency t
|
|||||||
}
|
}
|
||||||
regionID := int(ep.Port())
|
regionID := int(ep.Port())
|
||||||
res.DERPRegionID = regionID
|
res.DERPRegionID = regionID
|
||||||
if c.derpMap != nil {
|
res.DERPRegionCode = c.derpRegionCodeLocked(regionID)
|
||||||
if dr, ok := c.derpMap.Regions[regionID]; ok {
|
}
|
||||||
res.DERPRegionCode = dr.RegionCode
|
|
||||||
}
|
func (c *Conn) derpRegionCodeLocked(regionID int) string {
|
||||||
|
if c.derpMap == nil {
|
||||||
|
return ""
|
||||||
}
|
}
|
||||||
|
if dr, ok := c.derpMap.Regions[regionID]; ok {
|
||||||
|
return dr.RegionCode
|
||||||
|
}
|
||||||
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
// DiscoPublicKey returns the discovery public key.
|
// DiscoPublicKey returns the discovery public key.
|
||||||
@ -2760,13 +2766,14 @@ func (c *Conn) ParseEndpoint(endpointStr string) (conn.Endpoint, error) {
|
|||||||
}
|
}
|
||||||
pk := key.Public(endpoints.PublicKey)
|
pk := key.Public(endpoints.PublicKey)
|
||||||
discoKey := endpoints.DiscoKey
|
discoKey := endpoints.DiscoKey
|
||||||
c.logf("magicsock: ParseEndpoint: key=%s: disco=%s ipps=%s", pk.ShortString(), discoKey.ShortString(), derpStr(endpoints.IPPorts.String()))
|
|
||||||
|
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
defer c.mu.Unlock()
|
defer c.mu.Unlock()
|
||||||
if discoKey.IsZero() {
|
if discoKey.IsZero() {
|
||||||
|
c.logf("magicsock: ParseEndpoint: key=%s: disco=%s legacy=%s", pk.ShortString(), discoKey.ShortString(), derpStr(endpoints.IPPorts.String()))
|
||||||
return c.createLegacyEndpointLocked(pk, endpoints.IPPorts, endpointStr)
|
return c.createLegacyEndpointLocked(pk, endpoints.IPPorts, endpointStr)
|
||||||
}
|
}
|
||||||
|
|
||||||
de := &discoEndpoint{
|
de := &discoEndpoint{
|
||||||
c: c,
|
c: c,
|
||||||
publicKey: tailcfg.NodeKey(pk), // peer public key (for WireGuard + DERP)
|
publicKey: tailcfg.NodeKey(pk), // peer public key (for WireGuard + DERP)
|
||||||
@ -2777,7 +2784,35 @@ func (c *Conn) ParseEndpoint(endpointStr string) (conn.Endpoint, error) {
|
|||||||
endpointState: map[netaddr.IPPort]*endpointState{},
|
endpointState: map[netaddr.IPPort]*endpointState{},
|
||||||
}
|
}
|
||||||
de.initFakeUDPAddr()
|
de.initFakeUDPAddr()
|
||||||
de.updateFromNode(c.nodeOfDisco[de.discoKey])
|
n := c.nodeOfDisco[de.discoKey]
|
||||||
|
de.updateFromNode(n)
|
||||||
|
c.logf("magicsock: ParseEndpoint: key=%s: disco=%s; %v", pk.ShortString(), discoKey.ShortString(), logger.ArgWriter(func(w *bufio.Writer) {
|
||||||
|
if n == nil {
|
||||||
|
w.WriteString("nil node")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const derpPrefix = "127.3.3.40:"
|
||||||
|
if strings.HasPrefix(n.DERP, derpPrefix) {
|
||||||
|
ipp, _ := netaddr.ParseIPPort(n.DERP)
|
||||||
|
regionID := int(ipp.Port())
|
||||||
|
code := c.derpRegionCodeLocked(regionID)
|
||||||
|
if code != "" {
|
||||||
|
code = "(" + code + ")"
|
||||||
|
}
|
||||||
|
fmt.Fprintf(w, "derp=%v%s ", regionID, code)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, a := range n.AllowedIPs {
|
||||||
|
if a.IsSingleIP() {
|
||||||
|
fmt.Fprintf(w, "aip=%v ", a.IP())
|
||||||
|
} else {
|
||||||
|
fmt.Fprintf(w, "aip=%v ", a)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, ep := range n.Endpoints {
|
||||||
|
fmt.Fprintf(w, "ep=%v ", ep)
|
||||||
|
}
|
||||||
|
}))
|
||||||
c.endpointOfDisco[de.discoKey] = de
|
c.endpointOfDisco[de.discoKey] = de
|
||||||
return de, nil
|
return de, nil
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user