draft-ietf-dhc-dhcpv6-yang-16.txt | draft-ietf-dhc-dhcpv6-yang-17.txt | |||
---|---|---|---|---|
DHC Working Group Y. Cui | DHC Working Group Y. Cui | |||
Internet-Draft L. Sun | Internet-Draft L. Sun | |||
Intended status: Standards Track Tsinghua University | Intended status: Standards Track Tsinghua University | |||
Expires: 11 July 2021 I. Farrer | Expires: 2 August 2021 I. Farrer | |||
S.Z. Zechlin | S.Z. Zechlin | |||
Deutsche Telekom AG | Deutsche Telekom AG | |||
Z. He | Z. He | |||
Tsinghua University | Tsinghua University | |||
M. Nowikowski | M. Nowikowski | |||
Internet Systems Consortium | Internet Systems Consortium | |||
7 January 2021 | 29 January 2021 | |||
YANG Data Model for DHCPv6 Configuration | YANG Data Model for DHCPv6 Configuration | |||
draft-ietf-dhc-dhcpv6-yang-16 | draft-ietf-dhc-dhcpv6-yang-17 | |||
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 servers, relays, and clients. | management of DHCPv6 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", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
skipping to change at page 1, line 46 ¶ | skipping to change at page 1, line 46 ¶ | |||
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 11 July 2021. | This Internet-Draft will expire on 2 August 2021. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
skipping to change at page 2, line 30 ¶ | skipping to change at page 2, line 30 ¶ | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.2. Extensibility of the DHCPv6 Server YANG Module . . . . . 3 | 1.2. Extensibility of the DHCPv6 Server YANG Module . . . . . 3 | |||
1.2.1. DHCPv6 Option Definitions . . . . . . . . . . . . . . 4 | 1.2.1. DHCPv6 Option Definitions . . . . . . . . . . . . . . 4 | |||
1.3. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.3. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2. DHCPv6 Tree Diagrams . . . . . . . . . . . . . . . . . . . . 5 | 2. DHCPv6 Tree Diagrams . . . . . . . . . . . . . . . . . . . . 5 | |||
2.1. DHCPv6 Server Tree Diagram . . . . . . . . . . . . . . . 5 | 2.1. DHCPv6 Server Tree Diagram . . . . . . . . . . . . . . . 5 | |||
2.2. DHCPv6 Relay Tree Diagram . . . . . . . . . . . . . . . . 12 | 2.2. DHCPv6 Relay Tree Diagram . . . . . . . . . . . . . . . . 12 | |||
2.3. DHCPv6 Client Tree Diagram . . . . . . . . . . . . . . . 14 | 2.3. DHCPv6 Client Tree Diagram . . . . . . . . . . . . . . . 14 | |||
3. DHCPv6 YANG Modules . . . . . . . . . . . . . . . . . . . . . 17 | 3. DHCPv6 YANG Modules . . . . . . . . . . . . . . . . . . . . . 18 | |||
3.1. DHCPv6 Server YANG Module . . . . . . . . . . . . . . . . 17 | 3.1. DHCPv6 Server YANG Module . . . . . . . . . . . . . . . . 18 | |||
3.2. DHCPv6 Relay YANG Module . . . . . . . . . . . . . . . . 32 | 3.2. DHCPv6 Relay YANG Module . . . . . . . . . . . . . . . . 35 | |||
3.3. DHCPv6 Client YANG Module . . . . . . . . . . . . . . . . 41 | 3.3. DHCPv6 Client YANG Module . . . . . . . . . . . . . . . . 44 | |||
3.4. RFC8415 Server Options YANG Module . . . . . . . . . . . 50 | 3.4. DHCPv6 Common YANG Module . . . . . . . . . . . . . . . . 56 | |||
3.5. RFC8415 Relay Options YANG Module . . . . . . . . . . . . 58 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 63 | |||
3.6. RFC8415 Client Options YANG Module . . . . . . . . . . . 62 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 64 | |||
3.7. DHCPv6 Common YANG Module . . . . . . . . . . . . . . . . 69 | 6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 64 | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 73 | 7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 65 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 74 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 65 | |||
6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 75 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 65 | |||
7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 75 | 8.2. Informative References . . . . . . . . . . . . . . . . . 67 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 76 | ||||
8.1. Normative References . . . . . . . . . . . . . . . . . . 76 | ||||
8.2. Informative References . . . . . . . . . . . . . . . . . 78 | ||||
Appendix A. Example of Augmenting Additional DHCPv6 Option | Appendix A. Example of Augmenting Additional DHCPv6 Option | |||
Definitions . . . . . . . . . . . . . . . . . . . . . . . 78 | Definitions . . . . . . . . . . . . . . . . . . . . . . . 67 | |||
Appendix B. Example Vendor Specific Server Configuration | Appendix B. Example Vendor Specific Server Configuration | |||
Module . . . . . . . . . . . . . . . . . . . . . . . . . 82 | Module . . . . . . . . . . . . . . . . . . . . . . . . . 71 | |||
Appendix C. Example definition of class selector | Appendix C. Example definition of class selector | |||
configuration . . . . . . . . . . . . . . . . . . . . . . 88 | configuration . . . . . . . . . . . . . . . . . . . . . . 77 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 95 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 84 | |||
1. Introduction | 1. Introduction | |||
DHCPv6 [RFC8415] is widely used for supplying configuration and other | DHCPv6 [RFC8415] is widely used for supplying configuration and other | |||
relevant parameters to clients in IPv6 networks. This document | relevant parameters to clients in IPv6 networks. This document | |||
defines YANG modules for the configuration and management of DHCPv6 | defines YANG modules for the configuration and management of DHCPv6 | |||
servers, relays and clients. Separate 'element' modules are defined | servers, relays and clients. Separate 'element' modules are defined | |||
for each of these. There is an additional module per-element | for each of these. Additionally, a 'common' module contains typedefs | |||
defining DHCP options which are relevant for that element (taken from | and groupings used by all of the element modules. | |||
the options defined in [RFC8415]). | ||||
Additionally, a 'common' module contains typedefs and groupings used | ||||
by all of the element modules. | ||||
It is worth noting that as DHCPv6 is itself a client configuration | It is worth noting that as DHCPv6 is itself a client configuration | |||
protocol, it is not the intention of this document to provide a | protocol, it is not the intention of this document to provide a | |||
replacement for the allocation of DHCPv6 assigned addressing and | replacement for the allocation of DHCPv6 assigned addressing and | |||
parameters by using NETCONF/YANG. The DHCPv6 client module is | parameters by using NETCONF/YANG. The DHCPv6 client module is | |||
intended for the configuration and monitoring of the DHCPv6 client | intended for the configuration and monitoring of the DHCPv6 client | |||
function and does not play a part in the normal DHCPv6 message flow. | function and does not play a part in the normal DHCPv6 message flow. | |||
1.1. Scope | 1.1. Scope | |||
skipping to change at page 4, line 5 ¶ | skipping to change at page 3, line 48 ¶ | |||
level of variance between implementations is too great to attempt to | level of variance between implementations is too great to attempt to | |||
standardize in a way that is useful without being restrictive. | standardize in a way that is useful without being restrictive. | |||
However, it is recognized that implementation specific configuration | However, it is recognized that implementation specific configuration | |||
and management is also an essential part of DHCP deployment and | and management is also an essential part of DHCP deployment and | |||
operations. To resolve this, Appendix B contains an example YANG | operations. To resolve this, Appendix B contains an example YANG | |||
module for the configuration of implementation specific functions, | module for the configuration of implementation specific functions, | |||
illustrating how this functionality can be augmented into the main | illustrating how this functionality can be augmented into the main | |||
'ietf-dhcpv6-server.yang' module. | 'ietf-dhcpv6-server.yang' module. | |||
In DHCPv6 the concept of 'class selection' for messages received by | In DHCPv6, the concept of 'class selection' for messages received by | |||
the server is common. This is the identification and classification | the server is common. This is the identification and classification | |||
of messages based on a number of parameters so that the correct | of messages based on a number of parameters so that the correct | |||
provisioning information can be supplied. For example, allocating a | provisioning information can be supplied. For example, allocating a | |||
prefix from the correct pool, or supplying a set of options relevant | prefix from the correct pool, or supplying a set of options relevant | |||
for a specific vendor's client implementation. During the | for a specific vendor's client implementation. During the | |||
development of this document, research has been carried out into a | development of this document, research has been carried out into a | |||
number of vendor's class selection implementations and the findings | number of vendor's class selection implementations and the findings | |||
were that while this function is common to all, the method for | were that while this function is common to all, the method for | |||
configuring and implementing this function differs greatly. | configuring and implementing this function differs greatly. | |||
Therefore, configuration of the class selection function has been | Therefore, configuration of the class selection function has been | |||
omitted from the DHCPv6 server module to allow implementors to define | omitted from the DHCPv6 server module to allow implementors to define | |||
their own suitable YANG module. Appendix C provides an example of | their own suitable YANG module. Appendix C provides an example of | |||
this, to demonstrate how this is can be integrated with the main | this, to demonstrate how this is can be integrated with the main | |||
'ietf-dhcpv6-server.yang' module. | 'ietf-dhcpv6-server.yang' module. | |||
1.2.1. DHCPv6 Option Definitions | 1.2.1. DHCPv6 Option Definitions | |||
A large number of DHCPv6 options have been created in addition to | A large number of DHCPv6 options have been created in addition to | |||
those defined in [RFC8415]. As implementations differ widely in | those defined in [RFC8415]. As implementations differ widely as to | |||
which DHCPv6 options that they support, the following approach has | which DHCPv6 options they support, the following approach has been | |||
been taken to defining options: Only the DHCPv6 options defined in | taken to defining options: Only the DHCPv6 options defined in | |||
[RFC8415] are included in this document. | [RFC8415] are included in this document. | |||
Of these, only the options that require operator configuration are | Of these, only the options that require operator configuration are | |||
modelled. E.g. OPTION_IA_NA (3) is created by the DHCP server when | modelled. E.g. OPTION_IA_NA (3) is created by the DHCP server when | |||
requested by the client. The contents of the fields in the option | requested by the client. The contents of the fields in the option | |||
are based on a number of input configuration parameters which the | are based on a number of input configuration parameters which the | |||
server will apply when it receives the request (e.g., the T1/T2 | server will apply when it receives the request (e.g., the T1/T2 | |||
timers that are relevant for the pool of addresses). As a result, | timers that are relevant for the pool of addresses). As a result, | |||
there are no fields that are directly configurable in the option, so | there are no fields that are directly configurable in the option, so | |||
it is not modelled. | it is not modelled. | |||
skipping to change at page 5, line 13 ¶ | skipping to change at page 5, line 10 ¶ | |||
used in tree diagrams are defined in [RFC8340]. | used in tree diagrams are defined in [RFC8340]. | |||
The reader should be familiar with DHCPv6 relevant terminology as | The reader should be familiar with DHCPv6 relevant terminology as | |||
defined in [RFC8415] and other relevant documents. | defined in [RFC8415] and other relevant documents. | |||
2. DHCPv6 Tree Diagrams | 2. DHCPv6 Tree Diagrams | |||
2.1. DHCPv6 Server Tree Diagram | 2.1. DHCPv6 Server Tree Diagram | |||
The tree diagram in Figure 1 provides an overview of the DHCPv6 | The tree diagram in Figure 1 provides an overview of the DHCPv6 | |||
server module. The tree also includes the augmentations of the | server module. The tree also includes the common functions module | |||
relevant option definitions from Section 3.4 and the common functions | Section 3.4. | |||
module Section 3.7. | ||||
module: ietf-dhcpv6-server | module: ietf-dhcpv6-server | |||
+--rw dhcpv6-node-type? identityref | +--rw dhcpv6-server | |||
+--rw dhcpv6-server | +--rw enabled? boolean | |||
+--rw server-duid | +--rw server-duid | |||
| +--rw type-code? uint16 | | +--rw type-code? uint16 | |||
| +--rw (duid-type)? | | +--rw (duid-type)? | |||
| | +--:(duid-llt) | | | +--:(duid-llt) | |||
| | | +--rw duid-llt-hardware-type? uint16 | | | | +--rw duid-llt-hardware-type? uint16 | |||
| | | +--rw duid-llt-time? yang:timeticks | | | | +--rw duid-llt-time? yang:timeticks | |||
| | | +--rw duid-llt-link-layer-address? | | | | +--rw duid-llt-link-layer-address? | |||
| | | yang:mac-address | | | | yang:mac-address | |||
| | +--:(duid-en) | | | +--:(duid-en) | |||
| | | +--rw duid-en-enterprise-number? uint32 | | | | +--rw duid-en-enterprise-number? uint32 | |||
| | | +--rw duid-en-identifier? string | | | | +--rw duid-en-identifier? string | |||
| | +--:(duid-ll) | | | +--:(duid-ll) | |||
| | | +--rw duid-ll-hardware-type? uint16 | | | | +--rw duid-ll-hardware-type? uint16 | |||
| | | +--rw duid-ll-link-layer-address? | | | | +--rw duid-ll-link-layer-address? | |||
| | | yang:mac-address | | | | yang:mac-address | |||
| | +--:(duid-uuid) | | | +--:(duid-uuid) | |||
| | | +--rw uuid? yang:uuid | | | | +--rw uuid? yang:uuid | |||
| | +--:(duid-unstructured) | | | +--:(duid-unstructured) | |||
| | +--rw data? binary | | | +--rw data? binary | |||
| +--ro active-duid? binary | | +--ro active-duid? binary | |||
+--rw vendor-config | +--rw vendor-config | |||
+--rw option-sets | +--rw option-sets | |||
| +--rw option-set* [option-set-id] | | +--rw option-set* [option-set-id] | |||
| +--rw option-set-id | | +--rw option-set-id uint32 | |||
| | uint32 | | +--rw description? string | |||
| +--rw description? | | +--rw preference-option | |||
| | string | | | +--rw pref-value? uint8 | |||
| +--rw rfc8415-srv:preference-option | | +--rw auth-option | |||
| | +--rw rfc8415-srv:pref-value? uint8 | | | +--rw protocol? uint8 | |||
| +--rw rfc8415-srv:auth-option | | | +--rw algorithm? uint8 | |||
| | +--rw rfc8415-srv:protocol? uint8 | | | +--rw rdm? uint8 | |||
| | +--rw rfc8415-srv:algorithm? uint8 | | | +--rw replay-detection? uint64 | |||
| | +--rw rfc8415-srv:rdm? uint8 | | | +--rw auth-information? string | |||
| | +--rw rfc8415-srv:replay-detection? uint64 | | +--rw server-unicast-option | |||
| | +--rw rfc8415-srv:auth-information? string | | | +--rw server-address? inet:ipv6-address | |||
| +--rw rfc8415-srv:server-unicast-option | | +--rw status-code-option | |||
| | +--rw rfc8415-srv:server-address? | | | +--rw status-code? uint16 | |||
| | inet:ipv6-address | | | +--rw status-message? string | |||
| +--rw rfc8415-srv:status-code-option | | +--rw rapid-commit-option! | |||
| | +--rw rfc8415-srv:status-code? uint16 | | +--rw vendor-specific-information-option | |||
| | +--rw rfc8415-srv:status-message? string | | | +--rw vendor-specific-information-option-instances* | |||
| +--rw rfc8415-srv:rapid-commit-option! | | | [enterprise-number] | |||
| +--rw rfc8415-srv:vendor-specific-information-option | | | +--rw enterprise-number uint32 | |||
| | +--rw rfc8415-srv:vendor-specific-information-option- | | | +--rw vendor-option-data* [sub-option-code] | |||
instances* | | | +--rw sub-option-code uint16 | |||
| | [enterprise-number] | | | +--rw sub-option-data? string | |||
| | +--rw rfc8415-srv:enterprise-number uint32 | | +--rw reconfigure-message-option | |||
| | +--rw rfc8415-srv:vendor-option-data* | | | +--rw msg-type? uint8 | |||
| | [sub-option-code] | | +--rw reconfigure-accept-option! | |||
| | +--rw rfc8415-srv:sub-option-code uint16 | | +--rw info-refresh-time-option | |||
| | +--rw rfc8415-srv:sub-option-data? string | | | +--rw info-refresh-time? | |||
| +--rw rfc8415-srv:reconfigure-message-option | | | dhcpv6-common:timer-seconds32 | |||
| | +--rw rfc8415-srv:msg-type? uint8 | | +--rw sol-max-rt-option | |||
| +--rw rfc8415-srv:reconfigure-accept-option! | | | +--rw sol-max-rt-value? | |||
| +--rw rfc8415-srv:info-refresh-time-option | | | dhcpv6-common:timer-seconds32 | |||
| | +--rw rfc8415-srv:info-refresh-time? | | +--rw inf-max-rt-option | |||
| | dhcpv6-common:timer-seconds32 | | +--rw inf-max-rt-value? | |||
| +--rw rfc8415-srv:sol-max-rt-option | | dhcpv6-common:timer-seconds32 | |||
| | +--rw rfc8415-srv:sol-max-rt-value? | +--rw class-selector | |||
| | dhcpv6-common:timer-seconds32 | +--rw network-ranges | |||
| +--rw rfc8415-srv:inf-max-rt-option | +--rw option-set-id* leafref | |||
| +--rw rfc8415-srv:inf-max-rt-value? | +--rw valid-lifetime? | |||
| dhcpv6-common:timer-seconds32 | | dhcpv6-common:timer-seconds32 | |||
+--rw class-selector | +--rw renew-time? | |||
+--rw network-ranges | | dhcpv6-common:timer-seconds32 | |||
+--rw option-set-id* leafref | +--rw rebind-time? | |||
+--rw valid-lifetime? | | dhcpv6-common:timer-seconds32 | |||
| dhcpv6-common:timer-seconds32 | +--rw preferred-lifetime? | |||
+--rw renew-time? | | dhcpv6-common:timer-seconds32 | |||
| dhcpv6-common:timer-seconds32 | +--rw rapid-commit? boolean | |||
+--rw rebind-time? | +--rw network-range* [id] | |||
| dhcpv6-common:timer-seconds32 | | +--rw id uint32 | |||
+--rw preferred-lifetime? | | +--rw description string | |||
| dhcpv6-common:timer-seconds32 | | +--rw network-prefix inet:ipv6-prefix | |||
+--rw rapid-commit? boolean | | +--rw option-set-id* leafref | |||
+--rw network-range* [id] | | +--rw valid-lifetime? | |||
| +--rw id uint32 | | | dhcpv6-common:timer-seconds32 | |||
| +--rw description string | | +--rw renew-time? | |||
| +--rw network-prefix inet:ipv6-prefix | | | dhcpv6-common:timer-seconds32 | |||
| +--rw option-set-id* leafref | | +--rw rebind-time? | |||
| +--rw valid-lifetime? | | | dhcpv6-common:timer-seconds32 | |||
| | dhcpv6-common:timer-seconds32 | | +--rw preferred-lifetime? | |||
| +--rw renew-time? | | | dhcpv6-common:timer-seconds32 | |||
| | dhcpv6-common:timer-seconds32 | | +--rw rapid-commit? boolean | |||
| +--rw rebind-time? | | +--rw address-pools | |||
| | dhcpv6-common:timer-seconds32 | | | +--rw address-pool* [pool-id] | |||
| +--rw preferred-lifetime? | | | +--rw pool-id uint32 | |||
| | dhcpv6-common:timer-seconds32 | | | +--rw pool-prefix inet:ipv6-prefix | |||
| +--rw rapid-commit? boolean | | | +--rw start-address | |||
| +--rw address-pools | | | | inet:ipv6-address-no-zone | |||
| | +--rw address-pool* [pool-id] | | | +--rw end-address | |||
| | +--rw pool-id uint32 | | | | inet:ipv6-address-no-zone | |||
| | +--rw pool-prefix inet:ipv6-prefix | | | +--rw max-address-count | |||
| | +--rw start-address | | | | dhcpv6-common:threshold | |||
| | | inet:ipv6-address-no-zone | | | +--rw option-set-id* leafref | |||
| | +--rw end-address | | | +--rw valid-lifetime? | |||
| | | inet:ipv6-address-no-zone | | | | dhcpv6-common:timer-seconds32 | |||
| | +--rw max-address-count | | | +--rw renew-time? | |||
| | | dhcpv6-common:threshold | | | | dhcpv6-common:timer-seconds32 | |||
| | +--rw option-set-id* leafref | | | +--rw rebind-time? | |||
| | +--rw valid-lifetime? | | | | dhcpv6-common:timer-seconds32 | |||
| | | dhcpv6-common:timer-seconds32 | | | +--rw preferred-lifetime? | |||
| | +--rw renew-time? | | | | dhcpv6-common:timer-seconds32 | |||
| | | dhcpv6-common:timer-seconds32 | | | +--rw rapid-commit? boolean | |||
| | +--rw rebind-time? | | | +--rw host-reservations | |||
| | | dhcpv6-common:timer-seconds32 | | | | +--rw host-reservation* [reserved-addr] | |||
| | +--rw preferred-lifetime? | | | | +--rw client-duid? binary | |||
| | | dhcpv6-common:timer-seconds32 | | | | +--rw reserved-addr | |||
| | +--rw rapid-commit? boolean | | | | | inet:ipv6-address | |||
| | +--rw host-reservations | | | | +--rw option-set-id* leafref | |||
| | | +--rw host-reservation* [reserved-addr] | | | | +--rw valid-lifetime? | |||
| | | +--rw client-duid? binary | | | | | dhcpv6-common:timer-seconds32 | |||
| | | +--rw reserved-addr | | | | +--rw renew-time? | |||
| | | | inet:ipv6-address | | | | | dhcpv6-common:timer-seconds32 | |||
| | | +--rw option-set-id* leafref | | | | +--rw rebind-time? | |||
| | | +--rw valid-lifetime? | | | | | dhcpv6-common:timer-seconds32 | |||
| | | | dhcpv6-common:timer-seconds32 | | | | +--rw preferred-lifetime? | |||
| | | +--rw renew-time? | | | | | dhcpv6-common:timer-seconds32 | |||
| | | | dhcpv6-common:timer-seconds32 | | | | +--rw rapid-commit? boolean | |||
| | | +--rw rebind-time? | | | +--ro active-leases | |||
| | | | dhcpv6-common:timer-seconds32 | | | +--ro total-count uint64 | |||
| | | +--rw preferred-lifetime? | | | +--ro allocated-count uint64 | |||
| | | | dhcpv6-common:timer-seconds32 | | | +--ro active-lease* [leased-address] | |||
| | | +--rw rapid-commit? boolean | | | +--ro leased-address | |||
| | +--ro active-leases | | | | inet:ipv6-address | |||
| | +--ro total-count uint64 | | | +--ro client-duid? binary | |||
| | +--ro allocated-count uint64 | | | +--ro iaid uint32 | |||
| | +--ro active-lease* [leased-address] | | | +--ro allocation-time? | |||
| | +--ro leased-address | | | | yang:date-and-time | |||
| | | inet:ipv6-address | | | +--ro last-renew-rebind? | |||
| | +--ro client-duid? binary | | | | yang:date-and-time | |||
| | +--ro iaid uint32 | | | +--ro preferred-lifetime? | |||
| | +--ro allocation-time? | | | | dhcpv6-common:timer-seconds32 | |||
| | | yang:date-and-time | | | +--ro valid-lifetime? | |||
| | +--ro last-renew-rebind? | | | | dhcpv6-common:timer-seconds32 | |||
| | | yang:date-and-time | | | +--ro lease-t1? | |||
| | +--ro preferred-lifetime? | | | | dhcpv6-common:timer-seconds32 | |||
| | | dhcpv6-common:timer-seconds32 | | | +--ro lease-t2? | |||
| | +--ro valid-lifetime? | | | dhcpv6-common:timer-seconds32 | |||
| | | dhcpv6-common:timer-seconds32 | | +--rw prefix-pools {prefix-delegation}? | |||
| | +--ro lease-t1? | | +--rw prefix-pool* [pool-id] | |||
| | | dhcpv6-common:timer-seconds32 | | +--rw pool-id uint32 | |||
| | +--ro lease-t2? | | +--rw pool-prefix | |||
| | dhcpv6-common:timer-seconds32 | | | inet:ipv6-prefix | |||
| +--rw prefix-pools {prefix-delegation}? | | +--rw client-prefix-length uint8 | |||
| +--rw prefix-pool* [pool-id] | | +--rw max-pd-space-utilization | |||
| +--rw pool-id uint32 | | | dhcpv6-common:threshold | |||
| +--rw pool-prefix | | +--rw option-set-id* leafref | |||
| | inet:ipv6-prefix | | +--rw valid-lifetime? | |||
| +--rw client-prefix-length uint8 | | | dhcpv6-common:timer-seconds32 | |||
| +--rw max-pd-space-utilization | | +--rw renew-time? | |||
| | dhcpv6-common:threshold | | | dhcpv6-common:timer-seconds32 | |||
| +--rw option-set-id* leafref | | +--rw rebind-time? | |||
| +--rw valid-lifetime? | | | dhcpv6-common:timer-seconds32 | |||
| | dhcpv6-common:timer-seconds32 | | +--rw preferred-lifetime? | |||
| +--rw renew-time? | | | dhcpv6-common:timer-seconds32 | |||
| | dhcpv6-common:timer-seconds32 | | +--rw rapid-commit? boolean | |||
| +--rw rebind-time? | | +--rw host-reservations | |||
| | dhcpv6-common:timer-seconds32 | | | +--rw prefix-reservation* [reserved-prefix] | |||
| +--rw preferred-lifetime? | | | | +--rw client-duid? binary | |||
| | dhcpv6-common:timer-seconds32 | | | | +--rw reserved-prefix | |||
| +--rw rapid-commit? boolean | | | | | inet:ipv6-prefix | |||
| +--rw host-reservations | | | | +--rw reserved-prefix-len? uint8 | |||
| | +--rw prefix-reservation* [reserved-prefix] | | | +--rw option-set-id* leafref | |||
| | | +--rw client-duid? binary | | | +--rw valid-lifetime? | |||
| | | +--rw reserved-prefix | | | | dhcpv6-common:timer-seconds32 | |||
| | | | inet:ipv6-prefix | | | +--rw renew-time? | |||
| | | +--rw reserved-prefix-len? uint8 | | | | dhcpv6-common:timer-seconds32 | |||
| | +--rw option-set-id* leafref | | | +--rw rebind-time? | |||
| | +--rw valid-lifetime? | | | | dhcpv6-common:timer-seconds32 | |||
| | | dhcpv6-common:timer-seconds32 | | | +--rw preferred-lifetime? | |||
| | +--rw renew-time? | | | | dhcpv6-common:timer-seconds32 | |||
| | | dhcpv6-common:timer-seconds32 | | | +--rw rapid-commit? boolean | |||
| | +--rw rebind-time? | | +--ro active-leases | |||
| | | dhcpv6-common:timer-seconds32 | | +--ro total-count uint64 | |||
| | +--rw preferred-lifetime? | | +--ro allocated-count uint64 | |||
| | | dhcpv6-common:timer-seconds32 | | +--ro active-lease* [leased-prefix] | |||
| | +--rw rapid-commit? boolean | | +--ro leased-prefix | |||
| +--ro active-leases | | | inet:ipv6-prefix | |||
| +--ro total-count uint64 | | +--ro client-duid? binary | |||
| +--ro allocated-count uint64 | | +--ro iaid uint32 | |||
| +--ro active-lease* [leased-prefix] | | +--ro allocation-time? | |||
| +--ro leased-prefix | | | yang:date-and-time | |||
| | inet:ipv6-prefix | | +--ro last-renew-rebind? | |||
| +--ro client-duid? binary | | | yang:date-and-time | |||
| +--ro iaid uint32 | | +--ro preferred-lifetime? | |||
| +--ro allocation-time? | | | dhcpv6-common:timer-seconds32 | |||
| | yang:date-and-time | | +--ro valid-lifetime? | |||
| +--ro last-renew-rebind? | | | dhcpv6-common:timer-seconds32 | |||
| | yang:date-and-time | | +--ro lease-t1? | |||
| +--ro preferred-lifetime? | | | dhcpv6-common:timer-seconds32 | |||
| | dhcpv6-common:timer-seconds32 | | +--ro lease-t2? | |||
| +--ro valid-lifetime? | | dhcpv6-common:timer-seconds32 | |||
| | dhcpv6-common:timer-seconds32 | +--ro solicit-count? uint32 | |||
| +--ro lease-t1? | +--ro advertise-count? uint32 | |||
| | dhcpv6-common:timer-seconds32 | +--ro request-count? uint32 | |||
| +--ro lease-t2? | +--ro confirm-count? uint32 | |||
| dhcpv6-common:timer-seconds32 | +--ro renew-count? uint32 | |||
+--ro solicit-count? uint32 | +--ro rebind-count? uint32 | |||
+--ro advertise-count? uint32 | +--ro reply-count? uint32 | |||
+--ro request-count? uint32 | +--ro release-count? uint32 | |||
+--ro confirm-count? uint32 | +--ro decline-count? uint32 | |||
+--ro renew-count? uint32 | +--ro reconfigure-count? uint32 | |||
+--ro rebind-count? uint32 | +--ro information-request-count? uint32 | |||
+--ro reply-count? uint32 | ||||
+--ro release-count? uint32 | ||||
+--ro decline-count? uint32 | ||||
+--ro reconfigure-count? uint32 | ||||
+--ro information-request-count? uint32 | ||||
rpcs: | rpcs: | |||
+---x delete-address-lease | +---x delete-address-lease | |||
| +---w input | | +---w input | |||
| | +---w lease-address-to-delete inet:ipv6-address | | | +---w lease-address-to-delete inet:ipv6-address | |||
| +--ro output | | +--ro output | |||
| +--ro return-message? string | | +--ro return-message? string | |||
+---x delete-prefix-lease | +---x delete-prefix-lease | |||
+---w input | +---w input | |||
| +---w lease-prefix-to-delete inet:ipv6-prefix | | +---w lease-prefix-to-delete inet:ipv6-prefix | |||
+--ro output | +--ro output | |||
+--ro return-message? string | +--ro return-message? string | |||
notifications: | notifications: | |||
+---n address-pool-utilization-threshold-exceeded | +---n address-pool-utilization-threshold-exceeded | |||
| +--ro pool-id? leafref | | +--ro pool-id? leafref | |||
| +--ro total-address-count uint64 | | +--ro total-address-count uint64 | |||
| +--ro max-address-count uint64 | | +--ro max-address-count uint64 | |||
| +--ro allocated-address-count uint64 | | +--ro allocated-address-count uint64 | |||
+---n prefix-pool-utilization-threshold-exceeded | +---n prefix-pool-utilization-threshold-exceeded | |||
| {prefix-delegation}? | | {prefix-delegation}? | |||
| +--ro pool-id leafref | | +--ro pool-id leafref | |||
| +--ro max-pd-space-utilization leafref | | +--ro max-pd-space-utilization leafref | |||
| +--ro pd-space-utilization? uint64 | | +--ro pd-space-utilization? uint64 | |||
+---n invalid-client-detected | +---n invalid-client-detected | |||
| +--ro duid? binary | | +--ro duid? binary | |||
| +--ro description? string | | +--ro description? string | |||
+---n decline-received | +---n decline-received | |||
| +--ro duid? binary | | +--ro duid? binary | |||
| +--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 status-code uint16 | |||
+--ro duid? binary | +--ro duid? binary | |||
Figure 1: DHCPv6 Server Data Module Structure | Figure 1: DHCPv6 Server Data Module Structure | |||
Descriptions of important nodes: | Descriptions of important nodes: | |||
* dhcpv6-node-type: The different functional DHCPv6 elements each | * enabled: Enables/disables the function of the server. | |||
have their relevant identities. | ||||
* dhcpv6-server: This container holds the server's DHCPv6 specific | * dhcpv6-server: This container holds the server's DHCPv6 specific | |||
configuration. | configuration. | |||
* server-duid: Each server must have a DUID (DHCP Unique Identifier) | * server-duid: Each server must have a DUID (DHCP Unique Identifier) | |||
to identify itself to clients. A DUID consists of a two-octet | to identify itself to clients. A DUID consists of a two-octet | |||
type field and an arbitrary length (of no more than 128-bytes) | type field and an arbitrary length (of no more than 128-bytes) | |||
content field. Currently there are four defined types of DUIDs in | content field. Currently there are four defined types of DUIDs in | |||
[RFC8415] and [RFC6355]: DUID-LLT, DUID-EN, DUID-LL, and DUID- | [RFC8415] and [RFC6355]: DUID-LLT, DUID-EN, DUID-LL, and DUID- | |||
UUID. DUID-Unknown is used for arbitrary DUID formats which do | UUID. DUID-Unknown is used for arbitrary DUID formats which do | |||
skipping to change at page 11, line 12 ¶ | skipping to change at page 10, line 50 ¶ | |||
configuration of the device to be augmented. See Appendix B for | configuration of the device to be augmented. See Appendix B for | |||
an example of such a module. | an example of such a module. | |||
* option-sets: The server can be configured with multiple option- | * option-sets: The server can be configured with multiple option- | |||
sets. These are groups of DHCPv6 options with common parameters | sets. These are groups of DHCPv6 options with common parameters | |||
which will be supplied to clients on request. The 'option-set-id' | which will be supplied to clients on request. The 'option-set-id' | |||
field is used to reference an option-set elsewhere in the server's | field is used to reference an option-set elsewhere in the server's | |||
configuration. | configuration. | |||
* option-set: Holds configuration parameters for DHCPv6 options. | * option-set: Holds configuration parameters for DHCPv6 options. | |||
The initial set of definitions are contained in the module 'ietf- | The initial set of applicable option definitions are defined here | |||
dhcpv6-options-rfc8415-server.yang' and are augmented into the | and additional options that are also relevant to the relay and/or | |||
server module at this point. Other DHCPv6 option modules can be | client are imported from the 'ietf-dhcpv6-common' module. Where | |||
augmented here as required. | needed, other DHCPv6 option modules can be augmented as they are | |||
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 C for an example of | selector nodes to be augmented. See Appendix C for an example of | |||
this. | this. | |||
* network-ranges: This module uses a hierarchical model for the | * network-ranges: A hierarchical model is used for the allocation of | |||
allocation of addresses and prefixes. At the top level 'network- | addresses and prefixes. At the top level 'network-ranges' holds | |||
ranges' holds global configuration parameters. Under this, a list | global configuration parameters. Under this, a list of 'network- | |||
of 'network-ranges' can be defined. Inside 'network-rages', | ranges' can be defined. Inside 'network-rages', 'address-pools' | |||
'address-pools' (for IA_NA and IA_TA allocations), and 'prefix- | (for IA_NA and IA_TA allocations), and 'prefix-pools' (for IA_PD | |||
pools' (for IA_PD allocation) are defined. Finally within the | allocation) are defined. Finally within the pools, specific host- | |||
pools, specific host-reservations are held. | reservations are held. | |||
* 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. As prefix delegation is not supported by all DHCPv6 | |||
server implementations, it is enabled by a feature statement. | server implementations, it is enabled by a feature statement. | |||
Information about notifications: | Information about notifications: | |||
* address/prefix-pool-utilization-threshold-exceeded: Raised when | * address/prefix-pool-utilization-threshold-exceeded: Raised when | |||
number of leased addresses or prefixes exceeds the configured | number of leased addresses or prefixes exceeds the configured | |||
usage threshold. | usage threshold. | |||
skipping to change at page 12, line 4 ¶ | skipping to change at page 11, line 42 ¶ | |||
client. A description of the error that has generated the | client. A description of the error that has generated the | |||
notification can be included. | 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 a status message is raised for | |||
an error. | an error. | |||
Information about RPCs | Information about RPCs | |||
* delete-address-lease: Allows the deletion of a lease for an | * delete-address-lease: Allows the deletion of a lease for an | |||
individual IPv6 address from the server's lease database. | individual IPv6 address from the server's lease database. | |||
* delete-prefix-lease: Allows the deletion of a lease for an | * delete-prefix-lease: Allows the deletion of a lease for an | |||
individual IPv6 prefix from the server's lease database. | 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 augmentations of the relevant | module. The tree also includes the common functions module | |||
option definitions from Section 3.5 and the common functions module | Section 3.4. | |||
Section 3.7. | ||||
module: ietf-dhcpv6-relay | module: ietf-dhcpv6-relay | |||
+--rw dhcpv6-node-type? identityref | ||||
+--rw dhcpv6-relay | +--rw dhcpv6-relay | |||
+--rw enabled? boolean | ||||
+--rw relay-if* [if-name] | +--rw relay-if* [if-name] | |||
| +--rw if-name | | +--rw if-name | |||
| | if:interface-ref | | | if:interface-ref | |||
| +--rw enabled? boolean | ||||
| +--rw destination-addresses* | | +--rw destination-addresses* | |||
| | inet:ipv6-address | | | inet:ipv6-address | |||
| +--rw link-address? binary | | +--rw link-address? binary | |||
| +--rw relay-options | | +--rw relay-options | |||
| | +--rw auth-option | ||||
| | | +--rw protocol? uint8 | ||||
| | | +--rw algorithm? uint8 | ||||
| | | +--rw rdm? uint8 | ||||
| | | +--rw replay-detection? uint64 | ||||
| | | +--rw auth-information? string | ||||
| | +--rw status-code-option | ||||
| | | +--rw status-code? uint16 | ||||
| | | +--rw status-message? string | ||||
| | +--rw interface-id-option | ||||
| | +--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 | |||
| +--ro decline-received-count? uint32 | | +--ro decline-received-count? uint32 | |||
| +--ro reconfigure-sent-count? uint32 | | +--ro reconfigure-sent-count? uint32 | |||
skipping to change at page 13, line 35 ¶ | skipping to change at page 13, line 40 ¶ | |||
+---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: | |||
* dhcpv6-node-type: The different functional DHCPv6 elements each | * enabled: Globally enables/disables all DHCPv6 relay functions. | |||
have their relevant identities. | ||||
* dhcpv6-relay: This container holds the relay's DHCPv6 specific | * dhcpv6-relay: This container holds the relay's DHCPv6 specific | |||
configuration. | configuration. | |||
* relay-if: As a relay may have multiple client-facing interfaces, | * relay-if: As a relay may have multiple client-facing interfaces, | |||
they are configured in a list. The if-name leaf is the key and is | they are configured in a list. The if-name leaf is the key and is | |||
an interface-ref to the applicable interface defined by the 'ietf- | an interface-ref to the applicable interface defined by the 'ietf- | |||
interfaces' YANG module. | interfaces' YANG module. | |||
* enabled: Enables/disables all DHCPv6 relay function for the | ||||
specific interface. | ||||
* destination-addresses: Defines a list of IPv6 addresses that | * destination-addresses: Defines a list of IPv6 addresses that | |||
client messages will be relayed to. May include unicast or | client messages will be relayed to. May include unicast or | |||
multicast addresses. | multicast addresses. | |||
* link-address: Configures the value that the relay will put into | * link-address: Configures the value that the relay will put into | |||
the link-address field of Relay-Forward messages. | the link-address field of Relay-Forward messages. | |||
* prefix-delegation: As prefix delegation is not supported by all | * prefix-delegation: As prefix delegation is not supported by all | |||
DHCPv6 relay implementations, it is enabled by this feature | DHCPv6 relay implementations, it is enabled by this feature | |||
statement where required. | statement where required. | |||
* 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: As with the Server module, DHCPv6 options that can | * relay-options: Holds configuration parameters for DHCPv6 options | |||
be sent by the relay are augmented here. | which can be sent by the relay. The initial set of applicable | |||
option definitions are defined here and additional options that | ||||
are also relevant to the server and/or client are imported from | ||||
the 'ietf-dhcpv6-common' module. Where needed, other DHCPv6 | ||||
option modules can be augmented as they are defined. | ||||
Information about notifications: | Information about notifications: | |||
* topology-changed: Raised when the topology of the relay agent is | * topology-changed: Raised when the topology of the relay agent is | |||
changed, e.g. a client facing interface is reconfigured. | changed, e.g. a client facing interface is reconfigured. | |||
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. | |||
skipping to change at page 14, line 35 ¶ | skipping to change at page 14, line 46 ¶ | |||
* 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. | |||
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 augmentations of the | client module. The tree also includes the common functions module | |||
relevant option definitions from Section 3.6 and the common functions | Section 3.4. | |||
module Section 3.7. | ||||
module: ietf-dhcpv6-client | module: ietf-dhcpv6-client | |||
+--rw dhcpv6-node-type? identityref | ||||
+--rw dhcpv6-client | +--rw dhcpv6-client | |||
+--rw enabled? boolean | ||||
+--rw client-if* [if-name] | +--rw client-if* [if-name] | |||
+--rw if-name | +--rw if-name | |||
| if:interface-ref | | if:interface-ref | |||
+--rw enabled? boolean | ||||
+--rw type-code? uint16 | +--rw type-code? uint16 | |||
+--rw (duid-type)? | +--rw (duid-type)? | |||
| +--:(duid-llt) | | +--:(duid-llt) | |||
| | +--rw duid-llt-hardware-type? uint16 | | | +--rw duid-llt-hardware-type? uint16 | |||
| | +--rw duid-llt-time? yang:timeticks | | | +--rw duid-llt-time? yang:timeticks | |||
| | +--rw duid-llt-link-layer-address? | | | +--rw duid-llt-link-layer-address? | |||
| | yang:mac-address | | | yang:mac-address | |||
| +--:(duid-en) | | +--:(duid-en) | |||
| | +--rw duid-en-enterprise-number? uint32 | | | +--rw duid-en-enterprise-number? uint32 | |||
| | +--rw duid-en-identifier? string | | | +--rw duid-en-identifier? string | |||
| +--:(duid-ll) | | +--:(duid-ll) | |||
| | +--rw duid-ll-hardware-type? uint16 | | | +--rw duid-ll-hardware-type? uint16 | |||
| | +--rw duid-ll-link-layer-address? | | | +--rw duid-ll-link-layer-address? | |||
| | yang:mac-address | | | yang:mac-address | |||
| +--:(duid-uuid) | | +--:(duid-uuid) | |||
| | +--rw uuid? yang:uuid | | | +--rw uuid? yang:uuid | |||
| +--:(duid-unstructured) | | +--:(duid-unstructured) | |||
| +--rw data? binary | | +--rw data? binary | |||
+--ro active-duid? binary | +--ro active-duid? binary | |||
+--rw client-configured-options | +--rw client-configured-options | |||
| +--rw option-request-option | ||||
| | +--rw oro-option* uint16 | ||||
| +--rw status-code-option | ||||
| | +--rw status-code? uint16 | ||||
| | +--rw status-message? string | ||||
| +--rw rapid-commit-option! | ||||
| +--rw user-class-option | ||||
| | +--rw user-class-data* [user-class-datum-id] | ||||
| | +--rw user-class-datum-id uint8 | ||||
| | +--rw user-class-datum? string | ||||
| +--rw vendor-class-option | ||||
| | +--rw vendor-class-option-instances* | ||||
| | [enterprise-number] | ||||
| | +--rw enterprise-number uint32 | ||||
| | +--rw vendor-class* [vendor-class-datum-id] | ||||
| | +--rw vendor-class-datum-id uint8 | ||||
| | +--rw vendor-class-datum? string | ||||
| +--rw vendor-specific-information-option | ||||
| | +--rw vendor-specific-information-option-instances* | ||||
| | [enterprise-number] | ||||
| | +--rw enterprise-number uint32 | ||||
| | +--rw vendor-option-data* [sub-option-code] | ||||
| | +--rw sub-option-code uint16 | ||||
| | +--rw sub-option-data? string | ||||
| +--rw reconfigure-accept-option! | ||||
+--rw ia-na* [iaid] | +--rw ia-na* [iaid] | |||
| +--rw iaid uint32 | | +--rw iaid uint32 | |||
| +--rw ia-na-options | | +--rw ia-na-options | |||
| +--ro lease-state | | +--ro lease-state | |||
| +--ro ia-na-address? inet:ipv6-address | | +--ro ia-na-address? inet:ipv6-address | |||
| +--ro preferred-lifetime? | | +--ro preferred-lifetime? | |||
| | dhcpv6-common:timer-seconds32 | | | dhcpv6-common:timer-seconds32 | |||
| +--ro valid-lifetime? | | +--ro valid-lifetime? | |||
| | dhcpv6-common:timer-seconds32 | | | dhcpv6-common:timer-seconds32 | |||
| +--ro lease-t1? | | +--ro lease-t1? | |||
skipping to change at page 16, line 47 ¶ | skipping to change at page 17, line 39 ¶ | |||
| -> /dhcpv6-client/client-if/ia-na/iaid | | -> /dhcpv6-client/client-if/ia-na/iaid | |||
+--ro lease-ia-ta? | +--ro lease-ia-ta? | |||
| -> /dhcpv6-client/client-if/ia-ta/iaid | | -> /dhcpv6-client/client-if/ia-ta/iaid | |||
+--ro lease-ia-pd? | +--ro lease-ia-pd? | |||
-> /dhcpv6-client/client-if/ia-pd/iaid | -> /dhcpv6-client/client-if/ia-pd/iaid | |||
Figure 3: DHCPv6 Client Data Module Structure | Figure 3: DHCPv6 Client Data Module Structure | |||
Descriptions of important nodes: | Descriptions of important nodes: | |||
* dhcpv6-node-type: The different functional DHCPv6 elements each | * enabled: Globally enables/disables all DHCPv6 client functions. | |||
have their relevant identities. | ||||
* dhcpv6-client: This container holds the client's DHCPv6 specific | * dhcpv6-client: This container holds the client's DHCPv6 specific | |||
configuration. | configuration. | |||
* client-if: As a client may have multiple interfaces requesting | * client-if: As a client may have multiple interfaces requesting | |||
configuration over DHCP, they are configured in a list. The if- | configuration over DHCP, they are configured in a list. The if- | |||
name leaf is the key and is an interface-ref to the applicable | name leaf is the key and is an interface-ref to the applicable | |||
interface defined by the 'ietf-interfaces' YANG module. | interface defined by the 'ietf-interfaces' YANG module. | |||
* enabled: Enables/disables all DHCPv6 client function for the | ||||
specific interface. | ||||
* client-duid: Each DHCP client must have a DUID (DHCP Unique | * client-duid: Each DHCP client must have a DUID (DHCP Unique | |||
Identifier) to identify itself to clients. A DUID consists of a | Identifier) to identify itself to servers and relays. A DUID | |||
two-octet type field and an arbitrary length (of no more than | consists of a two-octet type field and an arbitrary length (of no | |||
128-bytes) content field. Currently there are four defined types | more than 128-bytes) content field. Currently there are four | |||
of DUIDs in [RFC8415]: DUID-LLT, DUID-EN, DUID-LL, and DUID-UUID. | defined types of DUIDs in [RFC8415]: DUID-LLT, DUID-EN, DUID-LL, | |||
DUID-Unknown is used for arbitrary DUID formats which do not | and DUID-UUID. DUID-Unknown is used for arbitrary DUID formats | |||
follow any of these defined types. 'active-duid' is a read-only | which do not follow any of these defined types. 'active-duid' is | |||
field that the client's current DUID can be retrieved from. The | a read-only field that the client's current DUID can be retrieved | |||
DUID definitions are imported from the 'ietf-dhcpv6-common.yang' | from. The DUID definitions are imported from the 'ietf- | |||
module. DUID is configured under the 'client-if' to allow a | dhcpv6-common.yang' module. DUID is configured under the 'client- | |||
client to have different DUIDs for each interface if required. | if' to allow a client to have different DUIDs for each interface | |||
if required. | ||||
* client-configured-options: Holds configuration parameters for | ||||
DHCPv6 options which can be sent by the client. The initial set | ||||
of applicable option definitions are defined here and additional | ||||
options that are also relevant to the relay and/or server are | ||||
imported from the 'ietf-dhcpv6-common' module. Where needed, | ||||
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. Also contains | requesting one or more of each of the lease types. Read-only | |||
read only nodes related to active leases. | nodes related to the active lease are also located here. | |||
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. | |||
skipping to change at page 18, line 47 ¶ | skipping to change at page 19, line 51 ¶ | |||
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). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC 8513; see | This version of this YANG module is part of RFC 8513; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
revision 2021-01-29 { | ||||
description "Version update for draft -17 publication."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-17"; | ||||
} | ||||
revision 2021-01-06 { | revision 2021-01-06 { | |||
description "Version update for draft -16 publication."; | description "Version update for draft -16 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-16"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-16"; | |||
} | } | |||
revision 2020-12-22 { | revision 2020-12-22 { | |||
description "Version update for draft -13 publication."; | description "Version update for draft -13 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-15"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-15"; | |||
} | } | |||
revision 2020-12-10 { | revision 2020-12-10 { | |||
description "Version update for draft -13 publication."; | description "Version update for draft -13 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-13"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-13"; | |||
} | } | |||
skipping to change at page 20, line 4 ¶ | skipping to change at page 21, line 12 ¶ | |||
revision 2017-12-22 { | revision 2017-12-22 { | |||
description "Resolve most issues on Ian's github."; | description "Resolve most issues on Ian's github."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | |||
} | } | |||
revision 2017-11-24 { | revision 2017-11-24 { | |||
description "First version of the separated server specific | description "First version of the separated server specific | |||
YANG model."; | YANG model."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | |||
} | } | |||
/* | ||||
* Identities | ||||
*/ | ||||
identity server { | ||||
base "dhcpv6-common:dhcpv6-node"; | ||||
description "DHCPv6 server identity."; | ||||
} | ||||
leaf dhcpv6-node-type { | ||||
type identityref { | ||||
base "dhcpv6-common:dhcpv6-node"; | ||||
} | ||||
description "Type for a DHCPv6 server."; | ||||
} | ||||
/* | /* | |||
* Features | * Features | |||
*/ | */ | |||
feature prefix-delegation { | feature prefix-delegation { | |||
description "Denotes that the server implements DHCPv6 prefix | description "Denotes that the server implements DHCPv6 prefix | |||
delegation."; | delegation."; | |||
} | } | |||
skipping to change at page 23, line 32 ¶ | skipping to change at page 24, line 25 ¶ | |||
description "Number of Reconfigure (10) messages sent."; | description "Number of Reconfigure (10) messages sent."; | |||
} | } | |||
leaf information-request-count { | leaf information-request-count { | |||
type uint32; | type uint32; | |||
config "false"; | config "false"; | |||
description "Number of Information-request (11) messages | description "Number of Information-request (11) messages | |||
received."; | received."; | |||
} | } | |||
} | } | |||
grouping preference-option-group { | ||||
description "OPTION_PREFERENCE (7) Preference Option."; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol for | ||||
IPv6 (DHCPv6)"; | ||||
container preference-option { | ||||
description "OPTION_PREFERENCE (7) Preference Option | ||||
container."; | ||||
leaf pref-value { | ||||
type uint8; | ||||
description "The preference value for the server in this | ||||
message. A 1-octet unsigned integer."; | ||||
} | ||||
} | ||||
} | ||||
grouping server-unicast-option-group { | ||||
description "OPTION_UNICAST (12) Server Unicast Option."; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol for | ||||
IPv6 (DHCPv6)"; | ||||
container server-unicast-option { | ||||
description "OPTION_UNICAST (12) Server Unicast Option | ||||
container."; | ||||
leaf server-address { | ||||
type inet:ipv6-address; | ||||
description "The 128-bit address to which the client | ||||
should send messages delivered using unicast."; | ||||
} | ||||
} | ||||
} | ||||
grouping reconfigure-message-option-group { | ||||
description "OPTION_RECONF_MSG (19) Reconfigure Message | ||||
Option."; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol for | ||||
IPv6 (DHCPv6)"; | ||||
container reconfigure-message-option { | ||||
description "OPTION_RECONF_MSG (19) Reconfigure Message | ||||
Option."; | ||||
leaf msg-type { | ||||
type uint8; | ||||
description "5 for Renew message, 6 for Rebind message, | ||||
11 for Information-request message."; | ||||
} | ||||
} | ||||
} | ||||
grouping info-refresh-time-option-group { | ||||
description "OPTION_INFORMATION_REFRESH_TIME (32) | ||||
Information Refresh Time option."; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol for | ||||
IPv6 (DHCPv6)"; | ||||
container info-refresh-time-option { | ||||
description "OPTION_INFORMATION_REFRESH_TIME (32) | ||||
Information Refresh Time option container."; | ||||
leaf info-refresh-time { | ||||
type dhcpv6-common:timer-seconds32; | ||||
description "Time duration relative to the current time, | ||||
expressed in units of seconds."; | ||||
} | ||||
} | ||||
} | ||||
grouping sol-max-rt-option-group { | ||||
description "OPTION_SOL_MAX_RT (82) sol max rt option."; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol for | ||||
IPv6 (DHCPv6)"; | ||||
container sol-max-rt-option { | ||||
description "OPTION_SOL_MAX_RT (82) sol max rt option | ||||
container."; | ||||
leaf sol-max-rt-value { | ||||
type dhcpv6-common:timer-seconds32; | ||||
description "sol max rt value"; | ||||
} | ||||
} | ||||
} | ||||
grouping inf-max-rt-option-group { | ||||
description "OPTION_INF_MAX_RT (83) inf max rt option."; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol for | ||||
IPv6 (DHCPv6)"; | ||||
container inf-max-rt-option { | ||||
description "OPTION_INF_MAX_RT (83) inf max rt option | ||||
container."; | ||||
leaf inf-max-rt-value { | ||||
type dhcpv6-common:timer-seconds32; | ||||
description "inf max rt value"; | ||||
} | ||||
} | ||||
} | ||||
/* | /* | |||
* Data Nodes | * Data Nodes | |||
*/ | */ | |||
container dhcpv6-server { | container dhcpv6-server { | |||
description "Configuration nodes for the DHCPv6 server."; | description "Configuration nodes for the DHCPv6 server."; | |||
leaf enabled { | ||||
description "Enables the DHCP server function."; | ||||
type boolean; | ||||
default true; | ||||
} | ||||
container server-duid { | container server-duid { | |||
description "DUID of the server."; | description "DUID of the server."; | |||
uses dhcpv6-common:duid; | uses dhcpv6-common:duid; | |||
} | } | |||
container vendor-config { | container vendor-config { | |||
description "This container provides a location for | description "This container provides a location for | |||
augmenting vendor or implementation specific | augmenting vendor or implementation specific | |||
configuration nodes."; | configuration nodes."; | |||
} | } | |||
container option-sets { | container option-sets { | |||
skipping to change at page 24, line 13 ¶ | skipping to change at page 27, line 4 ¶ | |||
'option-set' list is a set of options and their | 'option-set' list is a set of options and their | |||
contents that will be returned to clients."; | contents that will be returned to clients."; | |||
list option-set { | list option-set { | |||
key option-set-id; | key option-set-id; | |||
description "YANG definitions for DHCPv6 options are | description "YANG definitions for DHCPv6 options are | |||
contained in separate YANG modules and augmented to this | contained in separate YANG modules and augmented to this | |||
container as required."; | container as required."; | |||
leaf option-set-id { | leaf option-set-id { | |||
type uint32; | type uint32; | |||
description "Option set identifier."; | description "Option set identifier."; | |||
} | } | |||
leaf description { | leaf description { | |||
type string; | type string; | |||
description "An optional field for storing additional | description "An optional field for storing additional | |||
information relevant to the option set."; | information relevant to the option set."; | |||
} | } | |||
uses preference-option-group; | ||||
uses dhcpv6-common:auth-option-group; | ||||
uses server-unicast-option-group; | ||||
uses dhcpv6-common:status-code-option-group; | ||||
uses dhcpv6-common:rapid-commit-option-group; | ||||
uses dhcpv6-common:vendor-specific-information-option-group; | ||||
uses reconfigure-message-option-group; | ||||
uses dhcpv6-common:reconfigure-accept-option-group; | ||||
uses info-refresh-time-option-group; | ||||
uses sol-max-rt-option-group; | ||||
uses inf-max-rt-option-group; | ||||
} | } | |||
} | } | |||
container class-selector { | container class-selector { | |||
description "DHCPv6 servers use a 'class-selector' function | description "DHCPv6 servers use a 'class-selector' function | |||
in order to identify and classify incoming client messages | in order to identify and classify incoming client messages | |||
so that they can be given the correct configuration. | so that they can be given the correct configuration. | |||
The mechanisms used for implementing this function vary | The mechanisms used for implementing this function vary | |||
greatly between different implementations such that they | greatly between different implementations such that they | |||
are not possible to include in this module. This container | are not possible to include in this module. This container | |||
skipping to change at page 33, line 25 ¶ | skipping to change at page 36, line 25 ¶ | |||
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). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC 8513; see | This version of this YANG module is part of RFC 8513; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
revision 2021-01-29 { | ||||
description "Version update for draft -17 publication."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-17"; | ||||
} | ||||
revision 2021-01-06 { | revision 2021-01-06 { | |||
description "Version update for draft -16 publication."; | description "Version update for draft -16 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-16"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-16"; | |||
} | } | |||
revision 2020-12-22 { | revision 2020-12-22 { | |||
description "Version update for draft -13 publication."; | description "Version update for draft -13 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-15"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-15"; | |||
} | } | |||
skipping to change at page 34, line 30 ¶ | skipping to change at page 37, line 35 ¶ | |||
revision 2017-11-24 { | revision 2017-11-24 { | |||
description | description | |||
"First version of the separated relay specific | "First version of the separated relay specific | |||
YANG model."; | YANG model."; | |||
reference | reference | |||
"I-D: draft-ietf-dhc-dhcpv6-yang"; | "I-D: draft-ietf-dhc-dhcpv6-yang"; | |||
} | } | |||
/* | /* | |||
* Identities | ||||
*/ | ||||
identity relay { | ||||
base "dhcpv6-common:dhcpv6-node"; | ||||
description "DHCPv6 relay agent identity."; | ||||
} | ||||
leaf dhcpv6-node-type { | ||||
type identityref { | ||||
base "dhcpv6-common:dhcpv6-node"; | ||||
} | ||||
description "Type for a DHCPv6 relay."; | ||||
} | ||||
/* | ||||
* Features | * Features | |||
*/ | */ | |||
feature prefix-delegation { | feature prefix-delegation { | |||
description "Enable if the relay functions as a delegating router | description "Enable if the relay functions as a delegating router | |||
for DHCPv6 prefix delegation."; | for DHCPv6 prefix delegation."; | |||
} | } | |||
/* | /* | |||
* Groupings | * Groupings | |||
*/ | */ | |||
grouping pd-lease-state { | grouping pd-lease-state { | |||
description "State data for the relay."; | description "State data for the relay."; | |||
list pd-leases { | list pd-leases { | |||
key ia-pd-prefix; | key ia-pd-prefix; | |||
skipping to change at page 38, line 14 ¶ | skipping to change at page 41, line 4 ¶ | |||
description "Number of Relay-forward (12) messages containing | description "Number of Relay-forward (12) messages containing | |||
a message of unknown type received."; | a message of unknown type received."; | |||
} | } | |||
leaf discarded-message-count { | leaf discarded-message-count { | |||
type uint32; | type uint32; | |||
config "false"; | config "false"; | |||
description "Number of messages that have been discarded | description "Number of messages that have been discarded | |||
for any reason."; | for any reason."; | |||
} | } | |||
} | } | |||
grouping interface-id-option-group { | ||||
description "OPTION_INTERFACE_ID (18) Interface-Id Option."; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol for | ||||
IPv6 (DHCPv6)"; | ||||
container interface-id-option { | ||||
description "OPTION_INTERFACE_ID (18) Interface-Id Option | ||||
container."; | ||||
leaf interface-id { | ||||
type string; | ||||
description "An opaque value of arbitrary length generated | ||||
by the relay agent to identify one of the relay agent's | ||||
interfaces."; | ||||
} | ||||
} | ||||
} | ||||
/* | /* | |||
* Data Nodes | * Data Nodes | |||
*/ | */ | |||
container dhcpv6-relay { | container dhcpv6-relay { | |||
description | description | |||
"This container contains the configuration data nodes for | "This container contains the configuration data nodes for | |||
the relay."; | the relay."; | |||
leaf enabled { | ||||
description "Globally enables the DHCP relay function."; | ||||
type boolean; | ||||
default true; | ||||
} | ||||
list relay-if { | list relay-if { | |||
key if-name; | key if-name; | |||
description "List of interfaces configured for DHCPv6 | description "List of interfaces configured for DHCPv6 | |||
relaying."; | relaying."; | |||
leaf if-name { | leaf if-name { | |||
type if:interface-ref; | type if:interface-ref; | |||
description "interface-ref to the relay interface."; | description "interface-ref to the relay interface."; | |||
} | } | |||
leaf enabled { | ||||
description "Enables the DHCP relay function for this | ||||
interface."; | ||||
type boolean; | ||||
default true; | ||||
} | ||||
leaf-list destination-addresses { | leaf-list destination-addresses { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description "Each DHCPv6 relay agent may be configured with | description "Each DHCPv6 relay agent may be configured with | |||
a list of destination addresses for relayed messages. | a list of destination addresses for relayed messages. | |||
The list may include unicast addresses, multicast addresses | The list may include unicast addresses, multicast addresses | |||
or other valid addresses."; | or other valid addresses."; | |||
} | } | |||
leaf link-address { | leaf link-address { | |||
type binary { | type binary { | |||
length "0..16"; | length "0..16"; | |||
} | } | |||
description "An address that may be used by the server | description "An address that may be used by the server | |||
to identify the link on which the client is located."; | to identify the link on which the client is located."; | |||
} | } | |||
container relay-options { | container relay-options { | |||
description "Definitions for DHCPv6 options that can be sent | description "Definitions for DHCPv6 options that can be sent | |||
by the relay are augmented to this location from other YANG | by the relay are augmented to this location from other YANG | |||
modules as required."; | modules as required."; | |||
uses dhcpv6-common:auth-option-group; | ||||
uses dhcpv6-common:status-code-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 "Controls and holds state information for prefix | description "Controls and holds state information for prefix | |||
delegation."; | delegation."; | |||
uses pd-lease-state; | uses pd-lease-state; | |||
} | } | |||
} | } | |||
skipping to change at page 42, line 18 ¶ | skipping to change at page 45, line 37 ¶ | |||
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). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC 8513; see | This version of this YANG module is part of RFC 8513; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
revision 2021-01-29 { | ||||
description "Version update for draft -17 publication."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-17"; | ||||
} | ||||
revision 2021-01-06 { | revision 2021-01-06 { | |||
description "Version update for draft -16 publication."; | description "Version update for draft -16 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-16"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-16"; | |||
} | } | |||
revision 2020-12-22 { | revision 2020-12-22 { | |||
description "Version update for draft -13 publication."; | description "Version update for draft -13 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-15"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-15"; | |||
} | } | |||
revision 2020-12-10 { | revision 2020-12-10 { | |||
description "Version update for draft -13 publication."; | description "Version update for draft -13 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-13"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-13"; | |||
} | } | |||
revision 2020-12-01 { | revision 2020-12-01 { | |||
description "Version update for draft -12 publication."; | description "Version update for draft -12 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-12"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-12"; | |||
} | } | |||
skipping to change at page 43, line 21 ¶ | skipping to change at page 46, line 47 ¶ | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | |||
} | } | |||
revision 2017-11-24 { | revision 2017-11-24 { | |||
description "First version of the separated client specific | description "First version of the separated client specific | |||
YANG model."; | YANG model."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | |||
} | } | |||
/* | /* | |||
* Identities | ||||
*/ | ||||
identity client { | ||||
base "dhcpv6-common:dhcpv6-node"; | ||||
description "DHCPv6 client identity."; | ||||
} | ||||
leaf dhcpv6-node-type { | ||||
type identityref { | ||||
base "dhcpv6-common:dhcpv6-node"; | ||||
} | ||||
description "Type for a DHCPv6 client."; | ||||
} | ||||
/* | ||||
* Groupings | * Groupings | |||
*/ | */ | |||
grouping message-statistics { | grouping message-statistics { | |||
description "Counters for DHCPv6 messages."; | description "Counters for DHCPv6 messages."; | |||
leaf solicit-count { | leaf solicit-count { | |||
type uint32; | type uint32; | |||
config "false"; | config "false"; | |||
description "Number of Solicit (1) messages sent."; | description "Number of Solicit (1) messages sent."; | |||
} | } | |||
skipping to change at page 45, line 4 ¶ | skipping to change at page 48, line 13 ¶ | |||
config "false"; | config "false"; | |||
description "Number of Reconfigure (10) messages received."; | description "Number of Reconfigure (10) messages received."; | |||
} | } | |||
leaf information-request-count { | leaf information-request-count { | |||
type uint32; | type uint32; | |||
config "false"; | config "false"; | |||
description "Number of Information-request (11) messages | description "Number of Information-request (11) messages | |||
sent."; | sent."; | |||
} | } | |||
} | } | |||
grouping option-request-option-group { | ||||
description "OPTION_ORO (6) Option Request Option. A client | ||||
MUST include an Option Request option in a Solicit, Request, | ||||
Renew, Rebind, or Information-request message to inform | ||||
the server about options the client wants the server to send | ||||
to the client."; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol for | ||||
IPv6 (DHCPv6)"; | ||||
container option-request-option { | ||||
description "OPTION_ORO (6) Option Request Option container."; | ||||
leaf-list oro-option { | ||||
type uint16; | ||||
description "List of options that the client is requesting, | ||||
identified by option code"; | ||||
} | ||||
} | ||||
} | ||||
grouping user-class-option-group { | ||||
description "OPTION_USER_CLASS (15) User Class Option"; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol | ||||
for IPv6 (DHCPv6)"; | ||||
container user-class-option { | ||||
description "OPTION_USER_CLASS (15) User Class Option | ||||
container."; | ||||
list user-class-data { | ||||
key user-class-datum-id; | ||||
min-elements 1; | ||||
description "The user classes of which the client | ||||
is a member."; | ||||
leaf user-class-datum-id { | ||||
type uint8; | ||||
description "User class datum ID"; | ||||
} | ||||
leaf user-class-datum { | ||||
type string; | ||||
description "Opaque field representing a User Class | ||||
of which the client is a member."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
grouping vendor-class-option-group { | ||||
description "OPTION_VENDOR_CLASS (16) Vendor Class Option"; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol | ||||
for IPv6 (DHCPv6)"; | ||||
container vendor-class-option { | ||||
description "OPTION_VENDOR_CLASS (16) Vendor Class Option | ||||
container."; | ||||
list vendor-class-option-instances { | ||||
key enterprise-number; | ||||
description "The vendor class option allows for multiple | ||||
instances in a single message. Each list entry defines | ||||
the contents of an instance of the option."; | ||||
leaf enterprise-number { | ||||
type uint32; | ||||
description "The vendor's registered Enterprise Number | ||||
as maintained by IANA."; | ||||
} | ||||
list vendor-class { | ||||
key vendor-class-datum-id; | ||||
description "The vendor classes of which the client is | ||||
a member."; | ||||
leaf vendor-class-datum-id { | ||||
type uint8; | ||||
description "Vendor class datum ID"; | ||||
} | ||||
leaf vendor-class-datum { | ||||
type string; | ||||
description "Opaque field representing a vendor class | ||||
of which the client is a member."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
} | ||||
/* | /* | |||
* Data Nodes | * Data Nodes | |||
*/ | */ | |||
container dhcpv6-client { | container dhcpv6-client { | |||
description "DHCPv6 client configuration and state."; | description "DHCPv6 client configuration and state."; | |||
leaf enabled { | ||||
description "Globally enables the DHCP client function."; | ||||
type boolean; | ||||
default true; | ||||
} | ||||
list client-if { | list client-if { | |||
key if-name; | key if-name; | |||
description "The list of interfaces that the client will be | description "The list of interfaces that the client will be | |||
requesting DHCPv6 configuration for."; | requesting DHCPv6 configuration for."; | |||
leaf if-name { | leaf if-name { | |||
type if:interface-ref; | type if:interface-ref; | |||
mandatory true; | mandatory true; | |||
description "Reference to the interface entry that | description "Reference to the interface entry that | |||
the requested configuration is relevant to."; | the requested configuration is relevant to."; | |||
} | } | |||
leaf enabled { | ||||
description "Enables the DHCP client function for this | ||||
interface."; | ||||
type boolean; | ||||
default true; | ||||
} | ||||
uses dhcpv6-common:duid; | uses dhcpv6-common:duid; | |||
container client-configured-options { | container client-configured-options { | |||
description "Definitions for DHCPv6 options that can be be | description "Definitions for DHCPv6 options that can be be | |||
sent by the client are augmented to this location from | sent by the client are augmented to this location from | |||
other YANG modules as required."; | other YANG modules as required."; | |||
uses option-request-option-group; | ||||
uses dhcpv6-common:status-code-option-group; | ||||
uses dhcpv6-common:rapid-commit-option-group; | ||||
uses user-class-option-group; | ||||
uses vendor-class-option-group; | ||||
uses dhcpv6-common:vendor-specific-information-option-group; | ||||
uses dhcpv6-common:reconfigure-accept-option-group; | ||||
} | } | |||
list ia-na { | list ia-na { | |||
key iaid; | key iaid; | |||
description "Configuration relevant for an IA_NA."; | description "Configuration relevant for an IA_NA."; | |||
reference "RFC8415: Dynamic Host Configuration Protocol | reference "RFC8415: Dynamic Host Configuration Protocol | |||
for IPv6 (DHCPv6)."; | for IPv6 (DHCPv6)."; | |||
leaf iaid { | leaf iaid { | |||
type uint32; | type uint32; | |||
description "A unique identifier for this IA_NA."; | description "A unique identifier for this IA_NA."; | |||
} | } | |||
skipping to change at page 50, line 42 ¶ | skipping to change at page 56, line 4 ¶ | |||
path "/dhcpv6-client/client-if/ia-ta/iaid"; | path "/dhcpv6-client/client-if/ia-ta/iaid"; | |||
} | } | |||
description "Reference to the IA_TA lease."; | description "Reference to the IA_TA lease."; | |||
} | } | |||
leaf lease-ia-pd { | leaf lease-ia-pd { | |||
type leafref { | type leafref { | |||
path "/dhcpv6-client/client-if/ia-pd/iaid"; | path "/dhcpv6-client/client-if/ia-pd/iaid"; | |||
} | } | |||
description "Reference to the IA_PD lease."; | description "Reference to the IA_PD lease."; | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
3.4. RFC8415 Server Options 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-options-rfc8415-server.yang" | <CODE BEGINS> file "ietf-dhcpv6-common.yang" | |||
module ietf-dhcpv6-options-rfc8415-server { | module ietf-dhcpv6-common { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:" + | namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-common"; | |||
"ietf-dhcpv6-options-rfc8415-server"; | prefix "dhcpv6-common"; | |||
prefix "rfc8415-srv"; | ||||
import ietf-inet-types { | import ietf-yang-types { | |||
prefix inet; | prefix yang; | |||
reference | reference | |||
"RFC 6991: Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
import ietf-dhcpv6-common { | ||||
prefix dhcpv6-common; | ||||
reference | ||||
"To be updated on publication"; | ||||
} | ||||
import ietf-dhcpv6-server { | ||||
prefix dhcpv6-server; | ||||
reference | ||||
"To be updated on publication"; | ||||
} | ||||
organization "DHC WG"; | organization "DHC WG"; | |||
contact | contact | |||
"cuiyong@tsinghua.edu.cn | "yong@csnet1.cs.tsinghua.edu.cn | |||
wangh13@mails.tsinghua.edu.cn | ||||
lh.sunlinh@gmail.com | lh.sunlinh@gmail.com | |||
ian.farrer@telekom.de | ian.farrer@telekom.de | |||
sladjana.zechlin@telekom.de | sladjana.zechlin@telekom.de | |||
hezihao9512@gmail.com"; | hezihao9512@gmail.com"; | |||
description "This YANG module contains DHCPv6 options defined | description "This YANG module defines common components | |||
in RFC8415 that can be used by DHCPv6 clients. | used for the configuration and management of DHCPv6. | |||
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). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX | ||||
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | ||||
for full legal notices. | ||||
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | This version of this YANG module is part of RFC 8513; see | |||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | the RFC itself for full legal notices."; | |||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | revision 2021-01-29 { | |||
they appear in all capitals, as shown here."; | description "Version update for draft -17 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-17"; | ||||
} | ||||
revision 2021-01-06 { | revision 2021-01-06 { | |||
description "Version update for draft -16 publication."; | description "Version update for draft -16 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-16"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-16"; | |||
} | } | |||
revision 2020-12-22 { | revision 2020-12-22 { | |||
description "Version update for draft -13 publication."; | description "Version update for draft -13 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-15"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-15"; | |||
} | } | |||
skipping to change at page 52, line 34 ¶ | skipping to change at page 57, line 27 ¶ | |||
revision 2020-12-10 { | revision 2020-12-10 { | |||
description "Version update for draft -13 publication."; | description "Version update for draft -13 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-13"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-13"; | |||
} | } | |||
revision 2020-12-01 { | revision 2020-12-01 { | |||
description "Version update for draft -12 publication."; | description "Version update for draft -12 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-12"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-12"; | |||
} | } | |||
revision 2020-11-19 { | ||||
description "Separated into a client specific set of options."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-12"; | ||||
} | ||||
revision 2020-05-26 { | revision 2020-05-26 { | |||
description "Version update for draft -11 publication and | description "Version update for draft -11 publication and | |||
to align revisions across the different modules."; | to align revisions across the different modules."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-11"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-11"; | |||
} | } | |||
revision 2019-06-07 { | ||||
description "Major reworking to only contain RFC8415 options. | ||||
if-feature for each option removed. Removed groupings | ||||
of features by device or combination of devices. Added "; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
revision 2018-09-04 { | revision 2018-09-04 { | |||
description ""; | description ""; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | |||
} | } | |||
revision 2018-03-04 { | revision 2018-01-30 { | |||
description "Resolved most issues on the DHC official | description "Initial revision"; | |||
github"; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
revision 2017-12-22 { | ||||
description "Resolve most issues on Ian's github."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | |||
} | } | |||
revision 2017-11-24 { | typedef threshold { | |||
description "First version of the separated DHCPv6 options | type union { | |||
YANG model."; | type uint16 { | |||
reference "I-D:draft-ietf-dhc-dhcpv6-yang"; | range 0..100; | |||
} | ||||
/* | ||||
* Groupings | ||||
*/ | ||||
grouping preference-option-group { | ||||
description "OPTION_PREFERENCE (7) Preference Option."; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol for | ||||
IPv6 (DHCPv6)"; | ||||
container preference-option { | ||||
description "OPTION_PREFERENCE (7) Preference Option | ||||
container."; | ||||
leaf pref-value { | ||||
type uint8; | ||||
description "The preference value for the server in this | ||||
message. A 1-octet unsigned integer."; | ||||
} | ||||
} | ||||
} | ||||
grouping auth-option-group { | ||||
description "OPTION_AUTH (11) Authentication Option."; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol | ||||
for IPv6 (DHCPv6)"; | ||||
container auth-option { | ||||
description "OPTION_AUTH (11) Authentication Option container."; | ||||
leaf protocol { | ||||
type uint8; | ||||
description "The authentication protocol used in this | ||||
Authentication option."; | ||||
} | ||||
leaf algorithm { | ||||
type uint8; | ||||
description "The algorithm used in the authentication | ||||
protocol."; | ||||
} | ||||
leaf rdm { | ||||
type uint8; | ||||
description "The replay detection method used | ||||
in this Authentication option."; | ||||
} | ||||
leaf replay-detection { | ||||
type uint64; | ||||
description "The replay detection information for the RDM."; | ||||
} | } | |||
leaf auth-information { | type enumeration { | |||
type string; | enum "disabled" { | |||
description "The authentication information, as specified | description "No threshold"; | |||
by the protocol and algorithm used in this Authentication | } | |||
option."; | ||||
} | } | |||
} | ||||
} | ||||
grouping server-unicast-option-group { | ||||
description "OPTION_UNICAST (12) Server Unicast Option."; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol for | ||||
IPv6 (DHCPv6)"; | ||||
container server-unicast-option { | ||||
description "OPTION_UNICAST (12) Server Unicast Option | ||||
container."; | ||||
leaf server-address { | ||||
type inet:ipv6-address; | ||||
description "The 128-bit address to which the client | ||||
should send messages delivered using unicast."; | ||||
} | ||||
} | } | |||
description "Threshold value in percent"; | ||||
} | } | |||
grouping status-code-option-group { | typedef timer-seconds32 { | |||
description "OPTION_STATUS_CODE (13) Status Code Option."; | type uint32 { | |||
reference "RFC8415: Dynamic Host Configuration Protocol | range "1..4294967295"; | |||
for IPv6 (DHCPv6)"; | ||||
container status-code-option { | ||||
description "OPTION_STATUS_CODE (13) Status Code Option | ||||
container."; | ||||
leaf status-code { | ||||
type uint16; | ||||
description "The numeric code for the status encoded | ||||
in this option. See the Status Codes registry at | ||||
<https://www.iana.org/assignments/dhcpv6-parameters> | ||||
for the current list of status codes."; | ||||
} | ||||
leaf status-message { | ||||
type string; | ||||
description "A UTF-8 encoded text string suitable for | ||||
display to an end user. MUST NOT be null-terminated."; | ||||
} | ||||
} | } | |||
units "seconds"; | ||||
description | ||||
"Timer value type, in seconds (32-bit range)."; | ||||
} | } | |||
grouping rapid-commit-option-group { | /* | |||
description "OPTION_RAPID_COMMIT (14) Rapid Commit Option."; | * Groupings | |||
reference "RFC8415: Dynamic Host Configuration Protocol for | */ | |||
IPv6 (DHCPv6)"; | ||||
container rapid-commit-option { | grouping duid { | |||
presence "Enable sending of this option"; | description "Each server and client has only one DUID (DHCP | |||
description "OPTION_RAPID_COMMIT (14) Rapid Commit Option | Unique Identifier). The DUID here identifies a unique | |||
container."; | DHCPv6 server for clients. DUID consists of a two-octet | |||
type field and an arbitrary length (no more than 128 bytes) | ||||
content field. Currently there are four defined types of | ||||
DUIDs in RFC8415 and RFC6355 - DUID-LLT, DUID-EN, DUID-LL | ||||
and DUID-UUID. DUID-unstructured represents DUIDs which | ||||
do not follow any of the defined formats."; | ||||
reference "RFC8415: Section 11 and RFC6355: Section 4"; | ||||
leaf type-code { | ||||
type uint16; | ||||
default 65535; | ||||
description "Type code of this DUID."; | ||||
} | } | |||
} | choice duid-type { | |||
default duid-unstructured; | ||||
description "Selects the format of the DUID."; | ||||
case duid-llt { | ||||
description "DUID Based on Link-layer Address Plus Time | ||||
(Type 1 - DUID-LLT)."; | ||||
reference "RFC8415 Section 11.2"; | ||||
leaf duid-llt-hardware-type { | ||||
type uint16; | ||||
description "Hardware type as assigned by IANA (RFC826)."; | ||||
} | ||||
leaf duid-llt-time { | ||||
type yang:timeticks; | ||||
description "The time that the DUID is generated | ||||
represented in seconds since midnight (UTC), | ||||
January 1, 2000, modulo 2^32."; | ||||
grouping vendor-specific-information-option-group { | } | |||
description "OPTION_VENDOR_OPTS (17) Vendor-specific | leaf duid-llt-link-layer-address { | |||
Information Option."; | type yang:mac-address; | |||
reference "RFC8415: Dynamic Host Configuration Protocol | description "Link-layer address as described in RFC2464."; | |||
for IPv6 (DHCPv6)"; | } | |||
container vendor-specific-information-option { | } | |||
description "OPTION_VENDOR_OPTS (17) Vendor-specific | case duid-en { | |||
Information Option container."; | description "DUID Assigned by Vendor Based on Enterprise | |||
list vendor-specific-information-option-instances { | Number (Type 2 - DUID-EN)."; | |||
key enterprise-number; | reference "RFC8415 Section 11.3"; | |||
description "The vendor specific information option allows | leaf duid-en-enterprise-number { | |||
for multiple instances in a single message. Each list entry | ||||
defines the contents of an instance of the option."; | ||||
leaf enterprise-number { | ||||
type uint32; | type uint32; | |||
description "The vendor's registered Enterprise Number, | description "Vendor's registered Private Enterprise Number | |||
as maintained by IANA."; | as maintained by IANA."; | |||
} | } | |||
list vendor-option-data { | leaf duid-en-identifier { | |||
key sub-option-code; | type string; | |||
description "Vendor options, interpreted by vendor-specific | description "Identifier, unique to the device."; | |||
client/server functions."; | ||||
leaf sub-option-code { | ||||
type uint16; | ||||
description "The code for the sub-option."; | ||||
} | ||||
leaf sub-option-data { | ||||
type string; | ||||
description "The data area for the sub-option."; | ||||
} | ||||
} | } | |||
} | } | |||
} | case duid-ll { | |||
} | description "DUID Based on Link-layer Address | |||
(Type 3 - DUID-LL)."; | ||||
grouping reconfigure-message-option-group { | reference "RFC8415 Section 11.4"; | |||
description "OPTION_RECONF_MSG (19) Reconfigure Message | leaf duid-ll-hardware-type { | |||
Option."; | type uint16; | |||
reference "RFC8415: Dynamic Host Configuration Protocol for | description "Hardware type, as assigned by IANA (RFC826)."; | |||
IPv6 (DHCPv6)"; | } | |||
container reconfigure-message-option { | leaf duid-ll-link-layer-address { | |||
description "OPTION_RECONF_MSG (19) Reconfigure Message | type yang:mac-address; | |||
Option."; | description "Link-layer address, as described in RFC2464"; | |||
leaf msg-type { | } | |||
type uint8; | ||||
description "5 for Renew message, 6 for Rebind message, | ||||
11 for Information-request message."; | ||||
} | } | |||
} | case duid-uuid { | |||
} | description "DUID Based on Universally Unique Identifier | |||
(Type 4 - DUID-UUID)."; | ||||
grouping reconfigure-accept-option-group { | reference "RFC6335 Definition of the UUID-Based Unique | |||
description "OPTION_RECONF_ACCEPT (20) Reconfigure Accept | Identifier"; | |||
Option. | leaf uuid { | |||
A client uses the Reconfigure Accept option to announce to | type yang:uuid; | |||
the server whether the client is willing to accept Reconfigure | description "A Universally Unique Identifier in the string | |||
messages, and a server uses this option to tell the client | representation, defined in RFC4122. The canonical | |||
whether or not to accept Reconfigure messages. In the absence | representation uses lowercase characters."; | |||
of this option, the default behavior is that the client is | } | |||
unwilling to accept Reconfigure messages. The presence node | ||||
is used to enable the option."; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol | ||||
for IPv6 (DHCPv6)"; | ||||
container reconfigure-accept-option { | ||||
presence "Enable sending of this option"; | ||||
description "OPTION_RECONF_ACCEPT (20) Reconfigure Accept | ||||
Option container."; | ||||
} | ||||
} | ||||
grouping info-refresh-time-option-group { | ||||
description "OPTION_INFORMATION_REFRESH_TIME (32) | ||||
Information Refresh Time option."; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol for | ||||
IPv6 (DHCPv6)"; | ||||
container info-refresh-time-option { | ||||
description "OPTION_INFORMATION_REFRESH_TIME (32) | ||||
Information Refresh Time option container."; | ||||
leaf info-refresh-time { | ||||
type dhcpv6-common:timer-seconds32; | ||||
description "Time duration relative to the current time, | ||||
expressed in units of seconds."; | ||||
} | } | |||
} | case duid-unstructured { | |||
} | description "DUID which does not follow any of the other | |||
structures, expressed as bytes."; | ||||
grouping sol-max-rt-option-group { | leaf data { | |||
description "OPTION_SOL_MAX_RT (82) sol max rt option."; | type binary; | |||
reference "RFC8415: Dynamic Host Configuration Protocol for | description "The bits to be used as the identifier."; | |||
IPv6 (DHCPv6)"; | } | |||
container sol-max-rt-option { | ||||
description "OPTION_SOL_MAX_RT (82) sol max rt option | ||||
container."; | ||||
leaf sol-max-rt-value { | ||||
type dhcpv6-common:timer-seconds32; | ||||
description "sol max rt value"; | ||||
} | } | |||
} | } | |||
} | leaf active-duid { | |||
type binary; | ||||
grouping inf-max-rt-option-group { | config "false"; | |||
description "OPTION_INF_MAX_RT (83) inf max rt option."; | description "The DUID which is currently in use."; | |||
reference "RFC8415: Dynamic Host Configuration Protocol for | ||||
IPv6 (DHCPv6)"; | ||||
container inf-max-rt-option { | ||||
description "OPTION_INF_MAX_RT (83) inf max rt option | ||||
container."; | ||||
leaf inf-max-rt-value { | ||||
type dhcpv6-common:timer-seconds32; | ||||
description "inf max rt value"; | ||||
} | ||||
} | } | |||
} | } | |||
/* | ||||
* Augmentations | ||||
*/ | ||||
augment "/dhcpv6-server:dhcpv6-server/dhcpv6-server:option-sets/" + | ||||
"dhcpv6-server:option-set" { | ||||
when "../../../dhcpv6-server:dhcpv6-node-type=" + | ||||
"'dhcpv6-server:server'"; | ||||
description "Augment the option definition groupings to the | ||||
relay module."; | ||||
uses preference-option-group; | ||||
uses auth-option-group; | ||||
uses server-unicast-option-group; | ||||
uses status-code-option-group; | ||||
uses rapid-commit-option-group; | ||||
uses vendor-specific-information-option-group; | ||||
uses reconfigure-message-option-group; | ||||
uses reconfigure-accept-option-group; | ||||
uses info-refresh-time-option-group; | ||||
uses sol-max-rt-option-group; | ||||
uses inf-max-rt-option-group; | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
3.5. RFC8415 Relay Options YANG Module | ||||
This module imports typedefs from [RFC6991]. | ||||
<CODE BEGINS> file "ietf-dhcpv6-options-rfc8415-relay.yang" | ||||
module ietf-dhcpv6-options-rfc8415-relay { | ||||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:" + | ||||
"ietf-dhcpv6-options-rfc8415-relay"; | ||||
prefix "rfc8415-rly"; | ||||
import ietf-dhcpv6-relay { | ||||
prefix dhcpv6-relay; | ||||
reference | ||||
"To be updated on publication"; | ||||
} | ||||
organization "DHC WG"; | ||||
contact | ||||
"cuiyong@tsinghua.edu.cn | ||||
wangh13@mails.tsinghua.edu.cn | ||||
lh.sunlinh@gmail.com | ||||
ian.farrer@telekom.de | ||||
sladjana.zechlin@telekom.de | ||||
hezihao9512@gmail.com"; | ||||
description "This YANG module contains DHCPv6 options defined | ||||
in RFC8415 that can be used by DHCPv6 clients. | ||||
Copyright (c) 2021 IETF Trust and the persons identified as | ||||
authors of the code. All rights reserved. | ||||
Redistribution and use in source and binary forms, with or | ||||
without modification, is permitted pursuant to, and subject | ||||
to the license terms contained in, the Simplified BSD License | ||||
set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
Relating to IETF Documents | ||||
(http://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of RFC XXXX | ||||
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | ||||
for full legal notices. | ||||
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | ||||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | ||||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
they appear in all capitals, as shown here."; | ||||
revision 2021-01-06 { | ||||
description "Version update for draft -16 publication."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-16"; | ||||
} | ||||
revision 2020-12-22 { | ||||
description "Version update for draft -13 publication."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-15"; | ||||
} | ||||
revision 2020-12-10 { | ||||
description "Version update for draft -13 publication."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-13"; | ||||
} | ||||
revision 2020-12-01 { | ||||
description "Version update for draft -12 publication."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-12"; | ||||
} | ||||
revision 2020-11-19 { | ||||
description "Separated into a relay specific set of options."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-12"; | ||||
} | ||||
revision 2020-05-26 { | ||||
description "Version update for draft -11 publication and | ||||
to align revisions across the different modules."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-11"; | ||||
} | ||||
revision 2019-06-07 { | ||||
description "Major reworking to only contain RFC8415 options. | ||||
if-feature for each option removed. Removed groupings | ||||
of features by device or combination of devices. Added "; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
revision 2018-09-04 { | ||||
description ""; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
revision 2018-03-04 { | ||||
description "Resolved most issues on the DHC official | ||||
github"; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
revision 2017-12-22 { | ||||
description "Resolve most issues on Ian's github."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
revision 2017-11-24 { | ||||
description "First version of the separated DHCPv6 options | ||||
YANG model."; | ||||
reference "I-D:draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
/* | ||||
* Groupings | ||||
*/ | ||||
grouping auth-option-group { | grouping auth-option-group { | |||
description "OPTION_AUTH (11) Authentication Option."; | description "OPTION_AUTH (11) Authentication Option."; | |||
reference "RFC8415: Dynamic Host Configuration Protocol | reference "RFC8415: Dynamic Host Configuration Protocol | |||
for IPv6 (DHCPv6)"; | for IPv6 (DHCPv6)"; | |||
container auth-option { | container auth-option { | |||
description "OPTION_AUTH (11) Authentication Option | description "OPTION_AUTH (11) Authentication Option | |||
container."; | container."; | |||
leaf protocol { | leaf protocol { | |||
type uint8; | type uint8; | |||
description "The authentication protocol used in this | description "The authentication protocol used in this | |||
skipping to change at page 61, line 29 ¶ | skipping to change at page 61, line 4 ¶ | |||
description "The replay detection information for the RDM."; | description "The replay detection information for the RDM."; | |||
} | } | |||
leaf auth-information { | leaf auth-information { | |||
type string; | type string; | |||
description "The authentication information, as specified | description "The authentication information, as specified | |||
by the protocol and algorithm used in this Authentication | by the protocol and algorithm used in this Authentication | |||
option."; | option."; | |||
} | } | |||
} | } | |||
} | } | |||
grouping status-code-option-group { | ||||
description "OPTION_STATUS_CODE (13) Status Code Option."; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol | ||||
for IPv6 (DHCPv6)"; | ||||
container status-code-option { | ||||
description "OPTION_STATUS_CODE (13) Status Code Option | ||||
container."; | ||||
leaf status-code { | ||||
type uint16; | ||||
description "The numeric code for the status encoded | ||||
in this option. See the Status Codes registry at | ||||
<https://www.iana.org/assignments/dhcpv6-parameters> | ||||
for the current list of status codes."; | ||||
} | ||||
leaf status-message { | ||||
type string; | ||||
description "A UTF-8 encoded text string suitable for | ||||
display to an end user. MUST NOT be null-terminated."; | ||||
} | ||||
} | ||||
} | ||||
grouping interface-id-option-group { | ||||
description "OPTION_INTERFACE_ID (18) Interface-Id Option."; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol for | ||||
IPv6 (DHCPv6)"; | ||||
container interface-id-option { | ||||
description "OPTION_INTERFACE_ID (18) Interface-Id Option | ||||
container."; | ||||
leaf interface-id { | ||||
type string; | ||||
description "An opaque value of arbitrary length generated | ||||
by the relay agent to identify one of the relay agent's | ||||
interfaces."; | ||||
} | ||||
} | ||||
} | ||||
/* | ||||
* Augmentations | ||||
*/ | ||||
augment "/dhcpv6-relay:dhcpv6-relay/dhcpv6-relay:relay-if/" + | ||||
"dhcpv6-relay:relay-options" { | ||||
when "../../../dhcpv6-relay:dhcpv6-node-type=" + | ||||
"'dhcpv6-relay:relay'"; | ||||
description "Augment the option definition groupings to the | ||||
relay module."; | ||||
uses auth-option-group; | ||||
uses status-code-option-group; | ||||
uses interface-id-option-group; | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
3.6. RFC8415 Client Options YANG Module | ||||
This module imports typedefs from [RFC6991]. | ||||
<CODE BEGINS> file "ietf-dhcpv6-options-rfc8415-client.yang" | ||||
module ietf-dhcpv6-options-rfc8415-client { | ||||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:" + | ||||
"ietf-dhcpv6-options-rfc8415-client"; | ||||
prefix "rfc8415-cli"; | ||||
import ietf-dhcpv6-client { | ||||
prefix dhcpv6-client; | ||||
reference | ||||
"To be updated on publication"; | ||||
} | ||||
organization "DHC WG"; | ||||
contact | ||||
"cuiyong@tsinghua.edu.cn | ||||
wangh13@mails.tsinghua.edu.cn | ||||
lh.sunlinh@gmail.com | ||||
ian.farrer@telekom.de | ||||
sladjana.zechlin@telekom.de | ||||
hezihao9512@gmail.com"; | ||||
description "This YANG module contains DHCPv6 options defined | ||||
in RFC8415 that can be used by DHCPv6 clients. | ||||
Copyright (c) 2021 IETF Trust and the persons identified as | ||||
authors of the code. All rights reserved. | ||||
Redistribution and use in source and binary forms, with or | ||||
without modification, is permitted pursuant to, and subject | ||||
to the license terms contained in, the Simplified BSD License | ||||
set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
Relating to IETF Documents | ||||
(http://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of RFC XXXX | ||||
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | ||||
for full legal notices. | ||||
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | ||||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | ||||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
they appear in all capitals, as shown here."; | ||||
revision 2021-01-06 { | ||||
description "Version update for draft -16 publication."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-16"; | ||||
} | ||||
revision 2020-12-22 { | ||||
description "Version update for draft -13 publication."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-15"; | ||||
} | ||||
revision 2020-12-10 { | ||||
description "Version update for draft -13 publication."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-13"; | ||||
} | ||||
revision 2020-12-01 { | ||||
description "Version update for draft -12 publication."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-12"; | ||||
} | ||||
revision 2020-11-19 { | ||||
description "Separated into a client specific set of options."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-12"; | ||||
} | ||||
revision 2020-05-26 { | ||||
description "Version update for draft -11 publication and | ||||
to align revisions across the different modules."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-11"; | ||||
} | ||||
revision 2019-06-07 { | ||||
description "Major reworking to only contain RFC8415 options. | ||||
if-feature for each option removed. Removed groupings | ||||
of features by device or combination of devices. Added "; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
revision 2018-09-04 { | ||||
description ""; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
revision 2018-03-04 { | ||||
description "Resolved most issues on the DHC official | ||||
github"; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
revision 2017-12-22 { | ||||
description "Resolve most issues on Ian's github."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
revision 2017-11-24 { | ||||
description "First version of the separated DHCPv6 options | ||||
YANG model."; | ||||
reference "I-D:draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
/* | ||||
* Groupings | ||||
*/ | ||||
grouping option-request-option-group { | ||||
description "OPTION_ORO (6) Option Request Option. A client | ||||
MUST include an Option Request option in a Solicit, Request, | ||||
Renew, Rebind, or Information-request message to inform | ||||
the server about options the client wants the server to send | ||||
to the client."; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol for | ||||
IPv6 (DHCPv6)"; | ||||
container option-request-option { | ||||
description "OPTION_ORO (6) Option Request Option container."; | ||||
leaf-list oro-option { | ||||
type uint16; | ||||
description "List of options that the client is requesting, | ||||
identified by option code"; | ||||
} | ||||
} | ||||
} | ||||
grouping status-code-option-group { | grouping status-code-option-group { | |||
description "OPTION_STATUS_CODE (13) Status Code Option."; | description "OPTION_STATUS_CODE (13) Status Code Option."; | |||
reference "RFC8415: Dynamic Host Configuration Protocol | reference "RFC8415: Dynamic Host Configuration Protocol | |||
for IPv6 (DHCPv6)"; | for IPv6 (DHCPv6)"; | |||
container status-code-option { | container status-code-option { | |||
description "OPTION_STATUS_CODE (13) Status Code Option | description "OPTION_STATUS_CODE (13) Status Code Option | |||
container."; | container."; | |||
leaf status-code { | leaf status-code { | |||
type uint16; | type uint16; | |||
description "The numeric code for the status encoded | description "The numeric code for the status encoded | |||
skipping to change at page 65, line 48 ¶ | skipping to change at page 61, line 27 ¶ | |||
} | } | |||
leaf status-message { | leaf status-message { | |||
type string; | type string; | |||
description "A UTF-8 encoded text string suitable for | description "A UTF-8 encoded text string suitable for | |||
display to an end user. MUST NOT be null-terminated."; | display to an end user. MUST NOT be null-terminated."; | |||
} | } | |||
} | } | |||
} | } | |||
grouping rapid-commit-option-group { | grouping rapid-commit-option-group { | |||
description "OPTION_RAPID_COMMIT (14) Rapid Commit Option. | description "OPTION_RAPID_COMMIT (14) Rapid Commit Option."; | |||
The presence node is used to enable the option."; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol for | reference "RFC8415: Dynamic Host Configuration Protocol for | |||
IPv6 (DHCPv6)"; | IPv6 (DHCPv6)"; | |||
container rapid-commit-option { | container rapid-commit-option { | |||
presence "Enable sending of this option"; | presence "Enable sending of this option"; | |||
description "OPTION_RAPID_COMMIT (14) Rapid Commit Option | description "OPTION_RAPID_COMMIT (14) Rapid Commit Option | |||
container."; | container."; | |||
} | ||||
} | ||||
grouping user-class-option-group { | ||||
description "OPTION_USER_CLASS (15) User Class Option"; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol | ||||
for IPv6 (DHCPv6)"; | ||||
container user-class-option { | ||||
description "OPTION_USER_CLASS (15) User Class Option | ||||
container."; | ||||
list user-class-data { | ||||
key user-class-datum-id; | ||||
min-elements 1; | ||||
description "The user classes of which the client | ||||
is a member."; | ||||
leaf user-class-datum-id { | ||||
type uint8; | ||||
description "User class datum ID"; | ||||
} | ||||
leaf user-class-datum { | ||||
type string; | ||||
description "Opaque field representing a User Class | ||||
of which the client is a member."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
grouping vendor-class-option-group { | ||||
description "OPTION_VENDOR_CLASS (16) Vendor Class Option"; | ||||
reference "RFC8415: Dynamic Host Configuration Protocol | ||||
for IPv6 (DHCPv6)"; | ||||
container vendor-class-option { | ||||
description "OPTION_VENDOR_CLASS (16) Vendor Class Option | ||||
container."; | ||||
list vendor-class-option-instances { | ||||
key enterprise-number; | ||||
description "The vendor class option allows for multiple | ||||
instances in a single message. Each list entry defines | ||||
the contents of an instance of the option."; | ||||
leaf enterprise-number { | ||||
type uint32; | ||||
description "The vendor's registered Enterprise Number | ||||
as maintained by IANA."; | ||||
} | ||||
list vendor-class { | ||||
key vendor-class-datum-id; | ||||
description "The vendor classes of which the client is | ||||
a member."; | ||||
leaf vendor-class-datum-id { | ||||
type uint8; | ||||
description "Vendor class datum ID"; | ||||
} | ||||
leaf vendor-class-datum { | ||||
type string; | ||||
description "Opaque field representing a vendor class | ||||
of which the client is a member."; | ||||
} | ||||
} | ||||
} | ||||
} | } | |||
} | } | |||
grouping vendor-specific-information-option-group { | grouping vendor-specific-information-option-group { | |||
description "OPTION_VENDOR_OPTS (17) Vendor-specific | description "OPTION_VENDOR_OPTS (17) Vendor-specific | |||
Information Option"; | Information Option."; | |||
reference "RFC8415: Dynamic Host Configuration Protocol | reference "RFC8415: Dynamic Host Configuration Protocol | |||
for IPv6 (DHCPv6)"; | for IPv6 (DHCPv6)"; | |||
container vendor-specific-information-option { | container vendor-specific-information-option { | |||
description "OPTION_VENDOR_OPTS (17) Vendor-specific | description "OPTION_VENDOR_OPTS (17) Vendor-specific | |||
Information Option container."; | Information Option container."; | |||
list vendor-specific-information-option-instances { | list vendor-specific-information-option-instances { | |||
key enterprise-number; | key enterprise-number; | |||
description "The vendor specific information option allows | description "The vendor specific information option allows | |||
for multiple instances in a single message. Each list entry | for multiple instances in a single message. Each list entry | |||
defines the contents of an instance of the option."; | defines the contents of an instance of the option."; | |||
skipping to change at page 68, line 15 ¶ | skipping to change at page 62, line 28 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping reconfigure-accept-option-group { | grouping reconfigure-accept-option-group { | |||
description "OPTION_RECONF_ACCEPT (20) Reconfigure Accept | description "OPTION_RECONF_ACCEPT (20) Reconfigure Accept | |||
Option. | Option. | |||
A client uses the Reconfigure Accept option to announce to | A client uses the Reconfigure Accept option to announce to | |||
the server whether the client is willing to accept | the server whether the client is willing to accept Reconfigure | |||
Reconfigure messages, and a server uses this option to tell | messages, and a server uses this option to tell the client | |||
the client whether or not to accept Reconfigure messages. | whether or not to accept Reconfigure messages. In the absence | |||
In the absence of this option, the default behavior is that | of this option, the default behavior is that the client is | |||
the client is unwilling to accept Reconfigure messages. | unwilling to accept Reconfigure messages. The presence node | |||
The presence node is used to enable the option."; | is used to enable the option."; | |||
reference "RFC8415: Dynamic Host Configuration Protocol for IPv6 | reference "RFC8415: Dynamic Host Configuration Protocol | |||
(DHCPv6)"; | for IPv6 (DHCPv6)"; | |||
container reconfigure-accept-option { | container reconfigure-accept-option { | |||
presence "Enable sending of this option"; | presence "Enable sending of this option"; | |||
description "OPTION_RECONF_ACCEPT (20) Reconfigure Accept | description "OPTION_RECONF_ACCEPT (20) Reconfigure Accept | |||
Option container."; | Option container."; | |||
} | ||||
} | ||||
/* | ||||
* Augmentations | ||||
*/ | ||||
augment "/dhcpv6-client:dhcpv6-client/dhcpv6-client:client-if/" + | ||||
"dhcpv6-client:client-configured-options" { | ||||
when "../../../dhcpv6-client:dhcpv6-node-type=" + | ||||
"'dhcpv6-client:client'"; | ||||
description "Augment the option definition groupings to the | ||||
client module."; | ||||
uses option-request-option-group; | ||||
uses status-code-option-group; | ||||
uses rapid-commit-option-group; | ||||
uses user-class-option-group; | ||||
uses vendor-class-option-group; | ||||
uses vendor-specific-information-option-group; | ||||
uses reconfigure-accept-option-group; | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
3.7. DHCPv6 Common YANG Module | ||||
This module imports typedefs from [RFC6991]. | ||||
<CODE BEGINS> file "ietf-dhcpv6-common.yang" | ||||
module ietf-dhcpv6-common { | ||||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-common"; | ||||
prefix "dhcpv6-common"; | ||||
import ietf-yang-types { | ||||
prefix yang; | ||||
reference | ||||
"RFC 6991: Common YANG Data Types"; | ||||
} | ||||
organization "DHC WG"; | ||||
contact | ||||
"yong@csnet1.cs.tsinghua.edu.cn | ||||
lh.sunlinh@gmail.com | ||||
ian.farrer@telekom.de | ||||
sladjana.zechlin@telekom.de | ||||
hezihao9512@gmail.com"; | ||||
description "This YANG module defines common components | ||||
used for the configuration and management of DHCPv6. | ||||
Copyright (c) 2021 IETF Trust and the persons identified as | ||||
authors of the code. All rights reserved. | ||||
Redistribution and use in source and binary forms, with or | ||||
without modification, is permitted pursuant to, and subject | ||||
to the license terms contained in, the Simplified BSD License | ||||
set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
Relating to IETF Documents | ||||
(http://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of RFC 8513; see | ||||
the RFC itself for full legal notices."; | ||||
revision 2021-01-06 { | ||||
description "Version update for draft -16 publication."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-16"; | ||||
} | ||||
revision 2020-12-22 { | ||||
description "Version update for draft -13 publication."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-15"; | ||||
} | ||||
revision 2020-12-10 { | ||||
description "Version update for draft -13 publication."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-13"; | ||||
} | ||||
revision 2020-12-01 { | ||||
description "Version update for draft -12 publication."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-12"; | ||||
} | ||||
revision 2020-05-26 { | ||||
description "Version update for draft -11 publication and | ||||
to align revisions across the different modules."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-11"; | ||||
} | ||||
revision 2018-09-04 { | ||||
description ""; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
revision 2018-01-30 { | ||||
description "Initial revision"; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
typedef threshold { | ||||
type union { | ||||
type uint16 { | ||||
range 0..100; | ||||
} | ||||
type enumeration { | ||||
enum "disabled" { | ||||
description "No threshold"; | ||||
} | ||||
} | ||||
} | ||||
description "Threshold value in percent"; | ||||
} | ||||
typedef timer-seconds32 { | ||||
type uint32 { | ||||
range "1..4294967295"; | ||||
} | ||||
units "seconds"; | ||||
description | ||||
"Timer value type, in seconds (32-bit range)."; | ||||
} | ||||
identity dhcpv6-node { | ||||
description "Abstract base type for DHCPv6 functional nodes"; | ||||
} | ||||
/* | ||||
* Groupings | ||||
*/ | ||||
grouping duid { | ||||
description "Each server and client has only one DUID (DHCP | ||||
Unique Identifier). The DUID here identifies a unique | ||||
DHCPv6 server for clients. DUID consists of a two-octet | ||||
type field and an arbitrary length (no more than 128 bytes) | ||||
content field. Currently there are four defined types of | ||||
DUIDs in RFC8415 and RFC6355 - DUID-LLT, DUID-EN, DUID-LL | ||||
and DUID-UUID. DUID-unstructured represents DUIDs which | ||||
do not follow any of the defined formats."; | ||||
reference "RFC8415: Section 11 and RFC6355: Section 4"; | ||||
leaf type-code { | ||||
type uint16; | ||||
default 65535; | ||||
description "Type code of this DUID."; | ||||
} | ||||
choice duid-type { | ||||
default duid-unstructured; | ||||
description "Selects the format of the DUID."; | ||||
case duid-llt { | ||||
description "DUID Based on Link-layer Address Plus Time | ||||
(Type 1 - DUID-LLT)."; | ||||
reference "RFC8415 Section 11.2"; | ||||
leaf duid-llt-hardware-type { | ||||
type uint16; | ||||
description "Hardware type as assigned by IANA (RFC826)."; | ||||
} | ||||
leaf duid-llt-time { | ||||
type yang:timeticks; | ||||
description "The time that the DUID is generated | ||||
represented in seconds since midnight (UTC), | ||||
January 1, 2000, modulo 2^32."; | ||||
} | ||||
leaf duid-llt-link-layer-address { | ||||
type yang:mac-address; | ||||
description "Link-layer address as described in RFC2464."; | ||||
} | ||||
} | ||||
case duid-en { | ||||
description "DUID Assigned by Vendor Based on Enterprise | ||||
Number (Type 2 - DUID-EN)."; | ||||
reference "RFC8415 Section 11.3"; | ||||
leaf duid-en-enterprise-number { | ||||
type uint32; | ||||
description "Vendor's registered Private Enterprise Number | ||||
as maintained by IANA."; | ||||
} | ||||
leaf duid-en-identifier { | ||||
type string; | ||||
description "Identifier, unique to the device."; | ||||
} | ||||
} | ||||
case duid-ll { | ||||
description "DUID Based on Link-layer Address | ||||
(Type 3 - DUID-LL)."; | ||||
reference "RFC8415 Section 11.4"; | ||||
leaf duid-ll-hardware-type { | ||||
type uint16; | ||||
description "Hardware type, as assigned by IANA (RFC826)."; | ||||
} | ||||
leaf duid-ll-link-layer-address { | ||||
type yang:mac-address; | ||||
description "Link-layer address, as described in RFC2464"; | ||||
} | ||||
} | ||||
case duid-uuid { | ||||
description "DUID Based on Universally Unique Identifier | ||||
(Type 4 - DUID-UUID)."; | ||||
reference "RFC6335 Definition of the UUID-Based Unique | ||||
Identifier"; | ||||
leaf uuid { | ||||
type yang:uuid; | ||||
description "A Universally Unique Identifier in the string | ||||
representation, defined in RFC4122. The canonical | ||||
representation uses lowercase characters."; | ||||
} | ||||
} | ||||
case duid-unstructured { | ||||
description "DUID which does not follow any of the other | ||||
structures, expressed as bytes."; | ||||
leaf data { | ||||
type binary; | ||||
description "The bits to be used as the identifier."; | ||||
} | ||||
} | ||||
} | ||||
leaf active-duid { | ||||
type binary; | ||||
config "false"; | ||||
description "The DUID which is currently in use."; | ||||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
4. Security Considerations | 4. Security Considerations | |||
The YANG modules defined in this document are designed to be accessed | The YANG modules defined in this document are designed to be accessed | |||
via network management protocols such as NETCONF [RFC6241] or | via network management protocols such as NETCONF [RFC6241] or | |||
RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport | RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport | |||
skipping to change at page 74, line 13 ¶ | skipping to change at page 64, line 6 ¶ | |||
various attacks, such as: | various attacks, such as: | |||
* Re-configuring the relay's destination address to send messages to | * Re-configuring the relay's destination address to send messages to | |||
a rogue DHCPv6 server. | a rogue DHCPv6 server. | |||
* Deleting information about a client's delegated prefix, causing a | * Deleting information about a client's delegated prefix, causing a | |||
denial of service attack as traffic will no longer be routed to | denial of service attack as traffic will no longer be routed to | |||
the client. | the client. | |||
Some of the readable data nodes in this YANG module may be considered | Some of the readable data nodes in this YANG module may be considered | |||
sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. Therefore, it | |||
important to control read access (e.g., via get, get-config, or | is important to control read access (e.g., only permitting get, get- | |||
notification) to these data nodes. These subtrees and data nodes can | config, or notifications) to these data nodes. These subtrees and | |||
be misused to track the activity of a host: | data nodes can be misused to track the activity of a host: | |||
* Re-configuring the relay's destination address to send messages to | ||||
a rogue DHCPv6 server. | ||||
* Information the server holds about clients with active leases: | * Information the server holds about clients with active leases: | |||
(dhcpv6-server/network-ranges/network-range/ address-pools/ | (dhcpv6-server/network-ranges/network-range/ address-pools/ | |||
address-pool/active-leases) | address-pool/active-leases) | |||
* Information the relay holds about clients with active leases: | * Information the relay holds about clients with active leases: | |||
(dhcpv6-relay/relay-if/prefix-delegation/) | (dhcpv6-relay/relay-if/prefix-delegation/) | |||
Security considerations related to DHCPv6 are discussed in [RFC8415]. | Security considerations related to DHCPv6 are discussed in [RFC8415]. | |||
skipping to change at page 75, line 8 ¶ | skipping to change at page 64, line 47 ¶ | |||
name: ietf-dhcpv6-client | name: ietf-dhcpv6-client | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-dhcpv6-client | namespace: urn:ietf:params:xml:ns:yang:ietf-dhcpv6-client | |||
prefix: dhcpv6-client | prefix: dhcpv6-client | |||
reference: RFC XXXX YANG Data Model for DHCPv6 Configuration | reference: RFC XXXX YANG Data Model for DHCPv6 Configuration | |||
name: ietf-dhcpv6-relay | name: ietf-dhcpv6-relay | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-dhcpv6-relay | namespace: urn:ietf:params:xml:ns:yang:ietf-dhcpv6-relay | |||
prefix: dhcpv6-relay | prefix: dhcpv6-relay | |||
reference: RFC XXXX YANG Data Model for DHCPv6 Configuration | reference: RFC XXXX YANG Data Model for DHCPv6 Configuration | |||
name: ietf-dhcpv6-options-rfc8415-server | ||||
namespace: | ||||
urn:ietf:params:xml:ns:yang:ietf-dhcpv6-options- | ||||
rfc8415-server | ||||
prefix: rfc8415-srv | ||||
reference: RFC XXXX YANG Data Model for DHCPv6 Configuration | ||||
name: ietf-dhcpv6-options-rfc8415-relay | ||||
namespace: | ||||
urn:ietf:params:xml:ns:yang:ietf-dhcpv6-options- | ||||
rfc8415-relay | ||||
prefix: rfc8415-rly | ||||
reference: RFC XXXX YANG Data Model for DHCPv6 Configuration | ||||
name: ietf-dhcpv6-options-rfc8415-client | ||||
namespace: | ||||
urn:ietf:params:xml:ns:yang:ietf-dhcpv6-options- | ||||
rfc8415-client | ||||
prefix: rfc8415-rly | ||||
reference: RFC XXXX YANG Data Model for DHCPv6 Configuration | ||||
6. Acknowledgments | 6. Acknowledgments | |||
The authors would like to thank Qi Sun, Lishan Li, Sladjana Zoric, | The authors would like to thank Qi Sun, Lishan Li, Sladjana Zoric, | |||
Tomek Mrugalski, Marcin Siodelski, and Bing Liu for their valuable | Tomek Mrugalski, Marcin Siodelski, Bing Liu, and Tom Petch for their | |||
comments and contributions to this work. | valuable comments and contributions to this work. | |||
7. Contributors | 7. Contributors | |||
The following individuals contributed to this effort: | The following individuals contributed to this effort: | |||
Hao Wang | Hao Wang | |||
Tsinghua University | Tsinghua University | |||
Beijing 100084 | Beijing 100084 | |||
P.R. China | P.R. China | |||
Phone: +86-10-6278-5822 | Phone: +86-10-6278-5822 | |||
skipping to change at page 78, line 15 ¶ | skipping to change at page 67, line 21 ¶ | |||
8.2. Informative References | 8.2. Informative References | |||
[RFC3319] Schulzrinne, H. and B. Volz, "Dynamic Host Configuration | [RFC3319] Schulzrinne, H. and B. Volz, "Dynamic Host Configuration | |||
Protocol (DHCPv6) Options for Session Initiation Protocol | Protocol (DHCPv6) Options for Session Initiation Protocol | |||
(SIP) Servers", RFC 3319, DOI 10.17487/RFC3319, July 2003, | (SIP) Servers", RFC 3319, DOI 10.17487/RFC3319, July 2003, | |||
<https://www.rfc-editor.org/info/rfc3319>. | <https://www.rfc-editor.org/info/rfc3319>. | |||
Appendix A. Example of Augmenting Additional DHCPv6 Option Definitions | Appendix A. 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 for additional options. It is expected | definitions can be extended to include additional options. It is | |||
that additional specification documents will be published in the | expected that additional specification documents will be published | |||
future for this. | 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 overall structure | OPTION_SIP_SERVER_D (22) defined in [RFC3319]. The module is | |||
is as follows: | constructed as follows: | |||
* A separate grouping is used for each option. | * The module is named using a meaningful, shortened version of the | |||
document which specifies the DHCP option format. | ||||
* 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 | |||
and number. | and number. | |||
* The reference section is the number and name of the RFC in which | * The reference section is the number and name of the RFC in which | |||
the DHCPv6 option is defined. | the DHCPv6 option is defined. | |||
* The remaining fields match the fields in the DHCP option. They | * The remaining fields match the fields in the DHCP option. They | |||
are in the same order as defined in the DHCP option. Where-ever | are in the same order as defined in the DHCP option. Where-ever | |||
possible, the format that is defined for the DHCP field should be | possible, the format that is defined for the DHCP field should be | |||
matched by the relevant YANG type. | matched by the relevant YANG type. | |||
* Fields which can have multiple entries or instances are defined | * Fields which can have multiple entries or instances are defined | |||
using list or leaf-list nodes. | using list or leaf-list nodes. | |||
Below the groupings for option definitions, augment statements are | Below the groupings for option definitions, augment statements are | |||
used to add the option definitions for use in the relevant DHCP | used to add the option definitions for use in the relevant DHCP | |||
element's module (server, relay and/or client). If an option is | element's module (server, relay and/or client). | |||
relevant to more than one element type, then an augment statement for | ||||
each element is used. | ||||
<CODE BEGINS> file "ietf-example-dhcpv6-options-rfc3319-server.yang" | <CODE BEGINS> file "ietf-example-dhcpv6-options-sip-server.yang" | |||
module ietf-example-dhcpv6-options-rfc3319-server { | module ietf-example-dhcpv6-options-sip-server { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:" + | namespace "urn:ietf:params:xml:ns:yang:" + | |||
"ietf-example-dhcpv6-options-rfc3319-server"; | "ietf-example-dhcpv6-options-sip-server"; | |||
prefix "rfc3319-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 dhcpv6-server; | prefix dhcpv6-server; | |||
} | } | |||
organization "DHC WG"; | organization "DHC WG"; | |||
skipping to change at page 79, line 42 ¶ | skipping to change at page 68, line 46 ¶ | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC 8513; see | This version of this YANG module is part of RFC 8513; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
revision 2021-01-29 { | ||||
description "Version update for draft -17 publication."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-17"; | ||||
} | ||||
revision 2021-01-06 { | revision 2021-01-06 { | |||
description "Version update for draft -16 publication."; | description "Version update for draft -16 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-16"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-16"; | |||
} | } | |||
revision 2020-12-22 { | revision 2020-12-22 { | |||
description "Version update for draft -13 publication."; | description "Version update for draft -13 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-15"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-15"; | |||
} | } | |||
skipping to change at page 80, line 39 ¶ | skipping to change at page 69, line 48 ¶ | |||
description "OPTION_SIP_SERVER_D (21) SIP Servers Domain Name | description "OPTION_SIP_SERVER_D (21) SIP Servers Domain Name | |||
List"; | List"; | |||
reference "RFC3319: Dynamic Host Configuration Protocol | reference "RFC3319: Dynamic Host Configuration Protocol | |||
(DHCPv6) Options for Session Initiation Protocol (SIP) | (DHCPv6) Options for Session Initiation Protocol (SIP) | |||
Servers"; | Servers"; | |||
container sip-server-domain-name-list-option { | container sip-server-domain-name-list-option { | |||
description "OPTION_SIP_SERVER_D (21) SIP Servers Domain Name | description "OPTION_SIP_SERVER_D (21) SIP Servers Domain Name | |||
List container."; | List container."; | |||
list sip-server { | list sip-server { | |||
key sip-serv-id; | key sip-serv-id; | |||
description "sip server info"; | description "SIP server information."; | |||
leaf sip-serv-id { | leaf sip-serv-id { | |||
type uint8; | type uint8; | |||
description "sip server id"; | description "SIP server list identifier identifier."; | |||
} | } | |||
leaf sip-serv-domain-name { | leaf sip-serv-domain-name { | |||
type inet:domain-name; | type inet:domain-name; | |||
description "sip server domain name"; | description "SIP server domain name."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping sip-server-address-list-option-group { | grouping sip-server-address-list-option-group { | |||
description "OPTION_SIP_SERVER_A (22) SIP Servers IPv6 Address | description "OPTION_SIP_SERVER_A (22) SIP Servers IPv6 Address | |||
List"; | List"; | |||
reference "RFC3319: Dynamic Host Configuration Protocol | reference "RFC3319: Dynamic Host Configuration Protocol | |||
(DHCPv6) Options for Session Initiation Protocol (SIP) | (DHCPv6) Options for Session Initiation Protocol (SIP) | |||
Servers"; | Servers"; | |||
container sip-server-address-list-option { | container sip-server-address-list-option { | |||
description "OPTION_SIP_SERVER_A (22) SIP Servers IPv6 Address | description "OPTION_SIP_SERVER_A (22) SIP Servers IPv6 Address | |||
List container."; | List container."; | |||
list sip-server { | list sip-server { | |||
skipping to change at page 81, line 15 ¶ | skipping to change at page 70, line 25 ¶ | |||
description "OPTION_SIP_SERVER_A (22) SIP Servers IPv6 Address | description "OPTION_SIP_SERVER_A (22) SIP Servers IPv6 Address | |||
List"; | List"; | |||
reference "RFC3319: Dynamic Host Configuration Protocol | reference "RFC3319: Dynamic Host Configuration Protocol | |||
(DHCPv6) Options for Session Initiation Protocol (SIP) | (DHCPv6) Options for Session Initiation Protocol (SIP) | |||
Servers"; | Servers"; | |||
container sip-server-address-list-option { | container sip-server-address-list-option { | |||
description "OPTION_SIP_SERVER_A (22) SIP Servers IPv6 Address | description "OPTION_SIP_SERVER_A (22) SIP Servers IPv6 Address | |||
List container."; | List container."; | |||
list sip-server { | list sip-server { | |||
key sip-serv-id; | key sip-serv-id; | |||
description "sip server info"; | description "SIP server information."; | |||
leaf sip-serv-id { | leaf sip-serv-id { | |||
type uint8; | type uint8; | |||
description "sip server id"; | description "SIP server list entry identifier."; | |||
} | } | |||
leaf sip-serv-addr { | leaf sip-serv-addr { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description "sip server addr"; | description "SIP server IPv6 address."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
/* | /* | |||
* Augmentations | * Augmentations | |||
*/ | */ | |||
augment "/dhcpv6-server:dhcpv6-server/dhcpv6-server:option-sets/" + | augment "/dhcpv6-server:dhcpv6-server/dhcpv6-server:option-sets/" + | |||
"dhcpv6-server:option-set" { | "dhcpv6-server:option-set" { | |||
when "../../../dhcpv6-server:dhcpv6-node-type=" + | ||||
"'dhcpv6-server:server'"; | ||||
description "Augment the option definition groupings to the | description "Augment the option definition groupings to the | |||
server module."; | server module."; | |||
uses sip-server-domain-name-list-option-group; | uses sip-server-domain-name-list-option-group; | |||
uses sip-server-address-list-option-group; | uses sip-server-address-list-option-group; | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
The correct location to augment the new option definition(s) will | The correct location to augment the new option definition(s) will | |||
vary according to the specific rules defined for the use of that | vary according to the specific rules defined for the use of that | |||
specific option. E.g. for options which will be augmented into the | specific option. E.g. for options which will be augmented into the | |||
ietf-dhcpv6-server module, in many cases, these will be augmented to: | ietf-dhcpv6-server module, in many cases, these will be augmented to: | |||
'/dhcpv6-server:dhcpv6-server/dhcpv6-server:option-sets/\ dhcpv6- | '/dhcpv6-server:dhcpv6-server/dhcpv6-server:option-sets/\ dhcpv6- | |||
server:option-set' | server:option-set' | |||
so that they can be defined within option sets. However, there are | so that they can be defined within option sets. However, there are | |||
some options which are only applicable for specific deployment | some options which are only applicable for specific deployment | |||
scenarios and in these cases it may be more logical to augment the | scenarios and in these cases it may be more logical to augment the | |||
option group to a location relevant for the option. | option group to a location relevant for the option. | |||
One example for this could be OPTION_PD_EXCLUDE (67). This option is | One example for this could be OPTION_PD_EXCLUDE (67). This option is | |||
only relevant in combination with a delegated prefix which contains a | only relevant in combination with a delegated prefix which contains a | |||
specific prefix. In this case, the following location for the | specific prefix. In this case, the following location for the | |||
augmentation may be more suitable: | augmentation may be more suitable: | |||
skipping to change at page 82, line 32 ¶ | skipping to change at page 71, line 40 ¶ | |||
configuring access to a lease storage database. | configuring access to a lease storage database. | |||
The example module defines additional server attributes such as name | The example module defines additional server attributes such as name | |||
and description. Storage for leases is configured using a lease- | and description. Storage for leases is configured using a lease- | |||
storage container. It allows storing leases in one of three options: | storage container. It allows storing leases in one of three options: | |||
memory (memfile), MySQL and PosgreSQL. For each case, the necessary | memory (memfile), MySQL and PosgreSQL. For each case, the necessary | |||
configuration parameters are provided. | configuration parameters are provided. | |||
At the end there is an augment statement which adds the vendor | At the end there is an augment statement which adds the vendor | |||
specific configuration defined in "dhcpv6-server-config:config" under | specific configuration defined in "dhcpv6-server-config:config" under | |||
'/dhcpv6-server:config/dhcpv6-server:vendor-config' mount point. | the "/dhcpv6-server:config/dhcpv6-server:vendor-config" mount point. | |||
<CODE BEGINS> file "ietf-example-dhcpv6-server-config.yang" | <CODE BEGINS> file "ietf-example-dhcpv6-server-config.yang" | |||
module ietf-example-dhcpv6-server-config { | module ietf-example-dhcpv6-server-config { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:" + | namespace "urn:ietf:params:xml:ns:yang:" + | |||
"ietf-example-dhcpv6-server-config"; | "ietf-example-dhcpv6-server-config"; | |||
prefix "dhcpv6-server-config"; | prefix "dhcpv6-server-config"; | |||
import ietf-inet-types { | import ietf-inet-types { | |||
skipping to change at page 83, line 34 ¶ | skipping to change at page 72, line 42 ¶ | |||
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). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC 8513; see | This version of this YANG module is part of RFC 8513; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
revision 2021-01-29 { | ||||
description "Version update for draft -17 publication."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-17"; | ||||
} | ||||
revision 2021-01-06 { | revision 2021-01-06 { | |||
description "Version update for draft -16 publication."; | description "Version update for draft -16 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-16"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-16"; | |||
} | } | |||
revision 2020-12-22 { | revision 2020-12-22 { | |||
description "Version update for draft -13 publication."; | description "Version update for draft -13 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-15"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-15"; | |||
} | } | |||
skipping to change at page 90, line 11 ¶ | skipping to change at page 79, line 26 ¶ | |||
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). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC 8513; see | This version of this YANG module is part of RFC 8513; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
revision 2021-01-29 { | ||||
description "Version update for draft -17 publication."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-17"; | ||||
} | ||||
revision 2021-01-06 { | revision 2021-01-06 { | |||
description "Version update for draft -16 publication."; | description "Version update for draft -16 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-16"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-16"; | |||
} | } | |||
revision 2020-12-22 { | revision 2020-12-22 { | |||
description "Version update for draft -13 publication."; | description "Version update for draft -13 publication."; | |||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-15"; | reference "I-D: draft-ietf-dhc-dhcpv6-yang-15"; | |||
} | } | |||
End of changes. 120 change blocks. | ||||
1295 lines changed or deleted | 788 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/ |