(pingResult *ipnstate.PingResult, node *Node, derpMap *tailcfg.DERPMap)
| 156 | } |
| 157 | |
| 158 | func ExtractPreferredDERPName(pingResult *ipnstate.PingResult, node *Node, derpMap *tailcfg.DERPMap) string { |
| 159 | // Sometimes the preferred DERP doesn't match the one we're actually |
| 160 | // connected with. Perhaps because the agent prefers a different DERP and |
| 161 | // we're using that server instead. |
| 162 | preferredDerpID := node.PreferredDERP |
| 163 | if pingResult.DERPRegionID != 0 { |
| 164 | preferredDerpID = pingResult.DERPRegionID |
| 165 | } |
| 166 | preferredDerp, ok := derpMap.Regions[preferredDerpID] |
| 167 | preferredDerpName := fmt.Sprintf("Unnamed %d", preferredDerpID) |
| 168 | if ok { |
| 169 | preferredDerpName = preferredDerp.RegionName |
| 170 | } |
| 171 | |
| 172 | return preferredDerpName |
| 173 | } |
| 174 | |
| 175 | // ExtractDERPLatency extracts a map of derp region names to their latencies |
| 176 | func ExtractDERPLatency(node *Node, derpMap *tailcfg.DERPMap) map[string]time.Duration { |
no outgoing calls