Partial

RFC 9915 - Dynamic Host Configuration Protocol for IPv6 (DHCPv6)

Every requirement this repository extracted from RFC 9915, the tests bound to it, and what a reader has verified about them. This summary is enrolled and gated by ./le rfc check.

Overview

Positive

what Ze has

Tested both ways1.6%2 of 126 gated MUSTs

a positive test proves Ze does what the requirement demands and a negative one proves it refuses what the requirement forbids

One polarity plus reason61.1%77 of 126 gated MUSTs

the requirement admits no counter-case, so one polarity plus a recorded reason is the whole proof available for it

One polarity, unexcused0.0%0 of 126 gated MUSTs

one direction is tested, the other is neither tested nor excused, and nothing states which

Partial proof; remaining gap0.0%0 of 126 gated MUSTs

scoped tests exist; the remaining obligation is unmet or unproven, with zero whole-requirement credit

No test at all0.0%0 of 126 gated MUSTs

no test carries the requirement id, whether or not a gap states why

Proven by a recorded break97.6%83 of 85 tagged units, 0 escaped and 2 lapsed

a red was observed once under a recorded procedure, and the unit, the claim and the producer it rested on still hash to what was recorded. The break is not re-run. A test pair is not a proof until one has been observed

Neutral

measures that are neither good news nor bad

Gated MUSTs126of 126 this summary declares

MUST-level requirements the gate HOLDS. A population, not a result: the shares beside it are what says how Ze stands

Out of scope44of 126 gated MUSTs

an obligation that does not bind Ze. A {not-applicable} annotation says it never bound; a {feature-declined} annotation says its condition is an optional feature Ze does not offer, and quotes the RFC sentence that makes it optional. Scope, not coverage: it stays in the denominator every share on this page is taken over

Not applicable4.0%5 of 126 gated MUSTs

a {not-applicable} annotation says the obligation does not bind Ze, so no test is owed for it. It stays in the denominator every share here is taken over

Met below Ze2.4%3 of 126 gated MUSTs

a {lower-layer} annotation says a layer under Ze performs the behavior, on state Ze installs into that layer, and names the producer that installs it. The obligation binds Ze and is met; Ze proves none of it, because its own boundary carries no value the behavior reads

Optional feature declined31.0%39 of 126 gated MUSTs

a {feature-declined} annotation says the obligation is conditional on a feature the RFC makes optional and Ze does not offer, and it quotes the sentence that makes it optional. The condition is false, so nothing is owed and nothing is missing. It stays in the denominator every share here is taken over

The 8 shares marked as a part above are the whole of the 126 gated MUSTs: they add to 100%. Proven by a recorded break is a share of TAGGED UNITS, a different population, so it is not one of them.

How to read the colors

A color names what the measure MEANS, not how well Ze scores on it. Green is a good outcome at any value, red is a bad one, and neither a population nor a scope count is an outcome, so both take no color. The number under the label is what says how far Ze has got.

CardTone hereWhy that color
Gated MUSTs neutral no color: a population is a scale, and a larger one is neither good news nor bad. It is the accounting total
Out of scope neutral no color: an obligation that never bound Ze is neither an achievement nor a failure, and counting it either way would be a claim
Tested both ways ok green at every value: a test pair is the outcome this gate exists to produce, and the share under the label is what says how far Ze has got
One polarity plus reason ok green at every value: where no counter-case exists, one polarity IS the complete answer, and a recorded reason is what the gate demands beside it
One polarity, unexcused ok green at zero, RED above it: half a proof with no reason for the other half
Partial proof; remaining gap ok green at zero, RED above it: a tested clause cannot prove the whole requirement
No test at all ok green at zero, RED above it: a binding obligation nothing exercises is a claim with nothing behind it, whether or not a reason is stated
Not applicable neutral no color: an obligation that never bound Ze is neither an achievement nor a failure, and counting it either way would be a claim
Met below Ze neutral no color: an obligation met below Ze is neither a test Ze wrote nor work Ze owes, and the two green shares above are what says how much Ze proves itself
Optional feature declined neutral no color: an obligation whose condition Ze never meets is neither an achievement nor a failure. The absent FEATURE is disclosed on the RFC's own status row, as an implementation gap a later scope decision can revisit
Proven by a recorded break ok green at every value: an observed break is the outcome the discrimination gate exists to produce. The denominator is TAGGED UNITS, not obligations, so this share is not one of the parts above
Audit verdicts warn RED on the first weak, wrong or unimplemented verdict, amber while a verdict is no longer current or a gated MUST is unjudged, green when every one is judged sound and current

At a glance

FieldValue
Public status Partial
Enrolment Enrolled
Requirements 126
Gated MUST-level 126
Not applicable, so out of scope 5
Declared gaps 0
Declared gaps a test demonstrates 0
Gated with no test 0
Nightly-only evidence 0
Test tags 85
Tagged units 85
Recorded audit verdicts 0
Discrimination records 85
Summary rfc/short/rfc9915.md
Requirement shard rfc/requirements/rfc9915.md
RFC text rfc/full/rfc9915.txt

Enrolment

Enrolled: DHCPv6 client of the iface-dhcp plugin; RFC 8415 to RFC 9915 put in scope by the owner as an exception to the RFC scope freeze, 2026-10-18

What the public ledger says

Status: Partial

What the ledger says is covered Client role only. The iface-dhcp plugin (internal/plugins/iface/dhcp/) runs a long-lived stateful DHCPv6 client per interface unit: Solicit with Rapid Commit and Advertise selection by preference, Request, Renew at T1 to the leasing server and Rebind at T2 without a Server ID, the section 15 retransmission engine with a per-interface rate limit, SOL_MAX_RT processing, Reply and Advertise validation, IA_NA addresses installed as /128 with the lease's lifetimes, IA_PD prefix delegation published as an event, expiry teardown and Release on Stop. Tests bound per requirement in rfc/short/rfc9915.md.
What the ledger says remains

No MUST gap.

Not offered: Confirm, Information-request (stateless DHCPv6), Reconfigure and the Authentication option, the User Class, Vendor Class, Vendor-specific and NTP server options, any use of a delegated prefix (ze publishes it and neither subnets it onto other interfaces nor advertises it in Router Advertisements), and a configurable transmission rate limit; the client always uses a DUID-LL unless a duid is configured. Server and relay roles are not implemented.

Coverage

BucketCountWhat it counts
Positive and negative tests 2 one part of the gated population
Annotated (including scoped evidence) 124 one part of the gated population
One polarity only 0 one part of the gated population
No test and no annotation 0 one part of the gated population
Partial proof; remaining gap (subset of annotated; zero whole-requirement credit) 0 an overlay: each of these is also counted by the part it falls in
Evidence that runs nightly only 0 an overlay: each of these is also counted by the part it falls in
Derived from other rows 0 outside the gated population: each asserts nothing and derives its state from the rows it names, which the parts above already count
Gated MUST-level requirements126every gated MUST falls in exactly one bucket above

Positive and negative tests (2): RFC9915-18.2.10.1-1, RFC9915-18.2.12-2

Annotated (including scoped evidence) (124): RFC9915-6.3-1, RFC9915-6.3-2, RFC9915-6.3-3, RFC9915-7.2-1, RFC9915-7.2-3, RFC9915-10-1, RFC9915-11-1, RFC9915-11-2, RFC9915-11.2-1, RFC9915-11.2-2, RFC9915-11.2-3, RFC9915-11.2-4, RFC9915-11.2-5, RFC9915-11.3-1, RFC9915-11.4-1, RFC9915-12-1, RFC9915-12-2, RFC9915-14.1-1, RFC9915-14.1-2, RFC9915-14.2-1, RFC9915-14.2-2, RFC9915-15-1, RFC9915-15-2, RFC9915-16-1, RFC9915-16-2, RFC9915-16.1-1, RFC9915-16.2-1, RFC9915-16.3-1, RFC9915-16.4-1, RFC9915-16.5-1, RFC9915-16.6-1, RFC9915-16.7-1, RFC9915-16.8-1, RFC9915-16.9-1, RFC9915-16.10-1, RFC9915-16.10-2, RFC9915-16.10-3, RFC9915-16.11-2, RFC9915-16.12-1, RFC9915-16.13-1, RFC9915-16.14-1, RFC9915-18-1, RFC9915-18.2-1, RFC9915-18.2.1-1, RFC9915-18.2.1-2, RFC9915-18.2.1-3, RFC9915-18.2.1-4, RFC9915-18.2.1-5, RFC9915-18.2.1-6, RFC9915-18.2.1-7, RFC9915-18.2.2-1, RFC9915-18.2.2-2, RFC9915-18.2.2-3, RFC9915-18.2.2-4, RFC9915-18.2.3-1, RFC9915-18.2.3-2, RFC9915-18.2.3-3, RFC9915-18.2.4-1, RFC9915-18.2.4-2, RFC9915-18.2.4-4, RFC9915-18.2.4-5, RFC9915-18.2.4-6, RFC9915-18.2.4-7, RFC9915-18.2.6-1, RFC9915-18.2.6-2, RFC9915-18.2.6-3, RFC9915-18.2.6-4, RFC9915-18.2.7-1, RFC9915-18.2.7-2, RFC9915-18.2.7-3, RFC9915-18.2.7-4, RFC9915-18.2.7-5, RFC9915-18.2.7-6, RFC9915-18.2.7-7, RFC9915-18.2.7-8, RFC9915-18.2.8-1, RFC9915-18.2.8-2, RFC9915-18.2.8-3, RFC9915-18.2.8-4, RFC9915-18.2.8-5, RFC9915-18.2.8-6, RFC9915-18.2.9-1, RFC9915-18.2.9-2, RFC9915-18.2.9-3, RFC9915-18.2.9-4, RFC9915-18.2.9-5, RFC9915-18.2.10-1, RFC9915-18.2.10.1-3, RFC9915-18.2.10.5-1, RFC9915-18.2.11-1, RFC9915-18.2.11-2, RFC9915-18.2.12-1, RFC9915-18.2.12-3, RFC9915-18.2.12-4, RFC9915-18.3.5-1, RFC9915-20.2-1, RFC9915-20.3-3, RFC9915-20.3-4, RFC9915-21-1, RFC9915-21.4-2, RFC9915-21.6-3, RFC9915-21.6-4, RFC9915-21.7-1, RFC9915-21.7-2, RFC9915-21.9-1, RFC9915-21.15-1, RFC9915-21.15-2, RFC9915-21.16-1, RFC9915-21.17-1, RFC9915-21.17-2, RFC9915-21.17-3, RFC9915-21.22-2, RFC9915-21.23-1, RFC9915-21.23-2, RFC9915-21.23-5, RFC9915-21.23-6, RFC9915-21.23-7, RFC9915-21.24-3, RFC9915-21.24-4, RFC9915-21.25-2, RFC9915-21.25-3, RFC9915-21.25-4, RFC9915-22.3-1, RFC9915-A-1

Requirements

RequirementLevelSectionTests
RFC9915-6.3-1If the client uses a delegated prefix to configure addresses on interfaces on itself or other nodes behind it, the preferred and valid lifetimes of those addresses MUST be no longer than the remaining preferred and valid lifetimes, respectively, for the delegated prefix at any time. (§6.3)
MUST 6.3
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "the client might assign a subnet from a delegated prefix to one of its interfaces and begin sending Router Advertisements for the prefix on that link"; ze uses no delegated prefix itself: internal/plugins/iface/dhcp/dhcp_v6_linux.go::effect records the IA_PD prefix and publishes it as a dhcp-acquired event, and its subscribers, handleDHCPLeaseEvent in internal/component/iface/register.go and syncWorker.handleDHCPEvent in internal/plugins/ntp/ntp.go, configure no address and send no Router Advertisement from it

RFC9915-6.3-2In particular, if the delegated prefix or a prefix derived from it is advertised for stateless address autoconfiguration [RFC4862], the advertised preferred and valid lifetimes MUST NOT exceed the corresponding remaining lifetimes of the delegated prefix. (§6.3)
MUST NOT 6.3
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "the client might assign a subnet from a delegated prefix to one of its interfaces and begin sending Router Advertisements for the prefix on that link"; ze uses no delegated prefix itself: internal/plugins/iface/dhcp/dhcp_v6_linux.go::effect records the IA_PD prefix and publishes it as a dhcp-acquired event, and its subscribers, handleDHCPLeaseEvent in internal/component/iface/register.go and syncWorker.handleDHCPEvent in internal/plugins/ntp/ntp.go, configure no address and send no Router Advertisement from it

RFC9915-6.3-3A client that has delegated any of the address space received through DHCP Prefix Delegation MUST NOT issue a DHCP Release on the relevant delegated prefix while any of the address space is outstanding. (§6.3)
MUST NOT 6.3
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "the client might assign a subnet from a delegated prefix to one of its interfaces and begin sending Router Advertisements for the prefix on that link"; ze uses no delegated prefix itself: internal/plugins/iface/dhcp/dhcp_v6_linux.go::effect records the IA_PD prefix and publishes it as a dhcp-acquired event, and its subscribers, handleDHCPLeaseEvent in internal/component/iface/register.go and syncWorker.handleDHCPEvent in internal/plugins/ntp/ntp.go, configure no address and send no Router Advertisement from it

RFC9915-7.2-1Clients MUST listen for DHCP messages on UDP port 546. (§7.2)
MUST 7.2
positiveno testno positive test
negativeno testno negative test

{lower-layer}: vendored insomniacslk/dhcp nclient6; internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::dialV6Link opens nclient6.New on the device and passes no port, and the library binds UDP port 546

RFC9915-7.2-3Therefore, clients MUST send DHCP messages to UDP destination port 547. (§7.2)
MUST 7.2
positiveno testno positive test
negativeno testno negative test

{lower-layer}: vendored insomniacslk/dhcp nclient6; internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::dialV6Link passes no destination, and the library sends every client message to All_DHCP_Relay_Agents_and_Servers port 547

RFC9915-10-1The message compression scheme in Section 4.1.4 of [RFC1035] MUST NOT be used. (§10)
MUST NOT 10
positiveno testno positive test
negativeno testno negative test

{not-applicable}: ze's client encodes no domain name: the options it sends (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::newV6Message, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease) carry DUIDs, codes, IAs and timers, never a DNS-encoded name

RFC9915-11-1Clients and servers MUST treat DUIDs as opaque values and MUST only compare DUIDs for equality. (§11)
MUST 11
positiveno testno positive test

{single-polarity}: the conforming case, a Reply naming this client's DUID, is the positive control of the same test, and a DUID compared for equality has no other observable outcome

RFC9915-11-2Clients and servers MUST NOT restrict DUIDs to the types defined in this document, as additional DUID types may be defined in the future. (§11)
MUST NOT 11
negativeno testno negative test

{single-polarity}: a DUID type cannot be restricted by an input ze refuses, so the conforming acceptance is the only observable outcome

