--- 1/draft-ietf-dhc-dhcpv6-yang-07.txt 2019-03-09 08:14:20.585487118 -0800 +++ 2/draft-ietf-dhc-dhcpv6-yang-08.txt 2019-03-09 08:14:20.929495459 -0800 @@ -1,23 +1,23 @@ DHC Working Group Y. Cui Internet-Draft L. Sun Intended status: Standards Track Tsinghua University -Expires: March 8, 2019 I. Farrer +Expires: September 10, 2019 I. Farrer S. Zechlin Deutsche Telekom AG Z. He Tsinghua University - September 4, 2018 + March 9, 2019 YANG Data Model for DHCPv6 Configuration - draft-ietf-dhc-dhcpv6-yang-07 + draft-ietf-dhc-dhcpv6-yang-08 Abstract This document describes a YANG data model [RFC6020] for the configuration and management of DHCPv6 servers, relays, and clients. Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this @@ -31,25 +31,25 @@ Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at https://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." - This Internet-Draft will expire on March 8, 2019. + This Internet-Draft will expire on September 10, 2019. Copyright Notice - Copyright (c) 2018 IETF Trust and the persons identified as the + Copyright (c) 2019 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as @@ -64,66 +64,66 @@ 2.2. DHCPv6 Relay Tree Diagrams . . . . . . . . . . . . . . . 16 2.3. DHCPv6 Client Tree Diagrams . . . . . . . . . . . . . . . 20 3. DHCPv6 YANG Model . . . . . . . . . . . . . . . . . . . . . . 27 3.1. DHCPv6 Server YANG Model . . . . . . . . . . . . . . . . 27 3.2. DHCPv6 Relay YANG Model . . . . . . . . . . . . . . . . . 47 3.3. DHCPv6 Client YANG Model . . . . . . . . . . . . . . . . 57 3.4. DHCPv6 Options YANG Model . . . . . . . . . . . . . . . . 65 3.5. DHCPv6 Types YANG Model . . . . . . . . . . . . . . . . . 94 4. Security Considerations (TBD) . . . . . . . . . . . . . . . . 99 5. IANA Considerations (TBD) . . . . . . . . . . . . . . . . . . 99 - 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 99 + 6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 99 7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 99 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 100 8.1. Normative References . . . . . . . . . . . . . . . . . . 100 8.2. Informative References . . . . . . . . . . . . . . . . . 100 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 102 1. Introduction DHCPv6 [RFC3315] is widely used for supplying configuration and other relevant parameters to clients in IPv6 networks. This document defines a DHCPv6 YANG data model, containing sub-modules for the configuration and management of DHCPv6 servers, relays and clients. A single YANG model covering all of these elements provides an operator with a common interface for the management of the entire DHCPv6 deployment in their network. Since the publication of the original DHCPv6 specification, there - have been a large number of addional documents that update the + have been a large number of additional documents that update the protocol's operation, add new functions and define new options. The - YANG model described in this document incorporates all relevent - changes. A full list of the documents which have been considedered - in the development of this model is included in Appendix A. + YANG model described in this document incorporates all relevant + changes. A full list of the documents which have been considered in + the development of this model is included in Appendix A. - IF - Commment - Does anyone have this list? + IF - Comment - Does anyone have this list? It is worth noting that as DHCPv6 is itself a device configuration protocol, it is not the intention of this document to replace the configuration of DHCPv6 options and parameters using the DHCPv6 protocol with the configuration of DHCPv6 options using NETCONF/YANG. The DHCPv6 client model is intended for the configuration of the DHCPv6 client function and also for obtaining read-only state data - from the client which has been learnt via the normal DHCPv6 message + from the client which has been learned via the normal DHCPv6 message flow. This gives an operator a better method for managing DHCPv6 clients and simplifies troubleshooting. 1.1. Terminology The reader should be familiar with the terms defined in DHCPv6 [RFC3315] and other relevant documents. The DHCPv6 tree diagrams provide a concise representation of a YANG module to help the reader understand the module structure. A simplified graphical representation of the data model is provided - in this d cument. For a description of the symbols in these + in this document. For a description of the symbols in these diagrams, please refer to [I-D.ietf-netmod-yang-tree-diagrams]. 2. DHCPv6 Tree Diagram 2.1. DHCPv6 Server Tree Diagrams module: ietf-dhcpv6-server +--rw server! +--rw server-config | +--rw serv-attributes @@ -231,22 +231,22 @@ | | | | +--rw ntp-serv-mul-addr-suboption* inet:ipv6-address | | | +--:(server-fqdn) | | | +--rw ntp-serv-fqdn-suboption* string | | +--rw boot-file-url-option! {boot-file-url-op}? | | | +--rw boot-file* [boot-file-id] | | | +--rw boot-file-id uint8 | | | +--rw suitable-arch-type* uint16 | | | +--rw suitable-net-if* uint32 | | | +--rw boot-file-url string | | +--rw boot-file-param-option! {boot-file-param-op}? - | | | +--rw boot-file-paras* [para-id] - | | | +--rw para-id uint8 + | | | +--rw boot-file-params* [param-id] + | | | +--rw param-id uint8 | | | +--rw parameter string | | +--rw aftr-name-option! {aftr-name-op}? | | | +--rw tunnel-endpoint-name string | | +--rw kbr-default-name-option! {kbr-default-name-op}? | | | +--rw default-realm-name string | | +--rw kbr-kdc-option! {kbr-kdc-op}? | | | +--rw kdc-info* [kdc-id] | | | +--rw kdc-id uint8 | | | +--rw priority uint16 | | | +--rw weight uint16 @@ -346,44 +346,44 @@ | +--rw network-ranges | | +--rw option-set-id? -> /server/server-config/option-sets/option-set/option-set-id | | +--rw network-range* [network-range-id] | | +--rw network-range-id uint32 | | +--rw network-description string | | +--rw network-prefix inet:ipv6-prefix | | +--rw option-set-id? -> /server/server-config/option-sets/option-set/option-set-id | | +--rw address-pools | | | +--rw address-pool* [pool-id] | | | +--rw pool-id uint32 - | | | +--rw pool-prefix inet:ipv6-prefix + | | | +--rw pool-prefix? inet:ipv6-prefix | | | +--rw start-address inet:ipv6-address-no-zone | | | +--rw end-address inet:ipv6-address-no-zone | | | +--rw valid-lifetime yang:timeticks | | | +--rw renew-time yang:timeticks | | | +--rw rebind-time yang:timeticks | | | +--rw preferred-lifetime yang:timeticks | | | +--rw rapid-commit boolean | | | +--rw client-class? string | | | +--rw max-address-count threshold - | | | +--rw option-set-id -> /server/server-config/option-sets/option-set/option-set-id + | | | +--rw option-set-id? -> /server/server-config/option-sets/option-set/option-set-id | | +--rw pd-pools | | | +--rw pd-pool* [pool-id] | | | +--rw pool-id uint32 | | | +--rw prefix inet:ipv6-prefix - | | | +--rw prefix-length uint8 + | | | +--rw delegated-length uint8 | | | +--rw valid-lifetime yang:timeticks | | | +--rw renew-time yang:timeticks | | | +--rw rebind-time yang:timeticks | | | +--rw preferred-lifetime yang:timeticks | | | +--rw rapid-commit boolean | | | +--rw client-class? string | | | +--rw max-pd-space-utilization threshold - | | | +--rw option-set-id -> /server/server-config/option-sets/option-set/option-set-id + | | | +--rw option-set-id? -> /server/server-config/option-sets/option-set/option-set-id | | +--rw host-reservations | | +--rw host-reservation* [cli-id] | | +--rw cli-id uint32 | | +--rw (client-identifier)? | | | +--:(duid) | | | | +--rw type-code? uint16 | | | | +--rw (duid-type)? | | | | +--:(duid-llt) | | | | | +--rw duid-llt-hardware-type? uint16 | | | | | +--rw duid-llt-time? yang:timeticks @@ -400,21 +400,21 @@ | | | | +--rw data? binary | | | +--:(hw-address) | | | +--rw hardware-address? yang:mac-address | | +--rw reserv-addr* inet:ipv6-address | | +--rw prefix-reservation* [reserv-prefix-id] | | | +--rw reserv-prefix-id uint32 | | | +--rw reserv-prefix inet:ipv6-prefix | | | +--rw reserv-prefix-len uint8 | | +--rw hostname? string | | +--rw option-set-id? -> /server/server-config/option-sets/option-set/option-set-id - | +--rw relay-opaque-paras + | +--rw relay-opaque-params | | +--rw relays* [relay-name] | | +--rw relay-name string | | +--rw interface-info* [if-name] | | | +--rw if-name string | | | +--rw interface-id string | | +--rw subscribers* [subscriber] | | | +--rw subscriber uint32 | | | +--rw subscriber-id string | | +--rw remote-host* [ent-num] | | +--rw ent-num uint32 @@ -652,72 +652,72 @@ (container) will be included in the current option set or not. In addition, each container also has a 'if-feature' statement to indicate whether the server supports this option (container). o network-ranges: This model supports a hierarchy to achieve dynamic configuration. That is to say we could configure the server at different levels through this model. The top level is a global level which is defined as the container "network-ranges". The following levels are defined as sub-containers under it. The "network-ranges" contains the parameters (e.g. option-sets) that - would be allocated to all the clients served by this server + would be allocated to all the clients served by this server. o network-range: Under the "network-ranges" container, a "network- range" list is defined to configure the server at a network level which is also considered as the second level. Different network are identified by the key "network-range-id". This is because a server may have different configuration parameters (e.g. option sets) for different networks. o address-pools: Under the "network-range" list, a container describes the DHCPv6 server's address pools for a specific network is defined. This container supports the server to be configured at a pool level. o address-pool: A DHCPv6 server can be configured with several address pools for a specific network. This list defines such address pools which are distinguish by the key called "pool-id". - o rapid-commit: Setting the value to '1' represents the adress/ - prefix pool support the Solicit-Reply message exchange. '0' means - the server will simply ignore the Rapid Commit option in Solicit - message. + o rapid-commit: Setting the value to 'true' represents the address/ + prefix pool support the Solicit-Reply message exchange. 'false' + means the server will simply ignore the Rapid Commit option in + Solicit message. o client-class: If this is instantiated, the address/pd pool will only serve the clients belonging to this class. o max-address-count: Maximum count of addresses that can be allocated in this pool. This value may be less than count of total addresses in this pool. o prefix-pools: If a server supports prefix delegation function, this container under the "network-range" list will be valid to define the delegating router's prefix pools for a specific network. This container also supports the server to be configured at a pool level. o prefix-pool: Similar to server's address pools, a delegating router can also be configured with multiple prefix pools specified by a list called "prefix-pool". - o max-pd-space-utlization: Maximum utilization of pd space in this - pool + o max-pd-space-utilization: Maximum utilization of pd space in this + pool. o host-reservations: This container allows the server to make reservations at host level. o host-reservation: This list allows the server to reserve addresses, prefixes, hostname and options for different clients. A server may reserve multiple addresses and prefixes for a single client. - o relay-opaque-paras: This container contains some opaque values in + o relay-opaque-params: This container contains some opaque values in Relay Agent options that need to be configured on the server side only for value match. Such Relay Agent options include Interface- Id option, Remote-Id option and Subscriber-Id option. o rsoo-enabled-options: [RFC6422] requires that the server SHOULD have an administrator-configurable list of RSOO-enabled options. This container include a list called "rsoo-enabled-option" to allow new RSOO-enabled options to be defined at the server side. o server-state: This container includes the state data of a server. @@ -869,21 +869,21 @@ similar to the that defined in server module. It allows the relay to implement several sets of RSOO-enabled options for different interfaces. The list only include the EAP Re-authentication Protocol (ERP) Local Domain Name DHCPv6 Option defined in [RFC6440], since it is the only one RSOO-enabled options accepted by IANA so far. o relay-if: A relay agent may have several interfaces, we should provide a way to configure and manage parameters on the interface- level. A list that describes specific interfaces and their - corresponding parameters is employed to fulfil the configfuration. + corresponding parameters is employed to fulfill the configuration. Here we use a string called "if-name" as the key of list. o relay-state: This container contains the configuration data of the relay. o pd-route: A sub-container of "relay-if" which describes the route for delegated prefixes into the provider edge router. o next-entity: This node defines a list that is used to describe the next hop entity of this relay agent. Different entities are @@ -965,21 +965,21 @@ | | +--rw principle-name-id uint8 | | +--rw name-type int32 | | +--rw name-string string | +--rw kbr-realm-name-option! {kbr-realm-name-op}? | | +--rw realm-name string | +--rw client-link-layer-addr-option! {client-link-layer-addr-op}? | +--rw link-layer-type uint16 | +--rw link-layer-addr string +--ro client-state - +--ro if-other-paras + +--ro if-other-params | +--ro server-unicast-option! {server-unicast-op}? | | +--ro server-address? inet:ipv6-address | +--ro sip-server-domain-name-list-option! {sip-server-domain-name-list-op}? | | +--ro sip-serv-domain-name string | +--ro sip-server-address-list-option! {sip-server-address-list-op}? | | +--ro sip-server* [sip-serv-id] | | +--ro sip-serv-id uint8 | | +--ro sip-serv-addr inet:ipv6-address @@ -1028,22 +1028,22 @@ inet:ipv6-address | | +--:(server-fqdn) | | +--ro ntp-serv-fqdn-suboption* string | +--ro boot-file-url-option! {boot-file-url-op}? | | +--ro boot-file* [boot-file-id] | | +--ro boot-file-id uint8 | | +--ro suitable-arch-type* uint16 | | +--ro suitable-net-if* uint32 | | +--ro boot-file-url string | +--ro boot-file-param-option! {boot-file-param-op}? - | | +--ro boot-file-paras* [para-id] - | | +--ro para-id uint8 + | | +--ro boot-file-params* [param-id] + | | +--ro param-id uint8 | | +--ro parameter string | +--ro aftr-name-option! {aftr-name-op}? | | +--ro tunnel-endpoint-name string | +--ro kbr-default-name-option! {kbr-default-name-op}? | | +--ro default-realm-name string | +--ro kbr-kdc-option! {kbr-kdc-op}? | | +--ro kdc-info* [kdc-id] | | +--ro kdc-id uint8 | | +--ro priority uint16 | | +--ro weight uint16 @@ -1210,45 +1210,45 @@ o client-if: A client may have several interfaces, it is more reasonable to configure and manage parameters on the interface- level. The list defines a specific client interface and its data. Different interfaces are distinguished by the "ifName" key which is a configurable string value. o pd-function: Whether the client can act as a requesting router to request prefixes using prefix delegation ([RFC3633]). - o rapid-commit: '1' indicates a client can initiate a Solicit-Reply - message exchange by adding a Rapid Commit option in Solicit - message. '0' means the client is not allowed to add a Rapid + o rapid-commit: 'true' indicates a client can initiate a Solicit- + Reply message exchange by adding a Rapid Commit option in Solicit + message. 'false' means the client is not allowed to add a Rapid Commit option to request addresses in a two-message exchange pattern. o client-configured-options: Similar to the server, the client also - need to configure some options to fulfil some desired functions. + need to configure some options to fulfill some desired functions. This container include all the potential options that need to be configured at the client side. The relevant RFCs that define those options include: [RFC3315], [RFC4704], [RFC5970], [RFC6784], [RFC6939]. o option-request-option: This container provide a way to configure the list of options that the client will request in its ORO option. o client-state: This container includes the state data of the client. - o if-other-paras: A client can obtain extra configuration data other - than address and prefix information through DHCPv6 options. This - container describes such data the client was configured through - DHCPv6. The potential configuration data may include DNS server - parameters, SIP server parameters and etc. + o if-other-params: A client can obtain extra configuration data + other than address and prefix information through DHCPv6 options. + This container describes such data the client was configured + through DHCPv6. The potential configuration data may include DNS + server parameters, SIP server parameters and etc. o packet-stats: A container records all the packet status information of a specific interface. Information about notifications: o ia-lease-event: raised when the client was allocated a new IA from the server or it renew/rebind/release its current IA. o invalid-ia-detected: raised when the identity association of the @@ -1577,45 +1577,46 @@ container address-pools { description "A container that describes the DHCPv6 server's address pools."; list address-pool { key pool-id; description "A DHCPv6 server can be configured with several address pools. This list defines such address pools - which are distinguished by the key called 'pool-id'."; + which are distinguished by the key called 'pool-id' inside + a network range."; leaf pool-id { type uint32; mandatory true; description "pool id"; } leaf pool-prefix { type inet:ipv6-prefix; - mandatory true; - description "pool prefix"; + description "Pool prefix. SHOULD be set when the + 'start-address..end-address' range is a prefix."; } leaf start-address { type inet:ipv6-address-no-zone; mandatory true; description "start address"; } leaf end-address { type inet:ipv6-address-no-zone; mandatory true; description "end address"; } leaf valid-lifetime { type yang:timeticks; mandatory true; - description "valid liftime for IA"; + description "valid lifetime for IA"; } leaf renew-time { type yang:timeticks; mandatory true; description "renew time"; } leaf rebind-time { type yang:timeticks; mandatory true; description "rebind time"; @@ -1641,21 +1643,20 @@ type threshold; mandatory true; description "maximum count of addresses that can be allocated in this pool. This value may be less than count of total addresses."; } leaf option-set-id { type leafref { path "/server/server-config/option-sets/option-set/option-set-id"; } - mandatory true; description "The ID field of relevant option-set to be provisioned to clients of this address-pool."; } } } container pd-pools { description "If a server supports prefix delegation function, this container will be used to define the delegating router's prefix pools."; @@ -1668,24 +1669,24 @@ type uint32; mandatory true; description "pool id"; } leaf prefix { type inet:ipv6-prefix; mandatory true; description "ipv6 prefix"; } - leaf prefix-length { + leaf delegated-length { type uint8; mandatory true; - description "prefix length"; + description "default delegated prefix length"; } leaf valid-lifetime { type yang:timeticks; mandatory true; description "valid lifetime for IA"; } leaf renew-time { type yang:timeticks; mandatory true; description "renew time"; @@ -1712,25 +1713,24 @@ } leaf max-pd-space-utilization { type threshold; mandatory true; description "Maximum utilization of pd space in this pool"; } leaf option-set-id { type leafref { path "/server/server-config/option-sets/option-set/option-set-id"; } - mandatory true; description "The ID field of relevant option-set to be provisioned to clients of this prefix-pool."; - } + } } container host-reservations { description "This container allows the server to make reservations at host level."; list host-reservation { key cli-id; description "This list allows the server to reserve addresses, prefixes, hostname and options for different clients."; @@ -1793,21 +1793,21 @@ } description "The ID field of relevant option-set to be provisioned in the host reservation."; } } } } } - container relay-opaque-paras { + container relay-opaque-params { description "This container contains some opaque values in Relay Agent options that need to be configured on the server side only for value match. Such Relay Agent options include Interface-Id option, Remote-Id option and Subscriber-Id option."; list relays { key relay-name; description "relay agents"; leaf relay-name { type string; mandatory true; @@ -1977,21 +1979,21 @@ } leaf pd-space-utilization { type threshold; mandatory true; description "current PD space utilization"; } } list binding-info { key cli-id; description "A list records a binding information for each DHCPv6 - client that has already been alloated IPv6 prefixes."; + client that has already been allocated IPv6 prefixes."; leaf cli-id { type uint32; mandatory true; description "client id"; } container duid { description "Reads the DUID"; uses dhcpv6-types:duid; } list cli-iapd { @@ -2018,21 +2020,21 @@ } } } container host-reservations { description "This container provides host reservations in the host level."; list binding-info { key cli-id; description "A list records a binding information for each DHCPv6 - client that has already been alloated IPv6 addresses or prefixes + client that has already been allocated IPv6 addresses or prefixes by host reservations."; leaf cli-id { type uint32; mandatory true; description "client id"; } container duid { description "Reads the DUID"; uses dhcpv6-types:duid; } @@ -2412,21 +2414,21 @@ } } list relay-if { // if - This should reference an entry in ietf-interfaces key if-name; description "A relay agent may have several interfaces, we should provide a way to configure and manage parameters on the interface-level. A list that describes specific interfaces and their corresponding - parameters is employed to fulfil the configfuration. Here we use + parameters is employed to fulfill the configuration. Here we use a string called 'if-name' as the key of list."; leaf if-name { type if:interface-ref; mandatory true; description "Interface name"; } leaf interface-id { type string; description @@ -2485,37 +2488,38 @@ "Whether the next entity is a server"; } } } } container relay-state { config "false"; description "State data of relay"; + list relay-if { key if-name; description "A relay agent may have several interfaces, we should provide a way to configure and manage parameters on the interface-level. A list that describes specific interfaces and their corresponding - parameters is employed to fulfil the configfuration. Here we use + parameters is employed to fulfill the configuration. Here we use a string called 'if-name' as the key of list."; leaf if-name{ type string; mandatory true; description "Interface name"; } list pd-route { // if - need to look at if/how we model these. If they are - // going to be modelled, then they should be ro state + // going to be modeled, then they should be ro state // entries (we're not trying to configure routes here) key pd-route-id; description "pd route"; leaf pd-route-id { type uint8; mandatory true; description "PD route id"; } leaf requesting-router-id { @@ -2567,21 +2571,21 @@ description "request received counter"; } leaf renew-rvd-count { type uint32; mandatory true; description "renew received counter"; } leaf rebind-rvd-count { type uint32; mandatory true; - description "rebind recevied counter"; + description "rebind received counter"; } leaf decline-rvd-count { type uint32; mandatory true; description "decline received counter"; } leaf release-rvd-count { type uint32; mandatory true; description "release received counter"; @@ -2652,21 +2657,21 @@ leaf relay-for-rvd-count { type uint32; mandatory true; description "Relay forward received counter"; } leaf relay-rep-rvd-count { type uint32; mandatory true; description - "Relay reply recevied counter"; + "Relay reply received counter"; } leaf packet-to-cli-count { type uint32; mandatory true; description "Packet to client counter"; } leaf relay-for-sent-count { type uint32; mandatory true; @@ -2819,40 +2826,40 @@ leaf pd-function { type boolean; mandatory true; description "Whether the client can act as a requesting router to request prefixes using prefix delegation ([RFC3633])."; } leaf rapid-commit { type boolean; mandatory true; - description "'1' indicates a client can initiate a Solicit-Reply message - exchange by adding a Rapid Commit option in Solicit message. '0' means + description "'true' indicates a client can initiate a Solicit-Reply message + exchange by adding a Rapid Commit option in Solicit message. 'false' means the client is not allowed to add a Rapid Commit option to request addresses in a two-message exchange pattern."; } /* container mo-tab { description "The management tab label indicates the operation mode of the DHCPv6 client. 'm'=1 and 'o'=1 indicate the client will use DHCPv6 to obtain all the configuration data. 'm'=1 and 'o'=0 are a meaningless combination. 'm'=0 and 'o'=1 indicate the client will use stateless DHCPv6 to obtain configuration data apart from addresses/prefixes data. 'm'=0 and 'o'=0 represent the client will not use DHCPv6 but use SLAAC to achieve configuration."; // if - not sure about the intended use here as it seems - // to be redfining what will be received in the PIO. Is + // to be redefining what will be received in the PIO. Is // the intention to be whether they PIO options will be // obeyed as received or overridden? leaf m-tab { type boolean; mandatory true; description "m tab"; } leaf o-tab { type boolean; mandatory true; @@ -2864,21 +2871,21 @@ container client-configured-options { description "client configured options"; uses dhcpv6-options:client-option-definitions; } } } container client-state { config "false"; description "state tree of client"; - container if-other-paras { + container if-other-params { description "A client can obtain extra configuration data other than address and prefix information through DHCPv6. This container describes such data the client was configured. The potential configuration data may include DNS server addresses, SIP server domain names, etc."; uses dhcpv6-options:server-option-definitions; } container packet-stats { config "false"; description "A container records @@ -2930,21 +2938,21 @@ description "confirm counter"; } leaf reply-count { type uint32; mandatory true; description "reply counter"; } leaf reconfigure-count { type uint32; mandatory true; - description "recofigure counter"; + description "reconfigure counter"; } } } } /* * Notifications */ @@ -3207,21 +3216,21 @@ feature kbr-kdc-op { description "Support for Kerberos KDC option"; } feature sol-max-rt-op { description "Support for SOL_MAX_RT option"; } feature inf-max-rt-op { description "Support for INF_MAX_RT option"; } feature addr-selection-op { - description "Support for Address Selection opiton"; + description "Support for Address Selection option"; } feature pcp-server-op { description "Support for Port Control Protocol (PCP) option"; } feature s46-rule-op { description "Support for S46 Rule option"; } feature s46-br-op { description "Support for S46 Border Relay (BR) option"; @@ -3277,40 +3286,40 @@ feature operator-op-ipv6-address { description "Support for Option with IPv6 Addresses"; } feature operator-op-single-flag { description "Support for Option with Single Flag"; } feature operator-op-ipv6-prefix { description "Support for Option with IPv6 Prefix"; } feature operator-op-int32 { - description "Support for Opion with 32-bit + description "Support for Option with 32-bit Integer Value"; } feature operator-op-int16 { - description "Support for Opion with 16-bit Integer Value"; + description "Support for Option with 16-bit Integer Value"; } feature operator-op-int8 { - description "Support for Opion with 8-bit Integer Value"; + description "Support for Option with 8-bit Integer Value"; } feature operator-op-uri { - description "Support for Opion with URI"; + description "Support for Option with URI"; } feature operator-op-textstring { - description "Support for Opion with Text String"; + description "Support for Option with Text String"; } feature operator-op-var-data { - description "Support for Opion with Variable-Length Data"; + description "Support for Option with Variable-Length Data"; } feature operator-op-dns-wire { - description "Support for Opion with DNS Wire + description "Support for Option with DNS Wire Format Domain Name List"; } /* * Groupings */ grouping server-option-definitions { description "Contains definitions for options configured on the DHCPv6 server which will be supplied to clients."; @@ -3564,21 +3573,21 @@ type string; mandatory true; description "Reference to the TZ Database"; } } container ntp-server-option { //This option looks like it needs work to correctly model the //option as defined in the RFC. - // Zihao - Re-modelled so it only contains one time source suboption + // Zihao - Re-modeled so it only contains one time source suboption if-feature ntp-server-op; presence "Enable this option"; description "OPTION_NTP_SERVER (56) NTP Server Option for DHCPv6"; reference "RFC5908: Network Time Protocol (NTP) Server Option for DHCPv6"; list ntp-server { key ntp-serv-id; description "ntp server info"; leaf ntp-serv-id { @@ -3636,27 +3645,27 @@ type string; mandatory true; description "url for boot file"; } } } container boot-file-param-option { if-feature boot-file-param-op; presence "Enable this option"; - description "OPT_BOOTFiLE_PARAM (60) Boot File Parameters Option"; + description "OPT_BOOTFILE_PARAM (60) Boot File Parameters Option"; reference "RFC5970: DHCPv6 Options for Network Boot"; - list boot-file-paras { - key para-id; + list boot-file-params { + key param-id; description "boot file parameters"; - leaf para-id { + leaf param-id { type uint8; mandatory true; description "parameter id"; } leaf parameter { type string; mandatory true; description "parameter value"; } } @@ -3871,21 +3880,21 @@ leaf prefix6-len { type uint8; mandatory true; description "ipv6 prefix length"; } leaf ipv6-prefix { type inet:ipv6-prefix; mandatory true; description "ipv6 prefix"; } - uses dhcpv6-types:portset-para; + uses dhcpv6-types:portset-param; } } container s46-br-option { if-feature s46-br-op; presence "Enable this option"; description "OPTION_S46_BR (90) S46 BR Option"; reference "RFC7598: DHCPv6 Options for Configuration of Softwire Address and Port-Mapped Clients"; list br { @@ -3955,21 +3964,21 @@ type uint8; mandatory true; description "bind ipv6 prefix length"; } leaf bind-ipv6-prefix { type inet:ipv6-address; mandatory true; description "bind ipv6 prefix"; } - uses dhcpv6-types:portset-para; + uses dhcpv6-types:portset-param; } } } //if - NB - The list of options needs to be updated. grouping relay-supplied-option-definitions { // if - The structure here needs to be checked and probably reworked. description "OPTION_RSOO (66) Relay-Supplied Options option"; reference "RFC6422: Relay-Supplied DHCP Options"; @@ -4434,21 +4443,21 @@ } } container operator-option-var-data { if-feature operator-op-var-data; presence "Enable this option"; description "operator variable length data option"; reference "RFC7227: Guidelines for Creating New DHCPv6 Options"; list int32val { key var-data-id; - description "operator ivariable length data info"; + description "operator invariable length data info"; leaf var-data-id { type uint8; mandatory true; description "operator variable length id"; } leaf var-data { type binary; mandatory true; description "operator variable length value"; } @@ -4539,21 +4548,21 @@ } } 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 RFC3315 and RFC6355 - DUID-LLT, DUID-EN, DUID-LL and - DUID-UUID. DUID-Uknown represents those unconventional DUIDs."; + DUID-UUID. DUID-Unknown represents those unconventional DUIDs."; reference "RFC3315: Section 9 and RFC6355: Section 4"; leaf type-code { type uint16; default 65535; description "Type code of this DUID"; } choice duid-type { default duid-unknown; description "Selects the format for the DUID."; case duid-llt { @@ -4580,58 +4589,58 @@ description "DUID Assigned by Vendor Based on Enterprise Number (Type 2 - DUID-EN)"; reference "RFC3315 Section 9.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 "Indentifier, unique to the device that is + description "Identifier, unique to the device that is using it"; } } case duid-ll { description "DUID Based on Link-layer Address (Type 3 - DUID-LL)"; reference "RFC3315 Section 9.4"; leaf duid-ll-hardware-type { type uint16; description "Hardware type as assigned by IANA (RFC826)."; } leaf duid-ll-link-layer-addr { 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 Defination of the UUID-Based Unique Identifier"; + 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 RFC 4122. The canonical representation uses lowercase characters"; } } case duid-unknown { description "DUID based on free raw bytes"; leaf data { type binary; description "The bits to be used as the identifier"; } } } } - grouping portset-para { + grouping portset-param { description "portset parameters"; container port-parameter { description "port parameter"; leaf offset { type uint8; mandatory true; description "offset in a port set"; } leaf psid-len { type uint8; @@ -4707,21 +4716,21 @@ 5. IANA Considerations (TBD) This document registers the following YANG modules in the "YANG Module Names" registry [RFC6020]. name: ietf-dhcpv6 namespace: urn:ietf:params:xml:ns:yang:ietf-dhcpv6 prefix: dhcpv6 reference: TBD -6. Acknowledgements +6. Acknowledgments The authors would like to thank Qi Sun, Lishan Li, Sladjana Zoric, Tomek Mrugalski, Marcin Siodelski, Bernie Volz and Bing Liu for their valuable comments and contributions to this work. 7. Contributors The following individuals contributed to this effort: Hao Wang Tsinghua University