From: Marcel Holtmann Date: Tue, 24 Mar 2009 14:13:57 +0000 (+0100) Subject: Propagate DHCP errors to parent elements X-Git-Tag: 2.0_alpha~3980 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ee6a91f87363f8ecb31cac1c63e52328456469ba;p=framework%2Fconnectivity%2Fconnman.git Propagate DHCP errors to parent elements --- 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 { }