Zum Hauptinhalt springen

21. DHCP Options

This section preserves the RFC text for DHCPv6, including message exchanges, relay behavior, DUIDs, IA_NA, IA_TA, IA_PD, DHCP options, RKAP authentication, IANA registries, normative requirements, and appendix option-appearance matrices.

Original RFC Text

21.  DHCP Options

Options are used to carry additional information and parameters in
DHCP messages. Every option shares a common base format, as
described in Section 21.1. All values in options are represented in
network byte order.

This document specifies the DHCP options defined as part of this base
DHCP specification. Other options have been or may be defined in the
future in separate documents. See [RFC7227] for guidelines regarding
the definition of new options. See Section 24 for additional
information about the DHCPv6 "Option Codes" registry maintained by
IANA.

Unless otherwise noted, each option may appear only in the options
area of a DHCP message and may appear only once. If an option does
appear multiple times, each instance is considered separate and the
data areas of the options MUST NOT be concatenated or otherwise
combined.

Options that are allowed to appear only once are called "singleton
options". The only non-singleton options defined in this document
are the IA_NA (see Section 21.4), Vendor Class (see Section 21.16),
Vendor-specific Information (see Section 21.17), and IA_PD (see
Section 21.21) options. Also, IA Address (see Section 21.6) and IA
Prefix (see Section 21.22) may appear in their respective IA options
more than once.

21.1. Format of DHCP Options

