|
|
|
@ -37,37 +37,38 @@ type CapabilityVersion int
|
|
|
|
|
// CurrentCapabilityVersion is the current capability version of the codebase.
|
|
|
|
|
//
|
|
|
|
|
// History of versions:
|
|
|
|
|
// 3: implicit compression, keep-alives
|
|
|
|
|
// 4: opt-in keep-alives via KeepAlive field, opt-in compression via Compress
|
|
|
|
|
// 5: 2020-10-19, implies IncludeIPv6, delta Peers/UserProfiles, supports MagicDNS
|
|
|
|
|
// 6: 2020-12-07: means MapResponse.PacketFilter nil means unchanged
|
|
|
|
|
// 7: 2020-12-15: FilterRule.SrcIPs accepts CIDRs+ranges, doesn't warn about 0.0.0.0/::
|
|
|
|
|
// 8: 2020-12-19: client can buggily receive IPv6 addresses and routes if beta enabled server-side
|
|
|
|
|
// 9: 2020-12-30: client doesn't auto-add implicit search domains from peers; only DNSConfig.Domains
|
|
|
|
|
// 10: 2021-01-17: client understands MapResponse.PeerSeenChange
|
|
|
|
|
// 11: 2021-03-03: client understands IPv6, multiple default routes, and goroutine dumping
|
|
|
|
|
// 12: 2021-03-04: client understands PingRequest
|
|
|
|
|
// 13: 2021-03-19: client understands FilterRule.IPProto
|
|
|
|
|
// 14: 2021-04-07: client understands DNSConfig.Routes and DNSConfig.Resolvers
|
|
|
|
|
// 15: 2021-04-12: client treats nil MapResponse.DNSConfig as meaning unchanged
|
|
|
|
|
// 16: 2021-04-15: client understands Node.Online, MapResponse.OnlineChange
|
|
|
|
|
// 17: 2021-04-18: MapResponse.Domain empty means unchanged
|
|
|
|
|
// 18: 2021-04-19: MapResponse.Node nil means unchanged (all fields now omitempty)
|
|
|
|
|
// 19: 2021-04-21: MapResponse.Debug.SleepSeconds
|
|
|
|
|
// 20: 2021-06-11: MapResponse.LastSeen used even less (https://github.com/tailscale/tailscale/issues/2107)
|
|
|
|
|
// 21: 2021-06-15: added MapResponse.DNSConfig.CertDomains
|
|
|
|
|
// 22: 2021-06-16: added MapResponse.DNSConfig.ExtraRecords
|
|
|
|
|
// 23: 2021-08-25: DNSConfig.Routes values may be empty (for ExtraRecords support in 1.14.1+)
|
|
|
|
|
// 24: 2021-09-18: MapResponse.Health from control to node; node shows in "tailscale status"
|
|
|
|
|
// 25: 2021-11-01: MapResponse.Debug.Exit
|
|
|
|
|
// 26: 2022-01-12: (nothing, just bumping for 1.20.0)
|
|
|
|
|
// 27: 2022-02-18: start of SSHPolicy being respected
|
|
|
|
|
// 28: 2022-03-09: client can communicate over Noise.
|
|
|
|
|
// 29: 2022-03-21: MapResponse.PopBrowserURL
|
|
|
|
|
// 30: 2022-03-22: client can request id tokens.
|
|
|
|
|
// 31: 2022-04-15: PingRequest & PingResponse TSMP & disco support
|
|
|
|
|
// 32: 2022-04-17: client knows FilterRule.CapMatch
|
|
|
|
|
// 33: 2022-07-20: added MapResponse.PeersChangedPatch (DERPRegion + Endpoints)
|
|
|
|
|
//
|
|
|
|
|
// 3: implicit compression, keep-alives
|
|
|
|
|
// 4: opt-in keep-alives via KeepAlive field, opt-in compression via Compress
|
|
|
|
|
// 5: 2020-10-19, implies IncludeIPv6, delta Peers/UserProfiles, supports MagicDNS
|
|
|
|
|
// 6: 2020-12-07: means MapResponse.PacketFilter nil means unchanged
|
|
|
|
|
// 7: 2020-12-15: FilterRule.SrcIPs accepts CIDRs+ranges, doesn't warn about 0.0.0.0/::
|
|
|
|
|
// 8: 2020-12-19: client can buggily receive IPv6 addresses and routes if beta enabled server-side
|
|
|
|
|
// 9: 2020-12-30: client doesn't auto-add implicit search domains from peers; only DNSConfig.Domains
|
|
|
|
|
// 10: 2021-01-17: client understands MapResponse.PeerSeenChange
|
|
|
|
|
// 11: 2021-03-03: client understands IPv6, multiple default routes, and goroutine dumping
|
|
|
|
|
// 12: 2021-03-04: client understands PingRequest
|
|
|
|
|
// 13: 2021-03-19: client understands FilterRule.IPProto
|
|
|
|
|
// 14: 2021-04-07: client understands DNSConfig.Routes and DNSConfig.Resolvers
|
|
|
|
|
// 15: 2021-04-12: client treats nil MapResponse.DNSConfig as meaning unchanged
|
|
|
|
|
// 16: 2021-04-15: client understands Node.Online, MapResponse.OnlineChange
|
|
|
|
|
// 17: 2021-04-18: MapResponse.Domain empty means unchanged
|
|
|
|
|
// 18: 2021-04-19: MapResponse.Node nil means unchanged (all fields now omitempty)
|
|
|
|
|
// 19: 2021-04-21: MapResponse.Debug.SleepSeconds
|
|
|
|
|
// 20: 2021-06-11: MapResponse.LastSeen used even less (https://github.com/tailscale/tailscale/issues/2107)
|
|
|
|
|
// 21: 2021-06-15: added MapResponse.DNSConfig.CertDomains
|
|
|
|
|
// 22: 2021-06-16: added MapResponse.DNSConfig.ExtraRecords
|
|
|
|
|
// 23: 2021-08-25: DNSConfig.Routes values may be empty (for ExtraRecords support in 1.14.1+)
|
|
|
|
|
// 24: 2021-09-18: MapResponse.Health from control to node; node shows in "tailscale status"
|
|
|
|
|
// 25: 2021-11-01: MapResponse.Debug.Exit
|
|
|
|
|
// 26: 2022-01-12: (nothing, just bumping for 1.20.0)
|
|
|
|
|
// 27: 2022-02-18: start of SSHPolicy being respected
|
|
|
|
|
// 28: 2022-03-09: client can communicate over Noise.
|
|
|
|
|
// 29: 2022-03-21: MapResponse.PopBrowserURL
|
|
|
|
|
// 30: 2022-03-22: client can request id tokens.
|
|
|
|
|
// 31: 2022-04-15: PingRequest & PingResponse TSMP & disco support
|
|
|
|
|
// 32: 2022-04-17: client knows FilterRule.CapMatch
|
|
|
|
|
// 33: 2022-07-20: added MapResponse.PeersChangedPatch (DERPRegion + Endpoints)
|
|
|
|
|
const CurrentCapabilityVersion CapabilityVersion = 33
|
|
|
|
|
|
|
|
|
|
type StableID string
|
|
|
|
@ -746,6 +747,7 @@ func (st SignatureType) String() string {
|
|
|
|
|
// 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 {
|
|
|
|
|
_ structs.Incomparable
|
|
|
|
@ -864,6 +866,7 @@ type Endpoint struct {
|
|
|
|
|
//
|
|
|
|
|
// 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 {
|
|
|
|
|
// Version is incremented whenever the client code changes enough that
|
|
|
|
@ -1514,6 +1517,7 @@ const (
|
|
|
|
|
//
|
|
|
|
|
// 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>/set-dns
|
|
|
|
|
type SetDNSRequest struct {
|
|
|
|
|
// Version is the client's capabilities
|
|
|
|
|