ndhc/ndhc
Nicholas J. Kain 5a38e49a81 Update get_option() to use the function from busybox's udhcp variant;
it's much easier to read.  The original one is indecipherable, and thus
it is difficult to verify correctness.
2010-11-14 03:41:36 -05:00
..
AUTHORS.udhcp Initial commit. 2010-11-12 04:02:18 -05:00
clientpacket.c Replace sizeof(struct dhcpMessage) with DHCP_SIZE. 2010-11-14 02:01:17 -05:00
clientpacket.h Fix header include guards to not use leading underscores. 2010-11-13 06:51:57 -05:00
CMakeLists.txt Rename dhcpc.c to ndhc.c. 2010-11-12 18:46:02 -05:00
COPYING Initial commit. 2010-11-12 04:02:18 -05:00
dhcpc.h Fix header include guards to not use leading underscores. 2010-11-13 06:51:57 -05:00
dhcpd.h Update get_option() to use the function from busybox's udhcp variant; 2010-11-14 03:41:36 -05:00
MODIFICATIONS Initial commit. 2010-11-12 04:02:18 -05:00
ndhc-defines.h Make write() and sendto() properly handle short writes and errors in ndhc. 2010-11-12 18:44:49 -05:00
ndhc.8 Initial commit. 2010-11-12 04:02:18 -05:00
ndhc.c Enforce upper and lower sanity bounds on lease times. 2010-11-13 19:37:08 -05:00
options.c Update get_option() to use the function from busybox's udhcp variant; 2010-11-14 03:41:36 -05:00
options.h Update get_option() to use the function from busybox's udhcp variant; 2010-11-14 03:41:36 -05:00
packet.c Replace sizeof(struct dhcpMessage) with DHCP_SIZE. 2010-11-14 02:01:17 -05:00
packet.h Don't zero-pad sent raw dhcp packets and clean up packet.c. 2010-11-14 01:53:23 -05:00
README Fix typos in README. 2010-11-12 08:43:46 -05:00
script.c Formatting fixes. 2010-11-13 19:14:16 -05:00
script.h Fix header include guards to not use leading underscores. 2010-11-13 06:51:57 -05:00
socket.c Clean up and comment listen_socket(). 2010-11-14 00:46:02 -05:00
socket.h Clean up parameter names and comment read_interface(). 2010-11-14 00:41:32 -05:00
TODO Initial commit. 2010-11-12 04:02:18 -05:00

ndhc client
--------------------

The ndhc client negotiates a lease with the DHCP server and notifies
ifchd when a leases is obtained or lost.


command line options
-------------------

The command line options for the ndhc client are:

-c, --clientid=CLIENTID         Client identifier
-H, --hostname=HOSTNAME         Client hostname
-h,				Alias for -H
-f, --foreground                Do not fork after getting lease
-b, --background                Fork to background if lease cannot be
                                immediately negotiated.
-i, --interface=INTERFACE       Interface to use (default: eth0)
-n, --now                       Exit with failure if lease cannot be
                                immediately negotiated.
-q, --quit                      Quit after obtaining lease
-r, --request=IP                IP address to request (default: none)
-v, --version                   Display version


If the requested IP address cannot be obtained, the client accepts the
address that the server offers.


note on ndhc's random seed
---------------------------

ndhc will seed its random number generator (used for generating xids)
by reading /dev/urandom. If you have a lot of embedded systems on the same
network, with no entropy, you can either seed /dev/urandom by a method of
your own, or doing the following on startup:

ifconfig eth0 > /dev/urandom

in order to seed /dev/urandom with some data (mac address) unique to your
system. If reading /dev/urandom fails, ndhc will fall back to its old
behavior of seeding with time(0).


signals accepted by ndhc
-------------------------

ndhc also responds to SIGUSR1 and SIGUSR2. SIGUSR1 will force a renew state,
and SIGUSR2 will force a release of the current lease, and cause ndhc to
go into an inactive state (until it is killed, or receives a SIGUSR1). You do
not need to sleep between sending signals, as signals received are processed
sequentially in the order they are received.