wgengine{,tsdns}: rebind MagicDNS forwarders on link change

Fixes #1480

Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
Brad Fitzpatrick
2021-03-12 08:39:43 -08:00
committed by Brad Fitzpatrick
parent bdb91a20eb
commit f9f3b67f3a
3 changed files with 46 additions and 12 deletions

View File

@@ -219,18 +219,13 @@ func newUserspaceEngine(logf logger.Logf, rawTUNDev tun.Device, conf Config) (_
tsTUNDev := tstun.WrapTUN(logf, rawTUNDev)
closePool.add(tsTUNDev)
rconf := tsdns.ResolverConfig{
Logf: logf,
Forward: true,
}
e := &userspaceEngine{
timeNow: time.Now,
logf: logf,
reqCh: make(chan struct{}, 1),
waitCh: make(chan struct{}),
tundev: tsTUNDev,
resolver: tsdns.NewResolver(rconf),
pingers: make(map[wgkey.Key]*pinger),
timeNow: time.Now,
logf: logf,
reqCh: make(chan struct{}, 1),
waitCh: make(chan struct{}),
tundev: tsTUNDev,
pingers: make(map[wgkey.Key]*pinger),
}
e.localAddrs.Store(map[netaddr.IP]bool{})
@@ -246,6 +241,12 @@ func newUserspaceEngine(logf logger.Logf, rawTUNDev tun.Device, conf Config) (_
e.linkMonOwned = true
}
e.resolver = tsdns.NewResolver(tsdns.ResolverConfig{
Logf: logf,
Forward: true,
LinkMonitor: e.linkMon,
})
logf("link state: %+v", e.linkMon.InterfaceState())
unregisterMonWatch := e.linkMon.RegisterChangeCallback(func(changed bool, st *interfaces.State) {