| udhcp client (udhcpc) |
| -------------------- |
| |
| The udhcp client negotiates a lease with the DHCP server and notifies |
| a set of scripts when a leases is obtained or lost. |
| |
| |
| command line options |
| ------------------- |
| |
| The command line options for the udhcp client are: |
| |
| -c, --clientid=CLIENTID Set client identifier. Type is first char. |
| -C, --clientid-none Suppress default client identifier |
| -V, --vendorclass=CLASSID Set vendor class identifier |
| -H, --hostname=HOSTNAME Client hostname |
| -h, Alias for -H |
| -F, --fqdn=FQDN Client fully qualified domain name |
| -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. |
| -p, --pidfile=file Store process ID of daemon in file |
| -q, --quit Quit after obtaining lease |
| -r, --request=IP IP address to request (default: none) |
| -s, --script=file Run file at dhcp events (default: |
| /usr/share/udhcpc/default.script) |
| -v, --version Display version |
| |
| |
| If the requested IP address cannot be obtained, the client accepts the |
| address that the server offers. |
| |
| |
| udhcp client scripts |
| ------------------- |
| |
| When an event occurs, udhcpc calls the action script. udhcpc never does |
| any configuration of the network interface itself, but instead relies on |
| a set of scripts. The script by default is |
| /usr/share/udhcpc/default.script but this can be changed via the command |
| line arguments. The three possible arguments to the script are: |
| |
| deconfig: This argument is used when udhcpc starts, and |
| when a leases is lost. The script must put the interface in an |
| up, but deconfigured state, ie: ifconfig $interface 0.0.0.0. |
| |
| bound: This argument is used when udhcpc moves from an |
| unbound, to a bound state. All of the paramaters are set in |
| enviromental variables, The script should configure the interface, |
| and set any other relavent parameters (default gateway, dns server, |
| etc). |
| |
| renew: This argument is used when a DHCP lease is renewed. All of |
| the paramaters are set in enviromental variables. This argument is |
| used when the interface is already configured, so the IP address, |
| will not change, however, the other DHCP paramaters, such as the |
| default gateway, subnet mask, and dns server may change. |
| |
| nak: This argument is used with udhcpc receives a NAK message. |
| The script with the deconfig argument will be called directly |
| afterwards, so no changes to the network interface are neccessary. |
| This hook is provided for purely informational purposes (the |
| message option may contain a reason for the NAK). |
| |
| The paramaters for enviromental variables are as follows: |
| |
| $HOME - The set $HOME env or "/" |
| $PATH - the set $PATH env or "/bin:/usr/bin:/sbin:/usr/sbin" |
| $1 - What action the script should perform |
| interface - The interface this was obtained on |
| ip - The obtained IP |
| mask - The number of bits in the netmask (ie: 24) |
| siaddr - The bootp next server option |
| sname - The bootp server name option |
| boot_file - The bootp boot file option |
| subnet - The assigend subnet mask |
| timezone - Offset in seconds from UTC |
| router - A list of routers |
| timesvr - A list of time servers |
| namesvr - A list of IEN 116 name servers |
| dns - A list of DNS server |
| logsvr - A list of MIT-LCS UDP log servers |
| cookiesvr - A list of RFC 865 cookie servers |
| lprsvr - A list of LPR servers |
| hostname - The assigned hostname |
| bootsize - The length in 512 octect blocks of the bootfile |
| domain - The domain name of the network |
| swapsvr - The IP address of the client's swap server |
| rootpath - The path name of the client's root disk |
| ipttl - The TTL to use for this network |
| mtu - The MTU to use for this network |
| broadcast - The broadcast address for this network |
| ntpsrv - A list of NTP servers |
| wins - A list of WINS servers |
| lease - The lease time, in seconds |
| dhcptype - DHCP message type (safely ignored) |
| serverid - The IP of the server |
| message - Reason for a DHCPNAK |
| tftp - The TFTP server name |
| bootfile - The bootfile name |
| |
| additional options are easily added in options.c. |
| |
| |
| note on udhcpc's random seed |
| --------------------------- |
| |
| udhcpc will seed its random number generator (used for generating xid's) |
| 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, udhcpc will fall back to its old |
| behavior of seeding with time(0). |
| |
| |
| signals accepted by udhcpc |
| ------------------------- |
| |
| udhcpc also responds to SIGUSR1 and SIGUSR2. SIGUSR1 will force a renew state, |
| and SIGUSR2 will force a release of the current lease, and cause udhcpc 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 |
| sequencially in the order they are received. |
| |
| |
| compile time options |
| ------------------- |
| |
| options.c contains a set of dhcp options for the client: |
| |
| name[10]: The name of the option as it will appear in scripts |
| |
| flags: The type of option, as well as if it will be requested |
| by the client (OPTION_REQ) |
| |
| code: The DHCP code for this option |
| |