summaryrefslogtreecommitdiffhomepage
path: root/control/controlclient/direct.go
AgeCommit message (Collapse)AuthorFilesLines
2021-05-16all: adapt to opaque netaddr typesJosh Bleecher Snyder1-3/+3
This commit is a mishmash of automated edits using gofmt: gofmt -r 'netaddr.IPPort{IP: a, Port: b} -> netaddr.IPPortFrom(a, b)' -w . gofmt -r 'netaddr.IPPrefix{IP: a, Port: b} -> netaddr.IPPrefixFrom(a, b)' -w . gofmt -r 'a.IP.Is4 -> a.IP().Is4' -w . gofmt -r 'a.IP.As16 -> a.IP().As16' -w . gofmt -r 'a.IP.Is6 -> a.IP().Is6' -w . gofmt -r 'a.IP.As4 -> a.IP().As4' -w . gofmt -r 'a.IP.String -> a.IP().String' -w . And regexps: \w*(.*)\.Port = (.*) -> $1 = $1.WithPort($2) \w*(.*)\.IP = (.*) -> $1 = $1.WithIP($2) And lots of manual fixups. Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
2021-05-12controlclient: update Persist.LoginName when it changes.Avery Pennarun1-2/+2
Well, that was anticlimactic. Fixes tailscale/corp#461. Signed-off-by: Avery Pennarun <apenwarr@tailscale.com>
2021-04-30controlclient: extract a Client interface and rename Client->Auto.Avery Pennarun1-7/+0
This will let us create a mock or fake Client implementation for use with ipn.Backend. Signed-off-by: Avery Pennarun <apenwarr@tailscale.com>
2021-04-22control/controlclient: fix signRegisterRequest log suppression check on WindowsBrad Fitzpatrick1-1/+1
Fixes #1774 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-04-21control/controlclient, tailcfg: add Debug.SleepSeconds (mapver 19)Brad Fitzpatrick1-4/+41
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-04-19tailcfg, control/controlclient: accept nil MapResponse.Node (mapver 18)Brad Fitzpatrick1-0/+4
All MapResponse fields can not be omitted and are tagged "omitempty". Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-04-18control/controlclient: add start of some MapResponse->NetworkMap testsBrad Fitzpatrick1-2/+1
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-04-18control/controlclient: break direct.go into map.go (+tests), add mapSessionBrad Fitzpatrick1-212/+26
So the NetworkMap-from-incremental-MapResponses can be tested easily. And because direct.go was getting too big. No change in behavior at this point. Just movement. Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-04-16ipn/ipnlocal, etc: require file sharing capability to send/recv filesBrad Fitzpatrick1-0/+5
tailscale/corp#1582 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-04-15tailcfg, control/controlclient: (mapver 16) add Node.Online, ↵Brad Fitzpatrick1-34/+42
MapResponse.OnlineChange And fix PeerSeenChange bug where it was ignored unless there were other peer changes. Updates tailscale/corp#1574 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-04-15control/controlclient: only use a single DNS label as the hostname.David Anderson1-0/+2
Fixes #971 Signed-off-by: David Anderson <danderson@tailscale.com>
2021-04-13tailcfg: add Endpoint, EndpointType, MapRequest.EndpointTypeBrad Fitzpatrick1-18/+28
Track endpoints internally with a new tailcfg.Endpoint type that includes a typed netaddr.IPPort (instead of just a string) and includes a type for how that endpoint was discovered (STUN, local, etc). Use []tailcfg.Endpoint instead of []string internally. At the last second, send it to the control server as the existing []string for endpoints, but also include a new parallel MapRequest.EndpointType []tailcfg.EndpointType, so the control server can start filtering out less-important endpoint changes from new-enough clients. Notably, STUN-discovered endpoints can be filtered out from 1.6+ clients, as they can discover them amongst each other via CallMeMaybe disco exchanges started over DERP. And STUN endpoints change a lot, causing a lot of MapResposne updates. But portmapped endpoints are worth keeping for now, as they they work right away without requiring the firewall traversal extra RTT dance. End result will be less control->client bandwidth. (despite negligible increase in client->control bandwidth) Updates tailscale/corp#1543 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-04-12tailcfg, control/controlclient: make nil MapResponse.DNSConfig mean ↵Brad Fitzpatrick1-1/+5
unchanged (mapver15) Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-04-10control/controlclient: create tls client config with server hostname instead ↵Simon Kirillov1-1/+1
of serverURL.Host Signed-off-by: Simon Kirillov <svkirillov3@gmail.com>
2021-04-09ipn/{ipnlocal,localapi}, cmd/tailscale: add logout commandBrad Fitzpatrick1-23/+50
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-04-07control/controlclient: refactor some internalsBrad Fitzpatrick1-22/+30
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-03-31cmd/tailscale, ipn/localapi: move IP forwarding check to tailscaled, APIBrad Fitzpatrick1-1/+14
Instead of having the CLI check whether IP forwarding is enabled, ask tailscaled. It has a better idea. If it's netstack, for instance, the sysctl values don't matter. And it's possible that only the daemon has permission to know. Fixes #1626 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-03-31control/controlclient: support lazy machine key generationBrad Fitzpatrick1-31/+43
It's not done in the caller yet, but the controlclient does it now. Updates #1573 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-03-31control/controlclient: document a few thingsBrad Fitzpatrick1-2/+5
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-03-29control/controlclient: fix TS_DEBUG_MAP on requestsBrad Fitzpatrick1-1/+1
The concrete type being encoded changed from a value to pointer earlier and this was never adjusted. (People don't frequently use TS_DEBUG_MAP to see requests, so it went unnoticed until now.) Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-03-26control/controlclient: sign RegisterRequest (#1549)Adrian Dewhurst1-0/+16
control/controlclient: sign RegisterRequest Some customers wish to verify eligibility for devices to join their tailnets using machine identity certificates. TLS client certs could potentially fulfill this role but the initial customer for this feature has technical requirements that prevent their use. Instead, the certificate is loaded from the Windows local machine certificate store and uses its RSA public key to sign the RegisterRequest message. There is room to improve the flexibility of this feature in future and it is currently only tested on Windows (although Darwin theoretically works too), but this offers a reasonable starting place for now. Updates tailscale/coral#6 Signed-off-by: Adrian Dewhurst <adrian@tailscale.com>
2021-03-19control, ipn, tailcfg: remove golang.org/x/oauth2 dep, add tailcfg.Oauth2TokenBrad Fitzpatrick1-4/+3
golang.org/x/oauth2 pulls in App Engine and grpc module dependencies, screwing up builds that depend on this module. Some background on the problem: https://go.googlesource.com/proposal/+/master/design/36460-lazy-module-loading.md Fixes tailscale/corp#1471 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-03-15wgengine/router: report to control when setPrivateNetwork failsBrad Fitzpatrick1-0/+3
Fixes #1503 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-03-15health, controlclient, ipn, magicsock: tell health package state of thingsBrad Fitzpatrick1-1/+7
Not yet checking anything. Just plumbing states into the health package. Updates #1505 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-03-11control/controlclient: allow for an unset linkMon.David Anderson1-1/+1
Signed-off-by: David Anderson <danderson@tailscale.com>
2021-03-11control/controlclient: report broken IP forwarding more precisely.David Anderson1-2/+16
IP forwarding is not required when advertising a machine's local IPs over Tailscale. Fixes #1435. Signed-off-by: David Anderson <danderson@tailscale.com>
2021-03-05tailcfg, control/controlclient: add MapResponse.PingRequestBrad Fitzpatrick1-0/+30
So the control server can test whether a client's actually present. Most clients are over HTTP/2, so these pings (to the same host) are super cheap. This mimics the earlier goroutine dump mechanism. Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-03-04ipn/ipnlocal, control/controlclient: propagate link monitor to controlclientBrad Fitzpatrick1-0/+4
Don't use it yet, but get it down there. Updates #1455 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-03-03tailcfg, control/controlclient: add goroutine dump debug featureBrad Fitzpatrick1-0/+3
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-03-01control/controlclient, net/{dnscache,dnsfallback}: add DNS fallback mechanismBrad Fitzpatrick1-3/+6
Updates #1405 Updates #1403 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-02-18health, control/controlclient, wgengine: report when router unhealthyBrad Fitzpatrick1-1/+9
Updates tailscale/corp#1338 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-02-15control/controlclient: note package type in HostinfoBrad Fitzpatrick1-0/+16
Fixes tailscale/corp#440 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-02-05types/netmap: split controlclient.NetworkMap off into its own leaf packageBrad Fitzpatrick1-3/+4
Updates #1278 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-02-05types/persist: split controlclient.Persist into a small leaf packageBrad Fitzpatrick1-63/+5
This one alone doesn't modify the global dependency map much (depaware.txt if anything looks slightly worse), but it leave controlclient as only containing NetworkMap: bradfitz@tsdev:~/src/tailscale.com/ipn$ grep -F "controlclient." *.go backend.go: NetMap *controlclient.NetworkMap // new netmap received fake_test.go: b.notify(Notify{NetMap: &controlclient.NetworkMap{}}) fake_test.go: b.notify(Notify{NetMap: &controlclient.NetworkMap{}}) handle.go: netmapCache *controlclient.NetworkMap handle.go:func (h *Handle) NetMap() *controlclient.NetworkMap { Once that goes into a leaf package, then ipn doesn't depend on controlclient at all, and then the client gets smaller. Updates #1278
2021-02-04control/controlclient: avoid crash sending map request with zero node keyBrad Fitzpatrick1-0/+3
Fixes #1271 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-01-27tailcfg: update node display name fields and methods (#1207)Sonia Appasamy1-7/+4
Signed-off-by: Sonia Appasamy <sonia@tailscale.com> Consolidates the node display name logic from each of the clients into tailcfg.Node. UI clients can use these names directly, rather than computing them independently.
2021-01-25tailcfg, controlclient: add DisplayName field to tailcfg.Node and populate ↵Sonia Appasamy1-0/+7
it from controlclient (#1191) Signed-off-by: Sonia Appasamy <sonia@tailscale.com>
2021-01-20control/controlclient: add debug knob to not use control's endpointsBrad Fitzpatrick1-8/+18
2021-01-20tailcfg, control/controlclient: add mapver 10: MapResponse.PeerSeenChangeBrad Fitzpatrick1-0/+18
This adds a more wire-efficient way of updating peers' Node.LastSeen times. Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-01-13control/controlclient: let clients opt in to Sharer-vs-User split modelBrad Fitzpatrick1-33/+32
Updates tailscale/corp#1183
2021-01-12control/controlclient: treat node sharer as owner for display purposesBrad Fitzpatrick1-0/+14
This make clients (macOS, Windows, tailscale status) show the node sharer's profile rather than the node owner (which may be anonymized). Updates #992
2021-01-12tailcfg, control/controlclient: make MapResponse.CollectServices an opt.BoolBrad Fitzpatrick1-1/+6
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-01-11ipn: only send services in Hostinfo if Tailnet has opted-in to services ↵Sonia Appasamy1-16/+17
collection (#1107) Signed-off-by: Sonia Appasamy <sonia@tailscale.com>
2021-01-08control/controlclient: use lite map request handler to avoid aborting streamsBrad Fitzpatrick1-0/+26
Previously, any change to endpoints or hostinfo (or hostinfo's netinfo) would result in the long-running map request HTTP stream being torn down and restarted, losing all compression context along with it. This change makes us instead send a lite map request (OmitPeers: true, Stream: false) that doesn't subscribe to anything, and then the coordination server knows to not close other streams for that node when it recives a lite request. Fixes tailscale/corp#797 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2021-01-05ipn: delete domainsForProxying, require explicit DNS search domains (mapver ↵Brad Fitzpatrick1-1/+1
9) (#1078) Previously the client had heuristics to calculate which DNS search domains to set, based on the peers' names. Unfortunately that prevented us from doing some things we wanted to do server-side related to node sharing. So, bump MapRequest.Version to 9 to signal that the client only uses the explicitly configured DNS search domains and doesn't augment it with its own list. Updates tailscale/corp#1026 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-12-30wgkey: new packageJosh Bleecher Snyder1-24/+24
This is a replacement for the key-related parts of the wireguard-go wgcfg package. This is almost a straight copy/paste from the wgcfg package. I have slightly changed some of the exported functions and types to avoid stutter, added and tweaked some comments, and removed some now-unused code. To avoid having wireguard-go depend on this new package, wgcfg will keep its key types. We translate into and out of those types at the last minute. These few remaining uses will be eliminated alongside the rest of the wgcfg package. Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
2020-12-28all: replace wgcfg.IP and wgcfg.CIDR with netaddr typesJosh Bleecher Snyder1-13/+2
Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
2020-12-21all: annotate log verbosity levels on most egregiously spammy log printsBrad Fitzpatrick1-3/+5
Fixes #924 Fixes #282 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-12-19tailcfg: introduce map version 8, for clients that support v6 node config.David Anderson1-1/+1
For now, the server will only send v6 configuration to mapversion 8 clients as part of an early-adopter program, while we verify that the functionality is robust. Signed-off-by: David Anderson <danderson@tailscale.com>
2020-12-19control/controlclient: report broken routing for v4 and v6.David Anderson1-11/+52
Signed-off-by: David Anderson <danderson@tailscale.com>