mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-29 04:55:31 +00:00
wgengine: handle nil netmaps when assigning isSubnetRouter.
Fixes tailscale/coral#51 Signed-off-by: Maisem Ali <maisem@tailscale.com>
This commit is contained in:
parent
858286d97f
commit
07f48a7bfe
@ -118,6 +118,7 @@ type userspaceEngine struct {
|
||||
lastEngineSigFull deephash.Sum // of full wireguard config
|
||||
lastEngineSigTrim deephash.Sum // of trimmed wireguard config
|
||||
lastDNSConfig *dns.Config
|
||||
lastIsSubnetRouter bool // was the node a primary subnet router in the last run.
|
||||
recvActivityAt map[key.NodePublic]mono.Time
|
||||
trimmedNodes map[key.NodePublic]bool // set of node keys of peers currently excluded from wireguard config
|
||||
sentActivityAt map[netaddr.IP]*mono.Time // value is accessed atomically
|
||||
@ -125,8 +126,6 @@ type userspaceEngine struct {
|
||||
statusBufioReader *bufio.Reader // reusable for UAPI
|
||||
lastStatusPollTime mono.Time // last time we polled the engine status
|
||||
|
||||
lastIsSubnetRouter bool // was the node a primary subnet router in the last run.
|
||||
|
||||
mu sync.Mutex // guards following; see lock order comment below
|
||||
netMap *netmap.NetworkMap // or nil
|
||||
closing bool // Close was called (even if we're still closing)
|
||||
@ -854,6 +853,7 @@ func (e *userspaceEngine) Reconfig(cfg *wgcfg.Config, routerCfg *router.Config,
|
||||
e.peerSequence = append(e.peerSequence, p.PublicKey)
|
||||
peerSet[p.PublicKey] = struct{}{}
|
||||
}
|
||||
nm := e.netMap
|
||||
e.mu.Unlock()
|
||||
|
||||
listenPort := e.confListenPort
|
||||
@ -862,8 +862,8 @@ func (e *userspaceEngine) Reconfig(cfg *wgcfg.Config, routerCfg *router.Config,
|
||||
}
|
||||
|
||||
isSubnetRouter := false
|
||||
if e.birdClient != nil {
|
||||
isSubnetRouter = hasOverlap(e.netMap.SelfNode.PrimaryRoutes, e.netMap.Hostinfo.RoutableIPs)
|
||||
if e.birdClient != nil && nm != nil && nm.SelfNode != nil {
|
||||
isSubnetRouter = hasOverlap(nm.SelfNode.PrimaryRoutes, nm.Hostinfo.RoutableIPs)
|
||||
}
|
||||
isSubnetRouterChanged := isSubnetRouter != e.lastIsSubnetRouter
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user