net/dns: add GetBaseConfig to OSConfigurator interface.

Part of #953, required to make split DNS work on more basic
platforms.

Signed-off-by: David Anderson <danderson@tailscale.com>
This commit is contained in:
David Anderson
2021-04-07 00:31:31 -07:00
committed by Dave Anderson
parent fe9cd61d71
commit 68f76e9aa1
9 changed files with 58 additions and 3 deletions

View File

@ -300,6 +300,23 @@ func (m windowsManager) Close() error {
return m.SetDNS(OSConfig{})
}
func (m windowsManager) GetBaseConfig() (OSConfig, error) {
if m.nrptWorks {
return OSConfig{}, errors.New("GetBaseConfig not supported")
}
resolvers, err := m.getBasePrimaryResolver()
if err != nil {
return OSConfig{}, err
}
return OSConfig{
Nameservers: resolvers,
// Don't return any search domains here, because even Windows
// 7 correctly handles blending search domains from multiple
// sources, and any search domains we add here will get tacked
// onto the Tailscale config unnecessarily.
}, nil
}
// getBasePrimaryResolver returns a guess of the non-Tailscale primary
// resolver on the system.
// It's used on Windows 7 to emulate split DNS by trying to figure out