From f6b7d08aea2857d44f693f6fb56cf4968972aacb Mon Sep 17 00:00:00 2001 From: David Anderson Date: Fri, 23 Apr 2021 22:09:00 -0700 Subject: [PATCH] net/dns: work around new NetworkManager in other selection paths. Further bits of #1788 Signed-off-by: David Anderson --- net/dns/manager_linux.go | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/net/dns/manager_linux.go b/net/dns/manager_linux.go index 47ce5c1ca..0e9ee2d84 100644 --- a/net/dns/manager_linux.go +++ b/net/dns/manager_linux.go @@ -97,11 +97,22 @@ func NewOSConfigurator(logf logger.Logf, interfaceName string) (ret OSConfigurat dbg("src-is-nm", "yes") if err := dbusPing("org.freedesktop.NetworkManager", "/org/freedesktop/NetworkManager/DnsManager"); err == nil { dbg("nm", "yes") - return newNMManager(interfaceName) + old, err := nmVersionOlderThan("1.26.6") + if err != nil { + return nil, fmt.Errorf("checking NetworkManager version: %v", err) + } + if old { + dbg("nm-old", "yes") + return newNMManager(interfaceName) + } else { + dbg("nm-old", "no") + } + } else { + dbg("nm", "no") } - dbg("nm", "no") + } else { + dbg("src-is-nm", "no") } - dbg("src-is-nm", "no") if _, err := exec.LookPath("resolvconf"); err != nil { dbg("resolvconf", "no") return newDirectManager() @@ -115,7 +126,16 @@ func NewOSConfigurator(logf logger.Logf, interfaceName string) (ret OSConfigurat return newDirectManager() } dbg("nm", "yes") - return newNMManager(interfaceName) + old, err := nmVersionOlderThan("1.26.6") + if err != nil { + return nil, fmt.Errorf("checking NetworkManager version: %v", err) + } + if old { + dbg("nm-old", "yes") + return newNMManager(interfaceName) + } + dbg("nm-old", "no") + return newDirectManager() default: dbg("rc", "unknown") return newDirectManager()