diff options
author | Thomas Haller <thaller@redhat.com> | 2016-04-21 17:17:45 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2016-04-26 13:58:28 +0200 |
commit | a252dfdb9db275ed8ab2e16f4e8246c2a5ddaad4 (patch) | |
tree | 77c42b83d47abfe8f779e9bb18acee75b2b1f92f /src/dns-manager | |
parent | aea2d98e2d2358c537e4ab92404e794c946e521d (diff) | |
download | NetworkManager-a252dfdb9db275ed8ab2e16f4e8246c2a5ddaad4.tar.gz |
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.
Diffstat (limited to 'src/dns-manager')
-rw-r--r-- | src/dns-manager/nm-dns-manager.c | 37 |
1 files changed, 13 insertions, 24 deletions
diff --git a/src/dns-manager/nm-dns-manager.c b/src/dns-manager/nm-dns-manager.c index beeadf1e97..fe72f3c9a4 100644 --- a/src/dns-manager/nm-dns-manager.c +++ b/src/dns-manager/nm-dns-manager.c @@ -1477,12 +1477,21 @@ static void init_resolv_conf_mode (NMDnsManager *self) { NMDnsManagerPrivate *priv = NM_DNS_MANAGER_GET_PRIVATE (self); + NMDnsManagerResolvConfManager rc_manager; const char *mode, *mode_unknown; 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)); if ( priv->mode_initialized + && rc_manager == priv->rc_manager && nm_streq0 (mode, priv->last_mode) && ( nm_streq0 (mode, "none") || priv->last_immutable == _get_resconf_immutable (&immutable))) { @@ -1493,6 +1502,9 @@ init_resolv_conf_mode (NMDnsManager *self) return; } + priv->rc_manager = rc_manager; + _LOGI ("using resolv.conf manager '%s'", _rc_manager_to_string (priv->rc_manager)); + priv->mode_initialized = TRUE; g_free (priv->last_mode); priv->last_mode = g_strdup (mode); @@ -1540,26 +1552,6 @@ init_resolv_conf_mode (NMDnsManager *self) } 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 config_changed_cb (NMConfig *config, NMConfigData *config_data, NMConfigChangeFlags changes, @@ -1569,6 +1561,7 @@ config_changed_cb (NMConfig *config, GError *error = NULL; if (NM_FLAGS_ANY (changes, NM_CONFIG_CHANGE_DNS_MODE | + NM_CONFIG_CHANGE_RC_MANAGER | NM_CONFIG_CHANGE_SIGHUP)) { /* 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 @@ -1577,9 +1570,6 @@ config_changed_cb (NMConfig *config, 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 | NM_CONFIG_CHANGE_SIGUSR1 | NM_CONFIG_CHANGE_DNS_MODE | @@ -1611,7 +1601,6 @@ nm_dns_manager_init (NMDnsManager *self) G_CALLBACK (config_changed_cb), self); init_resolv_conf_mode (self); - init_resolv_conf_manager (self); } static void |