sync to udhcp 0.9.8
[oweals/busybox.git] / networking / udhcp / README.udhcpc
1 udhcp client (udhcpc)
2 --------------------
3
4 The udhcp client negotiates a lease with the DHCP server and notifies
5 a set of scripts when a leases is obtained or lost.
6
7
8 command line options
9 -------------------
10
11 The command line options for the udhcp client are:
12
13 -c, --clientid=CLIENTID         Client identifier
14 -H, --hostname=HOSTNAME         Client hostname
15 -h,                             Alias for -H
16 -f, --foreground                Do not fork after getting lease
17 -b, --background                Fork to background if lease cannot be
18                                 immediately negotiated.
19 -i, --interface=INTERFACE       Interface to use (default: eth0)
20 -n, --now                       Exit with failure if lease cannot be
21                                 immediately negotiated.
22 -p, --pidfile=file              Store process ID of daemon in file
23 -q, --quit                      Quit after obtaining lease
24 -r, --request=IP                IP address to request (default: none)
25 -s, --script=file               Run file at dhcp events (default:
26                                 /usr/share/udhcpc/default.script)
27 -v, --version                   Display version
28
29
30 If the requested IP address cannot be obtained, the client accepts the
31 address that the server offers.
32
33
34 udhcp client scripts
35 -------------------
36
37 When an event occurs, udhcpc calls the action script. The script by
38 default is /usr/share/udhcpc/default.script but this can be changed via 
39 the command line arguments. The three possible arguments to the script 
40 are:
41
42         deconfig: This argument is used when udhcpc starts, and
43         when a leases is lost. The script should put the interface in an
44         up, but deconfigured state, ie: ifconfig $interface 0.0.0.0.
45         
46         bound: This argument is used when udhcpc moves from an
47         unbound, to a bound state. All of the paramaters are set in
48         enviromental variables, The script should configure the interface,
49         and set any other relavent parameters (default gateway, dns server, 
50         etc).
51         
52         renew: This argument is used when a DHCP lease is renewed. All of
53         the paramaters are set in enviromental variables. This argument is
54         used when the interface is already configured, so the IP address,
55         will not change, however, the other DHCP paramaters, such as the
56         default gateway, subnet mask, and dns server may change.
57
58         nak: This argument is used with udhcpc receives a NAK message.
59         The script with the deconfig argument will be called directly
60         afterwards, so no changes to the network interface are neccessary.
61         This hook is provided for purely informational purposes (the
62         message option may contain a reason for the NAK).
63
64 The paramaters for enviromental variables are as follows:
65
66         $HOME           - The set $HOME env or "/"
67         $PATH           - the set $PATH env or "/bin:/usr/bin:/sbin:/usr/sbin"
68         $1              - What action the script should perform
69         interface       - The interface this was obtained on
70         ip              - The obtained IP
71         siaddr          - The bootp next server option
72         sname           - The bootp server name option
73         boot_file       - The bootp boot file option
74         subnet          - The assigend subnet mask
75         timezone        - Offset in seconds from UTC
76         router          - A list of routers
77         timesvr         - A list of time servers
78         namesvr         - A list of IEN 116 name servers
79         dns             - A list of DNS server
80         logsvr          - A list of MIT-LCS UDP log servers
81         cookiesvr       - A list of RFC 865 cookie servers
82         lprsvr          - A list of LPR servers
83         hostname        - The assigned hostname
84         bootsize        - The length in 512 octect blocks of the bootfile
85         domain          - The domain name of the network
86         swapsvr         - The IP address of the client's swap server
87         rootpath        - The path name of the client's root disk
88         ipttl           - The TTL to use for this network
89         mtu             - The MTU to use for this network
90         broadcast       - The broadcast address for this network
91         ntpsrv          - A list of NTP servers
92         wins            - A list of WINS servers
93         lease           - The lease time, in seconds
94         dhcptype        - DHCP message type (safely ignored)
95         serverid        - The IP of the server
96         message         - Reason for a DHCPNAK
97         tftp            - The TFTP server name
98         bootfile        - The bootfile name
99
100 additional options are easily added in options.c.
101
102
103 note on udhcpc's random seed
104 ---------------------------
105
106 udhcpc will seed its random number generator (used for generating xid's)
107 by reading /dev/urandom. If you have a lot of embedded systems on the same
108 network, with no entropy, you can either seed /dev/urandom by a method of
109 your own, or doing the following on startup:
110
111 ifconfig eth0 > /dev/urandom
112
113 in order to seed /dev/urandom with some data (mac address) unique to your
114 system. If reading /dev/urandom fails, udhcpc will fall back to its old
115 behavior of seeding with time(0).
116
117
118 signals accepted by udhcpc
119 -------------------------
120
121 udhcpc also responds to SIGUSR1 and SIGUSR2. SIGUSR1 will force a renew state,
122 and SIGUSR2 will force a release of the current lease, and cause udhcpc to
123 go into an inactive state (until it is killed, or receives a SIGUSR1). You do
124 not need to sleep between sending signals, as signals received are processed
125 sequencially in the order they are received.
126
127
128 compile time options
129 -------------------
130
131 options.c contains a set of dhcp options for the client:
132
133         name[10]: The name of the option as it will appear in scripts
134         
135         flags: The type of option, as well as if it will be requested
136         by the client (OPTION_REQ)
137
138         code: The DHCP code for this option
139