Go to file
2015-12-17 22:42:24 +00:00
compat Use a GCC pragma directive to mask off the warning about not careing about the read result, because we don't. 2015-11-13 11:27:38 +00:00
crypt Fix compile on kFreeBSD thanks to JS Junior. 2015-09-15 10:13:53 +00:00
dev Update copyrights to 2015. 2015-01-02 20:03:28 +00:00
dhcpcd-hooks Add support for Chrony, fixes [03943daba7]. 2015-09-07 10:58:04 +00:00
test Fix another gcc warning. 2015-03-17 15:18:41 +00:00
arp.c Test for ETHERTYPE_IP as the protocol type in the ARP BPF filter. 2015-12-15 14:45:55 +00:00
arp.h Add an free callback to ARP states so that they can notify their parents they 2015-06-25 15:36:28 +00:00
auth.c Check fclose(3) writes correctly, thanks to Bob. 2015-06-12 09:54:09 +00:00
auth.h Fix compile on BSD 2015-05-12 20:07:34 +00:00
bpf-filter.h Test for ETHERTYPE_IP as the protocol type in the ARP BPF filter. 2015-12-15 14:45:55 +00:00
common.c Fix 2 NULL de-references, thanks to Christos. 2015-12-04 12:41:25 +00:00
common.h Obey the hostname_short option even for FQDN hostnames passed via config. 2015-11-13 11:18:44 +00:00
config-null.mk Compile embedded in without a config 2014-04-23 19:09:03 +00:00
configure autoconf --includedir is where include files are to be installed, not where we 2015-12-15 23:06:59 +00:00
control.c Simplify the socket code by adding a custom function instead of 2015-08-04 08:32:40 +00:00
control.h Update copyrights to 2015. 2015-01-02 20:03:28 +00:00
defs.h Release dhcpcd-6.9.4 2015-11-30 15:31:02 +00:00
dev.c Fix compile on Linux. 2015-05-14 13:45:13 +00:00
dev.h Update copyrights to 2015. 2015-01-02 20:03:28 +00:00
dhcp6.c Now all interfaces are loaded, don't try to load one for delegation. 2015-12-17 09:22:50 +00:00
dhcp6.h Fix compile without IPv6. 2015-12-03 20:43:41 +00:00
dhcp-common.c copy the configured hostname using the buffer length, 2015-12-15 19:51:49 +00:00
dhcp-common.h Obey the hostname_short option even for FQDN hostnames passed via config. 2015-11-13 11:18:44 +00:00
dhcp.c Send gratuitous ARP each time we apply our IP address. 2015-12-15 22:51:36 +00:00
dhcp.h Add a -N --renew option to renew any existing address early, similar to the 2015-11-13 10:37:27 +00:00
dhcpcd-definitions.conf Introduce the optional option type, which allows embedded options to be 2015-10-19 09:19:45 +00:00
dhcpcd-embedded.c.in Adjust comment to remove +x bit. 2015-02-08 13:24:14 +00:00
dhcpcd-embedded.h.in Handle ND options in the same way we handle DHCP and DHCPv6 options. 2015-05-14 19:46:21 +00:00
dhcpcd-run-hooks.8.in Clarify IPV4LL. 2015-06-29 15:06:21 +00:00
dhcpcd-run-hooks.in Minor optimisation. 2015-07-10 08:43:59 +00:00
dhcpcd.8.in Fix the manpage with reality, [9e55971edd]. 2015-12-04 14:54:45 +00:00
dhcpcd.c When stopping and starting interfaces, just toggle the active flag 2015-12-17 12:37:07 +00:00
dhcpcd.conf Move route state into it's own flag. 2015-07-28 13:58:31 +00:00
dhcpcd.conf.5.in Introduce the optional option type, which allows embedded options to be 2015-10-19 09:19:45 +00:00
dhcpcd.h Instead of maintaining a seperate list, instead mark each interface as active 2015-12-17 02:34:36 +00:00
duid.c Fix compile on kFreeBSD thanks to JS Junior. 2015-09-15 10:13:53 +00:00
duid.h Update copyrights to 2015. 2015-01-02 20:03:28 +00:00
eloop.c Improve eloop api so we don't force a delete write parameter when 2015-05-14 07:35:49 +00:00
eloop.h Improve eloop api so we don't force a delete write parameter when 2015-05-14 07:35:49 +00:00
genembedc Source now compiles on Solaris, just missing the if-sun.c support so 2014-05-21 23:07:52 +00:00
genembedh Handle ND options in the same way we handle DHCP and DHCPv6 options. 2015-05-14 19:46:21 +00:00
GNUmakefile Fix dependency and test targets 2014-07-31 00:57:47 +00:00
iconfig.mk Load config.{h,mk} when building tests. Fixes [1c11c59282]. 2014-05-30 21:47:14 +00:00
if-bsd.c Instead of maintaining a seperate list, instead mark each interface as active 2015-12-17 02:34:36 +00:00
if-linux-wext.c syslogd(8) may not always be running before dhcpcd so any startup errors are 2015-03-17 23:46:38 +00:00
if-linux.c Instead of maintaining a seperate list, instead mark each interface as active 2015-12-17 02:34:36 +00:00
if-options.c Remove this pointless debug. 2015-12-17 13:51:56 +00:00
if-options.h Add a -N --renew option to renew any existing address early, similar to the 2015-11-13 10:37:27 +00:00
if-sun.c Update copyrights to 2015. 2015-01-02 20:03:28 +00:00
if.c Check active before link status when sorting 2015-12-17 12:35:33 +00:00
if.h Instead of maintaining a seperate list, instead mark each interface as active 2015-12-17 02:34:36 +00:00
ipv4.c When parsing the routing table, create an interface for any interfaces dhcpcd 2015-12-17 00:25:03 +00:00
ipv4.h Add IPv4 address selection from route code so platform handlers don't 2015-09-10 08:32:37 +00:00
ipv4ll.c Fix TEST for IPv4LL. 2015-09-19 16:43:12 +00:00
ipv4ll.h Add IPv4LL subnet routes like the kernel does. 2015-08-07 08:49:07 +00:00
ipv6.c When parsing the routing table, create an interface for any interfaces dhcpcd 2015-12-17 00:25:03 +00:00
ipv6.h I was wrong about Linux allowing userland to mark addresses as temporary, 2015-09-07 18:14:31 +00:00
ipv6nd.c ND6 and DHCPv6 should only work on active interfaces. 2015-12-17 09:08:09 +00:00
ipv6nd.h Backout commit [f20a30175f] as the behaviour can be trigged on Linux as well. 2015-07-22 09:59:32 +00:00
Makefile Revert this part of prior patch. 2015-09-08 12:22:38 +00:00
Makefile.inc If CC is not defined, default it to cc 2014-02-28 20:32:34 +00:00
README Note that systemd/udev leaks memory where-as the eudev fork of udev does not. 2015-12-17 22:42:24 +00:00
script.c Fix test mode by checking for an IPv4LL address 2015-09-19 16:31:43 +00:00
script.h Bump copyright here as well. 2015-01-30 10:46:53 +00:00

