mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-29 04:55:31 +00:00
wgengine, controlclient: fewer pointers in wgcfg key types
Signed-off-by: David Crawshaw <david@zentus.com>
This commit is contained in:
parent
fef2548981
commit
87334fb332
@ -42,13 +42,13 @@ type Persist struct {
|
|||||||
func (p *Persist) Pretty() string {
|
func (p *Persist) Pretty() string {
|
||||||
var mk, ok, nk wgcfg.Key
|
var mk, ok, nk wgcfg.Key
|
||||||
if !p.PrivateMachineKey.IsZero() {
|
if !p.PrivateMachineKey.IsZero() {
|
||||||
mk = *p.PrivateMachineKey.Public()
|
mk = p.PrivateMachineKey.Public()
|
||||||
}
|
}
|
||||||
if !p.OldPrivateNodeKey.IsZero() {
|
if !p.OldPrivateNodeKey.IsZero() {
|
||||||
ok = *p.OldPrivateNodeKey.Public()
|
ok = p.OldPrivateNodeKey.Public()
|
||||||
}
|
}
|
||||||
if !p.PrivateNodeKey.IsZero() {
|
if !p.PrivateNodeKey.IsZero() {
|
||||||
nk = *p.PrivateNodeKey.Public()
|
nk = p.PrivateNodeKey.Public()
|
||||||
}
|
}
|
||||||
return fmt.Sprintf("Persist{m=%v, o=%v, n=%v u=%#v}",
|
return fmt.Sprintf("Persist{m=%v, o=%v, n=%v u=%#v}",
|
||||||
mk.ShortString(), ok.ShortString(), nk.ShortString(),
|
mk.ShortString(), ok.ShortString(), nk.ShortString(),
|
||||||
@ -218,7 +218,7 @@ func (c *Direct) doLogin(ctx context.Context, t *oauth2.Token, flags LoginFlags,
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
persist.PrivateMachineKey = *mkey
|
persist.PrivateMachineKey = mkey
|
||||||
}
|
}
|
||||||
|
|
||||||
if expired {
|
if expired {
|
||||||
@ -253,13 +253,13 @@ func (c *Direct) doLogin(ctx context.Context, t *oauth2.Token, flags LoginFlags,
|
|||||||
c.logf("login keygen: %v", err)
|
c.logf("login keygen: %v", err)
|
||||||
return regen, url, err
|
return regen, url, err
|
||||||
}
|
}
|
||||||
tryingNewKey = *key
|
tryingNewKey = key
|
||||||
} else {
|
} else {
|
||||||
// Try refreshing the current key first
|
// Try refreshing the current key first
|
||||||
tryingNewKey = persist.PrivateNodeKey
|
tryingNewKey = persist.PrivateNodeKey
|
||||||
}
|
}
|
||||||
if persist.OldPrivateNodeKey != (wgcfg.PrivateKey{}) {
|
if persist.OldPrivateNodeKey != (wgcfg.PrivateKey{}) {
|
||||||
oldNodeKey = *persist.OldPrivateNodeKey.Public()
|
oldNodeKey = persist.OldPrivateNodeKey.Public()
|
||||||
}
|
}
|
||||||
|
|
||||||
if tryingNewKey == (wgcfg.PrivateKey{}) {
|
if tryingNewKey == (wgcfg.PrivateKey{}) {
|
||||||
@ -272,7 +272,7 @@ func (c *Direct) doLogin(ctx context.Context, t *oauth2.Token, flags LoginFlags,
|
|||||||
request := tailcfg.RegisterRequest{
|
request := tailcfg.RegisterRequest{
|
||||||
Version: 1,
|
Version: 1,
|
||||||
OldNodeKey: tailcfg.NodeKey(oldNodeKey),
|
OldNodeKey: tailcfg.NodeKey(oldNodeKey),
|
||||||
NodeKey: tailcfg.NodeKey(*tryingNewKey.Public()),
|
NodeKey: tailcfg.NodeKey(tryingNewKey.Public()),
|
||||||
Hostinfo: c.hostinfo,
|
Hostinfo: c.hostinfo,
|
||||||
Followup: url,
|
Followup: url,
|
||||||
}
|
}
|
||||||
@ -412,7 +412,7 @@ func (c *Direct) PollNetMap(ctx context.Context, maxPolls int, cb func(*NetworkM
|
|||||||
request := tailcfg.MapRequest{
|
request := tailcfg.MapRequest{
|
||||||
Version: 4,
|
Version: 4,
|
||||||
KeepAlive: c.keepAlive,
|
KeepAlive: c.keepAlive,
|
||||||
NodeKey: tailcfg.NodeKey(*persist.PrivateNodeKey.Public()),
|
NodeKey: tailcfg.NodeKey(persist.PrivateNodeKey.Public()),
|
||||||
Endpoints: ep,
|
Endpoints: ep,
|
||||||
Stream: allowStream,
|
Stream: allowStream,
|
||||||
Hostinfo: hostinfo,
|
Hostinfo: hostinfo,
|
||||||
@ -510,7 +510,7 @@ func (c *Direct) PollNetMap(ctx context.Context, maxPolls int, cb func(*NetworkM
|
|||||||
}
|
}
|
||||||
|
|
||||||
nm := &NetworkMap{
|
nm := &NetworkMap{
|
||||||
NodeKey: tailcfg.NodeKey(*persist.PrivateNodeKey.Public()),
|
NodeKey: tailcfg.NodeKey(persist.PrivateNodeKey.Public()),
|
||||||
PrivateKey: persist.PrivateNodeKey,
|
PrivateKey: persist.PrivateNodeKey,
|
||||||
Expiry: resp.Node.KeyExpiry,
|
Expiry: resp.Node.KeyExpiry,
|
||||||
Addresses: resp.Node.Addresses,
|
Addresses: resp.Node.Addresses,
|
||||||
@ -652,5 +652,5 @@ func loadServerKey(ctx context.Context, httpc *http.Client, serverURL string) (w
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return wgcfg.Key{}, fmt.Errorf("fetch control key: %v", err)
|
return wgcfg.Key{}, fmt.Errorf("fetch control key: %v", err)
|
||||||
}
|
}
|
||||||
return *key, nil
|
return key, nil
|
||||||
}
|
}
|
||||||
|
4
go.mod
4
go.mod
@ -11,8 +11,8 @@ require (
|
|||||||
github.com/mdlayher/netlink v1.1.0
|
github.com/mdlayher/netlink v1.1.0
|
||||||
github.com/pborman/getopt v0.0.0-20190409184431-ee0cd42419d3
|
github.com/pborman/getopt v0.0.0-20190409184431-ee0cd42419d3
|
||||||
github.com/tailscale/hujson v0.0.0-20190930033718-5098e564d9b3
|
github.com/tailscale/hujson v0.0.0-20190930033718-5098e564d9b3
|
||||||
github.com/tailscale/wireguard-go v0.0.0-20200208214841-2981baf46731
|
github.com/tailscale/wireguard-go v0.0.0-20200211020303-f39bc8eeee1b
|
||||||
golang.org/x/crypto v0.0.0-20200208060501-ecb85df21340
|
golang.org/x/crypto v0.0.0-20200210222208-86ce3cb69678
|
||||||
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
|
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
|
||||||
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5
|
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5
|
||||||
gortc.io/stun v1.22.1
|
gortc.io/stun v1.22.1
|
||||||
|
4
go.sum
4
go.sum
@ -33,12 +33,16 @@ github.com/tailscale/wireguard-go v0.0.0-20200208161837-3cd0a483944a h1:vIyObUBv
|
|||||||
github.com/tailscale/wireguard-go v0.0.0-20200208161837-3cd0a483944a/go.mod h1:JPm5cTfu1K+qDFRbiHy0sOlHUylYQbpl356sdYFD8V4=
|
github.com/tailscale/wireguard-go v0.0.0-20200208161837-3cd0a483944a/go.mod h1:JPm5cTfu1K+qDFRbiHy0sOlHUylYQbpl356sdYFD8V4=
|
||||||
github.com/tailscale/wireguard-go v0.0.0-20200208214841-2981baf46731 h1:sNmny/5pHqHdm081Fx8rcNFnwt0zTGuee/0+Jz+tXCA=
|
github.com/tailscale/wireguard-go v0.0.0-20200208214841-2981baf46731 h1:sNmny/5pHqHdm081Fx8rcNFnwt0zTGuee/0+Jz+tXCA=
|
||||||
github.com/tailscale/wireguard-go v0.0.0-20200208214841-2981baf46731/go.mod h1:JPm5cTfu1K+qDFRbiHy0sOlHUylYQbpl356sdYFD8V4=
|
github.com/tailscale/wireguard-go v0.0.0-20200208214841-2981baf46731/go.mod h1:JPm5cTfu1K+qDFRbiHy0sOlHUylYQbpl356sdYFD8V4=
|
||||||
|
github.com/tailscale/wireguard-go v0.0.0-20200211020303-f39bc8eeee1b h1:99LOgoPy0PcmT+yg1HiPJXk/aV/KWeGGh4WtSVB7noM=
|
||||||
|
github.com/tailscale/wireguard-go v0.0.0-20200211020303-f39bc8eeee1b/go.mod h1:JPm5cTfu1K+qDFRbiHy0sOlHUylYQbpl356sdYFD8V4=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
golang.org/x/crypto v0.0.0-20200206161412-a0c6ece9d31a h1:aczoJ0HPNE92XKa7DrIzkNN6esOKO2TBwiiYoKcINhA=
|
golang.org/x/crypto v0.0.0-20200206161412-a0c6ece9d31a h1:aczoJ0HPNE92XKa7DrIzkNN6esOKO2TBwiiYoKcINhA=
|
||||||
golang.org/x/crypto v0.0.0-20200206161412-a0c6ece9d31a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200206161412-a0c6ece9d31a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/crypto v0.0.0-20200208060501-ecb85df21340 h1:KOcEaR10tFr7gdJV2GCKw8Os5yED1u1aOqHjOAb6d2Y=
|
golang.org/x/crypto v0.0.0-20200208060501-ecb85df21340 h1:KOcEaR10tFr7gdJV2GCKw8Os5yED1u1aOqHjOAb6d2Y=
|
||||||
golang.org/x/crypto v0.0.0-20200208060501-ecb85df21340/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200208060501-ecb85df21340/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
|
golang.org/x/crypto v0.0.0-20200210222208-86ce3cb69678 h1:wCWoJcFExDgyYx2m2hpHgwz8W3+FPdfldvIgzqDIhyg=
|
||||||
|
golang.org/x/crypto v0.0.0-20200210222208-86ce3cb69678/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
|
@ -667,6 +667,26 @@ func (a *AddrSet) String() string {
|
|||||||
return buf.String()
|
return buf.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *AddrSet) Addrs() []wgcfg.Endpoint {
|
||||||
|
var eps []wgcfg.Endpoint
|
||||||
|
for _, addr := range a.addrs {
|
||||||
|
eps = append(eps, wgcfg.Endpoint{
|
||||||
|
Host: addr.IP.String(),
|
||||||
|
Port: uint16(addr.Port),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
a.mu.Lock()
|
||||||
|
defer a.mu.Unlock()
|
||||||
|
if a.roamAddr != nil {
|
||||||
|
eps = append(eps, wgcfg.Endpoint{
|
||||||
|
Host: a.roamAddr.IP.String(),
|
||||||
|
Port: uint16(a.roamAddr.Port),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return eps
|
||||||
|
}
|
||||||
|
|
||||||
func (c *Conn) CreateEndpoint(key [32]byte, s string) (device.Endpoint, error) {
|
func (c *Conn) CreateEndpoint(key [32]byte, s string) (device.Endpoint, error) {
|
||||||
pk := wgcfg.Key(key)
|
pk := wgcfg.Key(key)
|
||||||
log.Printf("magicsock: CreateEndpoint: key=%s: %s", pk.ShortString(), s)
|
log.Printf("magicsock: CreateEndpoint: key=%s: %s", pk.ShortString(), s)
|
||||||
@ -723,6 +743,12 @@ func (e *singleEndpoint) DstToBytes() []byte {
|
|||||||
func (e *singleEndpoint) UpdateDst(dst *net.UDPAddr) error {
|
func (e *singleEndpoint) UpdateDst(dst *net.UDPAddr) error {
|
||||||
return fmt.Errorf("magicsock.singleEndpoint(%s).UpdateDst(%s): should never be called", (*net.UDPAddr)(e), dst)
|
return fmt.Errorf("magicsock.singleEndpoint(%s).UpdateDst(%s): should never be called", (*net.UDPAddr)(e), dst)
|
||||||
}
|
}
|
||||||
|
func (e *singleEndpoint) Addrs() []wgcfg.Endpoint {
|
||||||
|
return []wgcfg.Endpoint{{
|
||||||
|
Host: e.IP.String(),
|
||||||
|
Port: uint16(e.Port),
|
||||||
|
}}
|
||||||
|
}
|
||||||
|
|
||||||
// RebindingUDPConn is a UDP socket that can be re-bound.
|
// RebindingUDPConn is a UDP socket that can be re-bound.
|
||||||
// Unix has no notion of re-binding a socket, so we swap it out for a new one.
|
// Unix has no notion of re-binding a socket, so we swap it out for a new one.
|
||||||
|
@ -356,9 +356,9 @@ func (e *userspaceEngine) getStatus() (*Status, error) {
|
|||||||
log.Fatalf("IpcGetOperation: invalid key %#v\n", v)
|
log.Fatalf("IpcGetOperation: invalid key %#v\n", v)
|
||||||
}
|
}
|
||||||
p = &PeerStatus{}
|
p = &PeerStatus{}
|
||||||
pp[*pk] = p
|
pp[pk] = p
|
||||||
|
|
||||||
key := tailcfg.NodeKey(*pk)
|
key := tailcfg.NodeKey(pk)
|
||||||
p.NodeKey = key
|
p.NodeKey = key
|
||||||
case "rx_bytes":
|
case "rx_bytes":
|
||||||
n, err = strconv.ParseInt(v, 10, 64)
|
n, err = strconv.ParseInt(v, 10, 64)
|
||||||
|
Loading…
Reference in New Issue
Block a user