draft-ietf-dhc-dhcpv6-yang-21.txt   draft-ietf-dhc-dhcpv6-yang-22.txt 
DHC Working Group I. Farrer, Ed. DHC Working Group I. Farrer, Ed.
Internet-Draft Deutsche Telekom AG Internet-Draft Deutsche Telekom AG
Intended status: Standards Track 14 June 2021 Intended status: Standards Track 2 July 2021
Expires: 16 December 2021 Expires: 3 January 2022
YANG Data Model for DHCPv6 Configuration YANG Data Model for DHCPv6 Configuration
draft-ietf-dhc-dhcpv6-yang-21 draft-ietf-dhc-dhcpv6-yang-22
Abstract Abstract
This document describes YANG data modules for the configuration and This document describes YANG data modules for the configuration and
management of DHCPv6 (Dynamic Host Configuration Protocol for IPv6) management of DHCPv6 (Dynamic Host Configuration Protocol for IPv6)
servers, relays, and clients. servers, relays, and clients.
Requirements Language Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
skipping to change at page 1, line 40 skipping to change at page 1, line 40
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on 16 December 2021. This Internet-Draft will expire on 3 January 2022.
Copyright Notice Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the Copyright (c) 2021 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document. license-info) in effect on the date of publication of this document.
skipping to change at page 2, line 25 skipping to change at page 2, line 25
1.2. Extensibility of the DHCPv6 Server YANG Module . . . . . 4 1.2. Extensibility of the DHCPv6 Server YANG Module . . . . . 4
1.2.1. DHCPv6 Option Definitions . . . . . . . . . . . . . . 4 1.2.1. DHCPv6 Option Definitions . . . . . . . . . . . . . . 4
1.3. Terminology . . . . . . . . . . . . . . . . . . . . . . . 6 1.3. Terminology . . . . . . . . . . . . . . . . . . . . . . . 6
2. DHCPv6 Tree Diagrams . . . . . . . . . . . . . . . . . . . . 6 2. DHCPv6 Tree Diagrams . . . . . . . . . . . . . . . . . . . . 6
2.1. DHCPv6 Server Tree Diagram . . . . . . . . . . . . . . . 6 2.1. DHCPv6 Server Tree Diagram . . . . . . . . . . . . . . . 6
2.2. DHCPv6 Relay Tree Diagram . . . . . . . . . . . . . . . . 13 2.2. DHCPv6 Relay Tree Diagram . . . . . . . . . . . . . . . . 13
2.3. DHCPv6 Client Tree Diagram . . . . . . . . . . . . . . . 16 2.3. DHCPv6 Client Tree Diagram . . . . . . . . . . . . . . . 16
3. DHCPv6 YANG Modules . . . . . . . . . . . . . . . . . . . . . 19 3. DHCPv6 YANG Modules . . . . . . . . . . . . . . . . . . . . . 19
3.1. DHCPv6 Server YANG Module . . . . . . . . . . . . . . . . 19 3.1. DHCPv6 Server YANG Module . . . . . . . . . . . . . . . . 19
3.2. DHCPv6 Relay YANG Module . . . . . . . . . . . . . . . . 39 3.2. DHCPv6 Relay YANG Module . . . . . . . . . . . . . . . . 39
3.3. DHCPv6 Client YANG Module . . . . . . . . . . . . . . . . 48 3.3. DHCPv6 Client YANG Module . . . . . . . . . . . . . . . . 49
3.4. DHCPv6 Common YANG Module . . . . . . . . . . . . . . . . 63 3.4. DHCPv6 Common YANG Module . . . . . . . . . . . . . . . . 63
4. Security Considerations . . . . . . . . . . . . . . . . . . . 71 4. Security Considerations . . . . . . . . . . . . . . . . . . . 71
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 73 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 73
6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 74 6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 74
7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 74 7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 74
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 74 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 74
8.1. Normative References . . . . . . . . . . . . . . . . . . 74 8.1. Normative References . . . . . . . . . . . . . . . . . . 74
8.2. Informative References . . . . . . . . . . . . . . . . . 77 8.2. Informative References . . . . . . . . . . . . . . . . . 77
Appendix A. Data Tree Examples . . . . . . . . . . . . . . . . . 77 Appendix A. Data Tree Examples . . . . . . . . . . . . . . . . . 77
A.1. DHCPv6 Server Configuration Example . . . . . . . . . . . 77 A.1. DHCPv6 Server Configuration Example . . . . . . . . . . . 77
skipping to change at page 5, line 23 skipping to change at page 5, line 23
+---------------------+------+-----+------+-------------------------+ +---------------------+------+-----+------+-------------------------+
|OPTION_PREFERENCE (7)| X | | | ietf-dhcpv6-server.yang | |OPTION_PREFERENCE (7)| X | | | ietf-dhcpv6-server.yang |
| Preference Option | | | | | | Preference Option | | | | |
+---------------------+------+-----+------+-------------------------+ +---------------------+------+-----+------+-------------------------+
| OPTION_AUTH (11) | X | X | | ietf-dhcpv6-common.yang | | OPTION_AUTH (11) | X | X | | ietf-dhcpv6-common.yang |
|Authentication Option| | | | | |Authentication Option| | | | |
+---------------------+------+-----+------+-------------------------+ +---------------------+------+-----+------+-------------------------+
| OPTION_UNICAST (12) | X | | | ietf-dhcpv6-server.yang | | OPTION_UNICAST (12) | X | | | ietf-dhcpv6-server.yang |
|Server Unicast Option| | | | | |Server Unicast Option| | | | |
+---------------------+------+-----+------+-------------------------+ +---------------------+------+-----+------+-------------------------+
| OPTION_STATUS_CODE | X | X | X | ietf-dhcpv6-common.yang |
| (13) Status Code | | | | |
| Option | | | | |
+---------------------+------+-----+------+-------------------------+
| OPTION_RAPID_COMMIT | X | | X | ietf-dhcpv6-common.yang | | OPTION_RAPID_COMMIT | X | | X | ietf-dhcpv6-common.yang |
| (14) Rapid Commit | | | | | | (14) Rapid Commit | | | | |
| Option | | | | | | Option | | | | |
+---------------------+------+-----+------+-------------------------+ +---------------------+------+-----+------+-------------------------+
| OPTION_USER_CLASS | | | X | ietf-dhcpv6-client.yang | | OPTION_USER_CLASS | | | X | ietf-dhcpv6-client.yang |
| (15) User Class | | | | | | (15) User Class | | | | |
| Option | | | | | | Option | | | | |
+---------------------+------+-----+------+-------------------------+ +---------------------+------+-----+------+-------------------------+
| OPTION_VENDOR_CLASS | | | X | ietf-dhcpv6-client.yang | | OPTION_VENDOR_CLASS | | | X | ietf-dhcpv6-client.yang |
| (16) Vendor Class | | | | | | (16) Vendor Class | | | | |
skipping to change at page 7, line 24 skipping to change at page 7, line 16
| +--rw preference-option | +--rw preference-option
| | +--rw pref-value? uint8 | | +--rw pref-value? uint8
| +--rw auth-option | +--rw auth-option
| | +--rw protocol? uint8 | | +--rw protocol? uint8
| | +--rw algorithm? uint8 | | +--rw algorithm? uint8
| | +--rw rdm? uint8 | | +--rw rdm? uint8
| | +--rw replay-detection? uint64 | | +--rw replay-detection? uint64
| | +--rw auth-information? string | | +--rw auth-information? string
| +--rw server-unicast-option | +--rw server-unicast-option
| | +--rw server-address? inet:ipv6-address | | +--rw server-address? inet:ipv6-address
| +--rw status-code-option
| | +--rw status-code? uint16
| | +--rw status-message? string
| +--rw rapid-commit-option! | +--rw rapid-commit-option!
| +--rw vendor-specific-information-options | +--rw vendor-specific-information-options
| | +--rw vendor-specific-information-option* | | +--rw vendor-specific-information-option*
| | [enterprise-number] | | [enterprise-number]
| | +--rw enterprise-number uint32 | | +--rw enterprise-number uint32
| | +--rw vendor-option-data* [sub-option-code] | | +--rw vendor-option-data* [sub-option-code]
| | +--rw sub-option-code uint16 | | +--rw sub-option-code uint16
| | +--rw sub-option-data? string | | +--rw sub-option-data? string
| +--rw reconfigure-message-option | +--rw reconfigure-message-option
| | +--rw msg-type? uint8 | | +--rw msg-type? uint8
skipping to change at page 9, line 19 skipping to change at page 9, line 9
| | | yang:date-and-time | | | yang:date-and-time
| | +--ro last-renew-rebind? | | +--ro last-renew-rebind?
| | | yang:date-and-time | | | yang:date-and-time
| | +--ro preferred-lifetime? | | +--ro preferred-lifetime?
| | | dhc6:timer-seconds32 | | | dhc6:timer-seconds32
| | +--ro valid-lifetime? | | +--ro valid-lifetime?
| | | dhc6:timer-seconds32 | | | dhc6:timer-seconds32
| | +--ro lease-t1? | | +--ro lease-t1?
| | | dhc6:timer-seconds32 | | | dhc6:timer-seconds32
| | +--ro lease-t2? | | +--ro lease-t2?
| | dhc6:timer-seconds32 | | | dhc6:timer-seconds32
| | +--ro status
| | +--ro code? uint16
| | +--ro message? string
| +--rw prefix-pools {prefix-delegation}? | +--rw prefix-pools {prefix-delegation}?
| +--rw prefix-pool* [pool-id] | +--rw prefix-pool* [pool-id]
| +--rw pool-id uint32 | +--rw pool-id uint32
| +--rw pool-prefix | +--rw pool-prefix
| | inet:ipv6-prefix | | inet:ipv6-prefix
| +--rw client-prefix-length uint8 | +--rw client-prefix-length uint8
| +--rw max-pd-space-utilization? dhc6:threshold | +--rw max-pd-space-utilization? dhc6:threshold
| +--rw option-set-id* leafref | +--rw option-set-id* leafref
| +--rw valid-lifetime? | +--rw valid-lifetime?
| | dhc6:timer-seconds32 | | dhc6:timer-seconds32
skipping to change at page 10, line 24 skipping to change at page 10, line 17
| | yang:date-and-time | | yang:date-and-time
| +--ro last-renew-rebind? | +--ro last-renew-rebind?
| | yang:date-and-time | | yang:date-and-time
| +--ro preferred-lifetime? | +--ro preferred-lifetime?
| | dhc6:timer-seconds32 | | dhc6:timer-seconds32
| +--ro valid-lifetime? | +--ro valid-lifetime?
| | dhc6:timer-seconds32 | | dhc6:timer-seconds32
| +--ro lease-t1? | +--ro lease-t1?
| | dhc6:timer-seconds32 | | dhc6:timer-seconds32
| +--ro lease-t2? | +--ro lease-t2?
| dhc6:timer-seconds32 | | dhc6:timer-seconds32
| +--ro status
| +--ro code? uint16
| +--ro message? string
+--ro solicit-count? uint32 +--ro solicit-count? uint32
+--ro advertise-count? uint32 +--ro advertise-count? uint32
+--ro request-count? uint32 +--ro request-count? uint32
+--ro confirm-count? uint32 +--ro confirm-count? uint32
+--ro renew-count? uint32 +--ro renew-count? uint32
+--ro rebind-count? uint32 +--ro rebind-count? uint32
+--ro reply-count? uint32 +--ro reply-count? uint32
+--ro release-count? uint32 +--ro release-count? uint32
+--ro decline-count? uint32 +--ro decline-count? uint32
+--ro reconfigure-count? uint32 +--ro reconfigure-count? uint32
skipping to change at page 11, line 26 skipping to change at page 11, line 22
| +--ro description? string | +--ro description? string
+---n decline-received +---n decline-received
| +--ro duid? dhc6:duid | +--ro duid? dhc6:duid
| +--ro declined-resources* [] | +--ro declined-resources* []
| +--ro (resource-type)? | +--ro (resource-type)?
| +--:(declined-address) | +--:(declined-address)
| | +--ro address? inet:ipv6-address | | +--ro address? inet:ipv6-address
| +--:(declined-prefix) | +--:(declined-prefix)
| +--ro prefix? inet:ipv6-prefix | +--ro prefix? inet:ipv6-prefix
+---n non-success-code-sent +---n non-success-code-sent
+--ro status-code uint16 +--ro duid? dhc6:duid
+--ro duid? dhc6:duid +--ro status
+--ro code? uint16
+--ro message? string
Figure 1: DHCPv6 Server Data Module Structure Figure 1: DHCPv6 Server Data Module Structure
Descriptions of important nodes: Descriptions of important nodes:
* enabled: Enables/disables the function of the DHCPv6 server. * enabled: Enables/disables the function of the DHCPv6 server.
* dhcpv6-server: This container holds the server's DHCPv6 specific * dhcpv6-server: This container holds the server's DHCPv6 specific
configuration. configuration.
skipping to change at page 12, line 24 skipping to change at page 12, line 24
client are imported from the 'ietf-dhcpv6-common' module. Where client are imported from the 'ietf-dhcpv6-common' module. Where
needed, other DHCPv6 option modules can be augmented as they are needed, other DHCPv6 option modules can be augmented as they are
defined. defined.
* class-selector: This is provided as a location for additional * class-selector: This is provided as a location for additional
implementation specific YANG nodes for vendor specific class implementation specific YANG nodes for vendor specific class
selector nodes to be augmented. See Appendix D for an example of selector nodes to be augmented. See Appendix D for an example of
this. this.
* network-ranges: A hierarchical model is used for the allocation of * network-ranges: A hierarchical model is used for the allocation of
addresses and prefixes. At the top level, 'network-ranges' holds addresses and prefixes. At the top level 'network-ranges'
global configuration parameters. Under this, a list of 'network- container holds global configuration parameters. Under this, the
ranges' can be defined. Inside 'network-rages', 'address-pools' 'network-range' list is used for specifying IPv6 prefixes and
(for IA_NA and IA_TA allocations), and 'prefix-pools' (for IA_PD additional, prefix specific parameters.
allocation) are defined. Finally within the pools, specific host-
reservations are held. * address-pools: Used for IA_NA and IA_TA pool allocations with a
container for defining host reservations. State information about
active leases from the pool is also located here.
* prefix-pools: Defines pools to be used for prefix delegation to * prefix-pools: Defines pools to be used for prefix delegation to
clients. As prefix delegation is not supported by all DHCPv6 clients. Static host reservations can also be configured. As
server implementations, it is enabled by a feature statement. prefix delegation is not supported by all DHCPv6 server
implementations, it is enabled by a feature statement.
Information about RPCs
* delete-address-lease: Allows the deletion of a lease for an
individual IPv6 address from the server's lease database.
* delete-prefix-lease: Allows the deletion of a lease for an
individual IPv6 prefix from the server's lease database.
Information about notifications: Information about notifications:
* address/prefix-pool-utilization-threshold-exceeded: Raised when * address/prefix-pool-utilization-threshold-exceeded: Raised when
the number of leased addresses or prefixes exceeds the configured the number of leased addresses or prefixes exceeds the configured
usage threshold. usage threshold.
* invalid-client-detected: Raised when the server detects an invalid * invalid-client-detected: Raised when the server detects an invalid
client. A description of the error and message type that has client. A description of the error and message type that has
generated the notification can be included. generated the notification can be included.
* decline-received: Raised when a DHCPv6 Decline message is received * decline-received: Raised when a DHCPv6 Decline message is received
from a client. from a client.
* non-success-code-sent: Raised when a status message is raised for * non-success-code-sent: Raised when there is a status message for
an error. an failure.
Information about RPCs
* delete-address-lease: Allows the deletion of a lease for an
individual IPv6 address from the server's lease database.
* delete-prefix-lease: Allows the deletion of a lease for an
individual IPv6 prefix from the server's lease database.
2.2. DHCPv6 Relay Tree Diagram 2.2. DHCPv6 Relay Tree Diagram
The tree diagram in Figure 2 provides an overview of the DHCPv6 relay The tree diagram in Figure 2 provides an overview of the DHCPv6 relay
module. The tree also includes the common functions module module. The tree also includes the common functions module
Section 3.4. Section 3.4.
module: ietf-dhcpv6-relay module: ietf-dhcpv6-relay
+--rw dhcpv6-relay +--rw dhcpv6-relay
+--rw enabled? boolean +--rw enabled? boolean
skipping to change at page 13, line 34 skipping to change at page 13, line 39
| | inet:ipv6-address | | inet:ipv6-address
| +--rw link-address? | +--rw link-address?
| | inet:ipv6-address | | inet:ipv6-address
| +--rw relay-options | +--rw relay-options
| | +--rw auth-option | | +--rw auth-option
| | | +--rw protocol? uint8 | | | +--rw protocol? uint8
| | | +--rw algorithm? uint8 | | | +--rw algorithm? uint8
| | | +--rw rdm? uint8 | | | +--rw rdm? uint8
| | | +--rw replay-detection? uint64 | | | +--rw replay-detection? uint64
| | | +--rw auth-information? string | | | +--rw auth-information? string
| | +--rw status-code-option
| | | +--rw status-code? uint16
| | | +--rw status-message? string
| | +--rw interface-id-option | | +--rw interface-id-option
| | +--rw interface-id? string | | +--rw interface-id? string
| +--ro solicit-received-count? uint32 | +--ro solicit-received-count? uint32
| +--ro advertise-sent-count? uint32 | +--ro advertise-sent-count? uint32
| +--ro request-received-count? uint32 | +--ro request-received-count? uint32
| +--ro confirm-received-count? uint32 | +--ro confirm-received-count? uint32
| +--ro renew-received-count? uint32 | +--ro renew-received-count? uint32
| +--ro rebind-received-count? uint32 | +--ro rebind-received-count? uint32
| +--ro reply-sent-count? uint32 | +--ro reply-sent-count? uint32
| +--ro release-received-count? uint32 | +--ro release-received-count? uint32
skipping to change at page 14, line 41 skipping to change at page 14, line 42
+---w input +---w input
| +---w interface | +---w interface
| -> ../../dhcpv6-relay/relay-if/if-name | -> ../../dhcpv6-relay/relay-if/if-name
+--ro output +--ro output
+--ro return-message? string +--ro return-message? string
notifications: notifications:
+---n relay-event +---n relay-event
+--ro topology-change +--ro topology-change
+--ro relay-if-name? +--ro relay-if-name?
| -> /dhcpv6-relay/relay-if/if-name | -> ../../../dhcpv6-relay/relay-if/if-name
+--ro last-ipv6-addr? inet:ipv6-address +--ro last-ipv6-addr? inet:ipv6-address
Figure 2: DHCPv6 Relay Data Module Structure Figure 2: DHCPv6 Relay Data Module Structure
Descriptions of important nodes: Descriptions of important nodes:
* enabled: Globally enables/disables all DHCPv6 relay functions. * enabled: Globally enables/disables all DHCPv6 relay functions.
* dhcpv6-relay: This container holds the relay's DHCPv6-specific * dhcpv6-relay: This container holds the relay's DHCPv6-specific
configuration. configuration.
skipping to change at page 15, line 34 skipping to change at page 15, line 37
* pd-leases: Contains read-only nodes for holding information about * pd-leases: Contains read-only nodes for holding information about
active delegated prefix leases. active delegated prefix leases.
* relay-options: Holds configuration parameters for DHCPv6 options * relay-options: Holds configuration parameters for DHCPv6 options
which can be sent by the relay. The initial set of applicable which can be sent by the relay. The initial set of applicable
option definitions are defined here and additional options that option definitions are defined here and additional options that
are also relevant to the server and/or client are imported from are also relevant to the server and/or client are imported from
the 'ietf-dhcpv6-common' module. Where needed, other DHCPv6 the 'ietf-dhcpv6-common' module. Where needed, other DHCPv6
option modules can be augmented as they are defined. option modules can be augmented as they are defined.
Information about notifications:
* topology-changed: Raised when the topology of the relay agent is
changed, e.g., a client facing interface is reconfigured.
Information about RPCs Information about RPCs
* clear-prefix-lease: Allows the removal of a delegated lease entry * clear-prefix-lease: Allows the removal of a delegated lease entry
from the relay. from the relay.
* clear-client-prefixes: Allows the removal of all of the delegated * clear-client-prefixes: Allows the removal of all of the delegated
lease entries for a single client (referenced by client DUID) from lease entries for a single client (referenced by client DUID) from
the relay. the relay.
* clear-interface-prefixes: Allows the removal of all of the * clear-interface-prefixes: Allows the removal of all of the
delegated lease entries from an interface on the relay. delegated lease entries from an interface on the relay.
Information about notifications:
* topology-changed: Raised when the topology of the relay agent is
changed, e.g., a client facing interface is reconfigured.
2.3. DHCPv6 Client Tree Diagram 2.3. DHCPv6 Client Tree Diagram
The tree diagram in Figure 3 provides an overview of the DHCPv6 The tree diagram in Figure 3 provides an overview of the DHCPv6
client module. The tree also includes the common functions module client module. The tree also includes the common functions module
defined in Section 3.4. defined in Section 3.4.
module: ietf-dhcpv6-client module: ietf-dhcpv6-client
+--rw dhcpv6-client +--rw dhcpv6-client
+--rw enabled? boolean +--rw enabled? boolean
+--rw client-if* [if-name] +--rw client-if* [if-name]
+--rw if-name if:interface-ref +--rw if-name if:interface-ref
+--rw enabled? boolean +--rw enabled? boolean
+--rw duid? dhc6:duid +--rw duid? dhc6:duid
+--rw client-configured-options +--rw client-configured-options
| +--rw option-request-option | +--rw option-request-option
| | +--rw oro-option* uint16 | | +--rw oro-option* uint16
| +--rw status-code-option | +--rw rapid-commit-option!
| | +--rw status-code? uint16 | +--rw user-class-option!
| | +--rw status-message? string | | +--rw user-class-data-instance*
| +--rw rapid-commit-option! | | [user-class-data-id]
| +--rw user-class-option! | | +--rw user-class-data-id uint8
| | +--rw user-class-data-instance* | | +--rw user-class-data? string
| | [user-class-data-id] | +--rw vendor-class-option
| | +--rw user-class-data-id uint8 | | +--rw vendor-class-option-instances*
| | +--rw user-class-data? string | | [enterprise-number]
| +--rw vendor-class-option | | +--rw enterprise-number uint32
| | +--rw vendor-class-option-instances* | | +--rw vendor-class-data-element*
| | [enterprise-number] | | [vendor-class-data-id]
| | +--rw enterprise-number uint32 | | +--rw vendor-class-data-id uint8
| | +--rw vendor-class-data-element* | | +--rw vendor-class-data? string
| | [vendor-class-data-id] | +--rw vendor-specific-information-options
| | +--rw vendor-class-data-id uint8 | | +--rw vendor-specific-information-option*
| | +--rw vendor-class-data? string | | [enterprise-number]
| +--rw vendor-specific-information-options | | +--rw enterprise-number uint32
| | +--rw vendor-specific-information-option* | | +--rw vendor-option-data* [sub-option-code]
| | [enterprise-number] | | +--rw sub-option-code uint16
| | +--rw enterprise-number uint32 | | +--rw sub-option-data? string
| | +--rw vendor-option-data* [sub-option-code] | +--rw reconfigure-accept-option!
| | +--rw sub-option-code uint16 +--rw ia-na* [ia-id] {non-temporary-address}?
| | +--rw sub-option-data? string | +--rw ia-id uint32
| +--rw reconfigure-accept-option! | +--rw ia-na-options
+--rw ia-na* [ia-id] | +--ro lease-state
| +--rw ia-id uint32 | +--ro ia-na-address? inet:ipv6-address
| +--rw ia-na-options | +--ro lease-t1? dhc6:timer-seconds32
| +--ro lease-state | +--ro lease-t2? dhc6:timer-seconds32
| +--ro ia-na-address? inet:ipv6-address | +--ro preferred-lifetime? dhc6:timer-seconds32
| +--ro preferred-lifetime? dhc6:timer-seconds32 | +--ro valid-lifetime? dhc6:timer-seconds32
| +--ro valid-lifetime? dhc6:timer-seconds32 | +--ro allocation-time? yang:date-and-time
| +--ro lease-t1? dhc6:timer-seconds32 | +--ro last-renew-rebind? yang:date-and-time
| +--ro lease-t2? dhc6:timer-seconds32 | +--ro server-duid? dhc6:duid
| +--ro allocation-time? yang:date-and-time | +--ro status
| +--ro last-renew-rebind? yang:date-and-time | +--ro code? uint16
| +--ro server-duid? dhc6:duid | +--ro message? string
+--rw ia-ta* [ia-id] +--rw ia-ta* [ia-id] {temporary-address}?
| +--rw ia-id uint32 | +--rw ia-id uint32
| +--rw ia-ta-options | +--rw ia-ta-options
| +--ro lease-state | +--ro lease-state
| +--ro ia-ta-address? inet:ipv6-address | +--ro ia-ta-address? inet:ipv6-address
| +--ro preferred-lifetime? dhc6:timer-seconds32 | +--ro preferred-lifetime? dhc6:timer-seconds32
| +--ro valid-lifetime? dhc6:timer-seconds32 | +--ro valid-lifetime? dhc6:timer-seconds32
| +--ro allocation-time? yang:date-and-time | +--ro allocation-time? yang:date-and-time
| +--ro last-renew-rebind? yang:date-and-time | +--ro last-renew-rebind? yang:date-and-time
| +--ro server-duid? dhc6:duid | +--ro server-duid? dhc6:duid
+--rw ia-pd* [ia-id] {prefix-delegation}? | +--ro status
| +--rw ia-id uint32 | +--ro code? uint16
| +--rw ia-pd-options | +--ro message? string
| +--ro lease-state +--rw ia-pd* [ia-id] {prefix-delegation}?
| +--ro ia-pd-prefix? inet:ipv6-prefix | +--rw ia-id uint32
| +--ro preferred-lifetime? dhc6:timer-seconds32 | +--rw ia-pd-options
| +--ro valid-lifetime? dhc6:timer-seconds32 | +--ro lease-state
| +--ro lease-t1? dhc6:timer-seconds32 | +--ro ia-pd-prefix? inet:ipv6-prefix
| +--ro lease-t2? dhc6:timer-seconds32 | +--ro lease-t1? dhc6:timer-seconds32
| +--ro allocation-time? yang:date-and-time | +--ro lease-t2? dhc6:timer-seconds32
| +--ro last-renew-rebind? yang:date-and-time | +--ro preferred-lifetime? dhc6:timer-seconds32
| +--ro server-duid? dhc6:duid | +--ro valid-lifetime? dhc6:timer-seconds32
+--ro solicit-count? uint32 | +--ro allocation-time? yang:date-and-time
+--ro advertise-count? uint32 | +--ro last-renew-rebind? yang:date-and-time
+--ro request-count? uint32 | +--ro server-duid? dhc6:duid
+--ro confirm-count? uint32 | +--ro status
+--ro renew-count? uint32 | +--ro code? uint16
+--ro rebind-count? uint32 | +--ro message? string
+--ro reply-count? uint32 +--ro solicit-count? uint32
+--ro release-count? uint32 +--ro advertise-count? uint32
+--ro decline-count? uint32 +--ro request-count? uint32
+--ro reconfigure-count? uint32 +--ro confirm-count? uint32
+--ro information-request-count? uint32 +--ro renew-count? uint32
+--ro rebind-count? uint32
+--ro reply-count? uint32
+--ro release-count? uint32
+--ro decline-count? uint32
+--ro reconfigure-count? uint32
+--ro information-request-count? uint32
notifications: notifications:
+---n invalid-ia-address-detected +---n invalid-ia-address-detected
| +--ro ia-id uint32 | {non-temporary-address or temporary-address}?
| +--ro ia-na-t1-timer? uint32 | +--ro ia-id uint32
| +--ro ia-na-t2-timer? uint32 | +--ro ia-na-t1-timer? uint32
| +--ro invalid-address? inet:ipv6-address | +--ro ia-na-t2-timer? uint32
| +--ro preferred-lifetime? uint32 | +--ro invalid-address? inet:ipv6-address
| +--ro valid-lifetime? uint32 | +--ro preferred-lifetime? uint32
| +--ro ia-options? binary | +--ro valid-lifetime? uint32
| +--ro description? string | +--ro ia-options? binary
+---n transmission-failed | +--ro description? string
| +--ro failure-type enumeration +---n transmission-failed
| +--ro description? string | +--ro failure-type enumeration
+---n unsuccessful-status-code | +--ro description? string
| +--ro status-code uint16 +---n unsuccessful-status-code
| +--ro server-duid dhc6:duid | +--ro server-duid dhc6:duid
+---n server-duid-changed | +--ro status
+--ro new-server-duid dhc6:duid | +--ro code? uint16
+--ro previous-server-duid dhc6:duid | +--ro message? string
+--ro lease-ia-na? +---n server-duid-changed
| -> /dhcpv6-client/client-if/ia-na/ia-id {non-temporary-address or prefix-delegation or temporary-
+--ro lease-ia-ta? address}?
| -> /dhcpv6-client/client-if/ia-ta/ia-id +--ro new-server-duid dhc6:duid
+--ro lease-ia-pd? +--ro previous-server-duid dhc6:duid
-> /dhcpv6-client/client-if/ia-pd/ia-id +--ro lease-ia-na?
{prefix-delegation}? | -> ../../dhcpv6-client/client-if/ia-na/ia-id
| {non-temporary-address}?
+--ro lease-ia-ta?
| -> ../../dhcpv6-client/client-if/ia-ta/ia-id
| {temporary-address}?
+--ro lease-ia-pd?
-> ../../dhcpv6-client/client-if/ia-pd/ia-id
{prefix-delegation}?
Figure 3: DHCPv6 Client Data Module Structure Figure 3: DHCPv6 Client Data Module Structure
Descriptions of important nodes: Descriptions of important nodes:
* enabled: Globally enables/disables all DHCPv6 client functions. * enabled: Globally enables/disables all DHCPv6 client functions.
* dhcpv6-client: This container holds the client's DHCPv6 specific * dhcpv6-client: This container holds the client's DHCPv6 specific
configuration. configuration.
skipping to change at page 19, line 11 skipping to change at page 19, line 25
* client-configured-options: Holds configuration parameters for * client-configured-options: Holds configuration parameters for
DHCPv6 options which can be sent by the client. The initial set DHCPv6 options which can be sent by the client. The initial set
of applicable option definitions are defined here and additional of applicable option definitions are defined here and additional
options that are also relevant to the relay and/or server are options that are also relevant to the relay and/or server are
imported from the 'ietf-dhcpv6-common' module. Where needed, imported from the 'ietf-dhcpv6-common' module. Where needed,
other DHCPv6 option modules can be augmented as they are defined. other DHCPv6 option modules can be augmented as they are defined.
* ia-na, ia-ta, ia-pd: Contains configuration nodes relevant for * ia-na, ia-ta, ia-pd: Contains configuration nodes relevant for
requesting one or more of each of the lease types. Read-only requesting one or more of each of the lease types. Read-only
nodes related to the active leases for each type are also located nodes related to the active leases for each type are also located
here. As prefix delegation is not supported by all DHCPv6 client here. As these lease types may not be supported by all DHCPv6
implementations, it is enabled with a feature statement. client implementations, they are enabled via individual feature
statements. Stateless DHCP ([RFC8415] Section 6.1) is configured
when all address and prefix features are disabled.
Information about notifications: Information about notifications:
* invalid-ia-detected: Raised when the identity association of the * invalid-ia-detected: Raised when the identity association of the
client can be proved to be invalid. Possible conditions include: client can be proved to be invalid. Possible conditions include:
duplicated address, illegal address, etc. duplicated address, illegal address, etc.
* retransmission-failed: Raised when the retransmission mechanism * retransmission-failed: Raised when the retransmission mechanism
defined in [RFC8415] has failed. defined in [RFC8415] has failed.
3. DHCPv6 YANG Modules 3. DHCPv6 YANG Modules
3.1. DHCPv6 Server YANG Module 3.1. DHCPv6 Server YANG Module
This module imports typedefs from [RFC6991], [RFC8343]. This module imports typedefs from [RFC6991], [RFC8343].
<CODE BEGINS> file "ietf-dhcpv6-server@2021-06-14.yang" <CODE BEGINS> file "ietf-dhcpv6-server@2021-07-02.yang"
module ietf-dhcpv6-server { module ietf-dhcpv6-server {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-server"; namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-server";
prefix "dhc6-srv"; prefix "dhc6-srv";
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
skipping to change at page 20, line 17 skipping to change at page 20, line 31
import ietf-netconf-acm { import ietf-netconf-acm {
prefix nacm; prefix nacm;
reference reference
"RFC 8341: Network Configuration Access Control Model"; "RFC 8341: Network Configuration Access Control Model";
} }
organization organization
"IETF DHC (Dynamic Host Configuration) Working Group"; "IETF DHC (Dynamic Host Configuration) Working Group";
contact contact
"WG Web: <http://datatracker.ietf.org/wg/dhc/> "WG Web: <https://datatracker.ietf.org/wg/dhc/>
WG List: <mailto:dhcwg@ietf.org> WG List: <mailto:dhcwg@ietf.org>
Author: Yong Cui <yong@csnet1.cs.tsinghua.edu.cn> Author: Yong Cui <yong@csnet1.cs.tsinghua.edu.cn>
Author: Linhui Sun <lh.sunlinh@gmail.com> Author: Linhui Sun <lh.sunlinh@gmail.com>
Editor: Ian Farrer <ian.farrer@telekom.de> Editor: Ian Farrer <ian.farrer@telekom.de>
Author: Sladjana Zeichlin <sladjana.zechlin@telekom.de> Author: Sladjana Zeichlin <sladjana.zechlin@telekom.de>
Author: Zihao He <hezihao9512@gmail.com> Author: Zihao He <hezihao9512@gmail.com>
Author: Michal Nowikowski <godfryd@isc.org>"; Author: Michal Nowikowski <godfryd@isc.org>";
description description
"This YANG module defines components for the configuration "This YANG module defines components for the configuration
and management of DHCPv6 servers. and management of DHCPv6 servers.
Copyright (c) 2021 IETF Trust and the persons identified as Copyright (c) 2021 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2021-06-14 { revision 2021-07-02 {
description description
"Initial Revision."; "Initial Revision.";
reference reference
"XXXX: YANG Data Model for DHCPv6 Configuration"; "XXXX: YANG Data Model for DHCPv6 Configuration";
} }
/* /*
* Features * Features
*/ */
skipping to change at page 23, line 36 skipping to change at page 24, line 4
} }
leaf lease-t2 { leaf lease-t2 {
type dhc6:timer-seconds32; type dhc6:timer-seconds32;
description description
"The time interval after which the client should contact "The time interval after which the client should contact
any available server to extend the lifetimes of the any available server to extend the lifetimes of the
addresses assigned to the IA_PD."; addresses assigned to the IA_PD.";
reference "RFC 8415: Dynamic Host Configuration Protocol for reference "RFC 8415: Dynamic Host Configuration Protocol for
IPv6 (DHCPv6), Section 4.2"; IPv6 (DHCPv6), Section 4.2";
} }
uses dhc6:status;
} }
grouping message-stats { grouping message-stats {
description description
"Counters for DHCPv6 messages."; "Counters for DHCPv6 messages.";
leaf solicit-count { leaf solicit-count {
type uint32; type uint32;
config "false"; config "false";
description description
"Number of Solicit (1) messages received."; "Number of Solicit (1) messages received.";
skipping to change at page 28, line 32 skipping to change at page 28, line 49
} }
leaf description { leaf description {
type string; type string;
description description
"An optional field for storing additional information "An optional field for storing additional information
relevant to the option set."; relevant to the option set.";
} }
uses preference-option-group; uses preference-option-group;
uses dhc6:auth-option-group; uses dhc6:auth-option-group;
uses server-unicast-option-group; uses server-unicast-option-group;
uses dhc6:status-code-option-group;
uses dhc6:rapid-commit-option-group; uses dhc6:rapid-commit-option-group;
uses dhc6:vendor-specific-information-option-group; uses dhc6:vendor-specific-information-option-group;
uses reconfigure-message-option-group; uses reconfigure-message-option-group;
uses dhc6:reconfigure-accept-option-group; uses dhc6:reconfigure-accept-option-group;
uses info-refresh-time-option-group; uses info-refresh-time-option-group;
uses sol-max-rt-option-group; uses sol-max-rt-option-group;
uses inf-max-rt-option-group; uses inf-max-rt-option-group;
} }
} }
skipping to change at page 33, line 36 skipping to change at page 34, line 4
description description
"List of active prefix leases."; "List of active prefix leases.";
leaf leased-prefix { leaf leased-prefix {
type inet:ipv6-prefix; type inet:ipv6-prefix;
description description
"Active leased prefix entry."; "Active leased prefix entry.";
} }
uses lease-information; uses lease-information;
} }
} }
} }
} }
} }
uses message-stats; uses message-stats;
} }
} }
/* /*
* RPCs
*/
rpc delete-address-lease {
nacm:default-deny-all;
description
"Deletes a client's active address lease from the
server's lease database. Note this will not cause the address
to be revoked from the client, and the lease may be refreshed
or renewed by the client.";
input {
leaf lease-address-to-delete {
type leafref {
path "../../dhcpv6-server/network-ranges/network-range" +
"/address-pools/address-pool/active-leases" +
"/active-lease/leased-address";
}
mandatory true;
description
"IPv6 address of an active lease that will be
deleted from the server.";
}
}
output {
leaf return-message {
type string;
description
"Response message from the server.";
}
}
}
rpc delete-prefix-lease {
nacm:default-deny-all;
if-feature prefix-delegation;
description
"Deletes a client's active prefix lease from the
server's lease database. Note, this will not cause the prefix
to be revoked from the client, and the lease may be refreshed
or renewed by the client.";
input {
leaf lease-prefix-to-delete {
type leafref {
path "../../dhcpv6-server/network-ranges/network-range" +
"/prefix-pools/prefix-pool/active-leases/active-lease" +
"/leased-prefix";
}
mandatory true;
description
"IPv6 prefix of an active lease that will be deleted
from the server.";
}
}
output {
leaf return-message {
type string;
description
"Response message from the server.";
}
}
}
/*
* Notifications * Notifications
*/ */
notification address-pool-utilization-threshold-exceeded { notification address-pool-utilization-threshold-exceeded {
description description
"Notification sent when the address pool "Notification sent when the address pool
utilization exceeds the threshold configured in utilization exceeds the threshold configured in
max-address-utilization."; max-address-utilization.";
leaf pool-id { leaf pool-id {
type leafref { type leafref {
path "/dhcpv6-server/network-ranges/network-range/" + path "../../dhcpv6-server/network-ranges/network-range/" +
"address-pools/address-pool/pool-id"; "address-pools/address-pool/pool-id";
} }
mandatory true; mandatory true;
description description
"Leafref to the address pool that the notification "Leafref to the address pool that the notification
is being generated for."; is being generated for.";
} }
leaf total-pool-addresses { leaf total-pool-addresses {
type uint64; type uint64;
mandatory true; mandatory true;
skipping to change at page 34, line 48 skipping to change at page 36, line 30
} }
notification prefix-pool-utilization-threshold-exceeded { notification prefix-pool-utilization-threshold-exceeded {
if-feature prefix-delegation; if-feature prefix-delegation;
description description
"Notification sent when the prefix pool utilization "Notification sent when the prefix pool utilization
exceeds the threshold configured in exceeds the threshold configured in
max-pd-space-utilization."; max-pd-space-utilization.";
leaf pool-id { leaf pool-id {
type leafref { type leafref {
path "/dhcpv6-server/network-ranges/network-range/" + path "../../dhcpv6-server/network-ranges/network-range/" +
"prefix-pools/prefix-pool/pool-id"; "prefix-pools/prefix-pool/pool-id";
} }
mandatory true; mandatory true;
description description
"Unique identifier for the pool."; "Unique identifier for the pool.";
} }
leaf total-pool-prefixes { leaf total-pool-prefixes {
type uint64; type uint64;
mandatory true; mandatory true;
description description
skipping to change at page 37, line 21 skipping to change at page 39, line 4
} }
case declined-prefix { case declined-prefix {
leaf prefix { leaf prefix {
type inet:ipv6-prefix; type inet:ipv6-prefix;
description description
"Prefix that has been declined."; "Prefix that has been declined.";
} }
} }
} }
} }
} }
notification non-success-code-sent { notification non-success-code-sent {
description description
"Notification sent when the server responded "Notification sent when the server responded
to a client with non-success status code."; to a client with non-success status code.";
leaf status-code {
type uint16;
mandatory true;
description
"Status code returned to the client.";
}
leaf duid { leaf duid {
type dhc6:duid; type dhc6:duid;
description description
"Client DUID."; "Client DUID.";
} }
} uses dhc6:status;
/*
* RPCs
*/
rpc delete-address-lease {
nacm:default-deny-all;
description
"Deletes a client's active address lease from the
server's lease database. Note this will not cause the address
to be revoked from the client, and the lease may be refreshed
or renewed by the client.";
input {
leaf lease-address-to-delete {
type leafref {
path "../../dhcpv6-server/network-ranges/network-range" +
"/address-pools/address-pool/active-leases" +
"/active-lease/leased-address";
}
mandatory true;
description
"IPv6 address of an active lease that will be
deleted from the server.";
}
}
output {
leaf return-message {
type string;
description
"Response message from the server.";
}
}
}
rpc delete-prefix-lease {
nacm:default-deny-all;
if-feature prefix-delegation;
description
"Deletes a client's active prefix lease from the
server's lease database. Note, this will not cause the prefix
to be revoked from the client, and the lease may be refreshed
or renewed by the client.";
input {
leaf lease-prefix-to-delete {
type leafref {
path "../../dhcpv6-server/network-ranges/network-range" +
"/prefix-pools/prefix-pool/active-leases/active-lease" +
"/leased-prefix";
}
mandatory true;
description
"IPv6 prefix of an active lease that will be deleted
from the server.";
}
}
output {
leaf return-message {
type string;
description
"Response message from the server.";
}
}
} }
} }
<CODE ENDS> <CODE ENDS>
3.2. DHCPv6 Relay YANG Module 3.2. DHCPv6 Relay YANG Module
This module imports typedefs from [RFC6991], [RFC8343]. This module imports typedefs from [RFC6991], [RFC8343].
<CODE BEGINS> file "ietf-dhcpv6-relay@2021-06-14.yang" <CODE BEGINS> file "ietf-dhcpv6-relay@2021-07-02.yang"
module ietf-dhcpv6-relay { module ietf-dhcpv6-relay {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-relay"; namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-relay";
prefix "dhc6-rly"; prefix "dhc6-rly";
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
skipping to change at page 40, line 6 skipping to change at page 40, line 17
import ietf-netconf-acm { import ietf-netconf-acm {
prefix nacm; prefix nacm;
reference reference
"RFC 8341: Network Configuration Access Control Model"; "RFC 8341: Network Configuration Access Control Model";
} }
organization organization
"IETF DHC (Dynamic Host Configuration) Working Group"; "IETF DHC (Dynamic Host Configuration) Working Group";
contact contact
"WG Web: <http://datatracker.ietf.org/wg/dhc/> "WG Web: <https://datatracker.ietf.org/wg/dhc/>
WG List: <mailto:dhcwg@ietf.org> WG List: <mailto:dhcwg@ietf.org>
Author: Yong Cui <yong@csnet1.cs.tsinghua.edu.cn> Author: Yong Cui <yong@csnet1.cs.tsinghua.edu.cn>
Author: Linhui Sun <lh.sunlinh@gmail.com> Author: Linhui Sun <lh.sunlinh@gmail.com>
Editor: Ian Farrer <ian.farrer@telekom.de> Editor: Ian Farrer <ian.farrer@telekom.de>
Author: Sladjana Zeichlin <sladjana.zechlin@telekom.de> Author: Sladjana Zeichlin <sladjana.zechlin@telekom.de>
Author: Zihao He <hezihao9512@gmail.com> Author: Zihao He <hezihao9512@gmail.com>
Author: Michal Nowikowski <godfryd@isc.org>"; Author: Michal Nowikowski <godfryd@isc.org>";
description description
"This YANG module defines components necessary for the "This YANG module defines components necessary for the
configuration and management of DHCPv6 relays. configuration and management of DHCPv6 relays.
Copyright (c) 2021 IETF Trust and the persons identified as Copyright (c) 2021 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2021-06-14 { revision 2021-07-02 {
description description
"Initial Revision."; "Initial Revision.";
reference reference
"XXXX: YANG Data Model for DHCPv6 Configuration"; "XXXX: YANG Data Model for DHCPv6 Configuration";
} }
/* /*
* Features * Features
*/ */
skipping to change at page 46, line 12 skipping to change at page 46, line 24
description description
"An address that may be used by the server to identify "An address that may be used by the server to identify
the link on which the client is located."; the link on which the client is located.";
} }
container relay-options { container relay-options {
description description
"Definitions for DHCPv6 options that can be sent "Definitions for DHCPv6 options that can be sent
by the relay are augmented to this location from other by the relay are augmented to this location from other
YANG modules as required."; YANG modules as required.";
uses dhc6:auth-option-group; uses dhc6:auth-option-group;
uses dhc6:status-code-option-group;
uses interface-id-option-group; uses interface-id-option-group;
} }
uses message-statistics; uses message-statistics;
container prefix-delegation { container prefix-delegation {
if-feature prefix-delegation; if-feature prefix-delegation;
presence "Enables prefix delegation for this interface."; presence "Enables prefix delegation for this interface.";
description description
"Controls and holds state information for prefix "Controls and holds state information for prefix
delegation."; delegation.";
uses pd-lease-state; uses pd-lease-state;
} }
} }
uses global-statistics; uses global-statistics;
} }
/* /*
* Notifications
*/
notification relay-event {
description
"DHCPv6 relay event notifications.";
container topology-change {
description
"Raised if the entry for an interface with DHCPv6
related configuration or state is removed from
if:interface-refs.";
leaf relay-if-name {
type leafref {
path "/dhcpv6-relay/relay-if/if-name";
}
description
"Name of the interface that has been removed.";
}
leaf last-ipv6-addr {
type inet:ipv6-address;
description
"Last IPv6 address configured on the interface.";
}
}
}
/*
* RPCs * RPCs
*/ */
rpc clear-prefix-entry { rpc clear-prefix-entry {
nacm:default-deny-all; nacm:default-deny-all;
if-feature prefix-delegation; if-feature prefix-delegation;
description description
"Clears an entry for an active delegated prefix "Clears an entry for an active delegated prefix
from the relay."; from the relay.";
reference "RFC8987: DHCPv6 Prefix Delegating Relay Requirements, reference "RFC8987: DHCPv6 Prefix Delegating Relay Requirements,
Section 4.4"; Section 4.4";
input { input {
leaf lease-prefix { leaf lease-prefix {
type leafref { type leafref {
path "/dhcpv6-relay/relay-if/prefix-delegation" + path "../../dhcpv6-relay/relay-if/prefix-delegation" +
"/pd-leases/ia-pd-prefix"; "/pd-leases/ia-pd-prefix";
} }
mandatory true; mandatory true;
description description
"IPv6 prefix of an active lease entry that will "IPv6 prefix of an active lease entry that will
be deleted from the relay."; be deleted from the relay.";
} }
} }
output { output {
leaf return-message { leaf return-message {
skipping to change at page 48, line 42 skipping to change at page 48, line 27
} }
} }
output { output {
leaf return-message { leaf return-message {
type string; type string;
description description
"Response message from the relay."; "Response message from the relay.";
} }
} }
} }
/*
* Notifications
*/
notification relay-event {
description
"DHCPv6 relay event notifications.";
container topology-change {
description
"Raised if the entry for an interface with DHCPv6
related configuration or state is removed from
if:interface-refs.";
leaf relay-if-name {
type leafref {
path "../../../dhcpv6-relay/relay-if/if-name";
}
description
"Name of the interface that has been removed.";
}
leaf last-ipv6-addr {
type inet:ipv6-address;
description
"Last IPv6 address configured on the interface.";
}
}
}
} }
<CODE ENDS> <CODE ENDS>
3.3. DHCPv6 Client YANG Module 3.3. DHCPv6 Client YANG Module
This module imports typedefs from [RFC6991], [RFC8343]. This module imports typedefs from [RFC6991], [RFC8343].
<CODE BEGINS> file "ietf-dhcpv6-client@2021-06-14.yang" <CODE BEGINS> file "ietf-dhcpv6-client@2021-07-02.yang"
module ietf-dhcpv6-client { module ietf-dhcpv6-client {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-client"; namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-client";
prefix "dhc6-clnt"; prefix "dhc6-clnt";
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
skipping to change at page 49, line 40 skipping to change at page 49, line 49
import ietf-interfaces { import ietf-interfaces {
prefix if; prefix if;
reference reference
"RFC 8343: A YANG Data Model for Interface Management"; "RFC 8343: A YANG Data Model for Interface Management";
} }
organization organization
"IETF DHC (Dynamic Host Configuration) Working Group"; "IETF DHC (Dynamic Host Configuration) Working Group";
contact contact
"WG Web: <http://datatracker.ietf.org/wg/dhc/> "WG Web: <https://datatracker.ietf.org/wg/dhc/>
WG List: <mailto:dhcwg@ietf.org> WG List: <mailto:dhcwg@ietf.org>
Author: Yong Cui <yong@csnet1.cs.tsinghua.edu.cn> Author: Yong Cui <yong@csnet1.cs.tsinghua.edu.cn>
Author: Linhui Sun <lh.sunlinh@gmail.com> Author: Linhui Sun <lh.sunlinh@gmail.com>
Editor: Ian Farrer <ian.farrer@telekom.de> Editor: Ian Farrer <ian.farrer@telekom.de>
Author: Sladjana Zeichlin <sladjana.zechlin@telekom.de> Author: Sladjana Zeichlin <sladjana.zechlin@telekom.de>
Author: Zihao He <hezihao9512@gmail.com> Author: Zihao He <hezihao9512@gmail.com>
Author: Michal Nowikowski <godfryd@isc.org>"; Author: Michal Nowikowski <godfryd@isc.org>";
description description
"This YANG module defines components necessary for the "This YANG module defines components necessary for the
configuration and management of DHCPv6 clients. configuration and management of DHCPv6 clients.
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED',
'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document
are to be interpreted as described in BCP 14 (RFC 2119) are to be interpreted as described in BCP 14 (RFC 2119)
(RFC 8174) when, and only when, they appear in all (RFC 8174) when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
Copyright (c) 2021 IETF Trust and the persons identified as Copyright (c) 2021 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2021-06-14 { revision 2021-07-02 {
description description
"Initial Revision."; "Initial Revision.";
reference reference
"XXXX: YANG Data Model for DHCPv6 Configuration"; "XXXX: YANG Data Model for DHCPv6 Configuration";
} }
/* /*
* Features * Features
*/ */
feature non-temporary-address {
description
"Denotes that the client supports DHCPv6 non-temporary address
allocations.";
reference "RFC 8415: Dynamic Host Configuration Protocol for
IPv6 (DHCPv6), Section 6.2";
}
feature prefix-delegation { feature prefix-delegation {
description description
"Denotes that the client implements DHCPv6 prefix "Denotes that the client implements DHCPv6 prefix
delegation."; delegation.";
reference "RFC 8415: Dynamic Host Configuration Protocol for reference "RFC 8415: Dynamic Host Configuration Protocol for
IPv6 (DHCPv6), Section 6.3"; IPv6 (DHCPv6), Section 6.3";
} }
feature temporary-address {
description
"Denotes that the client supports DHCPv6 temporary address
allocations.";
reference "RFC 8415: Dynamic Host Configuration Protocol for
IPv6 (DHCPv6), Section 6.5";
}
/* /*
* Groupings * Groupings
*/ */
grouping message-statistics { grouping message-statistics {
description description
"Counters for DHCPv6 messages."; "Counters for DHCPv6 messages.";
leaf solicit-count { leaf solicit-count {
type uint32; type uint32;
config "false"; config "false";
skipping to change at page 52, line 23 skipping to change at page 52, line 48
} }
leaf information-request-count { leaf information-request-count {
type uint32; type uint32;
config "false"; config "false";
description description
"Number of Information-request (11) messages "Number of Information-request (11) messages
sent."; sent.";
} }
} }
grouping lease-state {
description
"Information about the active IA_NA lease.";
leaf preferred-lifetime {
type dhc6:timer-seconds32;
description
"The preferred lifetime for the leased address
expressed in seconds.";
}
leaf valid-lifetime {
type dhc6:timer-seconds32;
description
"The valid lifetime for the leased address expressed
in seconds.";
}
leaf allocation-time {
type yang:date-and-time;
description
"Time and date that the address was first leased.";
}
leaf last-renew-rebind {
type yang:date-and-time;
description
"Time of the last successful renew or rebind of the
leased address.";
}
leaf server-duid {
type dhc6:duid;
description
"DUID of the leasing server.";
}
uses dhc6:status;
}
grouping option-request-option-group { grouping option-request-option-group {
description description
"OPTION_ORO (6) Option Request Option. A client MUST include "OPTION_ORO (6) Option Request Option. A client MUST include
an Option Request option in a Solicit, Request, Renew, an Option Request option in a Solicit, Request, Renew,
Rebind, or Information-request message to inform the server Rebind, or Information-request message to inform the server
about options the client wants the server to send to the about options the client wants the server to send to the
client."; client.";
reference "RFC 8415: Dynamic Host Configuration Protocol for reference "RFC 8415: Dynamic Host Configuration Protocol for
IPv6 (DHCPv6), Section 21.7"; IPv6 (DHCPv6), Section 21.7";
container option-request-option { container option-request-option {
description description
"OPTION_ORO (6) Option Request Option container."; "OPTION_ORO (6) Option Request Option container.";
leaf-list oro-option { leaf-list oro-option {
type uint16; type uint16;
description description
"List of options that the client is requesting, "List of options that the client is requesting,
identified by option code"; identified by option code";
} }
} }
} }
grouping user-class-option-group { grouping user-class-option-group {
description description
"OPTION_USER_CLASS (15) User Class Option"; "OPTION_USER_CLASS (15) User Class Option";
reference "RFC 8415: Dynamic Host Configuration Protocol reference "RFC 8415: Dynamic Host Configuration Protocol
for IPv6 (DHCPv6), Section 21.15"; for IPv6 (DHCPv6), Section 21.15";
container user-class-option { container user-class-option {
presence "Configures the option"; presence "Configures the option";
skipping to change at page 55, line 17 skipping to change at page 56, line 28
reference "RFC 8415: Dynamic Host Configuration Protocol for reference "RFC 8415: Dynamic Host Configuration Protocol for
IPv6 (DHCPv6), Section 11"; IPv6 (DHCPv6), Section 11";
} }
container client-configured-options { container client-configured-options {
description description
"Definitions for DHCPv6 options that can be be sent by "Definitions for DHCPv6 options that can be be sent by
the client. Additional option definitions can be the client. Additional option definitions can be
augmented to this location from other YANG modules as augmented to this location from other YANG modules as
required."; required.";
uses option-request-option-group; uses option-request-option-group;
uses dhc6:status-code-option-group;
uses dhc6:rapid-commit-option-group; uses dhc6:rapid-commit-option-group;
uses user-class-option-group; uses user-class-option-group;
uses vendor-class-option-group; uses vendor-class-option-group;
uses dhc6:vendor-specific-information-option-group; uses dhc6:vendor-specific-information-option-group;
uses dhc6:reconfigure-accept-option-group; uses dhc6:reconfigure-accept-option-group;
} }
list ia-na { list ia-na {
if-feature non-temporary-address;
key ia-id; key ia-id;
description description
"Configuration relevant for an IA_NA (Identity Association "Configuration relevant for an IA_NA (Identity Association
for Non-temporary Addresses)."; for Non-temporary Addresses).";
reference "RFC 8415: Dynamic Host Configuration Protocol reference "RFC 8415: Dynamic Host Configuration Protocol
for IPv6 (DHCPv6), Section 13.1"; for IPv6 (DHCPv6), Section 13.1";
leaf ia-id { leaf ia-id {
type uint32; type uint32;
description description
"A unique identifier for this IA_NA."; "A unique identifier for this IA_NA.";
reference "RFC 8415: Dynamic Host Configuration Protocol reference "RFC 8415: Dynamic Host Configuration Protocol
for IPv6 (DHCPv6), Section 12"; for IPv6 (DHCPv6), Section 12";
} }
container ia-na-options { container ia-na-options {
description description
"An augmentation point for additional options "An augmentation point for additional options
that the client may send in the IA_NA-options field that the client may send in the IA_NA-options field
of OPTION_IA_NA."; of OPTION_IA_NA.";
} }
container lease-state { container lease-state {
config "false"; config false;
description description
"Information about the active IA_NA lease."; "Information about the active IA_NA lease.";
leaf ia-na-address { leaf ia-na-address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Address that is currently leased."; "Address that is currently leased.";
}
leaf preferred-lifetime {
type dhc6:timer-seconds32;
description
"The preferred lifetime for the leased address
expressed in seconds.";
}
leaf valid-lifetime {
type dhc6:timer-seconds32;
description
"The valid lifetime for the leased address expressed
in seconds.";
} }
leaf lease-t1 { leaf lease-t1 {
type dhc6:timer-seconds32; type dhc6:timer-seconds32;
description description
"The time interval after which the client should "The time interval after which the client should
contact the server from which the addresses in the contact the server from which the addresses in the
IA_NA were obtained to extend the lifetimes of the IA_NA were obtained to extend the lifetimes of the
addresses assigned to the IA_NA."; addresses assigned to the IA_NA.";
} }
leaf lease-t2 { leaf lease-t2 {
type dhc6:timer-seconds32; type dhc6:timer-seconds32;
description description
"The time interval after which the client should "The time interval after which the client should
contact any available server to extend the lifetimes contact any available server to extend the lifetimes
of the addresses assigned to the IA_NA."; of the addresses assigned to the IA_NA.";
} }
leaf allocation-time { uses lease-state;
type yang:date-and-time;
description
"Time and date that the address was first leased.";
}
leaf last-renew-rebind {
type yang:date-and-time;
description
"Time of the last successful renew or rebind of the
leased address.";
}
leaf server-duid {
type dhc6:duid;
description
"DUID of the leasing server.";
}
} }
} }
list ia-ta { list ia-ta {
if-feature temporary-address;
key ia-id; key ia-id;
description description
"Configuration relevant for an IA_TA (Identity Association "Configuration relevant for an IA_TA (Identity Association
for Temporary Addresses)."; for Temporary Addresses).";
reference "RFC 8415: Dynamic Host Configuration Protocol for reference "RFC 8415: Dynamic Host Configuration Protocol for
IPv6 (DHCPv6), Section 13.2"; IPv6 (DHCPv6), Section 13.2";
leaf ia-id { leaf ia-id {
type uint32; type uint32;
description description
"The unique identifier for this IA_TA."; "The unique identifier for this IA_TA.";
reference "RFC 8415: Dynamic Host Configuration Protocol reference "RFC 8415: Dynamic Host Configuration Protocol
for IPv6 (DHCPv6), Section 12"; for IPv6 (DHCPv6), Section 12";
} }
container ia-ta-options { container ia-ta-options {
description description
"An augmentation point for additional options "An augmentation point for additional options
that the client may send in the IA_TA-options field that the client may send in the IA_TA-options field
of OPTION_IA_TA."; of OPTION_IA_TA.";
} }
container lease-state { container lease-state {
config "false"; config "false";
description description
"Information about an active IA_TA lease."; "Information about an active IA_TA lease.";
leaf ia-ta-address { leaf ia-ta-address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Address that is currently leased."; "Address that is currently leased.";
} }
leaf preferred-lifetime { uses lease-state;
type dhc6:timer-seconds32;
description
"The preferred lifetime for the leased address
expressed in seconds.";
}
leaf valid-lifetime {
type dhc6:timer-seconds32;
description
"The valid lifetime for the leased address expressed
in seconds.";
}
leaf allocation-time {
type yang:date-and-time;
description
"Time and date that the address was first leased.";
}
leaf last-renew-rebind {
type yang:date-and-time;
description
"Time of the last successful renew or rebind of the
address.";
}
leaf server-duid {
type dhc6:duid;
description
"DUID of the leasing server.";
}
} }
} }
list ia-pd { list ia-pd {
if-feature prefix-delegation; if-feature prefix-delegation;
key ia-id; key ia-id;
description description
"Configuration relevant for an IA_PD (Identity Association "Configuration relevant for an IA_PD (Identity Association
for Prefix Delegation)."; for Prefix Delegation).";
reference "RFC 8415: Dynamic Host Configuration Protocol for reference "RFC 8415: Dynamic Host Configuration Protocol for
IPv6 (DHCPv6), Section 13.3"; IPv6 (DHCPv6), Section 13.3";
skipping to change at page 58, line 43 skipping to change at page 58, line 49
} }
container lease-state { container lease-state {
config "false"; config "false";
description description
"Information about an active IA_PD delegated prefix."; "Information about an active IA_PD delegated prefix.";
leaf ia-pd-prefix { leaf ia-pd-prefix {
type inet:ipv6-prefix; type inet:ipv6-prefix;
description description
"Delegated prefix that is currently leased."; "Delegated prefix that is currently leased.";
} }
leaf preferred-lifetime {
type dhc6:timer-seconds32;
description
"The preferred lifetime for the leased prefix expressed
in units of seconds.";
}
leaf valid-lifetime {
type dhc6:timer-seconds32;
description
"The valid lifetime for the leased prefix expressed
in units of seconds.";
}
leaf lease-t1 { leaf lease-t1 {
type dhc6:timer-seconds32; type dhc6:timer-seconds32;
description description
"The time interval after which the client should "The time interval after which the client should
contact the server from which the addresses in the contact the server from which the addresses in the
IA_NA were obtained to extend the lifetimes of the IA_NA were obtained to extend the lifetimes of the
addresses assigned to the IA_PD."; addresses assigned to the IA_PD.";
} }
leaf lease-t2 { leaf lease-t2 {
type dhc6:timer-seconds32; type dhc6:timer-seconds32;
description description
"The time interval after which the client should "The time interval after which the client should
contact any available server to extend the lifetimes contact any available server to extend the lifetimes
of the addresses assigned to the IA_PD."; of the addresses assigned to the IA_PD.";
} }
leaf allocation-time { uses lease-state;
type yang:date-and-time;
description
"Time and date that the prefix was first leased.";
}
leaf last-renew-rebind {
type yang:date-and-time;
description
"Time of the last successful renew or rebind of the
delegated prefix.";
}
leaf server-duid {
type dhc6:duid;
description
"DUID of the delegating server.";
}
} }
} }
uses message-statistics; uses message-statistics;
} }
} }
/* /*
* Notifications * Notifications
*/ */
notification invalid-ia-address-detected { notification invalid-ia-address-detected {
if-feature "non-temporary-address or temporary-address";
description description
"Notification sent when an address received "Notification sent when an address received
in an identity association option is determined invalid. in an identity association option is determined invalid.
Possible conditions include a duplicate or otherwise illegal Possible conditions include a duplicate or otherwise illegal
address."; address.";
reference "RFC 8415: Dynamic Host Configuration Protocol for reference "RFC 8415: Dynamic Host Configuration Protocol for
IPv6 (DHCPv6), Section 18.2.10.1"; IPv6 (DHCPv6), Section 18.2.10.1";
leaf ia-id { leaf ia-id {
type uint32; type uint32;
mandatory true; mandatory true;
skipping to change at page 60, line 44 skipping to change at page 60, line 23
description description
"The value of the preferred-lifetime field in "The value of the preferred-lifetime field in
OPTION_IAADDR."; OPTION_IAADDR.";
} }
leaf valid-lifetime { leaf valid-lifetime {
type uint32; type uint32;
description description
"The value of the valid-lifetime field in OPTION_IAADDR."; "The value of the valid-lifetime field in OPTION_IAADDR.";
} }
leaf ia-options { leaf ia-options {
type binary; type binary;
description description
"A copy of the contents of the IAaddr-options field."; "A copy of the contents of the IAaddr-options field.";
} }
leaf description { leaf description {
type string; type string;
description description
"Description of the invalid Identity Association (IA) "Description of the invalid Identity Association (IA)
detection error."; detection error.";
} }
} }
notification transmission-failed { notification transmission-failed {
description description
"Notification sent when the transmission or retransmission "Notification sent when the transmission or retransmission
of a message fails."; of a message fails.";
reference "RFC 8415: Dynamic Host Configuration Protocol for reference "RFC 8415: Dynamic Host Configuration Protocol for
IPv6 (DHCPv6), Section 7.6"; IPv6 (DHCPv6), Section 7.6";
leaf failure-type { leaf failure-type {
type enumeration { type enumeration {
enum "solicit-timeout" { enum "solicit-timeout" {
description description
"Max Solicit timeout value (SOL_MAX_RT) exceeded."; "Max Solicit timeout value (SOL_MAX_RT) exceeded.";
} }
enum "request-timeout" { enum "request-timeout" {
description description
"Max Request timeout value (REQ_MAX_RT) exceeded."; "Max Request timeout value (REQ_MAX_RT) exceeded.";
skipping to change at page 62, line 23 skipping to change at page 61, line 50
description description
"Information related to the failure, such as number of "Information related to the failure, such as number of
retries and timer values."; retries and timer values.";
} }
} }
notification unsuccessful-status-code { notification unsuccessful-status-code {
description description
"Notification sent when the client receives a message that "Notification sent when the client receives a message that
includes an unsuccessful Status Code option."; includes an unsuccessful Status Code option.";
reference "RFC 8415: Dynamic Host Configuration Protocol for reference "RFC 8415: Dynamic Host Configuration Protocol for
IPv6 (DHCPv6), Section 21.13"; IPv6 (DHCPv6), Section 21.13";
leaf status-code {
type uint16;
mandatory true;
description
"Unsuccessful status code received by a client.";
}
leaf server-duid { leaf server-duid {
type dhc6:duid; type dhc6:duid;
mandatory true; mandatory true;
description description
"DUID of the server sending the unsuccessful "DUID of the server sending the unsuccessful
error code."; error code.";
} }
uses dhc6:status;
} }
notification server-duid-changed { notification server-duid-changed {
if-feature "non-temporary-address or prefix-delegation or " +
"temporary-address";
description description
"Notification sent when the client receives a lease "Notification sent when the client receives a lease
from a server with different DUID to the one currently stored from a server with different DUID to the one currently stored
by the client, e.g., in response to a Rebind message."; by the client, e.g., in response to a Rebind message.";
reference "RFC 8415: Dynamic Host Configuration Protocol for reference "RFC 8415: Dynamic Host Configuration Protocol for
IPv6 (DHCPv6), Section 18.2.5"; IPv6 (DHCPv6), Section 18.2.5";
leaf new-server-duid { leaf new-server-duid {
type dhc6:duid; type dhc6:duid;
mandatory true; mandatory true;
description description
skipping to change at page 63, line 4 skipping to change at page 62, line 29
"Notification sent when the client receives a lease "Notification sent when the client receives a lease
from a server with different DUID to the one currently stored from a server with different DUID to the one currently stored
by the client, e.g., in response to a Rebind message."; by the client, e.g., in response to a Rebind message.";
reference "RFC 8415: Dynamic Host Configuration Protocol for reference "RFC 8415: Dynamic Host Configuration Protocol for
IPv6 (DHCPv6), Section 18.2.5"; IPv6 (DHCPv6), Section 18.2.5";
leaf new-server-duid { leaf new-server-duid {
type dhc6:duid; type dhc6:duid;
mandatory true; mandatory true;
description description
"DUID of the new server."; "DUID of the new server.";
} }
leaf previous-server-duid { leaf previous-server-duid {
type dhc6:duid; type dhc6:duid;
mandatory true; mandatory true;
description description
"DUID of the previous server."; "DUID of the previous server.";
} }
leaf lease-ia-na { leaf lease-ia-na {
if-feature non-temporary-address;
type leafref { type leafref {
path "/dhcpv6-client/client-if/ia-na/ia-id"; path "../../dhcpv6-client/client-if/ia-na/ia-id";
} }
description description
"Reference to the IA_NA lease."; "Reference to the IA_NA lease.";
} }
leaf lease-ia-ta { leaf lease-ia-ta {
if-feature temporary-address;
type leafref { type leafref {
path "/dhcpv6-client/client-if/ia-ta/ia-id"; path "../../dhcpv6-client/client-if/ia-ta/ia-id";
} }
description description
"Reference to the IA_TA lease."; "Reference to the IA_TA lease.";
} }
leaf lease-ia-pd { leaf lease-ia-pd {
if-feature prefix-delegation; if-feature prefix-delegation;
type leafref { type leafref {
path "/dhcpv6-client/client-if/ia-pd/ia-id"; path "../../dhcpv6-client/client-if/ia-pd/ia-id";
} }
description description
"Reference to the IA_PD lease."; "Reference to the IA_PD lease.";
} }
} }
} }
<CODE ENDS> <CODE ENDS>
3.4. DHCPv6 Common YANG Module 3.4. DHCPv6 Common YANG Module
This module imports typedefs from [RFC6991]. This module imports typedefs from [RFC6991].
<CODE BEGINS> file "ietf-dhcpv6-common@2021-06-14.yang" <CODE BEGINS> file "ietf-dhcpv6-common@2021-07-02.yang"
module ietf-dhcpv6-common { module ietf-dhcpv6-common {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-common"; namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-common";
prefix "dhc6"; prefix "dhc6";
organization organization
"IETF DHC (Dynamic Host Configuration) Working Group"; "IETF DHC (Dynamic Host Configuration) Working Group";
contact contact
"WG Web: <http://datatracker.ietf.org/wg/dhc/> "WG Web: <https://datatracker.ietf.org/wg/dhc/>
WG List: <mailto:dhcwg@ietf.org> WG List: <mailto:dhcwg@ietf.org>
Author: Yong Cui <yong@csnet1.cs.tsinghua.edu.cn> Author: Yong Cui <yong@csnet1.cs.tsinghua.edu.cn>
Author: Linhui Sun <lh.sunlinh@gmail.com> Author: Linhui Sun <lh.sunlinh@gmail.com>
Editor: Ian Farrer <ian.farrer@telekom.de> Editor: Ian Farrer <ian.farrer@telekom.de>
Author: Sladjana Zeichlin <sladjana.zechlin@telekom.de> Author: Sladjana Zeichlin <sladjana.zechlin@telekom.de>
Author: Zihao He <hezihao9512@gmail.com> Author: Zihao He <hezihao9512@gmail.com>
Author: Michal Nowikowski <godfryd@isc.org>"; Author: Michal Nowikowski <godfryd@isc.org>";
description description
"This YANG module defines common components used for the "This YANG module defines common components used for the
skipping to change at page 64, line 32 skipping to change at page 64, line 10
capitals, as shown here. capitals, as shown here.
Copyright (c) 2021 IETF Trust and the persons identified as Copyright (c) 2021 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2021-06-14 { revision 2021-07-02 {
description description
"Initial Revision."; "Initial Revision.";
reference reference
"XXXX: YANG Data Model for DHCPv6 Configuration"; "XXXX: YANG Data Model for DHCPv6 Configuration";
} }
typedef threshold { typedef threshold {
type uint8 { type uint8 {
range 1..100; range 1..100;
} }
skipping to change at page 66, line 25 skipping to change at page 65, line 50
+ '[0-9a-fA-F]{4,}'; + '[0-9a-fA-F]{4,}';
} }
description description
"DUID type 2, assigned by vendor based on Enterprise "DUID type 2, assigned by vendor based on Enterprise
Number (DUID-EN). This DUID consists of the 4-octet vendor's Number (DUID-EN). This DUID consists of the 4-octet vendor's
registered Private Enterprise Number as maintained by IANA registered Private Enterprise Number as maintained by IANA
followed by a unique identifier assigned by the vendor. For followed by a unique identifier assigned by the vendor. For
example: example:
+------+----------+------------------+ +------+----------+------------------+
| 0002 | 00000009 | 0CC084D303000912 | | 0002 | 00007ED9 | 0CC084D303000912 |
+------+----------+------------------+ +------+----------+------------------+
This example includes the 2-octet DUID type of 2 (0x02), This example includes the 2-octet DUID type of 2 (0x02),
4-octets for the Enterprise Number (0x09), followed by 4-octets for the Enterprise Number (0x7ED9), followed by
8-octets of identifier data (0x0CC084D303000912)."; 8-octets of identifier data (0x0CC084D303000912).";
reference "RFC 8415: Dynamic Host Configuration Protocol for reference "RFC 8415: Dynamic Host Configuration Protocol for
IPv6 (DHCPv6), Section 11.3 IPv6 (DHCPv6), Section 11.3
IANA 'Private Enterprise Numbers' registry. IANA 'Private Enterprise Numbers' registry.
<https://www.iana.org/assignments/enterprise-numbers>"; <https://www.iana.org/assignments/enterprise-numbers>";
} }
typedef duid-ll { typedef duid-ll {
type duid-base { type duid-base {
pattern '0003' pattern '0003'
skipping to change at page 68, line 30 skipping to change at page 68, line 6
"Represents the DUID and is neutral to the DUID's construction "Represents the DUID and is neutral to the DUID's construction
format."; format.";
reference "RFC 8415: Dynamic Host Configuration Protocol for reference "RFC 8415: Dynamic Host Configuration Protocol for
IPv6 (DHCPv6), Section 11"; IPv6 (DHCPv6), Section 11";
} }
/* /*
* Groupings * Groupings
*/ */
grouping status {
description
"Holds information about the most recent status code which
has been sent by the server or received by the client.";
reference "RFC 8415: Dynamic Host Configuration Protocol
for IPv6 (DHCPv6), Section 7.5.";
container status {
description
"Status code information, relating to the success or failure
of operations requested in messages.";
leaf code {
type uint16;
description
"The numeric code for the status encoded in this option.
See the Status Codes registry at
<https://www.iana.org/assignments/dhcpv6-parameters>
for the current list of status codes.";
}
leaf message {
type string;
description
"A UTF-8 encoded text string suitable for display to an
end user. It MUST NOT be null-terminated.";
}
}
}
grouping auth-option-group { grouping auth-option-group {
description description
"OPTION_AUTH (11) Authentication Option."; "OPTION_AUTH (11) Authentication Option.";
reference "RFC 8415: Dynamic Host Configuration Protocol reference "RFC 8415: Dynamic Host Configuration Protocol
for IPv6 (DHCPv6), Section 21.11 for IPv6 (DHCPv6), Section 21.11
IANA 'Dynamic Host Configuration Protocol (DHCP) Authentication IANA 'Dynamic Host Configuration Protocol (DHCP) Authentication
Option Name Spaces' registry. Option Name Spaces' registry.
<https://www.iana.org/assignments/auth-namespaces>"; <https://www.iana.org/assignments/auth-namespaces>";
container auth-option { container auth-option {
skipping to change at page 79, line 27 skipping to change at page 79, line 27
<option-set-id>1</option-set-id> <option-set-id>1</option-set-id>
<valid-lifetime>604800</valid-lifetime> <valid-lifetime>604800</valid-lifetime>
<renew-time>86400</renew-time> <renew-time>86400</renew-time>
<rebind-time>172800</rebind-time> <rebind-time>172800</rebind-time>
<preferred-lifetime>345600</preferred-lifetime> <preferred-lifetime>345600</preferred-lifetime>
</host-reservation> </host-reservation>
</host-reservations> </host-reservations>
</address-pool> </address-pool>
</address-pools> </address-pools>
Figure 5: Host Reservation Configuration Example XML Figure 5: Server Host Reservation Configuration Example XML
The following example shows configuration for a network range and The following example shows configuration for a network range and
pool to be used for delegating prefixes to clients. In this example, pool to be used for delegating prefixes to clients. In this example,
each client will receive a /56 prefix. each client will receive a /56 prefix.
The 'max-pd-space-utiliation' is set to 80 so that a 'prefix-pool- The 'max-pd-space-utiliation' is set to 80 so that a 'prefix-pool-
utilization-threshold-exceeded' notification will be raised if the utilization-threshold-exceeded' notification will be raised if the
number of prefix allocations exceeds this. number of prefix allocations exceeds this.
<network-ranges> <network-ranges>
skipping to change at page 80, line 26 skipping to change at page 80, line 26
<pool-id>0</pool-id> <pool-id>0</pool-id>
<option-set-id>1</option-set-id> <option-set-id>1</option-set-id>
<pool-prefix>2001:db8:1::/48</pool-prefix> <pool-prefix>2001:db8:1::/48</pool-prefix>
<client-prefix-length>56</client-prefix-length> <client-prefix-length>56</client-prefix-length>
<max-pd-space-utilization>80</max-pd-space-utilization> <max-pd-space-utilization>80</max-pd-space-utilization>
</prefix-pool> </prefix-pool>
</prefix-pools> </prefix-pools>
</network-range> </network-range>
</network-ranges> </network-ranges>
Figure 6: Prefix Delegation Configuration Example XML Figure 6: Server Prefix Delegation Configuration Example XML
The next example shows the configuration of a set of options that may The next example shows the configuration of a set of options that may
be returned to clients, depending on the contents of a received DHCP be returned to clients, depending on the contents of a received DHCP
request message. The option set ID is '1', which will referenced by request message. The option set ID is '1', which will referenced by
other places in the configuration (e.g., address pool configuration) other places in the configuration (e.g., address pool configuration)
as the available options for clients that request them. as the available options for clients that request them.
The example contains 2 instances of the Vendor Specific Information The example shows how the option definitions can be extended via
Option (OPTION_VENDOR_OPTS (17)) to show how options which allow for augmentation. In this case, "OPTION_SIP_SERVER_D (21) SIP Servers
multiple instances are configured. Domain-Name List" from the example module in Appendix B has been
augmented to the server's option set.
<option-sets> <option-sets>
<option-set> <option-set>
<option-set-id>1</option-set-id> <option-set-id>1</option-set-id>
<description>Example DHCP option set</description> <description>Example DHCP option set</description>
<vendor-specific-information-options> <vendor-specific-information-options>
<vendor-specific-information-option> <vendor-specific-information-option>
<enterprise-number>9</enterprise-number> <enterprise-number>32473</enterprise-number>
<vendor-option-data> <vendor-option-data>
<sub-option-code>01</sub-option-code> <sub-option-code>01</sub-option-code>
<sub-option-data>1234abcd</sub-option-data> <sub-option-data>1234abcd</sub-option-data>
</vendor-option-data> </vendor-option-data>
<vendor-option-data> <vendor-option-data>
<sub-option-code>02</sub-option-code> <sub-option-code>02</sub-option-code>
<sub-option-data>abcd1234</sub-option-data> <sub-option-data>abcd1234</sub-option-data>
</vendor-option-data> </vendor-option-data>
</vendor-specific-information-option> </vendor-specific-information-option>
<vendor-specific-information-option> </vendor-specific-information-options>
<enterprise-number>10</enterprise-number> <sol-max-rt-option>
<vendor-option-data> <sol-max-rt-value>3600</sol-max-rt-value>
<sub-option-code>01</sub-option-code> </sol-max-rt-option>
<sub-option-data>4321dcba</sub-option-data> <sip-server-domain-name-list-option
</vendor-option-data> xmlns="https://example.com/ns/example-dhcpv6-opt-sip-serv">
<vendor-option-data> <sip-server>
<sub-option-code>02</sub-option-code> <sip-serv-id>0</sip-serv-id>
<sub-option-data>dcba4321</sub-option-data> <sip-serv-domain-name>sip1.example.org</sip-serv-domain-name>
</vendor-option-data> </sip-server>
</vendor-specific-information-option> <sip-server>
</vendor-specific-information-options> <sip-serv-id>1</sip-serv-id>
<sol-max-rt-option> <sip-serv-domain-name>sip2.example.org</sip-serv-domain-name>
<sol-max-rt-value>3600</sol-max-rt-value> </sip-server>
</sol-max-rt-option> </sip-server-domain-name-list-option>
</option-set> </option-set>
</option-sets> </option-sets>
Figure 7: Option Set Configuration Example XML Figure 7: Server Option Set Configuration Example XML
A.2. DHCPv6 Relay Configuration Example A.2. DHCPv6 Relay Configuration Example
The following example shows a basic configuration for a single DHCP The following example shows a basic configuration for a single DHCP
relay interface and its interaction with the ietf-interfaces module. relay interface and its interaction with the ietf-interfaces module.
The configuration defines: The configuration defines:
* Enabling the DHCP relay function globally and for the relevant * Enabling the DHCP relay function globally and for the relevant
interface. interface.
skipping to change at page 84, line 5 skipping to change at page 84, line 5
* Configures a single instance of the Vendor-specific Information * Configures a single instance of the Vendor-specific Information
Option (OPTION_VENDOR_OPTS (17)) with a single sub-option data Option (OPTION_VENDOR_OPTS (17)) with a single sub-option data
item. item.
* Requests a non-temporary IPv6 address (IA_NA) with an identity * Requests a non-temporary IPv6 address (IA_NA) with an identity
association interface identifier of 1. association interface identifier of 1.
* Requests an IPv6 delegated prefix address (IA_PD) with an identity * Requests an IPv6 delegated prefix address (IA_PD) with an identity
association interface identifier of 2. association interface identifier of 2.
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces" <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"
xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type"> xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
<interface> <interface>
<name>eth0</name> <name>eth0</name>
<type>ianaift:ethernetCsmacd</type> <type>ianaift:ethernetCsmacd</type>
<description>DHCPv6 Relay Interface</description> <description>DHCPv6 Relay Interface</description>
<enabled>true</enabled> <enabled>true</enabled>
</interface> </interface>
</interfaces> </interfaces>
<dhcpv6-client xmlns="urn:ietf:params:xml:ns:yang:ietf-dhcpv6-client" <dhcpv6-client
> xmlns="urn:ietf:params:xml:ns:yang:ietf-dhcpv6-client">
<enabled>true</enabled> <enabled>true</enabled>
<client-if> <client-if>
<if-name>eth0</if-name> <if-name>eth0</if-name>
<enabled>true</enabled> <enabled>true</enabled>
<duid>000200090CC084D303000913</duid> <duid>000200090CC084D303000913</duid>
<client-configured-options> <client-configured-options>
<option-request-option> <option-request-option>
<oro-option>17</oro-option> <oro-option>17</oro-option>
<oro-option>23</oro-option> <oro-option>23</oro-option>
<oro-option>24</oro-option> <oro-option>24</oro-option>
<oro-option>82</oro-option> <oro-option>82</oro-option>
</option-request-option> </option-request-option>
<vendor-specific-information-options> <vendor-specific-information-options>
<vendor-specific-information-option> <vendor-specific-information-option>
<enterprise-number>9</enterprise-number> <enterprise-number>32473</enterprise-number>
<vendor-option-data> <vendor-option-data>
<sub-option-code>1</sub-option-code> <sub-option-code>1</sub-option-code>
<sub-option-data>abcd1234</sub-option-data> <sub-option-data>abcd1234</sub-option-data>
</vendor-option-data> </vendor-option-data>
</vendor-specific-information-option> </vendor-specific-information-option>
</vendor-specific-information-options> </vendor-specific-information-options>
</client-configured-options> </client-configured-options>
<ia-na> <ia-na>
<ia-id>1</ia-id> <ia-id>1</ia-id>
</ia-na> </ia-na>
<ia-pd> <ia-pd>
<ia-id>2</ia-id> <ia-id>2</ia-id>
</ia-pd> </ia-pd>
</client-if> </client-if>
</dhcpv6-client> </dhcpv6-client>
Figure 9: Basic Server Configuration Example XML Figure 9: Basic Client Configuration Example XML
Appendix B. Example of Augmenting Additional DHCPv6 Option Definitions Appendix B. Example of Augmenting Additional DHCPv6 Option Definitions
The following section provides a example of how the DHCPv6 option The following section provides a example of how the DHCPv6 option
definitions can be extended to include additional options. It is definitions can be extended to include additional options. It is
expected that additional specification documents will be published expected that additional specification documents will be published
for this in the future. for this in the future.
The example defines YANG models for OPTION_SIP_SERVER_D (21) and The example defines YANG models for OPTION_SIP_SERVER_D (21) and
OPTION_SIP_SERVER_D (22) defined in [RFC3319]. The module is OPTION_SIP_SERVER_D (22) defined in [RFC3319]. Example XML
constructed as follows: configuration, showing the interworking with other modules is
provided in Figure 7.
The module is constructed as follows:
* The module is named using a meaningful, shortened version of the * The module is named using a meaningful, shortened version of the
document name in which the DHCP option format is specified. document name in which the DHCP option format is specified.
* A separate grouping is used to define each option. * A separate grouping is used to define each option.
* The name of the option is taken from the registered IANA name for * The name of the option is taken from the registered IANA name for
the option, with an '-option' suffix added. the option, with an '-option' suffix added.
* The description field is taken from the relevant option code name * The description field is taken from the relevant option code name
skipping to change at page 86, line 11 skipping to change at page 86, line 15
} }
import ietf-dhcpv6-server { import ietf-dhcpv6-server {
prefix dhc6-srv; prefix dhc6-srv;
} }
organization organization
"IETF DHC (Dynamic Host Configuration) Working Group"; "IETF DHC (Dynamic Host Configuration) Working Group";
contact contact
"WG Web: <http://datatracker.ietf.org/wg/dhc/> "WG Web: <https://datatracker.ietf.org/wg/dhc/>
WG List: <mailto:dhcwg@ietf.org> WG List: <mailto:dhcwg@ietf.org>
Author: Yong Cui <yong@csnet1.cs.tsinghua.edu.cn> Author: Yong Cui <yong@csnet1.cs.tsinghua.edu.cn>
Author: Linhui Sun <lh.sunlinh@gmail.com> Author: Linhui Sun <lh.sunlinh@gmail.com>
Editor: Ian Farrer <ian.farrer@telekom.de> Editor: Ian Farrer <ian.farrer@telekom.de>
Author: Sladjana Zeichlin <sladjana.zechlin@telekom.de> Author: Sladjana Zeichlin <sladjana.zechlin@telekom.de>
Author: Zihao He <hezihao9512@gmail.com> Author: Zihao He <hezihao9512@gmail.com>
Author: Michal Nowikowski <godfryd@isc.org>"; Author: Michal Nowikowski <godfryd@isc.org>";
description description
"This YANG module contains DHCPv6 options defined in RFC 8415 "This YANG module contains DHCPv6 options defined in RFC 8415
that can be used by DHCPv6 servers. that can be used by DHCPv6 servers.
Copyright (c) 2021 IETF Trust and the persons identified as Copyright (c) 2021 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2021-06-14 { revision 2021-07-02 {
description description
"Initial Revision."; "Initial Revision.";
reference reference
"XXXX: YANG Data Model for DHCPv6 Configuration"; "XXXX: YANG Data Model for DHCPv6 Configuration";
} }
/* /*
* Groupings * Groupings
*/ */
skipping to change at page 89, line 37 skipping to change at page 89, line 37
} }
import ietf-dhcpv6-server { import ietf-dhcpv6-server {
prefix dhc6-srv; prefix dhc6-srv;
} }
organization organization
"IETF DHC (Dynamic Host Configuration) Working Group"; "IETF DHC (Dynamic Host Configuration) Working Group";
contact contact
"WG Web: <http://datatracker.ietf.org/wg/dhc/> "WG Web: <https://datatracker.ietf.org/wg/dhc/>
WG List: <mailto:dhcwg@ietf.org> WG List: <mailto:dhcwg@ietf.org>
Author: Yong Cui <yong@csnet1.cs.tsinghua.edu.cn> Author: Yong Cui <yong@csnet1.cs.tsinghua.edu.cn>
Author: Linhui Sun <lh.sunlinh@gmail.com> Author: Linhui Sun <lh.sunlinh@gmail.com>
Editor: Ian Farrer <ian.farrer@telekom.de> Editor: Ian Farrer <ian.farrer@telekom.de>
Author: Sladjana Zeichlin <sladjana.zechlin@telekom.de> Author: Sladjana Zeichlin <sladjana.zechlin@telekom.de>
Author: Zihao He <hezihao9512@gmail.com> Author: Zihao He <hezihao9512@gmail.com>
Author: Michal Nowikowski <godfryd@isc.org>"; Author: Michal Nowikowski <godfryd@isc.org>";
description description
"This YANG module defines components for the configuration and "This YANG module defines components for the configuration and
skipping to change at page 90, line 13 skipping to change at page 90, line 13
only. only.
Copyright (c) 2021 IETF Trust and the persons identified as Copyright (c) 2021 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2021-06-14 { revision 2021-07-02 {
description description
"Initial Revision."; "Initial Revision.";
reference reference
"XXXX: YANG Data Model for DHCPv6 Configuration"; "XXXX: YANG Data Model for DHCPv6 Configuration";
} }
/* /*
* Groupings * Groupings
*/ */
skipping to change at page 96, line 24 skipping to change at page 96, line 24
} }
import ietf-dhcpv6-server { import ietf-dhcpv6-server {
prefix dhc6-srv; prefix dhc6-srv;
} }
organization organization
"IETF DHC (Dynamic Host Configuration) Working Group"; "IETF DHC (Dynamic Host Configuration) Working Group";
contact contact
"WG Web: <http://datatracker.ietf.org/wg/dhc/> "WG Web: <https://datatracker.ietf.org/wg/dhc/>
WG List: <mailto:dhcwg@ietf.org> WG List: <mailto:dhcwg@ietf.org>
Author: Yong Cui <yong@csnet1.cs.tsinghua.edu.cn> Author: Yong Cui <yong@csnet1.cs.tsinghua.edu.cn>
Author: Linhui Sun <lh.sunlinh@gmail.com> Author: Linhui Sun <lh.sunlinh@gmail.com>
Editor: Ian Farrer <ian.farrer@telekom.de> Editor: Ian Farrer <ian.farrer@telekom.de>
Author: Sladjana Zeichlin <sladjana.zechlin@telekom.de> Author: Sladjana Zeichlin <sladjana.zechlin@telekom.de>
Author: Zihao He <hezihao9512@gmail.com> Author: Zihao He <hezihao9512@gmail.com>
Author: Michal Nowikowski <godfryd@isc.org>"; Author: Michal Nowikowski <godfryd@isc.org>";
description description
"This YANG module defines components for the definition and "This YANG module defines components for the definition and
skipping to change at page 96, line 48 skipping to change at page 96, line 48
only. only.
Copyright (c) 2021 IETF Trust and the persons identified as Copyright (c) 2021 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision 2021-06-14 { revision 2021-07-02 {
description description
"Initial Revision."; "Initial Revision.";
reference reference
"XXXX: YANG Data Model for DHCPv6 Configuration"; "XXXX: YANG Data Model for DHCPv6 Configuration";
} }
/* /*
* Groupings * Groupings
*/ */
 End of changes. 99 change blocks. 
489 lines changed or deleted 500 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/