RFC9915-11.2-1The hardware type MUST be a valid hardware type assigned by IANA; see [IANA-HARDWARE-TYPES]. (§11.2)
MUST 11.2
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "the ways in which a DUID may be constructed"; ze generates no DUID of this type: internal/plugins/iface/dhcp/dhcp_v6_linux.go::identify builds a DUID-LL from the device MAC, or takes the operator's configured duid octets as given

RFC9915-11.2-2Clients and servers using this type of DUID MUST store the DUID-LLT in stable storage and MUST continue to use this DUID-LLT even if the network interface used to generate the DUID-LLT is removed. (§11.2)
MUST 11.2
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "the ways in which a DUID may be constructed"; ze generates no DUID of this type: internal/plugins/iface/dhcp/dhcp_v6_linux.go::identify builds a DUID-LL from the device MAC, or takes the operator's configured duid octets as given

RFC9915-11.2-3Clients and servers that do not have any stable storage MUST NOT use this type of DUID. (§11.2)
MUST NOT 11.2
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "the ways in which a DUID may be constructed"; ze generates no DUID of this type: internal/plugins/iface/dhcp/dhcp_v6_linux.go::identify builds a DUID-LL from the device MAC, or takes the operator's configured duid octets as given

RFC9915-11.2-4Clients and servers that use this DUID SHOULD attempt to configure the time prior to generating the DUID, if that is possible, and MUST use some sort of time source (for example, a real-time clock) in generating the DUID, even if that time source could not be configured prior to generating the DUID. (§11.2)
MUST 11.2
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "the ways in which a DUID may be constructed"; ze generates no DUID of this type: internal/plugins/iface/dhcp/dhcp_v6_linux.go::identify builds a DUID-LL from the device MAC, or takes the operator's configured duid octets as given

RFC9915-11.2-5A DHCP client that generates a DUID-LLT using this mechanism MUST provide an administrative interface that replaces the existing DUID with a newly generated DUID-LLT. (§11.2)
MUST 11.2
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "the ways in which a DUID may be constructed"; ze generates no DUID of this type: internal/plugins/iface/dhcp/dhcp_v6_linux.go::identify builds a DUID-LL from the device MAC, or takes the operator's configured duid octets as given

RFC9915-11.3-1The source of the identifier is left up to the vendor defining it, but each identifier part of each DUID-EN MUST be unique to the device that is using it, and MUST be assigned to the device no later than at the first usage and stored in some form of non-volatile storage. (§11.3)
MUST 11.3
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "the ways in which a DUID may be constructed"; ze generates no DUID of this type: internal/plugins/iface/dhcp/dhcp_v6_linux.go::identify builds a DUID-LL from the device MAC, or takes the operator's configured duid octets as given

RFC9915-11.4-1The hardware type MUST be a valid hardware type assigned by IANA; see [IANA-HARDWARE-TYPES]. (§11.4)
MUST 11.4
negativeno testno negative test

{single-polarity}: the hardware type is a constant ze writes, so no input yields another value to assert negatively

RFC9915-12-1The IAID uniquely identifies the IA and MUST be chosen to be unique among the IAIDs for that IA type on the client (e.g., an IA_NA with an IAID of 0 and an IA_PD with an IAID of 0 are each considered unique). (§12)
MUST 12
negativeno testno negative test

{single-polarity}: ze holds one IA_NA and one IA_PD per client, so no input yields two IAs of one type to assert negatively

RFC9915-12-2For any given use of an IA by the client, the IAID for that IA MUST be consistent across restarts of the DHCP client. (§12)
MUST 12
negativeno testno negative test

{single-polarity}: the IAID is a pure function of the MAC, so no input makes a restart change it

RFC9915-14.1-1A DHCPv6 client MUST limit the rate of DHCP messages it transmits or retransmits. (§14.1)
MUST 14.1
negativeno testno negative test

{single-polarity}: the limit is the client's own schedule, so no peer input makes it exceed the limit to assert negatively

RFC9915-14.1-2For a device that has multiple interfaces, the limit MUST be enforced on a per-interface basis. (§14.1)
MUST 14.1
negativeno testno negative test

{single-polarity}: one client runs per interface, so no input makes two interfaces share a window to assert negatively

RFC9915-14.2-1When T1 and/or T2 values are set to 0, the client MUST choose a time to avoid message storms. (§14.2)
MUST 14.2
negativeno testno negative test

{single-polarity}: the timers are chosen by the client, so the zero T1/T2 input is itself the case asserted

RFC9915-14.2-2In particular, it MUST NOT transmit immediately. (§14.2)
MUST NOT 14.2
negativeno testno negative test

{single-polarity}: the timers are chosen by the client, so the zero T1/T2 input is itself the case asserted

RFC9915-15-1The client MUST update an "elapsed-time" value within an Elapsed Time option (see Section 21.9) in the retransmitted message. (§15)
MUST 15
negativeno testno negative test

{single-polarity}: the Elapsed Time is computed by the client, so no input yields a stale value to assert negatively

RFC9915-15-2Of course, a client MUST listen for a Reconfigure if it has negotiated for its use with the server. (§15)
MUST 15
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "The client includes a Reconfigure Accept option (see Section 21.20) if the client is willing to accept Reconfigure messages from the server"; ze is never willing: internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit sends no Reconfigure Accept option, and internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::replyMatcher discards every Reconfigure

RFC9915-16-1Clients, relay agents, and servers MUST NOT discard messages that contain unknown options (or instances of vendor options with unknown enterprise-number values). (§16)
MUST NOT 16
negativeno testno negative test

{single-polarity}: the conforming outcome is the acceptance, and the unknown-message-type refusal is the separate row RFC9915-16-2

RFC9915-16-2A client or server MUST discard any received DHCP messages with an unknown message type. (§16)
MUST 16
positiveno testno positive test

{single-polarity}: a known message type taken as an answer is the ordinary path every exchange test asserts

RFC9915-16.1-1A client MUST leave the transaction ID unchanged in retransmissions of a message. (§16.1)
MUST 16.1
negativeno testno negative test

{single-polarity}: the transaction ID is chosen by the client, so no input makes a retransmission change it

RFC9915-16.2-1Clients MUST discard any received Solicit messages. (§16.2)
MUST 16.2
positiveno testno positive test

{single-polarity}: the obligation is a discard, and a client has no Solicit to accept

RFC9915-16.3-1Clients MUST discard any received Advertise message that meets any of the following conditions: (§16.3)
MUST 16.3
positiveno testno positive test

{single-polarity}: the accepted Advertise is the positive control in RFC9915-18.2.1-6

RFC9915-16.4-1Clients MUST discard any received Request messages. (§16.4)
MUST 16.4
positiveno testno positive test

{single-polarity}: the obligation is a discard, and a client has no Request to accept

RFC9915-16.5-1Clients MUST discard any received Confirm messages. (§16.5)
MUST 16.5
positiveno testno positive test

{single-polarity}: the obligation is a discard, and a client has no Confirm to accept

RFC9915-16.6-1Clients MUST discard any received Renew messages. (§16.6)
MUST 16.6
positiveno testno positive test

{single-polarity}: the obligation is a discard, and a client has no Renew to accept

RFC9915-16.7-1Clients MUST discard any received Rebind messages. (§16.7)
MUST 16.7
positiveno testno positive test

{single-polarity}: the obligation is a discard, and a client has no Rebind to accept

RFC9915-16.8-1Clients MUST discard any received Decline messages. (§16.8)
MUST 16.8
positiveno testno positive test

{single-polarity}: the obligation is a discard, and a client has no Decline to accept

RFC9915-16.9-1Clients MUST discard any received Release messages. (§16.9)
MUST 16.9
positiveno testno positive test

{single-polarity}: the obligation is a discard, and a client has no Release to accept

RFC9915-16.10-1Clients MUST discard any received Reply message that meets any of the following conditions: (§16.10)
MUST 16.10
positiveno testno positive test

{single-polarity}: the accepted Reply is the control of the same test and of every exchange test

RFC9915-16.10-2If the client included a Client Identifier option (see Section 21.2) in the original message, the Reply message MUST include a Client Identifier option, and the contents of the Client Identifier option MUST match the DUID of the client. (§16.10)
MUST 16.10
positiveno testno positive test

{single-polarity}: the matching Client ID is the control of the same test

RFC9915-16.10-3If the client did not include a Client Identifier option in the original message, the Reply message MUST NOT include a Client Identifier option. (§16.10)
MUST NOT 16.10
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "The client SHOULD include a Client Identifier option (see Section 21.2) to identify itself to the server"; ze never omits it: internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::newV6Message adds a Client Identifier option to every message, so the condition never holds

RFC9915-16.11-2Clients MUST discard any Reconfigure message that meets any of the following conditions: (§16.11)
MUST 16.11
positiveno testno positive test

{single-polarity}: ze accepts no Reconfigure at all, so no conforming Reconfigure exists to assert positively

RFC9915-16.12-1Clients MUST discard any received Information-request messages. (§16.12)
MUST 16.12
positiveno testno positive test

{single-polarity}: the obligation is a discard, and a client has no Information-request to accept

RFC9915-16.13-1Clients MUST discard any received Relay-forward messages. (§16.13)
MUST 16.13
positiveno testno positive test

{single-polarity}: the obligation is a discard, and a client has no Relay-forward to accept

RFC9915-16.14-1Clients and servers MUST discard any received Relay-reply messages. (§16.14)
MUST 16.14
positiveno testno positive test

{single-polarity}: the obligation is a discard, and a client has no Relay-reply to accept

RFC9915-18-1The client MUST NOT be using any of the addresses or delegated prefixes for which it tries to obtain the bindings by sending the Solicit message. (§18)
MUST NOT 18
negativeno testno negative test

{single-polarity}: the client starts a Solicit only from an empty or expired lease, so no input yields a Solicit for an address in use to assert negatively

RFC9915-18.2-1The client SHOULD be suspicious of the Reconfigure message (they may be faked), and it MUST NOT abandon any resources it might have already obtained. (§18.2)
MUST NOT 18.2
negativeno testno negative test

{single-polarity}: ze discards every Reconfigure, so no input makes it abandon a resource on one

RFC9915-18.2.1-1The client MUST include a Client Identifier option (see Section 21.2) to identify itself to the server. (§18.2.1)
MUST 18.2.1
negativeno testno negative test

{single-polarity}: the Client ID is written by the client, so no input removes it

RFC9915-18.2.1-2The client MUST include an Elapsed Time option (see Section 21.9) to indicate how long the client has been trying to complete the current DHCP message exchange. (§18.2.1)
MUST 18.2.1
negativeno testno negative test

{single-polarity}: the Elapsed Time is written by the client, so no input removes it

RFC9915-18.2.1-3The client MUST include an Option Request option (ORO) (see Section 21.7) to request the SOL_MAX_RT option (see Section 21.24) and any other options the client is interested in receiving. (§18.2.1)
MUST 18.2.1
negativeno testno negative test

{single-polarity}: the ORO is a constant the client writes, so no input removes SOL_MAX_RT from it

RFC9915-18.2.1-4The client MUST NOT include any other options in the Solicit message, except as specifically allowed in the definition of individual options. (§18.2.1)
MUST NOT 18.2.1
negativeno testno negative test

{single-polarity}: the option set is fixed by the builder, so no input adds an option

RFC9915-18.2.1-5Also, the first RT MUST be selected to be strictly greater than IRT by choosing RAND to be strictly greater than 0. (§18.2.1)
MUST 18.2.1
negativeno testno negative test

{single-polarity}: RAND is drawn by the client, so no input makes the first RT reach IRT

RFC9915-18.2.1-6A client MUST collect valid Advertise messages for the first RT seconds, unless it receives a valid Advertise message with a preference value of 255. (§18.2.1)
MUST 18.2.1
negativeno testno negative test

{single-polarity}: the collection window is the client's own schedule, so no input ends it early other than the 255 case asserted

RFC9915-18.2.1-7If the DHCP client is configured with either MRC or MRD set to a value other than 0, it MUST stop trying to configure the interface if the message exchange fails. (§18.2.1)
MUST 18.2.1
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "A DHCP client SHOULD choose MRC and MRD values of 0"; ze does: internal/plugins/iface/dhcp/dhcp_v6_linux.go::solicit runs the Solicit exchange with MRC and MRD 0 from Table 1, and no configuration leaf sets them

RFC9915-18.2.2-1The client MUST include the identifier of the destination server in a Server Identifier option (see Section 21.3). (§18.2.2)
MUST 18.2.2
negativeno testno negative test

{single-polarity}: the Server ID is copied by the builder, so no input removes it

RFC9915-18.2.2-2The client MUST include a Client Identifier option (see Section 21.2) to identify itself to the server. (§18.2.2)
MUST 18.2.2
negativeno testno negative test

{single-polarity}: the Client ID is written by the client, so no input removes it

RFC9915-18.2.2-3The client MUST include an Elapsed Time option (see Section 21.9) to indicate how long the client has been trying to complete the current DHCP message exchange. (§18.2.2)
MUST 18.2.2
negativeno testno negative test

{single-polarity}: the Elapsed Time is written by the client, so no input removes it

RFC9915-18.2.2-4The client MUST include an Option Request option (see Section 21.7) to request the SOL_MAX_RT option (see Section 21.24) and any other options the client is interested in receiving. (§18.2.2)
MUST 18.2.2
negativeno testno negative test

{single-polarity}: the ORO is a constant the client writes, so no input removes SOL_MAX_RT from it

RFC9915-18.2.3-1The client MUST include a Client Identifier option (see Section 21.2) to identify itself to the server. (§18.2.3)
MUST 18.2.3
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "has obtained addresses and no delegated prefixes from a server, the client SHOULD initiate a Confirm/Reply message exchange"; ze sends no Confirm: internal/plugins/iface/dhcp/dhcp_v6_attach_linux.go::noteMove starts only the MUST-level Rebind for a lease holding a delegated prefix and sends nothing for a lease of addresses alone, and no builder produces message type 4; the absent Confirm is disclosed in Support remaining

RFC9915-18.2.3-2The client MUST include an Elapsed Time option (see Section 21.9) to indicate how long the client has been trying to complete the current DHCP message exchange. (§18.2.3)
MUST 18.2.3
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "has obtained addresses and no delegated prefixes from a server, the client SHOULD initiate a Confirm/Reply message exchange"; ze sends no Confirm: internal/plugins/iface/dhcp/dhcp_v6_attach_linux.go::noteMove starts only the MUST-level Rebind for a lease holding a delegated prefix and sends nothing for a lease of addresses alone, and no builder produces message type 4; the absent Confirm is disclosed in Support remaining

RFC9915-18.2.3-3The first Confirm message from the client on the interface MUST be delayed by a random amount of time between 0 and CNF_MAX_DELAY. (§18.2.3)
MUST 18.2.3
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "has obtained addresses and no delegated prefixes from a server, the client SHOULD initiate a Confirm/Reply message exchange"; ze sends no Confirm: internal/plugins/iface/dhcp/dhcp_v6_attach_linux.go::noteMove starts only the MUST-level Rebind for a lease holding a delegated prefix and sends nothing for a lease of addresses alone, and no builder produces message type 4; the absent Confirm is disclosed in Support remaining

