mirror of
https://github.com/tailscale/tailscale.git
synced 2025-08-14 06:57:31 +00:00
cmd/tailscale/cli,ipn/ipnstate,wgengine/magicsock: label peer-relay (#16510)
Updates tailscale/corp#30033 Signed-off-by: Jordan Whited <jordan@tailscale.com>
This commit is contained in:
@@ -183,10 +183,12 @@ func runStatus(ctx context.Context, args []string) error {
|
||||
} else if ps.ExitNodeOption {
|
||||
f("offers exit node; ")
|
||||
}
|
||||
if relay != "" && ps.CurAddr == "" {
|
||||
if relay != "" && ps.CurAddr == "" && ps.PeerRelay == "" {
|
||||
f("relay %q", relay)
|
||||
} else if ps.CurAddr != "" {
|
||||
f("direct %s", ps.CurAddr)
|
||||
} else if ps.PeerRelay != "" {
|
||||
f("peer-relay %s", ps.PeerRelay)
|
||||
}
|
||||
if !ps.Online {
|
||||
f("; offline")
|
||||
|
@@ -251,9 +251,10 @@ type PeerStatus struct {
|
||||
PrimaryRoutes *views.Slice[netip.Prefix] `json:",omitempty"`
|
||||
|
||||
// Endpoints:
|
||||
Addrs []string
|
||||
CurAddr string // one of Addrs, or unique if roaming
|
||||
Relay string // DERP region
|
||||
Addrs []string
|
||||
CurAddr string // one of Addrs, or unique if roaming
|
||||
Relay string // DERP region
|
||||
PeerRelay string // peer relay address (ip:port:vni)
|
||||
|
||||
RxBytes int64
|
||||
TxBytes int64
|
||||
@@ -451,6 +452,9 @@ func (sb *StatusBuilder) AddPeer(peer key.NodePublic, st *PeerStatus) {
|
||||
if v := st.Relay; v != "" {
|
||||
e.Relay = v
|
||||
}
|
||||
if v := st.PeerRelay; v != "" {
|
||||
e.PeerRelay = v
|
||||
}
|
||||
if v := st.UserID; v != 0 {
|
||||
e.UserID = v
|
||||
}
|
||||
|
@@ -1961,10 +1961,11 @@ func (de *endpoint) populatePeerStatus(ps *ipnstate.PeerStatus) {
|
||||
ps.Active = now.Sub(de.lastSendExt) < sessionActiveTimeout
|
||||
|
||||
if udpAddr, derpAddr, _ := de.addrForSendLocked(now); udpAddr.ap.IsValid() && !derpAddr.IsValid() {
|
||||
// TODO(jwhited): if udpAddr.vni.isSet() we are using a Tailscale client
|
||||
// as a UDP relay; update PeerStatus and its interpretation by
|
||||
// "tailscale status" to make this clear.
|
||||
ps.CurAddr = udpAddr.String()
|
||||
if udpAddr.vni.isSet() {
|
||||
ps.PeerRelay = udpAddr.String()
|
||||
} else {
|
||||
ps.CurAddr = udpAddr.String()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -3437,7 +3437,7 @@ func (c *Conn) onNodeMutationsUpdate(update NodeMutationsUpdate) {
|
||||
}
|
||||
}
|
||||
|
||||
// UpdateStatus implements the interface nede by ipnstate.StatusBuilder.
|
||||
// UpdateStatus implements the interface needed by ipnstate.StatusBuilder.
|
||||
//
|
||||
// This method adds in the magicsock-specific information only. Most
|
||||
// of the status is otherwise populated by LocalBackend.
|
||||
|
Reference in New Issue
Block a user