diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2009-03-24 15:13:57 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-03-24 15:13:57 +0100 |
commit | ee6a91f87363f8ecb31cac1c63e52328456469ba (patch) | |
tree | 20f505305704b34702896e9fe5d910e80cde1843 /plugins | |
parent | 74fd87ac31a8b3f1f5061463fc3db9203c7e9253 (diff) | |
download | connman-ee6a91f87363f8ecb31cac1c63e52328456469ba.tar.gz connman-ee6a91f87363f8ecb31cac1c63e52328456469ba.tar.bz2 connman-ee6a91f87363f8ecb31cac1c63e52328456469ba.zip |
Propagate DHCP errors to parent elements
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/dhclient.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/plugins/dhclient.c b/plugins/dhclient.c index 7e5e6d0a..0bf9ad11 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 { } |