mirror of
https://gitlab.isc.org/isc-projects/dhcp
synced 2025-08-31 14:25:41 +00:00
- Some time value size fixes in 3.0.4 brought on from FreeBSD /usr/ports were
misapplied to server values rather than client values. The server no longer advertises 8-byte lease-time options when on 64-bit platforms. [ISC-Bugs #16036]
This commit is contained in:
@@ -34,7 +34,7 @@
|
||||
|
||||
#ifndef lint
|
||||
static char copyright[] =
|
||||
"$Id: dhcp.c,v 1.202 2006/04/27 17:26:42 dhankins Exp $ Copyright (c) 2004-2006 Internet Systems Consortium. All rights reserved.\n";
|
||||
"$Id: dhcp.c,v 1.203 2006/05/17 20:15:32 dhankins Exp $ Copyright (c) 2004-2006 Internet Systems Consortium. All rights reserved.\n";
|
||||
#endif /* not lint */
|
||||
|
||||
#include "dhcpd.h"
|
||||
@@ -2491,18 +2491,15 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp)
|
||||
offered_lease_time =
|
||||
state -> offered_expiry - cur_time;
|
||||
|
||||
putULong ((unsigned char *)&state -> expiry,
|
||||
(unsigned long)offered_lease_time);
|
||||
putULong(state->expiry, (u_int32_t)offered_lease_time);
|
||||
i = DHO_DHCP_LEASE_TIME;
|
||||
if (lookup_option (&dhcp_universe, state -> options, i))
|
||||
log_error ("dhcp-lease-time option for %s overridden.",
|
||||
inet_ntoa (state -> ciaddr));
|
||||
oc = (struct option_cache *)0;
|
||||
if (option_cache_allocate (&oc, MDL)) {
|
||||
if (make_const_data (&oc -> expression,
|
||||
(unsigned char *)&state -> expiry,
|
||||
sizeof state -> expiry,
|
||||
0, 0, MDL)) {
|
||||
if (make_const_data(&oc->expression, state->expiry,
|
||||
4, 0, 0, MDL)) {
|
||||
oc -> option = dhcp_universe.options [i];
|
||||
save_option (&dhcp_universe,
|
||||
state -> options, oc);
|
||||
@@ -2512,19 +2509,15 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp)
|
||||
|
||||
/* Renewal time is lease time * 0.5. */
|
||||
offered_lease_time /= 2;
|
||||
putULong ((unsigned char *)&state -> renewal,
|
||||
(unsigned long)offered_lease_time);
|
||||
putULong(state->renewal, (u_int32_t)offered_lease_time);
|
||||
i = DHO_DHCP_RENEWAL_TIME;
|
||||
if (lookup_option (&dhcp_universe, state -> options, i))
|
||||
log_error ("overriding dhcp-renewal-time for %s.",
|
||||
inet_ntoa (state -> ciaddr));
|
||||
oc = (struct option_cache *)0;
|
||||
if (option_cache_allocate (&oc, MDL)) {
|
||||
if (make_const_data (&oc -> expression,
|
||||
(unsigned char *)
|
||||
&state -> renewal,
|
||||
sizeof state -> renewal,
|
||||
0, 0, MDL)) {
|
||||
if (make_const_data(&oc->expression, state->renewal,
|
||||
4, 0, 0, MDL)) {
|
||||
oc -> option = dhcp_universe.options [i];
|
||||
save_option (&dhcp_universe,
|
||||
state -> options, oc);
|
||||
@@ -2535,18 +2528,15 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp)
|
||||
/* Rebinding time is lease time * 0.875. */
|
||||
offered_lease_time += (offered_lease_time / 2
|
||||
+ offered_lease_time / 4);
|
||||
putULong ((unsigned char *)&state -> rebind,
|
||||
(unsigned)offered_lease_time);
|
||||
putULong(state->rebind, (u_int32_t)offered_lease_time);
|
||||
i = DHO_DHCP_REBINDING_TIME;
|
||||
if (lookup_option (&dhcp_universe, state -> options, i))
|
||||
log_error ("overriding dhcp-rebinding-time for %s.",
|
||||
inet_ntoa (state -> ciaddr));
|
||||
oc = (struct option_cache *)0;
|
||||
if (option_cache_allocate (&oc, MDL)) {
|
||||
if (make_const_data (&oc -> expression,
|
||||
(unsigned char *)&state -> rebind,
|
||||
sizeof state -> rebind,
|
||||
0, 0, MDL)) {
|
||||
if (make_const_data(&oc->expression, state->rebind,
|
||||
4, 0, 0, MDL)) {
|
||||
oc -> option = dhcp_universe.options [i];
|
||||
save_option (&dhcp_universe,
|
||||
state -> options, oc);
|
||||
|
Reference in New Issue
Block a user