diff options
| author | Josh Bleecher Snyder <josh@tailscale.com> | 2021-09-16 16:50:31 -0700 |
|---|---|---|
| committer | Josh Bleecher Snyder <josh@tailscale.com> | 2021-09-17 16:47:00 -0700 |
| commit | c7b75465871eb911df4e1ff91a57b9c91c279111 (patch) | |
| tree | 0b7975a92a5f53ad27ee78525ae4e5660d34c7fe /types/netmap | |
| parent | b14db5d943b84be3c9f3a909c18c9af4012523dd (diff) | |
| download | tailscale-josh/immutable-views.tar.xz tailscale-josh/immutable-views.zip | |
WIP snapshotjosh/immutable-views
Next up: view support for maps, etc.
Diffstat (limited to 'types/netmap')
| -rw-r--r-- | types/netmap/netmap.go | 6 | ||||
| -rw-r--r-- | types/netmap/netmap_view.go | 95 |
2 files changed, 99 insertions, 2 deletions
diff --git a/types/netmap/netmap.go b/types/netmap/netmap.go index 556ed5d06..c22683819 100644 --- a/types/netmap/netmap.go +++ b/types/netmap/netmap.go @@ -5,6 +5,8 @@ // Package netmap contains the netmap.NetworkMap type. package netmap +//go:generate go run tailscale.com/cmd/viewer --type=NetworkMap --output=netmap_view.go + import ( "encoding/json" "fmt" @@ -66,8 +68,8 @@ type NetworkMap struct { // MagicDNS isn't necessarily in use). // // It will neither start nor end with a period. -func (nm *NetworkMap) MagicDNSSuffix() string { - name := strings.Trim(nm.Name, ".") +func (nm NetworkMapView) MagicDNSSuffix() string { + name := strings.Trim(nm.Name(), ".") if i := strings.Index(name, "."); i != -1 { name = name[i+1:] } diff --git a/types/netmap/netmap_view.go b/types/netmap/netmap_view.go new file mode 100644 index 000000000..2fb88292e --- /dev/null +++ b/types/netmap/netmap_view.go @@ -0,0 +1,95 @@ +// 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. + +// Code generated by the following command; DO NOT EDIT. +// tailscale.com/cmd/viewer -type NetworkMap + +package netmap + +import ( + "inet.af/netaddr" + "tailscale.com/tailcfg" + "tailscale.com/types/key" + "tailscale.com/types/wgkey" + "tailscale.com/wgengine/filter" + "time" +) + +// View makes a readonly view of NetworkMap. +func (src *NetworkMap) View() NetworkMapView { + return NetworkMapView{src} +} + +// NetworkMapView is a readonly view of NetworkMap. +type NetworkMapView struct{ ж *NetworkMap } + +func (v NetworkMapView) Valid() bool { return v.ж != nil } +func (v NetworkMapView) SelfNode() tailcfg.NodeView { return v.ж.SelfNode.View() } +func (v NetworkMapView) NodeKey() tailcfg.NodeKey { return v.ж.NodeKey } +func (v NetworkMapView) PrivateKey() wgkey.Private { return v.ж.PrivateKey } +func (v NetworkMapView) Expiry() time.Time { return v.ж.Expiry } +func (v NetworkMapView) Name() string { return v.ж.Name } +func (v NetworkMapView) Addresses() []netaddr.IPPrefix { return v.ж.Addresses } +func (v NetworkMapView) LocalPort() uint16 { return v.ж.LocalPort } +func (v NetworkMapView) MachineStatus() tailcfg.MachineStatus { return v.ж.MachineStatus } +func (v NetworkMapView) MachineKey() key.MachinePublic { return v.ж.MachineKey } + +type _NetworkMapView_Peers []*tailcfg.Node + +func (s _NetworkMapView_Peers) Len() int { return len(s) } +func (s _NetworkMapView_Peers) At(i int) tailcfg.NodeView { return s[i].View() } +func (v NetworkMapView) Peers() interface { + Len() int + At(int) tailcfg.NodeView +} { + return _NetworkMapView_Peers(v.ж.Peers) +} +func (v NetworkMapView) DNS() tailcfg.DNSConfigView { return v.ж.DNS.View() } +func (v NetworkMapView) Hostinfo() tailcfg.HostinfoView { return v.ж.Hostinfo.View() } + +type _NetworkMapView_PacketFilter []filter.Match + +func (s _NetworkMapView_PacketFilter) Len() int { return len(s) } +func (s _NetworkMapView_PacketFilter) At(i int) filter.MatchView { return s[i].View() } +func (v NetworkMapView) PacketFilter() interface { + Len() int + At(int) filter.MatchView +} { + return _NetworkMapView_PacketFilter(v.ж.PacketFilter) +} +func (v NetworkMapView) CollectServices() bool { return v.ж.CollectServices } +func (v NetworkMapView) DERPMap() tailcfg.DERPMapView { return v.ж.DERPMap.View() } +func (v NetworkMapView) Debug() *tailcfg.Debug { + ptr := v.ж.Debug + if ptr == nil { + return nil + } + cp := *ptr + return &cp +} +func (v NetworkMapView) User() tailcfg.UserID { return v.ж.User } +func (v NetworkMapView) Domain() string { return v.ж.Domain } + +// A compilation failure here means this code must be regenerated, with the command at the top of this file. +var _NetworkMapViewNeedsRegeneration = NetworkMap(struct { + SelfNode *tailcfg.Node + NodeKey tailcfg.NodeKey + PrivateKey wgkey.Private + Expiry time.Time + Name string + Addresses []netaddr.IPPrefix + LocalPort uint16 + MachineStatus tailcfg.MachineStatus + MachineKey key.MachinePublic + Peers []*tailcfg.Node + DNS tailcfg.DNSConfig + Hostinfo tailcfg.Hostinfo + PacketFilter []filter.Match + CollectServices bool + DERPMap *tailcfg.DERPMap + Debug *tailcfg.Debug + User tailcfg.UserID + Domain string + UserProfiles map[tailcfg.UserID]tailcfg.UserProfile +}{}) |
