mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-06 11:28:32 +02:00
dns: initialize rc-manager in init_resolv_conf_mode()
The "dns" and "rc-manager" properties are strongly related. Initialize them together in init_resolv_conf_mode(). One difference is, that we now set rc_manager before setting the mode. But that shouldn't matter.
This commit is contained in:
parent
aea2d98e2d
commit
a252dfdb9d
1 changed files with 13 additions and 24 deletions
|
|
@ -1477,12 +1477,21 @@ static void
|
||||||
init_resolv_conf_mode (NMDnsManager *self)
|
init_resolv_conf_mode (NMDnsManager *self)
|
||||||
{
|
{
|
||||||
NMDnsManagerPrivate *priv = NM_DNS_MANAGER_GET_PRIVATE (self);
|
NMDnsManagerPrivate *priv = NM_DNS_MANAGER_GET_PRIVATE (self);
|
||||||
|
NMDnsManagerResolvConfManager rc_manager;
|
||||||
const char *mode, *mode_unknown;
|
const char *mode, *mode_unknown;
|
||||||
int immutable = -1;
|
int immutable = -1;
|
||||||
|
|
||||||
|
rc_manager = _get_resolv_conf_manager (priv->config);
|
||||||
|
if (rc_manager == NM_DNS_MANAGER_RESOLV_CONF_MAN_UNKNOWN) {
|
||||||
|
_LOGW ("unknown resolv.conf manager '%s'",
|
||||||
|
nm_config_data_get_rc_manager (nm_config_get_data (priv->config)));
|
||||||
|
rc_manager = _get_resolv_conf_manager_default ();
|
||||||
|
}
|
||||||
|
|
||||||
mode = nm_config_data_get_dns_mode (nm_config_get_data (priv->config));
|
mode = nm_config_data_get_dns_mode (nm_config_get_data (priv->config));
|
||||||
|
|
||||||
if ( priv->mode_initialized
|
if ( priv->mode_initialized
|
||||||
|
&& rc_manager == priv->rc_manager
|
||||||
&& nm_streq0 (mode, priv->last_mode)
|
&& nm_streq0 (mode, priv->last_mode)
|
||||||
&& ( nm_streq0 (mode, "none")
|
&& ( nm_streq0 (mode, "none")
|
||||||
|| priv->last_immutable == _get_resconf_immutable (&immutable))) {
|
|| priv->last_immutable == _get_resconf_immutable (&immutable))) {
|
||||||
|
|
@ -1493,6 +1502,9 @@ init_resolv_conf_mode (NMDnsManager *self)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
priv->rc_manager = rc_manager;
|
||||||
|
_LOGI ("using resolv.conf manager '%s'", _rc_manager_to_string (priv->rc_manager));
|
||||||
|
|
||||||
priv->mode_initialized = TRUE;
|
priv->mode_initialized = TRUE;
|
||||||
g_free (priv->last_mode);
|
g_free (priv->last_mode);
|
||||||
priv->last_mode = g_strdup (mode);
|
priv->last_mode = g_strdup (mode);
|
||||||
|
|
@ -1539,26 +1551,6 @@ init_resolv_conf_mode (NMDnsManager *self)
|
||||||
immutable ? ", resolv.conf immutable" : "");
|
immutable ? ", resolv.conf immutable" : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
init_resolv_conf_manager (NMDnsManager *self)
|
|
||||||
{
|
|
||||||
NMDnsManagerPrivate *priv = NM_DNS_MANAGER_GET_PRIVATE (self);
|
|
||||||
NMDnsManagerResolvConfManager rc_manager;
|
|
||||||
|
|
||||||
rc_manager = _get_resolv_conf_manager (priv->config);
|
|
||||||
if (rc_manager == NM_DNS_MANAGER_RESOLV_CONF_MAN_UNKNOWN) {
|
|
||||||
_LOGW ("unknown resolv.conf manager '%s'",
|
|
||||||
nm_config_data_get_rc_manager (nm_config_get_data (priv->config)));
|
|
||||||
rc_manager = _get_resolv_conf_manager_default ();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rc_manager == priv->rc_manager)
|
|
||||||
return;
|
|
||||||
|
|
||||||
priv->rc_manager = rc_manager;
|
|
||||||
_LOGI ("using resolv.conf manager '%s'", _rc_manager_to_string (priv->rc_manager));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
config_changed_cb (NMConfig *config,
|
config_changed_cb (NMConfig *config,
|
||||||
NMConfigData *config_data,
|
NMConfigData *config_data,
|
||||||
|
|
@ -1569,6 +1561,7 @@ config_changed_cb (NMConfig *config,
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
|
||||||
if (NM_FLAGS_ANY (changes, NM_CONFIG_CHANGE_DNS_MODE |
|
if (NM_FLAGS_ANY (changes, NM_CONFIG_CHANGE_DNS_MODE |
|
||||||
|
NM_CONFIG_CHANGE_RC_MANAGER |
|
||||||
NM_CONFIG_CHANGE_SIGHUP)) {
|
NM_CONFIG_CHANGE_SIGHUP)) {
|
||||||
/* reload the resolv-conf mode also on SIGHUP (when DNS_MODE didn't change).
|
/* reload the resolv-conf mode also on SIGHUP (when DNS_MODE didn't change).
|
||||||
* The reason is, that the configuration also depends on whether resolv.conf
|
* The reason is, that the configuration also depends on whether resolv.conf
|
||||||
|
|
@ -1577,9 +1570,6 @@ config_changed_cb (NMConfig *config,
|
||||||
init_resolv_conf_mode (self);
|
init_resolv_conf_mode (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NM_FLAGS_HAS (changes, NM_CONFIG_CHANGE_RC_MANAGER))
|
|
||||||
init_resolv_conf_manager (self);
|
|
||||||
|
|
||||||
if (NM_FLAGS_ANY (changes, NM_CONFIG_CHANGE_SIGHUP |
|
if (NM_FLAGS_ANY (changes, NM_CONFIG_CHANGE_SIGHUP |
|
||||||
NM_CONFIG_CHANGE_SIGUSR1 |
|
NM_CONFIG_CHANGE_SIGUSR1 |
|
||||||
NM_CONFIG_CHANGE_DNS_MODE |
|
NM_CONFIG_CHANGE_DNS_MODE |
|
||||||
|
|
@ -1611,7 +1601,6 @@ nm_dns_manager_init (NMDnsManager *self)
|
||||||
G_CALLBACK (config_changed_cb),
|
G_CALLBACK (config_changed_cb),
|
||||||
self);
|
self);
|
||||||
init_resolv_conf_mode (self);
|
init_resolv_conf_mode (self);
|
||||||
init_resolv_conf_manager (self);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue