diff options
| author | Brad Fitzpatrick <bradfitz@tailscale.com> | 2020-07-27 10:40:34 -0700 |
|---|---|---|
| committer | Brad Fitzpatrick <bradfitz@tailscale.com> | 2020-07-27 10:41:06 -0700 |
| commit | e6dbb4425ce4f0a6560b39143645dd1fbe66085b (patch) | |
| tree | ba026418dc6891b13306cacc86b84426b5aeb589 /tailcfg/tailcfg_clone.go | |
| parent | 38b0c3eea27564af92416fa2cda9ae52f9aae08a (diff) | |
| download | tailscale-clone.tar.xz tailscale-clone.zip | |
cmd/cloner, tailcfg: fix nil vs len 0 issues, add tests, use for Hostinfoclone
Also use go:generate and https://golang.org/s/generatedcode header style.
Diffstat (limited to 'tailcfg/tailcfg_clone.go')
| -rw-r--r-- | tailcfg/tailcfg_clone.go | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/tailcfg/tailcfg_clone.go b/tailcfg/tailcfg_clone.go index cc936e51f..466871bbd 100644 --- a/tailcfg/tailcfg_clone.go +++ b/tailcfg/tailcfg_clone.go @@ -2,12 +2,11 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// AUTO-GENERATED by tailscale.com/cmd/cloner -type User,Node,NetInfo +// Code generated by tailscale.com/cmd/cloner -type User,Node,Hostinfo,NetInfo; DO NOT EDIT. package tailcfg import ( - "github.com/tailscale/wireguard-go/wgcfg" "time" ) @@ -19,8 +18,8 @@ func (src *User) Clone() *User { } dst := new(User) *dst = *src - dst.Logins = append([]LoginID(nil), src.Logins...) - dst.Roles = append([]RoleID(nil), src.Roles...) + dst.Logins = append(src.Logins[:0:0], src.Logins...) + dst.Roles = append(src.Roles[:0:0], src.Roles...) return dst } @@ -32,9 +31,9 @@ func (src *Node) Clone() *Node { } dst := new(Node) *dst = *src - dst.Addresses = append([]wgcfg.CIDR(nil), src.Addresses...) - dst.AllowedIPs = append([]wgcfg.CIDR(nil), src.AllowedIPs...) - dst.Endpoints = append([]string(nil), src.Endpoints...) + dst.Addresses = append(src.Addresses[:0:0], src.Addresses...) + dst.AllowedIPs = append(src.AllowedIPs[:0:0], src.AllowedIPs...) + dst.Endpoints = append(src.Endpoints[:0:0], src.Endpoints...) dst.Hostinfo = *src.Hostinfo.Clone() if dst.LastSeen != nil { dst.LastSeen = new(time.Time) @@ -43,6 +42,21 @@ func (src *Node) Clone() *Node { return dst } +// Clone makes a deep copy of Hostinfo. +// The result aliases no memory with the original. +func (src *Hostinfo) Clone() *Hostinfo { + if src == nil { + return nil + } + dst := new(Hostinfo) + *dst = *src + dst.RoutableIPs = append(src.RoutableIPs[:0:0], src.RoutableIPs...) + dst.RequestTags = append(src.RequestTags[:0:0], src.RequestTags...) + dst.Services = append(src.Services[:0:0], src.Services...) + dst.NetInfo = src.NetInfo.Clone() + return dst +} + // Clone makes a deep copy of NetInfo. // The result aliases no memory with the original. func (src *NetInfo) Clone() *NetInfo { |
