| < draft-ietf-dhc-dhcpv6-yang-22.txt | draft-ietf-dhc-dhcpv6-yang-23.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 2 July 2021 | Intended status: Standards Track 25 October 2021 | |||
| Expires: 3 January 2022 | Expires: 28 April 2022 | |||
| YANG Data Model for DHCPv6 Configuration | YANG Data Model for DHCPv6 Configuration | |||
| draft-ietf-dhc-dhcpv6-yang-22 | draft-ietf-dhc-dhcpv6-yang-23 | |||
| 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. | RFC8415) servers, relays, and clients. | |||
| Requirements Language | ||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
| "OPTIONAL" in this document are to be interpreted as described in BCP | ||||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
| capitals, as shown here. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| 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 3 January 2022. | This Internet-Draft will expire on 28 April 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. | |||
| Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
| and restrictions with respect to this document. Code Components | and restrictions with respect to this document. Code Components | |||
| extracted from this document must include Simplified BSD License text | extracted from this document must include Simplified BSD License text | |||
| as described in Section 4.e of the Trust Legal Provisions and are | as described in Section 4.e of the Trust Legal Provisions and are | |||
| provided without warranty as described in the Simplified BSD License. | provided without warranty as described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 1.2. Extensibility of the DHCPv6 Server YANG Module . . . . . 4 | 1.2. Extensibility of the DHCPv6 Server YANG Module . . . . . 3 | |||
| 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. Requirements Language . . . . . . . . . . . . . . . . . . . . 6 | |||
| 2.1. DHCPv6 Server Tree Diagram . . . . . . . . . . . . . . . 6 | 3. DHCPv6 Tree Diagrams . . . . . . . . . . . . . . . . . . . . 6 | |||
| 2.2. DHCPv6 Relay Tree Diagram . . . . . . . . . . . . . . . . 13 | 3.1. DHCPv6 Server Tree Diagram . . . . . . . . . . . . . . . 6 | |||
| 2.3. DHCPv6 Client Tree Diagram . . . . . . . . . . . . . . . 16 | 3.2. DHCPv6 Relay Tree Diagram . . . . . . . . . . . . . . . . 13 | |||
| 3. DHCPv6 YANG Modules . . . . . . . . . . . . . . . . . . . . . 19 | 3.3. DHCPv6 Client Tree Diagram . . . . . . . . . . . . . . . 15 | |||
| 3.1. DHCPv6 Server YANG Module . . . . . . . . . . . . . . . . 19 | 4. DHCPv6 YANG Modules . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 3.2. DHCPv6 Relay YANG Module . . . . . . . . . . . . . . . . 39 | 4.1. DHCPv6 Common YANG Module . . . . . . . . . . . . . . . . 20 | |||
| 3.3. DHCPv6 Client YANG Module . . . . . . . . . . . . . . . . 49 | 4.2. DHCPv6 Server YANG Module . . . . . . . . . . . . . . . . 28 | |||
| 3.4. DHCPv6 Common YANG Module . . . . . . . . . . . . . . . . 63 | 4.3. DHCPv6 Relay YANG Module . . . . . . . . . . . . . . . . 48 | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 71 | 4.4. DHCPv6 Client YANG Module . . . . . . . . . . . . . . . . 58 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 73 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 73 | |||
| 6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 74 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 74 | |||
| 7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 74 | 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 75 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 74 | 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 75 | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 74 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 76 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 77 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 76 | |||
| Appendix A. Data Tree Examples . . . . . . . . . . . . . . . . . 77 | 9.2. Informative References . . . . . . . . . . . . . . . . . 78 | |||
| A.1. DHCPv6 Server Configuration Example . . . . . . . . . . . 77 | Appendix A. Data Tree Examples . . . . . . . . . . . . . . . . . 79 | |||
| A.2. DHCPv6 Relay Configuration Example . . . . . . . . . . . 81 | A.1. DHCPv6 Server Configuration Examples . . . . . . . . . . 79 | |||
| A.3. DHCPv6 Client Configuration Examples . . . . . . . . . . 82 | A.2. DHCPv6 Relay Configuration Example . . . . . . . . . . . 83 | |||
| A.3. DHCPv6 Client Configuration Example . . . . . . . . . . . 84 | ||||
| Appendix B. Example of Augmenting Additional DHCPv6 Option | Appendix B. Example of Augmenting Additional DHCPv6 Option | |||
| Definitions . . . . . . . . . . . . . . . . . . . . . . . 85 | Definitions . . . . . . . . . . . . . . . . . . . . . . . 87 | |||
| Appendix C. Example Vendor Specific Server Configuration | Appendix C. Example Vendor Specific Server Configuration | |||
| Module . . . . . . . . . . . . . . . . . . . . . . . . . 88 | Module . . . . . . . . . . . . . . . . . . . . . . . . . 90 | |||
| Appendix D. Example definition of class-selector | Appendix D. Example definition of class-selector | |||
| configuration . . . . . . . . . . . . . . . . . . . . . . 95 | configuration . . . . . . . . . . . . . . . . . . . . . . 97 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 102 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 104 | |||
| 1. Introduction | 1. Introduction | |||
| DHCPv6 [RFC8415] is widely used for supplying configuration and other | DHCPv6 [RFC8415] is used for supplying configuration and other | |||
| relevant parameters to clients in IPv6 networks. This document | relevant parameters to clients in IPv6 networks. This document | |||
| defines YANG [RFC7950] modules for the configuration and management | defines YANG [RFC7950] modules for the configuration and management | |||
| of DHCPv6 'element' (servers, relays, and clients) using the Network | of DHCPv6 'element' (servers, relays, and clients) using the Network | |||
| Configuration Protocol (NETCONF [RFC6241]) or RESTCONF [RFC8040] | Configuration Protocol (NETCONF [RFC6241]) or RESTCONF [RFC8040] | |||
| protocols. | protocols. | |||
| Separate modules are defined for each element. Additionally, a | Separate modules are defined for each element. Additionally, a | |||
| 'common' module contains typedefs and groupings used by all of the | 'common' module contains typedefs and groupings used by all of the | |||
| element modules. Appendix A provides XML examples for each of the | element modules. Appendix A provides XML examples for each of the | |||
| element modules and shows their interaction. | element modules and shows their interaction. | |||
| skipping to change at page 6, line 37 ¶ | skipping to change at page 6, line 24 ¶ | |||
| The reader should be familiar with the YANG data modeling language | The reader should be familiar with the YANG data modeling language | |||
| defined in [RFC7950]. | defined in [RFC7950]. | |||
| The YANG modules in this document adopt the Network Management | The YANG modules in this document adopt the Network Management | |||
| Datastore Architecture (NMDA) [RFC8342]. The meanings of the symbols | Datastore Architecture (NMDA) [RFC8342]. The meanings of the symbols | |||
| used in tree diagrams are defined in [RFC8340]. | used in tree diagrams are defined in [RFC8340]. | |||
| The reader should be familiar with DHCPv6 relevant terminology as | The reader should be familiar with DHCPv6 relevant terminology as | |||
| defined in [RFC8415] and other relevant documents. | defined in [RFC8415] and other relevant documents. | |||
| 2. DHCPv6 Tree Diagrams | 2. Requirements Language | |||
| 2.1. DHCPv6 Server Tree Diagram | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
| "OPTIONAL" in this document are to be interpreted as described in BCP | ||||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
| capitals, as shown here. | ||||
| 3. DHCPv6 Tree Diagrams | ||||
| 3.1. DHCPv6 Server Tree Diagram | ||||
| The tree diagram in Figure 1 provides an overview of the DHCPv6 | The tree diagram in Figure 1 provides an overview of the DHCPv6 | |||
| server module. The tree also includes the common functions module | server module. The tree also includes the common functions module | |||
| Section 3.4. | Section 4.1. | |||
| module: ietf-dhcpv6-server | module: ietf-dhcpv6-server | |||
| +--rw dhcpv6-server | +--rw dhcpv6-server | |||
| +--rw enabled? boolean | +--rw enabled? boolean | |||
| +--rw server-duid? dhc6:duid | +--rw server-duid? dhc6:duid | |||
| +--rw vendor-config | +--rw vendor-config | |||
| +--rw option-sets | +--rw option-sets | |||
| | +--rw option-set* [option-set-id] | | +--rw option-set* [option-set-id] | |||
| | +--rw option-set-id uint32 | | +--rw option-set-id uint32 | |||
| | +--rw description? string | | +--rw description? string | |||
| | +--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 | |||
| skipping to change at page 7, line 34 ¶ | skipping to change at page 7, line 28 ¶ | |||
| | +--rw reconfigure-message-option | | +--rw reconfigure-message-option | |||
| | | +--rw msg-type? uint8 | | | +--rw msg-type? uint8 | |||
| | +--rw reconfigure-accept-option! | | +--rw reconfigure-accept-option! | |||
| | +--rw info-refresh-time-option | | +--rw info-refresh-time-option | |||
| | | +--rw info-refresh-time? dhc6:timer-seconds32 | | | +--rw info-refresh-time? dhc6:timer-seconds32 | |||
| | +--rw sol-max-rt-option | | +--rw sol-max-rt-option | |||
| | | +--rw sol-max-rt-value? dhc6:timer-seconds32 | | | +--rw sol-max-rt-value? dhc6:timer-seconds32 | |||
| | +--rw inf-max-rt-option | | +--rw inf-max-rt-option | |||
| | +--rw inf-max-rt-value? dhc6:timer-seconds32 | | +--rw inf-max-rt-value? dhc6:timer-seconds32 | |||
| +--rw class-selector | +--rw class-selector | |||
| +--rw network-ranges | +--rw allocation-ranges | |||
| +--rw option-set-id* leafref | +--rw option-set-id* leafref | |||
| +--rw valid-lifetime? dhc6:timer-seconds32 | +--rw valid-lifetime? dhc6:timer-seconds32 | |||
| +--rw renew-time? dhc6:timer-seconds32 | +--rw renew-time? dhc6:timer-seconds32 | |||
| +--rw rebind-time? dhc6:timer-seconds32 | +--rw rebind-time? dhc6:timer-seconds32 | |||
| +--rw preferred-lifetime? dhc6:timer-seconds32 | +--rw preferred-lifetime? dhc6:timer-seconds32 | |||
| +--rw rapid-commit? boolean | +--rw rapid-commit? boolean | |||
| +--rw network-range* [id] | +--rw allocation-range* [id] | |||
| | +--rw id uint32 | | +--rw id uint32 | |||
| | +--rw description? string | | +--rw description? string | |||
| | +--rw network-prefix inet:ipv6-prefix | | +--rw network-prefix inet:ipv6-prefix | |||
| | +--rw option-set-id* leafref | | +--rw option-set-id* leafref | |||
| | +--rw valid-lifetime? dhc6:timer-seconds32 | | +--rw valid-lifetime? dhc6:timer-seconds32 | |||
| | +--rw renew-time? dhc6:timer-seconds32 | | +--rw renew-time? dhc6:timer-seconds32 | |||
| | +--rw rebind-time? dhc6:timer-seconds32 | | +--rw rebind-time? dhc6:timer-seconds32 | |||
| | +--rw preferred-lifetime? dhc6:timer-seconds32 | | +--rw preferred-lifetime? dhc6:timer-seconds32 | |||
| | +--rw rapid-commit? boolean | | +--rw rapid-commit? boolean | |||
| | +--rw address-pools | | +--rw address-pools {na-assignment}? | |||
| | | +--rw address-pool* [pool-id] | | | +--rw address-pool* [pool-id] | |||
| | | +--rw pool-id uint32 | | | +--rw pool-id string | |||
| | | +--rw pool-prefix | | | +--rw pool-prefix | |||
| | | | inet:ipv6-prefix | | | | inet:ipv6-prefix | |||
| | | +--rw start-address | | | +--rw start-address | |||
| | | | inet:ipv6-address-no-zone | | | | inet:ipv6-address-no-zone | |||
| | | +--rw end-address | | | +--rw end-address | |||
| | | | inet:ipv6-address-no-zone | | | | inet:ipv6-address-no-zone | |||
| | | +--rw max-address-utilization? dhc6:threshold | | | +--rw max-address-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 9, line 15 ¶ | skipping to change at page 9, line 9 ¶ | |||
| | | | 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 status | |||
| | | +--ro code? uint16 | | | +--ro code? uint16 | |||
| | | +--ro message? string | | | +--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 string | |||
| | +--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 | |||
| | +--rw renew-time? | | +--rw renew-time? | |||
| | | dhc6:timer-seconds32 | | | dhc6:timer-seconds32 | |||
| | +--rw rebind-time? | | +--rw rebind-time? | |||
| skipping to change at page 10, line 34 ¶ | skipping to change at page 10, line 28 ¶ | |||
| +--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 | |||
| +--ro information-request-count? uint32 | +--ro information-request-count? uint32 | |||
| rpcs: | rpcs: | |||
| +---x delete-address-lease | +---x delete-address-lease {na-assignment}? | |||
| | +---w input | | +---w input | |||
| | | +---w lease-address-to-delete leafref | | | +---w lease-address-to-delete leafref | |||
| | +--ro output | | +--ro output | |||
| | +--ro return-message? string | | +--ro return-message? string | |||
| +---x delete-prefix-lease {prefix-delegation}? | +---x delete-prefix-lease {prefix-delegation}? | |||
| +---w input | +---w input | |||
| | +---w lease-prefix-to-delete leafref | | +---w lease-prefix-to-delete leafref | |||
| +--ro output | +--ro output | |||
| +--ro return-message? string | +--ro return-message? string | |||
| notifications: | notifications: | |||
| +---n address-pool-utilization-threshold-exceeded | +---n address-pool-utilization-threshold-exceeded | |||
| | {na-assignment}? | ||||
| | +--ro pool-id leafref | | +--ro pool-id leafref | |||
| | +--ro total-pool-addresses uint64 | | +--ro total-pool-addresses uint64 | |||
| | +--ro max-allocated-addresses uint64 | | +--ro max-allocated-addresses uint64 | |||
| | +--ro allocated-address-count uint64 | | +--ro allocated-address-count uint64 | |||
| +---n prefix-pool-utilization-threshold-exceeded | +---n prefix-pool-utilization-threshold-exceeded | |||
| | {prefix-delegation}? | | {prefix-delegation}? | |||
| | +--ro pool-id leafref | | +--ro pool-id leafref | |||
| | +--ro total-pool-prefixes uint64 | | +--ro total-pool-prefixes uint64 | |||
| | +--ro max-allocated-prefixes uint64 | | +--ro max-allocated-prefixes uint64 | |||
| | +--ro allocated-prefixes-count uint64 | | +--ro allocated-prefixes-count uint64 | |||
| +---n invalid-client-detected | +---n invalid-client-detected | |||
| | +--ro message-type? enumeration | | +--ro message-type? enumeration | |||
| | +--ro duid? dhc6:duid | | +--ro duid? dhc6:duid | |||
| | +--ro description? string | | +--ro description? string | |||
| +---n decline-received | +---n decline-received {na-assignment}? | |||
| | +--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 duid? dhc6:duid | +--ro duid? dhc6:duid | |||
| +--ro status | +--ro status | |||
| skipping to change at page 12, line 23 ¶ | skipping to change at page 12, line 17 ¶ | |||
| and additional options that are also relevant to the relay and/or | and additional options that are also relevant to the relay and/or | |||
| 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 | * allocation-ranges: A hierarchical model is used for the allocation | |||
| addresses and prefixes. At the top level 'network-ranges' | of addresses and prefixes. At the top level 'allocation-ranges' | |||
| container holds global configuration parameters. Under this, the | container holds global configuration parameters. Under this, the | |||
| 'network-range' list is used for specifying IPv6 prefixes and | 'allocation-range' list is used for specifying IPv6 prefixes and | |||
| additional, prefix specific parameters. | additional, prefix specific parameters. | |||
| * address-pools: Used for IA_NA and IA_TA pool allocations with a | * address-pools: Used for IA_NA and IA_TA pool allocations with a | |||
| container for defining host reservations. State information about | container for defining host reservations. State information about | |||
| active leases from the pool is also located here. | 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. Static host reservations can also be configured. As | clients. Static host reservations can also be configured. As | |||
| prefix delegation is not supported by all DHCPv6 server | prefix delegation is not supported by all DHCPv6 server | |||
| implementations, it is enabled by a feature statement. | implementations, it is enabled by a feature statement. | |||
| skipping to change at page 13, line 15 ¶ | skipping to change at page 13, line 8 ¶ | |||
| * 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 there is a status message for | * non-success-code-sent: Raised when there is a status message for | |||
| an failure. | an failure. | |||
| 2.2. DHCPv6 Relay Tree Diagram | 3.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 4.1. | |||
| module: ietf-dhcpv6-relay | module: ietf-dhcpv6-relay | |||
| +--rw dhcpv6-relay | +--rw dhcpv6-relay | |||
| +--rw enabled? boolean | +--rw enabled? boolean | |||
| +--rw relay-if* [if-name] | +--rw relay-if* [if-name] | |||
| | +--rw if-name | | +--rw if-name | |||
| | | if:interface-ref | | | if:interface-ref | |||
| | +--rw enabled? boolean | | +--rw enabled? boolean | |||
| | +--rw destination-address* | | +--rw destination-address* | |||
| | | inet:ipv6-address | | | inet:ipv6-address | |||
| skipping to change at page 16, line 5 ¶ | skipping to change at page 15, line 46 ¶ | |||
| 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: | Information about notifications: | |||
| * topology-changed: Raised when the topology of the relay agent is | * topology-changed: Raised when the topology of the relay agent is | |||
| changed, e.g., a client facing interface is reconfigured. | changed, e.g., a client facing interface is reconfigured. | |||
| 2.3. DHCPv6 Client Tree Diagram | 3.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 4.1. | |||
| module: ietf-dhcpv6-client | module: ietf-dhcpv6-client | |||
| +--rw dhcpv6-client | +--rw dhcpv6-client | |||
| +--rw enabled? boolean | +--rw enabled? boolean | |||
| +--rw client-duid? dhc6:duid | ||||
| | {non-temp-addr or prefix-del or temp-addr | ||||
| | and not anon-profile}? | ||||
| +--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 interface-duid? dhc6:duid | |||
| | {non-temp-addr or prefix-del or temp-addr | ||||
| | and anon-profile}? | ||||
| +--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 rapid-commit-option! | | +--rw rapid-commit-option! | |||
| | +--rw user-class-option! | | +--rw user-class-option! | |||
| | | +--rw user-class-data-instance* | | | +--rw user-class-data-instance* | |||
| | | [user-class-data-id] | | | [user-class-data-id] | |||
| | | +--rw user-class-data-id uint8 | | | +--rw user-class-data-id uint8 | |||
| | | +--rw user-class-data? string | | | +--rw user-class-data? string | |||
| | +--rw vendor-class-option | | +--rw vendor-class-option | |||
| skipping to change at page 16, line 43 ¶ | skipping to change at page 16, line 42 ¶ | |||
| | | +--rw vendor-class-data-id uint8 | | | +--rw vendor-class-data-id uint8 | |||
| | | +--rw vendor-class-data? string | | | +--rw vendor-class-data? string | |||
| | +--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-accept-option! | | +--rw reconfigure-accept-option! | |||
| +--rw ia-na* [ia-id] {non-temporary-address}? | +--rw ia-na* [ia-id] {non-temp-addr}? | |||
| | +--rw ia-id uint32 | | +--rw ia-id uint32 | |||
| | +--rw ia-na-options | | +--rw ia-na-options | |||
| | +--ro lease-state | | +--ro lease-state | |||
| | +--ro ia-na-address? inet:ipv6-address | | +--ro ia-na-address? inet:ipv6-address | |||
| | +--ro lease-t1? dhc6:timer-seconds32 | | +--ro lease-t1? dhc6:timer-seconds32 | |||
| | +--ro lease-t2? dhc6:timer-seconds32 | | +--ro lease-t2? dhc6:timer-seconds32 | |||
| | +--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 | |||
| | +--ro status | | +--ro status | |||
| | +--ro code? uint16 | | +--ro code? uint16 | |||
| | +--ro message? string | | +--ro message? string | |||
| +--rw ia-ta* [ia-id] {temporary-address}? | +--rw ia-ta* [ia-id] {temp-addr}? | |||
| | +--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 | |||
| | +--ro status | | +--ro status | |||
| | +--ro code? uint16 | | +--ro code? uint16 | |||
| | +--ro message? string | | +--ro message? string | |||
| +--rw ia-pd* [ia-id] {prefix-delegation}? | +--rw ia-pd* [ia-id] {prefix-del}? | |||
| | +--rw ia-id uint32 | | +--rw ia-id uint32 | |||
| | +--rw prefix-length-hint? uint8 | ||||
| | +--rw ia-pd-options | | +--rw ia-pd-options | |||
| | +--ro lease-state | | +--ro lease-state | |||
| | +--ro ia-pd-prefix? inet:ipv6-prefix | | +--ro ia-pd-prefix? inet:ipv6-prefix | |||
| | +--ro lease-t1? dhc6:timer-seconds32 | | +--ro lease-t1? dhc6:timer-seconds32 | |||
| | +--ro lease-t2? dhc6:timer-seconds32 | | +--ro lease-t2? dhc6:timer-seconds32 | |||
| | +--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 | |||
| skipping to change at page 17, line 51 ¶ | skipping to change at page 17, line 51 ¶ | |||
| +--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 | |||
| +--ro information-request-count? uint32 | +--ro information-request-count? uint32 | |||
| notifications: | notifications: | |||
| +---n invalid-ia-address-detected | +---n invalid-ia-address-detected | |||
| | {non-temporary-address or temporary-address}? | | {non-temp-addr or temp-addr}? | |||
| | +--ro ia-id uint32 | | +--ro ia-id uint32 | |||
| | +--ro ia-na-t1-timer? uint32 | | +--ro ia-na-t1-timer? uint32 | |||
| | +--ro ia-na-t2-timer? uint32 | | +--ro ia-na-t2-timer? uint32 | |||
| | +--ro invalid-address? inet:ipv6-address | | +--ro invalid-address? inet:ipv6-address | |||
| | +--ro preferred-lifetime? uint32 | | +--ro preferred-lifetime? uint32 | |||
| | +--ro valid-lifetime? uint32 | | +--ro valid-lifetime? uint32 | |||
| | +--ro ia-options? binary | | +--ro ia-options? binary | |||
| | +--ro description? string | | +--ro description? string | |||
| +---n transmission-failed | +---n transmission-failed | |||
| | +--ro failure-type enumeration | | +--ro failure-type enumeration | |||
| | +--ro description? string | | +--ro description? string | |||
| +---n unsuccessful-status-code | +---n unsuccessful-status-code | |||
| | +--ro server-duid dhc6:duid | | +--ro server-duid dhc6:duid | |||
| | +--ro status | | +--ro status | |||
| | +--ro code? uint16 | | +--ro code? uint16 | |||
| | +--ro message? string | | +--ro message? string | |||
| +---n server-duid-changed | +---n server-duid-changed | |||
| {non-temporary-address or prefix-delegation or temporary- | {non-temp-addr or prefix-del or temp-addr}? | |||
| address}? | ||||
| +--ro new-server-duid dhc6:duid | +--ro new-server-duid dhc6:duid | |||
| +--ro previous-server-duid dhc6:duid | +--ro previous-server-duid dhc6:duid | |||
| +--ro lease-ia-na? | +--ro lease-ia-na? | |||
| | -> ../../dhcpv6-client/client-if/ia-na/ia-id | | -> ../../dhcpv6-client/client-if/ia-na/ia-id | |||
| | {non-temporary-address}? | | {non-temp-addr}? | |||
| +--ro lease-ia-ta? | +--ro lease-ia-ta? | |||
| | -> ../../dhcpv6-client/client-if/ia-ta/ia-id | | -> ../../dhcpv6-client/client-if/ia-ta/ia-id | |||
| | {temporary-address}? | | {temp-addr}? | |||
| +--ro lease-ia-pd? | +--ro lease-ia-pd? | |||
| -> ../../dhcpv6-client/client-if/ia-pd/ia-id | -> ../../dhcpv6-client/client-if/ia-pd/ia-id | |||
| {prefix-delegation}? | {prefix-del}? | |||
| 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. | |||
| * client-if: As a client may have multiple interfaces requesting | * client-if: As a client may have multiple interfaces requesting | |||
| configuration over DHCP, they are configured in a list. The if- | configuration over DHCP, they are configured in a list. The if- | |||
| name leaf is the key and is an interface-ref to the applicable | name leaf is the key and is an interface-ref to the applicable | |||
| interface defined by the 'ietf-interfaces' YANG module. | interface defined by the 'ietf-interfaces' YANG module. | |||
| * enabled: Enables/disables all DHCPv6 client function for the | * enabled: Enables/disables all DHCPv6 client function for the | |||
| specific interface. | specific interface. | |||
| * client-duid: Each client must have a DUID (DHCP Unique Identifier) | * client-duid/interface-duid: The DUID (DHCP Unique Identifier) is | |||
| to identify itself to servers and relays. A DUID consists of a | used to identify the client to servers and relays. DUID | |||
| two-octet type field and an arbitrary length (1-128 octets) | configuration may conditionally appear in one of two locations in | |||
| content field. Currently there are four defined types of DUIDs in | the client tree, depending on the features that the client | |||
| [RFC8415] and [RFC6355]. The DUID may be configured using the | implements. If the client does not support requesting any address | |||
| format for one of these types, or using the 'unstructured' format. | or prefix leasing features, then there is no leaf for a DUID | |||
| The DUID type definitions are imported from the 'ietf- | value. If the client does not implement the 'anon-profile' | |||
| dhcpv6-common.yang' module. [IANA-HARDWARE-TYPES] and [IANA-PEN] | feature [RFC7844], then there is a single 'client-duid' leaf that | |||
| are referenced for the relevant DUID types. | holds that DUID value which will be used for all DHCPv6 enabled | |||
| interfaces. If the 'anon-profile' is enabled, there is an | ||||
| 'interface-duid' leaf for each DHCP enabled interface. A DUID | ||||
| consists of a two-octet type field and an arbitrary length (1-128 | ||||
| octets) content field. Currently there are four defined types of | ||||
| DUIDs in [RFC8415] and [RFC6355]. The DUID may be configured | ||||
| using the format for one of these types, or using the | ||||
| 'unstructured' format. The DUID type definitions are imported | ||||
| from the 'ietf-dhcpv6-common.yang' module. [IANA-HARDWARE-TYPES] | ||||
| and [IANA-PEN] are referenced for the relevant DUID types. | ||||
| * 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 | |||
| skipping to change at page 19, line 39 ¶ | skipping to change at page 20, line 5 ¶ | |||
| 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 | 4. DHCPv6 YANG Modules | |||
| 3.1. DHCPv6 Server YANG Module | 4.1. DHCPv6 Common YANG Module | |||
| This module imports typedefs from [RFC6991]. | ||||
| <CODE BEGINS> file "ietf-dhcpv6-common@2021-10-25.yang" | ||||
| module ietf-dhcpv6-common { | ||||
| yang-version 1.1; | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-common"; | ||||
| prefix "dhc6"; | ||||
| organization | ||||
| "IETF DHC (Dynamic Host Configuration) Working Group"; | ||||
| contact | ||||
| "WG Web: <https://datatracker.ietf.org/wg/dhc/> | ||||
| WG List: <mailto:dhcwg@ietf.org> | ||||
| Author: Yong Cui <yong@csnet1.cs.tsinghua.edu.cn> | ||||
| Author: Linhui Sun <lh.sunlinh@gmail.com> | ||||
| Editor: Ian Farrer <ian.farrer@telekom.de> | ||||
| Author: Sladjana Zeichlin <sladjana.zechlin@telekom.de> | ||||
| Author: Zihao He <hezihao9512@gmail.com> | ||||
| Author: Michal Nowikowski <godfryd@isc.org>"; | ||||
| description | ||||
| "This YANG module defines common components used for the | ||||
| configuration and management of DHCPv6. | ||||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', | ||||
| 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', | ||||
| 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document | ||||
| are to be interpreted as described in BCP 14 (RFC 2119) | ||||
| (RFC 8174) when, and only when, they appear in all | ||||
| capitals, as shown here. | ||||
| Copyright (c) 2021 IETF Trust and the persons identified as | ||||
| authors of the code. All rights reserved. | ||||
| Redistribution and use in source and binary forms, with or | ||||
| without modification, is permitted pursuant to, and subject | ||||
| to the license terms contained in, the Simplified BSD License | ||||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
| Relating to IETF Documents | ||||
| (https://trustee.ietf.org/license-info). | ||||
| This version of this YANG module is part of RFC XXXX; see | ||||
| the RFC itself for full legal notices."; | ||||
| revision 2021-10-25 { | ||||
| description | ||||
| "Initial Revision."; | ||||
| reference | ||||
| "XXXX: YANG Data Model for DHCPv6 Configuration"; | ||||
| } | ||||
| typedef threshold { | ||||
| type uint8 { | ||||
| range 1..100; | ||||
| } | ||||
| description | ||||
| "Threshold value in percent."; | ||||
| } | ||||
| typedef timer-seconds32 { | ||||
| type uint32; | ||||
| units "seconds"; | ||||
| description | ||||
| "Timer value type, in seconds (32-bit range)."; | ||||
| } | ||||
| typedef duid-base { | ||||
| type string { | ||||
| pattern '([0-9a-fA-F]{2}){3,130}'; | ||||
| } | ||||
| description | ||||
| "Each DHCP server and client has a DUID (DHCP Unique | ||||
| Identifier). The DUID consists of a two-octet | ||||
| type field and an arbitrary length (1-128 octets) content | ||||
| field. The duid-base type is used by other duid types with | ||||
| additional pattern constraints. | ||||
| Currently, there are four defined types of DUIDs | ||||
| in RFC 8415 and RFC 6355 - DUID-LLT, DUID-EN, DUID-LL | ||||
| and DUID-UUID. DUID-unstructured represents DUIDs which | ||||
| do not follow any of the defined formats."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | ||||
| IPv6 (DHCPv6), Section 11 | ||||
| RFC 6355: Definition of the UUID-Based DHCPv6 Unique | ||||
| Identifier (DUID-UUID), Section 4"; | ||||
| } | ||||
| typedef duid-llt { | ||||
| type duid-base { | ||||
| pattern '0001' | ||||
| + '[0-9a-fA-F]{12,}'; | ||||
| } | ||||
| description | ||||
| "DUID type 1, based on Link-Layer Address Plus Time | ||||
| (DUID-LLT). Constructed with a 2-octet hardware type assigned | ||||
| by IANA, 4-octet containing the time the DUID is generated | ||||
| (represented in seconds since midnight (UTC), January 1, 2000, | ||||
| modulo 2^32), and a link-layer address. The address is encoded | ||||
| without separator characters. For example: | ||||
| +------+------+----------+--------------+ | ||||
| | 0001 | 0006 | 28490058 | 00005E005300 | | ||||
| +------+------+----------+--------------+ | ||||
| This example includes the 2-octet DUID type of 1 (0x01), the | ||||
| hardware type is 0x06 (IEEE Hardware Types) the creation | ||||
| time is 0x028490058 (constructed as described above). Finally, | ||||
| the link-layer address is 0x5E005300 (EUI-48 address | ||||
| 00-00-5E-00-53-00)"; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | ||||
| IPv6 (DHCPv6), Section 11.2 | ||||
| IANA 'Hardware Types' registry. | ||||
| <https://www.iana.org/assignments/arp-parameters>"; | ||||
| } | ||||
| typedef duid-en { | ||||
| type duid-base { | ||||
| pattern '0002' | ||||
| + '[0-9a-fA-F]{4,}'; | ||||
| } | ||||
| description | ||||
| "DUID type 2, assigned by vendor based on Enterprise | ||||
| Number (DUID-EN). This DUID consists of the 4-octet vendor's | ||||
| registered Private Enterprise Number as maintained by IANA | ||||
| followed by a unique identifier assigned by the vendor. For | ||||
| example: | ||||
| +------+----------+------------------+ | ||||
| | 0002 | 00007ED9 | 0CC084D303000912 | | ||||
| +------+----------+------------------+ | ||||
| This example includes the 2-octet DUID type of 2 (0x02), | ||||
| 4-octets for the Enterprise Number (0x7ED9), followed by | ||||
| 8-octets of identifier data (0x0CC084D303000912)."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | ||||
| IPv6 (DHCPv6), Section 11.3 | ||||
| IANA 'Private Enterprise Numbers' registry. | ||||
| <https://www.iana.org/assignments/enterprise-numbers>"; | ||||
| } | ||||
| typedef duid-ll { | ||||
| type duid-base { | ||||
| pattern '0003' | ||||
| + '([0-9a-fA-F]){4,}'; | ||||
| } | ||||
| description | ||||
| "DUID type 3, based on Link-Layer Address (DUID-LL). | ||||
| Constructed with a 2-octet hardware type assigned | ||||
| by IANA, and a link-layer address. The address is encoded | ||||
| without separator characters. For example: | ||||
| +------+------+--------------+ | ||||
| | 0003 | 0006 | 00005E005300 | | ||||
| +------+------+--------------+ | ||||
| This example includes the 2-octet DUID type of 3 (0x03), the | ||||
| hardware type is 0x06 (IEEE Hardware Types), and the link-layer | ||||
| address is 0x5E005300 (EUI-48 address 00-00-5E-00-53-00)"; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | ||||
| IPv6 (DHCPv6), Section 11.4 | ||||
| IANA 'Hardware Types' registry. | ||||
| <https://www.iana.org/assignments/arp-parameters>"; | ||||
| } | ||||
| typedef duid-uuid { | ||||
| type duid-base { | ||||
| pattern '0004' | ||||
| + '[0-9a-fA-F]{32}'; | ||||
| } | ||||
| description | ||||
| "DUID type 4, based on Universally Unique Identifier | ||||
| (DUID-UUID). This type of DUID consists of 16 octets | ||||
| containing a 128-bit UUID. For example: | ||||
| +------+----------------------------------+ | ||||
| | 0004 | 9f03b182705747e38a1e422910078642 | | ||||
| +------+----------------------------------+ | ||||
| This example includes the 2-octet DUID type of 4 (0x04), and | ||||
| the UUID 9f03b182-7057-47e3-8a1e-422910078642."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | ||||
| IPv6 (DHCPv6), Section 11.5 | ||||
| RFC 6355: Definition of the UUID-Based DHCPv6 Unique Identifier | ||||
| (DUID-UUID)"; | ||||
| } | ||||
| typedef duid-unstructured { | ||||
| type duid-base { | ||||
| pattern '(000[1-4].*|.*[^0-9a-fA-F].*)' { | ||||
| modifier invert-match; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Used for DUIDs following any other formats than DUID | ||||
| types 1-4. For example: | ||||
| +----------------------------------+ | ||||
| | 7b6a164d325946539dc540fb539bc430 | | ||||
| +----------------------------------+ | ||||
| Here, an arbitrary 16-octet value is used. The only constraint | ||||
| placed on this is that the first 2-octects are not 0x01-0x04 | ||||
| to avoid collision with the other defined DUID types | ||||
| (duid-llt, duid-en, duid-ll, or duid-uuid)."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | ||||
| IPv6 (DHCPv6), Section 11"; | ||||
| } | ||||
| typedef duid { | ||||
| type union { | ||||
| type duid-llt; | ||||
| type duid-en; | ||||
| type duid-ll; | ||||
| type duid-uuid; | ||||
| type duid-unstructured; | ||||
| } | ||||
| description | ||||
| "Represents the DUID and is neutral to the DUID's construction | ||||
| format."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | ||||
| IPv6 (DHCPv6), Section 11"; | ||||
| } | ||||
| /* | ||||
| * 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 { | ||||
| description | ||||
| "OPTION_AUTH (11) Authentication Option."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol | ||||
| for IPv6 (DHCPv6), Section 21.11 | ||||
| IANA 'Dynamic Host Configuration Protocol (DHCP) Authentication | ||||
| Option Name Spaces' registry. | ||||
| <https://www.iana.org/assignments/auth-namespaces>"; | ||||
| container auth-option { | ||||
| description | ||||
| "OPTION_AUTH (11) Authentication Option container."; | ||||
| leaf protocol { | ||||
| type uint8; | ||||
| description | ||||
| "The authentication protocol used by this Authentication | ||||
| option."; | ||||
| } | ||||
| leaf algorithm { | ||||
| type uint8; | ||||
| description | ||||
| "The algorithm used in the authentication protocol."; | ||||
| } | ||||
| leaf rdm { | ||||
| type uint8; | ||||
| description | ||||
| "The Replay Detection Method (RDM) used in this | ||||
| Authentication option."; | ||||
| } | ||||
| leaf replay-detection { | ||||
| type uint64; | ||||
| description | ||||
| "The replay detection information for the RDM."; | ||||
| } | ||||
| leaf auth-information { | ||||
| type string; | ||||
| description | ||||
| "The authentication information, as specified by the | ||||
| protocol and algorithm used in this Authentication | ||||
| option."; | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping status-code-option-group { | ||||
| description | ||||
| "OPTION_STATUS_CODE (13) Status Code Option."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol | ||||
| for IPv6 (DHCPv6), Section 21.13"; | ||||
| container status-code-option { | ||||
| description | ||||
| "OPTION_STATUS_CODE (13) Status Code Option container."; | ||||
| leaf status-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 status-message { | ||||
| type string; | ||||
| description | ||||
| "A UTF-8 encoded text string suitable for display to an | ||||
| end user. It MUST NOT be null-terminated."; | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping rapid-commit-option-group { | ||||
| description | ||||
| "OPTION_RAPID_COMMIT (14) Rapid Commit Option."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | ||||
| IPv6 (DHCPv6), Section 21.14"; | ||||
| container rapid-commit-option { | ||||
| presence "Enable sending of this option"; | ||||
| description | ||||
| "OPTION_RAPID_COMMIT (14) Rapid Commit Option container."; | ||||
| } | ||||
| } | ||||
| grouping vendor-specific-information-option-group { | ||||
| description | ||||
| "OPTION_VENDOR_OPTS (17) Vendor-specific Information | ||||
| Option."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol | ||||
| for IPv6 (DHCPv6), Section 21.17"; | ||||
| container vendor-specific-information-options { | ||||
| description | ||||
| "OPTION_VENDOR_OPTS (17) Vendor-specific Information | ||||
| Option container."; | ||||
| list vendor-specific-information-option { | ||||
| key enterprise-number; | ||||
| description | ||||
| "The vendor-specific information option allows for | ||||
| multiple instances in a single message. Each list entry | ||||
| defines the contents of an instance of the option."; | ||||
| leaf enterprise-number { | ||||
| type uint32; | ||||
| description | ||||
| "The vendor's registered Enterprise Number, as | ||||
| maintained by IANA."; | ||||
| reference "IANA 'Private Enterprise Numbers' registry. | ||||
| <https://www.iana.org/assignments/enterprise-numbers>"; | ||||
| } | ||||
| list vendor-option-data { | ||||
| key sub-option-code; | ||||
| description | ||||
| "Vendor options, interpreted by vendor-specific | ||||
| client/server functions."; | ||||
| leaf sub-option-code { | ||||
| type uint16; | ||||
| description | ||||
| "The code for the sub-option."; | ||||
| } | ||||
| leaf sub-option-data { | ||||
| type string { | ||||
| pattern '([0-9a-fA-F]{2}){0,}'; | ||||
| } | ||||
| description | ||||
| "The data area for the sub-option."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping reconfigure-accept-option-group { | ||||
| description | ||||
| "OPTION_RECONF_ACCEPT (20) Reconfigure Accept Option. | ||||
| A client uses the Reconfigure Accept option to announce to | ||||
| the server whether the client is willing to accept Reconfigure | ||||
| messages, and a server uses this option to tell the client | ||||
| whether or not to accept Reconfigure messages. In the absence | ||||
| of this option, the default behavior is that the client is | ||||
| unwilling to accept Reconfigure messages. The presence node | ||||
| is used to enable the option."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol | ||||
| for IPv6 (DHCPv6), Section 21.20"; | ||||
| container reconfigure-accept-option { | ||||
| presence "Enable sending of this option"; | ||||
| description | ||||
| "OPTION_RECONF_ACCEPT (20) Reconfigure Accept Option | ||||
| container."; | ||||
| } | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| 4.2. 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-07-02.yang" | <CODE BEGINS> file "ietf-dhcpv6-server@2021-10-25.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 21, line 9 ¶ | skipping to change at page 29, line 49 ¶ | |||
| 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 | |||
| (https://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-07-02 { | revision 2021-10-25 { | |||
| 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 na-assignment { | ||||
| description | ||||
| "Denotes that the server implements DHCPv6 non-temporary | ||||
| address assignment."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | ||||
| IPv6 (DHCPv6), Section 6.2"; | ||||
| } | ||||
| feature prefix-delegation { | feature prefix-delegation { | |||
| description | description | |||
| "Denotes that the server implements DHCPv6 prefix | "Denotes that the server 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"; | |||
| } | } | |||
| /* | /* | |||
| * Groupings | * Groupings | |||
| skipping to change at page 21, line 42 ¶ | skipping to change at page 30, line 41 ¶ | |||
| grouping resource-config { | grouping resource-config { | |||
| description | description | |||
| "Nodes that are reused at multiple levels in the DHCPv6 | "Nodes that are reused at multiple levels in the DHCPv6 | |||
| server's addressing hierarchy."; | server's addressing hierarchy."; | |||
| leaf-list option-set-id { | leaf-list option-set-id { | |||
| type leafref { | type leafref { | |||
| path "/dhcpv6-server/option-sets/option-set/option-set-id"; | path "/dhcpv6-server/option-sets/option-set/option-set-id"; | |||
| } | } | |||
| description | description | |||
| "The ID field of relevant set of DHCPv6 options (option-set) | "The ID field of relevant set of DHCPv6 options (option-set) | |||
| to be provisioned to clients using the network-range."; | to be provisioned to clients using the allocation-range."; | |||
| } | } | |||
| leaf valid-lifetime { | leaf valid-lifetime { | |||
| type dhc6:timer-seconds32; | type dhc6:timer-seconds32; | |||
| description | description | |||
| "Valid lifetime for the Identity Association (IA)."; | "Valid lifetime for the Identity Association (IA)."; | |||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | reference "RFC 8415: Dynamic Host Configuration Protocol for | |||
| IPv6 (DHCPv6), Section 6"; | IPv6 (DHCPv6), Section 6"; | |||
| } | } | |||
| leaf renew-time { | leaf renew-time { | |||
| type dhc6:timer-seconds32; | type dhc6:timer-seconds32; | |||
| skipping to change at page 29, line 23 ¶ | skipping to change at page 38, line 21 ¶ | |||
| "DHCPv6 servers use a 'class-selector' function in order | "DHCPv6 servers use a 'class-selector' function in order | |||
| to identify and classify incoming client messages | to identify and classify incoming client messages | |||
| so that they can be given the correct configuration. | so that they can be given the correct configuration. | |||
| The mechanisms used for implementing this function vary | The mechanisms used for implementing this function vary | |||
| greatly between different implementations such it is not | greatly between different implementations such it is not | |||
| possible to include in this module. This container provides | possible to include in this module. This container provides | |||
| a location for server implementors to augment their own | a location for server implementors to augment their own | |||
| class-selector YANG."; | class-selector YANG."; | |||
| } | } | |||
| container network-ranges { | container allocation-ranges { | |||
| description | description | |||
| "This model is based on an address and parameter | "This model is based on an address and parameter | |||
| allocation hierarchy. The top level is 'global' - which | allocation hierarchy. The top level is 'global' - which | |||
| is defined as the container for all network-ranges. Under | is defined as the container for all allocation-ranges. Under | |||
| this are the individual network-ranges."; | this are the individual allocation-ranges."; | |||
| uses resource-config; | uses resource-config; | |||
| list network-range { | list allocation-range { | |||
| key id; | key id; | |||
| description | description | |||
| "Network-ranges are identified by the 'id' key."; | "Network-ranges are identified by the 'id' key."; | |||
| leaf id { | leaf id { | |||
| type uint32; | type uint32; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Unique identifier for the network range."; | "Unique identifier for the allocation range."; | |||
| } | } | |||
| leaf description { | leaf description { | |||
| type string; | type string; | |||
| description | description | |||
| "Description for the network range."; | "Description for the allocation range."; | |||
| } | } | |||
| leaf network-prefix { | leaf network-prefix { | |||
| type inet:ipv6-prefix; | type inet:ipv6-prefix; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Network prefix."; | "Network prefix."; | |||
| } | } | |||
| uses resource-config; | uses resource-config; | |||
| container address-pools { | container address-pools { | |||
| if-feature na-assignment; | ||||
| description | description | |||
| "Configuration for the DHCPv6 server's | "Configuration for the DHCPv6 server's | |||
| address pools."; | address pools."; | |||
| list address-pool { | list address-pool { | |||
| key pool-id; | key pool-id; | |||
| description | description | |||
| "List of address pools for allocation to clients, | "List of address pools for allocation to clients, | |||
| distinguished by 'pool-id'."; | distinguished by 'pool-id'."; | |||
| leaf pool-id { | leaf pool-id { | |||
| type uint32; | type string; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Unique identifier for the pool."; | "Unique identifier for the pool."; | |||
| } | } | |||
| leaf pool-prefix { | leaf pool-prefix { | |||
| type inet:ipv6-prefix; | type inet:ipv6-prefix; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "IPv6 prefix for the pool."; | "IPv6 prefix for the pool."; | |||
| } | } | |||
| skipping to change at page 32, line 4 ¶ | skipping to change at page 40, line 51 ¶ | |||
| "List of active address leases."; | "List of active address leases."; | |||
| leaf leased-address { | leaf leased-address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "Active address lease entry."; | "Active address lease entry."; | |||
| } | } | |||
| uses lease-information; | uses lease-information; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container prefix-pools { | container prefix-pools { | |||
| if-feature prefix-delegation; | if-feature prefix-delegation; | |||
| description | description | |||
| "Configuration for the DHCPv6 server's prefix pools."; | "Configuration for the DHCPv6 server's prefix pools."; | |||
| list prefix-pool { | list prefix-pool { | |||
| key pool-id; | key pool-id; | |||
| description | description | |||
| "List of prefix pools for allocation to | "List of prefix pools for allocation to | |||
| clients, distinguished by 'pool-id'."; | clients, distinguished by 'pool-id'."; | |||
| leaf pool-id { | leaf pool-id { | |||
| type uint32; | type string; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Unique identifier for the pool."; | "Unique identifier for the pool."; | |||
| } | } | |||
| leaf pool-prefix { | leaf pool-prefix { | |||
| type inet:ipv6-prefix; | type inet:ipv6-prefix; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "IPv6 prefix for the pool."; | "IPv6 prefix for the pool."; | |||
| } | } | |||
| skipping to change at page 34, line 4 ¶ | skipping to change at page 42, line 51 ¶ | |||
| 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 | * RPCs | |||
| */ | */ | |||
| rpc delete-address-lease { | rpc delete-address-lease { | |||
| nacm:default-deny-all; | nacm:default-deny-all; | |||
| if-feature na-assignment; | ||||
| description | description | |||
| "Deletes a client's active address lease from the | "Deletes a client's active address lease from the | |||
| server's lease database. Note this will not cause the address | server's lease database. Note this will not cause the address | |||
| to be revoked from the client, and the lease may be refreshed | to be revoked from the client, and the lease may be refreshed | |||
| or renewed by the client."; | or renewed by the client."; | |||
| input { | input { | |||
| leaf lease-address-to-delete { | leaf lease-address-to-delete { | |||
| type leafref { | type leafref { | |||
| path "../../dhcpv6-server/network-ranges/network-range" + | path "../../dhcpv6-server/allocation-ranges/" + | |||
| "/address-pools/address-pool/active-leases" + | "allocation-range/address-pools/address-pool" + | |||
| "/active-lease/leased-address"; | "/active-leases/active-lease/leased-address"; | |||
| } | } | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "IPv6 address of an active lease that will be | "IPv6 address of an active lease that will be | |||
| deleted from the server."; | deleted from the server."; | |||
| } | } | |||
| } | } | |||
| output { | output { | |||
| leaf return-message { | leaf return-message { | |||
| type string; | type string; | |||
| skipping to change at page 35, line 8 ¶ | skipping to change at page 44, line 8 ¶ | |||
| if-feature prefix-delegation; | if-feature prefix-delegation; | |||
| description | description | |||
| "Deletes a client's active prefix lease from the | "Deletes a client's active prefix lease from the | |||
| server's lease database. Note, this will not cause the prefix | server's lease database. Note, this will not cause the prefix | |||
| to be revoked from the client, and the lease may be refreshed | to be revoked from the client, and the lease may be refreshed | |||
| or renewed by the client."; | or renewed by the client."; | |||
| input { | input { | |||
| leaf lease-prefix-to-delete { | leaf lease-prefix-to-delete { | |||
| type leafref { | type leafref { | |||
| path "../../dhcpv6-server/network-ranges/network-range" + | path "../../dhcpv6-server/allocation-ranges/" + | |||
| "/prefix-pools/prefix-pool/active-leases/active-lease" + | "allocation-range/prefix-pools/prefix-pool" + | |||
| "/leased-prefix"; | "/active-leases/active-lease/leased-prefix"; | |||
| } | } | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "IPv6 prefix of an active lease that will be deleted | "IPv6 prefix of an active lease that will be deleted | |||
| from the server."; | from the server."; | |||
| } | } | |||
| } | } | |||
| output { | output { | |||
| leaf return-message { | leaf return-message { | |||
| type string; | type string; | |||
| skipping to change at page 35, line 32 ¶ | skipping to change at page 44, line 32 ¶ | |||
| "Response message from the server."; | "Response message from the server."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| /* | /* | |||
| * Notifications | * Notifications | |||
| */ | */ | |||
| notification address-pool-utilization-threshold-exceeded { | notification address-pool-utilization-threshold-exceeded { | |||
| if-feature na-assignment; | ||||
| 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/allocation-ranges/" + | |||
| "address-pools/address-pool/pool-id"; | "allocation-range/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; | |||
| description | description | |||
| skipping to change at page 36, line 30 ¶ | skipping to change at page 45, line 32 ¶ | |||
| } | } | |||
| 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/allocation-ranges" + | |||
| "prefix-pools/prefix-pool/pool-id"; | "/allocation-range/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 | |||
| "Total number of prefixes in the pool."; | "Total number of prefixes in the pool."; | |||
| skipping to change at page 37, line 51 ¶ | skipping to change at page 47, line 4 ¶ | |||
| description | description | |||
| "Release (8) message."; | "Release (8) message."; | |||
| } | } | |||
| enum decline { | enum decline { | |||
| description | description | |||
| "Decline (9) message."; | "Decline (9) message."; | |||
| } | } | |||
| enum info-request { | enum info-request { | |||
| description | description | |||
| "Information request (11) message."; | "Information request (11) message."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "The message type received by the server that has caused | "The message type received by the server that has caused | |||
| the error."; | the error."; | |||
| } | } | |||
| leaf duid { | leaf duid { | |||
| type dhc6:duid; | type dhc6:duid; | |||
| description | description | |||
| "Client DUID."; | "Client DUID."; | |||
| } | } | |||
| leaf description { | leaf description { | |||
| type string; | type string; | |||
| description | description | |||
| "Description of the event (e.g., and error code or log | "Description of the event (e.g., and error code or log | |||
| message)."; | message)."; | |||
| } | } | |||
| } | } | |||
| notification decline-received { | notification decline-received { | |||
| if-feature na-assignment; | ||||
| description | description | |||
| "Notification sent when the server has received a | "Notification sent when the server has received a | |||
| Decline (9) message from a client."; | Decline (9) message from a client."; | |||
| leaf duid { | leaf duid { | |||
| type dhc6:duid; | type dhc6:duid; | |||
| description | description | |||
| "Client DUID."; | "Client DUID."; | |||
| } | } | |||
| list declined-resources { | list declined-resources { | |||
| description | description | |||
| skipping to change at page 38, line 49 ¶ | skipping to change at page 48, line 4 ¶ | |||
| description | description | |||
| "Address that has been declined."; | "Address that has been declined."; | |||
| } | } | |||
| } | } | |||
| 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 duid { | leaf duid { | |||
| type dhc6:duid; | type dhc6:duid; | |||
| description | description | |||
| "Client DUID."; | "Client DUID."; | |||
| } | } | |||
| uses dhc6:status; | uses dhc6:status; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 3.2. DHCPv6 Relay YANG Module | 4.3. 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-07-02.yang" | <CODE BEGINS> file "ietf-dhcpv6-relay@2021-10-25.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 43 ¶ | skipping to change at page 49, line 46 ¶ | |||
| 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 | |||
| (https://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-07-02 { | revision 2021-10-25 { | |||
| 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 prefix-delegation { | feature prefix-delegation { | |||
| description | description | |||
| "Enable if the relay functions as a delegating router for | "Enable if the relay functions as a delegating router for | |||
| DHCPv6 prefix delegation."; | DHCPv6 prefix 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"; | |||
| skipping to change at page 49, line 4 ¶ | skipping to change at page 58, line 6 ¶ | |||
| path "../../../dhcpv6-relay/relay-if/if-name"; | path "../../../dhcpv6-relay/relay-if/if-name"; | |||
| } | } | |||
| description | description | |||
| "Name of the interface that has been removed."; | "Name of the interface that has been removed."; | |||
| } | } | |||
| leaf last-ipv6-addr { | leaf last-ipv6-addr { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "Last IPv6 address configured on the interface."; | "Last IPv6 address configured on the interface."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 3.3. DHCPv6 Client YANG Module | 4.4. 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-07-02.yang" | <CODE BEGINS> file "ietf-dhcpv6-client@2021-10-25.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 50, line 33 ¶ | skipping to change at page 59, line 35 ¶ | |||
| 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 | |||
| (https://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-07-02 { | revision 2021-10-25 { | |||
| 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 { | feature non-temp-addr { | |||
| description | description | |||
| "Denotes that the client supports DHCPv6 non-temporary address | "Denotes that the client supports DHCPv6 non-temporary address | |||
| allocations."; | allocations."; | |||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | reference "RFC 8415: Dynamic Host Configuration Protocol for | |||
| IPv6 (DHCPv6), Section 6.2"; | IPv6 (DHCPv6), Section 6.2"; | |||
| } | } | |||
| feature prefix-delegation { | ||||
| feature prefix-del { | ||||
| 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 { | feature temp-addr { | |||
| description | description | |||
| "Denotes that the client supports DHCPv6 temporary address | "Denotes that the client supports DHCPv6 temporary address | |||
| allocations."; | allocations."; | |||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | reference "RFC 8415: Dynamic Host Configuration Protocol for | |||
| IPv6 (DHCPv6), Section 6.5"; | IPv6 (DHCPv6), Section 6.5"; | |||
| } | } | |||
| feature anon-profile { | ||||
| description | ||||
| "Denotes that the client supports DHCP anonymity | ||||
| profiles."; | ||||
| reference "RFC 7844: Anonymity Profiles for DHCP Clients"; | ||||
| } | ||||
| /* | /* | |||
| * 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 55, line 43 ¶ | skipping to change at page 65, line 4 ¶ | |||
| */ | */ | |||
| container dhcpv6-client { | container dhcpv6-client { | |||
| description | description | |||
| "DHCPv6 client configuration and state."; | "DHCPv6 client configuration and state."; | |||
| leaf enabled { | leaf enabled { | |||
| type boolean; | type boolean; | |||
| default true; | default true; | |||
| description | description | |||
| "Globally enables the DHCP client function."; | "Globally enables the DHCP client function."; | |||
| } | ||||
| leaf client-duid { | ||||
| if-feature "non-temp-addr or prefix-del " + | ||||
| "or temp-addr and not anon-profile"; | ||||
| type dhc6:duid; | ||||
| description | ||||
| "A single Client DUID that will be used by all of the | ||||
| client's DHCPv6 enabled interfaces."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | ||||
| IPv6 (DHCPv6), Section 11"; | ||||
| } | } | |||
| list client-if { | list client-if { | |||
| key if-name; | key if-name; | |||
| description | description | |||
| "The list of interfaces for which the client will | "The list of interfaces for which the client will | |||
| be requesting DHCPv6 configuration."; | be requesting DHCPv6 configuration."; | |||
| leaf if-name { | leaf if-name { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Reference to the interface entry that the requested | "Reference to the interface entry that the requested | |||
| configuration is relevant to."; | configuration is relevant to."; | |||
| } | } | |||
| leaf enabled { | leaf enabled { | |||
| type boolean; | type boolean; | |||
| default true; | default true; | |||
| description | description | |||
| "Enables the DHCP client function for this interface."; | "Enables the DHCP client function for this interface."; | |||
| } | } | |||
| leaf duid { | leaf interface-duid { | |||
| if-feature "non-temp-addr or prefix-del " + | ||||
| "or temp-addr and anon-profile"; | ||||
| type dhc6:duid; | type dhc6:duid; | |||
| description | description | |||
| "Client DUID."; | "Per-interface Client DUIDs for use with DHCP anonymity | |||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | profiles."; | |||
| IPv6 (DHCPv6), Section 11"; | reference "RFC 7844: Anonymity Profiles for DHCP Clients, | |||
| Section 3"; | ||||
| } | } | |||
| 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: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; | if-feature non-temp-addr; | |||
| 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."; | |||
| skipping to change at page 57, line 30 ¶ | skipping to change at page 67, line 4 ¶ | |||
| 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."; | |||
| } | } | |||
| uses lease-state; | uses lease-state; | |||
| } | } | |||
| } | } | |||
| list ia-ta { | list ia-ta { | |||
| if-feature temporary-address; | if-feature temp-addr; | |||
| 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."; | |||
| skipping to change at page 58, line 20 ¶ | skipping to change at page 67, line 43 ¶ | |||
| "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."; | |||
| } | } | |||
| uses lease-state; | uses lease-state; | |||
| } | } | |||
| } | } | |||
| list ia-pd { | list ia-pd { | |||
| if-feature prefix-delegation; | if-feature prefix-del; | |||
| 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"; | |||
| leaf ia-id { | leaf ia-id { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The unique identifier for this IA_PD."; | "The unique identifier for this IA_PD."; | |||
| reference "RFC 8415: Dynamic Host Configuration Protocol | reference "RFC 8415: Dynamic Host Configuration Protocol | |||
| for IPv6 (DHCPv6), Section 12"; | for IPv6 (DHCPv6), Section 12"; | |||
| } | } | |||
| leaf prefix-length-hint { | ||||
| type uint8 { | ||||
| range "1..128"; | ||||
| } | ||||
| description "Prefix-length hint value included | ||||
| in the messages sent to the server to indicate a | ||||
| preference for the size of the prefix to be delegated."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol | ||||
| for IPv6 (DHCPv6), Section 18.2.1"; | ||||
| } | ||||
| container ia-pd-options { | container ia-pd-options { | |||
| description | description | |||
| "An augmentation point for additional options that the | "An augmentation point for additional options that the | |||
| client will send in the IA_PD-options field of | client will send in the IA_PD-options field of | |||
| OPTION_IA_TA."; | OPTION_IA_TA."; | |||
| } | } | |||
| 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."; | |||
| skipping to change at page 59, line 28 ¶ | skipping to change at page 69, line 13 ¶ | |||
| } | } | |||
| 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"; | if-feature "non-temp-addr or temp-addr"; | |||
| 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 62, line 4 ¶ | skipping to change at page 71, line 38 ¶ | |||
| 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 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; | uses dhc6:status; | |||
| } | } | |||
| notification server-duid-changed { | notification server-duid-changed { | |||
| if-feature "non-temporary-address or prefix-delegation or " + | if-feature "non-temp-addr or prefix-del or " + | |||
| "temporary-address"; | "temp-addr"; | |||
| 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 | |||
| "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; | if-feature non-temp-addr; | |||
| 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; | if-feature temp-addr; | |||
| 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-del; | |||
| 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 | 5. Security Considerations | |||
| This module imports typedefs from [RFC6991]. | ||||
| <CODE BEGINS> file "ietf-dhcpv6-common@2021-07-02.yang" | ||||
| module ietf-dhcpv6-common { | ||||
| yang-version 1.1; | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-common"; | ||||
| prefix "dhc6"; | ||||
| organization | ||||
| "IETF DHC (Dynamic Host Configuration) Working Group"; | ||||
| contact | ||||
| "WG Web: <https://datatracker.ietf.org/wg/dhc/> | ||||
| WG List: <mailto:dhcwg@ietf.org> | ||||
| Author: Yong Cui <yong@csnet1.cs.tsinghua.edu.cn> | ||||
| Author: Linhui Sun <lh.sunlinh@gmail.com> | ||||
| Editor: Ian Farrer <ian.farrer@telekom.de> | ||||
| Author: Sladjana Zeichlin <sladjana.zechlin@telekom.de> | ||||
| Author: Zihao He <hezihao9512@gmail.com> | ||||
| Author: Michal Nowikowski <godfryd@isc.org>"; | ||||
| description | ||||
| "This YANG module defines common components used for the | ||||
| configuration and management of DHCPv6. | ||||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', | ||||
| 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', | ||||
| 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document | ||||
| are to be interpreted as described in BCP 14 (RFC 2119) | ||||
| (RFC 8174) when, and only when, they appear in all | ||||
| capitals, as shown here. | ||||
| Copyright (c) 2021 IETF Trust and the persons identified as | ||||
| authors of the code. All rights reserved. | ||||
| Redistribution and use in source and binary forms, with or | ||||
| without modification, is permitted pursuant to, and subject | ||||
| to the license terms contained in, the Simplified BSD License | ||||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
| Relating to IETF Documents | ||||
| (https://trustee.ietf.org/license-info). | ||||
| This version of this YANG module is part of RFC XXXX; see | ||||
| the RFC itself for full legal notices."; | ||||
| revision 2021-07-02 { | ||||
| description | ||||
| "Initial Revision."; | ||||
| reference | ||||
| "XXXX: YANG Data Model for DHCPv6 Configuration"; | ||||
| } | ||||
| typedef threshold { | ||||
| type uint8 { | ||||
| range 1..100; | ||||
| } | ||||
| description | ||||
| "Threshold value in percent."; | ||||
| } | ||||
| typedef timer-seconds32 { | ||||
| type uint32; | ||||
| units "seconds"; | ||||
| description | ||||
| "Timer value type, in seconds (32-bit range)."; | ||||
| } | ||||
| typedef duid-base { | ||||
| type string { | ||||
| pattern '([0-9a-fA-F]{2}){3,130}'; | ||||
| } | ||||
| description | ||||
| "Each DHCP server and client has a DUID (DHCP Unique | ||||
| Identifier). The DUID consists of a two-octet | ||||
| type field and an arbitrary length (1-128 octets) content | ||||
| field. The duid-base type is used by other duid types with | ||||
| additional pattern constraints. | ||||
| Currently, there are four defined types of DUIDs | ||||
| in RFC 8415 and RFC 6355 - DUID-LLT, DUID-EN, DUID-LL | ||||
| and DUID-UUID. DUID-unstructured represents DUIDs which | ||||
| do not follow any of the defined formats."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | ||||
| IPv6 (DHCPv6), Section 11 | ||||
| RFC 6355: Definition of the UUID-Based DHCPv6 Unique | ||||
| Identifier (DUID-UUID), Section 4"; | ||||
| } | ||||
| typedef duid-llt { | ||||
| type duid-base { | ||||
| pattern '0001' | ||||
| + '[0-9a-fA-F]{12,}'; | ||||
| } | ||||
| description | ||||
| "DUID type 1, based on Link-Layer Address Plus Time | ||||
| (DUID-LLT). Constructed with a 2-octet hardware type assigned | ||||
| by IANA, 4-octet containing the time the DUID is generated | ||||
| (represented in seconds since midnight (UTC), January 1, 2000, | ||||
| modulo 2^32), and a link-layer address. The address is encoded | ||||
| without separator characters. For example: | ||||
| +------+------+----------+--------------+ | ||||
| | 0001 | 0006 | 28490058 | 00005E005300 | | ||||
| +------+------+----------+--------------+ | ||||
| This example includes the 2-octet DUID type of 1 (0x01), the | ||||
| hardware type is 0x06 (IEEE Hardware Types) the creation | ||||
| time is 0x028490058 (constructed as described above). Finally, | ||||
| the link-layer address is 0x5E005300 (EUI-48 address | ||||
| 00-00-5E-00-53-00)"; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | ||||
| IPv6 (DHCPv6), Section 11.2 | ||||
| IANA 'Hardware Types' registry. | ||||
| <https://www.iana.org/assignments/arp-parameters>"; | ||||
| } | ||||
| typedef duid-en { | ||||
| type duid-base { | ||||
| pattern '0002' | ||||
| + '[0-9a-fA-F]{4,}'; | ||||
| } | ||||
| description | ||||
| "DUID type 2, assigned by vendor based on Enterprise | ||||
| Number (DUID-EN). This DUID consists of the 4-octet vendor's | ||||
| registered Private Enterprise Number as maintained by IANA | ||||
| followed by a unique identifier assigned by the vendor. For | ||||
| example: | ||||
| +------+----------+------------------+ | ||||
| | 0002 | 00007ED9 | 0CC084D303000912 | | ||||
| +------+----------+------------------+ | ||||
| This example includes the 2-octet DUID type of 2 (0x02), | ||||
| 4-octets for the Enterprise Number (0x7ED9), followed by | ||||
| 8-octets of identifier data (0x0CC084D303000912)."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | ||||
| IPv6 (DHCPv6), Section 11.3 | ||||
| IANA 'Private Enterprise Numbers' registry. | ||||
| <https://www.iana.org/assignments/enterprise-numbers>"; | ||||
| } | ||||
| typedef duid-ll { | ||||
| type duid-base { | ||||
| pattern '0003' | ||||
| + '([0-9a-fA-F]){4,}'; | ||||
| } | ||||
| description | ||||
| "DUID type 3, based on Link-Layer Address (DUID-LL). | ||||
| Constructed with a 2-octet hardware type assigned | ||||
| by IANA, and a link-layer address. The address is encoded | ||||
| without separator characters. For example: | ||||
| +------+------+--------------+ | ||||
| | 0003 | 0006 | 00005E005300 | | ||||
| +------+------+--------------+ | ||||
| This example includes the 2-octet DUID type of 3 (0x03), the | ||||
| hardware type is 0x06 (IEEE Hardware Types), and the link-layer | ||||
| address is 0x5E005300 (EUI-48 address 00-00-5E-00-53-00)"; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | ||||
| IPv6 (DHCPv6), Section 11.4 | ||||
| IANA 'Hardware Types' registry. | ||||
| <https://www.iana.org/assignments/arp-parameters>"; | ||||
| } | ||||
| typedef duid-uuid { | ||||
| type duid-base { | ||||
| pattern '0004' | ||||
| + '[0-9a-fA-F]{32}'; | ||||
| } | ||||
| description | ||||
| "DUID type 4, based on Universally Unique Identifier | ||||
| (DUID-UUID). This type of DUID consists of 16 octets | ||||
| containing a 128-bit UUID. For example: | ||||
| +------+----------------------------------+ | ||||
| | 0004 | 9f03b182705747e38a1e422910078642 | | ||||
| +------+----------------------------------+ | ||||
| This example includes the 2-octet DUID type of 4 (0x04), and | ||||
| the UUID 9f03b182-7057-47e3-8a1e-422910078642."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | ||||
| IPv6 (DHCPv6), Section 11.5 | ||||
| RFC 6355: Definition of the UUID-Based DHCPv6 Unique Identifier | ||||
| (DUID-UUID)"; | ||||
| } | ||||
| typedef duid-unstructured { | ||||
| type duid-base { | ||||
| pattern '[0-9a-fA-F]{3}' | ||||
| + '[05-9a-fA-F]' | ||||
| + '([0-9a-fA-F])*'; | ||||
| } | ||||
| description | ||||
| "Used for DUIDs following any other formats than DUID | ||||
| types 1-4. For example: | ||||
| +----------------------------------+ | ||||
| | 7b6a164d325946539dc540fb539bc430 | | ||||
| +----------------------------------+ | ||||
| Here, an arbitrary 16-octet value is used. The only constraint | ||||
| placed on this is that the first 2-octects are not 0x01-0x04 | ||||
| to avoid collision with the other defined DUID types | ||||
| (duid-llt, duid-en, duid-ll, or duid-uuid)."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | ||||
| IPv6 (DHCPv6), Section 11"; | ||||
| } | ||||
| typedef duid { | ||||
| type union { | ||||
| type duid-llt; | ||||
| type duid-en; | ||||
| type duid-ll; | ||||
| type duid-uuid; | ||||
| type duid-unstructured; | ||||
| } | ||||
| description | ||||
| "Represents the DUID and is neutral to the DUID's construction | ||||
| format."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | ||||
| IPv6 (DHCPv6), Section 11"; | ||||
| } | ||||
| /* | ||||
| * 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 { | ||||
| description | ||||
| "OPTION_AUTH (11) Authentication Option."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol | ||||
| for IPv6 (DHCPv6), Section 21.11 | ||||
| IANA 'Dynamic Host Configuration Protocol (DHCP) Authentication | ||||
| Option Name Spaces' registry. | ||||
| <https://www.iana.org/assignments/auth-namespaces>"; | ||||
| container auth-option { | ||||
| description | ||||
| "OPTION_AUTH (11) Authentication Option container."; | ||||
| leaf protocol { | ||||
| type uint8; | ||||
| description | ||||
| "The authentication protocol used by this Authentication | ||||
| option."; | ||||
| } | ||||
| leaf algorithm { | ||||
| type uint8; | ||||
| description | ||||
| "The algorithm used in the authentication protocol."; | ||||
| } | ||||
| leaf rdm { | ||||
| type uint8; | ||||
| description | ||||
| "The Replay Detection Method (RDM) used in this | ||||
| Authentication option."; | ||||
| } | ||||
| leaf replay-detection { | ||||
| type uint64; | ||||
| description | ||||
| "The replay detection information for the RDM."; | ||||
| } | ||||
| leaf auth-information { | ||||
| type string; | ||||
| description | ||||
| "The authentication information, as specified by the | ||||
| protocol and algorithm used in this Authentication | ||||
| option."; | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping status-code-option-group { | ||||
| description | ||||
| "OPTION_STATUS_CODE (13) Status Code Option."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol | ||||
| for IPv6 (DHCPv6), Section 21.13"; | ||||
| container status-code-option { | ||||
| description | ||||
| "OPTION_STATUS_CODE (13) Status Code Option container."; | ||||
| leaf status-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 status-message { | ||||
| type string; | ||||
| description | ||||
| "A UTF-8 encoded text string suitable for display to an | ||||
| end user. It MUST NOT be null-terminated."; | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping rapid-commit-option-group { | ||||
| description | ||||
| "OPTION_RAPID_COMMIT (14) Rapid Commit Option."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol for | ||||
| IPv6 (DHCPv6), Section 21.14"; | ||||
| container rapid-commit-option { | ||||
| presence "Enable sending of this option"; | ||||
| description | ||||
| "OPTION_RAPID_COMMIT (14) Rapid Commit Option container."; | ||||
| } | ||||
| } | ||||
| grouping vendor-specific-information-option-group { | ||||
| description | ||||
| "OPTION_VENDOR_OPTS (17) Vendor-specific Information | ||||
| Option."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol | ||||
| for IPv6 (DHCPv6), Section 21.17"; | ||||
| container vendor-specific-information-options { | ||||
| description | ||||
| "OPTION_VENDOR_OPTS (17) Vendor-specific Information | ||||
| Option container."; | ||||
| list vendor-specific-information-option { | ||||
| key enterprise-number; | ||||
| description | ||||
| "The vendor-specific information option allows for | ||||
| multiple instances in a single message. Each list entry | ||||
| defines the contents of an instance of the option."; | ||||
| leaf enterprise-number { | ||||
| type uint32; | ||||
| description | ||||
| "The vendor's registered Enterprise Number, as | ||||
| maintained by IANA."; | ||||
| reference "IANA 'Private Enterprise Numbers' registry. | ||||
| <https://www.iana.org/assignments/enterprise-numbers>"; | ||||
| } | ||||
| list vendor-option-data { | ||||
| key sub-option-code; | ||||
| description | ||||
| "Vendor options, interpreted by vendor-specific | ||||
| client/server functions."; | ||||
| leaf sub-option-code { | ||||
| type uint16; | ||||
| description | ||||
| "The code for the sub-option."; | ||||
| } | ||||
| leaf sub-option-data { | ||||
| type string { | ||||
| pattern '([0-9a-fA-F]{2}){0,}'; | ||||
| } | ||||
| description | ||||
| "The data area for the sub-option."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping reconfigure-accept-option-group { | ||||
| description | ||||
| "OPTION_RECONF_ACCEPT (20) Reconfigure Accept Option. | ||||
| A client uses the Reconfigure Accept option to announce to | ||||
| the server whether the client is willing to accept Reconfigure | ||||
| messages, and a server uses this option to tell the client | ||||
| whether or not to accept Reconfigure messages. In the absence | ||||
| of this option, the default behavior is that the client is | ||||
| unwilling to accept Reconfigure messages. The presence node | ||||
| is used to enable the option."; | ||||
| reference "RFC 8415: Dynamic Host Configuration Protocol | ||||
| for IPv6 (DHCPv6), Section 21.20"; | ||||
| container reconfigure-accept-option { | ||||
| presence "Enable sending of this option"; | ||||
| description | ||||
| "OPTION_RECONF_ACCEPT (20) Reconfigure Accept Option | ||||
| container."; | ||||
| } | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| 4. Security Considerations | ||||
| The YANG modules defined in this document are designed to be accessed | The YANG modules defined in this document are designed to be accessed | |||
| via network management protocols such as NETCONF [RFC6241] or | via network management protocols such as NETCONF [RFC6241] or | |||
| RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport | RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport | |||
| layer, and the mandatory-to-implement secure transport is Secure | layer, and the mandatory-to-implement secure transport is Secure | |||
| Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the | Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the | |||
| mandatory-to-implement secure transport is TLS [RFC8446]. | mandatory-to-implement secure transport is TLS [RFC8446]. | |||
| The Network Configuration Access Control Model (NACM) [RFC8341] | The Network Configuration Access Control Model (NACM) [RFC8341] | |||
| provides the means to restrict access for particular NETCONF or | provides the means to restrict access for particular NETCONF or | |||
| skipping to change at page 72, line 42 ¶ | skipping to change at page 74, line 12 ¶ | |||
| denial of service attack as traffic will no longer be routed to | denial of service attack as traffic will no longer be routed to | |||
| the client. | the client. | |||
| Some of the readable data nodes in this YANG module may be considered | Some of the readable data nodes in this YANG module may be considered | |||
| sensitive or vulnerable in some network environments. Therefore, it | sensitive or vulnerable in some network environments. Therefore, it | |||
| is important to control read access (e.g., only permitting get, get- | is important to control read access (e.g., only permitting get, get- | |||
| config, or notifications) to these data nodes. These subtrees and | config, or notifications) to these data nodes. These subtrees and | |||
| data nodes can be misused to track the activity of a host: | data nodes can be misused to track the activity of a host: | |||
| * Information the server holds about clients with active leases: | * Information the server holds about clients with active leases: | |||
| (dhc6-srv/network-ranges/network-range/address-pools/ address- | (dhc6-srv/allocation-ranges/allocation-range/address-pools/ | |||
| pool/active-leases) | address-pool/active-leases) | |||
| * Information the relay holds about clients with active leases: | * Information the relay holds about clients with active leases: | |||
| (dhc6-rly/relay-if/prefix-delegation/) | (dhc6-rly/relay-if/prefix-delegation/) | |||
| Security considerations related to DHCPv6 are discussed in [RFC8415]. | Security considerations related to DHCPv6 are discussed in [RFC8415]. | |||
| Security considerations given in [RFC7950] are also applicable here. | Security considerations given in [RFC7950] are also applicable here. | |||
| 5. IANA Considerations | 6. IANA Considerations | |||
| This document requests IANA to register the following URIs in the | This document requests IANA to register the following URIs in the | |||
| "IETF XML Registry" [RFC3688]: | "IETF XML Registry" [RFC3688]: | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-dhcpv6-server | URI: urn:ietf:params:xml:ns:yang:ietf-dhcpv6-server | |||
| Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
| XML: N/A; the requested URI is an XML namespace. | XML: N/A; the requested URI is an XML namespace. | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-dhcpv6-relay | URI: urn:ietf:params:xml:ns:yang:ietf-dhcpv6-relay | |||
| Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
| skipping to change at page 74, line 5 ¶ | skipping to change at page 75, line 17 ¶ | |||
| name: ietf-dhcpv6-client | name: ietf-dhcpv6-client | |||
| 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 | |||
| reference: RFC XXXX YANG Data Model for DHCPv6 Configuration | reference: RFC XXXX YANG Data Model for DHCPv6 Configuration | |||
| name: ietf-dhcpv6-common | name: ietf-dhcpv6-common | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-dhcpv6-common | namespace: urn:ietf:params:xml:ns:yang:ietf-dhcpv6-common | |||
| prefix: dhc6 | prefix: dhc6 | |||
| reference: RFC XXXX YANG Data Model for DHCPv6 Configuration | reference: RFC XXXX YANG Data Model for DHCPv6 Configuration | |||
| 6. Acknowledgments | 7. Acknowledgments | |||
| The authors would like to thank Qi Sun, Lishan Li, Hao Wang, Tomek | The authors would like to thank Qi Sun, Lishan Li, Hao Wang, Tomek | |||
| Mrugalski, Marcin Siodelski, Bernie Volz, Ted Lemon, Bing Liu, Tom | Mrugalski, Marcin Siodelski, Bernie Volz, Ted Lemon, Bing Liu, Tom | |||
| Petch, and Acee Lindem for their valuable comments and contributions | Petch, and Acee Lindem for their valuable comments and contributions | |||
| to this work. | to this work. | |||
| 7. Contributors | 8. Contributors | |||
| The following individuals are co-authors of this document: | The following individuals are co-authors of this document: | |||
| Yong Cui | Yong Cui | |||
| Tsinghua University | Tsinghua University | |||
| Beijing, 100084 | Beijing, 100084 | |||
| P.R. China | P.R. China | |||
| Email: cuiyong@tsinghua.edu.cn | Email: cuiyong@tsinghua.edu.cn | |||
| Linhui Sun | Linhui Sun | |||
| skipping to change at page 74, line 47 ¶ | skipping to change at page 76, line 36 ¶ | |||
| Beijing, 100084 | Beijing, 100084 | |||
| P.R. China | P.R. China | |||
| Email: hezihao9512@gmail.com | Email: hezihao9512@gmail.com | |||
| Michal Nowikowski | Michal Nowikowski | |||
| Internet Systems Consortium | Internet Systems Consortium | |||
| Gdansk | Gdansk | |||
| Poland | Poland | |||
| Email: godfryd@isc.org | Email: godfryd@isc.org | |||
| 8. References | 9. References | |||
| 8.1. Normative References | 9.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
| DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
| <https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
| skipping to change at page 75, line 37 ¶ | skipping to change at page 77, line 28 ¶ | |||
| <https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
| [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
| Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
| <https://www.rfc-editor.org/info/rfc6242>. | <https://www.rfc-editor.org/info/rfc6242>. | |||
| [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
| RFC 6991, DOI 10.17487/RFC6991, July 2013, | RFC 6991, DOI 10.17487/RFC6991, July 2013, | |||
| <https://www.rfc-editor.org/info/rfc6991>. | <https://www.rfc-editor.org/info/rfc6991>. | |||
| [RFC7844] Huitema, C., Mrugalski, T., and S. Krishnan, "Anonymity | ||||
| Profiles for DHCP Clients", RFC 7844, | ||||
| DOI 10.17487/RFC7844, May 2016, | ||||
| <https://www.rfc-editor.org/info/rfc7844>. | ||||
| [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
| RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
| <https://www.rfc-editor.org/info/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
| Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
| skipping to change at page 77, line 5 ¶ | skipping to change at page 78, line 48 ¶ | |||
| Internet Assigned Numbers Authority, "Dynamic Host | Internet Assigned Numbers Authority, "Dynamic Host | |||
| Configuration Protocol (DHCP) Authentication Option Name | Configuration Protocol (DHCP) Authentication Option Name | |||
| Spaces", | Spaces", | |||
| <https://www.iana.org/assignments/auth-namespaces>. | <https://www.iana.org/assignments/auth-namespaces>. | |||
| [IANA-STATUS] | [IANA-STATUS] | |||
| Internet Assigned Numbers Authority, "Dynamic Host | Internet Assigned Numbers Authority, "Dynamic Host | |||
| Configuration Protocol for IPv6 (DHCPv6) Status Codes", | Configuration Protocol for IPv6 (DHCPv6) Status Codes", | |||
| <https://www.iana.org/assignments/dhcpv6-parameters>. | <https://www.iana.org/assignments/dhcpv6-parameters>. | |||
| 8.2. Informative References | 9.2. Informative References | |||
| [RFC3319] Schulzrinne, H. and B. Volz, "Dynamic Host Configuration | [RFC3319] Schulzrinne, H. and B. Volz, "Dynamic Host Configuration | |||
| Protocol (DHCPv6) Options for Session Initiation Protocol | Protocol (DHCPv6) Options for Session Initiation Protocol | |||
| (SIP) Servers", RFC 3319, DOI 10.17487/RFC3319, July 2003, | (SIP) Servers", RFC 3319, DOI 10.17487/RFC3319, July 2003, | |||
| <https://www.rfc-editor.org/info/rfc3319>. | <https://www.rfc-editor.org/info/rfc3319>. | |||
| Appendix A. Data Tree Examples | Appendix A. Data Tree Examples | |||
| This section contains XML examples of data trees for the different | This section contains XML examples of data trees for the different | |||
| DHCPv6 elements. | DHCPv6 elements. | |||
| A.1. DHCPv6 Server Configuration Example | A.1. DHCPv6 Server Configuration Examples | |||
| The following example shows a basic configuration for a server. The | The following example shows a basic configuration for a server. The | |||
| configuration defines: | configuration defines: | |||
| * Enabling the DHCP server function | * Enabling the DHCP server function | |||
| * The server's DUID | * The server's DUID | |||
| * An option set (id=1) with configuration for the Solicit Max Retry | * An option set (id=1) with configuration for the Solicit Max Retry | |||
| Timeout (SOL_MAX_RT (82)) option. | Timeout (SOL_MAX_RT (82)) option. | |||
| skipping to change at page 78, line 20 ¶ | skipping to change at page 80, line 20 ¶ | |||
| <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> | |||
| <sol-max-rt-option> | <sol-max-rt-option> | |||
| <sol-max-rt-value>3600</sol-max-rt-value> | <sol-max-rt-value>3600</sol-max-rt-value> | |||
| </sol-max-rt-option> | </sol-max-rt-option> | |||
| </option-set> | </option-set> | |||
| </option-sets> | </option-sets> | |||
| <class-selector/> | <class-selector/> | |||
| <network-ranges> | <allocation-ranges> | |||
| <valid-lifetime>54000</valid-lifetime> | <valid-lifetime>54000</valid-lifetime> | |||
| <renew-time>7200</renew-time> | <renew-time>7200</renew-time> | |||
| <rebind-time>32400</rebind-time> | <rebind-time>32400</rebind-time> | |||
| <preferred-lifetime>43200</preferred-lifetime> | <preferred-lifetime>43200</preferred-lifetime> | |||
| <network-range> | <allocation-range> | |||
| <id>1</id> | <id>1</id> | |||
| <description>example-network-range</description> | <description>example-allocation-range</description> | |||
| <network-prefix>2001:db8::/32</network-prefix> | <network-prefix>2001:db8::/32</network-prefix> | |||
| <option-set-id>1</option-set-id> | <option-set-id>1</option-set-id> | |||
| <address-pools> | <address-pools> | |||
| <address-pool> | <address-pool> | |||
| <pool-id>1</pool-id> | <pool-id>1</pool-id> | |||
| <pool-prefix>2001:db8:1:1::/64</pool-prefix> | <pool-prefix>2001:db8:1:1::/64</pool-prefix> | |||
| <start-address>2001:db8:1:1::1000</start-address> | <start-address>2001:db8:1:1::1000</start-address> | |||
| <end-address>2001:db8:1:1::2000</end-address> | <end-address>2001:db8:1:1::2000</end-address> | |||
| <max-address-utilization>50</max-address-utilization> | <max-address-utilization>50</max-address-utilization> | |||
| <option-set-id>1</option-set-id> | <option-set-id>1</option-set-id> | |||
| </address-pool> | </address-pool> | |||
| </address-pools> | </address-pools> | |||
| </network-range> | </allocation-range> | |||
| </network-ranges> | </allocation-ranges> | |||
| </dhcpv6-server> | </dhcpv6-server> | |||
| Figure 4: Basic Server Configuration Example XML | Figure 4: Basic Server Configuration Example XML | |||
| The following example shows a static host reservation within an | The following example shows a static host reservation within an | |||
| address pool. The host's lease timers are configured to be longer | address pool. The host's lease timers are configured to be longer | |||
| than hosts from the pool with dynamically assigned addresses. | than hosts from the pool with dynamically assigned addresses. | |||
| <address-pools> | <address-pools> | |||
| <address-pool> | <address-pool> | |||
| skipping to change at page 79, line 33 ¶ | skipping to change at page 81, line 33 ¶ | |||
| </host-reservations> | </host-reservations> | |||
| </address-pool> | </address-pool> | |||
| </address-pools> | </address-pools> | |||
| Figure 5: Server 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-utilization' 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> | <allocation-ranges> | |||
| <network-range> | <allocation-range> | |||
| <id>1</id> | <id>1</id> | |||
| <description>prefix-pool-example</description> | <description>prefix-pool-example</description> | |||
| <network-prefix>2001:db8::/32</network-prefix> | <network-prefix>2001:db8::/32</network-prefix> | |||
| <prefix-pools> | <prefix-pools> | |||
| <valid-lifetime>54000</valid-lifetime> | <valid-lifetime>54000</valid-lifetime> | |||
| <renew-time>7200</renew-time> | <renew-time>7200</renew-time> | |||
| <rebind-time>32400</rebind-time> | <rebind-time>32400</rebind-time> | |||
| <preferred-lifetime>43200</preferred-lifetime> | <preferred-lifetime>43200</preferred-lifetime> | |||
| <prefix-pool> | <prefix-pool> | |||
| <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> | </allocation-range> | |||
| </network-ranges> | </allocation-ranges> | |||
| Figure 6: Server 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 shows how the option definitions can be extended via | The example shows how the option definitions can be extended via | |||
| skipping to change at page 82, line 42 ¶ | skipping to change at page 84, line 42 ¶ | |||
| <relay-options> | <relay-options> | |||
| <interface-id-option> | <interface-id-option> | |||
| <interface-id>EXAMPLE-INTERFACE-ID</interface-id> | <interface-id>EXAMPLE-INTERFACE-ID</interface-id> | |||
| </interface-id-option> | </interface-id-option> | |||
| </relay-options> | </relay-options> | |||
| </relay-if> | </relay-if> | |||
| </dhcpv6-relay> | </dhcpv6-relay> | |||
| Figure 8: Basic Relay Configuration Example XML | Figure 8: Basic Relay Configuration Example XML | |||
| A.3. DHCPv6 Client Configuration Examples | A.3. DHCPv6 Client Configuration Example | |||
| The following example shows a basic configuration for a DHCP client | The following example shows a basic configuration for a DHCP client | |||
| and its interaction with the ietf-interfaces module. The | and its interaction with the ietf-interfaces module. The | |||
| configuration defines: | configuration defines: | |||
| * Enabling the DHCP relay function globally and for the relevant | * Enabling the DHCP relay function globally and for the relevant | |||
| interface. | interface. | |||
| * References the interface that the client configuration is relevant | * References the interface that the client configuration is relevant | |||
| for via an inteface-ref to the ietf-interfaces module. | for via an inteface-ref to the ietf-interfaces module. | |||
| skipping to change at page 84, line 17 ¶ | skipping to change at page 86, line 17 ¶ | |||
| <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 | <dhcpv6-client | |||
| xmlns="urn:ietf:params:xml:ns:yang:ietf-dhcpv6-client"> | xmlns="urn:ietf:params:xml:ns:yang:ietf-dhcpv6-client"> | |||
| <enabled>true</enabled> | <enabled>true</enabled> | |||
| <client-duid>000200090CC084D303000913</client-duid> | ||||
| <client-if> | <client-if> | |||
| <if-name>eth0</if-name> | <if-name>eth0</if-name> | |||
| <enabled>true</enabled> | <enabled>true</enabled> | |||
| <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>32473</enterprise-number> | <enterprise-number>32473</enterprise-number> | |||
| skipping to change at page 86, line 41 ¶ | skipping to change at page 88, line 41 ¶ | |||
| 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 | |||
| (https://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-07-02 { | revision 2021-10-25 { | |||
| 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 88, line 43 ¶ | skipping to change at page 90, line 43 ¶ | |||
| So that they can be defined within option sets. However, there are | So that they can be defined within option sets. However, there are | |||
| some options which are only applicable for specific deployment | some options which are only applicable for specific deployment | |||
| scenarios and in these cases it may be more logical to augment the | scenarios and in these cases it may be more logical to augment the | |||
| option group to a location relevant for the option. | option group to a location relevant for the option. | |||
| One example for this could be OPTION_PD_EXCLUDE (67). This option is | One example for this could be OPTION_PD_EXCLUDE (67). This option is | |||
| only relevant in combination with a delegated prefix which contains a | only relevant in combination with a delegated prefix which contains a | |||
| specific prefix. In this case, the following location for the | specific prefix. In this case, the following location for the | |||
| augmentation may be more suitable: | augmentation may be more suitable: | |||
| '/dhc6-srv:dhc6-srv/dhc6-srv:network-ranges/dhc6-srv:network-range/ | '/dhc6-srv:dhc6-srv/dhc6-srv:allocation-ranges/dhc6-srv:allocation- | |||
| dhc6-srv:prefix-pools/dhc6-srv:prefix-pool" | range/dhc6-srv:prefix-pools/dhc6-srv:prefix-pool" | |||
| Appendix C. Example Vendor Specific Server Configuration Module | Appendix C. Example Vendor Specific Server Configuration Module | |||
| This section shows how to extend the server YANG module defined in | This section shows how to extend the server YANG module defined in | |||
| this document with vendor specific configuration nodes, e.g., | this document with vendor specific configuration nodes, e.g., | |||
| configuring access to a lease storage database. | configuring access to a lease storage database. | |||
| The example module defines additional server attributes such as name | The example module defines additional server attributes such as name | |||
| and description. Storage for leases is configured using a lease- | and description. Storage for leases is configured using a lease- | |||
| storage container. It allows storing leases in one of three options: | storage container. It allows storing leases in one of three options: | |||
| skipping to change at page 90, line 18 ¶ | skipping to change at page 92, line 18 ¶ | |||
| 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 | |||
| (https://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-07-02 { | revision 2021-10-25 { | |||
| 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 95, line 38 ¶ | skipping to change at page 97, line 38 ¶ | |||
| specification for class selection, it only shows an example how it | specification for class selection, it only shows an example how it | |||
| could be defined. | could be defined. | |||
| At the end of the example augment statements are used to add the | At the end of the example augment statements are used to add the | |||
| defined class selector rules into the overall DHCPv6 addressing | defined class selector rules into the overall DHCPv6 addressing | |||
| hierarchy. This is done in two main parts: | hierarchy. This is done in two main parts: | |||
| * The augmented class-selector configuration in the main DHCPv6 | * The augmented class-selector configuration in the main DHCPv6 | |||
| Server configuration. | Server configuration. | |||
| * client-class leafrefs augmented to "network-range", "address-pool" | * client-class leafrefs augmented to "allocation-range", "address- | |||
| and "pd-pool", pointing to the "client-class-name" that is | pool" and "pd-pool", pointing to the "client-class-name" that is | |||
| required. | required. | |||
| The mechanism is as follows: class is associated to client based on | The mechanism is as follows: class is associated to client based on | |||
| rules and then client is allowed to get address(es)/prefix(es) from | rules and then client is allowed to get address(es)/prefix(es) from | |||
| given network-range/pool if the class name matches. | given allocation-range/pool if the class name matches. | |||
| module example-dhcpv6-class-select { | module example-dhcpv6-class-select { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "https://example.com/ns/" + | namespace "https://example.com/ns/" + | |||
| "example-dhcpv6-class-select"; | "example-dhcpv6-class-select"; | |||
| prefix "dhc6-class-sel"; | prefix "dhc6-class-sel"; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| } | } | |||
| skipping to change at page 97, line 5 ¶ | skipping to change at page 99, line 5 ¶ | |||
| 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 | |||
| (https://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-07-02 { | revision 2021-10-25 { | |||
| 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 101, line 30 ¶ | skipping to change at page 103, line 30 ¶ | |||
| key client-class-name; | key client-class-name; | |||
| description | description | |||
| "List of the client class identifiers applicable to | "List of the client class identifiers applicable to | |||
| clients served by this address pool"; | clients served by this address pool"; | |||
| uses client-class-id; | uses client-class-id; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| augment "/dhc6-srv:dhcpv6-server/" + | augment "/dhc6-srv:dhcpv6-server/" + | |||
| "dhc6-srv:network-ranges/dhc6-srv:network-range" { | "dhc6-srv:allocation-ranges/dhc6-srv:allocation-range" { | |||
| description | description | |||
| "Augment class selector functions to the DHCPv6 server | "Augment class selector functions to the DHCPv6 server | |||
| network-ranges."; | allocation-ranges."; | |||
| leaf-list client-class { | leaf-list client-class { | |||
| type leafref { | type leafref { | |||
| path "/dhc6-srv:dhcpv6-server/dhc6-srv:" + | path "/dhc6-srv:dhcpv6-server/dhc6-srv:" + | |||
| "class-selector/client-classes/class/client-class-name"; | "class-selector/client-classes/class/client-class-name"; | |||
| } | } | |||
| description | description | |||
| "Leafrefs to client classes."; | "Leafrefs to client classes."; | |||
| } | } | |||
| } | } | |||
| augment "/dhc6-srv:dhcpv6-server/dhc6-srv:" + | augment "/dhc6-srv:dhcpv6-server/dhc6-srv:" + | |||
| "network-ranges/dhc6-srv:network-range/dhc6-srv:" + | "allocation-ranges/dhc6-srv:allocation-range/dhc6-srv:" + | |||
| "address-pools/dhc6-srv:address-pool" { | "address-pools/dhc6-srv:address-pool" { | |||
| description | description | |||
| "Augment class selector functions to the DHCPv6 server | "Augment class selector functions to the DHCPv6 server | |||
| address-pools."; | address-pools."; | |||
| leaf-list client-class { | leaf-list client-class { | |||
| type leafref { | type leafref { | |||
| path "/dhc6-srv:dhcpv6-server/dhc6-srv:" + | path "/dhc6-srv:dhcpv6-server/dhc6-srv:" + | |||
| "class-selector/client-classes/class/client-class-name"; | "class-selector/client-classes/class/client-class-name"; | |||
| } | } | |||
| description | description | |||
| "Leafrefs to client classes."; | "Leafrefs to client classes."; | |||
| } | } | |||
| } | } | |||
| augment "/dhc6-srv:dhcpv6-server/dhc6-srv:" + | augment "/dhc6-srv:dhcpv6-server/dhc6-srv:" + | |||
| "network-ranges/dhc6-srv:network-range/dhc6-srv:" + | "allocation-ranges/dhc6-srv:allocation-range/dhc6-srv:" + | |||
| "prefix-pools/dhc6-srv:prefix-pool" { | "prefix-pools/dhc6-srv:prefix-pool" { | |||
| description | description | |||
| "Augment class selector functions to the DHCPv6 | "Augment class selector functions to the DHCPv6 | |||
| server prefix-pools."; | server prefix-pools."; | |||
| leaf-list client-class { | leaf-list client-class { | |||
| type leafref { | type leafref { | |||
| path "/dhc6-srv:dhcpv6-server/dhc6-srv:" + | path "/dhc6-srv:dhcpv6-server/dhc6-srv:" + | |||
| "class-selector/client-classes/class/client-class-name"; | "class-selector/client-classes/class/client-class-name"; | |||
| } | } | |||
| description | description | |||
| End of changes. 125 change blocks. | ||||
| 575 lines changed or deleted | 645 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/ | ||||