draft-ietf-dhc-dhcpv6-yang-07.txt   draft-ietf-dhc-dhcpv6-yang-08.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: March 8, 2019 I. Farrer Expires: September 10, 2019 I. Farrer
S. Zechlin S. Zechlin
Deutsche Telekom AG Deutsche Telekom AG
Z. He Z. He
Tsinghua University Tsinghua University
September 4, 2018 March 9, 2019
YANG Data Model for DHCPv6 Configuration YANG Data Model for DHCPv6 Configuration
draft-ietf-dhc-dhcpv6-yang-07 draft-ietf-dhc-dhcpv6-yang-08
Abstract Abstract
This document describes a YANG data model [RFC6020] for the This document describes a YANG data model [RFC6020] for the
configuration and management of DHCPv6 servers, relays, and clients. configuration and 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", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
skipping to change at page 1, line 42 skipping to change at page 1, line 42
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 March 8, 2019. This Internet-Draft will expire on September 10, 2019.
Copyright Notice 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. 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 Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
skipping to change at page 2, line 31 skipping to change at page 2, line 31
2.2. DHCPv6 Relay Tree Diagrams . . . . . . . . . . . . . . . 16 2.2. DHCPv6 Relay Tree Diagrams . . . . . . . . . . . . . . . 16
2.3. DHCPv6 Client Tree Diagrams . . . . . . . . . . . . . . . 20 2.3. DHCPv6 Client Tree Diagrams . . . . . . . . . . . . . . . 20
3. DHCPv6 YANG Model . . . . . . . . . . . . . . . . . . . . . . 27 3. DHCPv6 YANG Model . . . . . . . . . . . . . . . . . . . . . . 27
3.1. DHCPv6 Server YANG Model . . . . . . . . . . . . . . . . 27 3.1. DHCPv6 Server YANG Model . . . . . . . . . . . . . . . . 27
3.2. DHCPv6 Relay YANG Model . . . . . . . . . . . . . . . . . 47 3.2. DHCPv6 Relay YANG Model . . . . . . . . . . . . . . . . . 47
3.3. DHCPv6 Client YANG Model . . . . . . . . . . . . . . . . 57 3.3. DHCPv6 Client YANG Model . . . . . . . . . . . . . . . . 57
3.4. DHCPv6 Options YANG Model . . . . . . . . . . . . . . . . 65 3.4. DHCPv6 Options YANG Model . . . . . . . . . . . . . . . . 65
3.5. DHCPv6 Types YANG Model . . . . . . . . . . . . . . . . . 94 3.5. DHCPv6 Types YANG Model . . . . . . . . . . . . . . . . . 94
4. Security Considerations (TBD) . . . . . . . . . . . . . . . . 99 4. Security Considerations (TBD) . . . . . . . . . . . . . . . . 99
5. IANA Considerations (TBD) . . . . . . . . . . . . . . . . . . 99 5. IANA Considerations (TBD) . . . . . . . . . . . . . . . . . . 99
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 99 6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 99
7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 99 7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 99
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 100 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 100
8.1. Normative References . . . . . . . . . . . . . . . . . . 100 8.1. Normative References . . . . . . . . . . . . . . . . . . 100
8.2. Informative References . . . . . . . . . . . . . . . . . 100 8.2. Informative References . . . . . . . . . . . . . . . . . 100
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 102 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 102
1. Introduction 1. Introduction
DHCPv6 [RFC3315] is widely used for supplying configuration and other DHCPv6 [RFC3315] 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 a DHCPv6 YANG data model, containing sub-modules for the defines a DHCPv6 YANG data model, containing sub-modules for the
configuration and management of DHCPv6 servers, relays and clients. configuration and management of DHCPv6 servers, relays and clients.
A single YANG model covering all of these elements provides an A single YANG model covering all of these elements provides an
operator with a common interface for the management of the entire operator with a common interface for the management of the entire
DHCPv6 deployment in their network. DHCPv6 deployment in their network.
Since the publication of the original DHCPv6 specification, there 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 protocol's operation, add new functions and define new options. The
YANG model described in this document incorporates all relevent YANG model described in this document incorporates all relevant
changes. A full list of the documents which have been considedered changes. A full list of the documents which have been considered in
in the development of this model is included in Appendix A. 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 It is worth noting that as DHCPv6 is itself a device configuration
protocol, it is not the intention of this document to replace the protocol, it is not the intention of this document to replace the
configuration of DHCPv6 options and parameters using the DHCPv6 configuration of DHCPv6 options and parameters using the DHCPv6
protocol with the configuration of DHCPv6 options using NETCONF/YANG. protocol with the configuration of DHCPv6 options using NETCONF/YANG.
The DHCPv6 client model is intended for the configuration of the The DHCPv6 client model is intended for the configuration of the
DHCPv6 client function and also for obtaining read-only state data 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 flow. This gives an operator a better method for managing DHCPv6
clients and simplifies troubleshooting. clients and simplifies troubleshooting.
1.1. Terminology 1.1. Terminology
The reader should be familiar with the terms defined in DHCPv6 The reader should be familiar with the terms defined in DHCPv6
[RFC3315] and other relevant documents. [RFC3315] and other relevant documents.
The DHCPv6 tree diagrams provide a concise representation of a YANG The DHCPv6 tree diagrams provide a concise representation of a YANG
module to help the reader understand the module structure. module to help the reader understand the module structure.
A simplified graphical representation of the data model is provided 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]. diagrams, please refer to [I-D.ietf-netmod-yang-tree-diagrams].
2. DHCPv6 Tree Diagram 2. DHCPv6 Tree Diagram
2.1. DHCPv6 Server Tree Diagrams 2.1. DHCPv6 Server Tree Diagrams
module: ietf-dhcpv6-server module: ietf-dhcpv6-server
+--rw server! +--rw server!
+--rw server-config +--rw server-config
| +--rw serv-attributes | +--rw serv-attributes
skipping to change at page 6, line 6 skipping to change at page 6, line 6
| | | | +--rw ntp-serv-mul-addr-suboption* inet:ipv6-address | | | | +--rw ntp-serv-mul-addr-suboption* inet:ipv6-address
| | | +--:(server-fqdn) | | | +--:(server-fqdn)
| | | +--rw ntp-serv-fqdn-suboption* string | | | +--rw ntp-serv-fqdn-suboption* string
| | +--rw boot-file-url-option! {boot-file-url-op}? | | +--rw boot-file-url-option! {boot-file-url-op}?
| | | +--rw boot-file* [boot-file-id] | | | +--rw boot-file* [boot-file-id]
| | | +--rw boot-file-id uint8 | | | +--rw boot-file-id uint8
| | | +--rw suitable-arch-type* uint16 | | | +--rw suitable-arch-type* uint16
| | | +--rw suitable-net-if* uint32 | | | +--rw suitable-net-if* uint32
| | | +--rw boot-file-url string | | | +--rw boot-file-url string
| | +--rw boot-file-param-option! {boot-file-param-op}? | | +--rw boot-file-param-option! {boot-file-param-op}?
| | | +--rw boot-file-paras* [para-id] | | | +--rw boot-file-params* [param-id]
| | | +--rw para-id uint8 | | | +--rw param-id uint8
| | | +--rw parameter string | | | +--rw parameter string
| | +--rw aftr-name-option! {aftr-name-op}? | | +--rw aftr-name-option! {aftr-name-op}?
| | | +--rw tunnel-endpoint-name string | | | +--rw tunnel-endpoint-name string
| | +--rw kbr-default-name-option! {kbr-default-name-op}? | | +--rw kbr-default-name-option! {kbr-default-name-op}?
| | | +--rw default-realm-name string | | | +--rw default-realm-name string
| | +--rw kbr-kdc-option! {kbr-kdc-op}? | | +--rw kbr-kdc-option! {kbr-kdc-op}?
| | | +--rw kdc-info* [kdc-id] | | | +--rw kdc-info* [kdc-id]
| | | +--rw kdc-id uint8 | | | +--rw kdc-id uint8
| | | +--rw priority uint16 | | | +--rw priority uint16
| | | +--rw weight uint16 | | | +--rw weight uint16
skipping to change at page 8, line 25 skipping to change at page 8, line 25
| +--rw network-ranges | +--rw network-ranges
| | +--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 network-range* [network-range-id] | | +--rw network-range* [network-range-id]
| | +--rw network-range-id uint32 | | +--rw network-range-id uint32
| | +--rw network-description string | | +--rw network-description string
| | +--rw network-prefix inet:ipv6-prefix | | +--rw network-prefix inet:ipv6-prefix
| | +--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 address-pools | | +--rw address-pools
| | | +--rw address-pool* [pool-id] | | | +--rw address-pool* [pool-id]
| | | +--rw pool-id uint32 | | | +--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 start-address inet:ipv6-address-no-zone
| | | +--rw end-address inet:ipv6-address-no-zone | | | +--rw end-address inet:ipv6-address-no-zone
| | | +--rw valid-lifetime yang:timeticks | | | +--rw valid-lifetime yang:timeticks
| | | +--rw renew-time yang:timeticks | | | +--rw renew-time yang:timeticks
| | | +--rw rebind-time yang:timeticks | | | +--rw rebind-time yang:timeticks
| | | +--rw preferred-lifetime yang:timeticks | | | +--rw preferred-lifetime yang:timeticks
| | | +--rw rapid-commit boolean | | | +--rw rapid-commit boolean
| | | +--rw client-class? string | | | +--rw client-class? string
| | | +--rw max-address-count threshold | | | +--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-pools
| | | +--rw pd-pool* [pool-id] | | | +--rw pd-pool* [pool-id]
| | | +--rw pool-id uint32 | | | +--rw pool-id uint32
| | | +--rw prefix inet:ipv6-prefix | | | +--rw prefix inet:ipv6-prefix
| | | +--rw prefix-length uint8 | | | +--rw delegated-length uint8
| | | +--rw valid-lifetime yang:timeticks | | | +--rw valid-lifetime yang:timeticks
| | | +--rw renew-time yang:timeticks | | | +--rw renew-time yang:timeticks
| | | +--rw rebind-time yang:timeticks | | | +--rw rebind-time yang:timeticks
| | | +--rw preferred-lifetime yang:timeticks | | | +--rw preferred-lifetime yang:timeticks
| | | +--rw rapid-commit boolean | | | +--rw rapid-commit boolean
| | | +--rw client-class? string | | | +--rw client-class? string
| | | +--rw max-pd-space-utilization threshold | | | +--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-reservations
| | +--rw host-reservation* [cli-id] | | +--rw host-reservation* [cli-id]
| | +--rw cli-id uint32 | | +--rw cli-id uint32
| | +--rw (client-identifier)? | | +--rw (client-identifier)?
| | | +--:(duid) | | | +--:(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
skipping to change at page 9, line 31 skipping to change at page 9, line 31
| | | | +--rw data? binary | | | | +--rw data? binary
| | | +--:(hw-address) | | | +--:(hw-address)
| | | +--rw hardware-address? yang:mac-address | | | +--rw hardware-address? yang:mac-address
| | +--rw reserv-addr* inet:ipv6-address | | +--rw reserv-addr* inet:ipv6-address
| | +--rw prefix-reservation* [reserv-prefix-id] | | +--rw prefix-reservation* [reserv-prefix-id]
| | | +--rw reserv-prefix-id uint32 | | | +--rw reserv-prefix-id uint32
| | | +--rw reserv-prefix inet:ipv6-prefix | | | +--rw reserv-prefix inet:ipv6-prefix
| | | +--rw reserv-prefix-len uint8 | | | +--rw reserv-prefix-len uint8
| | +--rw hostname? string | | +--rw hostname? string
| | +--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 relay-opaque-paras | +--rw relay-opaque-params
| | +--rw relays* [relay-name] | | +--rw relays* [relay-name]
| | +--rw relay-name string | | +--rw relay-name string
| | +--rw interface-info* [if-name] | | +--rw interface-info* [if-name]
| | | +--rw if-name string | | | +--rw if-name string
| | | +--rw interface-id string | | | +--rw interface-id string
| | +--rw subscribers* [subscriber] | | +--rw subscribers* [subscriber]
| | | +--rw subscriber uint32 | | | +--rw subscriber uint32
| | | +--rw subscriber-id string | | | +--rw subscriber-id string
| | +--rw remote-host* [ent-num] | | +--rw remote-host* [ent-num]
| | +--rw ent-num uint32 | | +--rw ent-num uint32
skipping to change at page 14, line 46 skipping to change at page 14, line 46
(container) will be included in the current option set or not. In (container) will be included in the current option set or not. In
addition, each container also has a 'if-feature' statement to addition, each container also has a 'if-feature' statement to
indicate whether the server supports this option (container). indicate whether the server supports this option (container).
o network-ranges: This model supports a hierarchy to achieve dynamic o network-ranges: This model supports a hierarchy to achieve dynamic
configuration. That is to say we could configure the server at configuration. That is to say we could configure the server at
different levels through this model. The top level is a global different levels through this model. The top level is a global
level which is defined as the container "network-ranges". The level which is defined as the container "network-ranges". The
following levels are defined as sub-containers under it. The following levels are defined as sub-containers under it. The
"network-ranges" contains the parameters (e.g. option-sets) that "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- o network-range: Under the "network-ranges" container, a "network-
range" list is defined to configure the server at a network level range" list is defined to configure the server at a network level
which is also considered as the second level. Different network which is also considered as the second level. Different network
are identified by the key "network-range-id". This is because a are identified by the key "network-range-id". This is because a
server may have different configuration parameters (e.g. option server may have different configuration parameters (e.g. option
sets) for different networks. sets) for different networks.
o address-pools: Under the "network-range" list, a container o address-pools: Under the "network-range" list, a container
describes the DHCPv6 server's address pools for a specific network describes the DHCPv6 server's address pools for a specific network
is defined. This container supports the server to be configured is defined. This container supports the server to be configured
at a pool level. at a pool level.
o address-pool: A DHCPv6 server can be configured with several o address-pool: A DHCPv6 server can be configured with several
address pools for a specific network. This list defines such address pools for a specific network. This list defines such
address pools which are distinguish by the key called "pool-id". address pools which are distinguish by the key called "pool-id".
o rapid-commit: Setting the value to '1' represents the adress/ o rapid-commit: Setting the value to 'true' represents the address/
prefix pool support the Solicit-Reply message exchange. '0' means prefix pool support the Solicit-Reply message exchange. 'false'
the server will simply ignore the Rapid Commit option in Solicit means the server will simply ignore the Rapid Commit option in
message. Solicit message.
o client-class: If this is instantiated, the address/pd pool will o client-class: If this is instantiated, the address/pd pool will
only serve the clients belonging to this class. only serve the clients belonging to this class.
o max-address-count: Maximum count of addresses that can be o max-address-count: Maximum count of addresses that can be
allocated in this pool. This value may be less than count of allocated in this pool. This value may be less than count of
total addresses in this pool. total addresses in this pool.
o prefix-pools: If a server supports prefix delegation function, o prefix-pools: If a server supports prefix delegation function,
this container under the "network-range" list will be valid to this container under the "network-range" list will be valid to
define the delegating router's prefix pools for a specific define the delegating router's prefix pools for a specific
network. This container also supports the server to be configured network. This container also supports the server to be configured
at a pool level. at a pool level.
o prefix-pool: Similar to server's address pools, a delegating o prefix-pool: Similar to server's address pools, a delegating
router can also be configured with multiple prefix pools specified router can also be configured with multiple prefix pools specified
by a list called "prefix-pool". by a list called "prefix-pool".
o max-pd-space-utlization: Maximum utilization of pd space in this o max-pd-space-utilization: Maximum utilization of pd space in this
pool pool.
o host-reservations: This container allows the server to make o host-reservations: This container allows the server to make
reservations at host level. reservations at host level.
o host-reservation: This list allows the server to reserve o host-reservation: This list allows the server to reserve
addresses, prefixes, hostname and options for different clients. addresses, prefixes, hostname and options for different clients.
A server may reserve multiple addresses and prefixes for a single A server may reserve multiple addresses and prefixes for a single
client. 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 Relay Agent options that need to be configured on the server side
only for value match. Such Relay Agent options include Interface- only for value match. Such Relay Agent options include Interface-
Id option, Remote-Id option and Subscriber-Id option. Id option, Remote-Id option and Subscriber-Id option.
o rsoo-enabled-options: [RFC6422] requires that the server SHOULD o rsoo-enabled-options: [RFC6422] requires that the server SHOULD
have an administrator-configurable list of RSOO-enabled options. have an administrator-configurable list of RSOO-enabled options.
This container include a list called "rsoo-enabled-option" to This container include a list called "rsoo-enabled-option" to
allow new RSOO-enabled options to be defined at the server side. allow new RSOO-enabled options to be defined at the server side.
o server-state: This container includes the state data of a server. o server-state: This container includes the state data of a server.
skipping to change at page 19, line 25 skipping to change at page 19, line 25
similar to the that defined in server module. It allows the relay similar to the that defined in server module. It allows the relay
to implement several sets of RSOO-enabled options for different to implement several sets of RSOO-enabled options for different
interfaces. The list only include the EAP Re-authentication interfaces. The list only include the EAP Re-authentication
Protocol (ERP) Local Domain Name DHCPv6 Option defined in Protocol (ERP) Local Domain Name DHCPv6 Option defined in
[RFC6440], since it is the only one RSOO-enabled options accepted [RFC6440], since it is the only one RSOO-enabled options accepted
by IANA so far. by IANA so far.
o relay-if: A relay agent may have several interfaces, we should o relay-if: A relay agent may have several interfaces, we should
provide a way to configure and manage parameters on the interface- provide a way to configure and manage parameters on the interface-
level. A list that describes specific interfaces and their 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. Here we use a string called "if-name" as the key of list.
o relay-state: This container contains the configuration data of the o relay-state: This container contains the configuration data of the
relay. relay.
o pd-route: A sub-container of "relay-if" which describes the route o pd-route: A sub-container of "relay-if" which describes the route
for delegated prefixes into the provider edge router. for delegated prefixes into the provider edge router.
o next-entity: This node defines a list that is used to describe the o next-entity: This node defines a list that is used to describe the
next hop entity of this relay agent. Different entities are next hop entity of this relay agent. Different entities are
skipping to change at page 21, line 28 skipping to change at page 21, line 28
| | +--rw principle-name-id uint8 | | +--rw principle-name-id uint8
| | +--rw name-type int32 | | +--rw name-type int32
| | +--rw name-string string | | +--rw name-string string
| +--rw kbr-realm-name-option! {kbr-realm-name-op}? | +--rw kbr-realm-name-option! {kbr-realm-name-op}?
| | +--rw realm-name string | | +--rw realm-name string
| +--rw client-link-layer-addr-option! | +--rw client-link-layer-addr-option!
{client-link-layer-addr-op}? {client-link-layer-addr-op}?
| +--rw link-layer-type uint16 | +--rw link-layer-type uint16
| +--rw link-layer-addr string | +--rw link-layer-addr string
+--ro client-state +--ro client-state
+--ro if-other-paras +--ro if-other-params
| +--ro server-unicast-option! {server-unicast-op}? | +--ro server-unicast-option! {server-unicast-op}?
| | +--ro server-address? inet:ipv6-address | | +--ro server-address? inet:ipv6-address
| +--ro sip-server-domain-name-list-option! | +--ro sip-server-domain-name-list-option!
{sip-server-domain-name-list-op}? {sip-server-domain-name-list-op}?
| | +--ro sip-serv-domain-name string | | +--ro sip-serv-domain-name string
| +--ro sip-server-address-list-option! | +--ro sip-server-address-list-option!
{sip-server-address-list-op}? {sip-server-address-list-op}?
| | +--ro sip-server* [sip-serv-id] | | +--ro sip-server* [sip-serv-id]
| | +--ro sip-serv-id uint8 | | +--ro sip-serv-id uint8
| | +--ro sip-serv-addr inet:ipv6-address | | +--ro sip-serv-addr inet:ipv6-address
skipping to change at page 22, line 43 skipping to change at page 22, line 43
inet:ipv6-address inet:ipv6-address
| | +--:(server-fqdn) | | +--:(server-fqdn)
| | +--ro ntp-serv-fqdn-suboption* string | | +--ro ntp-serv-fqdn-suboption* string
| +--ro boot-file-url-option! {boot-file-url-op}? | +--ro boot-file-url-option! {boot-file-url-op}?
| | +--ro boot-file* [boot-file-id] | | +--ro boot-file* [boot-file-id]
| | +--ro boot-file-id uint8 | | +--ro boot-file-id uint8
| | +--ro suitable-arch-type* uint16 | | +--ro suitable-arch-type* uint16
| | +--ro suitable-net-if* uint32 | | +--ro suitable-net-if* uint32
| | +--ro boot-file-url string | | +--ro boot-file-url string
| +--ro boot-file-param-option! {boot-file-param-op}? | +--ro boot-file-param-option! {boot-file-param-op}?
| | +--ro boot-file-paras* [para-id] | | +--ro boot-file-params* [param-id]
| | +--ro para-id uint8 | | +--ro param-id uint8
| | +--ro parameter string | | +--ro parameter string
| +--ro aftr-name-option! {aftr-name-op}? | +--ro aftr-name-option! {aftr-name-op}?
| | +--ro tunnel-endpoint-name string | | +--ro tunnel-endpoint-name string
| +--ro kbr-default-name-option! {kbr-default-name-op}? | +--ro kbr-default-name-option! {kbr-default-name-op}?
| | +--ro default-realm-name string | | +--ro default-realm-name string
| +--ro kbr-kdc-option! {kbr-kdc-op}? | +--ro kbr-kdc-option! {kbr-kdc-op}?
| | +--ro kdc-info* [kdc-id] | | +--ro kdc-info* [kdc-id]
| | +--ro kdc-id uint8 | | +--ro kdc-id uint8
| | +--ro priority uint16 | | +--ro priority uint16
| | +--ro weight uint16 | | +--ro weight uint16
skipping to change at page 26, line 33 skipping to change at page 26, line 33
o client-if: A client may have several interfaces, it is more o client-if: A client may have several interfaces, it is more
reasonable to configure and manage parameters on the interface- reasonable to configure and manage parameters on the interface-
level. The list defines a specific client interface and its data. level. The list defines a specific client interface and its data.
Different interfaces are distinguished by the "ifName" key which Different interfaces are distinguished by the "ifName" key which
is a configurable string value. is a configurable string value.
o pd-function: Whether the client can act as a requesting router to o pd-function: Whether the client can act as a requesting router to
request prefixes using prefix delegation ([RFC3633]). request prefixes using prefix delegation ([RFC3633]).
o rapid-commit: '1' indicates a client can initiate a Solicit-Reply o rapid-commit: 'true' indicates a client can initiate a Solicit-
message exchange by adding a Rapid Commit option in Solicit Reply message exchange by adding a Rapid Commit option in Solicit
message. '0' means the client is not allowed to add a Rapid message. 'false' means the client is not allowed to add a Rapid
Commit option to request addresses in a two-message exchange Commit option to request addresses in a two-message exchange
pattern. pattern.
o client-configured-options: Similar to the server, the client also 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 This container include all the potential options that need to be
configured at the client side. The relevant RFCs that define configured at the client side. The relevant RFCs that define
those options include: [RFC3315], [RFC4704], [RFC5970], [RFC6784], those options include: [RFC3315], [RFC4704], [RFC5970], [RFC6784],
[RFC6939]. [RFC6939].
o option-request-option: This container provide a way to configure o option-request-option: This container provide a way to configure
the list of options that the client will request in its ORO the list of options that the client will request in its ORO
option. option.
o client-state: This container includes the state data of the o client-state: This container includes the state data of the
client. client.
o if-other-paras: A client can obtain extra configuration data other o if-other-params: A client can obtain extra configuration data
than address and prefix information through DHCPv6 options. This other than address and prefix information through DHCPv6 options.
container describes such data the client was configured through This container describes such data the client was configured
DHCPv6. The potential configuration data may include DNS server through DHCPv6. The potential configuration data may include DNS
parameters, SIP server parameters and etc. server parameters, SIP server parameters and etc.
o packet-stats: A container records all the packet status o packet-stats: A container records all the packet status
information of a specific interface. information of a specific interface.
Information about notifications: Information about notifications:
o ia-lease-event: raised when the client was allocated a new IA from o ia-lease-event: raised when the client was allocated a new IA from
the server or it renew/rebind/release its current IA. the server or it renew/rebind/release its current IA.
o invalid-ia-detected: raised when the identity association of the o invalid-ia-detected: raised when the identity association of the
skipping to change at page 34, line 12 skipping to change at page 34, line 12
container address-pools { container address-pools {
description description
"A container that describes the DHCPv6 server's "A container that describes the DHCPv6 server's
address pools."; address pools.";
list address-pool { list address-pool {
key pool-id; key pool-id;
description "A DHCPv6 server can be configured with description "A DHCPv6 server can be configured with
several address pools. This list defines such address pools 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 { leaf pool-id {
type uint32; type uint32;
mandatory true; mandatory true;
description "pool id"; description "pool id";
} }
leaf pool-prefix { leaf pool-prefix {
type inet:ipv6-prefix; type inet:ipv6-prefix;
mandatory true; description "Pool prefix. SHOULD be set when the
description "pool prefix"; 'start-address..end-address' range is a prefix.";
} }
leaf start-address { leaf start-address {
type inet:ipv6-address-no-zone; type inet:ipv6-address-no-zone;
mandatory true; mandatory true;
description "start address"; description "start address";
} }
leaf end-address { leaf end-address {
type inet:ipv6-address-no-zone; type inet:ipv6-address-no-zone;
mandatory true; mandatory true;
description "end address"; description "end address";
} }
leaf valid-lifetime { leaf valid-lifetime {
type yang:timeticks; type yang:timeticks;
mandatory true; mandatory true;
description "valid liftime for IA"; description "valid lifetime for IA";
} }
leaf renew-time { leaf renew-time {
type yang:timeticks; type yang:timeticks;
mandatory true; mandatory true;
description "renew time"; description "renew time";
} }
leaf rebind-time { leaf rebind-time {
type yang:timeticks; type yang:timeticks;
mandatory true; mandatory true;
description "rebind time"; description "rebind time";
skipping to change at page 35, line 27 skipping to change at page 35, line 29
type threshold; type threshold;
mandatory true; mandatory true;
description "maximum count of addresses that can description "maximum count of addresses that can
be allocated in this pool. This value may be be allocated in this pool. This value may be
less than count of total addresses."; less than count of total addresses.";
} }
leaf option-set-id { leaf option-set-id {
type leafref { type leafref {
path "/server/server-config/option-sets/option-set/option-set-id"; path "/server/server-config/option-sets/option-set/option-set-id";
} }
mandatory true;
description "The ID field of relevant option-set to be description "The ID field of relevant option-set to be
provisioned to clients of this address-pool."; provisioned to clients of this address-pool.";
} }
} }
} }
container pd-pools { container pd-pools {
description "If a server supports prefix delegation function, this description "If a server supports prefix delegation function, this
container will be used to define the delegating router's prefix container will be used to define the delegating router's prefix
pools."; pools.";
skipping to change at page 36, line 6 skipping to change at page 36, line 6
type uint32; type uint32;
mandatory true; mandatory true;
description "pool id"; description "pool id";
} }
leaf prefix { leaf prefix {
type inet:ipv6-prefix; type inet:ipv6-prefix;
mandatory true; mandatory true;
description "ipv6 prefix"; description "ipv6 prefix";
} }
leaf prefix-length { leaf delegated-length {
type uint8; type uint8;
mandatory true; mandatory true;
description "prefix length"; description "default delegated prefix length";
} }
leaf valid-lifetime { leaf valid-lifetime {
type yang:timeticks; type yang:timeticks;
mandatory true; mandatory true;
description "valid lifetime for IA"; description "valid lifetime for IA";
} }
leaf renew-time { leaf renew-time {
type yang:timeticks; type yang:timeticks;
mandatory true; mandatory true;
description "renew time"; description "renew time";
skipping to change at page 36, line 50 skipping to change at page 36, line 50
} }
leaf max-pd-space-utilization { leaf max-pd-space-utilization {
type threshold; type threshold;
mandatory true; mandatory true;
description "Maximum utilization of pd space in this pool"; description "Maximum utilization of pd space in this pool";
} }
leaf option-set-id { leaf option-set-id {
type leafref { type leafref {
path "/server/server-config/option-sets/option-set/option-set-id"; path "/server/server-config/option-sets/option-set/option-set-id";
} }
mandatory true;
description "The ID field of relevant option-set to be description "The ID field of relevant option-set to be
provisioned to clients of this prefix-pool."; provisioned to clients of this prefix-pool.";
} }
} }
} }
container host-reservations { container host-reservations {
description description
"This container allows the server to make reservations at host level."; "This container allows the server to make reservations at host level.";
list host-reservation { list host-reservation {
key cli-id; key cli-id;
description "This list allows the server to reserve addresses, description "This list allows the server to reserve addresses,
prefixes, hostname and options for different clients."; prefixes, hostname and options for different clients.";
skipping to change at page 38, line 33 skipping to change at page 38, line 32
} }
description "The ID field of relevant option-set to be provisioned description "The ID field of relevant option-set to be provisioned
in the host reservation."; in the host reservation.";
} }
} }
} }
} }
} }
container relay-opaque-paras { container relay-opaque-params {
description "This container contains some opaque values in Relay Agent description "This container contains some opaque values in Relay Agent
options that need to be configured on the server side only for value options that need to be configured on the server side only for value
match. Such Relay Agent options include Interface-Id option, match. Such Relay Agent options include Interface-Id option,
Remote-Id option and Subscriber-Id option."; Remote-Id option and Subscriber-Id option.";
list relays { list relays {
key relay-name; key relay-name;
description "relay agents"; description "relay agents";
leaf relay-name { leaf relay-name {
type string; type string;
mandatory true; mandatory true;
skipping to change at page 42, line 25 skipping to change at page 42, line 24
} }
leaf pd-space-utilization { leaf pd-space-utilization {
type threshold; type threshold;
mandatory true; mandatory true;
description "current PD space utilization"; description "current PD space utilization";
} }
} }
list binding-info { list binding-info {
key cli-id; key cli-id;
description "A list records a binding information for each DHCPv6 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 { leaf cli-id {
type uint32; type uint32;
mandatory true; mandatory true;
description "client id"; description "client id";
} }
container duid { container duid {
description "Reads the DUID"; description "Reads the DUID";
uses dhcpv6-types:duid; uses dhcpv6-types:duid;
} }
list cli-iapd { list cli-iapd {
skipping to change at page 43, line 18 skipping to change at page 43, line 17
} }
} }
} }
container host-reservations { container host-reservations {
description "This container provides host reservations in the host level."; description "This container provides host reservations in the host level.";
list binding-info { list binding-info {
key cli-id; key cli-id;
description description
"A list records a binding information for each DHCPv6 "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."; by host reservations.";
leaf cli-id { leaf cli-id {
type uint32; type uint32;
mandatory true; mandatory true;
description "client id"; description "client id";
} }
container duid { container duid {
description "Reads the DUID"; description "Reads the DUID";
uses dhcpv6-types:duid; uses dhcpv6-types:duid;
} }
skipping to change at page 51, line 28 skipping to change at page 51, line 26
} }
} }
list relay-if { list relay-if {
// if - This should reference an entry in ietf-interfaces // if - This should reference an entry in ietf-interfaces
key if-name; key if-name;
description description
"A relay agent may have several interfaces, we should provide "A relay agent may have several interfaces, we should provide
a way to configure and manage parameters on the interface-level. a way to configure and manage parameters on the interface-level.
A list that describes specific interfaces and their corresponding 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."; a string called 'if-name' as the key of list.";
leaf if-name { leaf if-name {
type if:interface-ref; type if:interface-ref;
mandatory true; mandatory true;
description description
"Interface name"; "Interface name";
} }
leaf interface-id { leaf interface-id {
type string; type string;
description description
skipping to change at page 53, line 6 skipping to change at page 53, line 4
"Whether the next entity is a server"; "Whether the next entity is a server";
} }
} }
} }
} }
container relay-state { container relay-state {
config "false"; config "false";
description description
"State data of relay"; "State data of relay";
list relay-if { list relay-if {
key if-name; key if-name;
description description
"A relay agent may have several interfaces, we should provide "A relay agent may have several interfaces, we should provide
a way to configure and manage parameters on the interface-level. a way to configure and manage parameters on the interface-level.
A list that describes specific interfaces and their corresponding 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."; a string called 'if-name' as the key of list.";
leaf if-name{ leaf if-name{
type string; type string;
mandatory true; mandatory true;
description description
"Interface name"; "Interface name";
} }
list pd-route { list pd-route {
// if - need to look at if/how we model these. If they are // 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) // entries (we're not trying to configure routes here)
key pd-route-id; key pd-route-id;
description "pd route"; description "pd route";
leaf pd-route-id { leaf pd-route-id {
type uint8; type uint8;
mandatory true; mandatory true;
description description
"PD route id"; "PD route id";
} }
leaf requesting-router-id { leaf requesting-router-id {
skipping to change at page 54, line 40 skipping to change at page 54, line 38
description "request received counter"; description "request received counter";
} }
leaf renew-rvd-count { leaf renew-rvd-count {
type uint32; type uint32;
mandatory true; mandatory true;
description "renew received counter"; description "renew received counter";
} }
leaf rebind-rvd-count { leaf rebind-rvd-count {
type uint32; type uint32;
mandatory true; mandatory true;
description "rebind recevied counter"; description "rebind received counter";
} }
leaf decline-rvd-count { leaf decline-rvd-count {
type uint32; type uint32;
mandatory true; mandatory true;
description "decline received counter"; description "decline received counter";
} }
leaf release-rvd-count { leaf release-rvd-count {
type uint32; type uint32;
mandatory true; mandatory true;
description "release received counter"; description "release received counter";
skipping to change at page 56, line 29 skipping to change at page 56, line 28
leaf relay-for-rvd-count { leaf relay-for-rvd-count {
type uint32; type uint32;
mandatory true; mandatory true;
description description
"Relay forward received counter"; "Relay forward received counter";
} }
leaf relay-rep-rvd-count { leaf relay-rep-rvd-count {
type uint32; type uint32;
mandatory true; mandatory true;
description description
"Relay reply recevied counter"; "Relay reply received counter";
} }
leaf packet-to-cli-count { leaf packet-to-cli-count {
type uint32; type uint32;
mandatory true; mandatory true;
description description
"Packet to client counter"; "Packet to client counter";
} }
leaf relay-for-sent-count { leaf relay-for-sent-count {
type uint32; type uint32;
mandatory true; mandatory true;
skipping to change at page 60, line 4 skipping to change at page 59, line 51
leaf pd-function { leaf pd-function {
type boolean; type boolean;
mandatory true; mandatory true;
description "Whether the client can act as a requesting router description "Whether the client can act as a requesting router
to request prefixes using prefix delegation ([RFC3633])."; to request prefixes using prefix delegation ([RFC3633]).";
} }
leaf rapid-commit { leaf rapid-commit {
type boolean; type boolean;
mandatory true; mandatory true;
description "'1' indicates a client can initiate a Solicit-Reply message description "'true' indicates a client can initiate a Solicit-Reply message
exchange by adding a Rapid Commit option in Solicit message. '0' means 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 the client is not allowed to add a Rapid Commit option to request
addresses in a two-message exchange pattern."; addresses in a two-message exchange pattern.";
} }
/* /*
container mo-tab { container mo-tab {
description "The management tab label indicates the operation mode of the description "The management tab label indicates the operation mode of the
DHCPv6 client. DHCPv6 client.
'm'=1 and 'o'=1 indicate the client will use DHCPv6 to obtain all the configuration 'm'=1 and 'o'=1 indicate the client will use DHCPv6 to obtain all the configuration
data. data.
'm'=1 and 'o'=0 are a meaningless combination. 'm'=1 and 'o'=0 are a meaningless combination.
'm'=0 and 'o'=1 indicate the client will use stateless DHCPv6 to obtain configuration 'm'=0 and 'o'=1 indicate the client will use stateless DHCPv6 to obtain configuration
data apart from addresses/prefixes data. data apart from addresses/prefixes data.
'm'=0 and 'o'=0 represent the client will not use DHCPv6 but use SLAAC to 'm'=0 and 'o'=0 represent the client will not use DHCPv6 but use SLAAC to
achieve configuration."; achieve configuration.";
// if - not sure about the intended use here as it seems // 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 // the intention to be whether they PIO options will be
// obeyed as received or overridden? // obeyed as received or overridden?
leaf m-tab { leaf m-tab {
type boolean; type boolean;
mandatory true; mandatory true;
description "m tab"; description "m tab";
} }
leaf o-tab { leaf o-tab {
type boolean; type boolean;
mandatory true; mandatory true;
skipping to change at page 60, line 49 skipping to change at page 60, line 48
container client-configured-options { container client-configured-options {
description "client configured options"; description "client configured options";
uses dhcpv6-options:client-option-definitions; uses dhcpv6-options:client-option-definitions;
} }
} }
} }
container client-state { container client-state {
config "false"; config "false";
description "state tree of client"; description "state tree of client";
container if-other-paras { container if-other-params {
description "A client can obtain extra configuration description "A client can obtain extra configuration
data other than address and prefix information through data other than address and prefix information through
DHCPv6. This container describes such data the client DHCPv6. This container describes such data the client
was configured. The potential configuration data may was configured. The potential configuration data may
include DNS server addresses, SIP server domain names, etc."; include DNS server addresses, SIP server domain names, etc.";
uses dhcpv6-options:server-option-definitions; uses dhcpv6-options:server-option-definitions;
} }
container packet-stats { container packet-stats {
config "false"; config "false";
description "A container records description "A container records
skipping to change at page 62, line 19 skipping to change at page 62, line 19
description "confirm counter"; description "confirm counter";
} }
leaf reply-count { leaf reply-count {
type uint32; type uint32;
mandatory true; mandatory true;
description "reply counter"; description "reply counter";
} }
leaf reconfigure-count { leaf reconfigure-count {
type uint32; type uint32;
mandatory true; mandatory true;
description "recofigure counter"; description "reconfigure counter";
} }
} }
} }
} }
/* /*
* Notifications * Notifications
*/ */
skipping to change at page 68, line 5 skipping to change at page 68, line 5
feature kbr-kdc-op { feature kbr-kdc-op {
description "Support for Kerberos KDC option"; description "Support for Kerberos KDC option";
} }
feature sol-max-rt-op { feature sol-max-rt-op {
description "Support for SOL_MAX_RT option"; description "Support for SOL_MAX_RT option";
} }
feature inf-max-rt-op { feature inf-max-rt-op {
description "Support for INF_MAX_RT option"; description "Support for INF_MAX_RT option";
} }
feature addr-selection-op { feature addr-selection-op {
description "Support for Address Selection opiton"; description "Support for Address Selection option";
} }
feature pcp-server-op { feature pcp-server-op {
description "Support for Port Control Protocol (PCP) description "Support for Port Control Protocol (PCP)
option"; option";
} }
feature s46-rule-op { feature s46-rule-op {
description "Support for S46 Rule option"; description "Support for S46 Rule option";
} }
feature s46-br-op { feature s46-br-op {
description "Support for S46 Border Relay (BR) option"; description "Support for S46 Border Relay (BR) option";
skipping to change at page 69, line 27 skipping to change at page 69, line 27
feature operator-op-ipv6-address { feature operator-op-ipv6-address {
description "Support for Option with IPv6 Addresses"; description "Support for Option with IPv6 Addresses";
} }
feature operator-op-single-flag { feature operator-op-single-flag {
description "Support for Option with Single Flag"; description "Support for Option with Single Flag";
} }
feature operator-op-ipv6-prefix { feature operator-op-ipv6-prefix {
description "Support for Option with IPv6 Prefix"; description "Support for Option with IPv6 Prefix";
} }
feature operator-op-int32 { feature operator-op-int32 {
description "Support for Opion with 32-bit description "Support for Option with 32-bit
Integer Value"; Integer Value";
} }
feature operator-op-int16 { 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 { 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 { feature operator-op-uri {
description "Support for Opion with URI"; description "Support for Option with URI";
} }
feature operator-op-textstring { feature operator-op-textstring {
description "Support for Opion with Text String"; description "Support for Option with Text String";
} }
feature operator-op-var-data { 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 { feature operator-op-dns-wire {
description "Support for Opion with DNS Wire description "Support for Option with DNS Wire
Format Domain Name List"; Format Domain Name List";
} }
/* /*
* Groupings * Groupings
*/ */
grouping server-option-definitions { grouping server-option-definitions {
description "Contains definitions for options configured on the description "Contains definitions for options configured on the
DHCPv6 server which will be supplied to clients."; DHCPv6 server which will be supplied to clients.";
skipping to change at page 75, line 27 skipping to change at page 75, line 27
type string; type string;
mandatory true; mandatory true;
description "Reference to the TZ Database"; description "Reference to the TZ Database";
} }
} }
container ntp-server-option { container ntp-server-option {
//This option looks like it needs work to correctly model the //This option looks like it needs work to correctly model the
//option as defined in the RFC. //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; if-feature ntp-server-op;
presence "Enable this option"; presence "Enable this option";
description "OPTION_NTP_SERVER (56) NTP Server Option for DHCPv6"; description "OPTION_NTP_SERVER (56) NTP Server Option for DHCPv6";
reference "RFC5908: Network Time Protocol (NTP) Server Option for reference "RFC5908: Network Time Protocol (NTP) Server Option for
DHCPv6"; DHCPv6";
list ntp-server { list ntp-server {
key ntp-serv-id; key ntp-serv-id;
description "ntp server info"; description "ntp server info";
leaf ntp-serv-id { leaf ntp-serv-id {
skipping to change at page 76, line 51 skipping to change at page 76, line 51
type string; type string;
mandatory true; mandatory true;
description "url for boot file"; description "url for boot file";
} }
} }
} }
container boot-file-param-option { container boot-file-param-option {
if-feature boot-file-param-op; if-feature boot-file-param-op;
presence "Enable this option"; 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"; reference "RFC5970: DHCPv6 Options for Network Boot";
list boot-file-paras { list boot-file-params {
key para-id; key param-id;
description "boot file parameters"; description "boot file parameters";
leaf para-id { leaf param-id {
type uint8; type uint8;
mandatory true; mandatory true;
description "parameter id"; description "parameter id";
} }
leaf parameter { leaf parameter {
type string; type string;
mandatory true; mandatory true;
description "parameter value"; description "parameter value";
} }
} }
skipping to change at page 81, line 43 skipping to change at page 81, line 43
leaf prefix6-len { leaf prefix6-len {
type uint8; type uint8;
mandatory true; mandatory true;
description "ipv6 prefix length"; description "ipv6 prefix length";
} }
leaf ipv6-prefix { leaf ipv6-prefix {
type inet:ipv6-prefix; type inet:ipv6-prefix;
mandatory true; mandatory true;
description "ipv6 prefix"; description "ipv6 prefix";
} }
uses dhcpv6-types:portset-para; uses dhcpv6-types:portset-param;
} }
} }
container s46-br-option { container s46-br-option {
if-feature s46-br-op; if-feature s46-br-op;
presence "Enable this option"; presence "Enable this option";
description "OPTION_S46_BR (90) S46 BR Option"; description "OPTION_S46_BR (90) S46 BR Option";
reference "RFC7598: DHCPv6 Options for Configuration of reference "RFC7598: DHCPv6 Options for Configuration of
Softwire Address and Port-Mapped Clients"; Softwire Address and Port-Mapped Clients";
list br { list br {
skipping to change at page 83, line 31 skipping to change at page 83, line 31
type uint8; type uint8;
mandatory true; mandatory true;
description "bind ipv6 prefix description "bind ipv6 prefix
length"; length";
} }
leaf bind-ipv6-prefix { leaf bind-ipv6-prefix {
type inet:ipv6-address; type inet:ipv6-address;
mandatory true; mandatory true;
description "bind ipv6 prefix"; description "bind ipv6 prefix";
} }
uses dhcpv6-types:portset-para; uses dhcpv6-types:portset-param;
} }
} }
} }
//if - NB - The list of options needs to be updated. //if - NB - The list of options needs to be updated.
grouping relay-supplied-option-definitions { grouping relay-supplied-option-definitions {
// if - The structure here needs to be checked and probably reworked. // if - The structure here needs to be checked and probably reworked.
description "OPTION_RSOO (66) Relay-Supplied Options option"; description "OPTION_RSOO (66) Relay-Supplied Options option";
reference "RFC6422: Relay-Supplied DHCP Options"; reference "RFC6422: Relay-Supplied DHCP Options";
skipping to change at page 93, line 30 skipping to change at page 93, line 30
} }
} }
container operator-option-var-data { container operator-option-var-data {
if-feature operator-op-var-data; if-feature operator-op-var-data;
presence "Enable this option"; presence "Enable this option";
description "operator variable length data option"; description "operator variable length data option";
reference "RFC7227: Guidelines for Creating New DHCPv6 Options"; reference "RFC7227: Guidelines for Creating New DHCPv6 Options";
list int32val { list int32val {
key var-data-id; key var-data-id;
description "operator ivariable length data info"; description "operator invariable length data info";
leaf var-data-id { leaf var-data-id {
type uint8; type uint8;
mandatory true; mandatory true;
description "operator variable length id"; description "operator variable length id";
} }
leaf var-data { leaf var-data {
type binary; type binary;
mandatory true; mandatory true;
description "operator variable length value"; description "operator variable length value";
} }
skipping to change at page 95, line 39 skipping to change at page 95, line 39
} }
} }
grouping duid { grouping duid {
description description
"Each server and client has only one DUID (DHCP Unique Identifier). "Each server and client has only one DUID (DHCP Unique Identifier).
The DUID here identifies a unique DHCPv6 server for clients. DUID The DUID here identifies a unique DHCPv6 server for clients. DUID
consists of a two-octet type field and an arbitrary length (no more consists of a two-octet type field and an arbitrary length (no more
than 128 bytes) content field. Currently there are four defined types than 128 bytes) content field. Currently there are four defined types
of DUIDs in RFC3315 and RFC6355 - DUID-LLT, DUID-EN, DUID-LL and 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"; reference "RFC3315: Section 9 and RFC6355: Section 4";
leaf type-code { leaf type-code {
type uint16; type uint16;
default 65535; default 65535;
description "Type code of this DUID"; description "Type code of this DUID";
} }
choice duid-type { choice duid-type {
default duid-unknown; default duid-unknown;
description "Selects the format for the DUID."; description "Selects the format for the DUID.";
case duid-llt { case duid-llt {
skipping to change at page 96, line 32 skipping to change at page 96, line 32
description "DUID Assigned by Vendor Based on Enterprise Number description "DUID Assigned by Vendor Based on Enterprise Number
(Type 2 - DUID-EN)"; (Type 2 - DUID-EN)";
reference "RFC3315 Section 9.3"; reference "RFC3315 Section 9.3";
leaf duid-en-enterprise-number { leaf duid-en-enterprise-number {
type uint32; type uint32;
description "Vendor's registered Private Enterprise Number as description "Vendor's registered Private Enterprise Number as
maintained by IANA"; maintained by IANA";
} }
leaf duid-en-identifier { leaf duid-en-identifier {
type string; type string;
description "Indentifier, unique to the device that is description "Identifier, unique to the device that is
using it"; using it";
} }
} }
case duid-ll { case duid-ll {
description "DUID Based on Link-layer Address (Type 3 - DUID-LL)"; description "DUID Based on Link-layer Address (Type 3 - DUID-LL)";
reference "RFC3315 Section 9.4"; reference "RFC3315 Section 9.4";
leaf duid-ll-hardware-type { leaf duid-ll-hardware-type {
type uint16; type uint16;
description "Hardware type as assigned by IANA (RFC826)."; description "Hardware type as assigned by IANA (RFC826).";
} }
leaf duid-ll-link-layer-addr { leaf duid-ll-link-layer-addr {
type yang:mac-address; type yang:mac-address;
description "Link-layer address as described in RFC2464"; description "Link-layer address as described in RFC2464";
} }
} }
case duid-uuid { case duid-uuid {
description "DUID Based on Universally Unique Identifier description "DUID Based on Universally Unique Identifier
(Type 4 - DUID-UUID)"; (Type 4 - DUID-UUID)";
reference "RFC6335 Defination of the UUID-Based Unique Identifier"; reference "RFC6335 Definition of the UUID-Based Unique Identifier";
leaf uuid { leaf uuid {
type yang:uuid; type yang:uuid;
description "A Universally Unique IDentifier in the string description "A Universally Unique IDentifier in the string
representation defined in RFC 4122. The canonical representation defined in RFC 4122. The canonical
representation uses lowercase characters"; representation uses lowercase characters";
} }
} }
case duid-unknown { case duid-unknown {
description "DUID based on free raw bytes"; description "DUID based on free raw bytes";
leaf data { leaf data {
type binary; type binary;
description "The bits to be used as the identifier"; description "The bits to be used as the identifier";
} }
} }
} }
} }
grouping portset-para { grouping portset-param {
description "portset parameters"; description "portset parameters";
container port-parameter { container port-parameter {
description "port parameter"; description "port parameter";
leaf offset { leaf offset {
type uint8; type uint8;
mandatory true; mandatory true;
description "offset in a port set"; description "offset in a port set";
} }
leaf psid-len { leaf psid-len {
type uint8; type uint8;
skipping to change at page 99, line 18 skipping to change at page 99, line 18
5. IANA Considerations (TBD) 5. IANA Considerations (TBD)
This document registers the following YANG modules in the "YANG This document registers the following YANG modules in the "YANG
Module Names" registry [RFC6020]. Module Names" registry [RFC6020].
name: ietf-dhcpv6 name: ietf-dhcpv6
namespace: urn:ietf:params:xml:ns:yang:ietf-dhcpv6 namespace: urn:ietf:params:xml:ns:yang:ietf-dhcpv6
prefix: dhcpv6 prefix: dhcpv6
reference: TBD reference: TBD
6. Acknowledgements 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, Bernie Volz and Bing Liu for their Tomek Mrugalski, Marcin Siodelski, Bernie Volz and Bing Liu for their
valuable 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
 End of changes. 69 change blocks. 
84 lines changed or deleted 84 lines changed or added

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