summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSamuel Ortiz <sameo@linux.intel.com>2010-07-12 20:37:32 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2010-07-12 20:44:32 +0200
commitb65c51786893ec9defb6c8fdcd82e117ce0d91e4 (patch)
treeeef9b0dc0e1105c1ca4daf7c7355f2377f50628b /src
parent645ff10be169a02870c8a0a2615c6a48b2d031d3 (diff)
downloadconnman-b65c51786893ec9defb6c8fdcd82e117ce0d91e4.tar.gz
connman-b65c51786893ec9defb6c8fdcd82e117ce0d91e4.tar.bz2
connman-b65c51786893ec9defb6c8fdcd82e117ce0d91e4.zip
Update nameserver host routes with DNS manual settings
Diffstat (limited to 'src')
-rw-r--r--src/service.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/service.c b/src/service.c
index 057b2da3..bf2400ab 100644
--- a/src/service.c
+++ b/src/service.c
@@ -1232,6 +1232,8 @@ static DBusMessage *set_property(DBusConnection *conn,
} else if (g_str_equal(name, "Nameservers.Configuration") == TRUE) {
DBusMessageIter entry;
GString *str;
+ int index;
+ const char *gw;
if (type != DBUS_TYPE_ARRAY)
return __connman_error_invalid_arguments(msg);
@@ -1240,6 +1242,12 @@ static DBusMessage *set_property(DBusConnection *conn,
if (str == NULL)
return __connman_error_invalid_arguments(msg);
+ index = connman_network_get_index(service->network);
+ gw = __connman_ipconfig_get_gateway(index);
+
+ if (gw && strlen(gw))
+ __connman_service_nameserver_del_routes(service);
+
dbus_message_iter_recurse(&value, &entry);
while (dbus_message_iter_get_arg_type(&entry) == DBUS_TYPE_STRING) {
@@ -1261,6 +1269,9 @@ static DBusMessage *set_property(DBusConnection *conn,
g_string_free(str, TRUE);
+ if (gw && strlen(gw))
+ __connman_service_nameserver_add_routes(service, gw);
+
update_nameservers(service);
dns_configuration_changed(service);