listing for J
joinc - Daemon for DHCP client configuration
/usr/sbin/joinc [-f] [-dn] [-ln]
-dn Sets debug level to n. If debug is turned on, log messages are also
-f Runs in the foreground instead of as a daemon process.
-ln Enables warning (n > 0) and log (n > 1) messages. If n is not
explicitly given, the value one is assumed (warnings are turned on).
The joinc daemon implements the client half of the Dynamic Host
Configuration Protocol (DHCP) with hardware extensions.
(JOIN is a trademark of Competitive Automation.)
The DHCP protocol, among other things, permits a client to establish an
endpoint for communication with a network by delivering an IP address for
each of the client's network interfaces, and a "lease" on that address. The
lease specifies the interval for which the address remains valid: it may be
infinite or of fixed duration. If it appears that the client wishes to
continue using the IP address after its expiration, the DHCP protocol must
negotiate an extension. For this reason the DHCP client code must run as a
daemon, only terminating when the client powers down.
Communication with the joinc daemon is effected through the agency of an
auxiliary program called dhcpconf. The joinc daemon may be invoked as a
user process (requiring root privileges), but this is not necessary as the
dhcpconf program will start it implicitly.
When started, joinc reads its startup file, /etc/join/client.pcy and either
proceeds to act on the instruction(s) passed to it by the dhcpconf program,
or enters a passive state while awaiting a new command. When joinc receives
a command to configure an interface the DHCP protocol starts. If successful
the interface is configured. The configuration received is stored in the
interface.dhc file located (by default) under the /etc/join directory. The
client daemon sleeps until it needs to renew the lease, which happens well
before the lease expires. Upon wakeup, if the interface is found to be
down or has a different IP address, joinc considers that the interface is
no longer under its control and drops it from future consideration, until
an explicit request arrives from dhcpconf. If the lease cannot be renewed,
joinc takes down the interface when it expires as required by the DHCP
protocol. See RFC 1541 for details.
The DHCP protocol also acts as a mechanism to configure other information
needed by the client such as name domain and router addresses. The joinc
daemon does not configure this information but acts as a database which may
be interrogated by other programs, particularly by dhcpconf. This approach
is more flexible in that it allows third party software access to the data
through a published API, and allows system administrators to control client
configuration by customizing startup scripts to permit various aspects of
the client and its software to be customized in a specific order. On
clients with a single interface this is straightforward; clients with
multiple interfaces may present difficulties because some information
arriving on different interfaces may need to be merged, or may be
inconsistent. Furthermore, the configuration of the interfaces is
asynchronous; requests may arrive while some or all of the interfaces are
still unconfigured. The joinc daemon resolves these problems as follows.
When a request for a global parameter arrives, joinc searches all
interfaces that were successfully configured, and returns to the requester
the name of the first one it find to contain the pertinent data. The client
program may then access the data by an API which reads the appropriate
interface.dhc file. If no interfaces are successfully configured when the
request is received, or if the none of those which are configured have the
data, the request fails. The dhcpconf program allows this behavior to be
overridden by insisting that the global data sought be associated with a
particular interface. See dhcpconf(8) for details.
The joinc daemon writes informational and error messages in four
Errors are severe, usually unrecoverable, events due to resource
exhaustion and other unexpected failure of system calls. An error is
also generated if the client's lease on an IP address is in danger of
Warnings are less severe, and in most cases describe unusual or
incorrect datagrams received from clients, or requests for service that
cannot be provided.
Informational messages provide a readable transcription of (correct)
actions performed by the server on behalf of client hosts.
Debug messages may be generated at various levels of verbosity from
zero (not at all) through nine, as controlled by the -d option.
Warning, informational, and debug messages are discarded. Errors are
written to /dev/console and are sent to the system logger syslog(3) at
priority LOG_ERR and with a facility identifier LOG_DAEMON. If warnings are
enabled they also are written to the system console and syslog with the
same facility, but at priority LOG_WARNING. The creation and disposition of
messages is controlled by the -f, -d, and -l command line options, and the
JOINLOG environment variable. When present, JOINLOG names a file to which
messages are sent in preference to the system console. Note that until the
root file system is mounted read-write no ordinary file can be used for
A cluster member should never be a DHCP client. It should always use static
If a cluster is to support a DHCP server, there can be only one DHCP server
for all the cluster members using a common database with failover.
The joinc daemon can configure clients with two or more interfaces giving
each an IP address. However, each interface so configured must be on a
different physical network and subnet.
Upon receipt of SIGUSR1 signals, the joinc daemon dumps the contents of its
scheduling table and the status of each interface under its control.
By default, the joinc daemon expects to read its policy file and read and
write its configuration databases in the /etc/join directory. The
JOINCONFIG environment variable may be used to select a different
Contains parameters that govern the behavior of joinc, and general
policies concerning network administration.
Contains the configuration for interface. The existence of this file
does not imply that the configuration is correct, since the lease may
Commands: dhcpconf(8), dhcpparm(8), joind(8), showdhc(8), shleases(8)
listing for J