bootpd(1M) bootpd(1M)
NAME [Toc] [Back]
bootpd - Internet Boot Protocol server
SYNOPSIS [Toc] [Back]
/usr/lbin/bootpd [-d debuglevel] [-p ping-timeout] [-t timeout] [-P]
[configfile [dumpfile]]
DESCRIPTION [Toc] [Back]
The bootpd daemon implements three functions: a Dynamic Host
Configuration Protocol (DHCP) server as defined in RFC1541, an
Internet Boot Protocol (BOOTP) server as defined in RFC951 and
RFC1395, and a DHCP/BOOTP relay agent as defined in RFC1542. It also
contains some of the useful fields as defined in RFC2132.
bootpd is run through inetd (see inetd(1M)). It is run by /etc/inetd
when the following line (or equivalent) is included in the file
/etc/inetd.conf:
bootps dgram udp wait root /usr/lbin/bootpd bootpd
bootpd starts when a boot request arrives. If it has not received
another boot request after 500 minutes, bootpd exits. The -t option
can be used to specify a different timeout value in minutes (such as
-t20). With a timeout value of zero (-t0), bootpd never exits.
The -d option sets the verbosity level (1-3) of the logging emitted by
the daemon via syslog (see syslog(3C)). For improved performance,
this option should not be used. If this option is not used, no logging
is done by syslog except for fatal errors.
By default, the bootpd daemon pings the IP address before assigning
the address to a client to check if the IP Address is already in use.
The -P option suppresses bootpd from pinging this address.
The -p option can be used to specify the ping timeout period. The
server pings for this duration of time to check if the IP address is
already in use. The ping-timeout period is specified in milliseconds
and the maximum value is 3000 milliseconds. When the -P option is
used, the -p option has no effect, since bootpd never pings the IP
address.
When bootpd receives a DHCP/BOOTP request, it first checks if the
hardware address of the client is listed in the /etc/dhcpdeny
database. If yes, this client is denied lease. If the client is not
listed in the dhcpdeny database, it checks whether the client
information is in the /etc/bootptab database. If the client
information is available, bootpd sends back the reply. Otherwise, it
checks whether there is any matched relay information for the client
in the /etc/bootptab database. If so, bootpd goes through a series of
checks to see if it should relay the request. If no matched relay
information was found, bootpd checks whether the client information is
Hewlett-Packard Company - 1 - HP-UX 11i Version 2: Sep 2004
bootpd(1M) bootpd(1M)
matched by a pool or device group in the /etc/dhcptab database. If a
match is found, bootpd sends back a reply. The request is dropped if
no matched group information is found.
To reply to a DHCP or BOOTP request the server puts together a
BOOTREPLY message and does a number of checks to ensure the message is
sent to the correct destination.
bootpd first checks the ciaddr (client IP address) field of the
DHCP/BOOTP packet. If this field is nonzero, the BOOTREPLY message is
sent to the IP address identified in ciaddr.
If the ciaddr field is zero, bootpd checks the giaddr field. If this
field is not zero, bootpd sends the BOOTREPLY message to the relay
agent specified in giaddr field and the relay agent delivers the
BOOTREPLY message to the client. If the giaddr field is zero, bootpd
sends the BOOTREPLY message to the client. In both cases, the
BOOTREPLY will either be sent to the IP address specified in the
yiaddr (your IP address) field or as a broadcast message. On HP-UX,
there are two ways to specify that the BOOTREPLY should be sent as a
broadcast message.
1. The client sets the broadcast flag bit in the flag field (bit 0)
of the DHCP/BOOTP request packet.
2. Define the ba tag in the bootptab file (see Tags for client
entries below)
For the case where the bootpd has matched a relay entry in
/etc/bootptab, it attempts to forward the request to the configured
DHCP/BOOTP server.
bootpd first checks whether the relay function is enabled for the
requesting client. The relay capability is configurable. If the
relay function is disabled, then the request packet is dropped.
Before bootpd relays the request, it also examines the giaddr (gateway
IP address) field. The client sets the giaddr field to zero when it
sends out the request. If the relay agent finds this field is zero,
it fills this field with the primary IP address of the interface on
which the request was received; otherwise, the relay agent does not
change this field. Then bootpd increments the value of the hops
field, and relays the request to the DHCP/BOOTP servers that have been
configured for this client.
If the relay function is enabled for this client, bootpd checks the
hops field of the DHCP/BOOTP request packet. The client sets the hops
field to 0 when it sends out the DHCP/BOOTP request. The hops value
is increased every time the request packet is relayed by a relay
agent. The maximum hop number can be configured. The maximum
possible hop number allowed is 16. The default maximum is set to 4.
Hewlett-Packard Company - 2 - HP-UX 11i Version 2: Sep 2004
bootpd(1M) bootpd(1M)
The request packet is dropped if the hop value exceeds the configured
maximum.
Then bootpd compares the value of the secs (seconds since the client
began booting) field of the DHCP/BOOTP packet to the threshold value.
The client sets the secs field to zero when it first sends out the
request. The client repeats the request if it does not receive a
reply. When the client repeats the request, it sets the secs value to
the number of seconds since the first request was sent. bootpd does
not relay the request if the value of the secs field is less than the
threshold value. The threshold value can be configured. The default
value is 0.
Configuration [Toc] [Back]
Upon startup, bootpd reads its configuration files to build its
internal database, then listens for boot request packets. The default
configuration files are, /etc/dhcpdeny, /etc/bootptab, and
/etc/dhcptab. The bootptab file can be specified in the command line.
bootpd rereads its configuration file when it receives a hangup
signal, SIGHUP, or when it receives a boot request packet and detects
that the configuration file has been updated. If hosts are added,
deleted, or modified, their entries in the bootpd internal database
are updated accordingly when the configuration files are reread. The
/etc/dhcpdeny database contains the list of hardware addresses of the
clients that will not be served by this server.
If bootpd receives a SIGUSR1 signal, it dumps its memory-resident
database to the file /var/tmp/bootpd.dump or the dumpfile specified in
the command line.
The configuration file can contain two types of host entries:
1. The client entries, which contains the client information.
2. The relay entries, which contains the configuration to relay
DHCP/BOOTP requests for one or more clients.
The configuration uses two-character, case-sensitive tag symbols to
represent host parameters. These parameter declarations are separated
by colons (:). The general format is:
hostname:tg=value:...:tg=value:...:tg=value:...
where hostname is the actual name of a DHCP/BOOTP client in the client
entries, and in the case of a relay entry, it can be the actual name
of a client if it is an individual relay entry, or it can be a name
for a group of clients if it is a group relay entry. tg is a twocharacter
tag symbol. Most tags must be followed by an equals-sign,
and a value as above. Some can appear in a boolean form with no value
(that is, :tg:).
Hewlett-Packard Company - 3 - HP-UX 11i Version 2: Sep 2004
bootpd(1M) bootpd(1M)
Blank lines and lines beginning with # are ignored in the
configuration file. Host entries are separated from one another by
newlines; a single host entry can be extended over multiple lines if
the lines end with a backslash (\). It is also acceptable for lines
to be longer than 80 characters. Tags can appear in any order with
the following exceptions: The host name must be the very first field
in an entry, and the hardware type tag, ht, must precede the hardware
address tag, ha. and the hardware mask tag, hm.
IP addresses are specified in standard Internet dot notation, and can
use decimal, octal, or hexadecimal numbers (octal numbers begin with
0, hexadecimal numbers begin with 0x or 0X). Certain tags accept a
list of one or more IP addresses (ip_address_list). When more than
one IP address is listed, the addresses must be separated by
whitespace.
The types of tags can be grouped into three categories:
1. The tags that can be used for both the client and the relay
entries.
2. The tags that can only be used in the relay entries.
3. The tags that can only be used in the client information entries.
Tag ip is used to differentiate a client entry from a relay entry. An
entry with tag ip defined is treated as a client entry. A relay entry
can contain the relay configuration for an individual client, also a
hardware address mask mechanism is provided to configure the relay
entry for a group of clients. The group client relay entries are kept
in a linear sorted table by bootpd. When a client does not have an
individual relay specification, the linear table is searched to see if
there is a match for the client. If there are multiple matched
entries in the sorted table, only the first one is used. Tag hm is
used to differentiate an individual client relay entry from a group
relay entry. The linear sorted table is sorted on the value of tag
hm. The search and match mechanism is explained in the discussion of
tag hm.
Tags for both kinds of entries [Toc] [Back]
ha=hardware-address
This tag specifies the hardware address of the client. The
hardware address must be specified in hexadecimal; optional
periods and/or a leading 0x can be included for readability.
The ha tag must be preceded by the ht tag (either explicitly
or implicitly; see tc below).
ht=hardware-type
This tag specifies the hardware type code. hardware-type
can be an unsigned decimal, octal, or hexadecimal integer
Hewlett-Packard Company - 4 - HP-UX 11i Version 2: Sep 2004
bootpd(1M) bootpd(1M)
corresponding to one of the ARP Hardware Type codes
specified in RFC1010. It can also be specified by the
symbolic names ethernet or ether for 10-Mb Ethernet;
ethernet3 or ether3 for 3-Mb experimental Ethernet; ieee802,
tr, or token-ring for IEEE 802 networks; pronet for Proteon
ProNET Token Ring; chaos, and arcnet, for Chaos and ARCNET,
respectively.
tc=template-host
This tag indicates a table continuation. Often, many host
entries share common values for certain tags (such as domain
servers, etc.). Rather than repeatedly specifying these
tags, a full specification can be listed for one host entry
and shared by others via the tc mechanism.
The template-host is a dummy host that does not actually
exist and never sends boot requests. Information explicitly
specified for a host always overrides information implied by
a tc tag symbol. The value of template-host can be the host
name or IP address of any host entry previously listed in
the configuration file.
Sometimes it is necessary to delete a specific tag after it
has been inferred via tc. This can be done using the
construction tag@ which removes the effect of tag. For
example, to completely undo an RFC1034 domain name server
specification, use :ds@: at an appropriate place in the
configuration entry. After removal with @, a tag is
eligible to be set again through the tc mechanism.
Tags for relay entries [Toc] [Back]
bp=bootp-servers
This tag specifies the BOOTP servers that DHCP/BOOTP
requests will be relayed to. The value of bootp-servers can
be one or more individual IP addresses, and/or one or more
network broadcast addresses. A relay entry with this tag
configured indicates that the relay function is on for the
clients specified in this entry. A relay entry missing this
symbol means that the relay function is off for the clients
specified in this entry.
th=threshold
This tag specifies the threshold value in seconds for the
entry. The default value is 0.
hp=hops
This tag specifies the maximum hops value. If the hops
value exceeds 16, it is set to 16. The default value is 4.
Hewlett-Packard Company - 5 - HP-UX 11i Version 2: Sep 2004
bootpd(1M) bootpd(1M)
hm=hardware-address-mask
This tag specifies the mask for the hardware address ha.
hardware-address-mask must be specified in hexadecimal. An
optional leading 0x can be included for readability. The hm
tag must be preceded by the ht tag (either explicitly or
implicitly; see tc above). Each 0 bit in hm specifies that
the corresponding bit in ha is a "don't-care" bit, each 1
bit in hm specifies that the corresponding bit in the ha
value is ANDed with the hm value. If the result is the same
and also the hardware type matches, then a match is found.
For example,
if (((hm & ha)==(client_hw_addr & hm))
&& (ht == client_hw_type))
then a match is found
else continue the search
Tags for client entries [Toc] [Back]
ba This tag specifies that bootpd should broadcast the boot
reply to the client. As a boolean tag, it causes bootpd to
send the boot reply on the configured broadcast address of
each network interface. You can also assign the tag an IPaddress
value, which specifies the specific IP or broadcast
address for the boot reply.
bf=filename
This tag specifies the filename of the bootfile that the
client should download. The client's boot request, and the
values of the hd (see below) and bf symbols, determine the
contents of the bootfile field in the boot reply packet.
If the client specifies an absolute path name (in its boot
request), and that file is accessible on the server machine
(see below), bootpd returns that path name in the reply
packet. If the file is not accessible, the request is
discarded; no reply is sent. If the client specifies a
relative path name, bootpd constructs a full path name by
appending the relative path name to the value of the hd tag,
and tests to determine if the full path name is accessible.
If the full path name is accessible, it is returned in the
boot reply packet; if not, the request is discarded.
Clients that do not specify boot files in their boot
requests always elicit a reply from the server. The exact
reply depends on the values of the hd and bf tags. If the
bf tag specifies an absolute path name, and the file is
accessible, that path name is returned in the reply packet.
Otherwise, if the hd and bf tags together specify an
accessible file, that file name is returned in the reply.
If a complete file name cannot be determined, or the file is
Hewlett-Packard Company - 6 - HP-UX 11i Version 2: Sep 2004
bootpd(1M) bootpd(1M)
not accessible publicly, the reply contains a zeroed-out
bootfile field.
If the tftp pseudo-user exists, bootpd treats all path names
(absolute or relative) as being relative to the home
directory of tftp and checks there first. If the file is
not accessible under the tftp home directory or the tftp
pseudo-user does not exist, bootpd checks for the file
relative to /.
For a file to be available, it must exist, and be publicly
readable.
All file names are first tried as filename.hostname and then
simply as filename. However, in the case when the tftp
pseudo-user exists, but filename.hostname and filename are
not accessible under the tftp home directly, only filename
is checked relative to /.
Note that a file considered to be accessible relative to /
might not actually be accessible via tftp if the command
line arguments to tftpd disallow that path.
bs=size
This tag specifies the size of the bootfile. The parameter
size can be either a decimal, octal, or hexadecimal integer
specifying the size of the bootfile in 512-octet blocks, or
the keyword auto, which causes the server to automatically
calculate the bootfile size at each request. Specifying the
bs symbol as a boolean has the same effect as specifying
auto as its value.
ci=client_ID
This tag specifies the client identifier of the client. The
parameter client_ID can be either a hexadecimal integer, or
a string contained in double quotes. The client_ID is a
unique identifier that the DHCP client may use to identify
itself to the server. If present, the client identifier
supersedes the hardware address, so a client and an entry
will only match in one of two situations: one, they both
have the same client identifier, or two they both have the
same hardware address and neither has a client identifier.
If a request has a client identifier, then that is used to
match the client up with an entry in the bootp configuration
file. One common client ID used is to concatenate the
hardware type (e.g. 0x01 for ethernet) with the hardware
address.
cs=ip_address_list
This tag specifies the IP addresses of RFC865 Quote of the
Day (cookie) servers.
Hewlett-Packard Company - 7 - HP-UX 11i Version 2: Sep 2004
bootpd(1M) bootpd(1M)
dn=domain_name
This tag specifies the domain name of the client for Domain
Name Server resolution (see RFC1034).
ds=ip_address_list
This tag specifies the IP addresses of RFC1034 Domain Name
servers.
ef=filename
Specifies the name of an extensions file. The file,
retrievable via TFTP, contains information which can be
interpreted in the same way as the 64-octet vendor-extension
field within the BOOTP response. The maximum length of the
file is unconstrained. All references to an extensions
filename within the file are ignored.
gw=ip_address_list
This tag specifies the IP addresses of gateways for the
client's subnet. If one of multiple gateways is preferred,
it should be listed first.
hd=home-directory
This tag specifies a directory name to which the bootfile is
appended (see the bf tag above). The default value of the
hd tag is /.
hn The presence of this tag indicates that the client's host
name should be sent in the boot reply. The hn tag is a
boolean tag. bootpd attempts to send the entire host name
as it is specified in the configuration file or hosts
database. The configuration file is checked first, if the
host name is not found, the hosts(4) database is then
checked. If the hostname cannot fit into the reply packet,
an attempt is made to shorten the name to just the host
field (up to the first period, if present) and then tried.
In no case is an arbitrarily truncated host name sent. If
nothing reasonable can fit, nothing is sent.
im=ip_address_list
This tag specifies the IP addresses of Impress network image
servers.
ip=ip-address
This tag specifies the IP address of the DHCP/BOOTP client.
lg=ip_address_list
This tag specifies the IP addresses of MIT-LCS UDP log
servers.
lp=ip_address_list
This tag specifies the IP addresses of Berkeley 4BSD printer
Hewlett-Packard Company - 8 - HP-UX 11i Version 2: Sep 2004
bootpd(1M) bootpd(1M)
servers.
md=merit_dump_file
This tag specifies the name of a file to dump the core of a
client.
ms=ip_address_list
This tag specifies the IP address(es) of SMTP servers
available to the client (RFC2132).
na=ip_address_list
This tag specifies the IP address(es) of RFC 1001/1002
NetBIOS name server(s) in order of preference.
nb=ip_address_list
This tag specifies the IP address(es) of RFC 1001/1002
NetBIOS datagram distribution server(s) in order of
preference.
nc=NetBIOS_node_type
Specifies the NetBIOS node type code. Allows NetBIOS over
TCP/IP clients to be configured as described in
RFC1001/1002. The NetBIOS_node_type can be an unsigned
decimal, octal, or hexadecimal integer corresponding to one
of the client types as follows:
0x1 or B-node for B-node;
0x2 or P-node for P-node;
0x4 or M-node for M-node;
0x8 or H-node for H-node.
nd=string
This tag specifies the NetBIOS over TCP/IP scope parameter
for the client as specified in RFC 1001/1002.
ns=ip_address_list
This tag specifies the IP addresses of IEN-116 name servers.
nt=ip_address_list
This tag specifies the IP addresses of Network Time Protocol
servers. Servers should be listed in order of preference.
pd=NIS+-domain-name
This tag specifies the name of clients NIS+ domain name
(RFC2132).
ps=ip_address_list
This tag specifies the IP address(es) of NIS+ servers
available to the client (RFC2132).
Hewlett-Packard Company - 9 - HP-UX 11i Version 2: Sep 2004
bootpd(1M) bootpd(1M)
rl=ip_address_list
This tag specifies the IP addresses of RFC887 Resource
Location Protocol servers.
rp=root_path
This tag specifies a path name to be mounted as a root disk.
sa=tftp_server
This tag specifies the IP address of the TFTP server where
the client's bootfile resides. When this option is enabled,
bootpd uses the IP address specified in this tag for the
siaddr field in a BOOTP/DHCP packet header. Otherwise, the
IP address of the BOOTP/DHCP server is used in the siaddr
field. The sa tag allows the BOOTP/DHCP server and the TFTP
server to be two different systems, if desired.
sm=subnet-mask
This tag specifies the client's subnet mask. subnet-mask is
specified as a single IP address.
sr=destination_ip_address gateway_ip_address ...
This tag specifies a list of static routes that the client
should put in its routing cache. Each route consists of a
pair of IP addresses. The first address is the destination
address, and the second is the router. Use the gw= option
to specify the default route (0.0.0.0) as it is not a legal
destination address.
ss=ip_address
This tag specifies the IP address of a swap server.
Tnnn=generic-data
This is a generic tag where nnn is an RFC1533 option field
tag number. Use this option to configure RFC1533 options not
currently supported with bootpd tag names. This option
allows one to immediately take advantage of future
extensions to RFC1533. The generic-data data can be
represented as either a stream of hexadecimal numbers or as
a quoted string of ASCII characters. The length of the
generic data is automatically determined and inserted into
the proper fields of the RFC1541-style boot reply.
to=offset
This tag specifies the client's time zone offset in seconds
from UTC. The time offset can be either a signed decimal
integer or the keyword auto which uses the server's time
zone offset. Specifying the to symbol as a boolean has the
same effect as specifying auto as its value.
ts=ip_address_list
This tag specifies the IP addresses of RFC868 Time Protocol
Hewlett-Packard Company - 10 - HP-UX 11i Version 2: Sep 2004
bootpd(1M) bootpd(1M)
servers.
yd=NIS-domain-name
Specifies the name of the client's NIS domain.
ys=ip_address_list
Specifies the IP address(es) of NIS servers available to the
client. Servers should be listed in order of preference.
vm=magic-cookie
This tag specifies the RFC1048 vendor information magic
cookie. magic-cookie can be one of the following keywords:
auto (indicating that vendor information is determined by
the client's request), rfc1048 (which always forces an
RFC1048-style reply), or cmu (which always forces a CMUstyle
reply).
Vnnn=generic-data
This is a generic tag for vendor specific information where
nnn is a vendor defined option field tag number. The
generic-data data can be represented as either a stream of
hexadecimal numbers or as a quoted string of ASCII
characters. The length of the generic data is automatically
determined and inserted into the vendor specific field of
the RFC1541-style boot reply.
xd=ip_address_list
This tag specifies the IP addresses of systems that are
running the X Window System Display Manager and are
available to the client. Addresses should be listed in order
of preference.
xf=ip_address_list
This tag specifies the IP addresses of X window System font
servers available to the client. Servers should be listed in
order of preference.
Dhcpdeny Configuration [Toc] [Back]
The configuration file /etc/dhcpdeny contains the list of hardware
addresses, one address per line, for clients that will not be served
by our server. If we know about some bad clients in the network and we
don't want to serve them, add the hardware address of those clients in
this file. This file, like other configuration files, takes #
character as the starting of a comment.
Dhcptab Configuration [Toc] [Back]
The configuration file /etc/dhcptab defines groups of IP addresses
that to be leased out to clients. It also specifies certain general
behaviors of the server, such as whether or not to give addresses from
these groups to bootp clients or only to DHCP clients.
Hewlett-Packard Company - 11 - HP-UX 11i Version 2: Sep 2004
bootpd(1M) bootpd(1M)
The configuration file has a format similar to the /etc/bootptab
configuration file, with a keyword followed by one or more tag
symbols. These tag symbols are separated by colons (:). The general
format is:
keyword:tg=value:...:tg=value:...:tg=value:...
where keyword is one of four allowed (non-case-sensitive) symbols and
tg is a two or more (case-sensitive) character tag symbol. Most tags
must be followed by an equals-sign and a value as above. Some can
also appear in a boolean form with no value (i.e. :tg:).
Blank lines and lines beginning with # are ignored in the
configuration file. Keyword entries are separated from one another by
newlines; a single host entry may be extended over multiple lines if
each continued line ends with a backslash (\). Lines may be longer
than 80 characters. Tags can appear in any order.
IP addresses must be specified in standard Internet ``dot'' notation,
and can use decimal, octal, or hexadecimal numbers (octal numbers
begin with 0, hexadecimal numbers begin with 0x or 0X). Certain tags
accept a list of one or more IP addresses (ip_address_list). When
more than one IP address is listed, they must be separated by white
space.
The currently recognized keywords are:
dhcp_pool_group
This keyword is followed by tags defining a group of IP
addresses to give out to clients on the same subnet, and
the characteristics of that group. In addition to the tags
defined for DHCP groups, all of the two-letter tags for
bootp entries may also be used (except for ht, the hardware
type tag, ha, the hardware address tag, or ci, the client
ID tag. Required tags are: subnet-mask, addr-pool-start-
address, and addr-pool-last-address.
dhcp_device_group
This keyword is used to define a group of IP addresses on a
subnet much like dhcp_pool_group, but with one exception:
all clients in a device group must have the same client
class (specified with tag class-id). This allows different
types of clients to receive different parameters from the
server. Required tags are: class-id, subnet-mask, addr-
pool-start-address, and addr-pool-last-address.
dhcp_default_client_settings
This keyword is followed by tags to be applied to all
groups. These tag values can be overridden for a specific
group if that tag is defined for that specific group. This
keyword simply saves one from entering the same tag for
Hewlett-Packard Company - 12 - HP-UX 11i Version 2: Sep 2004
bootpd(1M) bootpd(1M)
every group. Thus most tags that may be used for
dhcp_pool_group, and dhcp_device_group, may be used here.
The tag descriptions specify if a tag may not be used here.
dhcp_server_settings
This keyword is followed by tags that specify a few general
behaviors for the dhcp server as a whole.
The currently supported tags for dhcp_server_settings are:
dhcpdb-write-perf=
This parameter takes a small integer (like 2 or 5) as
input. If set, the write to the /etc/dhcpdb file will be
delayed by the server. This will increase performance for
busy servers. If set to a value greater than 2, the server
will spawn a new process to do the writing, which will be a
considerable performance improvement.
callback-style=OLD|NEW
Callbacks are a powerful feature that allow the system
administrator to customize the operation of the server. A
user-supplied executable file (typically a shell script) is
executed each time one of the main server actions is
performed (example: granting a lease). An argument list is
passed in with information about the individual client and
the lease. The callback-style= tag specifies whether the
old (and confusing) argument list should be used with the
call-on-xxx feature described below. The new (and
recommended) argument list is much simpler to use, and is
identical for all of the call-on-xxx functions. The new
style simply inserts a value of "00" for fields that are
not sensible for a particular callback. The new argument
list is:
filename: client-id htype haddr ipaddr subnet-mask lease-expiration hostname gateway
The old argument list is described for each of the
individual callbacks below.
call-on-unrequited=filename
This tag specifies an executable file filename that will be
called when the server receives a request to which it
cannot send a response. Certain arguments will be passed
in; the call executed will be:
filename: client-id htype haddr [gateway]
where client-id is the client ID in hex if present, or 00
if there is no client ID. htype is the hardware type as
per the ARP section of the "Assigned Numbers" RFC. haddr
is the hardware address in hex. gateway is the IP address
Hewlett-Packard Company - 13 - HP-UX 11i Version 2: Sep 2004
bootpd(1M) bootpd(1M)
of the bootp relay agent. If the packet was not relayed,
then this field is absent.
The currently supported tags for dhcp_pool_group, dhcp_device_group,
and dhcp_default_client_settings are:
call-on-assignment=filename
This tag specifies the fully qualified filename to be
called when an IP address has been assigned to a new
client. Some arguments will be passed in, the call will be
made as follows:
filename: client-id htype haddr ipaddr subnet-mask lease-expiration [hostname]
where client-id is the client ID in hex if present, or 00
if there is no client ID. htype is the hardware type as
per the ARP section of the "Assigned Numbers" RFC. haddr
is the hardware address in hex. ipaddr is the IP address
that was assigned to the client. subnet-mask is the subnet
mask of the client represented as an IP address. lease-
expiration is the bootpd internal representation of when
the lease will expire (based on a C call to time()), a
value of ffffffff represents an infinite lease. If there
is a hostname associated with this address, then it is the
final argument.
call-on-decline=filename
This tag specifies the fully qualified filename to be
called when an IP address has been declined by a new
client. Some arguments will be passed in, the call will be
made as follows:
filename: client-id htype haddr ipaddr subnet-mask
where client-id is the client ID in hex if present, or 00
if there is no client ID. htype is the hardware type as
per the ARP section of the "Assigned Numbers" RFC. haddr
is the hardware address in hex. ipaddr is the IP address
that was declined by the client. subnet-mask is the subnet
mask of the client represented as an IP address.
call-on-discard=filename
This tag specifies the fully qualified filename to be
called when an IP address has been discarded due to a
conflict. Some arguments will be passed in, the call will
be made as follows:
filename: client-id htype haddr ipaddr subnet-mask
where client-id is the client ID in hex if present, or 00
if there is no client ID. htype is the hardware type as
Hewlett-Packard Company - 14 - HP-UX 11i Version 2: Sep 2004
bootpd(1M) bootpd(1M)
per the ARP section of the "Assigned Numbers" RFC. haddr
is the hardware address in hex. ipaddr is the IP address
that was declined by the client. subnet-mask is the subnet
mask of the client represented as an IP address.
call-on-release=filename
This tag specifies the fully qualified filename to be
called when an IP address has been released by a client.
Some arguments will be passed in, the call will be made as
follows:
filename: client-id htype haddr ipaddr lease-expiration
where client-id is the client ID in hex if present, or 00
if there is no client ID. htype is the hardware type as
per the ARP section of the "Assigned Numbers" RFC. haddr
is the hardware address in hex. ipaddr is the IP address
that was released by the client. lease-expiration is the
bootpd internal representation of when the lease would have
expired, a value of ffffffff represents an infinite lease.
call-on-lease-extend=filename
This tag specifies the fully qualified filename to be
called when an IP address lease for a client has been
extended. Some arguments will be passed in, the call will
be made as follows:
filename: client-id htype haddr ipaddr subnet-mask lease-expiration
where client-id is the client ID in hex if present, or 00
if there is no client ID. htype is the hardware type as
per the ARP section of the "Assigned Numbers" RFC. haddr
is the hardware address in hex. ipaddr is the IP address
that was assigned to the client. subnet-mask is the subnet
mask of the client represented as an IP address. lease-
expiration is the bootpd internal representation of when
the lease will expire (based on a C call to time()), a
value of ffffffff represents an infinite lease.
call-on-discover=filename
This tag specifies the fully qualified filename to be
called when the server receives a discover. It should be
noted that this callback can only be used when callback-
style is set to new. The format of the arguments passed to
this callback is same as the format specified for
callback-style=new. If a particular parameter is not known
or not required, 00 can be used in it's place.
call-on-offer=filename
This tag specifies the fully qualified filename to be
called when the server sends an offer to a client. It
Hewlett-Packard Company - 15 - HP-UX 11i Version 2: Sep 2004
bootpd(1M) bootpd(1M)
should be noted that this callback can only be used when
callback-style is set to new. The format of the arguments
passed to this callback is same as the format specified for
callback-style=new. If a particular parameter is not known
or not required, 00 can be used in it's place.
class-name=classname
This tag specifies a name to refer to a device group by.
It is only applicable to dhcp_device_group. The only use
that bootpd makes of this field is in logging errors found
in the configuration of the group.
pool-name=poolname
This tag specifies a name to refer to a pool group by. It
is only applicable to dhcp_pool_group. The only use that
bootpd makes of this field is in logging errors found in
the configuration of the group.
class-id=client-class
This tag specifies the client-class that clients must have
to be assigned to this group. This tag is required for
dhcp_device_group and is inappropriate for any other
keyword. Some DHCP clients send out a client-class that
identifies a class that a client belongs to. For an IP
address to be assigned from a device group address pool,
not only must the client be on the right subnet, it must
send a request with a client-class that matches that
defined for the class-id. This may be specified in either
hex or in ASCII (an ASCII string must be enclosed in double
quotes).
ncid This is a boolean tag that instructs bootpd not to send the
class-id back to the client. This tag is applicable only
for dhcp_device_group.
re This is a boolean tag that instructs the bootpd to match
the class-id in the client's request with the class-id in
any dhcp_device_group, that contains the re tag using any
basic regular expression. This tag is applicable only for
dhcp_device_group.
subnet-mask=mask
This tag specifies the subnet mask for the addresses in the
group being defined. It is specified as an IP address.
This tag is required for both dhcp_device_group and
dhcp_pool_group, and is inappropriate for
dhcp_default_client_settings.
addr-pool-start-address=IP-address
This tag specifies the lowest address in the pool group to
be assigned. This tag is required for both
Hewlett-Packard Company - 16 - HP-UX 11i Version 2: Sep 2004
bootpd(1M) bootpd(1M)
dhcp_device_group and dhcp_pool_group, and is inappropriate
for dhcp_default_client_settings.
addr-pool-last-address=ip-address
This tag specifies the highest address in the pool group to
be assigned. This address and the addr-pool-start-address
define a range of addresses that can be assigned to
clients. For the server, no two group address ranges may
overlap.
reserved-for-other=ip-address-list
This tag is followed by one address that falls in the range
of the group. This address is reserved, and will not be
assigned to any clients by the DHCP server. Alternatively,
a range of addresses may be defined by giving 2 addresses,
with the range being the addresses from the first address
up to the second address, inclusively. This tag may be
repeated to reserve more addresses in the same group. It
is not appropriate for dhcp_default_client_settings.
lease-time=seconds
This tag specifies the time in seconds that a lease should
be given to each client. The word "infinite" may be used
to specify leases that never expire. The default is
"infinite." Note that if a client asks for a shorter lease
than is configured for it, it will get that shorter lease
time. A lease time shorter than 120 seconds will be
silently upgraded to 120.
lease-grace-period=percent
This tag specifies the time after a lease expires during
which that lease will not be assigned to a new client.
percent is the percentage of the configured lease time that
this grace period lasts. The default is 5%.
tr=percent
This tag specifies the DHCP IP lease renewal time (T1).
This is the time interval from lease assignment until when
the client attempts to renew the lease. RFC1541 states that
T1 defaults to half the lease duration. The minimum value
is 40 percent. T1 must always be smaller than T2.
tv=percent
This tag specifies the DHCP IP lease rebind time (T2). This
is the time interval from lease assignment until when the
client attempts to obtain a new lease from any server.
RFC1541 states that T2 defaults to 0.875 times the lease
duration. The minimum value is 50 percent. T2 must
always be greater than T1.
Hewlett-Packard Company - 17 - HP-UX 11i Version 2: Sep 2004
bootpd(1M) bootpd(1M)
lease-policy=policy
This tag specifies whether or not the assigning of new
leases can be done. If policy is set to reject-new-clients
then no new clients can get a lease, and only clients with
existing leases will get a response. accept-new-clients is
the default.
allow-bootp-clients=boolean
This tag specifies whether or not bootp clients can be
members of the group being defined. The default is false.
If boolean is TRUE, then an IP address may be assigned to a
client that doesn't have an entry in the bootptab file and
that is on the same subnet as the group being defined.
This address is treated as an infinite lease, and a boot
reply is sent to the client. This tag is is not
appropriate for dhcp_device_group, since bootp clients
don't have a client class (and therefore a bootp client
would be incapable of matching the client class of the
device group). If this tag is used for
dhcp_default_client_settings, then it is only applicable to
pool groups.
ddns=ip-address
This tag specifies the IP address of the Domain Name Server
(DNS) to which dynamic update requests are sent.
pcsn This tag specifies that the name sent by client should be
given preference. As a boolean tag, if set it causes
bootpd to accept the name sent by the client (if any). If
name is not sent by the client, bootpd tries to find one.
sp As a boolean tag, if set it causes bootpd to not use prerequisite
section in the update request when an update
request is to be sent to DNS.
DHCP/BOOTP Packet
The DHCP/BOOTP packet has the following format:
struct dhcp {
unsigned char op; /* packet opcode type */
unsigned char htype; /* hardware addr type */
unsigned char hlen; /* hardware addr length */
unsigned char hops; /* gateway hops */
unsigned long xid; /* 4 bytes transaction ID */
unsigned short secs; /* seconds since boot began */
unsigned short flags; /* if giaddr!=0,client flags*/
struct in_addr ciaddr; /* client IP address */
struct in_addr yiaddr; /* 'your' IP address */
struct in_addr siaddr; /* server IP address */
struct in_addr giaddr; /* gateway IP address */
unsigned char chaddr[16]; /* client hardware address */
Hewlett-Packard Company - 18 - HP-UX 11i Version 2: Sep 2004
bootpd(1M) bootpd(1M)
unsigned char sname[64]; /* server host name */
unsigned char file[128]; /* boot file name */
unsigned char options[312]; /* options area */
};
DHCP Option Numbers [Toc] [Back]
The DHCP/BootP options discussed above correspond to the option
numbers in RFC1533 as follows:
Number Tag Description
___________________________________________________________
1 sm Subnet Mask
2 to Time Offset
3 gw Gateways
4 ts Time Servers
5 ns IEN 116 Name Servers
6 ds Domain Name Servers
7 lg Log Servers
8 cs Cookie Servers
9 lp LPR Servers
10 im Impress Servers
11 rl Resource Location Servers
12 hn Send Host Name in reply
13 bs Boot File Size
14 md Merit Dump File
15 dn Domain Name
16 ss Swap Server
17 rp Root Path
18 ef Extensions Path
28 ba Broadcast Address
33 sr Static Routes
40 yd NIS Domain
41 ys NIS Servers
42 nt NTP Servers
43 V### Vendor Specific Information
44 na NetBIOS Name Servers
45 nb NetBIOS Datagram Distribution Servers
46 nc NetBIOS Node Type
47 nd NetBIOS Scope
48 xf X Font Servers
49 xd X Display Manager
51 lease-time IP Address Lease Time
58 tr Lease Renewal Time (T1)
59 tv Lease Rebinding Time (T2)
60 class-id Class Identifier
61 ci Client Identifier
64 pd NIS+ Domain
65 ps NIS+ Servers
69 ms SMTP Servers
Hewlett-Packard Company - 19 - HP-UX 11i Version 2: Sep 2004
bootpd(1M) bootpd(1M)
EXAMPLES [Toc] [Back]
This is an example of a /etc/bootptab file:
# Common entry
global.defaults:\
bf=C2300A:\
hd=/usr/lib/X11/:\
hn:\
ht=ether:\
vm=rfc1048
# Now the actual individual entries
xterm1:\
tc=global.defaults:\
ha=08000903212F:\
ip=190.40.101.22
xterm2:\
tc=global.defaults:\
ha=0800090324AC:\
ip=190.40.101.35
# Common relay entry.
relay-default:\
ht=e
|