diff --git a/net/dns/nm.go b/net/dns/nm.go index 41d5e158c..adabcf0a0 100644 --- a/net/dns/nm.go +++ b/net/dns/nm.go @@ -9,11 +9,8 @@ package dns import ( - "bufio" - "bytes" "context" "fmt" - "os" "sort" "time" @@ -29,46 +26,6 @@ const ( lowerPriority = int32(200) // lower than all builtin auto priorities ) -// isNMActive determines if NetworkManager is currently managing system DNS settings. -func isNMActive() bool { - ctx, cancel := context.WithTimeout(context.Background(), reconfigTimeout) - defer cancel() - - conn, err := dbus.SystemBus() - if err != nil { - // Probably no DBus on this system. Either way, we can't - // control NM without DBus. - return false - } - - // Try to ping NetworkManager's DnsManager object. If it responds, - // NM is running and we're allowed to touch it. - nm := conn.Object("org.freedesktop.NetworkManager", dbus.ObjectPath("/org/freedesktop/NetworkManager/DnsManager")) - call := nm.CallWithContext(ctx, "org.freedesktop.DBus.Peer.Ping", 0) - if call.Err != nil { - return false - } - - f, err := os.Open("/etc/resolv.conf") - if err != nil { - return false - } - defer f.Close() - - scanner := bufio.NewScanner(f) - for scanner.Scan() { - line := scanner.Bytes() - // Look for the word "NetworkManager" until comments end. - if len(line) > 0 && line[0] != '#' { - return false - } - if bytes.Contains(line, []byte("NetworkManager")) { - return true - } - } - return false -} - // nmManager uses the NetworkManager DBus API. type nmManager struct { interfaceName string diff --git a/net/dns/resolvconf.go b/net/dns/resolvconf.go index c583a4f34..2cd468697 100644 --- a/net/dns/resolvconf.go +++ b/net/dns/resolvconf.go @@ -5,43 +5,11 @@ package dns import ( - "bufio" - "bytes" - "os" "os/exec" "tailscale.com/types/logger" ) -// isResolvconfActive indicates whether the system appears to be using resolvconf. -// If this is true, then directManager should be avoided: -// resolvconf has exclusive ownership of /etc/resolv.conf. -func isResolvconfActive() bool { - _, err := exec.LookPath("resolvconf") - if err != nil { - return false - } - - f, err := os.Open("/etc/resolv.conf") - if err != nil { - return false - } - defer f.Close() - - scanner := bufio.NewScanner(f) - for scanner.Scan() { - line := scanner.Bytes() - // Look for the word "resolvconf" until comments end. - if len(line) > 0 && line[0] != '#' { - return false - } - if bytes.Contains(line, []byte("resolvconf")) { - return true - } - } - return false -} - func newResolvconfManager(logf logger.Logf) (OSConfigurator, error) { _, err := exec.Command("resolvconf", "--version").CombinedOutput() if err != nil {