emit DNS CONFIG_CHANGED signal even dns=none

Instruct the `NMDnsManager` to emit `CONFIG_CHANGED` signal even
`dns=none` or failed to modify `/etc/resolv.conf`.

The `NMPolicy` will only update hostname when DNS is managed.

Signed-off-by: Gris Ge <fge@redhat.com>
(cherry picked from commit a847ba8075)
(cherry picked from commit d10f20fd01)
(cherry picked from commit e0f3a91a95)
This commit is contained in:
Gris Ge 2023-09-26 15:00:32 +08:00
parent 401f153dfb
commit cd9ebfd2bb
3 changed files with 19 additions and 5 deletions

View file

@ -1910,7 +1910,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);
@ -1926,6 +1926,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

View file

@ -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__ */

View file

@ -2563,11 +2563,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