dhcpagent implements the client half of the Dynamic Host Configuration Protocol (DHCP) for machines running Solaris software.
The dhcpagent daemon obtains configuration parameters for the client (local) machine's network interfaces from a DHCP server. These parameters may include a lease on an IP address, which gives the client machine use of the address for the period of the lease, which may be infinite. If the client wishes to use the IP address for a period longer than the lease, it must negotiate an extension using DHCP. For this reason, dhcpagent must run as a daemon, terminating only when the client machine powers down.
The dhcpagent daemon is controlled through ifconfig(1M) in much the same way that the init(1M) daemon is controlled by telinit(1M). dhcpagent may be invoked as a user process, albeit one requiring root privileges, but this is not necessary, as ifconfig(1M) will start it automatically.
When invoked, dhcpagent enters a passive state while it awaits instructions fromifconfig(1M). When it receives a command to configure an interface, it starts DHCP. Once DHCP is complete, dhcpagent may be queried for the values of the various network parameters. In addition, if DHCP was used to obtain a lease on an address for an interface, the interface is configured and brought up. When a lease is obtained, it is automatically renewed as necessary. If the lease cannot be renewed, dhcpagent will take the interface down at the end of the lease. If the configured interface is found to have a different IP address, subnet mask or broadcast address from those obtained from DHCP, the interface is abandoned from DHCP control.
In addition to DHCP, dhcpagent also supports BOOTP. See RFC 951, Bootstrap Protocol. Configuration parameters obtained from a BOOTP server are treated identically to those received from a DHCP server, except that the IP address received from a BOOTP server always has an infinite lease.
DHCP also acts as a mechanism to configure other information needed by the client, for example, the domain name and addresses of routers. Aside from the IP address, netmask, broadcast address and default router, the agent does not directly configure the workstation, but instead acts as a database which may be interrogated by other programs, and in particular by dhcpinfo(1).
On clients with a single interface, this is quite straightforward. Clients with multiple interfaces may present difficulties, as it is possible that some information arriving on different interfaces may need to be merged, or may be inconsistent. Furthermore, the configuration of the interfaces is asynchronous, so requests may arrive while some or all of the interfaces are still unconfigured. To handle these cases, one interface may be designated as primary, which makes it the authoritative source for the values of DHCP parameters in the case where no specific interface is requested. See dhcpinfo(1) and ifconfig(1M) for details.
The dhcpagent daemon can be configured to request a particular host name. See the REQUEST_HOSTNAME description in the FILES section. When first configuring a client to request a host name, you must perform the following steps as root to ensure that the full DHCP negotiation takes place:
# pkill dhcpagent # rm /etc/dhcp/interface.dhc # reboot
Critical messages indicate severe conditions that prevent proper operation.
Error messages are important, sometimes unrecoverable events due to resource exhaustion and other unexpected failure of system calls; ignoring errors may lead to degraded functionality.
Warnings indicate less severe problems, and in most cases, describe unusual or incorrect datagrams received from servers, or requests for service that cannot be provided.
Informational messages provide key pieces of information that can be useful to debugging a DHCP configuration at a site. Informational messages are generally controlled by the -v option. However, certain critical pieces of information, such as the IP address obtained, are always provided.
Debugging messages, which may be generated at two different levels of verbosity, are chiefly of benefit to persons having access to source code, but may be useful as well in debugging difficult DHCP configuration problems. Debugging messages are only generated when using the -d option.
When dhcpagent is run without the -f option, all messages are sent to the system logger syslog(3C) at the appropriate matching priority and with a facility identifier LOG_DAEMON. When dhcpagent is run with the -f option, all messages are directed to standard error.
Adopt a configured interface. This option is for use with diskless DHCP clients. In the case of diskless DHCP, DHCP has already been performed on the network interface providing the operating system image prior to running dhcpagent. This option instructs the agent to take over control of the interface. It is intended primarily for use in boot scripts.
Set debug level to n. Two levels of debugging are currently available, 1 and 2; the latter is more verbose.
Run in the foreground instead of as a daemon process. When this option is used, messages are sent to standard error instead of to syslog(3C).
Provide verbose output useful for debugging site configuration problems.
Contains the configuration for interface. The mere existence of this file does not imply that the configuration is correct, since the lease may have expired.
Contains default values for tunable parameters. All values may be qualified with the interface they apply to by prepending the interface name and a period (“.”) to the interface parameter name. The parameters include:
Indicates that a RELEASE rather than a DROP should be performed on managed interfaces when the agent terminates.
Indicates how long to wait between checking for valid OFFERs after sending a DISCOVER.
Indicates how long to wait for clients to respond to an ARP request before concluding the address in the ARP request is unused.
Specifies whether or not the agent should assume an address is available, in the unlikely event that ARP cannot be performed on that address.
Indicates the value that should be used to uniquely identify the client to the server.
Specifies a list of comma-separated integer values of options for which the client would like values.
Indicates the client requests the DHCP server to map the client's leased IP address to the host name associated with the network interface that performs DHCP on the client. The host name must be specified in the /etc/hostname.interface file for the relevant interface on a line of the form
See attributes(5) for descriptions of the following attributes:
Croft, B. and Gilmore, J.,Bootstrap Protocol (BOOTP)RFC 951, Network Working Group, September 1985.
Droms, R., Dynamic Host Configuration Protocol, RFC 2131, Network Working Group, March 1997.
Currently, configurations where more than one interface is attached to the same physical network are unsupported. This precludes use of virtual interfaces.