History log of /freebsd-9.3-release/sbin/dhclient/dhclient.c
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# 267654 19-Jun-2014 gjb

Copy stable/9 to releng/9.3 as part of the 9.3-RELEASE cycle.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation

# 247335 26-Feb-2013 jhb

MFC 239356,239564:
Teach dhclient to track changes in link state and to enter the reboot
state when the link on an interface goes up causing dhclient to attempt
to renew its existing lease.

PR: bin/166656


# 231277 09-Feb-2012 bapt

MFH r226345, r226464, r226879:
Make dhclient use a pid file. Modify the rc script accordingly, fix some bugs

Approved by: des (mentor)


# 230597 26-Jan-2012 dumbbell

MFC r228259:
Support domain-search in dhclient(8)

The "domain-search" option (option 119) allows a DHCP server to publish
a list of implicit domain suffixes used during name lookup. This option
is described in RFC 3397.

For instance, if the domain-search option says:
".example.org .example.com"
and one wants to resolve "foobar", the resolver will try:
1. "foobar.example.org"
2. "foobar.example.com"

The file /etc/resolv.conf is updated with a "search" directive if the
DHCP server provides "domain-search".

A regression test suite is included in this patch under
tools/regression/sbin/dhclient.

PR: bin/151940
Sponsored by: Yakaz (http://www.yakaz.com)

MFC r229000:
Invalid Domain Search option isn't considered as a fatal error

In the original Domain Search option patch, an invalid option value
would cause the whole lease to be rejected. However, DHCP servers who
emit such an invalid value are more common than I thought. With this new
patch, just the option is rejected, not the entire lease.

PR: bin/163431
Submitted by: Fabian Keil <fk@fabiankeil.de> (earlier version)
Reviewed by: Fabian Keil <fk@fabiankeil.de>
Sponsored by: Yakaz (http://www.yakaz.com)

MFC r229001:
Adapt testsuite following change in Domain Search error handling

In this testsuite, warning() and error() have the same behaviour.

PR: bin/163431
Sponsored by: Yakaz (http://www.yakaz.com)


# 225736 22-Sep-2011 kensmith

Copy head to stable/9 as part of 9.0-RELEASE release cycle.

Approved by: re (implicit)


# 209756 07-Jul-2010 brian

When dhclient obtains a lease, it runs dhclient-script and expects
it to configure the interface. When the script is complete, dhclient
monitors the routing socket and will terminate if its address is
deleted or if its interface is removed or brought down.

Because the routing socket is already open when dhclient-script is
run, dhclient ignores address deletions for 10 seconds after the
script was run.

If the address that will be obtained is already configured on the
interface before dhclient starts, and if dhclient-script takes more
than 10 seconds (perhaps due to dhclient-*-hooks latencies), on script
completion, dhclient will immediately and silently exit when it sees
the RTM_DELADDR routing message resulting from the script reassigning
the address to the interface.

This change logs dhclient's reason for exiting and also changes the
10 second timeout to be effective from completion of dhclient-script
rather than from when it was started.

We now ignore RTM_DELADDR and RTM_NEWADDR messages when the message
contains no interface address (which should not happen) rather than
exiting.

Not reviewed by: brooks (timeout)
MFC after: 3 weeks


# 193765 08-Jun-2009 brian

Fix an off by one error when we limit append/prepend text sizes based on our
internal buffer sizes.

When we 'append', assume we're appending to text. Some MS dhcp servers will
give us a string with the length including the trailing NUL. when we 'append
domain-name', we get something like "search x.y\000 z" in resolv.conf :(

MFC after: 1 week
Security: A buffer overflow (by one NUL byte) was possible.


# 183974 17-Oct-2008 brooks

Support the remaining options listed in dhcp-options(5) and RFC 2132.

PR: bin/127076
Submitted by: jkim
MFC after: 1 week


# 180130 30-Jun-2008 ed

Run the privileged dhclient process in its own session.

In the MPSAFE TTY branch, I noticed PTY's to be leaked, because
dhclient's privileged process was run inside the session of, say, the
login shell. Make sure we call setsid() here.

Approved by: philip (mentor), brooks


# 177501 22-Mar-2008 sam

Defer state change on disassociate to avoid unnecessarily dropping the
lease: track the current bssid and if it changes (as reported in an
assoc/reassoc) event only then kick the state machine. This gives us
immediate response when roaming but otherwise causes us to fallback on
the normal state machine.

Reviewed by: brooks, jhb
MFC after: 3 weeks


# 177500 22-Mar-2008 sam

correct syslog mask so LOG_DEBUG msgs are not lost

MFC after: 2 weeks


# 166602 09-Feb-2007 emaste

Implement RFC3442, the Classless Static Route option.

The original DHCP specification includes a route option but it supports
only class-based routes. RFC3442 adds support for specifying the netmask
width for each static route. A variable length encoding is used to minimize
the size of this option.

PR: bin/99534
Submitted by: Andrey V. Elsukov <bu7cher@yandex.ru>
Reviewed by: brooks


# 166330 29-Jan-2007 brooks

Actually implement rev 1.12 for host names and NIS domain names. We
were removing the invalid option, but still rejecting the lease.

Reported by: Yoshihiko Sarumaru <mistral at imasy dot or dot jp>


# 161514 21-Aug-2006 brian

Revert the addition of -p. It's flawed in that dhclient should not run
on an interface without carrier. devd should be used instead to handle
link up/down events.

Put on the right path by: brooks, sam


# 161411 17-Aug-2006 brian

Correct usage()


# 161410 17-Aug-2006 brian

Add a -p switch to dhclient. The switch tells dhclient to persist
despite the interface link status.

Add dhclient_flags_iface and background_dhclient_iface rc.conf options.
(where iface is a specific interface). These can be used to give
interface specific flags to dhclient.

Reviewed by: brooks@


# 160089 03-Jul-2006 jkim

Send client identifier unconditionally. My ancient D-Link router response
with NACK if I don't set it. Setting 'option dhcp-client-identifier' is
alternative but it is inconvenient because I have to keep the list of
all MAC addresses. As bin/94743 pointed out, it is always sent from
Windows clients and I found Mac OS X does the same.

OK'd by: brooks


# 158856 23-May-2006 imp

Remove 'n' from the getopt string. There's no -n option that is
parsed, so it winds up at usage anyway.

Add 'b' to the usage summary. Noticed by Ben Mesander.


# 158353 07-May-2006 brooks

Be more like Windows and Linux and send our hostname in the host-name
option if none is given in the config file. Also add #ifdefd out
support for sending a client ID based on our MAC address.

PR: bin/94743, bin/76401
Submitted by: Frank Behrens <frank at pinky dot sax dot de>
X-MFC after: 6.1-RELEASE


# 154161 10-Jan-2006 brooks

Allow users to add aliases to the interface.

PR: bin/87465 (different solution used)
MFC after: 1 week


# 153287 10-Dec-2005 brooks

When we get a bogus hostname in an option, drop the option rather than
refusing the lease. This allow obtaining leases on misadministered
networks that use host names with underscores in them.

MFC After: 3 days


# 149727 02-Sep-2005 brooks

When we supersed the subnet-mask, write the forced value to the lease
file. This is what the ISC client does.

Submitted by: Rostislav Krasny <rosti dot bsd at gmail dot com>


# 149639 30-Aug-2005 brooks

Introduce a new helper function check_search() derived for res_hnok to
check the domain-name parameter according to the rules for "search"
strings as documented in resolv.conf(5). Specifically, the string must
be no more than 256 bytes long and contain no more than six valid domain
names separated by white space.

The previous unchecked values could result in a mangled resolv.conf
file which could effectively deny access to local sites. This is not
a security issue as rogue dhcp servers could already do this without
sending invalid strings.

Reviewed by: cperciva
MFC After: 3 days


# 149399 23-Aug-2005 brooks

Add __FBSDID to all .c files in dhclient to aid in determining file
versions when dealing with user problems.


# 148465 27-Jul-2005 brooks

Don't reject packets with server names containing characters that are
not allowed in domain names. RFC 2132 does not list valid or invalid
characters and the ISC client accepts anything here.

Reported by: ps


# 148373 25-Jul-2005 sam

treat REASSOC events just like ASSOC

MFC after: 3 days


# 147689 30-Jun-2005 brooks

Don't complain when we receive smtp, pop, nntp, www, finger, and irc
server options.

Reported by: Max Boyarov <max_b at tut dot by>
Approved by: re (dhclient blanket)


# 147686 30-Jun-2005 brooks

People like to do RFC violating things with the domain-name option and
include a space seperated list of domains instead of the domain of the
host. This is supported on too many platforms to break for now so,
remove validation of this option for the moment.

The correct solution longer term is to implement RFC 3397 support and
then treat domain-name options containing space seperated lists of
domains as domain-search options for backwards compatability.

Approved by: re (dhclient blanket)


# 147351 13-Jun-2005 brooks

Avoid a null pointer dereference by not expiring our lease if we don't
have an active one.

Submitted by: sam
Reported by: James Snow <snow at teardrop dot org>
Approved by: re (dhclient blanket)


# 147106 07-Jun-2005 brooks

Fix build on 64-bit platforms where time_t is 64 bit. Since where
talking about time related to leases, it should be OK to cast these to
(int)s rather than using intmax_t.

Submitted by: ru
Pointy hat: brooks


# 147085 07-Jun-2005 brooks

Define _PATH_VAREMPTY.

Add a -b option to background immediatly.

Add support for 802.11 routing messages to "instantly" renegotiate
at lease when we associate with a new network.

Submitted by: sam


# 147073 07-Jun-2005 brooks

This commit was generated by cvs2svn to compensate for changes in r147072,
which included commits to RCS files with non-trunk default branches.


# 147072 07-Jun-2005 brooks

Import the OpenBSD dhclient as shipped with OpenBSD-3.7 (the tag
OPENBSD_3_7).