4bf24c8243
- Had to rename the -T option to -timeout as ISC is now using -T - Allow package rebuilders to easily enable DHCPv6 support with: rpmbuild --with DHCPv6 dhcp.spec Note that Fedora is still using the 'dhcpv6' package, but some users may want to experiment with the ISC DHCPv6 implementation locally.
61 lines
1.9 KiB
Diff
61 lines
1.9 KiB
Diff
diff -up dhcp-4.1.0/client/dhclient.c.backoff dhcp-4.1.0/client/dhclient.c
|
|
--- dhcp-4.1.0/client/dhclient.c.backoff 2009-01-06 10:08:07.000000000 -1000
|
|
+++ dhcp-4.1.0/client/dhclient.c 2009-01-06 10:10:27.000000000 -1000
|
|
@@ -1185,6 +1185,7 @@ void state_init (cpp)
|
|
void *cpp;
|
|
{
|
|
struct client_state *client = cpp;
|
|
+ enum dhcp_state init_state = client->state;
|
|
|
|
ASSERT_STATE(state, S_INIT);
|
|
|
|
@@ -1197,9 +1198,16 @@ void state_init (cpp)
|
|
client -> first_sending = cur_time;
|
|
client -> interval = client -> config -> initial_interval;
|
|
|
|
- /* Add an immediate timeout to cause the first DHCPDISCOVER packet
|
|
- to go out. */
|
|
- send_discover (client);
|
|
+ if (init_state != S_DECLINED) {
|
|
+ /* Add an immediate timeout to cause the first DHCPDISCOVER packet
|
|
+ to go out. */
|
|
+ send_discover(client);
|
|
+ } else {
|
|
+ /* We've received an OFFER and it has been DECLINEd by dhclient-script.
|
|
+ * wait for a random time between 1 and backoff_cutoff seconds before
|
|
+ * trying again. */
|
|
+ add_timeout(cur_time + ((1 + (random() >> 2)) % client->config->backoff_cutoff), send_discover, client, 0, 0);
|
|
+ }
|
|
}
|
|
|
|
/*
|
|
@@ -1478,6 +1486,7 @@ void bind_lease (client)
|
|
send_decline (client);
|
|
destroy_client_lease (client -> new);
|
|
client -> new = (struct client_lease *)0;
|
|
+ client -> state = S_DECLINED;
|
|
state_init (client);
|
|
return;
|
|
}
|
|
@@ -3680,6 +3689,7 @@ void client_location_changed ()
|
|
case S_INIT:
|
|
case S_REBINDING:
|
|
case S_STOPPED:
|
|
+ case S_DECLINED:
|
|
break;
|
|
}
|
|
client -> state = S_INIT;
|
|
diff -up dhcp-4.1.0/includes/dhcpd.h.backoff dhcp-4.1.0/includes/dhcpd.h
|
|
--- dhcp-4.1.0/includes/dhcpd.h.backoff 2009-01-06 10:08:07.000000000 -1000
|
|
+++ dhcp-4.1.0/includes/dhcpd.h 2009-01-06 10:08:07.000000000 -1000
|
|
@@ -1016,7 +1016,8 @@ enum dhcp_state {
|
|
S_BOUND = 5,
|
|
S_RENEWING = 6,
|
|
S_REBINDING = 7,
|
|
- S_STOPPED = 8
|
|
+ S_STOPPED = 8,
|
|
+ S_DECLINED = 9
|
|
};
|
|
|
|
/* Authentication and BOOTP policy possibilities (not all values work
|