RFC9915-18.2.4-1However, as the client SHOULD renew/ rebind all IAs from the server at the same time, the client MUST select T1 and T2 times from all IA options that will guarantee that the client initiates transmissions of Renew/Rebind messages not later than at the T1/T2 times associated with any of the client's bindings (earliest T1/T2). (§18.2.4)
MUST 18.2.4
negativeno testno negative test

{single-polarity}: the earliest-T1 selection is the client's own arithmetic, so the multi-IA input is itself the case asserted

RFC9915-18.2.4-2A client MUST also initiate a Renew/Reply message exchange before time T1 if the client's link-local address used in previous interactions with the server is no longer valid and it is willing to receive Reconfigure messages. (§18.2.4)
MUST 18.2.4
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "The client includes a Reconfigure Accept option (see Section 21.20) if the client is willing to accept Reconfigure messages from the server"; ze is never willing: internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit sends no Reconfigure Accept option, and internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::replyMatcher discards every Reconfigure

RFC9915-18.2.4-4The client MUST include a Server Identifier option (see Section 21.3) in the Renew message, identifying the server with which the client most recently communicated. (§18.2.4)
MUST 18.2.4
negativeno testno negative test

{single-polarity}: the Server ID is written by the client, so no input removes it

RFC9915-18.2.4-5The client MUST include a Client Identifier option (see Section 21.2) to identify itself to the server. (§18.2.4)
MUST 18.2.4
negativeno testno negative test

{single-polarity}: the Client ID is written by the client, so no input removes it

RFC9915-18.2.4-6The client MUST include an Elapsed Time option (see Section 21.9) to indicate how long the client has been trying to complete the current DHCP message exchange. (§18.2.4)
MUST 18.2.4
negativeno testno negative test

{single-polarity}: the Elapsed Time is written by the client, so no input removes it

RFC9915-18.2.4-7The client MUST NOT include addresses and prefixes in any IA option that the client did not obtain from the server or that are no longer valid (that have a valid lifetime of 0). (§18.2.4)
MUST NOT 18.2.4
positiveno testno positive test

{single-polarity}: the address still valid is the control of the same test

RFC9915-18.2.6-1The client MUST include an Elapsed Time option (see Section 21.9) to indicate how long the client has been trying to complete the current DHCP message exchange. (§18.2.6)
MUST 18.2.6
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists

RFC9915-18.2.6-2The client MUST include an Option Request option (see Section 21.7) to request the INF_MAX_RT option (see Section 21.25), the Information Refresh Time option (see Section 21.23), and any other options the client is interested in receiving. (§18.2.6)
MUST 18.2.6
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists

RFC9915-18.2.6-3When responding to a Reconfigure, the client MUST include a Server Identifier option (see Section 21.3) with the identifier from the Reconfigure message to which the client is responding. (§18.2.6)
MUST 18.2.6
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists

RFC9915-18.2.6-4The first Information-request message from the client on the interface MUST be delayed by a random amount of time between 0 and INF_MAX_DELAY. (§18.2.6)
MUST 18.2.6
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists

RFC9915-18.2.7-1The client MUST include a Server Identifier option (see Section 21.3) in the Renew message, identifying the server that allocated the lease(s). (§18.2.7)
MUST 18.2.7
negativeno testno negative test

{single-polarity}: the Server ID is written by the client, so no input removes it

RFC9915-18.2.7-2The client MUST include a Client Identifier option (see Section 21.2) to identify itself to the server. (§18.2.7)
MUST 18.2.7
negativeno testno negative test

{single-polarity}: the Client ID is written by the client, so no input removes it

RFC9915-18.2.7-3The client MUST include an Elapsed Time option (see Section 21.9) to indicate how long the client has been trying to complete the current DHCP message exchange. (§18.2.7)
MUST 18.2.7
negativeno testno negative test

{single-polarity}: the Elapsed Time is written by the client, so no input removes it

RFC9915-18.2.7-4The leases to be released MUST be included in the IAs. (§18.2.7)
MUST 18.2.7
negativeno testno negative test

{single-polarity}: the Release carries every held lease by construction, so no input drops one

RFC9915-18.2.7-5Any leases for the IAs the client wishes to continue to use MUST NOT be added to the IAs. (§18.2.7)
MUST NOT 18.2.7
positiveno testno positive test
negativeno testno negative test

{not-applicable}: ze sends Release only from internal/plugins/iface/dhcp/dhcp_v6_linux.go::shutdown, on Stop, when it keeps no lease, so no lease it wishes to keep exists

RFC9915-18.2.7-6The client MUST stop using all of the leases being released before the client begins the Release message exchange process. (§18.2.7)
MUST 18.2.7
positiveunit/verifyTestDHCPv6ReleaseOnStop
negativeno testno negative test

{single-polarity}: the removal order is fixed in internal/plugins/iface/dhcp/dhcp_v6_linux.go::shutdown, so no input reorders it

RFC9915-18.2.7-7For an address, this means the address MUST have been removed from the interface. (§18.2.7)
MUST 18.2.7
positiveunit/verifyTestDHCPv6ReleaseOnStop
negativeno testno negative test

{single-polarity}: the removal order is fixed in internal/plugins/iface/dhcp/dhcp_v6_linux.go::shutdown, so no input reorders it

RFC9915-18.2.7-8For a delegated prefix, this means the prefix MUST have been advertised with a Preferred Lifetime and a Valid Lifetime of 0 in a Router Advertisement message as described in part (e) of Section 5.5.3 of [RFC4862]; also see requirement L-13 in Section 4.3 of [RFC7084]. (§18.2.7)
MUST 18.2.7
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "the client might assign a subnet from a delegated prefix to one of its interfaces and begin sending Router Advertisements for the prefix on that link"; ze uses no delegated prefix itself: internal/plugins/iface/dhcp/dhcp_v6_linux.go::effect records the IA_PD prefix and publishes it as a dhcp-acquired event, and its subscribers, handleDHCPLeaseEvent in internal/component/iface/register.go and syncWorker.handleDHCPEvent in internal/plugins/ntp/ntp.go, configure no address and send no Router Advertisement from it

RFC9915-18.2.8-1The Decline message is not used in prefix delegation; thus, the client MUST NOT include IA_PD options (see Section 21.21) in the Decline message. (§18.2.8)
MUST NOT 18.2.8
negativeno testno negative test

{single-polarity}: the IAs of a Decline are written by the client from its declined addresses, so no input adds an IA_PD

RFC9915-18.2.8-2The client MUST include a Server Identifier option (see Section 21.3) in the Decline message, identifying the server that allocated the lease(s). (§18.2.8)
MUST 18.2.8
negativeno testno negative test

{single-polarity}: the Server ID is written by the client, so no input removes it

RFC9915-18.2.8-3The client MUST include a Client Identifier option (see Section 21.2) to identify itself to the server. (§18.2.8)
MUST 18.2.8
negativeno testno negative test

{single-polarity}: the Client ID is written by the client, so no input removes it

RFC9915-18.2.8-4The client MUST include an Elapsed Time option (see Section 21.9) to indicate how long the client has been trying to complete the current DHCP message exchange. (§18.2.8)
MUST 18.2.8
negativeno testno negative test

{single-polarity}: the Elapsed Time is written by the client, so no input removes it

RFC9915-18.2.8-5The addresses to be declined MUST be included in the IAs. (§18.2.8)
MUST 18.2.8
negativeno testno negative test

{single-polarity}: the declined addresses are written by the client, so no input removes them

RFC9915-18.2.8-6The client MUST NOT use any of the addresses it is declining as the source address in the Decline message or in any subsequently transmitted message. (§18.2.8)
MUST NOT 18.2.8
negativeno testno negative test

{single-polarity}: the declined address leaves the device before the Decline is built, so no input puts it back

RFC9915-18.2.9-1The client MUST process any SOL_MAX_RT option (§18.2.9)
MUST 18.2.9
negativeno testno negative test

{single-polarity}: applying a valid SOL_MAX_RT has no wrong input but the out-of-range one, row RFC9915-21.24-3

RFC9915-18.2.9-2The client MUST ignore any Advertise message that contains no addresses (IA Address options (see Section 21.6) encapsulated in IA_NA options (see Section 21.4)) and no delegated prefixes (IA Prefix options (see Section 21.22) encapsulated in IA_PD options (see Section 21.21)), with the exception that the client: (§18.2.9)
MUST 18.2.9
positiveno testno positive test

{single-polarity}: the Advertise carrying a lease is the control in RFC9915-18.2.1-6

RFC9915-18.2.9-3MUST process an included SOL_MAX_RT option and (§18.2.9)
MUST 18.2.9
negativeno testno negative test

{single-polarity}: applying a valid SOL_MAX_RT has no wrong input but the out-of-range one, row RFC9915-21.24-3

RFC9915-18.2.9-4MUST process an included INF_MAX_RT option. (§18.2.9)
MUST 18.2.9
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists

RFC9915-18.2.9-5The client ignoring an Advertise message MUST NOT restart the Solicit retransmission timer. (§18.2.9)
MUST NOT 18.2.9
negativeno testno negative test

{single-polarity}: the retransmission timer is the client's own, so no input restarts it

RFC9915-18.2.10-1The client MUST process any SOL_MAX_RT option (§18.2.10)
MUST 18.2.10
negativeno testno negative test

{single-polarity}: applying a valid SOL_MAX_RT has no wrong input but the out-of-range one, row RFC9915-21.24-3

RFC9915-18.2.10.1-1The client MUST perform duplicate address detection as per Section 5.4 of [RFC4862], which does list some exceptions, on each of the received addresses in any IAs on which it has not performed duplicate address detection during processing of any of the previous Reply messages from the server. (§18.2.10.1)
MUST 18.2.10.1
RFC9915-18.2.10.1-3Addresses obtained from an IA Address option MUST NOT be used to form an implicit prefix with a length other than 128. (§18.2.10.1)
MUST NOT 18.2.10.1
negativeno testno negative test

{single-polarity}: the prefix length is a constant ze installs, so no input yields another length

RFC9915-18.2.10.5-1As a counterexample, a client that previously received an NTP server address from the DHCP server and does not receive it anymore MUST stop using the configured NTP server address. (§18.2.10.5)
MUST 18.2.10.5
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "The client MUST include an Option Request option (ORO) (see Section 21.7) to request the SOL_MAX_RT option (see Section 21.24) and any other options the client is interested in receiving"; ze asks for no NTP server option: internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::requestOptions requests DNS Recursive Name Server and SOL_MAX_RT only, so no NTP server address is ever configured from DHCPv6; the DNS case the sentence illustrates is met: a Reply without the DNS option empties the lease's list and setV6Resolvers in internal/plugins/iface/dhcp/resolv_linux.go withdraws the servers

RFC9915-18.2.11-1The message MUST be dropped if it doesn't pass the validation, as explained in Section 16.11, particularly in cases where the authentication is missing or fails. (§18.2.11)
MUST 18.2.11
positiveno testno positive test

{single-polarity}: ze accepts no Reconfigure at all, so no validated Reconfigure exists to assert positively

RFC9915-18.2.11-2Once the client has received a Reconfigure, the client proceeds with the message exchange (retransmitting the Renew, Rebind, or Information-request message if necessary); the client MUST ignore any additional Reconfigure messages until the exchange is complete. (§18.2.11)
MUST 18.2.11
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "The client includes a Reconfigure Accept option (see Section 21.20) if the client is willing to accept Reconfigure messages from the server"; ze is never willing: internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit sends no Reconfigure Accept option, and internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::replyMatcher discards every Reconfigure

RFC9915-18.2.12-1The client MUST include any IAs assigned to the interface that may have moved to a new link, along with the addresses associated with those IAs, in its Confirm message. (§18.2.12)
MUST 18.2.12
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "has obtained addresses and no delegated prefixes from a server, the client SHOULD initiate a Confirm/Reply message exchange"; ze sends no Confirm: internal/plugins/iface/dhcp/dhcp_v6_attach_linux.go::noteMove starts only the MUST-level Rebind for a lease holding a delegated prefix and sends nothing for a lease of addresses alone, and no builder produces message type 4; the absent Confirm is disclosed in Support remaining

RFC9915-18.2.12-2If the client has any valid delegated prefixes obtained from the DHCP server, the client MUST initiate a Rebind/Reply message exchange as described in Section 18.2.5, with the exception that the retransmission parameters should be set as for the Confirm message (see Section 18.2.3). (§18.2.12)
MUST 18.2.12
RFC9915-18.2.12-3If the client has only obtained network information using Information-request/Reply message exchanges, the client MUST initiate an Information-request/Reply message exchange as described in Section 18.2.6. (§18.2.12)
MUST 18.2.12
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists

RFC9915-18.2.12-4However, a client MUST rate- limit such initiation attempts to avoid flooding a server with requests when there are link issues (for example, only doing one of these at most every 30 seconds). (§18.2.12)
MUST 18.2.12
negativeno testno negative test

{single-polarity}: a link-change Rebind before the interval is the only wrong outcome, and the delay is fixed by the client

RFC9915-18.3.5-1The Reply with lifetimes of 0 constitutes an explicit notification to the client that the specific addresses and delegated prefixes are no longer valid and MUST NOT be used by the client. (§18.3.5)
MUST NOT 18.3.5
positiveno testno positive test

{single-polarity}: a lease with a non-zero valid lifetime is recorded in every exchange test

RFC9915-20.2-1Any DHCP message MUST NOT include more than one Authentication option. (§20.2)
MUST NOT 20.2
positiveno testno positive test
negativeno testno negative test

{not-applicable}: ze's client sends and reads no Authentication option (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::newV6Message builds none, and internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::replyMatcher accepts only Reply messages, judged without authentication)

RFC9915-20.3-3A client that receives a message with the RDM field set to 0x00 MUST compare its replay detection field with the previous value sent by that same server (based on the Server Identifier option; see Section 21.3) and only accept the message if the received value is greater and record this as the new value. (§20.3)
MUST 20.3
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "RKAP is used (initiated by the server) only if the client and server have negotiated to use Reconfigure messages"; ze never negotiates Reconfigure: internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit sends no Reconfigure Accept option, so no Authentication option is processed and internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::replyMatcher judges Replies without one

RFC9915-20.3-4If this is the first time a client processes an Authentication option sent by a server, the client MUST record the replay detection value and skip the replay detection check. (§20.3)
MUST 20.3
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "RKAP is used (initiated by the server) only if the client and server have negotiated to use Reconfigure messages"; ze never negotiates Reconfigure: internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit sends no Reconfigure Accept option, so no Authentication option is processed and internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::replyMatcher judges Replies without one

RFC9915-21-1If 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. (§21)
MUST NOT 21
positiveno testno positive test
negativeno testno negative test

