mirror of
https://github.com/tailscale/tailscale.git
synced 2025-04-22 08:51:41 +00:00
health: track whether any network interface is up
Fixes #1562 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
0994a9f7c4
commit
85138d3183
@ -35,6 +35,7 @@ var (
|
|||||||
lastMapRequestHeard time.Time // time we got a 200 from control for a MapRequest
|
lastMapRequestHeard time.Time // time we got a 200 from control for a MapRequest
|
||||||
ipnState string
|
ipnState string
|
||||||
ipnWantRunning bool
|
ipnWantRunning bool
|
||||||
|
anyInterfaceUp = true // until told otherwise
|
||||||
)
|
)
|
||||||
|
|
||||||
// Subsystem is the name of a subsystem whose health can be monitored.
|
// Subsystem is the name of a subsystem whose health can be monitored.
|
||||||
@ -195,6 +196,14 @@ func SetIPNState(state string, wantRunning bool) {
|
|||||||
selfCheckLocked()
|
selfCheckLocked()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetAnyInterfaceUp sets whether any network interface is up.
|
||||||
|
func SetAnyInterfaceUp(up bool) {
|
||||||
|
mu.Lock()
|
||||||
|
defer mu.Unlock()
|
||||||
|
anyInterfaceUp = up
|
||||||
|
selfCheckLocked()
|
||||||
|
}
|
||||||
|
|
||||||
func timerSelfCheck() {
|
func timerSelfCheck() {
|
||||||
mu.Lock()
|
mu.Lock()
|
||||||
defer mu.Unlock()
|
defer mu.Unlock()
|
||||||
@ -213,6 +222,9 @@ func selfCheckLocked() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func overallErrorLocked() error {
|
func overallErrorLocked() error {
|
||||||
|
if !anyInterfaceUp {
|
||||||
|
return errors.New("network down")
|
||||||
|
}
|
||||||
if ipnState != "Running" || !ipnWantRunning {
|
if ipnState != "Running" || !ipnWantRunning {
|
||||||
return fmt.Errorf("state=%v, wantRunning=%v", ipnState, ipnWantRunning)
|
return fmt.Errorf("state=%v, wantRunning=%v", ipnState, ipnWantRunning)
|
||||||
}
|
}
|
||||||
|
@ -1272,6 +1272,7 @@ func (e *userspaceEngine) linkChange(changed bool, cur *interfaces.State) {
|
|||||||
e.logf("[v1] LinkChange: minor")
|
e.logf("[v1] LinkChange: minor")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
health.SetAnyInterfaceUp(up)
|
||||||
e.magicConn.SetNetworkUp(up)
|
e.magicConn.SetNetworkUp(up)
|
||||||
|
|
||||||
why := "link-change-minor"
|
why := "link-change-minor"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user