File nm-update-resolv.conf-once.patch of Package NetworkManager
From f3eb10e13e0056ea034b9e622cdab34fc03b16b3 Mon Sep 17 00:00:00 2001
From: Tambet Ingo <tambet@gmail.com>
Date: Wed, 1 Apr 2009 10:02:52 +0300
Subject: [PATCH] Update resolv.conf once.
diff --git a/src/NetworkManagerPolicy.c b/src/NetworkManagerPolicy.c
index a31baca..4b03258 100644
--- a/src/NetworkManagerPolicy.c
+++ b/src/NetworkManagerPolicy.c
@@ -563,7 +563,7 @@ update_routing_and_dns (NMPolicy *policy, gboolean force_update)
}
named_mgr = nm_named_manager_get ();
- nm_named_manager_add_ip4_config (named_mgr, ip_iface, ip4_config, dns_type);
+ nm_named_manager_add_ip4_config (named_mgr, ip4_config, dns_type);
g_object_unref (named_mgr);
/* Now set new default active connection _after_ updating DNS info, so that
@@ -784,7 +784,10 @@ device_ip4_config_changed (NMDevice *device,
GParamSpec *pspec,
gpointer user_data)
{
- update_routing_and_dns ((NMPolicy *) user_data, TRUE);
+ if (nm_device_get_state (device) == NM_DEVICE_STATE_ACTIVATED)
+ /* Update routing and DNS when the device is active and it's configuration changes.
+ The device activation and deactivation are caught by device_state_changed() */
+ update_routing_and_dns ((NMPolicy *) user_data, TRUE);
}
static void
diff --git a/src/named-manager/nm-named-manager.c b/src/named-manager/nm-named-manager.c
index 9fbc3da..05298d8 100644
--- a/src/named-manager/nm-named-manager.c
+++ b/src/named-manager/nm-named-manager.c
@@ -184,9 +184,8 @@ static gboolean
dispatch_netconfig (const char *domain,
char **searches,
char **nameservers,
- const char *iface,
- const char *nis_domain,
- const char *nis_servers,
+ const char *nis_domain,
+ const char *nis_servers,
GError **error)
{
gint fd;
@@ -196,8 +195,6 @@ dispatch_netconfig (const char *domain,
if (fd < 0)
return FALSE;
- write_to_netconfig (fd, "INTERFACE", iface);
-
if (searches) {
str = g_strjoinv (" ", searches);
@@ -306,7 +303,6 @@ static gboolean
dispatch_resolvconf (const char *domain,
char **searches,
char **nameservers,
- const char *iface,
GError **error)
{
char *cmd;
@@ -318,7 +314,7 @@ dispatch_resolvconf (const char *domain,
if (domain || searches || nameservers) {
cmd = g_strconcat (RESOLVCONF_PATH, " -a ", "NetworkManager", NULL);
- nm_info ("(%s): writing resolv.conf to %s", iface, RESOLVCONF_PATH);
+ nm_info ("writing resolv.conf to %s", RESOLVCONF_PATH);
if ((f = popen (cmd, "w")) == NULL)
g_set_error (error,
NM_NAMED_MANAGER_ERROR,
@@ -332,7 +328,7 @@ dispatch_resolvconf (const char *domain,
}
} else {
cmd = g_strconcat (RESOLVCONF_PATH, " -d ", "NetworkManager", NULL);
- nm_info ("(%s): removing resolv.conf from %s", iface, RESOLVCONF_PATH);
+ nm_info ("removing resolv.conf from %s", RESOLVCONF_PATH);
if (nm_spawn_process (cmd) == 0)
retval = TRUE;
}
@@ -345,9 +341,8 @@ dispatch_resolvconf (const char *domain,
static gboolean
update_resolv_conf (const char *domain,
- char **searches,
+ char **searches,
char **nameservers,
- const char *iface,
GError **error)
{
const char *tmp_resolv_conf = RESOLV_CONF ".tmp";
@@ -395,7 +390,7 @@ update_resolv_conf (const char *domain,
static gboolean
-rewrite_resolv_conf (NMNamedManager *mgr, const char *iface, GError **error)
+rewrite_resolv_conf (NMNamedManager *mgr, GError **error)
{
NMNamedManagerPrivate *priv;
NMIP4Config *composite;
@@ -486,19 +481,19 @@ rewrite_resolv_conf (NMNamedManager *mgr, const char *iface, GError **error)
}
#ifdef RESOLVCONF_PATH
- success = dispatch_resolvconf (domain, searches, nameservers, iface, error);
+ success = dispatch_resolvconf (domain, searches, nameservers, error);
#endif
#ifdef TARGET_SUSE
if (success == FALSE)
- success = dispatch_netconfig (domain, searches, nameservers, iface,
+ success = dispatch_netconfig (domain, searches, nameservers,
g_object_get_data (G_OBJECT (composite), "NISDOMAIN"),
g_object_get_data (G_OBJECT (composite), "NISSERVERS"),
error);
#endif
if (success == FALSE)
- success = update_resolv_conf (domain, searches, nameservers, iface, error);
+ success = update_resolv_conf (domain, searches, nameservers, error);
if (success)
nm_system_update_dns ();
@@ -511,7 +506,6 @@ rewrite_resolv_conf (NMNamedManager *mgr, const char *iface, GError **error)
gboolean
nm_named_manager_add_ip4_config (NMNamedManager *mgr,
- const char *iface,
NMIP4Config *config,
NMNamedIPConfigType cfg_type)
{
@@ -519,7 +513,6 @@ nm_named_manager_add_ip4_config (NMNamedManager *mgr,
GError *error = NULL;
g_return_val_if_fail (mgr != NULL, FALSE);
- g_return_val_if_fail (iface != NULL, FALSE);
g_return_val_if_fail (config != NULL, FALSE);
priv = NM_NAMED_MANAGER_GET_PRIVATE (mgr);
@@ -539,7 +532,7 @@ nm_named_manager_add_ip4_config (NMNamedManager *mgr,
if (!g_slist_find (priv->configs, config))
priv->configs = g_slist_append (priv->configs, g_object_ref (config));
- if (!rewrite_resolv_conf (mgr, iface, &error)) {
+ if (!rewrite_resolv_conf (mgr, &error)) {
nm_warning ("Could not commit DNS changes. Error: '%s'", error ? error->message : "(none)");
g_error_free (error);
}
@@ -549,14 +542,12 @@ nm_named_manager_add_ip4_config (NMNamedManager *mgr,
gboolean
nm_named_manager_remove_ip4_config (NMNamedManager *mgr,
- const char *iface,
NMIP4Config *config)
{
NMNamedManagerPrivate *priv;
GError *error = NULL;
g_return_val_if_fail (mgr != NULL, FALSE);
- g_return_val_if_fail (iface != NULL, FALSE);
g_return_val_if_fail (config != NULL, FALSE);
priv = NM_NAMED_MANAGER_GET_PRIVATE (mgr);
@@ -575,7 +566,7 @@ nm_named_manager_remove_ip4_config (NMNamedManager *mgr,
g_object_unref (config);
- if (!rewrite_resolv_conf (mgr, iface, &error)) {
+ if (!rewrite_resolv_conf (mgr, &error)) {
nm_warning ("Could not commit DNS changes. Error: '%s'", error ? error->message : "(none)");
if (error)
g_error_free (error);
diff --git a/src/named-manager/nm-named-manager.h b/src/named-manager/nm-named-manager.h
index 2b5b647..cc40c04 100644
--- a/src/named-manager/nm-named-manager.h
+++ b/src/named-manager/nm-named-manager.h
@@ -69,12 +69,10 @@ GType nm_named_manager_get_type (void);
NMNamedManager * nm_named_manager_get (void);
gboolean nm_named_manager_add_ip4_config (NMNamedManager *mgr,
- const char *iface,
NMIP4Config *config,
NMNamedIPConfigType cfg_type);
gboolean nm_named_manager_remove_ip4_config (NMNamedManager *mgr,
- const char *iface,
NMIP4Config *config);
G_END_DECLS
diff --git a/src/nm-device.c b/src/nm-device.c
index 02e4fc1..89fff27 100644
--- a/src/nm-device.c
+++ b/src/nm-device.c
@@ -1937,7 +1937,7 @@ nm_device_set_ip4_config (NMDevice *self,
named_mgr = nm_named_manager_get ();
if (old_config) {
/* Remove any previous IP4 Config from the named manager */
- nm_named_manager_remove_ip4_config (named_mgr, ip_iface, old_config);
+ nm_named_manager_remove_ip4_config (named_mgr, old_config);
g_object_unref (old_config);
priv->ip4_config = NULL;
}
@@ -1951,9 +1951,6 @@ nm_device_set_ip4_config (NMDevice *self,
if (!nm_ip4_config_get_dbus_path (new_config))
nm_ip4_config_export (new_config);
- /* Add the DNS information to the named manager */
- nm_named_manager_add_ip4_config (named_mgr, ip_iface, new_config, NM_NAMED_IP_CONFIG_TYPE_DEFAULT);
-
nm_device_update_ip4_address (self);
}
}
diff --git a/src/vpn-manager/nm-vpn-connection.c b/src/vpn-manager/nm-vpn-connection.c
index 6f3e259..c4878ca 100644
--- a/src/vpn-manager/nm-vpn-connection.c
+++ b/src/vpn-manager/nm-vpn-connection.c
@@ -505,7 +505,7 @@ nm_vpn_connection_ip4_config_get (DBusGProxy *proxy,
/* Add the VPN to DNS */
named_mgr = nm_named_manager_get ();
- nm_named_manager_add_ip4_config (named_mgr, priv->tundev, config, NM_NAMED_IP_CONFIG_TYPE_VPN);
+ nm_named_manager_add_ip4_config (named_mgr, config, NM_NAMED_IP_CONFIG_TYPE_VPN);
g_object_unref (named_mgr);
priv->ip4_config = config;
@@ -942,7 +942,7 @@ vpn_cleanup (NMVPNConnection *connection)
/* Remove attributes of the VPN's IP4 Config */
named_mgr = nm_named_manager_get ();
- nm_named_manager_remove_ip4_config (named_mgr, priv->tundev, priv->ip4_config);
+ nm_named_manager_remove_ip4_config (named_mgr, priv->ip4_config);
g_object_unref (named_mgr);
/* Remove any previously added VPN gateway host route */
--
1.6.0.2