mirror of
https://github.com/tailscale/tailscale.git
synced 2025-06-23 00:28:43 +00:00

relayManager can now hand endpoint a relay epAddr for it to consider as bestAddr. endpoint and Conn disco ping/pong handling are now VNI-aware. Updates tailscale/corp#27502 Updates tailscale/corp#29422 Signed-off-by: Jordan Whited <jordan@tailscale.com>
37 lines
953 B
Go
37 lines
953 B
Go
// Copyright (c) Tailscale Inc & AUTHORS
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
package magicsock
|
|
|
|
import (
|
|
"net/netip"
|
|
"testing"
|
|
|
|
"tailscale.com/types/key"
|
|
)
|
|
|
|
func Test_peerMap_oneRelayEpAddrPerNK(t *testing.T) {
|
|
pm := newPeerMap()
|
|
nk := key.NewNode().Public()
|
|
ep := &endpoint{
|
|
nodeID: 1,
|
|
publicKey: nk,
|
|
}
|
|
ed := &endpointDisco{key: key.NewDisco().Public()}
|
|
ep.disco.Store(ed)
|
|
pm.upsertEndpoint(ep, key.DiscoPublic{})
|
|
vni := virtualNetworkID{}
|
|
vni.set(1)
|
|
relayEpAddrA := epAddr{ap: netip.MustParseAddrPort("127.0.0.1:1"), vni: vni}
|
|
relayEpAddrB := epAddr{ap: netip.MustParseAddrPort("127.0.0.1:2"), vni: vni}
|
|
pm.setNodeKeyForEpAddr(relayEpAddrA, nk)
|
|
pm.setNodeKeyForEpAddr(relayEpAddrB, nk)
|
|
if len(pm.byEpAddr) != 1 {
|
|
t.Fatalf("expected 1 epAddr in byEpAddr, got: %d", len(pm.byEpAddr))
|
|
}
|
|
got := pm.relayEpAddrByNodeKey[nk]
|
|
if got != relayEpAddrB {
|
|
t.Fatalf("expected relay epAddr %v, got: %v", relayEpAddrB, got)
|
|
}
|
|
}
|