mirror of
https://github.com/tailscale/tailscale.git
synced 2024-12-01 14:05:39 +00:00
aacb2107ae
magicsock.Conn.ParseEndpoint requires a peer's public key, disco key, and legacy ip/ports in order to do its job. We currently accomplish that by: * adding the public key in our wireguard-go fork * encoding the disco key as magic hostname * using a bespoke comma-separated encoding It's a bit messy. Instead, switch to something simpler: use a json-encoded struct containing exactly the information we need, in the form we use it. Our wireguard-go fork still adds the public key to the address when it passes it to ParseEndpoint, but now the code compensating for that is just a couple of simple, well-commented lines. Once this commit is in, we can remove that part of the fork and remove the compensating code. Signed-off-by: Josh Bleecher Snyder <josharian@gmail.com>
56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
// Copyright (c) 2021 Tailscale Inc & AUTHORS All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package wgcfg
|
|
|
|
import (
|
|
"reflect"
|
|
"runtime"
|
|
"testing"
|
|
)
|
|
|
|
func noError(t *testing.T, err error) bool {
|
|
if err == nil {
|
|
return true
|
|
}
|
|
_, fn, line, _ := runtime.Caller(1)
|
|
t.Errorf("Error at %s:%d: %#v", fn, line, err)
|
|
return false
|
|
}
|
|
|
|
func equal(t *testing.T, expected, actual interface{}) bool {
|
|
if reflect.DeepEqual(expected, actual) {
|
|
return true
|
|
}
|
|
_, fn, line, _ := runtime.Caller(1)
|
|
t.Errorf("Failed equals at %s:%d\nactual %#v\nexpected %#v", fn, line, actual, expected)
|
|
return false
|
|
}
|
|
|
|
func TestParseEndpoint(t *testing.T) {
|
|
_, _, err := parseEndpoint("[192.168.42.0:]:51880")
|
|
if err == nil {
|
|
t.Error("Error was expected")
|
|
}
|
|
host, port, err := parseEndpoint("192.168.42.0:51880")
|
|
if noError(t, err) {
|
|
equal(t, "192.168.42.0", host)
|
|
equal(t, uint16(51880), port)
|
|
}
|
|
host, port, err = parseEndpoint("test.wireguard.com:18981")
|
|
if noError(t, err) {
|
|
equal(t, "test.wireguard.com", host)
|
|
equal(t, uint16(18981), port)
|
|
}
|
|
host, port, err = parseEndpoint("[2607:5300:60:6b0::c05f:543]:2468")
|
|
if noError(t, err) {
|
|
equal(t, "2607:5300:60:6b0::c05f:543", host)
|
|
equal(t, uint16(2468), port)
|
|
}
|
|
_, _, err = parseEndpoint("[::::::invalid:18981")
|
|
if err == nil {
|
|
t.Error("Error was expected")
|
|
}
|
|
}
|