dhcpcd - DHCP client daemon
Copyright (c) 2006-2015 Roy Marples <roy@marples.name>


Installation
------------
./configure; make; make install
man dhcpcd for command line options
man dhcpcd.conf for configuration options
man dhcpcd-run-hooks to learn how to hook scripts into dhcpcd events


Notes
-----
If you're cross compiling you may need set the platform if OS is different
from the host.
--target=sparc-sun-netbsd5.0

If you're building for an MMU-less system where fork() does not work, you
should ./configure --disable-fork.
This also puts the --no-background flag on and stops the --background flag
from working.

You can change the default dirs with these knobs.
For example, to satisfy FHS compliance you would do this:-
./configure --libexecdir=/lib/dhcpcd dbdir=/var/lib/dhcpcd

We now default to using -std=c99. For 64-bit linux, this always works, but
for 32-bit linux it requires either gnu99 or a patch to asm/types.h.
Most distros patch linux headers so this should work fine.
linux-2.6.24 finally ships with a working 32-bit header.
If your linux headers are older, or your distro hasn't patched them you can
set CSTD=gnu99 to work around this.

Some BSD systems do not allow the manipulation of automatically added subnet
routes. You can find discussion here:
    http://mail-index.netbsd.org/tech-net/2008/12/03/msg000896.html
BSD systems where this has been fixed or is known to work are:
    NetBSD-5.0
    FreeBSD-10.0

Some BSD systems protect against IPv6 NS/NA messages by ensuring that the
source address matches a prefix on the recieved by a RA message.
This is an error as the correct check is for on-link prefixes as the
kernel may not be handling RA itself.
BSD systems where this has been fixed or is known to work are:
    NetBSD-7.0
    OpenBSD-5.0
    patch submitted against FreeBSD-10.0