{lower-layer}: vendored insomniacslk/dhcp dhcpv6 option decoder; internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::v6Identified reads each option through the library's per-code accessors, and the decoder keeps every instance separate, so ze combines no option data

RFC9915-21.4-2In 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. (§21.4)
MUST 21.4
negativeno testno negative test

{single-polarity}: using the server's T1 has no wrong input but zero, the separate row RFC9915-14.2-1

RFC9915-21.6-3In 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. (§21.6)
MUST 21.6
negativeno testno negative test

{single-polarity}: installing the lease's lifetimes has no wrong input but preferred above valid, the separate row RFC9915-21.6-4

RFC9915-21.6-4The client MUST discard any addresses for which the preferred lifetime is greater than the valid lifetime. (§21.6)
MUST 21.6
positiveno testno positive test

{single-polarity}: the valid address is recorded in every exchange test

RFC9915-21.7-1A 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. (§21.7)
MUST 21.7
negativeno testno negative test

{single-polarity}: the ORO is a constant the client writes, so no input removes it

RFC9915-21.7-2The Option Request option MUST NOT include the following option codes: (§21.7)
MUST NOT 21.7
negativeno testno negative test

{single-polarity}: the ORO is a constant the client writes, so no input adds a forbidden code

RFC9915-21.9-1A client MUST include an Elapsed Time option in messages to indicate how long the client has been trying to complete a DHCP message exchange. (§21.9)
MUST 21.9
negativeno testno negative test

{single-polarity}: the Elapsed Time is written by the client, so no input removes it

RFC9915-21.15-1The user class information carried in this option MUST be configurable on the client. (§21.15)
MUST 21.15
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "the User Class option can be used to configure all clients of people in the accounting department"; ze sends no User Class option: the messages internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::newV6Message, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit and internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease build carry only Client ID, Server ID, Elapsed Time, ORO, Rapid Commit, IA_NA and IA_PD

RFC9915-21.15-2The data area of the User Class option MUST contain one or more instances of user-class-data information. (§21.15)
MUST 21.15
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "the User Class option can be used to configure all clients of people in the accounting department"; ze sends no User Class option: the messages internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::newV6Message, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit and internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease build carry only Client ID, Server ID, Elapsed Time, ORO, Rapid Commit, IA_NA and IA_PD

RFC9915-21.16-1Servers and clients MUST NOT include more than one instance of OPTION_VENDOR_CLASS with the same Enterprise Number. (§21.16)
MUST NOT 21.16
positiveno testno positive test
negativeno testno negative test

{not-applicable}: ze's client sends no Vendor Class option: the messages it builds carry only Client ID, Server ID, Elapsed Time, ORO, Rapid Commit, IA_NA and IA_PD (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::newV6Message, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease)

RFC9915-21.17-1The 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). (§21.17)
MUST 21.17
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "A client that is interested in receiving a Vendor-specific Information option"; ze is not: internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::requestOptions requests DNS Recursive Name Server and SOL_MAX_RT only, and the messages internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::newV6Message builds carry no Vendor-specific Information option

RFC9915-21.17-2Servers and clients MUST NOT send more than one instance of the Vendor-specific Information option with the same Enterprise Number. (§21.17)
MUST NOT 21.17
positiveno testno positive test
negativeno testno negative test

{not-applicable}: ze's client sends no Vendor-specific Information option: the messages it builds carry only Client ID, Server ID, Elapsed Time, ORO, Rapid Commit, IA_NA and IA_PD (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::newV6Message, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease)

RFC9915-21.17-3MUST specify the Vendor-specific Information option in an Option Request option. (§21.17)
MUST 21.17
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "A client that is interested in receiving a Vendor-specific Information option"; ze is not: internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::requestOptions requests DNS Recursive Name Server and SOL_MAX_RT only, and the messages internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::newV6Message builds carry no Vendor-specific Information option

RFC9915-21.22-2The client MUST discard any prefixes for which the preferred lifetime is greater than the valid lifetime. (§21.22)
MUST 21.22
positiveno testno positive test

{single-polarity}: the valid prefix is the control of the same test

RFC9915-21.23-1A DHCP client MUST request this option in the Option Request option (see Section 21.7) when sending Information-request messages. (§21.23)
MUST 21.23
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists

RFC9915-21.23-2A client MUST NOT request this option in the Option Request option in any other messages. (§21.23)
MUST NOT 21.23
negativeno testno negative test

{single-polarity}: the ORO is a constant the client writes, so no input adds the option

RFC9915-21.23-5If 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. (§21.23)
MUST 21.23
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists

RFC9915-21.23-6A client MUST use the refresh time IRT_MINIMUM if it receives the option with a value less than IRT_MINIMUM. (§21.23)
MUST 21.23
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists

RFC9915-21.23-7When 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. (§21.23)
MUST 21.23
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists

RFC9915-21.24-3A DHCP client MUST ignore any SOL_MAX_RT option values that are less than 60 or more than 86400. (§21.24)
MUST 21.24
positiveno testno positive test

{single-polarity}: the in-range value is the separate row RFC9915-21.24-4

RFC9915-21.24-4If 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. (§21.24)
MUST 21.24
negativeno testno negative test

{single-polarity}: the out-of-range value is the separate row RFC9915-21.24-3

RFC9915-21.25-2A 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. (§21.25)
MUST 21.25
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists

RFC9915-21.25-3A DHCP client MUST ignore any INF_MAX_RT option values that are less than 60 or more than 86400. (§21.25)
MUST 21.25
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists

RFC9915-21.25-4If 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. (§21.25)
MUST 21.25
positiveno testno positive test
negativeno testno negative test

{feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists

RFC9915-22.3-1Because of the opportunity for attack through the Reconfigure message, a DHCP client MUST discard any Reconfigure message that does not include authentication or that does not pass the validation process for the authentication protocol. (§22.3)
MUST 22.3
positiveno testno positive test

{single-polarity}: ze accepts no Reconfigure at all, so no authenticated Reconfigure exists to assert positively

RFC9915-A-1Legacy implementations MAY support them, but implementations conformant to this document MUST NOT rely on them. (§A)
MUST NOT A
negativeno testno negative test

{single-polarity}: the IA set is fixed by the builder, so no input adds an IA_TA

Gaps and untested MUSTs

RequirementStateReason
RFC9915-6.3-1 If the client uses a delegated prefix to configure addresses on interfaces on itself or other nodes behind it, the preferred and valid lifetimes of those addresses MUST be no longer than the remaining preferred and valid lifetimes, respectively, for the delegated prefix at any time. (§6.3) no test no test carries this requirement id; annotated {feature-declined}: "the client might assign a subnet from a delegated prefix to one of its interfaces and begin sending Router Advertisements for the prefix on that link"; ze uses no delegated prefix itself: internal/plugins/iface/dhcp/dhcp_v6_linux.go::effect records the IA_PD prefix and publishes it as a dhcp-acquired event, and its subscribers, handleDHCPLeaseEvent in internal/component/iface/register.go and syncWorker.handleDHCPEvent in internal/plugins/ntp/ntp.go, configure no address and send no Router Advertisement from it
RFC9915-6.3-2 In particular, if the delegated prefix or a prefix derived from it is advertised for stateless address autoconfiguration [RFC4862], the advertised preferred and valid lifetimes MUST NOT exceed the corresponding remaining lifetimes of the delegated prefix. (§6.3) no test no test carries this requirement id; annotated {feature-declined}: "the client might assign a subnet from a delegated prefix to one of its interfaces and begin sending Router Advertisements for the prefix on that link"; ze uses no delegated prefix itself: internal/plugins/iface/dhcp/dhcp_v6_linux.go::effect records the IA_PD prefix and publishes it as a dhcp-acquired event, and its subscribers, handleDHCPLeaseEvent in internal/component/iface/register.go and syncWorker.handleDHCPEvent in internal/plugins/ntp/ntp.go, configure no address and send no Router Advertisement from it
RFC9915-6.3-3 A client that has delegated any of the address space received through DHCP Prefix Delegation MUST NOT issue a DHCP Release on the relevant delegated prefix while any of the address space is outstanding. (§6.3) no test no test carries this requirement id; annotated {feature-declined}: "the client might assign a subnet from a delegated prefix to one of its interfaces and begin sending Router Advertisements for the prefix on that link"; ze uses no delegated prefix itself: internal/plugins/iface/dhcp/dhcp_v6_linux.go::effect records the IA_PD prefix and publishes it as a dhcp-acquired event, and its subscribers, handleDHCPLeaseEvent in internal/component/iface/register.go and syncWorker.handleDHCPEvent in internal/plugins/ntp/ntp.go, configure no address and send no Router Advertisement from it
RFC9915-7.2-1 Clients MUST listen for DHCP messages on UDP port 546. (§7.2) no test no test carries this requirement id; annotated {lower-layer}: vendored insomniacslk/dhcp nclient6; internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::dialV6Link opens nclient6.New on the device and passes no port, and the library binds UDP port 546
RFC9915-7.2-3 Therefore, clients MUST send DHCP messages to UDP destination port 547. (§7.2) no test no test carries this requirement id; annotated {lower-layer}: vendored insomniacslk/dhcp nclient6; internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::dialV6Link passes no destination, and the library sends every client message to All_DHCP_Relay_Agents_and_Servers port 547
RFC9915-10-1 The message compression scheme in Section 4.1.4 of [RFC1035] MUST NOT be used. (§10) no test no test carries this requirement id; annotated {not-applicable}: ze's client encodes no domain name: the options it sends (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::newV6Message, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease) carry DUIDs, codes, IAs and timers, never a DNS-encoded name
RFC9915-11.2-1 The hardware type MUST be a valid hardware type assigned by IANA; see [IANA-HARDWARE-TYPES]. (§11.2) no test no test carries this requirement id; annotated {feature-declined}: "the ways in which a DUID may be constructed"; ze generates no DUID of this type: internal/plugins/iface/dhcp/dhcp_v6_linux.go::identify builds a DUID-LL from the device MAC, or takes the operator's configured duid octets as given
RFC9915-11.2-2 Clients and servers using this type of DUID MUST store the DUID-LLT in stable storage and MUST continue to use this DUID-LLT even if the network interface used to generate the DUID-LLT is removed. (§11.2) no test no test carries this requirement id; annotated {feature-declined}: "the ways in which a DUID may be constructed"; ze generates no DUID of this type: internal/plugins/iface/dhcp/dhcp_v6_linux.go::identify builds a DUID-LL from the device MAC, or takes the operator's configured duid octets as given
RFC9915-11.2-3 Clients and servers that do not have any stable storage MUST NOT use this type of DUID. (§11.2) no test no test carries this requirement id; annotated {feature-declined}: "the ways in which a DUID may be constructed"; ze generates no DUID of this type: internal/plugins/iface/dhcp/dhcp_v6_linux.go::identify builds a DUID-LL from the device MAC, or takes the operator's configured duid octets as given
RFC9915-11.2-4 Clients and servers that use this DUID SHOULD attempt to configure the time prior to generating the DUID, if that is possible, and MUST use some sort of time source (for example, a real-time clock) in generating the DUID, even if that time source could not be configured prior to generating the DUID. (§11.2) no test no test carries this requirement id; annotated {feature-declined}: "the ways in which a DUID may be constructed"; ze generates no DUID of this type: internal/plugins/iface/dhcp/dhcp_v6_linux.go::identify builds a DUID-LL from the device MAC, or takes the operator's configured duid octets as given
RFC9915-11.2-5 A DHCP client that generates a DUID-LLT using this mechanism MUST provide an administrative interface that replaces the existing DUID with a newly generated DUID-LLT. (§11.2) no test no test carries this requirement id; annotated {feature-declined}: "the ways in which a DUID may be constructed"; ze generates no DUID of this type: internal/plugins/iface/dhcp/dhcp_v6_linux.go::identify builds a DUID-LL from the device MAC, or takes the operator's configured duid octets as given
RFC9915-11.3-1 The source of the identifier is left up to the vendor defining it, but each identifier part of each DUID-EN MUST be unique to the device that is using it, and MUST be assigned to the device no later than at the first usage and stored in some form of non-volatile storage. (§11.3) no test no test carries this requirement id; annotated {feature-declined}: "the ways in which a DUID may be constructed"; ze generates no DUID of this type: internal/plugins/iface/dhcp/dhcp_v6_linux.go::identify builds a DUID-LL from the device MAC, or takes the operator's configured duid octets as given
RFC9915-15-2 Of course, a client MUST listen for a Reconfigure if it has negotiated for its use with the server. (§15) no test no test carries this requirement id; annotated {feature-declined}: "The client includes a Reconfigure Accept option (see Section 21.20) if the client is willing to accept Reconfigure messages from the server"; ze is never willing: internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit sends no Reconfigure Accept option, and internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::replyMatcher discards every Reconfigure
RFC9915-16.10-3 If the client did not include a Client Identifier option in the original message, the Reply message MUST NOT include a Client Identifier option. (§16.10) no test no test carries this requirement id; annotated {feature-declined}: "The client SHOULD include a Client Identifier option (see Section 21.2) to identify itself to the server"; ze never omits it: internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::newV6Message adds a Client Identifier option to every message, so the condition never holds
RFC9915-18.2.1-7 If the DHCP client is configured with either MRC or MRD set to a value other than 0, it MUST stop trying to configure the interface if the message exchange fails. (§18.2.1) no test no test carries this requirement id; annotated {feature-declined}: "A DHCP client SHOULD choose MRC and MRD values of 0"; ze does: internal/plugins/iface/dhcp/dhcp_v6_linux.go::solicit runs the Solicit exchange with MRC and MRD 0 from Table 1, and no configuration leaf sets them
RFC9915-18.2.3-1 The client MUST include a Client Identifier option (see Section 21.2) to identify itself to the server. (§18.2.3) no test no test carries this requirement id; annotated {feature-declined}: "has obtained addresses and no delegated prefixes from a server, the client SHOULD initiate a Confirm/Reply message exchange"; ze sends no Confirm: internal/plugins/iface/dhcp/dhcp_v6_attach_linux.go::noteMove starts only the MUST-level Rebind for a lease holding a delegated prefix and sends nothing for a lease of addresses alone, and no builder produces message type 4; the absent Confirm is disclosed in Support remaining
RFC9915-18.2.3-2 The client MUST include an Elapsed Time option (see Section 21.9) to indicate how long the client has been trying to complete the current DHCP message exchange. (§18.2.3) no test no test carries this requirement id; annotated {feature-declined}: "has obtained addresses and no delegated prefixes from a server, the client SHOULD initiate a Confirm/Reply message exchange"; ze sends no Confirm: internal/plugins/iface/dhcp/dhcp_v6_attach_linux.go::noteMove starts only the MUST-level Rebind for a lease holding a delegated prefix and sends nothing for a lease of addresses alone, and no builder produces message type 4; the absent Confirm is disclosed in Support remaining
RFC9915-18.2.3-3 The first Confirm message from the client on the interface MUST be delayed by a random amount of time between 0 and CNF_MAX_DELAY. (§18.2.3) no test no test carries this requirement id; annotated {feature-declined}: "has obtained addresses and no delegated prefixes from a server, the client SHOULD initiate a Confirm/Reply message exchange"; ze sends no Confirm: internal/plugins/iface/dhcp/dhcp_v6_attach_linux.go::noteMove starts only the MUST-level Rebind for a lease holding a delegated prefix and sends nothing for a lease of addresses alone, and no builder produces message type 4; the absent Confirm is disclosed in Support remaining
RFC9915-18.2.4-2 A client MUST also initiate a Renew/Reply message exchange before time T1 if the client's link-local address used in previous interactions with the server is no longer valid and it is willing to receive Reconfigure messages. (§18.2.4) no test no test carries this requirement id; annotated {feature-declined}: "The client includes a Reconfigure Accept option (see Section 21.20) if the client is willing to accept Reconfigure messages from the server"; ze is never willing: internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit sends no Reconfigure Accept option, and internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::replyMatcher discards every Reconfigure
RFC9915-18.2.6-1 The client MUST include an Elapsed Time option (see Section 21.9) to indicate how long the client has been trying to complete the current DHCP message exchange. (§18.2.6) no test no test carries this requirement id; annotated {feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists
RFC9915-18.2.6-2 The client MUST include an Option Request option (see Section 21.7) to request the INF_MAX_RT option (see Section 21.25), the Information Refresh Time option (see Section 21.23), and any other options the client is interested in receiving. (§18.2.6) no test no test carries this requirement id; annotated {feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists
RFC9915-18.2.6-3 When responding to a Reconfigure, the client MUST include a Server Identifier option (see Section 21.3) with the identifier from the Reconfigure message to which the client is responding. (§18.2.6) no test no test carries this requirement id; annotated {feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists
RFC9915-18.2.6-4 The first Information-request message from the client on the interface MUST be delayed by a random amount of time between 0 and INF_MAX_DELAY. (§18.2.6) no test no test carries this requirement id; annotated {feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists
RFC9915-18.2.7-5 Any leases for the IAs the client wishes to continue to use MUST NOT be added to the IAs. (§18.2.7) no test no test carries this requirement id; annotated {not-applicable}: ze sends Release only from internal/plugins/iface/dhcp/dhcp_v6_linux.go::shutdown, on Stop, when it keeps no lease, so no lease it wishes to keep exists
RFC9915-18.2.7-8 For a delegated prefix, this means the prefix MUST have been advertised with a Preferred Lifetime and a Valid Lifetime of 0 in a Router Advertisement message as described in part (e) of Section 5.5.3 of [RFC4862]; also see requirement L-13 in Section 4.3 of [RFC7084]. (§18.2.7) no test no test carries this requirement id; annotated {feature-declined}: "the client might assign a subnet from a delegated prefix to one of its interfaces and begin sending Router Advertisements for the prefix on that link"; ze uses no delegated prefix itself: internal/plugins/iface/dhcp/dhcp_v6_linux.go::effect records the IA_PD prefix and publishes it as a dhcp-acquired event, and its subscribers, handleDHCPLeaseEvent in internal/component/iface/register.go and syncWorker.handleDHCPEvent in internal/plugins/ntp/ntp.go, configure no address and send no Router Advertisement from it
RFC9915-18.2.9-4 MUST process an included INF_MAX_RT option. (§18.2.9) no test no test carries this requirement id; annotated {feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists
RFC9915-18.2.10.5-1 As a counterexample, a client that previously received an NTP server address from the DHCP server and does not receive it anymore MUST stop using the configured NTP server address. (§18.2.10.5) no test no test carries this requirement id; annotated {feature-declined}: "The client MUST include an Option Request option (ORO) (see Section 21.7) to request the SOL_MAX_RT option (see Section 21.24) and any other options the client is interested in receiving"; ze asks for no NTP server option: internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::requestOptions requests DNS Recursive Name Server and SOL_MAX_RT only, so no NTP server address is ever configured from DHCPv6; the DNS case the sentence illustrates is met: a Reply without the DNS option empties the lease's list and setV6Resolvers in internal/plugins/iface/dhcp/resolv_linux.go withdraws the servers
RFC9915-18.2.11-2 Once the client has received a Reconfigure, the client proceeds with the message exchange (retransmitting the Renew, Rebind, or Information-request message if necessary); the client MUST ignore any additional Reconfigure messages until the exchange is complete. (§18.2.11) no test no test carries this requirement id; annotated {feature-declined}: "The client includes a Reconfigure Accept option (see Section 21.20) if the client is willing to accept Reconfigure messages from the server"; ze is never willing: internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit sends no Reconfigure Accept option, and internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::replyMatcher discards every Reconfigure
RFC9915-18.2.12-1 The client MUST include any IAs assigned to the interface that may have moved to a new link, along with the addresses associated with those IAs, in its Confirm message. (§18.2.12) no test no test carries this requirement id; annotated {feature-declined}: "has obtained addresses and no delegated prefixes from a server, the client SHOULD initiate a Confirm/Reply message exchange"; ze sends no Confirm: internal/plugins/iface/dhcp/dhcp_v6_attach_linux.go::noteMove starts only the MUST-level Rebind for a lease holding a delegated prefix and sends nothing for a lease of addresses alone, and no builder produces message type 4; the absent Confirm is disclosed in Support remaining
RFC9915-18.2.12-3 If the client has only obtained network information using Information-request/Reply message exchanges, the client MUST initiate an Information-request/Reply message exchange as described in Section 18.2.6. (§18.2.12) no test no test carries this requirement id; annotated {feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists
RFC9915-20.2-1 Any DHCP message MUST NOT include more than one Authentication option. (§20.2) no test no test carries this requirement id; annotated {not-applicable}: ze's client sends and reads no Authentication option (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::newV6Message builds none, and internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::replyMatcher accepts only Reply messages, judged without authentication)
RFC9915-20.3-3 A client that receives a message with the RDM field set to 0x00 MUST compare its replay detection field with the previous value sent by that same server (based on the Server Identifier option; see Section 21.3) and only accept the message if the received value is greater and record this as the new value. (§20.3) no test no test carries this requirement id; annotated {feature-declined}: "RKAP is used (initiated by the server) only if the client and server have negotiated to use Reconfigure messages"; ze never negotiates Reconfigure: internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit sends no Reconfigure Accept option, so no Authentication option is processed and internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::replyMatcher judges Replies without one
RFC9915-20.3-4 If this is the first time a client processes an Authentication option sent by a server, the client MUST record the replay detection value and skip the replay detection check. (§20.3) no test no test carries this requirement id; annotated {feature-declined}: "RKAP is used (initiated by the server) only if the client and server have negotiated to use Reconfigure messages"; ze never negotiates Reconfigure: internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit sends no Reconfigure Accept option, so no Authentication option is processed and internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::replyMatcher judges Replies without one
RFC9915-21-1 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. (§21) no test no test carries this requirement id; annotated {lower-layer}: vendored insomniacslk/dhcp dhcpv6 option decoder; internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::v6Identified reads each option through the library's per-code accessors, and the decoder keeps every instance separate, so ze combines no option data
RFC9915-21.15-1 The user class information carried in this option MUST be configurable on the client. (§21.15) no test no test carries this requirement id; annotated {feature-declined}: "the User Class option can be used to configure all clients of people in the accounting department"; ze sends no User Class option: the messages internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::newV6Message, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit and internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease build carry only Client ID, Server ID, Elapsed Time, ORO, Rapid Commit, IA_NA and IA_PD
RFC9915-21.15-2 The data area of the User Class option MUST contain one or more instances of user-class-data information. (§21.15) no test no test carries this requirement id; annotated {feature-declined}: "the User Class option can be used to configure all clients of people in the accounting department"; ze sends no User Class option: the messages internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::newV6Message, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit and internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease build carry only Client ID, Server ID, Elapsed Time, ORO, Rapid Commit, IA_NA and IA_PD
RFC9915-21.16-1 Servers and clients MUST NOT include more than one instance of OPTION_VENDOR_CLASS with the same Enterprise Number. (§21.16) no test no test carries this requirement id; annotated {not-applicable}: ze's client sends no Vendor Class option: the messages it builds carry only Client ID, Server ID, Elapsed Time, ORO, Rapid Commit, IA_NA and IA_PD (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::newV6Message, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease)
RFC9915-21.17-1 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). (§21.17) no test no test carries this requirement id; annotated {feature-declined}: "A client that is interested in receiving a Vendor-specific Information option"; ze is not: internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::requestOptions requests DNS Recursive Name Server and SOL_MAX_RT only, and the messages internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::newV6Message builds carry no Vendor-specific Information option
RFC9915-21.17-2 Servers and clients MUST NOT send more than one instance of the Vendor-specific Information option with the same Enterprise Number. (§21.17) no test no test carries this requirement id; annotated {not-applicable}: ze's client sends no Vendor-specific Information option: the messages it builds carry only Client ID, Server ID, Elapsed Time, ORO, Rapid Commit, IA_NA and IA_PD (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::newV6Message, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease)
RFC9915-21.17-3 MUST specify the Vendor-specific Information option in an Option Request option. (§21.17) no test no test carries this requirement id; annotated {feature-declined}: "A client that is interested in receiving a Vendor-specific Information option"; ze is not: internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::requestOptions requests DNS Recursive Name Server and SOL_MAX_RT only, and the messages internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::newV6Message builds carry no Vendor-specific Information option
RFC9915-21.23-1 A DHCP client MUST request this option in the Option Request option (see Section 21.7) when sending Information-request messages. (§21.23) no test no test carries this requirement id; annotated {feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists
RFC9915-21.23-5 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. (§21.23) no test no test carries this requirement id; annotated {feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists
RFC9915-21.23-6 A client MUST use the refresh time IRT_MINIMUM if it receives the option with a value less than IRT_MINIMUM. (§21.23) no test no test carries this requirement id; annotated {feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists
RFC9915-21.23-7 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. (§21.23) no test no test carries this requirement id; annotated {feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists
RFC9915-21.25-2 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. (§21.25) no test no test carries this requirement id; annotated {feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists
RFC9915-21.25-3 A DHCP client MUST ignore any INF_MAX_RT option values that are less than 60 or more than 86400. (§21.25) no test no test carries this requirement id; annotated {feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists
RFC9915-21.25-4 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. (§21.25) no test no test carries this requirement id; annotated {feature-declined}: "Stateless DHCP can be used at any time, typically when a node requires some missing or expired configuration information that is available via DHCP"; ze offers no stateless DHCPv6: every exchange the client starts is a Solicit, Request, Renew, Rebind, Decline or Release (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildSolicit, internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::buildFromLease), so no Information-request, INF_MAX_RT or Information Refresh Time state exists

Proof state

A tagged unit reads unproven where no discrimination record exists for it: nothing in this tree has been observed to break it, so the claim its tag makes is unproven.

RFC9915-6.3-1

If the client uses a delegated prefix to configure addresses on interfaces on itself or other nodes behind it, the preferred and valid lifetimes of those addresses MUST be no longer than the remaining preferred and valid lifetimes, respectively, for the delegated prefix at any time. (§6.3)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-6.3-1, so no unit is bound to it.

RFC9915-6.3-2

In particular, if the delegated prefix or a prefix derived from it is advertised for stateless address autoconfiguration [RFC4862], the advertised preferred and valid lifetimes MUST NOT exceed the corresponding remaining lifetimes of the delegated prefix. (§6.3)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-6.3-2, so no unit is bound to it.

RFC9915-6.3-3

A client that has delegated any of the address space received through DHCP Prefix Delegation MUST NOT issue a DHCP Release on the relevant delegated prefix while any of the address space is outstanding. (§6.3)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-6.3-3, so no unit is bound to it.

RFC9915-7.2-1

Clients MUST listen for DHCP messages on UDP port 546. (§7.2)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-7.2-1, so no unit is bound to it.

RFC9915-7.2-3

Therefore, clients MUST send DHCP messages to UDP destination port 547. (§7.2)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-7.2-3, so no unit is bound to it.

RFC9915-10-1

The message compression scheme in Section 4.1.4 of [RFC1035] MUST NOT be used. (§10)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-10-1, so no unit is bound to it.

RFC9915-11-1

Clients and servers MUST treat DUIDs as opaque values and MUST only compare DUIDs for equality. (§11)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section1610ReplyValidation unit/verify revert, verified

RFC9915-11-2

Clients and servers MUST NOT restrict DUIDs to the types defined in this document, as additional DUID types may be defined in the future. (§11)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section163AdvertiseValidation unit/verify revert, verified

RFC9915-11.2-1

The hardware type MUST be a valid hardware type assigned by IANA; see [IANA-HARDWARE-TYPES]. (§11.2)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-11.2-1, so no unit is bound to it.

RFC9915-11.2-2

Clients and servers using this type of DUID MUST store the DUID-LLT in stable storage and MUST continue to use this DUID-LLT even if the network interface used to generate the DUID-LLT is removed. (§11.2)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-11.2-2, so no unit is bound to it.

RFC9915-11.2-3

Clients and servers that do not have any stable storage MUST NOT use this type of DUID. (§11.2)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-11.2-3, so no unit is bound to it.

RFC9915-11.2-4

Clients and servers that use this DUID SHOULD attempt to configure the time prior to generating the DUID, if that is possible, and MUST use some sort of time source (for example, a real-time clock) in generating the DUID, even if that time source could not be configured prior to generating the DUID. (§11.2)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-11.2-4, so no unit is bound to it.

RFC9915-11.2-5

A DHCP client that generates a DUID-LLT using this mechanism MUST provide an administrative interface that replaces the existing DUID with a newly generated DUID-LLT. (§11.2)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-11.2-5, so no unit is bound to it.

RFC9915-11.3-1

The source of the identifier is left up to the vendor defining it, but each identifier part of each DUID-EN MUST be unique to the device that is using it, and MUST be assigned to the device no later than at the first usage and stored in some form of non-volatile storage. (§11.3)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-11.3-1, so no unit is bound to it.

RFC9915-11.4-1

The hardware type MUST be a valid hardware type assigned by IANA; see [IANA-HARDWARE-TYPES]. (§11.4)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1824RenewAtT1CarriesLease unit/verify revert, verified

RFC9915-12-1

The IAID uniquely identifies the IA and MUST be chosen to be unique among the IAIDs for that IA type on the client (e.g., an IA_NA with an IAID of 0 and an IA_PD with an IAID of 0 are each considered unique). (§12)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestDHCPv6PDLengthRequestsDelegatedPrefix unit/verify revert, verified

RFC9915-12-2

For any given use of an IA by the client, the IAID for that IA MUST be consistent across restarts of the DHCP client. (§12)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section12IAIDStable unit/verify revert, verified

RFC9915-14.1-1

A DHCPv6 client MUST limit the rate of DHCP messages it transmits or retransmits. (§14.1)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section141PerInterfaceRateLimit unit/verify revert, verified

RFC9915-14.1-2

For a device that has multiple interfaces, the limit MUST be enforced on a per-interface basis. (§14.1)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section141LimitIsPerInterface unit/verify revert, verified

RFC9915-14.2-1

When T1 and/or T2 values are set to 0, the client MUST choose a time to avoid message storms. (§14.2)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section142ZeroTimersChosenByClient unit/verify revert, verified

RFC9915-14.2-2

In particular, it MUST NOT transmit immediately. (§14.2)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section142ZeroTimersChosenByClient unit/verify revert, verified

RFC9915-15-1

The client MUST update an "elapsed-time" value within an Elapsed Time option (see Section 21.9) in the retransmitted message. (§15)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section15ElapsedTimeUpdated unit/verify revert, verified

RFC9915-15-2

Of course, a client MUST listen for a Reconfigure if it has negotiated for its use with the server. (§15)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-15-2, so no unit is bound to it.

RFC9915-16-1

Clients, relay agents, and servers MUST NOT discard messages that contain unknown options (or instances of vendor options with unknown enterprise-number values). (§16)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1610ReplyValidation unit/verify revert, verified

RFC9915-16-2

A client or server MUST discard any received DHCP messages with an unknown message type. (§16)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section1610ReplyValidation unit/verify revert, verified

RFC9915-16.1-1

A client MUST leave the transaction ID unchanged in retransmissions of a message. (§16.1)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section15ElapsedTimeUpdated unit/verify revert, verified

RFC9915-16.2-1

Clients MUST discard any received Solicit messages. (§16.2)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section16ClientDiscardsOtherMessageTypes unit/verify revert, verified

RFC9915-16.3-1

Clients MUST discard any received Advertise message that meets any of the following conditions: (§16.3)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section163AdvertiseValidation unit/verify revert, verified

RFC9915-16.4-1

Clients MUST discard any received Request messages. (§16.4)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section16ClientDiscardsOtherMessageTypes unit/verify revert, verified

RFC9915-16.5-1

Clients MUST discard any received Confirm messages. (§16.5)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section16ClientDiscardsOtherMessageTypes unit/verify revert, verified

RFC9915-16.6-1

Clients MUST discard any received Renew messages. (§16.6)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section16ClientDiscardsOtherMessageTypes unit/verify revert, verified

RFC9915-16.7-1

Clients MUST discard any received Rebind messages. (§16.7)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section16ClientDiscardsOtherMessageTypes unit/verify revert, verified

RFC9915-16.8-1

Clients MUST discard any received Decline messages. (§16.8)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section16ClientDiscardsOtherMessageTypes unit/verify revert, verified

RFC9915-16.9-1

Clients MUST discard any received Release messages. (§16.9)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section16ClientDiscardsOtherMessageTypes unit/verify revert, verified

RFC9915-16.10-1

Clients MUST discard any received Reply message that meets any of the following conditions: (§16.10)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section1610ReplyValidation unit/verify revert, verified

RFC9915-16.10-2

If the client included a Client Identifier option (see Section 21.2) in the original message, the Reply message MUST include a Client Identifier option, and the contents of the Client Identifier option MUST match the DUID of the client. (§16.10)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section1610ReplyValidation unit/verify revert, verified

RFC9915-16.10-3

If the client did not include a Client Identifier option in the original message, the Reply message MUST NOT include a Client Identifier option. (§16.10)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-16.10-3, so no unit is bound to it.

RFC9915-16.11-2

Clients MUST discard any Reconfigure message that meets any of the following conditions: (§16.11)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section16ClientDiscardsOtherMessageTypes unit/verify revert, verified

RFC9915-16.12-1

Clients MUST discard any received Information-request messages. (§16.12)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section16ClientDiscardsOtherMessageTypes unit/verify revert, verified

RFC9915-16.13-1

Clients MUST discard any received Relay-forward messages. (§16.13)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section16ClientDiscardsOtherMessageTypes unit/verify revert, verified

RFC9915-16.14-1

Clients and servers MUST discard any received Relay-reply messages. (§16.14)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section16ClientDiscardsOtherMessageTypes unit/verify revert, verified

RFC9915-18-1

The client MUST NOT be using any of the addresses or delegated prefixes for which it tries to obtain the bindings by sending the Solicit message. (§18)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1825ExpiryRemovesAndSolicits unit/verify revert, verified

RFC9915-18.2-1

The client SHOULD be suspicious of the Reconfigure message (they may be faked), and it MUST NOT abandon any resources it might have already obtained. (§18.2)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section16ClientDiscardsOtherMessageTypes unit/verify revert, verified

RFC9915-18.2.1-1

The client MUST include a Client Identifier option (see Section 21.2) to identify itself to the server. (§18.2.1)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1821SolicitContents unit/verify revert, verified

RFC9915-18.2.1-2

The client MUST include an Elapsed Time option (see Section 21.9) to indicate how long the client has been trying to complete the current DHCP message exchange. (§18.2.1)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1821SolicitContents unit/verify revert, verified

RFC9915-18.2.1-3

The client MUST include an Option Request option (ORO) (see Section 21.7) to request the SOL_MAX_RT option (see Section 21.24) and any other options the client is interested in receiving. (§18.2.1)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1821FirstSolicitRTAboveIRT unit/verify revert, verified

RFC9915-18.2.1-4

The client MUST NOT include any other options in the Solicit message, except as specifically allowed in the definition of individual options. (§18.2.1)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1821SolicitContents unit/verify revert, verified

RFC9915-18.2.1-5

Also, the first RT MUST be selected to be strictly greater than IRT by choosing RAND to be strictly greater than 0. (§18.2.1)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1821FirstSolicitRTAboveIRT unit/verify revert, verified

RFC9915-18.2.1-6

A client MUST collect valid Advertise messages for the first RT seconds, unless it receives a valid Advertise message with a preference value of 255. (§18.2.1)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1821AdvertiseSelection unit/verify revert, verified

RFC9915-18.2.1-7

If the DHCP client is configured with either MRC or MRD set to a value other than 0, it MUST stop trying to configure the interface if the message exchange fails. (§18.2.1)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-18.2.1-7, so no unit is bound to it.

RFC9915-18.2.2-1

The client MUST include the identifier of the destination server in a Server Identifier option (see Section 21.3). (§18.2.2)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1822RequestContents unit/verify revert, verified

RFC9915-18.2.2-2

The client MUST include a Client Identifier option (see Section 21.2) to identify itself to the server. (§18.2.2)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1822RequestContents unit/verify revert, verified

RFC9915-18.2.2-3

The client MUST include an Elapsed Time option (see Section 21.9) to indicate how long the client has been trying to complete the current DHCP message exchange. (§18.2.2)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1822RequestContents unit/verify revert, verified

RFC9915-18.2.2-4

The client MUST include an Option Request option (see Section 21.7) to request the SOL_MAX_RT option (see Section 21.24) and any other options the client is interested in receiving. (§18.2.2)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1822RequestContents unit/verify revert, verified

RFC9915-18.2.3-1

The client MUST include a Client Identifier option (see Section 21.2) to identify itself to the server. (§18.2.3)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-18.2.3-1, so no unit is bound to it.

RFC9915-18.2.3-2

The client MUST include an Elapsed Time option (see Section 21.9) to indicate how long the client has been trying to complete the current DHCP message exchange. (§18.2.3)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-18.2.3-2, so no unit is bound to it.

RFC9915-18.2.3-3

The first Confirm message from the client on the interface MUST be delayed by a random amount of time between 0 and CNF_MAX_DELAY. (§18.2.3)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-18.2.3-3, so no unit is bound to it.

RFC9915-18.2.4-1

However, as the client SHOULD renew/ rebind all IAs from the server at the same time, the client MUST select T1 and T2 times from all IA options that will guarantee that the client initiates transmissions of Renew/Rebind messages not later than at the T1/T2 times associated with any of the client's bindings (earliest T1/T2). (§18.2.4)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1824EarliestT1AcrossIAs unit/verify revert, verified

RFC9915-18.2.4-2

A client MUST also initiate a Renew/Reply message exchange before time T1 if the client's link-local address used in previous interactions with the server is no longer valid and it is willing to receive Reconfigure messages. (§18.2.4)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-18.2.4-2, so no unit is bound to it.

RFC9915-18.2.4-4

The client MUST include a Server Identifier option (see Section 21.3) in the Renew message, identifying the server with which the client most recently communicated. (§18.2.4)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1824RenewAtT1CarriesLease unit/verify revert, verified

RFC9915-18.2.4-5

The client MUST include a Client Identifier option (see Section 21.2) to identify itself to the server. (§18.2.4)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1824RenewAtT1CarriesLease unit/verify revert, verified

RFC9915-18.2.4-6

The client MUST include an Elapsed Time option (see Section 21.9) to indicate how long the client has been trying to complete the current DHCP message exchange. (§18.2.4)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1824RenewAtT1CarriesLease unit/verify revert, verified

RFC9915-18.2.4-7

The client MUST NOT include addresses and prefixes in any IA option that the client did not obtain from the server or that are no longer valid (that have a valid lifetime of 0). (§18.2.4)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section1824RenewOmitsExpiredLeases unit/verify revert, verified

RFC9915-18.2.6-1

The client MUST include an Elapsed Time option (see Section 21.9) to indicate how long the client has been trying to complete the current DHCP message exchange. (§18.2.6)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-18.2.6-1, so no unit is bound to it.

RFC9915-18.2.6-2

The client MUST include an Option Request option (see Section 21.7) to request the INF_MAX_RT option (see Section 21.25), the Information Refresh Time option (see Section 21.23), and any other options the client is interested in receiving. (§18.2.6)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-18.2.6-2, so no unit is bound to it.

RFC9915-18.2.6-3

When responding to a Reconfigure, the client MUST include a Server Identifier option (see Section 21.3) with the identifier from the Reconfigure message to which the client is responding. (§18.2.6)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-18.2.6-3, so no unit is bound to it.

RFC9915-18.2.6-4

The first Information-request message from the client on the interface MUST be delayed by a random amount of time between 0 and INF_MAX_DELAY. (§18.2.6)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-18.2.6-4, so no unit is bound to it.

RFC9915-18.2.7-1

The client MUST include a Server Identifier option (see Section 21.3) in the Renew message, identifying the server that allocated the lease(s). (§18.2.7)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1827ReleaseContents unit/verify revert, verified

RFC9915-18.2.7-2

The client MUST include a Client Identifier option (see Section 21.2) to identify itself to the server. (§18.2.7)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1827ReleaseContents unit/verify revert, verified

RFC9915-18.2.7-3

The client MUST include an Elapsed Time option (see Section 21.9) to indicate how long the client has been trying to complete the current DHCP message exchange. (§18.2.7)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1827ReleaseContents unit/verify revert, verified

RFC9915-18.2.7-4

The leases to be released MUST be included in the IAs. (§18.2.7)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1827ReleaseContents unit/verify revert, verified

RFC9915-18.2.7-5

Any leases for the IAs the client wishes to continue to use MUST NOT be added to the IAs. (§18.2.7)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-18.2.7-5, so no unit is bound to it.

RFC9915-18.2.7-6

The client MUST stop using all of the leases being released before the client begins the Release message exchange process. (§18.2.7)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestDHCPv6ReleaseOnStop unit/verify revert, verified

RFC9915-18.2.7-7

For an address, this means the address MUST have been removed from the interface. (§18.2.7)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestDHCPv6ReleaseOnStop unit/verify revert, verified

RFC9915-18.2.7-8

For a delegated prefix, this means the prefix MUST have been advertised with a Preferred Lifetime and a Valid Lifetime of 0 in a Router Advertisement message as described in part (e) of Section 5.5.3 of [RFC4862]; also see requirement L-13 in Section 4.3 of [RFC7084]. (§18.2.7)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-18.2.7-8, so no unit is bound to it.

RFC9915-18.2.8-1

The Decline message is not used in prefix delegation; thus, the client MUST NOT include IA_PD options (see Section 21.21) in the Decline message. (§18.2.8)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section182101DuplicateAddressDeclined unit/verify revert, verified

RFC9915-18.2.8-2

The client MUST include a Server Identifier option (see Section 21.3) in the Decline message, identifying the server that allocated the lease(s). (§18.2.8)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section182101DuplicateAddressDeclined unit/verify revert, verified

RFC9915-18.2.8-3

The client MUST include a Client Identifier option (see Section 21.2) to identify itself to the server. (§18.2.8)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section182101DuplicateAddressDeclined unit/verify revert, verified

RFC9915-18.2.8-4

The client MUST include an Elapsed Time option (see Section 21.9) to indicate how long the client has been trying to complete the current DHCP message exchange. (§18.2.8)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section182101DuplicateAddressDeclined unit/verify revert, verified

RFC9915-18.2.8-5

The addresses to be declined MUST be included in the IAs. (§18.2.8)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section182101DuplicateAddressDeclined unit/verify revert, verified

RFC9915-18.2.8-6

The client MUST NOT use any of the addresses it is declining as the source address in the Decline message or in any subsequently transmitted message. (§18.2.8)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915DuplicateAddressDeclinedOnTheLink unit/verify revert, verified
positive TestRFC9915Section182101DuplicateAddressDeclined unit/verify revert, verified

RFC9915-18.2.9-1

The client MUST process any SOL_MAX_RT option (§18.2.9)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section163AdvertiseValidation unit/verify revert, verified

RFC9915-18.2.9-2

The client MUST ignore any Advertise message that contains no addresses (IA Address options (see Section 21.6) encapsulated in IA_NA options (see Section 21.4)) and no delegated prefixes (IA Prefix options (see Section 21.22) encapsulated in IA_PD options (see Section 21.21)), with the exception that the client: (§18.2.9)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section163AdvertiseValidation unit/verify revert, verified

RFC9915-18.2.9-3

MUST process an included SOL_MAX_RT option and (§18.2.9)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section163AdvertiseValidation unit/verify revert, verified

RFC9915-18.2.9-4

MUST process an included INF_MAX_RT option. (§18.2.9)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-18.2.9-4, so no unit is bound to it.

RFC9915-18.2.9-5

The client ignoring an Advertise message MUST NOT restart the Solicit retransmission timer. (§18.2.9)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestDHCPv6LinkOneDatagramPerExchange unit/verify revert, verified

RFC9915-18.2.10-1

The client MUST process any SOL_MAX_RT option (§18.2.10)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section2124SolMaxRTRange unit/verify revert, verified

RFC9915-18.2.10.1-1

The client MUST perform duplicate address detection as per Section 5.4 of [RFC4862], which does list some exceptions, on each of the received addresses in any IAs on which it has not performed duplicate address detection during processing of any of the previous Reply messages from the server. (§18.2.10.1)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section182101UniqueAddressKept unit/verify revert, verified
positive TestRFC9915DuplicateAddressDeclinedOnTheLink unit/verify revert, producer-changed (the producer's behavior changed since the break was applied to it)
positive TestRFC9915Section182101DuplicateAddressDeclined unit/verify revert, producer-changed (the producer's behavior changed since the break was applied to it)

RFC9915-18.2.10.1-3

Addresses obtained from an IA Address option MUST NOT be used to form an implicit prefix with a length other than 128. (§18.2.10.1)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestDHCPv6LeaseHeldAcrossFiveRenewals unit/verify revert, verified

RFC9915-18.2.10.5-1

As a counterexample, a client that previously received an NTP server address from the DHCP server and does not receive it anymore MUST stop using the configured NTP server address. (§18.2.10.5)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-18.2.10.5-1, so no unit is bound to it.

RFC9915-18.2.11-1

The message MUST be dropped if it doesn't pass the validation, as explained in Section 16.11, particularly in cases where the authentication is missing or fails. (§18.2.11)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section16ClientDiscardsOtherMessageTypes unit/verify revert, verified

RFC9915-18.2.11-2

Once the client has received a Reconfigure, the client proceeds with the message exchange (retransmitting the Renew, Rebind, or Information-request message if necessary); the client MUST ignore any additional Reconfigure messages until the exchange is complete. (§18.2.11)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-18.2.11-2, so no unit is bound to it.

RFC9915-18.2.12-1

The client MUST include any IAs assigned to the interface that may have moved to a new link, along with the addresses associated with those IAs, in its Confirm message. (§18.2.12)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-18.2.12-1, so no unit is bound to it.

RFC9915-18.2.12-2

If the client has any valid delegated prefixes obtained from the DHCP server, the client MUST initiate a Rebind/Reply message exchange as described in Section 18.2.5, with the exception that the retransmission parameters should be set as for the Confirm message (see Section 18.2.3). (§18.2.12)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915LinkChangeWithoutDownSendsNothing unit/verify mutant, verified
negative TestRFC9915Section18212NoMoveNoRebind unit/verify mutant, verified
positive TestRFC9915LinkMoveRebindsThroughTheMonitor unit/verify revert, verified
positive TestRFC9915Section18212MoveRebindsWithConfirmParameters unit/verify revert, verified

RFC9915-18.2.12-3

If the client has only obtained network information using Information-request/Reply message exchanges, the client MUST initiate an Information-request/Reply message exchange as described in Section 18.2.6. (§18.2.12)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-18.2.12-3, so no unit is bound to it.

RFC9915-18.2.12-4

However, a client MUST rate- limit such initiation attempts to avoid flooding a server with requests when there are link issues (for example, only doing one of these at most every 30 seconds). (§18.2.12)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section18212MoveRebindRateLimited unit/verify revert, verified

RFC9915-18.3.5-1

The Reply with lifetimes of 0 constitutes an explicit notification to the client that the specific addresses and delegated prefixes are no longer valid and MUST NOT be used by the client. (§18.3.5)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section182101ValidZeroDiscarded unit/verify revert, verified

RFC9915-20.2-1

Any DHCP message MUST NOT include more than one Authentication option. (§20.2)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-20.2-1, so no unit is bound to it.

RFC9915-20.3-3

A client that receives a message with the RDM field set to 0x00 MUST compare its replay detection field with the previous value sent by that same server (based on the Server Identifier option; see Section 21.3) and only accept the message if the received value is greater and record this as the new value. (§20.3)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-20.3-3, so no unit is bound to it.

RFC9915-20.3-4

If this is the first time a client processes an Authentication option sent by a server, the client MUST record the replay detection value and skip the replay detection check. (§20.3)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-20.3-4, so no unit is bound to it.

RFC9915-21-1

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. (§21)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-21-1, so no unit is bound to it.

RFC9915-21.4-2

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. (§21.4)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1824RenewAtT1CarriesLease unit/verify revert, verified

RFC9915-21.6-3

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. (§21.6)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestDHCPv6LeaseHeldAcrossFiveRenewals unit/verify revert, verified

RFC9915-21.6-4

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

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section216PreferredAboveValidDiscarded unit/verify revert, verified

RFC9915-21.7-1

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. (§21.7)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section217OptionRequestEveryMessage unit/verify revert, verified

RFC9915-21.7-2

The Option Request option MUST NOT include the following option codes: (§21.7)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section217OptionRequestEveryMessage unit/verify revert, verified

RFC9915-21.9-1

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. (§21.9)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section217OptionRequestEveryMessage unit/verify revert, verified

RFC9915-21.15-1

The user class information carried in this option MUST be configurable on the client. (§21.15)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-21.15-1, so no unit is bound to it.

RFC9915-21.15-2

The data area of the User Class option MUST contain one or more instances of user-class-data information. (§21.15)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-21.15-2, so no unit is bound to it.

RFC9915-21.16-1

Servers and clients MUST NOT include more than one instance of OPTION_VENDOR_CLASS with the same Enterprise Number. (§21.16)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-21.16-1, so no unit is bound to it.

RFC9915-21.17-1

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). (§21.17)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-21.17-1, so no unit is bound to it.

RFC9915-21.17-2

Servers and clients MUST NOT send more than one instance of the Vendor-specific Information option with the same Enterprise Number. (§21.17)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-21.17-2, so no unit is bound to it.

RFC9915-21.17-3

MUST specify the Vendor-specific Information option in an Option Request option. (§21.17)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-21.17-3, so no unit is bound to it.

RFC9915-21.22-2

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

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section2122PrefixPreferredAboveValidDiscarded unit/verify revert, verified

RFC9915-21.23-1

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

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-21.23-1, so no unit is bound to it.

RFC9915-21.23-2

A client MUST NOT request this option in the Option Request option in any other messages. (§21.23)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section217OptionRequestEveryMessage unit/verify revert, verified

RFC9915-21.23-5

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. (§21.23)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-21.23-5, so no unit is bound to it.

RFC9915-21.23-6

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

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-21.23-6, so no unit is bound to it.

RFC9915-21.23-7

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. (§21.23)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-21.23-7, so no unit is bound to it.

RFC9915-21.24-3

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

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section2124SolMaxRTRange unit/verify revert, verified

RFC9915-21.24-4

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. (§21.24)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section2124SolMaxRTRange unit/verify revert, verified

RFC9915-21.25-2

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. (§21.25)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-21.25-2, so no unit is bound to it.

RFC9915-21.25-3

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

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-21.25-3, so no unit is bound to it.

RFC9915-21.25-4

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. (§21.25)

Audit verdict: not audited: no reader has judged these tests

No test carries RFC9915-21.25-4, so no unit is bound to it.

RFC9915-22.3-1

Because of the opportunity for attack through the Reconfigure message, a DHCP client MUST discard any Reconfigure message that does not include authentication or that does not pass the validation process for the authentication protocol. (§22.3)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
negative TestRFC9915Section16ClientDiscardsOtherMessageTypes unit/verify revert, verified

RFC9915-A-1

Legacy implementations MAY support them, but implementations conformant to this document MUST NOT rely on them. (§A)

Audit verdict: not audited: no reader has judged these tests

PolarityTestKind and tierProof state
positive TestRFC9915Section1821SolicitContents unit/verify revert, verified

Extraction sign-off

FieldValue
Reviewer claude
Signed off 2026-10-19
Register rfc2119
Source rfc/full/rfc9915.txt
Source fingerprint b882e4301dde4616
Record rfc/extraction/rfc9915.json
Mapped sentences 126
Declined as scope 92
Relocated to a spec, which Ze OWES 0
Unclassified 0

Sections

SectionNameSitesDispositionReason
front not stated 0 walked not stated
1 not stated 0 walked not stated
1.1 not stated 0 walked not stated
1.2 not stated 0 walked not stated
2 not stated 0 walked not stated
3 not stated 0 walked not stated
4 not stated 0 walked not stated
4.1 not stated 0 walked not stated
4.2 not stated 0 walked not stated
5 not stated 0 walked not stated
5.1 not stated 0 walked not stated
5.2 not stated 0 walked not stated
5.3 not stated 0 walked not stated
6 not stated 0 walked not stated
6.1 not stated 0 walked not stated
6.2 not stated 0 walked not stated
6.3 not stated 3 walked not stated
6.4 not stated 0 walked not stated
6.5 not stated 0 walked not stated
6.6 not stated 0 walked not stated
7 not stated 0 walked not stated
7.1 not stated 0 walked not stated
7.2 not stated 5 walked not stated
7.3 not stated 0 walked not stated
7.4 not stated 0 walked not stated
7.5 not stated 0 walked not stated
7.6 not stated 0 walked not stated
7.7 not stated 0 walked not stated
8 not stated 0 walked not stated
9 not stated 0 walked not stated
9.1 not stated 1 walked not stated
9.2 not stated 1 walked not stated
10 not stated 1 walked not stated
11 not stated 2 walked not stated
11.1 not stated 0 walked not stated
11.2 not stated 5 walked not stated
11.3 not stated 1 walked not stated
11.4 not stated 1 walked not stated
11.5 not stated 0 walked not stated
12 not stated 2 walked not stated
12.1 not stated 0 walked not stated
12.2 not stated 0 walked not stated
13 not stated 0 walked not stated
13.1 not stated 3 walked not stated
13.2 not stated 0 walked not stated
14 not stated 0 walked not stated
14.1 not stated 2 walked not stated
14.2 not stated 3 walked not stated
15 not stated 2 walked not stated
16 not stated 2 walked not stated
16.1 not stated 1 walked not stated
16.2 not stated 2 walked not stated
16.3 not stated 2 walked not stated
16.4 not stated 2 walked not stated
16.5 not stated 2 walked not stated
16.6 not stated 2 walked not stated
16.7 not stated 2 walked not stated
16.8 not stated 2 walked not stated
16.9 not stated 2 walked not stated
16.10 not stated 4 walked not stated
16.11 not stated 2 walked not stated
16.12 not stated 2 walked not stated
16.13 not stated 1 walked not stated
16.14 not stated 1 walked not stated
17 not stated 0 walked not stated
17.1 not stated 0 walked not stated
17.2 not stated 0 walked not stated
18 not stated 2 walked not stated
18.1 not stated 2 walked not stated
18.2 not stated 1 walked not stated
18.2.1 not stated 7 walked not stated
18.2.2 not stated 4 walked not stated
18.2.3 not stated 3 walked not stated
18.2.4 not stated 7 walked not stated
18.2.5 not stated 0 walked not stated
18.2.6 not stated 4 walked not stated
18.2.7 not stated 9 walked not stated
18.2.8 not stated 6 walked not stated
18.2.9 not stated 5 walked not stated
18.2.10 not stated 2 walked not stated
18.2.10.1 not stated 6 walked not stated
18.2.10.2 not stated 0 walked not stated
18.2.10.3 not stated 0 walked not stated
18.2.10.4 not stated 0 walked not stated
18.2.10.5 not stated 1 walked not stated
18.2.11 not stated 2 walked not stated
18.2.12 not stated 4 walked not stated
18.2.13 not stated 0 walked not stated
18.3 not stated 2 walked not stated
18.3.1 not stated 1 walked not stated
18.3.2 not stated 8 walked not stated
18.3.3 not stated 2 walked not stated
18.3.4 not stated 3 walked not stated
18.3.5 not stated 5 walked not stated
18.3.6 not stated 1 walked not stated
18.3.7 not stated 0 walked not stated
18.3.8 not stated 0 walked not stated
18.3.9 not stated 7 walked not stated
18.3.10 not stated 1 walked not stated
18.3.11 not stated 3 walked not stated
19 not stated 2 walked not stated
19.1 not stated 0 walked not stated
19.1.1 not stated 1 walked not stated
19.1.2 not stated 0 walked not stated
19.1.3 not stated 0 walked not stated
19.2 not stated 2 walked not stated
19.3 not stated 1 walked not stated
19.4 not stated 1 walked not stated
20 not stated 0 walked not stated
20.1 not stated 0 walked not stated
20.2 not stated 1 walked not stated
20.3 not stated 5 walked not stated
20.4 not stated 0 walked not stated
20.4.1 not stated 0 walked not stated
20.4.2 not stated 1 walked not stated
20.4.3 not stated 0 walked not stated
21 not stated 1 walked not stated
21.1 not stated 0 walked not stated
21.2 not stated 0 walked not stated
21.3 not stated 0 walked not stated
21.4 not stated 3 walked not stated
21.5 not stated 0 walked not stated
21.6 not stated 4 walked not stated
21.7 not stated 3 walked not stated
21.8 not stated 0 walked not stated
21.9 not stated 1 walked not stated
21.10 not stated 0 walked not stated
21.11 not stated 0 walked not stated
21.12 not stated 1 walked not stated
21.13 not stated 1 walked not stated
21.14 not stated 1 walked not stated
21.15 not stated 2 walked not stated
21.16 not stated 1 walked not stated
21.17 not stated 3 walked not stated
21.18 not stated 2 walked not stated
21.19 not stated 0 walked not stated
21.20 not stated 0 walked not stated
21.21 not stated 3 walked not stated
21.22 not stated 2 walked not stated
21.23 not stated 7 walked not stated
21.24 not stated 4 walked not stated
21.25 not stated 4 walked not stated
22 not stated 0 walked not stated
22.1 not stated 0 walked not stated
22.2 not stated 0 walked not stated
22.3 not stated 1 walked not stated
22.4 not stated 0 walked not stated
23 not stated 0 walked not stated
24 not stated 0 walked not stated
25 not stated 0 walked not stated
25.1 not stated 0 walked not stated
25.2 not stated 0 walked not stated
A not stated 1 walked not stated
B not stated 0 walked not stated
C not stated 0 walked not stated

Excluded sentences

SiteExcluded kindReasonQuote
7.2:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. Servers and relay agents MUST listen for DHCP messages on UDP port 547.
7.2:4 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. Servers MUST send Relay-reply messages to UDP destination port 547 and client messages to UDP destination port 546.
7.2:5 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 relay agent, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 relay agent. Relay agents MUST send Relay-forward and Relay-reply messages to UDP destination port 547 and client messages to UDP destination port 546.
9.1:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 relay agent, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 relay agent. options: MUST include a Relay Message option (see Section 21.10); MAY include other options, such as the Interface-Id option (see Section 21.18), added by the relay agent.
9.2:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 relay agent, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 relay agent. options: MUST include a Relay Message option (see Section 21.10); MAY include other options, such as the Interface-Id option (see Section 21.18).
13.1:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. According to [RFC6221], the server MUST ignore any link-address field whose value is zero.
13.1:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. A server MUST NOT assign an address that is otherwise reserved for some other purpose.
13.1:3 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. For example, a server MUST NOT assign addresses that use a reserved IPv6 Interface Identifier [RFC5453] [RFC7136] [IANA-RESERVED-IID].
14.2:3 duplicate-of
never bound Ze
the same obligation is already captured under another requirement id
Restates RFC9915-14.1-1: this sentence applies the section 14.1 limit to the renewal schedule; every Renew and Rebind passes the same per-interface limiter (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::admitTransmission). The client MUST choose renew and rebind times to not violate rate-limiting restrictions as defined in Section 14.1.
16.2:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. Servers MUST discard any Solicit messages that do not include a Client Identifier option or that do include a Server Identifier option.
16.3:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server and relay agent, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server and relay agent. Servers and relay agents MUST discard any received Advertise messages.
16.4:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. Servers MUST discard any received Request message that meets any of the following conditions:
16.5:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. Servers MUST discard any received Confirm messages that do not include a Client Identifier option (see Section 21.2) or that do include a Server Identifier option (see Section 21.3).
16.6:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. Servers MUST discard any received Renew message that meets any of the following conditions:
16.7:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. Servers MUST discard any received Rebind messages that do not include a Client Identifier option (see Section 21.2) or that do include a Server Identifier option (see Section 21.3).
16.8:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. Servers MUST discard any received Decline message that meets any of the following conditions:
16.9:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. Servers MUST discard any received Release message that meets any of the following conditions:
16.10:4 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server and relay agent, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server and relay agent. Servers and relay agents MUST discard any received Reply messages.
16.11:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server and relay agent, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server and relay agent. Servers and relay agents MUST discard any received Reconfigure messages.
16.12:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. Servers MUST discard any received Information-request message that meets any of the following conditions:
18:2 duplicate-of
never bound Ze
the same obligation is already captured under another requirement id
Restates RFC9915-18-1: this sentence is the case of the same prohibition where bindings were valid; ze starts a Solicit only once every lease has expired (internal/plugins/iface/dhcp/dhcp_v6_linux.go::expireDue). In particular, if the client had some valid bindings and has chosen to start the server discovery process to obtain the same bindings from a different server, the client MUST stop using the addresses and delegated prefixes for the bindings that it had obtained from the previous server (see Section 18.2.7 for more details on what "stop using" means in this context) and that it is now trying to obtain from a new server.
18.1:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. To facilitate a client's use of a single transaction for all IA options, servers MUST return the same T1/T2 values for all IA options in a Reply (see Sections 18.3.2, 18.3.4, and 18.3.5) so that the client will generate a single transaction when renewing or rebinding its leases.
18.1:2 duplicate-of
never bound Ze
the same obligation is already captured under another requirement id
Restates RFC9915-18.2.4-1: this sentence names the section 18.2.4 rule that row RFC9915-18.2.4-1 carries. However, because some servers may not yet conform to this requirement, a client MUST be prepared to select appropriate T1/T2 times as described in Section 18.2.4.
18.2.4:3 duplicate-of
never bound Ze
the same obligation is already captured under another requirement id
Restates RFC9915-14.2-1: this sentence names the section 14.2 rule that rows RFC9915-14.2-1 and RFC9915-14.2-2 carry. The client MUST follow the rules defined in Section 14.2.
18.2.7:9 duplicate-of
never bound Ze
the same obligation is already captured under another requirement id
Restates RFC9915-18.2.7-7: this sentence follows from it: internal/plugins/iface/dhcp/dhcp_v6_linux.go::shutdown removes every released address from the interface before the Release socket opens, so a released address cannot be a source. The client MUST NOT use any of the addresses it is releasing as the source address in the Release message or in any subsequently transmitted message.
18.2.10:2 duplicate-of
never bound Ze
the same obligation is already captured under another requirement id
Restates RFC9915-14.1-1: this sentence applies the section 14.1 limit to a retried exchange; every retransmission passes the same per-interface limiter (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::admitTransmission). If the client retransmits the original message to the same server to retry the desired operation, the client MUST limit the rate at which it retransmits the message and limit the duration of the time during which it retransmits the message (see Section 14.1).
18.2.10.1:2 duplicate-of
never bound Ze
the same obligation is already captured under another requirement id
Restates RFC9915-18.2.10.1-3: this sentence is met by the same /128 installation: an address installed as a /128 carries no on-link prefix. * For each assigned address that does not have any associated reachability information (see the definition of "on-link" in Section 2.1 of [RFC4861]), in order to avoid the problems described in [RFC4943], the client MUST NOT assume that any addresses are reachable on-link as a result of receiving an IA Address option (see Section 21.6).
18.2.10.1:4 duplicate-of
never bound Ze
the same obligation is already captured under another requirement id
Restates RFC9915-6.3-1: this sentence repeats section 6.3 word for word. If the client uses a delegated prefix to configure addresses on interfaces on itself or other nodes behind it, the preferred and valid lifetimes of those addresses MUST be no longer than the remaining preferred and valid lifetimes, respectively, for the delegated prefix at any time.
18.2.10.1:5 duplicate-of
never bound Ze
the same obligation is already captured under another requirement id
Restates RFC9915-6.3-2: this sentence repeats section 6.3 word for word. In particular, if the delegated prefix or a prefix derived from it is advertised for stateless address autoconfiguration [RFC4862], the advertised preferred and valid lifetimes MUST NOT exceed the corresponding remaining lifetimes of the delegated prefix.
18.2.10.1:6 duplicate-of
never bound Ze
the same obligation is already captured under another requirement id
Restates RFC9915-14.1-1: this sentence applies the section 14.1 limit to the UseMulticast retry; every retransmission passes the same per-interface limiter (internal/plugins/iface/dhcp/dhcp_v6_exchange_linux.go::admitTransmission). Therefore, the client MUST rate-limit its transmissions (see Section 14.1) and MAY just wait for the normal retransmission time (as if the Reply message had not been received).
18.3:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. These Advertise and Reply messages MUST always contain the Server Identifier option (see Section 21.3) containing the server's DUID and the Client Identifier option (see Section 21.2) from the client message if one was present.
18.3:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST use the received message to construct the proper Relay-reply message to allow the response to the received message to be relayed through the same relay agents (in reverse order) as the original client message; see Section 19.3 for more details.
18.3.1:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST commit the assignment of any addresses and delegated prefixes or other configuration information before sending a Reply message to a client.
18.3.2:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST include in the Reply message a Server Identifier option (see Section 21.3) containing the server's DUID and the Client Identifier option (see Section 21.2) from the Request message.
18.3.2:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. If any of the prefixes of the included addresses are not appropriate for the link to which the client is connected, the server MUST return the IA to the client with a Status Code option (see Section 21.13) with the value NotOnLink.
18.3.2:3 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. If the server does not send the NotOnLink status code but it cannot assign any IP addresses to an IA, the server MUST return the IA option in the Reply message with no addresses in the IA and a Status Code option containing status code NoAddrsAvail in the IA.
18.3.2:4 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. For any IA_PD option (see Section 21.21) in the Request message to which the server cannot assign any delegated prefixes, the server MUST return the IA_PD option in the Reply message with no prefixes in the IA_PD and with a Status Code option containing status code NoPrefixAvail in the IA_PD.
18.3.2:5 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST NOT include any addresses or delegated prefixes in the IA that the server does not assign to the client.
18.3.2:6 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The T1/T2 times set in each applicable IA option for a Reply MUST be the same values across all IAs.
18.3.2:7 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST determine the T1/T2 times across all of the applicable client's bindings in the Reply.
18.3.2:8 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST NOT cache its responses.
18.3.3:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. If the server is unable to perform this test (for example, the server does not have information about prefixes on the link to which the client is connected) or there were no addresses in any of the IAs sent by the client, the server MUST NOT send a Reply to the client.
18.3.3:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST include in the Reply message a Server Identifier option (see Section 21.3) containing the server's DUID and the Client Identifier option (see Section 21.2) from the Confirm message.
18.3.4:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST include in the Reply message a Server Identifier option (see Section 21.3) containing the server's DUID and the Client Identifier option (see Section 21.2) from the Renew message.
18.3.4:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The T1/T2 values set in each applicable IA option for a Reply MUST be the same across all IAs.
18.3.4:3 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST determine the T1/T2 values across all of the applicable client's bindings in the Reply.
18.3.5:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST NOT return any addresses or delegated prefixes in the IA that the server does not assign to the client.
18.3.5:3 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST include in the Reply message a Server Identifier option (see Section 21.3) containing the server's DUID and the Client Identifier option (see Section 21.2) from the Rebind message.
18.3.5:4 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The T1 or T2 values set in each applicable IA option for a Reply MUST be the same values across all IAs.
18.3.5:5 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST determine the T1 or T2 values across all of the applicable client's bindings in the Reply.
18.3.6:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST include a Server Identifier option (see Section 21.3) containing the server's DUID in the Reply message.
18.3.9:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server preference value MUST default to 0 unless otherwise configured by the server administrator.
18.3.9:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST include options in the Advertise message containing configuration parameters for all of the options identified in the Option Request option (see Section 21.7) in the Solicit message that the server has been configured to return to the client.
18.3.9:3 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. If the Option Request option includes a container option, the server MUST include all the options that are eligible to be encapsulated in the container.
18.3.9:4 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST include IA options in the Advertise message containing any addresses and/or delegated prefixes that would be assigned to IAs contained in the Solicit message from the client.
18.3.9:5 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. If the server is not going to assign an address or delegated prefix received as a hint in the Solicit message, the server MUST NOT include this address or delegated prefix in the Advertise message.
18.3.9:6 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. If the server will not assign any addresses to an IA_NA in subsequent Request messages from the client, the server MUST include the IA option in the Advertise message with no addresses in that IA and a Status Code option (see Section 21.13) encapsulated in the IA option containing status code NoAddrsAvail.
18.3.9:7 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. If the server will not assign any prefixes to an IA_PD in subsequent Request messages from the client, the server MUST include the IA_PD option (see Section 21.21) in the Advertise message with no prefixes in the IA_PD option and a Status Code option encapsulated in the IA_PD containing status code NoPrefixAvail.
18.3.10:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The Advertise or Reply message MUST be unicast through the interface on which the original message was received.
18.3.11:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST use DHCP authentication in the Reconfigure message (see Section 20.4).
18.3.11:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST include a Reconfigure Message option (see Section 21.19) to select whether the client responds with a Renew message, a Rebind message, or an Information-request message.
18.3.11:3 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST NOT include any other options in the Reconfigure message, except as specifically allowed in the definition of individual options.
19:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 relay agent, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 relay agent. If the relay agent has not been explicitly configured, it MUST use the All_DHCP_Servers multicast address as the default.
19:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 relay agent, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 relay agent. If the relay agent receives a message other than Relay-forward and Relay-reply and the relay agent does not recognize its message type, it MUST forward the message as described in Section 19.1.1.
19.1.1:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 relay agent, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 relay agent. If the relay agent cannot use the address in the link-address field to identify the interface through which the response to the client will be relayed, the relay agent MUST include an Interface-Id option (see Section 21.18) in the Relay-forward message.
19.2:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 relay agent, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 relay agent. Relay agents MUST NOT modify the message.
19.2:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 relay agent, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 relay agent. If the relay agent receives a Relay-reply message, it MUST process the message as defined above, regardless of the type of message encapsulated in the Relay Message option.
19.3:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 relay agent, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 relay agent. A response to the client MUST be relayed through the same relay agents as the original client message.
19.4:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 relay agent, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 relay agent. Each relay is allowed to insert additional options on the encapsulation level it added but MUST NOT change anything in the message being encapsulated.
20.3:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. If the RDM field contains 0x00, the replay detection field MUST be set to the value of a strictly monotonically increasing 64-bit unsigned integer (modulo 2^64).
20.3:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the Authentication option protocol designer, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the Authentication option protocol designer. This method MUST be supported by all Authentication option protocols.
20.3:5 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. Servers that support the reconfigure mechanism MUST ensure that the replay detection value is retained between restarts.
20.4.2:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The reconfigure key is 128 bits long and MUST be a cryptographically strong random or pseudorandom number that cannot easily be predicted.
21.4:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST ignore any values in these fields in messages received from a client.
21.4:3 duplicate-of
never bound Ze
the same obligation is already captured under another requirement id
Restates RFC9915-14.2-1: this sentence names the section 14.2 rule that rows RFC9915-14.2-1 and RFC9915-14.2-2 carry. The client MUST follow the rules defined in Section 14.2.
21.6:1 duplicate-of
never bound Ze
the same obligation is already captured under another requirement id
Restates RFC9915-18.2.10.1-3: this sentence states the same /128 rule as section 18.2.10.1. A client MUST NOT form an implicit prefix with a length other than 128 for this address.
21.6:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST ignore any received values.
21.7:3 duplicate-of
never bound Ze
the same obligation is already captured under another requirement id
Restates RFC9915-21.7-1: this sentence states the consequence of the client obligation row RFC9915-21.7-1 carries. Other top-level option codes MUST appear in the Option Request option or they will not be sent by the server.
21.12:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST NOT send this option.
21.13:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. MUST NOT be NUL-terminated.
21.14:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. A server MUST include this option in a Reply message sent in response to a Solicit message when completing the Solicit/Reply message exchange.
21.18:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. 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.
21.18:2 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 relay agent, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 relay agent. This option MUST NOT appear in any message except a Relay-forward or Relay-reply message.
21.21:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST ignore any values in these fields in messages received from a client.
21.21:2 duplicate-of
never bound Ze
the same obligation is already captured under another requirement id
Restates RFC9915-21.4-2: this sentence states for IA_PD the T1/T2 rule section 21.4 states for IA_NA; internal/plugins/iface/dhcp/dhcp_v6_lease_linux.go::iaTimes reads both through one path. 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.
21.21:3 duplicate-of
never bound Ze
the same obligation is already captured under another requirement id
Restates RFC9915-14.2-1: this sentence names the section 14.2 rule that rows RFC9915-14.2-1 and RFC9915-14.2-2 carry. The client MUST follow the rules defined in Section 14.2.
21.22:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The server MUST ignore any received values in these lifetime fields.
21.23:3 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. The option value MUST NOT be smaller than IRT_MINIMUM.
21.23:4 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. This option MUST only appear in the top-level options area of Reply messages.
21.24:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. SOL_MAX_RT value: Overriding value for SOL_MAX_RT in seconds; MUST be in this range: 60 <= "value" <= 86400 (1 day).
21.24:2 duplicate-of
never bound Ze
the same obligation is already captured under another requirement id
Restates RFC9915-18.2.1-3: this sentence states the SOL_MAX_RT request row RFC9915-18.2.1-3 carries. 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.
21.25:1 binds-another-role
never bound Ze
the obligation is addressed to a role Ze never acts as
Presumed wrong until justified: Ze rarely implements one side of a protocol, so the reason beside this row must name the role, show Ze never acts as it, and cite the producer that would.
Binds the DHCPv6 server, not the client; ze implements the client role only: internal/plugins/iface/dhcp/ holds the DHCPv6 client and internal/plugins/dhcpserver/ answers DHCPv4 alone, so no ze code acts as the DHCPv6 server. INF_MAX_RT value: Overriding value for INF_MAX_RT in seconds; MUST be in this range: 60 <= "value" <= 86400 (1 day).

Superseded

No document obsoletes RFC 9915, so its obligations are stated where they were written.