summaryrefslogtreecommitdiff
path: root/sbin
diff options
context:
space:
mode:
Diffstat (limited to 'sbin')
-rw-r--r--sbin/dhclient/dhclient-script10
-rw-r--r--sbin/dhclient/dhclient.c12
2 files changed, 14 insertions, 8 deletions
diff --git a/sbin/dhclient/dhclient-script b/sbin/dhclient/dhclient-script
index 06001d3f835..289320b4f03 100644
--- a/sbin/dhclient/dhclient-script
+++ b/sbin/dhclient/dhclient-script
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# $OpenBSD: dhclient-script,v 1.17 2010/06/02 09:57:16 phessler Exp $
+# $OpenBSD: dhclient-script,v 1.18 2011/03/27 12:15:46 krw Exp $
#
# Copyright (c) 2003 Kenneth R Westerback <krw@openbsd.org>
#
@@ -208,7 +208,13 @@ PREINIT6)
ifconfig $interface up
;;
-ARPCHECK|ARPSEND)
+ARPCHECK)
+ # Always succeed. i.e. accept lease.
+ ;;
+
+ARPSEND)
+ # Always fail. i.e. don't wait for ARP packet here.
+ exit 1
;;
BOUND|RENEW|REBIND|REBOOT)
diff --git a/sbin/dhclient/dhclient.c b/sbin/dhclient/dhclient.c
index b2abea4e9f3..f900ef5baf4 100644
--- a/sbin/dhclient/dhclient.c
+++ b/sbin/dhclient/dhclient.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dhclient.c,v 1.137 2010/10/15 09:51:15 jsg Exp $ */
+/* $OpenBSD: dhclient.c,v 1.138 2011/03/27 12:15:46 krw Exp $ */
/*
* Copyright 2004 Henning Brauer <henning@openbsd.org>
@@ -495,7 +495,7 @@ state_reboot(void)
make_request(client->active);
client->destination = iaddr_broadcast;
client->first_sending = cur_time;
- client->interval = config->initial_interval;
+ client->interval = 0;
/* Zap the medium list... */
client->medium = NULL;
@@ -518,7 +518,7 @@ state_init(void)
client->destination = iaddr_broadcast;
client->state = S_SELECTING;
client->first_sending = cur_time;
- client->interval = config->initial_interval;
+ client->interval = 0;
/* Add an immediate timeout to cause the first DHCPDISCOVER packet
to go out. */
@@ -599,7 +599,7 @@ freeit:
client->destination = iaddr_broadcast;
client->state = S_REQUESTING;
client->first_sending = cur_time;
- client->interval = config->initial_interval;
+ client->interval = 0;
/* Make a DHCPREQUEST packet from the lease we picked. */
make_request(picked);
@@ -738,7 +738,7 @@ state_bound(void)
client->destination = iaddr_broadcast;
client->first_sending = cur_time;
- client->interval = config->initial_interval;
+ client->interval = 0;
client->state = S_RENEWING;
/* Send the first packet immediately. */
@@ -841,7 +841,7 @@ dhcpoffer(struct iaddr client_addr, struct option_data *options)
/* If the selecting interval has expired, go immediately to
state_selecting(). Otherwise, time out into
state_selecting at the select interval. */
- if (stop_selecting <= 0)
+ if (stop_selecting <= cur_time)
state_selecting();
else {
add_timeout(stop_selecting, state_selecting);