// Copyright (c) 2020 Tailscale Inc & AUTHORS All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package dns func newManager(mconfig ManagerConfig) managerImpl { switch { // systemd-resolved should only activate per-domain. case isResolvedActive() && mconfig.PerDomain: if mconfig.Cleanup { return newNoopManager(mconfig) } else { return newResolvedManager(mconfig) } case isNMActive(): if mconfig.Cleanup { return newNoopManager(mconfig) } else { return newNMManager(mconfig) } case isResolvconfActive(): return newResolvconfManager(mconfig) default: return newDirectManager(mconfig) } }