diff --git a/src/core/dns/nm-dns-manager.c b/src/core/dns/nm-dns-manager.c index 535646930c..231ef72f49 100644 --- a/src/core/dns/nm-dns-manager.c +++ b/src/core/dns/nm-dns-manager.c @@ -1948,7 +1948,7 @@ plugin_skip:; } /* signal that DNS resolution configs were changed */ - if ((do_update || caching || force_emit) && result == SR_SUCCESS) + if ((caching || force_emit) && result == SR_SUCCESS) g_signal_emit(self, signals[CONFIG_CHANGED], 0); nm_clear_pointer(&priv->config_variant, g_variant_unref); @@ -1964,6 +1964,16 @@ plugin_skip:; return TRUE; } +gboolean +nm_dns_manager_is_unmanaged(NMDnsManager *self) +{ + NMDnsManagerPrivate *priv = NM_DNS_MANAGER_GET_PRIVATE(self); + + return NM_IN_SET(priv->rc_manager, + NM_DNS_MANAGER_RESOLV_CONF_MAN_UNMANAGED, + NM_DNS_MANAGER_RESOLV_CONF_MAN_IMMUTABLE); +} + /*****************************************************************************/ gboolean diff --git a/src/core/dns/nm-dns-manager.h b/src/core/dns/nm-dns-manager.h index 42f9dec588..9b8c2972b4 100644 --- a/src/core/dns/nm-dns-manager.h +++ b/src/core/dns/nm-dns-manager.h @@ -148,4 +148,6 @@ char *nmtst_dns_create_resolv_conf(const char *const *searches, const char *const *nameservers, const char *const *options); +gboolean nm_dns_manager_is_unmanaged(NMDnsManager *self); + #endif /* __NETWORKMANAGER_DNS_MANAGER_H__ */ diff --git a/src/core/nm-policy.c b/src/core/nm-policy.c index efdb06360f..1cf6b3398d 100644 --- a/src/core/nm-policy.c +++ b/src/core/nm-policy.c @@ -2635,11 +2635,13 @@ dns_config_changed(NMDnsManager *dns_manager, gpointer user_data) if (priv->updating_dns) return; - nm_manager_for_each_device (priv->manager, device, tmp_lst) { - nm_device_clear_dns_lookup_data(device, "DNS configuration changed"); - } + if (!nm_dns_manager_is_unmanaged(dns_manager)) { + nm_manager_for_each_device (priv->manager, device, tmp_lst) { + nm_device_clear_dns_lookup_data(device, "DNS configuration changed"); + } - update_system_hostname(self, "DNS configuration changed"); + update_system_hostname(self, "DNS configuration changed"); + } } static void