diff --git a/RELNOTES b/RELNOTES index ae3bd653..3f4225d1 100644 --- a/RELNOTES +++ b/RELNOTES @@ -112,6 +112,12 @@ suggested fixes to . - Fixes to allow code to compile on Mac OS X Leopard (10.5). +- When server is configured with options that it overrides, a warning is + issued when the configuration file is read, rather than at the time the + option is overridden. This was important, because the warning was given + every time the option was overridden, which could create a lot of + unnecessary logging. + Changes since 4.0.0b3 - The reverse dns name for PTR updates on IPv6 addresses has been fixed to diff --git a/server/confpars.c b/server/confpars.c index 7a0a3d21..21322ef8 100644 --- a/server/confpars.c +++ b/server/confpars.c @@ -687,6 +687,26 @@ int parse_statement (cfile, group, type, host_decl, declaration) return declaration; } + /* + * If the configuration attempts to define on option + * that we ignore, then warn about it now. + * + * In DHCPv4 we do not use dhcp-renewal-time or + * dhcp-rebinding-time, but we use these in DHCPv6. + * + * XXX: We may want to include a "blacklist" of + * options we ignore in the future, as a table. + */ + if ((option->code == DHO_DHCP_LEASE_TIME) || + ((local_family != AF_INET6) && + ((option->code == DHO_DHCP_RENEWAL_TIME) || + (option->code == DHO_DHCP_REBINDING_TIME)))) + { + log_error("WARNING: server ignoring option %s " + "in configuration file.", + option->name); + } + finish_option: et = (struct executable_statement *)0; if (!parse_option_statement diff --git a/server/dhcp.c b/server/dhcp.c index 3b8d2cb4..3050c8fa 100644 --- a/server/dhcp.c +++ b/server/dhcp.c @@ -2522,9 +2522,6 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp) 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, state->expiry, @@ -2542,9 +2539,6 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp) offered_lease_time /= 2; 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, state->renewal, @@ -2563,9 +2557,6 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp) + offered_lease_time / 4); 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, state->rebind,