wgengine: periodically poll engine status for logging side effect
Fixes tailscale/corp#1560 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
3c9dea85e6
commit
bb2141e0cf
|
@ -76,6 +76,10 @@ const (
|
|||
packetSendRecheckWireguardThreshold = 1 * time.Minute
|
||||
)
|
||||
|
||||
// statusPollInterval is how often we ask wireguard-go for its engine
|
||||
// status (as long as there's activity). See docs on its use below.
|
||||
const statusPollInterval = 1 * time.Minute
|
||||
|
||||
type userspaceEngine struct {
|
||||
logf logger.Logf
|
||||
wgLogger *wglog.Logger //a wireguard-go logging wrapper
|
||||
|
@ -108,6 +112,7 @@ type userspaceEngine struct {
|
|||
sentActivityAt map[netaddr.IP]*int64 // value is atomic int64 of unixtime
|
||||
destIPActivityFuncs map[netaddr.IP]func()
|
||||
statusBufioReader *bufio.Reader // reusable for UAPI
|
||||
lastStatusPollTime time.Time // last time we polled the engine status
|
||||
|
||||
mu sync.Mutex // guards following; see lock order comment below
|
||||
netMap *netmap.NetworkMap // or nil
|
||||
|
@ -708,6 +713,18 @@ func (e *userspaceEngine) noteReceiveActivity(dk tailcfg.DiscoKey) {
|
|||
now := e.timeNow()
|
||||
e.recvActivityAt[dk] = now
|
||||
|
||||
// As long as there's activity, periodically poll the engine to get
|
||||
// stats for the far away side effect of
|
||||
// ipn/ipnlocal.LocalBackend.parseWgStatusLocked to log activity, for
|
||||
// use in various admin dashboards.
|
||||
// This particularly matters on platforms without a connected GUI, as
|
||||
// the GUIs generally poll this enough to cause that logging. But
|
||||
// tailscaled alone did not, hence this.
|
||||
if e.lastStatusPollTime.IsZero() || now.Sub(e.lastStatusPollTime) >= statusPollInterval {
|
||||
e.lastStatusPollTime = now
|
||||
go e.RequestStatus()
|
||||
}
|
||||
|
||||
// If the last activity time jumped a bunch (say, at least
|
||||
// half the idle timeout) then see if we need to reprogram
|
||||
// Wireguard. This could probably be just
|
||||
|
|
Loading…
Reference in New Issue