The format of DHCP options is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| option-code | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| option-data |
| (option-len octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 12: Option Format

option-code: An unsigned integer identifying the specific option
type carried in this option. A 2-octet field.

option-len: An unsigned integer giving the length of the option-data
field in this option in octets. A 2-octet field.

option-data: The data for the option; the format of this data
depends on the definition of the option. A variable-length field
(the length, in octets, is specified by option-len).

DHCP options are scoped by using encapsulation. Some options apply
generally to the client, some are specific to an IA, and some are
specific to the addresses within an IA. These latter two cases are
discussed in Sections 21.4 and 21.6.

21.2. Client Identifier Option

The Client Identifier option is used to carry a DUID (see Section 11)
that identifies the client. The format of the Client Identifier
option is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_CLIENTID | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. DUID .
. (variable length) .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 13: Client Identifier Option Format

option-code: OPTION_CLIENTID (1).

option-len: Length of DUID in octets.

DUID: The DUID for the client.

21.3. Server Identifier Option

The Server Identifier option is used to carry a DUID (see Section 11)
that identifies the server. The format of the Server Identifier
option is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_SERVERID | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. DUID .
. (variable length) .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 14: Server Identifier Option Format

option-code: OPTION_SERVERID (2).

option-len: Length of DUID in octets.

DUID: The DUID for the server.

21.4. Identity Association for Non-Temporary Addresses Option

The Identity Association for Non-temporary Addresses (IA_NA) option
is used to carry an IA_NA, the parameters associated with the IA_NA,
and the non-temporary addresses associated with the IA_NA.

A client that needs a short-term / special-purpose address can use a
new IA_NA binding to request an address and release it when finished
with it.

Note: Addresses appearing in an IA_NA option are not temporary
addresses (see Section 21.5).

The format of the IA_NA option is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_IA_NA | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IAID (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| T1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| T2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
. IA_NA-options .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 15: Identity Association for Non-Temporary Addresses
Option Format

option-code: OPTION_IA_NA (3).

option-len: 12 + length of IA_NA-options field.

IAID: The unique identifier for this IA_NA; the IAID must be unique
among the identifiers for all of this client's IA_NAs. The number
space for IA_NA IAIDs is separate from the number space for other
IA option types (i.e., IA_PD). A 4-octet field containing an
unsigned integer.

T1: The time interval after which the client should contact the
server from which the addresses in the IA_NA were obtained to
extend the lifetimes of the addresses assigned to the IA_NA; T1 is
a time duration relative to the current time expressed in units of
seconds. A 4-octet field containing an unsigned integer.

T2: The time interval after which the client should contact any
available server to extend the lifetimes of the addresses assigned
to the IA_NA; T2 is a time duration relative to the current time
expressed in units of seconds. A 4-octet field containing an
unsigned integer.

IA_NA-options: Options associated with this IA_NA. A variable-
length field (12 octets less than the value in the option-len
field).

The IA_NA-options field encapsulates those options that are specific
to this IA_NA. For example, all of the IA Address options (see
Section 21.6) carrying the addresses associated with this IA_NA are
in the IA_NA-options field.

Each IA_NA carries one "set" of non-temporary addresses; it is up to
the server policy to determine how many addresses are assigned, but
typically at most one address is assigned from each prefix assigned
to the link to which the client is attached.

An IA_NA option may only appear in the options area of a DHCP
message. A DHCP message may contain multiple IA_NA options (though
each must have a unique IAID).

The status of any operations involving this IA_NA is indicated in a
Status Code option (see Section 21.13) in the IA_NA-options field.

Note that an IA_NA has no explicit "lifetime" or "lease length" of
its own. When the valid lifetimes of all of the addresses in an
IA_NA have expired, the IA_NA can be considered as having expired.
T1 and T2 are included to give servers explicit control over when a
client recontacts the server about a specific IA_NA.

In a message sent by a client to a server, the T1 and T2 fields
SHOULD be set to 0. The server MUST ignore any values in these
fields in messages received from a client.

In a message sent by a server to a client, the client MUST use the
values in the T1 and T2 fields for the T1 and T2 times, unless values
in those fields are 0. The values in the T1 and T2 fields are the
number of seconds until T1 and T2 and are calculated since reception
of the message.

As per Section 7.7, the value 0xffffffff is taken to mean "infinity"
and should be used carefully.

The server selects the T1 and T2 values to allow the client to extend
the lifetimes of any addresses in the IA_NA before the lifetimes
expire, even if the server is unavailable for some short period of
time. Recommended values for T1 and T2 are 0.5 and 0.8 times the
shortest preferred lifetime of the addresses in the IA that the
server is willing to extend, respectively. If the "shortest"
preferred lifetime is 0xffffffff ("infinity"), the recommended T1 and
T2 values are also 0xffffffff. If the time at which the addresses in
an IA_NA are to be renewed is to be left to the discretion of the
client, the server sets the T1 and T2 values to 0. The client MUST
follow the rules defined in Section 14.2.

If a client receives an IA_NA with T1 greater than T2 and both T1 and
T2 are greater than 0, the client discards the IA_NA option and
processes the remainder of the message as though the server had not
included the invalid IA_NA option.

21.5. Identity Association for Temporary Addresses Option

The Identity Association for Temporary Addresses (IA_TA) option is
obsoleted. Please refer to [RFC8415] for historical information on
this option.

The client SHOULD NOT send this option. The server SHOULD NOT send
this option. When the server receives an IA_TA option, the option
SHOULD be ignored and the message processing should continue as
usual.

As this option was never popular among server or client
implementations before being deprecated, any implementations that
still attempt to send it are unlikely to have the option processed.

21.6. IA Address Option

The IA Address option is used to specify an address. In this
document, it is only specified to be encapsulated within an IA_NA.
DHCPv6 Leasequery [RFC5007] makes use of the IA Address option
without encapsulating it in IA_NA. The IAaddr-options field
encapsulates those options that are specific to this address.

The format of the IA Address option is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_IAADDR | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| IPv6-address |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| preferred-lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| valid-lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. IAaddr-options .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 16: IA Address Option Format

option-code: OPTION_IAADDR (5).

option-len: 24 + length of IAaddr-options field.

IPv6-address: An IPv6 address. A client MUST NOT form an implicit
prefix with a length other than 128 for this address. A 16-octet
field.

preferred-lifetime: The preferred lifetime for the address in the
option, expressed in units of seconds. A 4-octet field containing
an unsigned integer.

valid-lifetime: The valid lifetime for the address in the option,
expressed in units of seconds. A 4-octet field containing an
unsigned integer.

IAaddr-options: Options associated with this address. A variable-
length field (24 octets less than the value in the option-len
field).

In a message sent by a client to a server, the preferred-lifetime and
valid-lifetime fields SHOULD be set to 0. The server MUST ignore any
received values.

The client SHOULD NOT send the IA Address option with an unspecified
address (::).

In a message sent by a server to a client, the client MUST use the
values in the preferred-lifetime and valid-lifetime fields for the
preferred and valid lifetimes. The values in these fields are the
number of seconds remaining in each lifetime.

The client MUST discard any addresses for which the preferred
lifetime is greater than the valid lifetime.

As per Section 7.7, if the valid lifetime of an address is
0xffffffff, it is taken to mean "infinity" and should be used
carefully.

More than one IA Address option can appear in an IA_NA option.

21.7. Option Request Option

The Option Request option is used to identify a list of options in a
message between a client and a server. The format of the Option
Request option is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_ORO | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| requested-option-code-1 | requested-option-code-2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 17: Option Request Option Format

option-code: OPTION_ORO (6).

option-len: 2 * number of requested options.

requested-option-code-n: The option code for an option requested by
the client. Each option code is a 2-octet field containing an
unsigned integer.

A client MUST include an Option Request option in a Solicit, Request,
Renew, Rebind, or Information-request message to inform the server
about options the client wants the server to send to the client.

The Option Request option MUST NOT include the following option
codes:

* Client Identifier (see Section 21.2)

* Server Identifier (see Section 21.3)

* IA_NA (see Section 21.4)

* IA_TA (option obsoleted, see Section 21.5)

* IA_PD (see Section 21.21)

* IA Address (see Section 21.6)

* IA Prefix (see Section 21.22)

* Option Request (this section)

* Elapsed Time (see Section 21.9)

* Preference (see Section 21.8)

* Relay Message (see Section 21.10)

* Authentication (see Section 21.11)

* Server Unicast (option obsoleted, see Section 21.12)

* Status Code (see Section 21.13)

* Rapid Commit (see Section 21.14)

* User Class (see Section 21.15)

* Vendor Class (see Section 21.16)

* Interface-Id (see Section 21.18)

* Reconfigure Message (see Section 21.19)

* Reconfigure Accept (see Section 21.20)

Other top-level option codes MUST appear in the Option Request option
or they will not be sent by the server. Only top-level option codes
MAY appear in the Option Request option. Option codes encapsulated
in a container option SHOULD NOT appear in an Option Request option;
see [RFC7598] for an example of container options. However, options
MAY be defined that specify exceptions to this restriction on
including encapsulated option codes in an Option Request option. For
example, the Option Request option MAY be used to signal support for
a feature even when that option is encapsulated, as in the case of
the Prefix Exclude option [RFC6603]. See [IANA-OPTION-DETAILS].

See [IANA-OPTION-DETAILS] for the authoritative list of which option
codes are required, permitted, or forbidden.

21.8. Preference Option

The Preference option is sent by a server to a client to control the
selection of a server by the client.

The format of the Preference option is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_PREFERENCE | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| pref-value |
+-+-+-+-+-+-+-+-+

Figure 18: Preference Option Format

option-code: OPTION_PREFERENCE (7).

option-len: 1.

pref-value: The preference value for the server in this message.
Allowed values are from 0 (least) to 255 (most preferred).
Absence of option means preference 0. A 1-octet unsigned integer.

A server MAY include a Preference option in an Advertise message to
control the selection of a server by the client. See Section 18.2.9
for information regarding the use of the Preference option by the
client and the interpretation of the Preference option data value.

21.9. Elapsed Time Option

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_ELAPSED_TIME | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| elapsed-time |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 19: Elapsed Time Option Format

option-code: OPTION_ELAPSED_TIME (8).

option-len: 2.

elapsed-time: The amount of time since the client began its current
DHCP transaction. This time is expressed in hundredths of a
second (10^-2 seconds). A 2-octet field containing an unsigned
integer.

A client MUST include an Elapsed Time option in messages to indicate
how long the client has been trying to complete a DHCP message
exchange. The elapsed time is measured from the time at which the
client sent the first message in the message exchange, and the
elapsed-time field is set to 0 in the first message in the message
exchange. Servers and relay agents use the data value in this option
as input to policy that controls how a server responds to a client
message. For example, the Elapsed Time option allows a secondary
DHCP server to respond to a request when a primary server has not
answered in a reasonable time. The elapsed-time value is a 16-bit
(2-octet) unsigned integer. The client uses the value 0xffff to
represent any elapsed-time values greater than the largest time value
that can be represented in the Elapsed Time option.

21.10. Relay Message Option

The Relay Message option carries a DHCP message in a Relay-forward or
Relay-reply message.

The format of the Relay Message option is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_RELAY_MSG | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
. DHCP-relay-message .
. .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 20: Relay Message Option Format

option-code: OPTION_RELAY_MSG (9).

option-len: Length of DHCP-relay-message field.

DHCP-relay-message: In a Relay-forward message, the received
message, relayed verbatim to the next relay agent or server; in a
Relay-reply message, the message to be copied and relayed to the
relay agent or client whose address is in the peer-address field
of the Relay-reply message. The length, in octets, is specified
by option-len.

21.11. Authentication Option

The Authentication option carries authentication information to
authenticate the identity and contents of DHCP messages. The use of
the Authentication option is described in Section 20. The format of
the Authentication option is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_AUTH | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| protocol | algorithm | RDM | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| |
| replay detection (64 bits) +-+-+-+-+-+-+-+-+
| | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
. authentication information .
. (variable length) .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 21: Authentication Option Format

option-code: OPTION_AUTH (11).

option-len: 11 + length of authentication information field.

protocol: The authentication protocol used in this Authentication
option. A 1-octet unsigned integer.

algorithm: The algorithm used in the authentication protocol. A
1-octet unsigned integer.

RDM: The replay detection method used in this Authentication option.
A 1-octet unsigned integer.

replay detection: The replay detection information for the RDM. A
64-bit (8-octet) field.

authentication information: The authentication information, as
specified by the protocol and algorithm used in this
Authentication option. A variable-length field (11 octets less
than the value in the option-len field).

IANA maintains a registry for the protocol, algorithm, and RDM values
at <https://www.iana.org/assignments/auth-namespaces>.

21.12. Server Unicast Option

The Server Unicast option is obsolete. Please refer to [RFC8415] for
historical information on this option.

The server MUST NOT send this option. When any entity receives the
Server Unicast option, the option SHOULD be ignored and the message
processing should continue as usual.

21.13. Status Code Option

This option returns a status indication related to the DHCP message
or option in which it appears. The format of the Status Code option
is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_STATUS_CODE | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| status-code | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
. .
. status-message .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 22: Status Code Option Format

option-code: OPTION_STATUS_CODE (13).

option-len: 2 + length of status-message field.

status-code: The numeric code for the status encoded in this option.
A 2-octet field containing an unsigned integer.

status-message: A UTF-8 encoded [RFC3629] text string suitable for
display to an end user. MUST NOT be NUL-terminated. A variable-
length field (2 octets less than the value in the option-len
field).

A Status Code option may appear in the "options" field of a DHCP
message and/or in the "options" field of another option. If the
Status Code option does not appear in a message in which the option
could appear, the status of the message is assumed to be Success.

The status-code values are:

+===============+======+===================================+
| Name | Code | Description |
+===============+======+===================================+
| Success | 0 | Success. |
+---------------+------+-----------------------------------+
| UnspecFail | 1 | Failure, reason unspecified; this |
| | | status code is sent by a server |
| | | to indicate a failure not |
| | | explicitly specified in this |
| | | document. |
+---------------+------+-----------------------------------+
| NoAddrsAvail | 2 | The server has no addresses |
| | | available to assign to the IA(s). |
+---------------+------+-----------------------------------+
| NoBinding | 3 | Client record (binding) |
| | | unavailable. |
+---------------+------+-----------------------------------+
| NotOnLink | 4 | The prefix for the address is not |
| | | appropriate for the link to which |
| | | the client is attached. |
+---------------+------+-----------------------------------+
| UseMulticast | 5 | Sent by a server to a client to |
| | | force the client to send messages |
| | | to the server using the |
| | | All_DHCP_Relay_Agents_and_Servers |
| | | multicast address. Obsoleted; no |
| | | longer used. |
+---------------+------+-----------------------------------+
| NoPrefixAvail | 6 | The server has no prefixes |
| | | available to assign to the |
| | | IA_PD(s). |
+---------------+------+-----------------------------------+

Table 3: Status Code Definitions

See the "Status Codes" registry at <https://www.iana.org/assignments/
dhcpv6-parameters> for the current list of status codes.

21.14. Rapid Commit Option

The Rapid Commit option is used to signal the use of the two-message
exchange for address assignment. The format of the Rapid Commit
option is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_RAPID_COMMIT | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 23: Rapid Commit Option Format

option-code: OPTION_RAPID_COMMIT (14).

option-len: 0.

A client MAY include this option in a Solicit message if the client
is prepared to perform the Solicit/Reply message exchange described
in Section 18.2.1.

A server MUST include this option in a Reply message sent in response
to a Solicit message when completing the Solicit/Reply message
exchange.

DISCUSSION:

* Each server that responds with a Reply to a Solicit that includes
a Rapid Commit option will commit the leases in the Reply message
to the client but will not receive any confirmation that the
client has received the Reply message. Therefore, if more than
one server responds to a Solicit that includes a Rapid Commit
option, all but one server will commit leases that are not
actually used by the client; this could result in incorrect
address information in DNS if the DHCP servers update DNS
[RFC4704], and responses to leasequery requests [RFC5007] may
include information on leases not in use by the client.

* The problem of unused leases can be minimized by designing the
DHCP service so that only one server responds to the Solicit or by
using relatively short lifetimes for newly assigned leases.

21.15. User Class Option

The User Class option is used by a client to identify the type or
category of users or applications it represents.

The format of the User Class option is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_USER_CLASS | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. user-class-data .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 24: User Class Option Format

option-code: OPTION_USER_CLASS (15).

option-len: Length of user-class-data field.

user-class-data: The user classes carried by the client. The
length, in octets, is specified by option-len.

The information contained in the data area of this option is
contained in one or more opaque fields that represent the user class
or classes of which the client is a member. A server selects
configuration information for the client based on the classes
identified in this option. For example, the User Class option can be
used to configure all clients of people in the accounting department
with a different printer than clients of people in the marketing
department. The user class information carried in this option MUST
be configurable on the client.

The data area of the User Class option MUST contain one or more
instances of user-class-data information. Each instance of user-
class-data is formatted as follows:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+
| user-class-len | opaque-data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+

Figure 25: Format of user-class-data Field

The user-class-len field is 2 octets long and specifies the length of
the opaque user-class-data in network byte order.

A server interprets the classes identified in this option according
to its configuration to select the appropriate configuration
information for the client. A server may use only those user classes
that it is configured to interpret in selecting configuration
information for a client and ignore any other user classes. In
response to a message containing a User Class option, a server may
include a User Class option containing those classes that were
successfully interpreted by the server so that the client can be
informed of the classes interpreted by the server.

21.16. Vendor Class Option

This option is used by a client to identify the vendor that
manufactured the hardware on which the client is running. The
information contained in the data area of this option is contained in
one or more opaque fields that identify details of the hardware
configuration. The format of the Vendor Class option is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_VENDOR_CLASS | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| enterprise-number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. vendor-class-data .
. . . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 26: Vendor Class Option Format

option-code: OPTION_VENDOR_CLASS (16).

option-len: 4 + length of vendor-class-data field.

enterprise-number: The vendor's registered Enterprise Number as
maintained by IANA [IANA-PEN]. A 4-octet field containing an
unsigned integer.

vendor-class-data: The hardware configuration of the node on which
the client is running. A variable-length field (4 octets less
than the value in the option-len field).

The vendor-class-data field is composed of a series of separate
items, each of which describes some characteristic of the client's
hardware configuration. Examples of vendor-class-data instances
might include the version of the operating system the client is
running or the amount of memory installed on the client.

Each instance of vendor-class-data is formatted as follows:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+
| vendor-class-len | opaque-data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+

Figure 27: Format of vendor-class-data Field

The vendor-class-len field is 2 octets long and specifies the length
of the opaque vendor-class-data in network byte order.

Servers and clients MUST NOT include more than one instance of
OPTION_VENDOR_CLASS with the same Enterprise Number. Each instance
of OPTION_VENDOR_CLASS can carry multiple vendor-class-data
instances.

21.17. Vendor-Specific Information Option

This option is used by clients and servers to exchange vendor-
specific information.

The format of the Vendor-specific Information option is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_VENDOR_OPTS | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| enterprise-number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. vendor-option-data .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 28: Vendor-Specific Information Option Format

option-code: OPTION_VENDOR_OPTS (17).

option-len: 4 + length of vendor-option-data field.

enterprise-number: The vendor's registered Enterprise Number as
maintained by IANA [IANA-PEN]. A 4-octet field containing an
unsigned integer.

vendor-option-data: Vendor options, interpreted by vendor-specific
code on the clients and servers. A variable-length field (4
octets less than the value in the option-len field).

The definition of the information carried in this option is vendor
specific. The vendor is indicated in the enterprise-number field.
Use of vendor-specific information allows enhanced operation,
utilizing additional features in a vendor's DHCP implementation. A
DHCP client that does not receive requested vendor-specific
information will still configure the node's IPv6 stack to be
functional.

The vendor-option-data field MUST be encoded as a sequence of
code/length/value fields of format identical to the DHCP options (see
Section 21.1). The suboption codes are defined by the vendor
identified in the enterprise-number field and are not managed by
IANA. Each of the suboptions is formatted as follows:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| suboption-code | suboption-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. suboption-data .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 29: Vendor-Specific Options Format

suboption-code: The code for the suboption. A 2-octet field.

suboption-len: An unsigned integer giving the length of the
suboption-data field in this suboption in octets. A 2-octet
field.

suboption-data: The data area for the suboption. The length, in
octets, is specified by suboption-len.

Multiple instances of the Vendor-specific Information option may
appear in a DHCP message. Each instance of the option is interpreted
according to the option codes defined by the vendor identified by the
Enterprise Number in that option. Servers and clients MUST NOT send
more than one instance of the Vendor-specific Information option with
the same Enterprise Number. Each instance of the Vendor-specific
Information option MAY contain multiple suboptions.

A client that is interested in receiving a Vendor-specific
Information option:

* MUST specify the Vendor-specific Information option in an Option
Request option.

* MAY specify an associated Vendor Class option (see Section 21.16).

* MAY specify the Vendor-specific Information option with
appropriate data.

Servers only return the Vendor-specific Information options if
specified in Option Request options from clients and:

* MAY use the Enterprise Numbers in the associated Vendor Class
options to restrict the set of Enterprise Numbers in the Vendor-
specific Information options returned.

* MAY return all configured Vendor-specific Information options.

* MAY use other information in the message or in its configuration
to determine which set of Enterprise Numbers in the Vendor-
specific Information options to return.

21.18. Interface-Id Option

The relay agent MAY send the Interface-Id option to identify the
interface on which the client message was received. If a relay agent
receives a Relay-reply message with an Interface-Id option, the relay
agent relays the message to the client through the interface
identified by the option.

The format of the Interface-Id option is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_INTERFACE_ID | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. interface-id .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 30: Interface-Id Option Format

option-code: OPTION_INTERFACE_ID (18).

option-len: Length of interface-id field.

interface-id: An opaque value of arbitrary length generated by the
relay agent to identify one of the relay agent's interfaces. The
length, in octets, is specified by option-len.

The server MUST copy the Interface-Id option from the Relay-forward
message into the Relay-reply message the server sends to the relay
agent in response to the Relay-forward message. This option MUST NOT
appear in any message except a Relay-forward or Relay-reply message.

Servers MAY use the interface-id field for parameter assignment
policies. The interface-id value SHOULD be considered an opaque
value, with policies based on exact match only; that is, the
interface-id field SHOULD NOT be internally parsed by the server.
The interface-id value for an interface SHOULD be stable and remain
unchanged -- for example, after the relay agent is restarted; if the
interface-id value changes, a server will not be able to use it
reliably in parameter assignment policies.

21.19. Reconfigure Message Option

A server includes a Reconfigure Message option in a Reconfigure
message to indicate to the client whether the client responds with a
Renew message, a Rebind message, or an Information-request message.
The format of the Reconfigure Message option is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_RECONF_MSG | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| msg-type |
+-+-+-+-+-+-+-+-+

Figure 31: Reconfigure Message Option Format

option-code: OPTION_RECONF_MSG (19).

option-len: 1.

msg-type: 5 for Renew message, 6 for Rebind message, 11 for
Information-request message. A 1-octet unsigned integer.

The Reconfigure Message option can only appear in a Reconfigure
message.

21.20. Reconfigure Accept Option

A client uses the Reconfigure Accept option to announce to the server
whether the client is willing to accept Reconfigure messages, and a
server uses this option to tell the client whether or not to accept
Reconfigure messages. In the absence of this option, the default
behavior is that the client is unwilling to accept Reconfigure
messages. The format of the Reconfigure Accept option is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_RECONF_ACCEPT | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 32: Reconfigure Accept Option Format

option-code: OPTION_RECONF_ACCEPT (20).

option-len: 0.

21.21. Identity Association for Prefix Delegation Option

The IA_PD option is used to carry a prefix delegation identity
association, the parameters associated with the IA_PD, and the
prefixes associated with it. The format of the IA_PD option is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_IA_PD | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IAID (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| T1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| T2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. IA_PD-options .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 33: Identity Association for Prefix Delegation Option Format

option-code: OPTION_IA_PD (25).

option-len: 12 + length of IA_PD-options field.

IAID: The unique identifier for this IA_PD; the IAID must be unique
among the identifiers for all of this client's IA_PDs. The number
space for IA_PD IAIDs is separate from the number space for other
IA option types (i.e., IA_NA). A 4-octet field containing an
unsigned integer.

T1: The time interval after which the client should contact the
server from which the prefixes in the IA_PD were obtained to
extend the lifetimes of the prefixes delegated to the IA_PD; T1 is
a time duration relative to the message reception time expressed
in units of seconds. A 4-octet field containing an unsigned
integer.

T2: The time interval after which the client should contact any
available server to extend the lifetimes of the prefixes assigned
to the IA_PD; T2 is a time duration relative to the message
reception time expressed in units of seconds. A 4-octet field
containing an unsigned integer.

IA_PD-options: Options associated with this IA_PD. A variable-
length field (12 octets less than the value in the option-len
field).

The IA_PD-options field encapsulates those options that are specific
to this IA_PD. For example, all of the IA Prefix options (see
Section 21.22) carrying the prefixes associated with this IA_PD are
in the IA_PD-options field.

An IA_PD option may only appear in the options area of a DHCP
message. A DHCP message may contain multiple IA_PD options (though
each must have a unique IAID).

The status of any operations involving this IA_PD is indicated in a
Status Code option (see Section 21.13) in the IA_PD-options field.

Note that an IA_PD has no explicit "lifetime" or "lease length" of
its own. When the valid lifetimes of all of the prefixes in an IA_PD
have expired, the IA_PD can be considered as having expired. T1 and
T2 fields are included to give the server explicit control over when
a client should contact the server about a specific IA_PD.

In a message sent by a client to a server, the T1 and T2 fields
SHOULD be set to 0. The server MUST ignore any values in these
fields in messages received from a client.

In a message sent by a server to a client, the client MUST use the
values in the T1 and T2 fields for the T1 and T2 timers, unless
values in those fields are 0. The values in the T1 and T2 fields are
the number of seconds until T1 and T2.

The server selects the T1 and T2 times to allow the client to extend
the lifetimes of any prefixes in the IA_PD before the lifetimes
expire, even if the server is unavailable for some short period of
time. Recommended values for T1 and T2 are 0.5 and 0.8 times the
shortest preferred lifetime of the prefixes in the IA_PD that the
server is willing to extend, respectively. If the time at which the
prefixes in an IA_PD are to be renewed is to be left to the
discretion of the client, the server sets T1 and T2 to 0. The client
MUST follow the rules defined in Section 14.2.

If a client receives an IA_PD with T1 greater than T2 and both T1 and
T2 are greater than 0, the client discards the IA_PD option and
processes the remainder of the message as though the server had not
included the IA_PD option.

21.22. IA Prefix Option

The IA Prefix option is used to specify a prefix associated with an
IA_PD. The IA Prefix option must be encapsulated in the
IA_PD-options field of an IA_PD option (see Section 21.21).

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_IAPREFIX | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| preferred-lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| valid-lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| prefix-length | |
+-+-+-+-+-+-+-+-+ IPv6-prefix |
| (16 octets) |
| |
| |
| |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | .
+-+-+-+-+-+-+-+-+ .
. IAprefix-options .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 34: IA Prefix Option Format

option-code: OPTION_IAPREFIX (26).

option-len: 25 + length of IAprefix-options field.

preferred-lifetime: The preferred lifetime for the prefix in the
option, expressed in units of seconds. A value of 0xffffffff
represents "infinity" (see Section 7.7). A 4-octet field
containing an unsigned integer.

valid-lifetime: The valid lifetime for the prefix in the option,
expressed in units of seconds. A value of 0xffffffff represents
"infinity". A 4-octet field containing an unsigned integer.

prefix-length: Length for this prefix in bits. A 1-octet unsigned
integer.

IPv6-prefix: An IPv6 prefix. A 16-octet field.

IAprefix-options: Options associated with this prefix. A variable-
length field (25 octets less than the value in the option-len
field).

In a message sent by a client to a server, the preferred-lifetime and
valid-lifetime fields SHOULD be set to 0. The server MUST ignore any
received values in these lifetime fields.

The client SHOULD NOT send an IA Prefix option with 0 in the "prefix-
length" field (and an unspecified value (::) in the "IPv6-prefix"
field). A client MAY send a non-zero value in the "prefix-length"
field and the unspecified value (::) in the "IPv6-prefix" field to
indicate a preference for the size of the prefix to be delegated.
See [RFC8168] for further details on prefix-length hints.

The client MUST discard any prefixes for which the preferred lifetime
is greater than the valid lifetime.

The values in the preferred-lifetime and valid-lifetime fields are
the number of seconds remaining in each lifetime. See
Section 18.2.10.1 for more details on how these values are used for
delegated prefixes.

As per Section 7.7, the value of 0xffffffff for the preferred
lifetime or the valid lifetime is taken to mean "infinity" and should
be used carefully.

An IA Prefix option may appear only in an IA_PD option. More than
one IA Prefix option can appear in a single IA_PD option.

The status of any operations involving this IA Prefix option is
indicated in a Status Code option (see Section 21.13) in the
IAprefix-options field.

21.23. Information Refresh Time Option

This option is requested by clients and returned by servers to
specify an upper bound for how long a client should wait before
refreshing information retrieved from a DHCP server. It is only used
in Reply messages in response to Information-request messages. In
other messages, there will usually be other information that
indicates when the client should contact the server, e.g., T1/T2
times and lifetimes. This option is useful when the configuration
parameters change or during a renumbering event, as clients running
in the stateless mode will be able to update their configuration.

The format of the Information Refresh Time option is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|OPTION_INFORMATION_REFRESH_TIME| option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| information-refresh-time |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 35: Information Refresh Time Option Format

option-code: OPTION_INFORMATION_REFRESH_TIME (32).

option-len: 4.

information-refresh-time: Time duration relative to the current
time, expressed in units of seconds. A 4-octet field containing
an unsigned integer.

A DHCP client MUST request this option in the Option Request option
(see Section 21.7) when sending Information-request messages. A
client MUST NOT request this option in the Option Request option in
any other messages.

A server sending a Reply to an Information-request message SHOULD
include this option if it is requested in the Option Request option
of the Information-request. The option value MUST NOT be smaller
than IRT_MINIMUM. This option MUST only appear in the top-level
options area of Reply messages.

If the Reply to an Information-request message does not contain this
option, the client MUST behave as if the option with the value
IRT_DEFAULT was provided.

A client MUST use the refresh time IRT_MINIMUM if it receives the
option with a value less than IRT_MINIMUM.

As per Section 7.7, the value 0xffffffff is taken to mean "infinity"
and implies that the client should not refresh its configuration data
without some other trigger (such as detecting movement to a new
link).

If a client contacts the server to obtain new data or refresh some
existing data before the refresh time expires, then it SHOULD also
refresh all data covered by this option.

When the client detects that the refresh time has expired, it SHOULD
try to update its configuration data by sending an Information-
request as specified in Section 18.2.6, except that the client MUST
delay sending the first Information-request by a random amount of
time between 0 and INF_MAX_DELAY.

A client MAY have a maximum value for the refresh time, where that
value is used whenever the client receives this option with a value
higher than the maximum. This also means that the maximum value is
used when the received value is "infinity". A maximum value might
make the client less vulnerable to attacks based on forged DHCP
messages. Without a maximum value, a client may be made to use wrong
information for a possibly infinite period of time. There may,
however, be reasons for having a very long refresh time, so it may be
useful for this maximum value to be configurable.

21.24. SOL_MAX_RT Option

A DHCP server sends the SOL_MAX_RT option to a client to override the
default value of SOL_MAX_RT. The value of SOL_MAX_RT in the option
replaces the default value defined in Section 7.6. One use for the
SOL_MAX_RT option is to set a higher value for SOL_MAX_RT; this
reduces the Solicit traffic from a client that has not received a
response to its Solicit messages.

The format of the SOL_MAX_RT option is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_SOL_MAX_RT | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SOL_MAX_RT value |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 36: SOL_MAX_RT Option Format

option-code: OPTION_SOL_MAX_RT (82).

option-len: 4.

SOL_MAX_RT value: Overriding value for SOL_MAX_RT in seconds; MUST
be in this range: 60 <= "value" <= 86400 (1 day). A 4-octet field
containing an unsigned integer.

A DHCP client MUST include the SOL_MAX_RT option code in any Option
Request option (see Section 21.7) it sends in a Solicit message.

The DHCP server MAY include the SOL_MAX_RT option in any response it
sends to a client that has included the SOL_MAX_RT option code in an
Option Request option. The SOL_MAX_RT option is sent as a top-level
option in the message to the client.

A DHCP client MUST ignore any SOL_MAX_RT option values that are less
than 60 or more than 86400.

If a DHCP client receives a message containing a SOL_MAX_RT option
that has a valid value for SOL_MAX_RT, the client MUST set its
internal SOL_MAX_RT parameter to the value contained in the
SOL_MAX_RT option. This value of SOL_MAX_RT is then used by the
retransmission mechanism defined in Sections 15 and 18.2.1.

The purpose of this mechanism is to give network administrators a way
to avoid excessive DHCP traffic if all DHCP servers become
unavailable. Therefore, this value is expected to be retained for as
long as practically possible.

An updated SOL_MAX_RT value applies only to the network interface on
which the client received the SOL_MAX_RT option.

21.25. INF_MAX_RT Option

A DHCP server sends the INF_MAX_RT option to a client to override the
default value of INF_MAX_RT. The value of INF_MAX_RT in the option
replaces the default value defined in Section 7.6. One use for the
INF_MAX_RT option is to set a higher value for INF_MAX_RT; this
reduces the Information-request traffic from a client that has not
received a response to its Information-request messages.

The format of the INF_MAX_RT option is:

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_INF_MAX_RT | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| INF_MAX_RT value |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 37: INF_MAX_RT Option Format

option-code: OPTION_INF_MAX_RT (83).

option-len: 4.

INF_MAX_RT value: Overriding value for INF_MAX_RT in seconds; MUST
be in this range: 60 <= "value" <= 86400 (1 day). A 4-octet field
containing an unsigned integer.

A DHCP client MUST include the INF_MAX_RT option code in any Option
Request option (see Section 21.7) it sends in an Information-request
message.

The DHCP server MAY include the INF_MAX_RT option in any response it
sends to a client that has included the INF_MAX_RT option code in an
Option Request option. The INF_MAX_RT option is a top-level option
in the message to the client.

A DHCP client MUST ignore any INF_MAX_RT option values that are less
than 60 or more than 86400.

If a DHCP client receives a message containing an INF_MAX_RT option
that has a valid value for INF_MAX_RT, the client MUST set its
internal INF_MAX_RT parameter to the value contained in the
INF_MAX_RT option. This value of INF_MAX_RT is then used by the
retransmission mechanism defined in Sections 15 and 18.2.6.

An updated INF_MAX_RT value applies only to the network interface on
which the client received the INF_MAX_RT option.