Go to file
Roy Marples 369d1314de Rename dhcp6_prefix to delegated_dhcp6_prefix incase a user makes a
DHCPv6 option just called prefix.
Send delegated interfaces to listeners as well.
2014-10-03 17:54:06 +00:00
compat Remove vis based encoding - instead expand the DHCP option encoding to a 2014-10-01 18:32:03 +00:00
crypt Fix import so that matching system vs local headers are not imported. 2014-07-30 10:58:20 +00:00
dev We changed this file in 2014 2014-03-06 09:44:00 +00:00
dhcpcd-hooks Remove vis based encoding - instead expand the DHCP option encoding to a 2014-10-01 18:32:03 +00:00
test Fix dependency and test targets 2014-07-31 00:57:47 +00:00
arp.c Add a write callback to eloop so we know when we can write to the socket. 2014-09-04 19:30:47 +00:00
arp.h Changed in 2014 2014-01-31 12:45:55 +00:00
auth.c Source now compiles on Solaris, just missing the if-sun.c support so 2014-05-21 23:07:52 +00:00
auth.h Add -Wconversion to debug CFLAGS and fix fallout. 2014-03-27 22:14:52 +00:00
bpf-filter.h Move the bpf filter len to a define. 2014-04-01 10:17:09 +00:00
common.c Source now compiles on Solaris, just missing the if-sun.c support so 2014-05-21 23:07:52 +00:00
common.h be32enc is missing on OpenBSD, so provide a configure test. 2014-06-05 13:53:20 +00:00
config-null.mk Compile embedded in without a config 2014-04-23 19:09:03 +00:00
configure Remove vis based encoding - instead expand the DHCP option encoding to a 2014-10-01 18:32:03 +00:00
control.c Add an unprivileged control socket so that normal users can 2014-09-14 19:12:57 +00:00
control.h Fix FD_LISTEN | FD_UNPRIV flags 2014-09-15 22:50:44 +00:00
defs.h Release dhcpcd-6.4.7 2014-09-27 07:43:12 +00:00
dev.c Fix compile for dev manager. 2014-09-04 19:32:25 +00:00
dev.h Fix dev warning. 2014-05-24 20:11:42 +00:00
dhcp6.c Rename dhcp6_prefix to delegated_dhcp6_prefix incase a user makes a 2014-10-03 17:54:06 +00:00
dhcp6.h Rename dhcp6_prefix to delegated_dhcp6_prefix incase a user makes a 2014-10-03 17:54:06 +00:00
dhcp-common.c The decode and print functions should not including the trailing NUL 2014-10-02 13:21:29 +00:00
dhcp-common.h Remove vis based encoding - instead expand the DHCP option encoding to a 2014-10-01 18:32:03 +00:00
dhcp.c Remove vis based encoding - instead expand the DHCP option encoding to a 2014-10-01 18:32:03 +00:00
dhcp.h Fix the number of interfaces we actually send 2014-09-02 23:41:52 +00:00
dhcpcd-definitions.conf Remove vis based encoding - instead expand the DHCP option encoding to a 2014-10-01 18:32:03 +00:00
dhcpcd-embedded.c.in Source now compiles on Solaris, just missing the if-sun.c support so 2014-05-21 23:07:52 +00:00
dhcpcd-embedded.h.in We changed these files in 2014 2014-01-14 14:42:00 +00:00
dhcpcd-run-hooks.8.in Rename dhcp6_prefix to delegated_dhcp6_prefix incase a user makes a 2014-10-03 17:54:06 +00:00
dhcpcd-run-hooks.in ifclass= separates psuedo interfaces to avoid option collision. 2014-07-08 19:25:21 +00:00
dhcpcd.8.in Mention the encoding in -V 2014-10-02 08:35:31 +00:00
dhcpcd.c Remove vis based encoding - instead expand the DHCP option encoding to a 2014-10-01 18:32:03 +00:00
dhcpcd.conf Add a sample controlgroup directive to dhcpcd.conf to make setup easier. 2014-09-05 14:14:28 +00:00
dhcpcd.conf.5.in dhcpcd has been able to handle IPv6 routing on BSD for a while now. 2014-10-03 11:07:41 +00:00
dhcpcd.h Add an unprivileged control socket so that normal users can 2014-09-14 19:12:57 +00:00
duid.c Move net.c to if.c. 2014-04-25 10:42:37 +00:00
duid.h Move net.c to if.c. 2014-04-25 10:42:37 +00:00
eloop.c No longer need the header stdarg.h 2014-09-13 14:57:45 +00:00
eloop.h Punt this now un-used function eloop_q_timeouts_delete 2014-09-13 14:55:55 +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 Remove hard coded DHCP/DHCPv6 options and then to dhcpcd-definitions.conf 2013-12-02 16:42:09 +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 Fix IPv6 address announcements from kernel generated link-local addresses. 2014-10-03 14:43:35 +00:00
if-linux-wext.c Allow SSIDs with non printable characters to be used in ssid selection in 2014-09-10 10:00:08 +00:00
if-linux.c Fix a compile problem on Linux with IPv6 disabled. 2014-09-27 07:37:15 +00:00
if-options.c Remove vis based encoding - instead expand the DHCP option encoding to a 2014-10-01 18:32:03 +00:00
if-options.h When requesting a IA_PD and another IA type, create a psuedo interface 2014-07-07 14:41:18 +00:00
if-sun.c Add a compat syslog function if the libc syslog does not support LOG_PERROR. 2014-05-24 13:08:29 +00:00
if.c Fix compile on BSD 2014-09-18 07:02:43 +00:00
if.h Remove all instances of if_indextoname and add a replacement 2014-09-18 00:35:03 +00:00
ipv4.c We should use NBBY rather than a magic 8. 2014-07-05 19:47:22 +00:00
ipv4.h Sorting interfaces is an IPv4 specific task, so move it into ipv4.c 2014-04-28 12:47:33 +00:00
ipv4ll.c Fix compile warning 2014-06-07 21:05:19 +00:00
ipv4ll.h White space police 2013-04-04 20:31:04 +00:00
ipv6.c Fix compile on Linux. 2014-09-22 10:27:57 +00:00
ipv6.h Detect removal of IPv6 routes on BSD 2014-09-22 09:33:29 +00:00
ipv6nd.c The decode and print functions should not including the trailing NUL 2014-10-02 13:21:29 +00:00
ipv6nd.h Fix compile without -DINET6 2014-09-14 06:53:13 +00:00
Makefile Redirect fd 3 to config.log. 2014-09-21 11:39:02 +00:00
Makefile.inc If CC is not defined, default it to cc 2014-02-28 20:32:34 +00:00
README SVCNAME -> RC_SVCNAME 2014-09-12 08:34:47 +00:00
script.c Rename dhcp6_prefix to delegated_dhcp6_prefix incase a user makes a 2014-10-03 17:54:06 +00:00
script.h Implement a send queue for each control fd. 2014-09-05 12:28:05 +00:00

dhcpcd - DHCP client daemon
Copyright (c) 2006-2014 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 are:
    NetBSD-5.0

Some BSD systems protect against IPv6 NS/NA messages by ensuring that the
source address matches an address/prefix on the interface.
This is an error as the correct check is for on-link prefixes.
As such, on these systems stateful addressing via DHCPv6 may cause issues
trying to reach other neighbours.
BSD systems where this is known to be a problem
    Occured in NetBSD-5.0, fixed in NetBSD-6.99.29
    Occured in OpenBSD-4.2, fixed in OpenBSD-5.0

On FreeBSD-10 dhcpcd cannot delete IPv4 subnet routes.
On OpenBSD-5.5 dhcpcd cannot delete IPv4 subnet routes or IPv6 prefixes.

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

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_oneup && $if_ipwaited
  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/