diff options
| author | Brad Fitzpatrick <bradfitz@tailscale.com> | 2021-05-13 14:31:12 -0700 |
|---|---|---|
| committer | Brad Fitzpatrick <bradfitz@tailscale.com> | 2021-05-13 14:31:12 -0700 |
| commit | 963d585156fcbc58290fe5629bc5f508cb4259f2 (patch) | |
| tree | 30fd5665f4629c88ef0de40bfd15040aa6929960 | |
| parent | ebcd7ab89042fb660a96a75a360ce17140084435 (diff) | |
| download | tailscale-bradfitz/demo_pinger.tar.xz tailscale-bradfitz/demo_pinger.zip | |
XXX: plumb a Pinger down to controlclientbradfitz/demo_pinger
| -rw-r--r-- | control/controlclient/direct.go | 10 | ||||
| -rw-r--r-- | ipn/ipnlocal/local.go | 1 |
2 files changed, 11 insertions, 0 deletions
diff --git a/control/controlclient/direct.go b/control/controlclient/direct.go index 5e522ed93..3e0f7d788 100644 --- a/control/controlclient/direct.go +++ b/control/controlclient/direct.go @@ -32,6 +32,7 @@ import ( "golang.org/x/crypto/nacl/box" "inet.af/netaddr" "tailscale.com/health" + "tailscale.com/ipn/ipnstate" "tailscale.com/log/logheap" "tailscale.com/net/dnscache" "tailscale.com/net/dnsfallback" @@ -66,6 +67,7 @@ type Direct struct { debugFlags []string keepSharerAndUserSplit bool skipIPForwardingCheck bool + pinger Pinger mu sync.Mutex // mutex guards the following fields serverKey wgkey.Key @@ -80,6 +82,12 @@ type Direct struct { localPort uint16 // or zero to mean auto } +type Pinger interface { + // Ping is a request to start a discovery ping with the peer handling + // the given IP and then call cb with its ping latency & method. + Ping(ip netaddr.IP, useTSMP bool, cb func(*ipnstate.PingResult)) +} + type Options struct { Persist persist.Persist // initial persistent data GetMachinePrivateKey func() (wgkey.Private, error) // returns the machine key to use @@ -94,6 +102,7 @@ type Options struct { HTTPTestClient *http.Client // optional HTTP client to use (for tests only) DebugFlags []string // debug settings to send to control LinkMonitor *monitor.Mon // optional link monitor + Pinger Pinger // KeepSharerAndUserSplit controls whether the client // understands Node.Sharer. If false, the Sharer is mapped to the User. @@ -165,6 +174,7 @@ func NewDirect(opts Options) (*Direct, error) { keepSharerAndUserSplit: opts.KeepSharerAndUserSplit, linkMon: opts.LinkMonitor, skipIPForwardingCheck: opts.SkipIPForwardingCheck, + pinger: opts.Pinger, } if opts.Hostinfo == nil { c.SetHostinfo(NewHostinfo()) diff --git a/ipn/ipnlocal/local.go b/ipn/ipnlocal/local.go index 00065623a..fdd6d1ed8 100644 --- a/ipn/ipnlocal/local.go +++ b/ipn/ipnlocal/local.go @@ -808,6 +808,7 @@ func (b *LocalBackend) Start(opts ipn.Options) error { DiscoPublicKey: discoPublic, DebugFlags: debugFlags, LinkMonitor: b.e.GetLinkMonitor(), + Pinger: b.e, // Don't warn about broken Linux IP forwading when // netstack is being used. |
