2005-02-14 Colin Walters <walters@verbum.org>

* src/NetworkManagerMain.h (NMData): Handle multiple domain searches.

	* src/NetworkManagerDHCP.c (set_domain_searches): Handle space-separated
	list of domains to search.


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@448 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
Colin Walters
2005-02-14 14:00:15 +00:00
parent d4581f134a
commit b5e5fda57e
2 changed files with 33 additions and 19 deletions

View File

@@ -81,31 +81,45 @@ static void set_nameservers (NMDevice *dev, void *data, int len)
} }
} }
static void set_domain_search (NMDevice *dev, const char *domain) static void set_domain_searches (NMDevice *dev, const char *searches_str)
{ {
GError *error = NULL; GError *error = NULL;
guint id; GList *elt;
char **searches;
if (dev->app_data->domain_search_id /* Reset our domain search list */
&& !nm_named_manager_remove_domain_search (dev->app_data->named, for (elt = dev->app_data->domain_search_ids; elt; elt = elt->next)
dev->app_data->domain_search_id,
&error))
{ {
syslog (LOG_ERR, G_GNUC_PRETTY_FUNCTION ": Couldn't remove domain search: %s\n", error->message); if (!nm_named_manager_remove_domain_search (dev->app_data->named,
g_clear_error (&error); GPOINTER_TO_UINT (elt->data),
&error))
{
syslog (LOG_ERR, G_GNUC_PRETTY_FUNCTION ": Couldn't remove domain search: %s\n", error->message);
g_clear_error (&error);
}
} }
g_list_free (dev->app_data->domain_search_ids);
syslog (LOG_ERR, G_GNUC_PRETTY_FUNCTION ": Adding domain search: %s\n", domain); dev->app_data->domain_search_ids = NULL;
if ((id = nm_named_manager_add_domain_search (dev->app_data->named,
domain, searches = g_strsplit (searches_str, " ", 0);
&error)))
dev->app_data->domain_search_id = id; for (; *searches; searches++)
else
{ {
dev->app_data->domain_search_id = 0; const char *search_elt = *searches;
syslog (LOG_ERR, G_GNUC_PRETTY_FUNCTION ": Couldn't add domain search: %s\n", error->message); guint id;
g_clear_error (&error);
syslog (LOG_ERR, G_GNUC_PRETTY_FUNCTION ": Adding domain search: %s\n", search_elt);
if ((id = nm_named_manager_add_domain_search (dev->app_data->named,
search_elt,
&error)))
dev->app_data->domain_search_ids = g_list_append (dev->app_data->domain_search_ids, GUINT_TO_POINTER (id));
else
{
syslog (LOG_ERR, G_GNUC_PRETTY_FUNCTION ": Couldn't add domain search: %s\n", error->message);
g_clear_error (&error);
}
} }
g_strfreev (searches);
} }
/* /*

View File

@@ -42,7 +42,7 @@ typedef struct NMData
NMNamedManager *named; NMNamedManager *named;
GList *nameserver_ids; /* For now these are global instead of per-device */ GList *nameserver_ids; /* For now these are global instead of per-device */
guint domain_search_id; GList *domain_search_ids;
DBusConnection *dbus_connection; DBusConnection *dbus_connection;
NMDbusMethodList *nm_methods; NMDbusMethodList *nm_methods;