Assorted fixes for broken network devices: IP header length field is now
determined from payload, because some NIC drivers return more data than
they actually recived; IP and UDP packets now stored in aligned data
structures; outgoing packet TTL increased from 16 to 128. [rt15583]
A new server config option "fqdn-reply" specifies whether the server
should send out option 81 (FQDN). Defaults to "on". If set to "off",
the FQDN option is not sent, even if the client requested it. This is
needed because some clients misbehave otherwise. [rt16624]
David Hankins [Thu, 26 Apr 2007 20:06:25 +0000 (20:06 +0000)]
- The server's "by client-id" and "by hardware address" hash table lists
are now sorted according to the preference to re-allocate that lease to
returning clients. This should eliminate pool starvation problems
arising when "INIT" clients were given new leases rather than presently
active ones. [ISC-Bugs #16831]
David Hankins [Fri, 20 Apr 2007 15:25:26 +0000 (15:25 +0000)]
- Some bugs were fixed in the 'emergency relay agent options hologram'
which is used to retain relay agent option contents from when the
client was in INIT or REBIND states. This should solve problems where
relay agent options were not echoed from the server, even when giaddr
was set. [ISC-Bugs #16787]
David Hankins [Thu, 19 Apr 2007 21:35:12 +0000 (21:35 +0000)]
- Several spelling typos were repaired, and some cross-references to other
relevant documents were included in the manpages, thanks to a patch
by Andrew Pollock which got to us via Tomas Pospisek. [ISC-Bugs #16731]
David Hankins [Mon, 16 Apr 2007 17:32:02 +0000 (17:32 +0000)]
- Timestamp parsing errors that indicated missing "minutes" fields rather
than the actually missing "seconds" fields have been repaired thanks to
a patch from Kevin Steves. [ISC_Bugs #16505]
David Hankins [Tue, 3 Apr 2007 16:46:03 +0000 (16:46 +0000)]
- A new server config option, 'do-reverse-updates', has been added
which causes the server to abstain from performing updates on PTR
records. Thanks to a patch from Christof Chen at Allianz.
[ISC-Bugs #16781]
David Hankins [Tue, 3 Apr 2007 14:57:53 +0000 (14:57 +0000)]
- A bug was fixed where the BOOTP header 'sname' field had a value, the
copy written to persistent storage was actually the contents of the
'file' field. [ISC-Bugs #16784]
David Hankins [Tue, 27 Mar 2007 03:48:06 +0000 (03:48 +0000)]
- In the case where an "L2" DHCP Relay Agent (one that does not set giaddr)
was directly attached to the same broadcast domain as the DHCP server,
the RFC3046 relay agent information option was not being returned to the
relay in the server's replies. This was fixed; the dhcp server no longer
requires the giaddr to reply with relay agent information. Note that
this also improves compatibility with L2 devices that "intercept" DHCP
packets and expect relay agent information even in unicast (renewal)
replies. [ISC-Bugs #16762]
David Hankins [Tue, 7 Nov 2006 23:40:14 +0000 (23:40 +0000)]
- A logic error in omapi interface code was repaired that might result in
incorrectly indicating 'up' state when any flags were set, rather than
specifically the INTERFACE_REQUESTED flag. [ISC-Bugs #16431]
David Hankins [Fri, 27 Oct 2006 22:54:13 +0000 (22:54 +0000)]
- Some default hash table sizes were tweaked, some upwards, some downwards.
3.1.0a1's tables resulted in a reduction in default server memory use.
The new selected values provide more of a zero sum (increasing the size
of tables likely to be populated, decreasing the size of tables unlikely).
- Lease structures appear in three spearate hashes: by IP address, by UID,
and by hardware address. One type of table was used for all three, and
improvements to IP address hashing were applied to all three (so UID and
hardware addresses were treated like 4-byte integers). There are now two
types of tables, and the uid/hw hashes use functions more appropriate
to their needs.
- The max-lease-misbalance percentage no longer causes scheduled rebalance
runs to be skipped: it still governs the schedule, but every scheduled
run will attempt balance.
David Hankins [Wed, 27 Sep 2006 18:27:27 +0000 (18:27 +0000)]
- The servers now try harder to transmit pending binding updates when
entering normal state. [ISC-Bugs #16412]
- UPDREQ/UPDREQALL handling was optimized - it no longer dequeues and
requeues all pending updates. This should reduce the number of spurious
'xid mismatch' log mesasges. [ISC-Bugs #16412]
David Hankins [Mon, 31 Jul 2006 23:17:24 +0000 (23:17 +0000)]
- A new dhcp server option 'adaptive-lease-time-threshold' has been added
which causes the server to substantially reduce lease-times if there are
few (configured percentage) remaining leases. Thanks to a patch submitted
from Christof Chen. [ISC-Bugs #15409]
David Hankins [Mon, 31 Jul 2006 22:19:51 +0000 (22:19 +0000)]
- A new common configuration executable statement, execute(), has been
added. This permits dhcpd or dhclient to execute a named external
program with command line arguments specified from other configuration
language. Thanks to a patch written by Mattias Ronnblom, gotten to us
via Robin Breathe. [ISC-Bugs #13728]
David Hankins [Tue, 25 Jul 2006 17:41:18 +0000 (17:41 +0000)]
- DHCPD is now RFC2131 section 4.1 compliant (broadcast to all-ones ip and
ethernet mac address) on the SCO platform specifically without any strange
ifconfig hacks. Many thanks go to the Kroger Co. for donating the
hardware and funding the development. [V3-0-1-KROGER-WORK-BRANCH] - funded
development.
David Hankins [Thu, 20 Jul 2006 16:04:03 +0000 (16:04 +0000)]
- Host declaration hardware addresses and client identifiers may only be
configured once. dhcpd will now fail to load config files that specify
multiple identifiers (previous versions would silently over-ride the
value with the later configured value). [ISC-Bugs #15533]
David Hankins [Wed, 19 Jul 2006 20:13:57 +0000 (20:13 +0000)]
- 'ignore client-updates;' now has behaviour that is different from
'deny client-updates;'. The client's request is not truly ignored,
rather it is encouraged. Should this value be configured, the server
updates DNS as though client-updates were set to 'deny'. That is, it
enters into DNS whatever it is configured to do already, provided it is
configured to. Then it sends a response to the client that lets the
client believe it is performing client updates (which it will), probably
for a different name. In essence, this lets the client do as it will,
ignoring this aspect of their request. [ISC-Bugs #16185]
David Hankins [Wed, 19 Jul 2006 18:00:36 +0000 (18:00 +0000)]
- In those cases where the DHCP software manufactures an IP header (to
transmit via bpf, lpf, etc), the IP TTL the software selects has been
increased from 16 to 128. This is intended to match Microsoft Windows
DHCP Client behaviour, to increase compatibility. [ISC-Bugs #15583 and
#3226]
David Hankins [Wed, 19 Jul 2006 17:14:55 +0000 (17:14 +0000)]
- A new DDNS related server option, update-conflict-detection, has been
added. If this option is enabled, dhcpd will perform normal DHCID
conflict resolution (the default). If this option is disabled, it will
instead trust the assigned name implicitly (removing any other bindings
on that name). This option has not been made available in dhclient.
[ISC-Bugs #16165]
David Hankins [Wed, 19 Jul 2006 16:44:47 +0000 (16:44 +0000)]
- Attempting to write a new lease file to replace a corrupt (due to
encountering non-retryable errors during writing) lease file should
no longer result in an infinite recursion. [ISC-Bugs #16265]
David Hankins [Mon, 17 Jul 2006 15:33:34 +0000 (15:33 +0000)]
- The log message emitted when the 'leased-address' value was not available
in dhcpd.conf "executable statements" has been updated to be more helpful.
Manpage information for this value has also been updated. [ISC-Bugs #16136]
David Hankins [Mon, 17 Jul 2006 15:21:45 +0000 (15:21 +0000)]
- A few lines of code that were failover-specific were moved within
#if defined() clauses so that compilation without failover could be
made possible. [ISC-Bugs #15987]
David Hankins [Sun, 9 Jul 2006 15:39:48 +0000 (15:39 +0000)]
- If the dhclient were to receive a DHCPNAK while it was in the RENEW
state (and consequently, had an active, 'bound' address and related
configuration options), it would fail to 'tear down' this information
before proceeding into INIT state. dhclient now iterates the dhclient-
script with the 'EXPIRE' action to cause these teardowns prior to entering
INIT state. [ISC-Bugs #16035]
David Hankins [Fri, 16 Jun 2006 19:26:45 +0000 (19:26 +0000)]
- Failover pairs now implement 'MAC Affinity' on leases moving from the
active to free states. Leases that belonged to the failover secondary
are moved to BACKUP state rather than FREE upon exiting EXPIRED state.
If lease rebalancing must move leases, it tries first to move leases
that belong to the peer in need.
- The server no longer sends POOLREQ messages unless the pool is severely
misbalanced in the peer's favor (see 'man dhcpd.conf' for more details).
- Pool rebalance events no longer happen upon successfully allocating a
lease. Instead, they happen on a schedule. See 'man dhcpd.conf' for the
min-balance and max-balance statements for more information.
David Hankins [Thu, 15 Jun 2006 17:52:06 +0000 (17:52 +0000)]
- A bug where leases not in ACTIVE state would get billed to billed classes
(classes with lease limitations) was fixed. Non-active leases OFFERed
to clients are no longer billed (but billing is checked before offering).
[ISC-Bugs #16168]
David Hankins [Tue, 6 Jun 2006 16:35:18 +0000 (16:35 +0000)]
- A new common (server or client) option, 'db-time-format local;', has
been added which prints the local time in /var/db/dhcpd.leases rather
than UTC. Thanks to a patch from Ken Lalonde. [ISC-Bugs #2678]