diff --git a/app.go b/app.go index aec8d689..6274d8fd 100644 --- a/app.go +++ b/app.go @@ -219,6 +219,16 @@ func (h *Headscale) expireEphemeralNodes(milliSeconds int64) { } } +func (h *Headscale) failoverSubnetRoutes(milliSeconds int64) { + ticker := time.NewTicker(time.Duration(milliSeconds) * time.Millisecond) + for range ticker.C { + err := h.handlePrimarySubnetFailover() + if err != nil { + log.Error().Err(err).Msg("failed to handle primary subnet failover") + } + } +} + func (h *Headscale) expireEphemeralNodesWorker() { namespaces, err := h.ListNamespaces() if err != nil { @@ -497,6 +507,8 @@ func (h *Headscale) Serve() error { go h.expireEphemeralNodes(updateInterval) + go h.failoverSubnetRoutes(updateInterval) + if zl.GlobalLevel() == zl.TraceLevel { zerolog.RespLog = true } else {