tailcfg: add RegisterRequest.Copy

Add some docs while I'm here.

Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
pull/75/head
David Crawshaw 5 years ago
parent 47da432991
commit a23a0d9c9f

@ -239,8 +239,12 @@ func (h *Hostinfo) Equal(h2 *Hostinfo) bool {
return reflect.DeepEqual(h, h2) return reflect.DeepEqual(h, h2)
} }
// RegisterRequest is sent by a client to register the key for a node.
// It is encoded to JSON, encrypted with golang.org/x/crypto/nacl/box,
// using the local machine key, and sent to:
// https://login.tailscale.com/machine/<mkey hex>
type RegisterRequest struct { type RegisterRequest struct {
Version int Version int // currently 1
NodeKey NodeKey NodeKey NodeKey
OldNodeKey NodeKey OldNodeKey NodeKey
Auth struct { Auth struct {
@ -254,6 +258,19 @@ type RegisterRequest struct {
Hostinfo Hostinfo Hostinfo Hostinfo
} }
// Copy makes a deep copy of RegisterRequest.
// The result aliases no memory with the original.
func (req *RegisterRequest) Copy() *RegisterRequest {
res := *req
res.Hostinfo = *res.Hostinfo.Copy()
if res.Auth.Oauth2Token != nil {
tok := *res.Auth.Oauth2Token
res.Auth.Oauth2Token = &tok
}
return &res
}
// RegisterResponse is returned by the server in response to a RegisterRequest.
type RegisterResponse struct { type RegisterResponse struct {
User User User User
Login Login Login Login
@ -262,13 +279,20 @@ type RegisterResponse struct {
AuthURL string // if set, authorization pending AuthURL string // if set, authorization pending
} }
// MapRequest is sent by a client to start a long-poll network map updates.
// The request includes a copy of the client's current set of WireGuard
// endpoints and general host information.
//
// The request is encoded to JSON, encrypted with golang.org/x/crypto/nacl/box,
// using the local machine key, and sent to:
// https://login.tailscale.com/machine/<mkey hex>/map
type MapRequest struct { type MapRequest struct {
Version int // current version is 4 Version int // current version is 4
Compress string // "zstd" or "" (no compression) Compress string // "zstd" or "" (no compression)
KeepAlive bool // server sends keep-alives KeepAlive bool // server sends keep-alives
NodeKey NodeKey NodeKey NodeKey
Endpoints []string Endpoints []string
Stream bool Stream bool // if true, multiple MapResponse objects are returned
Hostinfo Hostinfo Hostinfo Hostinfo
} }

Loading…
Cancel
Save