diff options
| author | Roy Marples <roy@marples.name> | 2009-03-03 23:41:53 +0000 |
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2009-03-03 23:41:53 +0000 |
| commit | 746e44f9c2425916efb61485ae22cf67b9a38408 (patch) | |
| tree | 8705acf824b9c71cedf20fcfa5abc8a781357e12 | |
| parent | 0ffa23aeb6deed59311ea6fd3efd09a6cc3c8ef3 (diff) | |
| download | dhcpcd-746e44f9c2425916efb61485ae22cf67b9a38408.tar.xz | |
If we reboot an IPv4LL address, start DHCP negotiation right away.
| -rw-r--r-- | arp.c | 5 | ||||
| -rw-r--r-- | dhcpcd.c | 3 |
2 files changed, 4 insertions, 4 deletions
@@ -193,8 +193,9 @@ send_arp_announce(void *arg) } if (IN_LINKLOCAL(htonl(state->new->yiaddr))) { /* We should pretend to be at the end - * of the DHCP negotation cycle */ - state->interval = 64; + * of the DHCP negotation cycle unless we rebooted */ + if (state->interval != 0) + state->interval = 64; state->probes = 0; state->claims = 0; tv.tv_sec = state->interval - DHCP_RAND_MIN; @@ -364,9 +364,9 @@ start_expire(void *arg) { struct interface *iface = arg; + iface->state->interval = 0; if (iface->addr.s_addr == 0) { /* We failed to reboot, so enter discovery. */ - iface->state->interval = 0; start_discover(iface); return; } @@ -375,7 +375,6 @@ start_expire(void *arg) delete_timeout(NULL, iface); drop_config(iface, "EXPIRE"); unlink(iface->leasefile); - iface->state->interval = 0; if (iface->carrier != LINK_DOWN) start_interface(iface); } |
