From ee6a91f87363f8ecb31cac1c63e52328456469ba Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 24 Mar 2009 15:13:57 +0100 Subject: [PATCH] Propagate DHCP errors to parent elements --- plugins/dhclient.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/plugins/dhclient.c b/plugins/dhclient.c index 7e5e6d0..0bf9ad1 100644 --- a/plugins/dhclient.c +++ b/plugins/dhclient.c @@ -215,11 +215,21 @@ static void dhclient_remove(struct connman_element *element) kill_task(task); } +static void dhclient_change(struct connman_element *element) +{ + DBG("element %p name %s", element, element->name); + + if (element->state == CONNMAN_ELEMENT_STATE_ERROR) + connman_element_set_error(element->parent, + CONNMAN_ELEMENT_ERROR_DHCP_FAILED); +} + static struct connman_driver dhclient_driver = { .name = "dhclient", .type = CONNMAN_ELEMENT_TYPE_DHCP, .probe = dhclient_probe, .remove = dhclient_remove, + .change = dhclient_change, }; static DBusHandlerResult dhclient_filter(DBusConnection *conn, @@ -306,6 +316,9 @@ static DBusHandlerResult dhclient_filter(DBusConnection *conn, } else if (g_ascii_strcasecmp(text, "RENEW") == 0 || g_ascii_strcasecmp(text, "REBIND") == 0) { connman_element_update(task->element); + } else if (g_ascii_strcasecmp(text, "FAIL") == 0) { + connman_element_set_error(task->element, + CONNMAN_ELEMENT_ERROR_FAILED); } else { } -- 2.7.4