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