mirror of
https://github.com/tailscale/tailscale.git
synced 2025-12-23 17:16:29 +00:00
net/udprelay: implement Server.SetStaticAddrPorts (#17909)
Only used in tests for now. Updates tailscale/corp#31489 Signed-off-by: Jordan Whited <jordan@tailscale.com>
This commit is contained in:
@@ -17,6 +17,7 @@ import (
|
||||
"tailscale.com/disco"
|
||||
"tailscale.com/net/packet"
|
||||
"tailscale.com/types/key"
|
||||
"tailscale.com/types/views"
|
||||
)
|
||||
|
||||
type testClient struct {
|
||||
@@ -185,31 +186,40 @@ func TestServer(t *testing.T) {
|
||||
|
||||
cases := []struct {
|
||||
name string
|
||||
overrideAddrs []netip.Addr
|
||||
staticAddrs []netip.Addr
|
||||
forceClientsMixedAF bool
|
||||
}{
|
||||
{
|
||||
name: "over ipv4",
|
||||
overrideAddrs: []netip.Addr{netip.MustParseAddr("127.0.0.1")},
|
||||
name: "over ipv4",
|
||||
staticAddrs: []netip.Addr{netip.MustParseAddr("127.0.0.1")},
|
||||
},
|
||||
{
|
||||
name: "over ipv6",
|
||||
overrideAddrs: []netip.Addr{netip.MustParseAddr("::1")},
|
||||
name: "over ipv6",
|
||||
staticAddrs: []netip.Addr{netip.MustParseAddr("::1")},
|
||||
},
|
||||
{
|
||||
name: "mixed address families",
|
||||
overrideAddrs: []netip.Addr{netip.MustParseAddr("127.0.0.1"), netip.MustParseAddr("::1")},
|
||||
staticAddrs: []netip.Addr{netip.MustParseAddr("127.0.0.1"), netip.MustParseAddr("::1")},
|
||||
forceClientsMixedAF: true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range cases {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
server, err := NewServer(t.Logf, 0, tt.overrideAddrs)
|
||||
server, err := NewServer(t.Logf, 0, true)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer server.Close()
|
||||
addrPorts := make([]netip.AddrPort, 0, len(tt.staticAddrs))
|
||||
for _, addr := range tt.staticAddrs {
|
||||
if addr.Is4() {
|
||||
addrPorts = append(addrPorts, netip.AddrPortFrom(addr, server.uc4Port))
|
||||
} else if server.uc6Port != 0 {
|
||||
addrPorts = append(addrPorts, netip.AddrPortFrom(addr, server.uc6Port))
|
||||
}
|
||||
}
|
||||
server.SetStaticAddrPorts(views.SliceOf(addrPorts))
|
||||
|
||||
endpoint, err := server.AllocateEndpoint(discoA.Public(), discoB.Public())
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user