diff --git a/ChangeLog b/ChangeLog index 11f3214c11..565bcbadd2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,11 @@ +2005-07-05 Robert Love + + * src/NetworkManagerDevice.c: use link-local (autoip) on DHCP failure + on wired or unencrypted wireless. + 2005-07-01 Robert Love - * src/NetworkManagersystem.c: Print the error via strerror(). + * src/NetworkManagerSystem.c: Print the error via strerror(). 2005-06-30 Robert Love diff --git a/src/NetworkManagerDevice.c b/src/NetworkManagerDevice.c index 639211e59f..37c1f5b4f4 100644 --- a/src/NetworkManagerDevice.c +++ b/src/NetworkManagerDevice.c @@ -2845,7 +2845,11 @@ static gboolean nm_device_activate_stage4_ip_config_timeout (NMActRequest *req) } if (nm_device_is_wired (dev)) - nm_policy_schedule_activation_failed (req); + { + /* Wired network, no DHCP reply. Let's get an IP via Zeroconf. */ + nm_info ("No DHCP reply received. Automatically obtaining IP via Zeroconf."); + ip4_config = nm_device_new_ip4_autoip_config (dev); + } else if (nm_device_is_wireless (dev)) { NMAccessPoint *ap = nm_act_request_get_ap (req); @@ -2873,11 +2877,21 @@ static gboolean nm_device_activate_stage4_ip_config_timeout (NMActRequest *req) } else { - /* If DHCP fails on an unencrypted access point, we're done */ - nm_policy_schedule_activation_failed (req); + /* + * Wireless, not encrypted, no DHCP Reply. Try Zeroconf. We do not do this in + * the encrypted case, because the problem could be (and more likely is) a bad key. + */ + nm_info ("No DHCP reply received. Automatically obtaining IP via Zeroconf."); + ip4_config = nm_device_new_ip4_autoip_config (dev); } } + if (ip4_config) + { + nm_act_request_set_ip4_config (req, ip4_config); + nm_device_activate_schedule_stage5_ip_config_commit (req); + } + out: nm_info ("Activation (%s) Stage 4 (IP Configure Timeout) complete.", nm_device_get_iface (dev)); return FALSE;