| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- // Copyright (c) Tailscale Inc & contributors
- // SPDX-License-Identifier: BSD-3-Clause
- package controlclient
- import (
- "reflect"
- "tailscale.com/types/netmap"
- "tailscale.com/types/persist"
- "tailscale.com/types/structs"
- )
- type Status struct {
- _ structs.Incomparable
- // Err, if non-nil, is an error that occurred while logging in.
- //
- // If it's of type UserVisibleError then it's meant to be shown to users in
- // their Tailscale client. Otherwise it's just logged to tailscaled's logs.
- Err error
- // URL, if non-empty, is the interactive URL to visit to finish logging in.
- URL string
- // LoggedIn, if true, indicates that serveRegister has completed and no
- // other login change is in progress.
- LoggedIn bool
- // InMapPoll, if true, indicates that we've received at least one netmap
- // and are connected to receive updates.
- InMapPoll bool
- // NetMap is the latest server-pushed state of the tailnet network.
- NetMap *netmap.NetworkMap
- // Persist, when Valid, is the locally persisted configuration.
- //
- // TODO(bradfitz,maisem): clarify this.
- Persist persist.PersistView
- }
- // Equal reports whether s and s2 are equal.
- func (s *Status) Equal(s2 *Status) bool {
- if s == nil && s2 == nil {
- return true
- }
- return s != nil && s2 != nil &&
- s.Err == s2.Err &&
- s.URL == s2.URL &&
- s.LoggedIn == s2.LoggedIn &&
- s.InMapPoll == s2.InMapPoll &&
- reflect.DeepEqual(s.Persist, s2.Persist) &&
- reflect.DeepEqual(s.NetMap, s2.NetMap)
- }
|