mirror of
https://github.com/tailscale/tailscale.git
synced 2025-08-20 01:47:33 +00:00
wgengine/magicsock: enable setting relay epAddr's as bestAddr (#16229)
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>
This commit is contained in:
36
wgengine/magicsock/peermap_test.go
Normal file
36
wgengine/magicsock/peermap_test.go
Normal file
@@ -0,0 +1,36 @@
|
||||
// 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)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user