Some BSD systems do not announce IPv6 address flag changes, such as
IN6_IFF_TENTATIVE, IN6_IFF_DUPLICATED, etc. On these systems,
dhcpcd will poll a freshly added address until either IN6_IFF_TENTATIVE is
cleared or IN6_IFF_DUPLICATED is set and take action accordingly.
BSD systems where this has been fixed or is known to work are:
    NetBSD-7.0

OpenBSD will always add it's own link-local address if no link-local address
exists, because it doesn't check if the address we are adding is a link-local
address or not.

Some BSD systems do not announce cached neighbour route changes based
on reachability to userland. For such systems, IPv6 routers will always
be assumed to be reachable until they either stop being a router or expire.
BSD systems where this has been fixed or is known to work are:
    NetBSD-7.99.3

Linux prior to 3.17 won't allow userland to manage IPv6 temporary addresses.
Either upgrade or don't allow dhcpcd to manage the RA,
so don't set either "ipv6ra_own" or "slaac private" in dhcpcd.conf if you
want to have working IPv6 temporary addresses.
SLAAC private addresses are just as private, just stable.

ArchLinux presently sanitises all kernel headers to the latest version
regardless of the version for your CPU. As such, Arch presently ships a
3.12 kernel with 3.17 headers which claim that it suppors temporary address
management and no automatic prefix route generation, both of which are
obviously false. You will have to patch support either in the kernel or
out of the headers (or dhcpcd itself) to have correct operation.

We try and detect how dhcpcd should interact with system services at runtime.
If we cannot auto-detect how do to this, or it is wrong then
you can change this by passing shell commands to --serviceexists,
--servicecmd and optionally --servicestatus to ./configure or overriding
the service variables in a hook.

Some systems have /dev management systems and some of these like to rename
interfaces. As this system would listen in the same way as dhcpcd to new
interface arrivals, dhcpcd needs to listen to the /dev management sytem
instead of the kernel. However, if the /dev management system breaks, stops
working, or changes to a new one, dhcpcd should still try and continue to work.
To facilitate this, dhcpcd allows a plugin to load to instruct dhcpcd when it
can use an interface. As of the time of writing only udev support is included.
You can disable this with --without-dev, or without-udev.
NOTE: in Gentoo at least, sys-fs/udev as provided by systemd leaks memory
sys-fs/eudev, the fork of udev does not and as such is recommended.

To shrink dhcpcd you can disable IPv4 or IPv6:
	--disable-inet
	--disable-inet6

You can also move the embedded extended configuration from the dhcpcd binary
to an external file (LIBEXECDIR/dhcpcd-definitions.conf)
	--disable-embedded
If dhcpcd cannot load this file at runtime, dhcpcd will work but will not be
able to decode any DHCP/DHCPv6 options that are not defined by the user
in /etc/dhcpcd.conf.

To prepare dhcpcd for import into a platform source tree (like NetBSD)
you can use the make import target to create /tmp/dhcpcd-$version and
populate it with all the source files and hooks needed.
In this instance, you may wish to disable some configured tests when
the binary has to run on older versions which lack support, such as getline.
./configure --without-getline

Building for distribution (ie making a dhcpcd source tarball) now requires
gmake-4 or any BSD make.


Hooks
-----
Not all the hooks in dhcpcd-hooks are installed by default.
By default we install 01-test, 02-dump, 10-mtu, 10-wpa_supplicant,
15-timezone, 20-resolv.conf, 29-lookup-hostname and 30-hostname.
The default dhcpcd.conf disables the lookup-hostname hook by default.
The configure program attempts to find hooks for systems you have installed.
To add more simply
./configure -with-hook=ntp.conf

Some system services expose the name of the service we are in,
by default dhcpcd will pick RC_SVCNAME from the environment.
You can override this in CPPFLAGS+= -DRC_SVCNAME="YOUR_SVCNAME".
This is important because dhcpcd will scrub the environment aside from $PATH
before running hooks.
This variable could be used to facilitate service re-entry so this chain could
happen in a custom OS hook:
  dhcpcd service marked inactive && dhcpcd service starts
  dependant services are not started because dhcpcd is inactive (not stopped)
  dhcpcd hook tests if $if_up = true and $af_waiting is empty or unset.
  if true, mark the dhcpcd service as started and then start dependencies
  if false and the dhcpcd service was previously started, mark as inactive and
     stop any dependant services.


Compatibility
-------------
dhcpcd-5.0 is only fully command line compatible with dhcpcd-4.0
For compatibility with older versions, use dhcpcd-4.0


ChangeLog
---------
We no longer supply a ChangeLog.
However, you're more than welcome to read the commit log at
http://roy.marples.name/projects/dhcpcd/timeline/