summaryrefslogtreecommitdiff
path: root/src/connection.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2009-05-16 08:52:48 -0700
committerMarcel Holtmann <marcel@holtmann.org>2009-05-16 08:52:48 -0700
commit6e84765a8dda6c0cb5f13fbaf7bdecf9016c8de4 (patch)
tree10a7bc5e171a0579ad7eb509e9f3a11e373f03eb /src/connection.c
parent9172bc5e82d912c889d159d0d1573d4586020cc2 (diff)
downloadconnman-6e84765a8dda6c0cb5f13fbaf7bdecf9016c8de4.tar.gz
connman-6e84765a8dda6c0cb5f13fbaf7bdecf9016c8de4.tar.bz2
connman-6e84765a8dda6c0cb5f13fbaf7bdecf9016c8de4.zip
Add support for default route notifications
Diffstat (limited to 'src/connection.c')
-rw-r--r--src/connection.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/connection.c b/src/connection.c
index b0039a69..3b67b921 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -114,7 +114,8 @@ static int set_route(struct connman_element *element, const char *gateway)
err = ioctl(sk, SIOCADDRT, &rt);
if (err < 0)
- DBG("default route setting failed (%s)", strerror(errno));
+ connman_error("Setting default route failed (%s)",
+ strerror(errno));
close(sk);
@@ -161,7 +162,8 @@ static int del_route(struct connman_element *element, const char *gateway)
err = ioctl(sk, SIOCDELRT, &rt);
if (err < 0)
- DBG("default route removal failed (%s)", strerror(errno));
+ connman_error("Removing default route failed (%s)",
+ strerror(errno));
close(sk);
@@ -228,6 +230,7 @@ static void del_default(struct connman_element *element, gpointer user_data)
static void new_default(struct connman_element *element, gpointer user_data)
{
+ struct connman_service *service;
const char *gateway;
DBG("element %p name %s", element, element->name);
@@ -243,7 +246,11 @@ static void new_default(struct connman_element *element, gpointer user_data)
if (gateway == NULL)
return;
- set_route(element, gateway);
+ if (set_route(element, gateway) < 0)
+ return;
+
+ service = __connman_element_get_service(element);
+ __connman_service_indicate_default(service);
connman_element_set_enabled(element, TRUE);
emit_default_signal(element);
@@ -503,9 +510,13 @@ static int connection_probe(struct connman_element *element)
return 0;
}
- set_route(element, gateway);
+ if (set_route(element, gateway) < 0)
+ return 0;
done:
+ service = __connman_element_get_service(element);
+ __connman_service_indicate_default(service);
+
connman_element_set_enabled(element, TRUE);
emit_default_signal(element);