draft-ietf-dhc-dhcpv6-yang-04.txt | draft-ietf-dhc-dhcpv6-yang-05.txt | |||
---|---|---|---|---|
DHC Working Group Y. Cui | DHC Working Group Y. Cui | |||
Internet-Draft H. Wang | Internet-Draft L. Sun | |||
Intended status: Standards Track L. Sun | Intended status: Standards Track Tsinghua University | |||
Expires: May 1, 2018 Tsinghua University | Expires: June 26, 2018 I. Farrer | |||
I. Farrer | ||||
S. Zechlin | S. Zechlin | |||
Deutsche Telekom AG | Deutsche Telekom AG | |||
October 28, 2017 | Z. He | |||
Tsinghua University | ||||
December 23, 2017 | ||||
YANG Data Model for DHCPv6 Configuration | YANG Data Model for DHCPv6 Configuration | |||
draft-ietf-dhc-dhcpv6-yang-04 | draft-ietf-dhc-dhcpv6-yang-05 | |||
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 41 ¶ | 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 May 1, 2018. | This Internet-Draft will expire on June 26, 2018. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 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 | |||
skipping to change at page 2, line 18 ¶ | skipping to change at page 2, line 21 ¶ | |||
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 | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. DHCPv6 Tree Diagram . . . . . . . . . . . . . . . . . . . . . 3 | 2. DHCPv6 Tree Diagram . . . . . . . . . . . . . . . . . . . . . 3 | |||
2.1. DHCPv6 Server Tree Diagrams . . . . . . . . . . . . . . . 3 | 2.1. DHCPv6 Server Tree Diagrams . . . . . . . . . . . . . . . 3 | |||
2.2. DHCPv6 Relay Tree Diagrams . . . . . . . . . . . . . . . 14 | 2.2. DHCPv6 Relay Tree Diagrams . . . . . . . . . . . . . . . 16 | |||
2.3. DHCPv6 Client Tree Diagrams . . . . . . . . . . . . . . . 17 | 2.3. DHCPv6 Client Tree Diagrams . . . . . . . . . . . . . . . 20 | |||
2.4. Notifications Mechanism for DHCPv6 . . . . . . . . . . . 22 | 3. DHCPv6 YANG Model . . . . . . . . . . . . . . . . . . . . . . 27 | |||
3. DHCPv6 YANG Model . . . . . . . . . . . . . . . . . . . . . . 24 | 3.1. DHCPv6 Server YANG Model . . . . . . . . . . . . . . . . 27 | |||
4. Security Considerations (TBD) . . . . . . . . . . . . . . . . 91 | 3.2. DHCPv6 Relay YANG Model . . . . . . . . . . . . . . . . . 48 | |||
5. IANA Considerations (TBD) . . . . . . . . . . . . . . . . . . 91 | 3.3. DHCPv6 Client YANG Model . . . . . . . . . . . . . . . . 58 | |||
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 91 | 3.4. DHCPv6 Options YANG Model . . . . . . . . . . . . . . . . 67 | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 91 | 4. Security Considerations (TBD) . . . . . . . . . . . . . . . . 98 | |||
7.1. Normative References . . . . . . . . . . . . . . . . . . 91 | 5. IANA Considerations (TBD) . . . . . . . . . . . . . . . . . . 98 | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 92 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 98 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 94 | 7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 98 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 98 | ||||
8.1. Normative References . . . . . . . . . . . . . . . . . . 98 | ||||
8.2. Informative References . . . . . . . . . . . . . . . . . 99 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 101 | ||||
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. | |||
skipping to change at page 3, line 27 ¶ | skipping to change at page 3, line 33 ¶ | |||
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 d cument. 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 | module: ietf-dhcpv6-server | |||
+--rw server! | +--rw server! | |||
+--rw serv-attributes | +--rw server-config | |||
| +--rw name? string | | +--rw serv-attributes | |||
| +--rw duid | | | +--rw name? string | |||
| | +--rw (duid-type)? | | | +--rw duid | |||
| | +--:(duid-llt) | | | | +--rw type-code? uint16 | |||
| | | +--rw duid-llt-hardware-type? uint16 | | | | +--rw (duid-type)? | |||
| | | +--rw duid-llt-time? yang:timeticks | | | | +--:(duid-llt) | |||
| | | +--rw duid-llt-link-layer-addr? yang:mac-address | | | | | +--rw duid-llt-hardware-type? uint16 | |||
| | +--:(duid-en) | | | | | +--rw duid-llt-time? yang:timeticks | |||
| | | +--rw duid-en-enterprise-number? uint32 | | | | | +--rw duid-llt-link-layer-addr? yang:mac-address | |||
| | | +--rw duid-en-identifier? string | | | | +--:(duid-en) | |||
| | +--:(duid-ll) | | | | | +--rw duid-en-enterprise-number? uint32 | |||
| | +--rw duid-ll-hardware-type? uint16 | | | | | +--rw duid-en-identifier? string | |||
| | +--rw duid-ll-time? yang:timeticks | | | | +--:(duid-ll) | |||
| +--rw ipv6-address* inet:ipv6-address | | | | | +--rw duid-ll-hardware-type? uint16 | |||
| +--rw description? string | | | | | +--rw duid-ll-link-layer-addr? yang:mac-address | |||
| +--rw pd-function boolean | | | | +--:(duid-uuid) | |||
| +--rw stateless-service boolean | | | | | +--rw uuid? yang:uuid | |||
| +--rw rapid-commit boolean | | | | +--:(duid-invalid) | |||
| +--rw interfaces-config* string | | | | +--rw data? binary | |||
| +--rw vendor-info | | | +--rw ipv6-address* inet:ipv6-address | |||
| +--rw ent-num uint32 | | | +--rw description? string | |||
| +--rw data* string | | | +--rw pd-function boolean | |||
+--rw option-sets | | | +--rw stateless-service boolean | |||
| +--rw option-set* [option-set-id] | | | +--rw rapid-commit boolean | |||
| +--rw option-set-id uint8 | | | +--rw interfaces-config* string | |||
| +--rw new-or-standard-option* [option-code] | | | +--rw vendor-info | |||
| | +--rw option-code uint16 | | | +--rw ent-num uint32 | |||
| | +--rw option-name string | | | +--rw data* string | |||
| | +--rw option-description string | | +--rw option-sets | |||
| | +--rw option-reference? string | | | +--rw option-set* [id] | |||
| | +--rw option-value string | | | +--rw id uint32 | |||
| +--rw user-class-value? string | | | +--rw server-unicast-option! {server-unicast-op}? | |||
| +--rw enterprise-number? uint32 | | | | +--rw server-address? inet:ipv6-address | |||
| +--rw store-client-link-layer? boolean | | | +--rw sip-server-domain-name-list-option! | |||
| +--rw preference-option | {sip-server-domain-name-list-op}? | |||
| | +--rw enable boolean | | | | +--rw sip-serv-domain-name string | |||
| | +--rw preference-value uint8 | | | +--rw sip-server-address-list-option! {sip-server-address-list-op}? | |||
| +--rw sip-server-option | | | | +--rw sip-server* [sip-serv-id] | |||
| | +--rw enable boolean | | | | +--rw sip-serv-id uint8 | |||
| | +--rw sip-server* [sip-serv-id] | | | | +--rw sip-serv-addr inet:ipv6-address | |||
| | +--rw sip-serv-id uint8 | | | +--rw dns-config-option! {dns-config-op}? | |||
| | +--rw sip-serv-domain-name string | | | | +--rw dns-server* [dns-serv-id] | |||
| | +--rw sip-serv-addr inet:ipv6-address | | | | +--rw dns-serv-id uint8 | |||
| +--rw dns-config-option | | | | +--rw dns-serv-addr inet:ipv6-address | |||
| | +--rw enable boolean | | | +--rw domain-searchlist-option! {domain-searchlist-op}? | |||
| | +--rw dns-server* [dns-serv-id] | | | | +--rw domain-searchlist* [domain-searchlist-id] | |||
| | +--rw dns-serv-id uint8 | | | | +--rw domain-searchlist-id uint8 | |||
| | +--rw dns-serv-addr inet:ipv6-address | | | | +--rw domain-search-list-entry string | |||
| +--rw domain-searchlist-option | | | +--rw nis-config-option! {nis-config-op}? | |||
| | +--rw enable boolean | | | | +--rw nis-server* [nis-serv-id] | |||
| | +--rw domain-searchlist* [domain-searchlist-id] | | | | +--rw nis-serv-id uint8 | |||
| | +--rw domain-searchlist-id uint8 | | | | +--rw nis-serv-addr inet:ipv6-address | |||
| | +--rw domain-search-list-entry string | | | +--rw nis-plus-config-option! {nis-plus-config-op}? | |||
| +--rw nis-config-option | | | | +--rw nis-plus-server* [nis-plus-serv-id] | |||
| | +--rw enable boolean | | | | +--rw nis-plus-serv-id uint8 | |||
| | +--rw nis-server* [nis-serv-id] | | | | +--rw nis-plus-serv-addr inet:ipv6-address | |||
| | +--rw nis-serv-id uint8 | | | +--rw nis-domain-name-option! {nis-domain-name-op}? | |||
| | +--rw nis-serv-addr inet:ipv6-address | | | | +--rw nis-domain-name? string | |||
| +--rw nis-plus-config-option | | | +--rw nis-plus-domain-name-option!{nis-plus-domain-name-op}? | |||
| | +--rw enable boolean | | | | +--rw nis-plus-domain-name? string | |||
| | +--rw nis-plus-server* [nis-plus-serv-id] | | | +--rw sntp-server-option! {sntp-server-op}? | |||
| | +--rw nis-plus-serv-id uint8 | | | | +--rw sntp-server* [sntp-serv-id] | |||
| | +--rw nis-plus-serv-addr inet:ipv6-address | | | | +--rw sntp-serv-id uint8 | |||
| +--rw sntp-server-option | | | | +--rw sntp-serv-addr inet:ipv6-address | |||
| | +--rw enable boolean | | | +--rw info-refresh-time-option! {info-refresh-time-op}? | |||
| | +--rw sntp-server* [sntp-serv-id] | | | | +--rw info-refresh-time yang:timeticks | |||
| | +--rw sntp-serv-id uint8 | | | +--rw client-fqdn-option! {client-fqdn-op}? | |||
| | +--rw sntp-serv-addr inet:ipv6-address | | | | +--rw server-initiate-update boolean | |||
| +--rw info-refresh-time-option | | | | +--rw client-initiate-update boolean | |||
| | +--rw enable boolean | | | | +--rw modify-name-from-cli boolean | |||
| | +--rw info-refresh-time yang:timeticks | | | +--rw posix-timezone-option! {posix-timezone-op}? | |||
| +--rw cli-fqdn-option | | | | +--rw tz-posix string | |||
| | +--rw enable boolean | | | +--rw tzdb-timezone-option! {tzdb-timezone-op}? | |||
| | +--rw server-initiate-update boolean | | | | +--rw tz-database string | |||
| | +--rw client-initiate-update boolean | | | +--rw ntp-server-option! {ntp-server-op}? | |||
| | +--rw modify-name-from-cli boolean | | | | +--rw ntp-server* [ntp-serv-id] | |||
| +--rw posix-timezone-option | | | | +--rw ntp-serv-id uint8 | |||
| | +--rw enable boolean | | | | +--rw (ntp-time-source-suboption)? | |||
| | +--rw tz-posix string | | | | +--:(server-address) | |||
| +--rw posix-timezone-db-option | | | | | +--rw ntp-serv-addr-suboption* inet:ipv6-address | |||
| | +--rw enable boolean | | | | +--:(server-multicast-address) | |||
| | +--rw tz-database string | | | | | +--rw ntp-serv-mul-addr-suboption* inet:ipv6-address | |||
| +--rw ntp-server-option | | | | +--:(server-fqdn) | |||
| | +--rw enable boolean | | | | +--rw ntp-serv-fqdn-suboption* string | |||
| | +--rw ntp-server* [ntp-serv-id] | | | +--rw boot-file-url-option! {boot-file-url-op}? | |||
| | +--rw ntp-serv-id uint8 | | | | +--rw boot-file* [boot-file-id] | |||
| | +--rw ntp-serv-addr-suboption inet:ipv6-address | | | | +--rw boot-file-id uint8 | |||
| | +--rw ntp-serv-mul-addr-suboption inet:ipv6-address | | | | +--rw suitable-arch-type* uint16 | |||
| | +--rw ntp-serv-fqdn-suboption string | | | | +--rw suitable-net-if* uint32 | |||
| +--rw network-boot-option | | | | +--rw boot-file-url string | |||
| | +--rw enable boolean | | | +--rw boot-file-param-option! {boot-file-param-op}? | |||
| | +--rw boot-file* [boot-file-id] | | | | +--rw boot-file-paras* [para-id] | |||
| | +--rw boot-file-id uint8 | | | | +--rw para-id uint8 | |||
| | +--rw suitable-arch-type* uint16 | | | | +--rw parameter string | |||
| | +--rw suitable-net-if* uint32 | | | +--rw aftr-name-option! {aftr-name-op}? | |||
| | +--rw boot-file-url string | | | | +--rw tunnel-endpoint-name string | |||
| | +--rw boot-file-paras* [para-id] | | | +--rw kbr-default-name-option! {kbr-default-name-op}? | |||
| | +--rw para-id uint8 | | | | +--rw default-realm-name string | |||
| | +--rw parameter string | | | +--rw kbr-kdc-option! {kbr-kdc-op}? | |||
| +--rw aftr-name-option | | | | +--rw kdc-info* [kdc-id] | |||
| | +--rw enable boolean | | | | +--rw kdc-id uint8 | |||
| | +--rw tunnel-endpoint-name string | | | | +--rw priority uint16 | |||
| +--rw kerberos-option | | | | +--rw weight uint16 | |||
| | +--rw enable boolean | | | | +--rw transport-type uint8 | |||
| | +--rw default-realm-name string | | | | +--rw port-number uint16 | |||
| | +--rw kdc-info* [kdc-id] | | | | +--rw kdc-ipv6-addr inet:ipv6-address | |||
| | +--rw kdc-id uint8 | | | | +--rw realm-name string | |||
| | +--rw priority uint16 | | | +--rw sol-max-rt-option! {sol-max-rt-op}? | |||
| | +--rw weight uint16 | | | | +--rw sol-max-rt-value yang:timeticks | |||
| | +--rw transport-type uint8 | | | +--rw inf-max-rt-option! {inf-max-rt-op}? | |||
| | +--rw port-number uint16 | | | | +--rw inf-max-rt-value yang:timeticks | |||
| | +--rw kdc-ipv6-addr inet:ipv6-address | | | +--rw addr-selection-option! {addr-selection-op}? | |||
| | +--rw realm-name string | | | | +--rw a-bit-set boolean | |||
| +--rw addr-selection-option | | | | +--rw p-bit-set boolean | |||
| | +--rw enable boolean | | | | +--rw policy-table* [policy-id] | |||
| | +--rw a-bit-set boolean | | | | +--rw policy-id uint8 | |||
| | +--rw p-bit-set boolean | | | | +--rw label uint8 | |||
| | +--rw policy-table* [policy-id] | | | | +--rw precedence uint8 | |||
| | +--rw policy-id uint8 | | | | +--rw prefix-len uint8 | |||
| | +--rw label uint8 | | | | +--rw prefix inet:ipv6-prefix | |||
| | +--rw precedence uint8 | | | +--rw pcp-server-option! {pcp-server-op}? | |||
| | +--rw prefix-len uint8 | | | | +--rw pcp-server* [pcp-serv-id] | |||
| | +--rw prefix inet:ipv6-prefix | | | | +--rw pcp-serv-id uint8 | |||
| +--rw sol-max-rt-option | | | | +--rw pcp-serv-addr inet:ipv6-address | |||
| | +--rw enable boolean | | | +--rw s46-rule-option! {s46-rule-op}? | |||
| | +--rw sol-max-rt-value yang:timeticks | | | | +--rw s46-rule* [rule-id] | |||
| +--rw inf-max-rt-option | | | | +--rw rule-id uint8 | |||
| | +--rw enable boolean | | | | +--rw rule-type enumeration | |||
| | +--rw inf-max-rt-value yang:timeticks | | | | +--rw prefix4-len uint8 | |||
| +--rw pcp-server-option | | | | +--rw ipv4-prefix inet:ipv4-prefix | |||
| | +--rw enable boolean | | | | +--rw prefix6-len uint8 | |||
| | +--rw pcp-server* [pcp-serv-id] | | | | +--rw ipv6-prefix inet:ipv6-prefix | |||
| | +--rw pcp-serv-id uint8 | | | | +--rw port-parameter | |||
| | +--rw pcp-serv-addr inet:ipv6-address | | | | +--rw offset uint8 | |||
| +--rw s46-rule-option | | | | +--rw psid-len uint8 | |||
| | +--rw enable boolean | | | | +--rw psid uint16 | |||
| | +--rw s46-rule* [rule-id] | | | +--rw s46-br-option! {s46-br-op}? | |||
| | +--rw rule-id uint8 | | | | +--rw br* [br-id] | |||
| | +--rw rule-type enumeration | | | | +--rw br-id uint8 | |||
| | +--rw prefix4-len uint8 | | | | +--rw br-ipv6-addr inet:ipv6-address | |||
| | +--rw ipv4-prefix inet:ipv4-prefix | | | +--rw s46-dmr-option! {s46-dmr-op}? | |||
| | +--rw prefix6-len uint8 | | | | +--rw dmr* [dmr-id] | |||
| | +--rw ipv6-prefix inet:ipv6-prefix | | | | +--rw dmr-id uint8 | |||
| | +--rw port-parameter | | | | +--rw dmr-prefix-len uint8 | |||
| | +--rw offset uint8 | | | | +--rw dmr-ipv6-prefix inet:ipv6-prefix | |||
| | +--rw psid-len uint8 | | | +--rw s46-v4-v6-binding-option! {s46-v4-v6-binding-op}? | |||
| | +--rw psid uint16 | | | | +--rw ce* [ce-id] | |||
| +--rw s46-br-option | | | | +--rw ce-id uint8 | |||
| | +--rw enable boolean | | | | +--rw ipv4-addr inet:ipv4-address | |||
| | +--rw br* [br-id] | | | | +--rw bind-prefix6-len uint8 | |||
| | +--rw br-id uint8 | | | | +--rw bind-ipv6-prefix inet:ipv6-prefix | |||
| | +--rw br-ipv6-addr inet:ipv6-address | | | | +--rw port-parameter | |||
| +--rw operator-option-ipv6-address | | | | +--rw offset uint8 | |||
| | +--rw enable boolean | | | | +--rw psid-len uint8 | |||
| | +--rw operator-ipv6-addr* [operator-ipv6-addr-id] | | | | +--rw psid uint16 | |||
| | +--rw operator-ipv6-addr-id uint8 | | | +--rw operator-option-ipv6-address!{operator-op-ipv6-address}? | |||
| | +--rw operator-ipv6-addr inet:ipv6-address | | | | +--rw operator-ipv6-addr* [operator-ipv6-addr-id] | |||
| +--rw operator-option-single-flag | | | | +--rw operator-ipv6-addr-id uint8 | |||
| | +--rw enable boolean | | | | +--rw operator-ipv6-addr inet:ipv6-address | |||
| | +--rw flag* [flag-id] | | | +--rw operator-option-single-flag!{operator-op-single-flag}? | |||
| | +--rw flag-id uint8 | | | | +--rw flag* [flag-id] | |||
| | +--rw flag-value boolean | | | | +--rw flag-id uint8 | |||
| +--rw operator-option-ipv6-prefix | | | | +--rw flag-value boolean | |||
| | +--rw enable boolean | | | +--rw operator-option-ipv6-prefix!{operator-op-ipv6-prefix}? | |||
| | +--rw operator-ipv6-prefix* [operator-ipv6-prefix-id] | | | | +--rw operator-ipv6-prefix* [operator-ipv6-prefix-id] | |||
| | +--rw operator-ipv6-prefix-id uint8 | | | | +--rw operator-ipv6-prefix-id uint8 | |||
| | +--rw operator-ipv6-prefix6-len uint8 | | | | +--rw operator-ipv6-prefix6-len uint8 | |||
| | +--rw operator-ipv6-prefix inet:ipv6-prefix | | | | +--rw operator-ipv6-prefix inet:ipv6-prefix | |||
| +--rw operator-option-int32 | | | +--rw operator-option-int32! {operator-op-int32}? | |||
| | +--rw enable boolean | | | | +--rw int32val* [int32val-id] | |||
| | +--rw int32val* [int32val-id] | | | | +--rw int32val-id uint8 | |||
| | +--rw int32val-id uint8 | | | | +--rw int32val uint32 | |||
| | +--rw int32val uint32 | | | +--rw operator-option-int16! {operator-op-int16}? | |||
| +--rw operator-option-int16 | | | | +--rw int16val* [int16val-id] | |||
| | +--rw enable boolean | | | | +--rw int16val-id uint8 | |||
| | +--rw int16val* [int16val-id] | | | | +--rw int16val uint16 | |||
| | +--rw int16val-id uint8 | | | +--rw operator-option-int8! {operator-op-int8}? | |||
| | +--rw int16val uint16 | | | | +--rw int8val* [int8val-id] | |||
| +--rw operator-option-int8 | | | | +--rw int8val-id uint8 | |||
| | +--rw enable boolean | | | | +--rw int8val uint8 | |||
| | +--rw int8val* [int8val-id] | | | +--rw operator-option-uri! {operator-op-uri}? | |||
| | +--rw int8val-id uint8 | | | | +--rw uri* [uri-id] | |||
| | +--rw int8val uint8 | | | | +--rw uri-id uint8 | |||
| +--rw operator-option-uri | | | | +--rw uri string | |||
| | +--rw enable boolean | | | +--rw operator-option-textstring! {operator-op-textstring}? | |||
| | +--rw uri* [uri-id] | | | | +--rw textstring* [textstring-id] | |||
| | +--rw uri-id uint8 | | | | +--rw textstring-id uint8 | |||
| | +--rw uri string | | | | +--rw textstring string | |||
| +--rw operator-option-textstring | | | +--rw operator-option-var-data! {operator-op-var-data}? | |||
| | +--rw enable boolean | | | | +--rw int32val* [var-data-id] | |||
| | +--rw textstring* [textstring-id] | | | | +--rw var-data-id uint8 | |||
| | +--rw textstring-id uint8 | | | | +--rw var-data binary | |||
| | +--rw textstring string | | | +--rw operator-option-dns-wire! {operator-op-dns-wire}? | |||
| +--rw operator-option-var-data | | | +--rw operator-option-dns-wire* [operator-option-dns-wire-id] | |||
| | +--rw enable boolean | | | +--rw operator-option-dns-wire-id uint8 | |||
| | +--rw int32val* [var-data-id] | | | +--rw operator-option-dns-wire binary | |||
| | +--rw var-data-id uint8 | | +--rw network-ranges | |||
| | +--rw var-data binary | | | +--rw network-range* [network-range-id] | |||
| +--rw operator-option-dns-wire | | | +--rw network-range-id uint32 | |||
| | +--rw enable boolean | | | +--rw network-description string | |||
| | +--rw operator-option-dns-wire* | | | +--rw network-prefix inet:ipv6-prefix | |||
| | [operator-option-dns-wire-id] | | | +--rw inherit-option-set boolean | |||
| | +--rw operator-option-dns-wire-id uint8 | | | +--rw option-set-id? | |||
| | +--rw operator-option-dns-wire binary | -> /server/server-config/option-sets/option-set/id | |||
| +--rw s46-dmr-option | | | +--rw reserved-addresses | |||
| | +--rw enable boolean | | | | +--rw static-binding* [cli-id] | |||
| | +--rw dmr* [dmr-id] | | | | | +--rw cli-id uint32 | |||
| | +--rw dmr-id uint8 | | | | | +--rw duid | |||
| | +--rw dmr-prefix-len uint8 | | | | | | +--rw type-code? uint16 | |||
| | +--rw dmr-ipv6-prefix inet:ipv6-prefix | | | | | | +--rw (duid-type)? | |||
| +--rw s46-v4-v6-binding-option | | | | | | +--:(duid-llt) | |||
| +--rw enable boolean | | | | | | | +--rw duid-llt-hardware-type? uint16 | |||
| +--rw ce* [ce-id] | | | | | | | +--rw duid-llt-time? yang:timeticks | |||
| +--rw ce-id uint8 | | | | | | | +--rw duid-llt-link-layer-addr? yang:mac-address | |||
| +--rw ipv4-addr inet:ipv4-address | | | | | | +--:(duid-en) | |||
| +--rw bind-prefix6-len uint8 | | | | | | | +--rw duid-en-enterprise-number? uint32 | |||
| +--rw bind-ipv6-prefix inet:ipv6-prefix | | | | | | | +--rw duid-en-identifier? string | |||
| +--rw port-parameter | | | | | | +--:(duid-ll) | |||
| +--rw offset uint8 | | | | | | | +--rw duid-ll-hardware-type? uint16 | |||
| +--rw psid-len uint8 | | | | | | | +--rw duid-ll-link-layer-addr? yang:mac-address | |||
| +--rw psid uint16 | | | | | | +--:(duid-uuid) | |||
+--rw network-ranges | | | | | | | +--rw uuid? yang:uuid | |||
| +--rw option-set-id? uint8 | | | | | | +--:(duid-invalid) | |||
| +--rw network-range* [network-range-id] | | | | | | +--rw data? binary | |||
| +--rw network-range-id uint8 | | | | | +--rw reserv-addr* inet:ipv6-address | |||
| +--rw network-description string | | | | +--rw other-reserv-addr* inet:ipv6-address | |||
| +--rw network-prefix inet:ipv6-prefix | | | +--rw reserved-prefixes | |||
| +--rw inherit-option-set boolean | | | | +--rw static-binding* [cli-id] | |||
| +--rw option-set-id uint8 | | | | | +--rw cli-id uint32 | |||
| +--rw reserved-addresses | | | | | +--rw duid | |||
| | +--rw static-binding* [cli-id] | | | | | | +--rw type-code? uint16 | |||
| | | +--rw cli-id uint32 | | | | | | +--rw (duid-type)? | |||
| | | +--rw duid | | | | | | +--:(duid-llt) | |||
| | | | +--rw (duid-type)? | | | | | | | +--rw duid-llt-hardware-type? uint16 | |||
| | | | +--:(duid-llt) | | | | | | | +--rw duid-llt-time? yang:timeticks | |||
| | | | | +--rw duid-llt-hardware-type? uint16 | | | | | | | +--rw duid-llt-link-layer-addr? yang:mac-address | |||
| | | | | +--rw duid-llt-time? | | | | | | +--:(duid-en) | |||
| | | | | | yang:timeticks | | | | | | | +--rw duid-en-enterprise-number? uint32 | |||
| | | | | +--rw duid-llt-link-layer-addr? | | | | | | | +--rw duid-en-identifier? string | |||
| | | | | yang:mac-address | | | | | | +--:(duid-ll) | |||
| | | | +--:(duid-en) | | | | | | | +--rw duid-ll-hardware-type? uint16 | |||
| | | | | +--rw duid-en-enterprise-number? uint32 | | | | | | | +--rw duid-ll-link-layer-addr? yang:mac-address | |||
| | | | | +--rw duid-en-identifier? string | | | | | | +--:(duid-uuid) | |||
| | | | +--:(duid-ll) | | | | | | | +--rw uuid? yang:uuid | |||
| | | | +--rw duid-ll-hardware-type? uint16 | | | | | | +--:(duid-invalid) | |||
| | | | +--rw duid-ll-time? | | | | | | +--rw data? binary | |||
| | | | yang:timeticks | | | | | +--rw reserv-prefix-len uint8 | |||
| | | +--rw reserv-addr* inet:ipv6-address | | | | | +--rw reserv-prefix inet:ipv6-prefix | |||
| | +--rw other-reserv-addr* inet:ipv6-address | | | | +--rw exclude-prefix-len uint8 | |||
| +--rw reserved-prefixes | | | | +--rw exclude-prefix inet:ipv6-prefix | |||
| | +--rw static-binding* [cli-id] | | | | +--rw other-reserv-prefix* [reserv-id] | |||
| | | +--rw cli-id uint32 | | | | +--rw reserv-id uint32 | |||
| | | +--rw duid | | | | +--rw prefix-len uint8 | |||
| | | | +--rw (duid-type)? | | | | +--rw prefix inet:ipv6-prefix | |||
| | | | +--:(duid-llt) | | | +--rw address-pools | |||
| | | | | +--rw duid-llt-hardware-type? uint16 | | | | +--rw address-pool* [pool-id] | |||
| | | | | +--rw duid-llt-time? | | | | +--rw pool-id uint32 | |||
| | | | | | yang:timeticks | | | | +--rw pool-prefi inet:ipv6-prefix | |||
| | | | | +--rw duid-llt-link-layer-addr? | | | | +--rw start-address inet:ipv6-address-no-zone | |||
| | | | | yang:mac-address | | | | +--rw end-address inet:ipv6-address-no-zone | |||
| | | | +--:(duid-en) | | | | +--rw renew-time yang:timeticks | |||
| | | | | +--rw duid-en-enterprise-number? uint32 | | | | +--rw rebind-time yang:timeticks | |||
| | | | | +--rw duid-en-identifier? string | | | | +--rw preferred-lifetime yang:timeticks | |||
| | | | +--:(duid-ll) | | | | +--rw valid-lifetime yang:timeticks | |||
| | | | +--rw duid-ll-hardware-type? uint16 | | | | +--rw max-address-utilization-ratio threshold | |||
| | | | +--rw duid-ll-time? | | | | +--rw inherit-option-set boolean | |||
| | | | yang:timeticks | | | | +--rw option-set-id | |||
| | | +--rw reserv-prefix-len uint8 | -> /server/server-config/option-sets/option-set/id | |||
| | | +--rw reserv-prefix inet:ipv6-prefix | | | +--rw prefix-pools | |||
| | +--rw exclude-prefix-len uint8 | | | | +--rw prefix-pool* [pool-id] | |||
| | +--rw exclude-prefix inet:ipv6-prefix | | | | +--rw pool-id uint32 | |||
| | +--rw other-reserv-prefix* [reserv-id] | | | | +--rw prefix inet:ipv6-prefix | |||
| | +--rw reserv-id uint8 | | | | +--rw prefix-length uint8 | |||
| | +--rw prefix-len uint8 | | | | +--rw renew-time yang:timeticks | |||
| | +--rw prefix inet:ipv6-prefix | | | | +--rw rebind-time yang:timeticks | |||
| +--rw address-pools | | | | +--rw preferred-lifetime yang:timeticks | |||
| | +--rw address-pool* [pool-id] | | | | +--rw valid-lifetime yang:timeticks | |||
| | | +--rw pool-id uint8 | | | | +--rw max-prefix-utilization-ratio threshold | |||
| | | +--rw pool-prefix inet:ipv6-prefix | | | | +--rw inherit-option-set boolean | |||
| | | +--rw start-address inet:ipv6-address-no-zone | | | | +--rw option-set-id? | |||
| | | +--rw end-address inet:ipv6-address-no-zone | -> /server/server-config/option-sets/option-set/id | |||
| | | +--rw renew-time yang:timeticks | | | +--rw hosts | |||
| | | +--rw rebind-time yang:timeticks | | | +--rw host* [cli-id] | |||
| | | +--rw preferred-lifetime yang:timeticks | | | +--rw cli-id uint32 | |||
| | | +--rw valid-lifetime yang:timeticks | | | +--rw duid | |||
| | | +--ro total-ipv6-count uint64 | | | | +--rw type-code? uint16 | |||
| | | +--ro used-ipv6-count uint64 | | | | +--rw (duid-type)? | |||
| | | +--rw utilization-ratio threshold | | | | +--:(duid-llt) | |||
| | | +--rw inherit-option-set boolean | | | | | +--rw duid-llt-hardware-type? uint16 | |||
| | | +--rw option-set-id uint8 | | | | | +--rw duid-llt-time? yang:timeticks | |||
| | +--ro binding-info* [cli-id] | | | | | +--rw duid-llt-link-layer-addr? yang:mac-address | |||
| | +--ro cli-id uint32 | | | | +--:(duid-en) | |||
| | +--ro duid | | | | | +--rw duid-en-enterprise-number? uint32 | |||
| | | +--ro (duid-type)? | | | | | +--rw duid-en-identifier? string | |||
| | | +--:(duid-llt) | | | | +--:(duid-ll) | |||
| | | | +--ro duid-llt-hardware-type? uint16 | | | | | +--rw duid-ll-hardware-type? uint16 | |||
| | | | +--ro duid-llt-time? | | | | | +--rw duid-ll-link-layer-addr? yang:mac-address | |||
| | | | | yang:timeticks | | | | +--:(duid-uuid) | |||
| | | | +--ro duid-llt-link-layer-addr? | | | | | +--rw uuid? yang:uuid | |||
| | | | yang:mac-address | | | | +--:(duid-invalid) | |||
| | | +--:(duid-en) | | | | +--rw data? binary | |||
| | | | +--ro duid-en-enterprise-number? uint32 | | | +--rw inherit-option-set boolean | |||
| | | | +--ro duid-en-identifier? string | | | +--rw option-set-id? | |||
| | | +--:(duid-ll) | -> /server/server-config/option-sets/option-set/id | |||
| | | +--ro duid-ll-hardware-type? uint16 | | | +--rw nis-domain-name? string | |||
| | | +--ro duid-ll-time? | | | +--rw nis-plus-domain-name? string | |||
| | | yang:timeticks | | +--rw relay-opaque-paras | |||
| | +--ro cli-ia* [iaid] | | | +--rw relays* [relay-name] | |||
| | +--ro ia-type string | | | +--rw relay-name string | |||
| | +--ro iaid uint32 | | | +--rw interface-info* [if-name] | |||
| | +--ro cli-addr* inet:ipv6-address | | | | +--rw if-name string | |||
| | +--ro pool-id uint8 | | | | +--rw interface-id string | |||
| +--rw prefix-pools | | | +--rw subscribers* [subscriber] | |||
| | +--rw prefix-pool* [pool-id] | | | | +--rw subscriber uint32 | |||
| | | +--rw pool-id uint8 | | | | +--rw subscriber-id string | |||
| | | +--rw prefix inet:ipv6-prefix | | | +--rw remote-host* [ent-num] | |||
| | | +--rw prefix-length uint8 | | | +--rw ent-num uint32 | |||
| | | +--rw renew-time yang:timeticks | | | +--rw remote-id string | |||
| | | +--rw rebind-time yang:timeticks | | +--rw rsoo-enabled-options | |||
| | | +--rw preferred-lifetime yang:timeticks | | +--rw rsoo-enabled-option* [option-code] | |||
| | | +--rw valid-lifetime yang:timeticks | | +--rw option-code uint16 | |||
| | | +--rw utilization-ratio threshold | | +--rw description string | |||
| | | +--rw inherit-option-set boolean | +--ro server-state | |||
| | | +--rw option-set-id uint8 | +--ro network-ranges | |||
| | +--ro binding-info* [cli-id] | | +--ro network-range* [network-range-id] | |||
| | +--ro cli-id uint32 | | +--ro network-range-id uint32 | |||
| | +--ro duid | | +--ro address-pools | |||
| | | +--ro (duid-type)? | | | +--ro address-pool* [pool-id] | |||
| | | +--:(duid-llt) | | | | +--ro pool-id uint32 | |||
| | | | +--ro duid-llt-hardware-type? uint16 | | | | +--ro total-ipv6-count uint64 | |||
| | | | +--ro duid-llt-time? | | | | +--ro used-ipv6-count uint64 | |||
| | | | | yang:timeticks | | | | +--ro address-utilization-ratio uint16 | |||
| | | | +--ro duid-llt-link-layer-addr? | | | +--ro binding-info* [cli-id] | |||
| | | | yang:mac-address | | | +--ro cli-id uint32 | |||
| | | +--:(duid-en) | | | +--ro duid | |||
| | | | +--ro duid-en-enterprise-number? uint32 | | | | +--ro type-code? uint16 | |||
| | | | +--ro duid-en-identifier? string | | | | +--ro (duid-type)? | |||
| | | +--:(duid-ll) | | | | +--:(duid-llt) | |||
| | | +--ro duid-ll-hardware-type? uint16 | | | | | +--ro duid-llt-hardware-type? uint16 | |||
| | | +--ro duid-ll-time? | | | | | +--ro duid-llt-time? yang:timeticks | |||
| | | yang:timeticks | | | | | +--ro duid-llt-link-layer-addr? yang:mac-address | |||
| | +--ro cli-iapd* [iaid] | | | | +--:(duid-en) | |||
| | +--ro iaid uint32 | | | | | +--ro duid-en-enterprise-number? uint32 | |||
| | +--ro cli-prefix* inet:ipv6-prefix | | | | | +--ro duid-en-identifier? string | |||
| | +--ro cli-prefix-len* uint8 | | | | +--:(duid-ll) | |||
| | +--ro pool-id uint8 | | | | | +--ro duid-ll-hardware-type? uint16 | |||
| +--rw hosts | | | | | +--ro duid-ll-link-layer-addr? yang:mac-address | |||
| +--rw host* [cli-id] | | | | +--:(duid-uuid) | |||
| +--rw cli-id uint32 | | | | | +--ro uuid? yang:uuid | |||
| +--rw duid | | | | +--:(duid-invalid) | |||
| | +--rw (duid-type)? | | | | +--ro data? binary | |||
| | +--:(duid-llt) | | | +--ro cli-ia* [iaid] | |||
| | | +--rw duid-llt-hardware-type? uint16 | | | +--ro ia-type string | |||
| | | +--rw duid-llt-time? | | | +--ro iaid uint32 | |||
| | | | yang:timeticks | | | +--ro cli-addr* inet:ipv6-address | |||
| | | +--rw duid-llt-link-layer-addr? | | | +--ro pool-id uint32 | |||
| | | yang:mac-address | | +--ro prefix-pools | |||
| | +--:(duid-en) | | | +--ro prefix-pool* [pool-id] | |||
| | | +--rw duid-en-enterprise-number? uint32 | | | | +--ro pool-id uint32 | |||
| | | +--rw duid-en-identifier? string | | | | +--ro prefix-utilization-ratio uint16 | |||
| | +--:(duid-ll) | | | +--ro binding-info* [cli-id] | |||
| | +--rw duid-ll-hardware-type? uint16 | | | +--ro cli-id uint32 | |||
| | +--rw duid-ll-time? | | | +--ro duid | |||
| | yang:timeticks | | | | +--ro type-code? uint16 | |||
| +--rw inherit-option-set boolean | | | | +--ro (duid-type)? | |||
| +--rw option-set-id uint8 | | | | +--:(duid-llt) | |||
| +--rw nis-domain-name? string | | | | | +--ro duid-llt-hardware-type? uint16 | |||
| +--rw nis-plus-domain-name? string | | | | | +--ro duid-llt-time? yang:timeticks | |||
+--rw relay-opaque-paras | | | | | +--ro duid-llt-link-layer-addr? yang:mac-address | |||
| +--rw relays* [relay-name] | | | | +--:(duid-en) | |||
| +--rw relay-name string | | | | | +--ro duid-en-enterprise-number? uint32 | |||
| +--rw interface-info* [if-name] | | | | | +--ro duid-en-identifier? string | |||
| | +--rw if-name string | | | | +--:(duid-ll) | |||
| | +--rw interface-id string | | | | | +--ro duid-ll-hardware-type? uint16 | |||
| +--rw subscribers* [subscriber] | | | | | +--ro duid-ll-link-layer-addr? yang:mac-address | |||
| | +--rw subscriber uint8 | | | | +--:(duid-uuid) | |||
| | +--rw subscriber-id string | | | | | +--ro uuid? yang:uuid | |||
| +--rw remote-host* [ent-num] | | | | +--:(duid-invalid) | |||
| +--rw ent-num uint32 | | | | +--ro data? binary | |||
| +--rw remote-id string | | | +--ro cli-iapd* [iaid] | |||
+--rw rsoo-enabled-options | | | +--ro iaid uint32 | |||
| +--rw rsoo-enabled-option* [option-code] | | | +--ro cli-prefix* inet:ipv6-prefix | |||
| +--rw option-code uint16 | | | +--ro cli-prefix-len* uint8 | |||
| +--rw description string | | | +--ro pool-id uint32 | |||
+--ro packet-stats | | +--ro address-prefix-assign-param* [cli-id] | |||
+--ro solicit-count uint32 | | +--ro cli-id uint32 | |||
+--ro request-count uint32 | | +--ro source-ipv6-addr? inet:ipv6-address | |||
+--ro renew-count uint32 | | +--ro duid | |||
+--ro rebind-count uint32 | | | +--ro type-code? uint16 | |||
+--ro decline-count uint32 | | | +--ro (duid-type)? | |||
+--ro release-count uint32 | | | +--:(duid-llt) | |||
+--ro info-req-count uint32 | | | | +--ro duid-llt-hardware-type? uint16 | |||
+--ro advertise-count uint32 | | | | +--ro duid-llt-time? yang:timeticks | |||
+--ro confirm-count uint32 | | | | +--ro duid-llt-link-layer-addr? yang:mac-address | |||
+--ro reply-count uint32 | | | +--:(duid-en) | |||
+--ro reconfigure-count uint32 | | | | +--ro duid-en-enterprise-number? uint32 | |||
+--ro relay-forward-count uint32 | | | | +--ro duid-en-identifier? string | |||
+--ro relay-reply-count uint32 | | | +--:(duid-ll) | |||
| | | +--ro duid-ll-hardware-type? uint16 | ||||
| | | +--ro duid-ll-link-layer-addr? yang:mac-address | ||||
| | +--:(duid-uuid) | ||||
| | | +--ro uuid? yang:uuid | ||||
| | +--:(duid-invalid) | ||||
| | +--ro data? binary | ||||
| +--ro iaid* uint32 | ||||
| +--ro preferred-addr* inet:ipv6-address | ||||
| +--ro preferred-prefix-len* uint8 | ||||
| +--ro client-fqdn? string | ||||
| +--ro client-link-layer-addr? uint16 | ||||
| +--ro client-enterprise-number? uint32 | ||||
| +--ro client-sys-archi-type* uint16 | ||||
+--ro packet-stats | ||||
+--ro solicit-count uint32 | ||||
+--ro request-count uint32 | ||||
+--ro renew-count uint32 | ||||
+--ro rebind-count uint32 | ||||
+--ro decline-count uint32 | ||||
+--ro release-count uint32 | ||||
+--ro info-req-count uint32 | ||||
+--ro advertise-count uint32 | ||||
+--ro confirm-count uint32 | ||||
+--ro reply-count uint32 | ||||
+--ro reconfigure-count uint32 | ||||
+--ro relay-forward-count uint32 | ||||
+--ro relay-reply-count uint32 | ||||
notifications: | ||||
+---n notifications | ||||
+--ro dhcpv6-server-event | ||||
+--ro pool-running-out | ||||
| +--ro max-address-utilization-ratio uint16 | ||||
| +--ro address-utilization-ratio uint16 | ||||
| +--ro max-prefix-utilization-ratio uint16 | ||||
| +--ro prefix-utilization-ratio uint16 | ||||
| +--ro duid | ||||
| | +--ro type-code? uint16 | ||||
| | +--ro (duid-type)? | ||||
| | +--:(duid-llt) | ||||
| | | +--ro duid-llt-hardware-type? uint16 | ||||
| | | +--ro duid-llt-time? yang:timeticks | ||||
| | | +--ro duid-llt-link-layer-addr? yang:mac-address | ||||
| | +--:(duid-en) | ||||
| | | +--ro duid-en-enterprise-number? uint32 | ||||
| | | +--ro duid-en-identifier? string | ||||
| | +--:(duid-ll) | ||||
| | | +--ro duid-ll-hardware-type? uint16 | ||||
| | | +--ro duid-ll-link-layer-addr? yang:mac-address | ||||
| | +--:(duid-uuid) | ||||
| | | +--ro uuid? yang:uuid | ||||
| | +--:(duid-invalid) | ||||
| | +--ro data? binary | ||||
| +--ro serv-name? string | ||||
| +--ro pool-name string | ||||
+--ro invalid-client-detected | ||||
+--ro duid | ||||
| +--ro type-code? uint16 | ||||
| +--ro (duid-type)? | ||||
| +--:(duid-llt) | ||||
| | +--ro duid-llt-hardware-type? uint16 | ||||
| | +--ro duid-llt-time? yang:timeticks | ||||
| | +--ro duid-llt-link-layer-addr? yang:mac-address | ||||
| +--:(duid-en) | ||||
| | +--ro duid-en-enterprise-number? uint32 | ||||
| | +--ro duid-en-identifier? string | ||||
| +--:(duid-ll) | ||||
| | +--ro duid-ll-hardware-type? uint16 | ||||
| | +--ro duid-ll-link-layer-addr? yang:mac-address | ||||
| +--:(duid-uuid) | ||||
| | +--ro uuid? yang:uuid | ||||
| +--:(duid-invalid) | ||||
| +--ro data? binary | ||||
+--ro description? string | ||||
Figure 1: DHCPv6 Data Model Structure | Figure 1: DHCPv6 Data Model Structure | |||
Introduction of important nodes: | Introduction of important nodes: | |||
o server-config: This container contains the configuration data of a | ||||
server. | ||||
o serv-attributes: This container contains basic attributes of a | o serv-attributes: This container contains basic attributes of a | |||
DHCPv6 server such as DUID, server name and so on. Some optional | DHCPv6 server such as DUID, server name and so on. Some optional | |||
functions that can be provided by the server is also included. | functions that can be provided by the server is also included. | |||
o duid: Each server and client has only one DUID (DHCP Unique | o duid: Each server and client has only one DUID (DHCP Unique | |||
Identifier). The DUID here identifies a unique DHCPv6 server for | Identifier). The DUID here identifies a unique DHCPv6 server for | |||
clients. DUID consists of a two-octet type field and an arbitrary | clients. DUID consists of a two-octet type field and an arbitrary | |||
length (no more than 128 bytes) content field. | 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-INVALID represents | ||||
those unconventional DUIDs. | ||||
o pd-function: Whether the server can act as a delegating router to | o pd-function: Whether the server can act as a delegating router to | |||
perform prefix delegation [RFC3633]. | perform prefix delegation [RFC3633]. | |||
o operator-option-ipv6-address, operator-option-single-flag, | o operator-option-ipv6-address, operator-option-single-flag, | |||
operator-option-ipv6-prefix, operator-option-int32, operator- | operator-option-ipv6-prefix, operator-option-int32, operator- | |||
option-int16, operator-option-int8, operator-option-uri, operator- | option-int16, operator-option-int8, operator-option-uri, operator- | |||
option-textstring, operator-option-var-data, operator-option-dns- | option-textstring, operator-option-var-data, operator-option-dns- | |||
wire: are generic option formats described in [RFC7227]. | wire: are generic option formats described in [RFC7227]. | |||
skipping to change at page 12, line 51 ¶ | skipping to change at page 14, line 43 ¶ | |||
[RFC7078], [RFC7083], [RFC7291], [RFC7598]. | [RFC7078], [RFC7083], [RFC7291], [RFC7598]. | |||
o option-set: A server may allow different option sets to be | o option-set: A server may allow different option sets to be | |||
configured for different conditions (i.e. different networks, | configured for different conditions (i.e. different networks, | |||
clients and etc). This "option-set" list enables various sets of | clients and etc). This "option-set" list enables various sets of | |||
options being defined and configured in a single server. | options being defined and configured in a single server. | |||
Different sets are distinguished by the key called "option-set- | Different sets are distinguished by the key called "option-set- | |||
id". All the possible options discussed above are defined in the | id". All the possible options discussed above are defined in the | |||
list and each option is corresponding to a container. Since all | list and each option is corresponding to a container. Since all | |||
the options in the list are optional, each container in this list | the options in the list are optional, each container in this list | |||
has a boolean parameter called "enable" to indicate whether this | has a 'presence' statement to indicate whether this option | |||
option (container) will be included in the current option set or | (container) will be included in the current option set or not. In | |||
not. With the "new-or-standard-option" list, it is easy to extend | addition, each container also has a 'if-feature' statement to | |||
the model when new options are defined. We could also use the | indicate whether the server supports this option (container). | |||
"new-or-standard-option" list to define an IETF standard option. | ||||
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- | |||
skipping to change at page 13, line 32 ¶ | skipping to change at page 15, line 23 ¶ | |||
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 max-address-utilization-ratio: The threshold of address pool | ||||
utiliztion, the value of which is settable. | ||||
o binding-info: A list records a binding information for each DHCPv6 | o binding-info: A list records a binding information for each DHCPv6 | |||
client that has already been allocated IPv6 addresses. | client that has already been allocated IPv6 addresses. | |||
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-prefix-utilization-ratio: The threshold of prefix pool | ||||
utiliztion, the value of which is settable. | ||||
o binding-info: A list records a binding information for each DHCPv6 | o binding-info: A list records a binding information for each DHCPv6 | |||
requesting router that has already been configured IPv6 prefixes. | requesting router that has already been configured IPv6 prefixes. | |||
o hosts: A server may also desire to be configured at a host level | o hosts: A server may also desire to be configured at a host level | |||
under some circumstances. This container include a list called | under some circumstances. This container include a list called | |||
"host" to allow the server carrying different parameters (e.g. | "host" to allow the server carrying different parameters (e.g. | |||
option sets) for different hosts. | option sets) for different hosts. | |||
o relay-opaque-paras: This container contains some opaque values in | o relay-opaque-paras: 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 address-prefix-assign-param: This list includes some parameters/ | ||||
identifiers that the server obtains from DHCPv6 options in this | ||||
network-range. The server may take these parameters/identifiers | ||||
into account when assigning a(n) address/prefix. | ||||
o packet-stats: A container presents the packet statistics related | o packet-stats: A container presents the packet statistics related | |||
to the DHCPv6 server. | to the DHCPv6 server. | |||
Information about notifications: | ||||
o pool-running-out: raised when the address/prefix pool is going to | ||||
run out. A threshold for utilization ratio of the pool has been | ||||
defined in the server feature so that it will notify the | ||||
administrator when the utilization ratio reaches the threshold, | ||||
and such threshold is a settable parameter. | ||||
o invalid-client-detected: raised when the server has found a client | ||||
which can be regarded as a potential attacker. Some description | ||||
could also be included. | ||||
2.2. DHCPv6 Relay Tree Diagrams | 2.2. DHCPv6 Relay Tree Diagrams | |||
module: ietf-dhcpv6 | module: ietf-dhcpv6-relay | |||
+--rw relay! | +--rw relay! | |||
+--rw relay-attributes | +--rw relay-config | |||
| +--rw name? string | | +--rw relay-attributes | |||
| +--rw description? string | | | +--rw name? string | |||
| +--rw dest-addrs* inet:ipv6-address | | | +--rw description? string | |||
| +--rw subscribers* [subscriber] | | | +--rw dest-addrs* inet:ipv6-address | |||
| | +--rw subscriber uint8 | | | +--rw subscribers* [subscriber] | |||
| | +--rw subscriber-id string | | | | +--rw subscriber uint8 | |||
| +--rw remote-host* [ent-num] | | | | +--rw subscriber-id string | |||
| | +--rw ent-num uint32 | | | +--rw remote-host* [ent-num] | |||
| | +--rw remote-id string | | | | +--rw ent-num uint32 | |||
| +--rw vendor-info | | | | +--rw remote-id string | |||
| +--rw ent-num uint32 | | | +--rw vendor-info | |||
| +--rw data* string | | | +--rw ent-num uint32 | |||
+--rw relay-supplied-options-option | | | +--rw data* string | |||
| +--rw rsoo-set* [rsoo-set-id] | | +--rw rsoo-option-sets | |||
| +--rw rsoo-set-id uint8 | | | +--rw option-set* [id] | |||
| +--rw erp-local-domain-name-option | | | +--rw id uint32 | |||
| +--rw enable boolean | | | +--rw erp-local-domain-name-option! | |||
| +--rw erp-for-client* [cli-id] | {erp-local-domain-name-op}? | |||
| +--rw cli-id uint32 | | | +--rw erp-for-client* [cli-id] | |||
| +--rw duid | | | +--rw cli-id uint32 | |||
| | +--rw (duid-type)? | | | +--rw duid | |||
| | +--:(duid-llt) | | | | +--rw type-code? uint16 | |||
| | | +--rw duid-llt-hardware-type? uint16 | | | | +--rw (duid-type)? | |||
| | | +--rw duid-llt-time? | | | | +--:(duid-llt) | |||
| | | | yang:timeticks | | | | | +--rw duid-llt-hardware-type? uint16 | |||
| | | +--rw duid-llt-link-layer-addr? | | | | | +--rw duid-llt-time? | |||
| | | yang:mac-address | yang:timeticks | |||
| | +--:(duid-en) | | | | | +--rw duid-llt-link-layer-addr? | |||
| | | +--rw duid-en-enterprise-number? uint32 | yang:mac-address | |||
| | | +--rw duid-en-identifier? string | | | | +--:(duid-en) | |||
| | +--:(duid-ll) | | | | | +--rw duid-en-enterprise-number? uint32 | |||
| | +--rw duid-ll-hardware-type? uint16 | | | | | +--rw duid-en-identifier? string | |||
| | +--rw duid-ll-time? | | | | +--:(duid-ll) | |||
| | yang:timeticks | | | | | +--rw duid-ll-hardware-type? uint16 | |||
| +--rw erp-name string | | | | | +--rw duid-ll-link-layer-addr? | |||
+--rw relay-if* [if-name] | yang:mac-address | |||
| +--rw if-name string | | | | +--:(duid-uuid) | |||
| +--rw enable boolean | | | | | +--rw uuid? yang:uuid | |||
| +--rw ipv6-address? inet:ipv6-address | | | | +--:(duid-invalid) | |||
| +--rw interface-id? string | | | | +--rw data? binary | |||
| +--rw rsoo-set* uint8 | | | +--rw erp-name string | |||
| +--rw pd-route* [pd-route-id] | | +--rw relay-if* [if-name] | |||
| | +--rw pd-route-id uint8 | | +--rw if-name string | |||
| | +--rw requesting-router-id uint32 | | +--rw enable boolean | |||
| | +--rw delegating-router-id uint32 | | +--rw ipv6-address? inet:ipv6-address | |||
| | +--rw next-router inet:ipv6-address | | +--rw interface-id? string | |||
| | +--rw last-router inet:ipv6-address | | +--rw rsoo-option-set-id? | |||
| +--rw next-entity* [dest-addr] | -> /relay/relay-config/rsoo-option-sets/option-set/id | |||
| +--rw dest-addr inet:ipv6-address | | +--rw next-entity* [dest-addr] | |||
| +--rw available boolean | | +--rw dest-addr inet:ipv6-address | |||
| +--rw multicast boolean | | +--rw available boolean | |||
| +--rw server boolean | | +--rw multicast boolean | |||
| +--rw server boolean | ||||
+--ro relay-state | ||||
+--ro relay-if* [if-name] | ||||
| +--ro if-name string | ||||
| +--ro pd-route* [pd-route-id] | ||||
| | +--ro pd-route-id uint8 | ||||
| | +--ro requesting-router-id uint32 | ||||
| | +--ro delegating-router-id uint32 | ||||
| | +--ro next-router inet:ipv6-address | ||||
| | +--ro last-router inet:ipv6-address | ||||
| +--ro next-entity* [dest-addr] | ||||
| +--ro dest-addr inet:ipv6-address | ||||
| +--ro packet-stats | | +--ro packet-stats | |||
| +--ro cli-packet-rvd-count uint32 | ||||
| +--ro solicit-rvd-count uint32 | | +--ro solicit-rvd-count uint32 | |||
| +--ro request-rvd-count uint32 | | +--ro request-rvd-count uint32 | |||
| +--ro renew-rvd-count uint32 | | +--ro renew-rvd-count uint32 | |||
| +--ro rebind-rvd-count uint32 | | +--ro rebind-rvd-count uint32 | |||
| +--ro decline-rvd-count uint32 | | +--ro decline-rvd-count uint32 | |||
| +--ro release-rvd-count uint32 | | +--ro release-rvd-count uint32 | |||
| +--ro info-req-rvd-count uint32 | | +--ro info-req-rvd-count uint32 | |||
| +--ro relay-for-rvd-count uint32 | | +--ro relay-for-rvd-count uint32 | |||
| +--ro relay-rep-rvd-count uint32 | | +--ro relay-rep-rvd-count uint32 | |||
| +--ro packet-to-cli-count uint32 | | +--ro packet-to-cli-count uint32 | |||
skipping to change at page 16, line 5 ¶ | skipping to change at page 18, line 33 ¶ | |||
| +--ro relay-rep-sent-count uint32 | | +--ro relay-rep-sent-count uint32 | |||
+--ro relay-stats | +--ro relay-stats | |||
+--ro cli-packet-rvd-count uint32 | +--ro cli-packet-rvd-count uint32 | |||
+--ro relay-for-rvd-count uint32 | +--ro relay-for-rvd-count uint32 | |||
+--ro relay-rep-rvd-count uint32 | +--ro relay-rep-rvd-count uint32 | |||
+--ro packet-to-cli-count uint32 | +--ro packet-to-cli-count uint32 | |||
+--ro relay-for-sent-count uint32 | +--ro relay-for-sent-count uint32 | |||
+--ro relay-rep-sent-count uint32 | +--ro relay-rep-sent-count uint32 | |||
+--ro discarded-packet-count uint32 | +--ro discarded-packet-count uint32 | |||
notifications: | ||||
+---n notifications | ||||
+--ro dhcpv6-relay-event | ||||
+--ro topo-changed | ||||
+--ro relay-if-name string | ||||
+--ro first-hop boolean | ||||
+--ro last-entity-addr inet:ipv6-address | ||||
Introduction of important nodes: | Introduction of important nodes: | |||
o relay-config: This container contains the configuration data of | ||||
the relay. | ||||
o relay-attributes: A container describes some basic attributes of | o relay-attributes: A container describes some basic attributes of | |||
the relay agent including some relay agent specific options data | the relay agent including some relay agent specific options data | |||
that need to be configured previously. Such options include | that need to be configured previously. Such options include | |||
Remote-Id option and Subscriber-Id option. | Remote-Id option and Subscriber-Id option. | |||
o dest-addrs: Each DHCPv6 relay agent may be configured with a list | o dest-addrs: Each DHCPv6 relay agent may be configured with a list | |||
of destination addresses. This node defines such a list of IPv6 | of destination addresses. This node defines such a list of IPv6 | |||
addresses that may include unicast addresses, multicast addresses | addresses that may include unicast addresses, multicast addresses | |||
or other addresses. | or other addresses. | |||
o relay-supplied-options-option: DHCPv6 relay agent could provide | o rsoo-options-sets: DHCPv6 relay agent could provide some | |||
some information that would be useful to DHCPv6 client. Since | information that would be useful to DHCPv6 client. Since relay | |||
relay agent cannot provide options directly to the client, | agent cannot provide options directly to the client, [RFC6422] | |||
[RFC6422] defines RSOO-enabled options to propose options for the | defines RSOO-enabled options to propose options for the server to | |||
server to send to the client. This container models such RSOO- | send to the client. This container models such RSOO-enabled | |||
enabled options. | options. | |||
o rsoo-set: This list under the "relay-supplied-options-option" | o option-set: This list under the "rsoo-option-sets" container is | |||
container is similar to the "option-set" defined in server | similar to the that defined in server module. It allows the relay | |||
feature. It allows the relay to implement several sets of RSOO- | to implement several sets of RSOO-enabled options for different | |||
enabled options for different interfaces. The list only include | interfaces. The list only include the EAP Re-authentication | |||
the EAP Re-authentication Protocol (ERP) Local Domain Name DHCPv6 | Protocol (ERP) Local Domain Name DHCPv6 Option defined in | |||
Option defined in [RFC6440], since it is the only one RSOO-enabled | [RFC6440], since it is the only one RSOO-enabled options accepted | |||
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 fulfil the configfuration. | |||
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 | ||||
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 | |||
distinguished by their addresses. | distinguished by their addresses. | |||
o packet-stats: A container shows packet state information of a | o packet-stats: A container shows packet state information of a | |||
specific data communication. | specific data communication. | |||
o relay-stats: The "relay-stats" container records and presents the | o relay-stats: The "relay-stats" container records and presents the | |||
overall packet statistics of the relay agent. | overall packet statistics of the relay agent. | |||
Information about notifications: | ||||
o topo-changed: raised when the topology of the relay agent is | ||||
changed. | ||||
2.3. DHCPv6 Client Tree Diagrams | 2.3. DHCPv6 Client Tree Diagrams | |||
module: ietf-dhcpv6 | module: ietf-dhcpv6-client | |||
+--rw client! | +--rw client! | |||
+--rw duid | +--rw client-config | |||
| +--rw (duid-type)? | | +--rw duid | |||
| +--:(duid-llt) | | | +--rw type-code? uint16 | |||
| | +--rw duid-llt-hardware-type? uint16 | | | +--rw (duid-type)? | |||
| | +--rw duid-llt-time? yang:timeticks | | | +--:(duid-llt) | |||
| | +--rw duid-llt-link-layer-addr? yang:mac-address | | | | +--rw duid-llt-hardware-type? uint16 | |||
| +--:(duid-en) | | | | +--rw duid-llt-time? yang:timeticks | |||
| | +--rw duid-en-enterprise-number? uint32 | | | | +--rw duid-llt-link-layer-addr? yang:mac-address | |||
| | +--rw duid-en-identifier? string | | | +--:(duid-en) | |||
| +--:(duid-ll) | | | | +--rw duid-en-enterprise-number? uint32 | |||
| +--rw duid-ll-hardware-type? uint16 | | | | +--rw duid-en-identifier? string | |||
| +--rw duid-ll-time? yang:timeticks | | | +--:(duid-ll) | |||
+--rw client-if* [if-name] | | | | +--rw duid-ll-hardware-type? uint16 | |||
+--rw if-name string | | | | +--rw duid-ll-link-layer-addr? yang:mac-address | |||
+--rw cli-id uint32 | | | +--:(duid-uuid) | |||
+--rw description? string | | | | +--rw uuid? yang:uuid | |||
+--rw pd-function boolean | | | +--:(duid-invalid) | |||
+--rw rapid-commit boolean | | | +--rw data? binary | |||
+--rw mo-tab | | +--rw client-if* [if-name] | |||
| +--rw m-tab boolean | | +--rw if-name string | |||
| +--rw o-tab boolean | | +--rw cli-id uint32 | |||
+--rw oro-options | | +--rw description? string | |||
| +--rw oro-option* [option-code] | | +--rw pd-function boolean | |||
| +--rw option-code uint16 | | +--rw rapid-commit boolean | |||
| +--rw description string | | +--rw mo-tab | |||
+--rw client-configured-options | | | +--rw m-tab boolean | |||
| +--rw new-or-standard-cli-option* [option-code] | | | +--rw o-tab boolean | |||
| | +--rw option-code uint16 | | +--rw client-configured-options | |||
| | +--rw option-name string | | +--rw new-or-standard-cli-option* [option-code] | |||
| | +--rw option-description string | | | +--rw option-code uint16 | |||
| | +--rw option-reference? string | | | +--rw option-name string | |||
| | +--rw option-value string | | | +--rw option-description string | |||
| +--rw user-class-option | | | +--rw option-reference? string | |||
| | +--rw enable boolean | | | +--rw option-value string | |||
| | +--rw user-class* [user-class-id] | | +--rw option-request-option! {option-request-op}? | |||
| | +--rw user-class-id uint8 | | | +--rw oro-option* [option-code] | |||
| | +--rw user-class-info string | | | +--rw option-code uint16 | |||
| +--rw vendor-class-option | | | +--rw description string | |||
| | +--rw enable boolean | | +--rw user-class-option! {user-class-op}? | |||
| | +--rw ent-num uint32 | | | +--rw user-class* [user-class-id] | |||
| | +--rw data* string | | | +--rw user-class-id uint8 | |||
| +--rw client-fqdn-option | | | +--rw user-class-data string | |||
| | +--rw enable boolean | | +--rw vendor-class-option! {vendor-class-op}? | |||
| | +--rw fqdn string | | | +--rw enterprise-number uint32 | |||
| | +--rw server-initiate-update boolean | | | +--rw vendor-class* [vendor-class-id] | |||
| | +--rw client-initiate-update boolean | | | +--rw vendor-class-id uint8 | |||
| +--rw client-architecture-type-option | | | +--rw vendor-class-data string | |||
| | +--rw enable boolean | | +--rw client-fqdn-option! {client-fqdn-op}? | |||
| | +--rw architecture-types* [type-id] | | | +--rw fqdn string | |||
| | +--rw type-id uint16 | | | +--rw server-initiate-update boolean | |||
| | +--rw most-preferred boolean | | | +--rw client-initiate-update boolean | |||
| +--rw client-network-interface-option | | +--rw client-arch-type-option! {client-arch-type-op}? | |||
| | +--rw enable boolean | | | +--rw architecture-types* [type-id] | |||
| | +--rw type uint8 | | | +--rw type-id uint16 | |||
| | +--rw major uint8 | | | +--rw most-preferred boolean | |||
| | +--rw minor uint8 | | +--rw client-network-interface-identifier-option! | |||
| +--rw kerberos-principal-name-option | {client-network-interface-identifier-op}? | |||
| | +--rw enable boolean | | | +--rw type uint8 | |||
| | +--rw principal-name string | | | +--rw major uint8 | |||
| +--rw client-link-layer-addr-option | | | +--rw minor uint8 | |||
| +--rw enable boolean | | +--rw kbr-principal-name-option! {kbr-principal-name-op}? | |||
| +--rw link-layer-type uint16 | | | +--rw principle-name* [principle-name-id] | |||
| +--rw link-layer-addr string | | | +--rw principle-name-id uint8 | |||
+--ro identity-associations | | | +--rw name-type int32 | |||
| +--ro identity-association* [iaid] | | | +--rw name-string string | |||
| +--ro iaid uint32 | | +--rw kbr-realm-name-option! {kbr-realm-name-op}? | |||
| +--ro ia-type string | | | +--rw realm-name string | |||
| +--ro ipv6-addr* inet:ipv6-address | | +--rw client-link-layer-addr-option! | |||
| +--ro ipv6-prefix* inet:ipv6-prefix | {client-link-layer-addr-op}? | |||
| +--ro prefix-length* uint8 | | +--rw link-layer-type uint16 | |||
| +--ro t1-time yang:timeticks | | +--rw link-layer-addr string | |||
| +--ro t2-time yang:timeticks | +--ro client-state | |||
| +--ro preferred-lifetime yang:timeticks | +--ro if-other-paras | |||
| +--ro valid-lifetime yang:timeticks | +--ro server-unicast-option! {server-unicast-op}? | |||
+--ro if-other-paras | | +--ro server-address? inet:ipv6-address | |||
| +--ro uni-dhcpv6-serv-addr* inet:ipv6-address | +--ro sip-server-domain-name-list-option! | |||
| +--ro dns-paras | {sip-server-domain-name-list-op}? | |||
| | +--ro domain-search-list string | | +--ro sip-serv-domain-name string | |||
| | +--ro dns-servers* [dns-serv-id] | +--ro sip-server-address-list-option! | |||
| | +--ro dns-serv-id uint8 | {sip-server-address-list-op}? | |||
| | +--ro dns-serv-addr inet:ipv6-address | | +--ro sip-server* [sip-serv-id] | |||
| +--ro sip-paras | | +--ro sip-serv-id uint8 | |||
| | +--ro sip-servers* [sip-serv-id] | | +--ro sip-serv-addr inet:ipv6-address | |||
| | +--ro sip-serv-id uint8 | +--ro dns-config-option! {dns-config-op}? | |||
| | +--ro sip-serv-addr inet:ipv6-address | | +--ro dns-server* [dns-serv-id] | |||
| | +--ro sip-serv-domain-name string | | +--ro dns-serv-id uint8 | |||
| +--ro nis-paras | | +--ro dns-serv-addr inet:ipv6-address | |||
| | +--ro nis-domain-name string | +--ro domain-searchlist-option! {domain-searchlist-op}? | |||
| | +--ro nis-server* [nis-serv-id] | | +--ro domain-searchlist* [domain-searchlist-id] | |||
| | +--ro nis-serv-id uint8 | | +--ro domain-searchlist-id uint8 | |||
| | +--ro nis-serv-addr inet:ipv6-address | | +--ro domain-search-list-entry string | |||
| +--ro nis-plus-paras | +--ro nis-config-option! {nis-config-op}? | |||
| | +--ro nis-plus-domain-name string | | +--ro nis-server* [nis-serv-id] | |||
| | +--ro nis-plus-server* [nis-plus-serv-id] | | +--ro nis-serv-id uint8 | |||
| | +--ro nis-plus-serv-id uint8 | | +--ro nis-serv-addr inet:ipv6-address | |||
| | +--ro nis-plus-serv-addr inet:ipv6-address | +--ro nis-plus-config-option! {nis-plus-config-op}? | |||
| +--ro info-refresh-time? yang:timeticks | | +--ro nis-plus-server* [nis-plus-serv-id] | |||
| +--ro time-zone-paras | | +--ro nis-plus-serv-id uint8 | |||
| | +--ro tz-posix string | | +--ro nis-plus-serv-addr inet:ipv6-address | |||
| | +--ro tz-database string | +--ro nis-domain-name-option! {nis-domain-name-op}? | |||
| +--ro cli-fqdn? string | | +--ro nis-domain-name? string | |||
| +--ro ntp-paras | +--ro nis-plus-domain-name-option! {nis-plus-domain-name-op}? | |||
| | +--ro ntp-server* [ntp-serv-id] | | +--ro nis-plus-domain-name? string | |||
| | +--ro ntp-serv-id uint8 | +--ro sntp-server-option! {sntp-server-op}? | |||
| | +--ro ntp-serv-addr inet:ipv6-address | | +--ro sntp-server* [sntp-serv-id] | |||
| | +--ro ntp-serv-mul-addr inet:ipv6-address | | +--ro sntp-serv-id uint8 | |||
| | +--ro ntp-serv-fqdn string | | +--ro sntp-serv-addr inet:ipv6-address | |||
| +--ro sntp-paras | +--ro info-refresh-time-option! {info-refresh-time-op}? | |||
| | +--ro sntp-server* [sntp-serv-id] | | +--ro info-refresh-time yang:timeticks | |||
| | +--ro sntp-serv-id uint8 | +--ro client-fqdn-option! {client-fqdn-op}? | |||
| | +--ro sntp-serv-addr inet:ipv6-address | | +--ro server-initiate-update boolean | |||
| +--ro network-boot-paras | | +--ro client-initiate-update boolean | |||
| | +--ro boot-file* [boot-file-id] | | +--ro modify-name-from-cli boolean | |||
| | +--ro boot-file-id uint8 | +--ro posix-timezone-option! {posix-timezone-op}? | |||
| | +--ro suitable-arch-type* uint16 | | +--ro tz-posix string | |||
| | +--ro suitable-net-if* uint32 | +--ro tzdb-timezone-option! {tzdb-timezone-op}? | |||
| | +--ro boot-file-url string | | +--ro tz-database string | |||
| | +--ro boot-file-paras* [para-id] | +--ro ntp-server-option! {ntp-server-op}? | |||
| | +--ro para-id uint8 | | +--ro ntp-server* [ntp-serv-id] | |||
| | +--ro parameter string | | +--ro ntp-serv-id uint8 | |||
| +--ro kerberos-paras | | +--ro (ntp-time-source-suboption)? | |||
| | +--ro default-realm-name string | | +--:(server-address) | |||
| | +--ro kdc-info* [kdc-id] | | | +--ro ntp-serv-addr-suboption* inet:ipv6-address | |||
| | +--ro kdc-id uint8 | | +--:(server-multicast-address) | |||
| | +--ro priority uint16 | | | +--ro ntp-serv-mul-addr-suboption* | |||
| | +--ro weight uint16 | inet:ipv6-address | |||
| | +--ro transport-type uint8 | | +--:(server-fqdn) | |||
| | +--ro port-number uint16 | | +--ro ntp-serv-fqdn-suboption* string | |||
| | +--ro kdc-ipv6-addr inet:ipv6-address | +--ro boot-file-url-option! {boot-file-url-op}? | |||
| | +--ro realm-name string | | +--ro boot-file* [boot-file-id] | |||
| +--ro addr-selection-paras | | +--ro boot-file-id uint8 | |||
| | +--ro automatic-row-add boolean | | +--ro suitable-arch-type* uint16 | |||
| | +--ro prefer-temporary-addr boolean | | +--ro suitable-net-if* uint32 | |||
| | +--ro policy-table* [policy-id] | | +--ro boot-file-url string | |||
| | +--ro policy-id uint8 | +--ro boot-file-param-option! {boot-file-param-op}? | |||
| | +--ro label uint8 | | +--ro boot-file-paras* [para-id] | |||
| | +--ro precedence uint8 | | +--ro para-id uint8 | |||
| | +--ro prefix-len uint8 | | +--ro parameter string | |||
| | +--ro prefix inet:ipv6-prefix | +--ro aftr-name-option! {aftr-name-op}? | |||
| +--ro sol-max-rt yang:timeticks | | +--ro tunnel-endpoint-name string | |||
| +--ro inf-max-rt yang:timeticks | +--ro kbr-default-name-option! {kbr-default-name-op}? | |||
| +--ro pcp-server-paras | | +--ro default-realm-name string | |||
| | +--ro pcp-server* [pcp-serv-id] | +--ro kbr-kdc-option! {kbr-kdc-op}? | |||
| | +--ro pcp-serv-id uint8 | | +--ro kdc-info* [kdc-id] | |||
| | +--ro pcp-serv-addr inet:ipv6-address | | +--ro kdc-id uint8 | |||
| +--ro s46-rule-paras | | +--ro priority uint16 | |||
| | +--ro s46-rule* [rule-id] | | +--ro weight uint16 | |||
| | +--ro rule-id uint8 | | +--ro transport-type uint8 | |||
| | +--ro rule-type enumeration | | +--ro port-number uint16 | |||
| | +--ro ea-len uint8 | | +--ro kdc-ipv6-addr inet:ipv6-address | |||
| | +--ro prefix4-len uint8 | | +--ro realm-name string | |||
| | +--ro ipv4-prefix inet:ipv4-prefix | +--ro sol-max-rt-option! {sol-max-rt-op}? | |||
| | +--ro prefix6-len uint8 | | +--ro sol-max-rt-value yang:timeticks | |||
| | +--ro ipv6-prefix inet:ipv6-prefix | +--ro inf-max-rt-option! {inf-max-rt-op}? | |||
| | +--ro port-parameter | | +--ro inf-max-rt-value yang:timeticks | |||
| | +--ro offset uint8 | +--ro addr-selection-option! {addr-selection-op}? | |||
| | +--ro psid-len uint8 | | +--ro a-bit-set boolean | |||
| | +--ro psid uint16 | | +--ro p-bit-set boolean | |||
| +--ro s46-br-paras | | +--ro policy-table* [policy-id] | |||
| | +--ro br* [br-id] | | +--ro policy-id uint8 | |||
| | +--ro br-id uint8 | | +--ro label uint8 | |||
| | +--ro br-ipv6-addr inet:ipv6-address | | +--ro precedence uint8 | |||
| +--ro s46-dmr-paras | | +--ro prefix-len uint8 | |||
| | +--ro dmr* [dmr-id] | | +--ro prefix inet:ipv6-prefix | |||
| | +--ro dmr-id uint8 | +--ro pcp-server-option! {pcp-server-op}? | |||
| | +--ro dmr-prefix-len uint8 | | +--ro pcp-server* [pcp-serv-id] | |||
| | +--ro dmr-ipv6-prefix inet:ipv6-prefix | | +--ro pcp-serv-id uint8 | |||
| +--ro s46-v4-v6-binding-paras | | +--ro pcp-serv-addr inet:ipv6-address | |||
| | +--ro ipv4-addr inet:ipv4-address | +--ro s46-rule-option! {s46-rule-op}? | |||
| | +--ro bind-prefix6-len uint8 | | +--ro s46-rule* [rule-id] | |||
| | +--ro port-parameter | | +--ro rule-id uint8 | |||
| | | +--ro offset uint8 | | +--ro rule-type enumeration | |||
| | | +--ro psid-len uint8 | | +--ro prefix4-len uint8 | |||
| | | +--ro psid uint16 | | +--ro ipv4-prefix inet:ipv4-prefix | |||
| | +--ro erp-local-domain-name string | | +--ro prefix6-len uint8 | |||
| +--ro supported-options | | +--ro ipv6-prefix inet:ipv6-prefix | |||
| +--ro supported-option* [option-code] | | +--ro port-parameter | |||
| +--ro option-code uint16 | | +--ro offset uint8 | |||
| +--ro description string | | +--ro psid-len uint8 | |||
+--ro packet-stats | | +--ro psid uint16 | |||
+--ro solicit-count uint32 | +--ro s46-br-option! {s46-br-op}? | |||
+--ro request-count uint32 | | +--ro br* [br-id] | |||
+--ro renew-count uint32 | | +--ro br-id uint8 | |||
+--ro rebind-count uint32 | | +--ro br-ipv6-addr inet:ipv6-address | |||
+--ro decline-count uint32 | +--ro s46-dmr-option! {s46-dmr-op}? | |||
+--ro release-count uint32 | | +--ro dmr* [dmr-id] | |||
+--ro info-req-count uint32 | | +--ro dmr-id uint8 | |||
+--ro advertise-count uint32 | | +--ro dmr-prefix-len uint8 | |||
+--ro confirm-count uint32 | | +--ro dmr-ipv6-prefix inet:ipv6-prefix | |||
+--ro reply-count uint32 | +--ro s46-v4-v6-binding-option! {s46-v4-v6-binding-op}? | |||
+--ro reconfigure-count uint32 | +--ro ce* [ce-id] | |||
+--ro ce-id uint8 | ||||
+--ro ipv4-addr inet:ipv4-address | ||||
+--ro bind-prefix6-len uint8 | ||||
+--ro bind-ipv6-prefix inet:ipv6-prefix | ||||
+--ro port-parameter | ||||
+--ro offset uint8 | ||||
+--ro psid-len uint8 | ||||
+--ro psid uint16 | ||||
notifications: | ||||
+---n notifications | ||||
+--ro dhcpv6-client-event | ||||
+--ro ia-lease-event | ||||
| +--ro event-type enumeration | ||||
| +--ro duid | ||||
| | +--ro type-code? uint16 | ||||
| | +--ro (duid-type)? | ||||
| | +--:(duid-llt) | ||||
| | | +--ro duid-llt-hardware-type? uint16 | ||||
| | | +--ro duid-llt-time? yang:timeticks | ||||
| | | +--ro duid-llt-link-layer-addr? yang:mac-address | ||||
| | +--:(duid-en) | ||||
| | | +--ro duid-en-enterprise-number? uint32 | ||||
| | | +--ro duid-en-identifier? string | ||||
| | +--:(duid-ll) | ||||
| | | +--ro duid-ll-hardware-type? uint16 | ||||
| | | +--ro duid-ll-link-layer-addr? yang:mac-address | ||||
| | +--:(duid-uuid) | ||||
| | | +--ro uuid? yang:uuid | ||||
| | +--:(duid-invalid) | ||||
| | +--ro data? binary | ||||
| +--ro iaid uint32 | ||||
| +--ro serv-name? string | ||||
| +--ro description? string | ||||
+--ro invalid-ia-detected | ||||
| +--ro duid | ||||
| | +--ro type-code? uint16 | ||||
| | +--ro (duid-type)? | ||||
| | +--:(duid-llt) | ||||
| | | +--ro duid-llt-hardware-type? uint16 | ||||
| | | +--ro duid-llt-time? yang:timeticks | ||||
| | | +--ro duid-llt-link-layer-addr? yang:mac-address | ||||
| | +--:(duid-en) | ||||
| | | +--ro duid-en-enterprise-number? uint32 | ||||
| | | +--ro duid-en-identifier? string | ||||
| | +--:(duid-ll) | ||||
| | | +--ro duid-ll-hardware-type? uint16 | ||||
| | | +--ro duid-ll-link-layer-addr? yang:mac-address | ||||
| | +--:(duid-uuid) | ||||
| | | +--ro uuid? yang:uuid | ||||
| | +--:(duid-invalid) | ||||
| | +--ro data? binary | ||||
| +--ro cli-duid uint32 | ||||
| +--ro iaid uint32 | ||||
| +--ro serv-name? string | ||||
| +--ro description? string | ||||
+--ro retransmission-failed | ||||
| +--ro duid | ||||
| | +--ro type-code? uint16 | ||||
| | +--ro (duid-type)? | ||||
| | +--:(duid-llt) | ||||
| | | +--ro duid-llt-hardware-type? uint16 | ||||
| | | +--ro duid-llt-time? yang:timeticks | ||||
| | | +--ro duid-llt-link-layer-addr? yang:mac-address | ||||
| | +--:(duid-en) | ||||
| | | +--ro duid-en-enterprise-number? uint32 | ||||
| | | +--ro duid-en-identifier? string | ||||
| | +--:(duid-ll) | ||||
| | | +--ro duid-ll-hardware-type? uint16 | ||||
| | | +--ro duid-ll-link-layer-addr? yang:mac-address | ||||
| | +--:(duid-uuid) | ||||
| | | +--ro uuid? yang:uuid | ||||
| | +--:(duid-invalid) | ||||
| | +--ro data? binary | ||||
| +--ro description enumeration | ||||
+--ro failed-status-turn-up | ||||
+--ro duid | ||||
| +--ro type-code? uint16 | ||||
| +--ro (duid-type)? | ||||
| +--:(duid-llt) | ||||
| | +--ro duid-llt-hardware-type? uint16 | ||||
| | +--ro duid-llt-time? yang:timeticks | ||||
| | +--ro duid-llt-link-layer-addr? yang:mac-address | ||||
| +--:(duid-en) | ||||
| | +--ro duid-en-enterprise-number? uint32 | ||||
| | +--ro duid-en-identifier? string | ||||
| +--:(duid-ll) | ||||
| | +--ro duid-ll-hardware-type? uint16 | ||||
| | +--ro duid-ll-link-layer-addr? yang:mac-address | ||||
| +--:(duid-uuid) | ||||
| | +--ro uuid? yang:uuid | ||||
| +--:(duid-invalid) | ||||
| +--ro data? binary | ||||
+--ro status-code enumeration | ||||
Introduction of important nodes: | Introduction of important nodes: | |||
o client-config: This container includes the configuration data of | ||||
the client. | ||||
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 duid: Each server and client has only one DUID (DHCP Unique | o duid: Each server and client has only one DUID (DHCP Unique | |||
Identifier). The DUID here will be carried in the Client ID | Identifier). The DUID here will be carried in the Client ID | |||
option to identify a specific DHCPv6 client. This leaf are same | option to identify a specific DHCPv6 client. This leaf are same | |||
as the "duid" leaf in "dhcpv6-server" feature. | as the "duid" leaf in "dhcpv6-server" feature. | |||
skipping to change at page 21, line 38 ¶ | skipping to change at page 26, line 39 ¶ | |||
pattern. | pattern. | |||
o mo-tab: The management tab label indicates the operation mode of | o mo-tab: The management tab label indicates the operation mode of | |||
the DHCPv6 client. 'm'=1 and 'o'=1 indicate the client will use | 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 | 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 | meaningless combination. 'm'=0 and 'o'=1 indicate the client will | |||
use stateless DHCPv6 to obtain configuration data apart from | use stateless DHCPv6 to obtain configuration data apart from | |||
addresses/prefixes data. 'm'=0 and 'o'=0 represent the client will | addresses/prefixes data. 'm'=0 and 'o'=0 represent the client will | |||
not use DHCPv6 but use SLAAC to achieve configuration. | not use DHCPv6 but use SLAAC to achieve configuration. | |||
o oro-options: This container provide a way to configure the list of | ||||
options that the client will request in its ORO option. | ||||
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 fulfil 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 identity-association: IA is a construct through which a server and | o option-request-option: This container provide a way to configure | |||
a client can identify, group, and manage a set of related IPv6 | the list of options that the client will request in its ORO | |||
addresses. The key of the "identity-association" list is a 4-byte | option. | |||
number IAID defined in [RFC3315]. | ||||
o client-state: This container includes the state data of the | ||||
client. | ||||
o if-other-paras: A client can obtain extra configuration data other | o if-other-paras: A client can obtain extra configuration data other | |||
than address and prefix information through DHCPv6 options. This | than address and prefix information through DHCPv6 options. This | |||
container describes such data the client was configured through | container describes such data the client was configured through | |||
DHCPv6. The potential configuration data may include DNS server | DHCPv6. The potential configuration data may include DNS server | |||
parameters, SIP server parameters and etc. | parameters, SIP server parameters and etc. | |||
o supported-options: This state data container defines a list of | ||||
options supported by the client for administrator to interrogate a | ||||
client's capabilities. | ||||
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. | |||
2.4. Notifications Mechanism for DHCPv6 | ||||
+--rw dhcpv6 | ||||
+-- ... | ||||
| | ||||
+--n notifications | ||||
+--n dhcpv6-server-event | ||||
| +--n pool-running-out | ||||
| | +--ro utilization-ratio uint16 | ||||
| | +--ro duid duidtype | ||||
| | +--ro serv-name? string | ||||
| | +--ro pool-name string | ||||
| +--n invalid-client-detected | ||||
| +--ro duid duidtype | ||||
| +--ro description? string | ||||
+--n dhcpv6-relay-event | ||||
| +--n topo-changed | ||||
| +--ro relay-if-name string | ||||
| +--ro first-hop boolean | ||||
| +--ro last-entity-addr inet:ipv6-address | ||||
+--n dhcpv6-client-event | ||||
+--n ia-lease-event | ||||
| +--ro event-type enumeration | ||||
| +--ro duid duidtype | ||||
| +--ro iaid uint32 | ||||
| +--ro serv-name? string | ||||
| +--ro description? string | ||||
+--n invalid-ia-detected | ||||
| +--ro duid duidtype | ||||
| +--ro iaid uint32 | ||||
| +--ro serv-name? string | ||||
| +--ro description? string | ||||
+--n retransmission-failed | ||||
| +--ro duid duidtype | ||||
| +--ro description enumeration | ||||
+--n failed-status-turn-up | ||||
+--ro duid duidtype | ||||
+--ro status-code enumeration | ||||
Information about notifications: | Information about notifications: | |||
o pool-running-out: raised when the address/prefix pool is going to | ||||
run out. A threshold for utilization ratio of the pool has been | ||||
defined in the server feature so that it will notify the | ||||
administrator when the utilization ratio reaches the threshold, | ||||
and such threshold is a settable parameter. | ||||
o invalid-client-detected: raised when the server has found a client | ||||
which can be regarded as a potential attacker. Some description | ||||
could also be included. | ||||
o topo-changed: raised when the topology of the relay agent is | ||||
changed. | ||||
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 | |||
client can be proved to be invalid. Possible condition includes | client can be proved to be invalid. Possible condition includes | |||
duplicated address, illegal address, etc. | duplicated address, illegal address, etc. | |||
o retransmission-failed: raised when the retransmission mechanism | o retransmission-failed: raised when the retransmission mechanism | |||
defined in [RFC3315] is failed. | defined in [RFC3315] is failed. | |||
o failed-status-turn-up: raised when the client receives a message | o failed-status-turn-up: raised when the client receives a message | |||
includes an unsuccessful Status Code option. | includes an unsuccessful Status Code option. | |||
3. DHCPv6 YANG Model | 3. DHCPv6 YANG Model | |||
This module imports typedefs from [RFC6991]. | 3.1. DHCPv6 Server YANG Model | |||
<CODE BEGINS> file "ietf-dhcpv6@2017-10-26.yang" | ||||
module ietf-dhcpv6 { | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6"; | ||||
prefix "dhcpv6"; | ||||
import ietf-inet-types { | ||||
prefix inet; | ||||
revision-date "2013-07-15"; | ||||
} | ||||
import ietf-yang-types { | ||||
prefix yang; | ||||
revision-date "2013-07-15"; | ||||
} | ||||
organization "dhc wg"; | ||||
contact "yong@csnet1.cs.tsinghua.edu.cn | ||||
wangh13@mails.tsinghua.edu.cn | ||||
lh.sunlinh@gmail.com | ||||
Ted.Lemon@nominum.com | ||||
ian.farrer@telekom.de | ||||
sladjana.zechlin@telekom.de"; | ||||
description "This model defines a YANG data model that can be | ||||
used to configure and manage DHCPv6 server, DHCPv6 relay and | ||||
DHCPv6 client."; | ||||
revision 2017-10-26 { | ||||
description "version09: resolve feedbacks from IETF96"; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-04"; | ||||
} | ||||
revision 2016-06-18 { | ||||
description "version08: resolve yang compiling error: | ||||
top-level node must not be mandatory, wait for YANG | ||||
doctor's review"; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-03"; | ||||
} | ||||
revision 2016-06-15 { | ||||
description "version07: resolve yang compiling errors, wait | ||||
for YANG doctor's review"; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-02"; | ||||
} | ||||
revision 2016-03-21 { | ||||
description "version06: resolve feedbacks from IETF94"; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-01"; | This module imports typedefs from [RFC6991]. | |||
} | ||||
revision 2015-10-16 { | ||||
description "version05: Omit the feature statement. Modify | ||||
model according to comments from Huawei. Also correct some | ||||
grammar errors."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang-00"; | <CODE BEGINS> file "ietf-dhcpv6-server@2017-12-22.yang" | |||
} | module ietf-dhcpv6-server { | |||
revision 2015-09-25 { | yang-version 1.1; | |||
description "version04: Correct duid and grammar errors."; | namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-server"; | |||
prefix "dhcpv6-server"; | ||||
reference "I-D: draft-cui-dhc-dhcpv6-yang-04"; | import ietf-inet-types { | |||
} | prefix inet; | |||
revision 2015-07-01 { | revision-date "2013-07-15"; | |||
description "version03: Correct grammar errors."; | } | |||
import ietf-yang-types { | ||||
prefix yang; | ||||
revision-date "2013-07-15"; | ||||
} | ||||
import ietf-dhcpv6-options { | ||||
prefix dhcpv6-options; | ||||
revision-date "2017-12-22"; | ||||
} | ||||
reference "I-D: draft-cui-dhc-dhcpv6-yang-03"; | organization "DHC WG"; | |||
} | contact "yong@csnet1.cs.tsinghua.edu.cn | |||
revision 2015-04-13 { | lh.sunlinh@gmail.com | |||
description "version02: Correct grammar errors."; | ian.farrer@telekom.de | |||
sladjana.zechlin@telekom.de | ||||
hezihao9512@gmail.com"; | ||||
reference "I-D: draft-cui-dhc-dhcpv6-yang-02"; | description "This model defines a YANG data model that can be | |||
} | used to configure and manage a DHCPv6 server."; | |||
revision 2015-04-02 { | ||||
description "version01: Correct grammar errors, Reuse | ||||
groupings, Update 'dhcpv6-relay' feature, Add | ||||
notifications."; | ||||
reference "I-D: draft-cui-dhc-dhcpv6-yang-01"; | revision 2017-12-22 { | |||
} | description "Resolve most issues on Ian's github."; | |||
revision 2015-03-04 { | reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | |||
description "version00: Initial revision."; | } | |||
reference "I-D: draft-cui-dhc-dhcpv6-yang-00"; | revision 2017-11-24 { | |||
} | description "First version of the separated server specific | |||
YANG model."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
/* | /* | |||
* Typedef | * Typedef | |||
*/ | */ | |||
typedef threshold { | typedef threshold { | |||
type union { | type union { | |||
type uint16 { | type uint16 { | |||
range 0..100; | range 0..100; | |||
} | } | |||
type enumeration { | type enumeration { | |||
enum "disabled" { | enum "disabled" { | |||
description "No threshold"; | description "No threshold"; | |||
} | ||||
} | } | |||
} | } | |||
description "Threshold value in percent"; | ||||
} | } | |||
description "Threshold value in percent"; | ||||
} | ||||
/* | /* | |||
* Grouping | * Grouping | |||
*/ | */ | |||
grouping vendor-infor { | grouping vendor-infor { | |||
description "Vendor information."; | description "Vendor information."; | |||
container vendor-info { | container vendor-info { | |||
description ""; | description ""; | |||
leaf ent-num { | leaf ent-num { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "enterprise number"; | description "enterprise number"; | |||
} | } | |||
leaf-list data { | leaf-list data { | |||
type string; | type string; | |||
description "specific vendor info"; | description "specific vendor info"; | |||
} | } | |||
} | } | |||
} | } | |||
grouping duid { | grouping duid { | |||
description "DHCP Unique Identifier"; | description "DHCP Unique Identifier"; | |||
reference "RFC3315: Section 9"; | reference "RFC3315: Section 9 and RFC6355: Section 4"; | |||
leaf type-code { | ||||
type uint16; | ||||
default 65535; | ||||
description "Type code of this DUID"; | ||||
} | ||||
choice duid-type { | choice duid-type { | |||
default duid-invalid; | ||||
description "Selects the format for the DUID."; | description "Selects the format for the DUID."; | |||
case duid-llt { | case duid-llt { | |||
description "DUID Based on Link-layer Address Plus Time"; | description "DUID Based on Link-layer Address Plus Time (Type 1 - DUID-LLT)"; | |||
reference "RFC3315 Section 9.2"; | reference "RFC3315 Section 9.2"; | |||
leaf duid-llt-hardware-type { | leaf duid-llt-hardware-type { | |||
type uint16; | type uint16; | |||
description "Hardware type as assigned by IANA (RFC826)."; | description "Hardware type as assigned by IANA (RFC826)."; | |||
} | } | |||
leaf duid-llt-time { | leaf duid-llt-time { | |||
type yang:timeticks; | type yang:timeticks; | |||
description "The time value is the time that the DUID is generated | description "The time value is the time that the DUID is generated | |||
represented in seconds since midnight (UTC), January 1, 2000, | represented in seconds since midnight (UTC), January 1, 2000, | |||
modulo 2^32."; | modulo 2^32."; | |||
} | } | |||
leaf duid-llt-link-layer-addr { | leaf duid-llt-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-en { | case duid-en { | |||
description "DUID Assigned by Vendor Based on Enterprise Number"; | description "DUID Assigned by Vendor Based on Enterprise Number (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 using it"; | description "Indentifier, unique to the device that is using it"; | |||
} | } | |||
} | } | |||
case duid-ll { | case duid-ll { | |||
description "DUID Based on Link-layer Address"; | 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-time { | leaf duid-ll-link-layer-addr { | |||
type yang:timeticks; | type yang:mac-address; | |||
description "The time value is the time that the DUID is generated | description "Link-layer address as described in RFC2464"; | |||
represented in seconds since midnight (UTC), January 1, 2000, | ||||
modulo 2^32."; | ||||
} | ||||
} | } | |||
} | ||||
} | ||||
grouping portset-para { | ||||
description "portset parameters"; | ||||
container port-parameter { | ||||
description "port parameter"; | ||||
leaf offset { | ||||
type uint8; | ||||
mandatory true; | ||||
description "offset in a port set"; | ||||
} | } | |||
leaf psid-len { | case duid-uuid { | |||
type uint8; | description "DUID Based on Universally Unique Identifier (Type 4 - DUID-UUID)"; | |||
mandatory true; | reference "RFC6335 Defination of the UUID-Based Unique Identifier"; | |||
description "length of a psid"; | leaf uuid { | |||
type yang:uuid; | ||||
description "A Universally Unique IDentifier in the string representation | ||||
defined in RFC 4122. The canonical representation uses | ||||
lowercase characters"; | ||||
} | ||||
} | } | |||
leaf psid { | case duid-invalid { | |||
type uint16; | description "DUID based on free raw bytes"; | |||
mandatory true; | leaf data { | |||
description "psid value"; | type binary; | |||
description "The bits to be used as the identifier"; | ||||
} | ||||
} | } | |||
} | } | |||
} | } | |||
/* | ||||
* Data Nodes | ||||
*/ | ||||
container server { | ||||
presence "Enables the server"; | ||||
description "DHCPv6 server portion"; | ||||
/* | /* | |||
* Data Nodes | * Configuration data | |||
*/ | */ | |||
container server-config { | ||||
container server { | description "configuration tree of server"; | |||
presence "Enables server"; | container serv-attributes { | |||
description "dhcpv6 server portion"; | description "This container contains basic attributes | |||
container serv-attributes { | of a DHCPv6 server such as IPv6 address, server name | |||
description "This container contains basic attributes | and so on. Some optional functions that can be provided | |||
of a DHCPv6 server such as DUID, server name and so | by 0the server is also included."; | |||
on. Some optional functions that can be provided by | leaf name { | |||
the server is also included."; | ||||
leaf name { | ||||
type string; | ||||
description "server's name"; | ||||
} | ||||
container duid { | ||||
description "Sets the DUID"; | ||||
uses duid; | ||||
} | ||||
leaf-list ipv6-address { | ||||
type inet:ipv6-address; | ||||
description "Server's IPv6 address."; | ||||
} | ||||
leaf description { | ||||
type string; | ||||
description "Description of the server."; | ||||
} | ||||
leaf pd-function { | ||||
type boolean; | ||||
mandatory true; | ||||
description "Whether the server can act as a | ||||
delegating router to perform prefix delegation | ||||
([RFC3633])."; | ||||
} | ||||
leaf stateless-service { | ||||
type boolean; | ||||
mandatory true; | ||||
description "A boolean value specifies whether | ||||
the server support client-server exchanges | ||||
involving two messages defined in ([RFC3315])."; | ||||
} | ||||
leaf rapid-commit { | ||||
type boolean; | ||||
mandatory true; | ||||
description "A boolean value specifies whether | ||||
the server support client-server exchanges | ||||
involving two messages defined in ([RFC3315])."; | ||||
} | ||||
leaf-list interfaces-config { | ||||
type string; | ||||
description "A leaf list to denote which one or | ||||
more interfaces the server should listen on. The | ||||
default value is to listen on all the interfaces. | ||||
This node is also used to set a unicast address | ||||
for the server to listen with a specific interface. | ||||
For example, if people want the server to listen | ||||
on a unicast address with a specific interface, he | ||||
can use the format like 'eth1/2001:db8::1'."; | ||||
} | ||||
uses vendor-infor; | ||||
} | ||||
container option-sets { | ||||
description "DHCPv6 employs various options to carry | ||||
additional information and parameters in DHCP messages. | ||||
This container defines all the possible options that | ||||
need to be configured at the server side."; | ||||
list option-set { | ||||
key option-set-id; | ||||
description "A server may allow different option | ||||
sets to be configured for different conditions | ||||
(i.e. different networks, clients and etc). This | ||||
'option-set' list enables various sets of options | ||||
being defined and configured in a single server. | ||||
Different sets are distinguished by the key called | ||||
'option-set-id'. All the possible options discussed | ||||
above are defined in the list and each option is | ||||
corresponding to a container."; | ||||
leaf option-set-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "the option-set-id key"; | ||||
} | ||||
list new-or-standard-option { | ||||
key option-code; | ||||
description "new or standard option"; | ||||
leaf option-code { | ||||
type uint16; | ||||
mandatory true; | ||||
description "the option code key"; | ||||
} | ||||
leaf option-name { | ||||
type string; | type string; | |||
mandatory true; | description "server's name"; | |||
description "the new option's name"; | ||||
} | } | |||
leaf option-description { | container duid { | |||
type string; | description "Sets the DUID"; | |||
mandatory true; | uses duid; | |||
description "description of new option"; | ||||
} | } | |||
leaf option-reference { | leaf-list ipv6-address { | |||
type string; | type inet:ipv6-address; | |||
description "reference to the | description "Server's IPv6 address."; | |||
specification"; | ||||
} | } | |||
leaf option-value { | leaf description { | |||
type string; | type string; | |||
mandatory true; | description "Description of the server."; | |||
description "the new option's value"; | ||||
} | ||||
} | ||||
leaf user-class-value { | ||||
type string; | ||||
description "use class option's value"; | ||||
} | ||||
leaf enterprise-number { | ||||
type uint32; | ||||
description "enterprise number"; | ||||
} | ||||
leaf store-client-link-layer { | ||||
type boolean; | ||||
description "whether to store client's | ||||
link layer address"; | ||||
} | ||||
container preference-option { | ||||
description "preference option"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this option will be included in the | ||||
option set"; | ||||
} | ||||
leaf preference-value { | ||||
type uint8; | ||||
mandatory true; | ||||
description "the value for this option"; | ||||
} | ||||
} | ||||
container sip-server-option { | ||||
description "sip server option"; | ||||
//Note - this container is currently modelling two options (21 & 22). It would allow the | ||||
//config of a mixed list of domain names and addresses in a way that doesn't follow the | ||||
//RFC. Needs to be broken into SIP Domain list and SIP Address list containers | ||||
reference "RFC3319: Dynamic Host Configuration Protocol | ||||
(DHCPv6) Options for Session Initiation Protocol (SIP) | ||||
Servers"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this | ||||
option will be included in the | ||||
option set"; | ||||
} | ||||
list sip-server { | ||||
key sip-serv-id; | ||||
description "sip server info"; | ||||
leaf sip-serv-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "sip server id"; | ||||
} | ||||
leaf sip-serv-domain-name { | ||||
type string; | ||||
mandatory true; | ||||
description "sip server domain | ||||
name"; | ||||
} | ||||
leaf sip-serv-addr { | ||||
type inet:ipv6-address; | ||||
mandatory true; | ||||
description "sip server addr"; | ||||
} | ||||
} | ||||
} | ||||
container dns-config-option { | ||||
description "OPTION_DNS_SERVERS (23) DNS recursive Name | ||||
Server option"; | ||||
reference "RFC3646: DNS Configuration options for Dynamic | ||||
Host Configuration Protocol for IPv6 (DHCPv6)"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this | ||||
option will be included in the | ||||
option set"; | ||||
} | ||||
list dns-server { | ||||
key dns-serv-id; | ||||
description "dns server info"; | ||||
leaf dns-serv-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "DNS server list entry ID."; | ||||
} | ||||
leaf dns-serv-addr { | ||||
type inet:ipv6-address; | ||||
mandatory true; | ||||
description "DNS server address."; | ||||
} | ||||
} | ||||
} | ||||
container domain-searchlist-option { | ||||
description "OPTION_DOMAIN_LIST (24) Domain Search List Option"; | ||||
reference "RFC3646: DNS Configuration options for Dynamic | ||||
Host Configuration Protocol for IPv6 (DHCPv6)"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this | ||||
option will be included in the | ||||
option set"; | ||||
} | ||||
list domain-searchlist { | ||||
key domain-searchlist-id; | ||||
description "dns server info"; | ||||
leaf domain-searchlist-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "Domain seachlist entry ID."; | ||||
} | ||||
leaf domain-search-list-entry { | ||||
type string; | ||||
mandatory true; | ||||
description "Domain search list entry."; | ||||
} | ||||
} | ||||
} | ||||
container nis-config-option { | ||||
description "OPTION_NIS_SERVERS (27) Network Information Service (NIS) | ||||
Servers Option."; | ||||
reference "RFC3989: Network Information Service (NIS) Configuration | ||||
Options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6)"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this | ||||
option will be included in the | ||||
option set"; | ||||
} | ||||
list nis-server { | ||||
key nis-serv-id; | ||||
description "nis server info"; | ||||
leaf nis-serv-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "nis server id"; | ||||
} | ||||
leaf nis-serv-addr { | ||||
type inet:ipv6-address; | ||||
mandatory true; | ||||
description "nis server addr"; | ||||
} | ||||
} | ||||
} | ||||
container nis-plus-config-option { | ||||
description "OPTION_NISP_SERVERS (28): Network Information Service V2 | ||||
(NIS+) Servers Option."; | ||||
reference "RFC3989: Network Information Service (NIS) Configuration | ||||
Options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6)"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this | ||||
option will be included in the | ||||
option set"; | ||||
} | ||||
list nis-plus-server { | ||||
key nis-plus-serv-id; | ||||
description "NIS+ server information."; | ||||
leaf nis-plus-serv-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "nisp server id"; | ||||
} | ||||
leaf nis-plus-serv-addr { | ||||
type inet:ipv6-address; | ||||
mandatory true; | ||||
description "nisp server addr"; | ||||
} | ||||
} | ||||
} | ||||
container sntp-server-option { | ||||
description "OPTION_SNTP_SERVERS (31) Simple Network Time Protocol | ||||
(SNTP) Servers Option"; | ||||
reference "RFC4075: Simple Network Time Protocol (SNTP) Configuration | ||||
Option for DHCPv6"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this | ||||
option will be included in the | ||||
option set"; | ||||
} | ||||
list sntp-server { | ||||
key sntp-serv-id; | ||||
description "sntp server info"; | ||||
leaf sntp-serv-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "sntp server id"; | ||||
} | ||||
leaf sntp-serv-addr { | ||||
type inet:ipv6-address; | ||||
mandatory true; | ||||
description "sntp server addr"; | ||||
} | ||||
} | ||||
} | ||||
container info-refresh-time-option { | ||||
description "OPTION_INFORMATION_REFRESH_TIME (32) Information Refresh | ||||
Time option."; | ||||
reference "RFC4242: Information Refresh Time Option for Dynamic Host | ||||
Configuration Protocol for IPv6 (DHCPv6"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this | ||||
option will be included in the | ||||
option set"; | ||||
} | ||||
leaf info-refresh-time { | ||||
type yang:timeticks; | ||||
mandatory true; | ||||
description "The refresh time."; | ||||
} | ||||
} | ||||
container cli-fqdn-option { | ||||
description "OPTION_CLIENT_FQDN (39) DHCPv6 Client FQDN Option"; | ||||
reference "RFC4704: The Dynamic Host Configuration Protocol for IPv6 | ||||
(DHCPv6) Client Fully Qualified Domain Name (FQDN) Option"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this option will be included in the | ||||
option set"; | ||||
} | ||||
leaf server-initiate-update { | ||||
type boolean; | ||||
mandatory true; | ||||
description "server initiate"; | ||||
} | ||||
leaf client-initiate-update { | ||||
type boolean; | ||||
mandatory true; | ||||
description "client initiate"; | ||||
} | } | |||
leaf modify-name-from-cli { | leaf pd-function { | |||
type boolean; | type boolean; | |||
mandatory true; | mandatory true; | |||
description "modify by client"; | description "Whether the server can act as a | |||
delegating router to perform prefix delegation | ||||
([RFC3633])."; | ||||
} | } | |||
} | leaf stateless-service { | |||
container posix-timezone-option { | ||||
description "OPTION_NEW_POSIX_TIMEZONE (41) Posix Timezone option"; | ||||
reference "RFC4822: Timezone Options for DHCP"; | ||||
leaf enable { | ||||
type boolean; | type boolean; | |||
mandatory true; | mandatory true; | |||
description "indicate whether this option will be included in the | description "A boolean value specifies whether | |||
option set"; | the server support client-server exchanges | |||
} | involving two messages defined in ([RFC3315])."; | |||
leaf tz-posix { | ||||
type string; | ||||
mandatory true; | ||||
description "TZ Posix IEEE 1003.1 String"; | ||||
} | } | |||
} | leaf rapid-commit { | |||
container posix-timezone-db-option { | ||||
description "OPTION_NEW_TZDB_TIMEZONE (42) Timezone Database option"; | ||||
reference "RFC4822: Timezone Options for DHCP"; | ||||
leaf enable { | ||||
type boolean; | type boolean; | |||
mandatory true; | mandatory true; | |||
description "indicate whether this option will be included in the | description "A boolean value specifies whether | |||
option set"; | the server support client-server exchanges | |||
involving two messages defined in ([RFC3315])."; | ||||
} | } | |||
leaf tz-database { | leaf-list interfaces-config { | |||
// Note - this should probably be references to | ||||
// entries in the ietf-interfaces model | ||||
type string; | type string; | |||
mandatory true; | description "A leaf list to denote which one or | |||
description "Reference to the TZ Database"; | more interfaces the server should listen on. The | |||
default value is to listen on all the interfaces. | ||||
This node is also used to set a unicast address | ||||
for the server to listen with a specific interface. | ||||
For example, if people want the server to listen | ||||
on a unicast address with a specific interface, he | ||||
can use the format like 'eth1/2001:db8::1'."; | ||||
} | } | |||
uses vendor-infor; | ||||
} | } | |||
container ntp-server-option { | ||||
//This option looks like it needs work to correctly model the | ||||
//option as defined in the RFC. | ||||
description "OPTION_NTP_SERVER (56) NTP Server Option for DHCPv6"; | ||||
reference "RFC5908: Network Time Protocol (NTP) Server Option for | ||||
DHCPv6"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this option will be included in the | ||||
option set"; | ||||
} | ||||
list ntp-server { | ||||
key ntp-serv-id; | ||||
description "ntp server info"; | ||||
leaf ntp-serv-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "ntp server id"; | ||||
} | ||||
leaf ntp-serv-addr-suboption { | ||||
type inet:ipv6-address; | ||||
mandatory true; | ||||
description "ntp server addr"; | ||||
container option-sets { | ||||
description "DHCPv6 employs various options to carry additional | ||||
information and parameters in DHCP messages. This container defines | ||||
all the possible options that need to be configured at the server | ||||
side. "; | ||||
list option-set { | ||||
key id; | ||||
description "A server may allow different option sets to be | ||||
configured for different conditions (i.e. different networks, | ||||
clients and etc). This 'option-set' list enables various sets of | ||||
options being defined and configured in a single server. Different | ||||
sets are distinguished by the key called 'option-set-id'. All the | ||||
possible options discussed above are defined in the list and each | ||||
option is corresponding to a container. Since all the options in | ||||
the list are optional, each container in this list has a 'presence' | ||||
statement to indicate whether this option (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)."; | ||||
leaf id { | ||||
type uint32; | ||||
description "option set id"; | ||||
} | ||||
uses dhcpv6-options:server-option-definitions; | ||||
uses dhcpv6-options:custom-option-definitions; | ||||
} | } | |||
leaf ntp-serv-mul-addr-suboption { | ||||
type inet:ipv6-address; | ||||
mandatory true; | ||||
description "ntp server multicast addr"; | ||||
} | ||||
leaf ntp-serv-fqdn-suboption { | ||||
type string; | ||||
mandatory true; | ||||
description "ntp server fqdn"; | ||||
} | ||||
} | ||||
} | ||||
container network-boot-option { | ||||
description "network boot option"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this | ||||
option will be included in the | ||||
option set"; | ||||
} | } | |||
list boot-file { | ||||
key boot-file-id; | container network-ranges { | |||
description "boot file info"; | description "This model supports a hierarchy | |||
leaf boot-file-id { | to achieve dynamic configuration. That is to | |||
type uint8; | say we could configure the server at different | |||
mandatory true; | levels through this model. The top level is a | |||
description "boot file id"; | global level which is defined as the container | |||
} | 'network-ranges'. The following levels are | |||
leaf-list suitable-arch-type { | defined as sub-containers under it. The | |||
type uint16; | 'network-ranges' contains the parameters | |||
description "architecture type"; | (e.g. option-sets) that would be allocated to | |||
} | all the clients served by this server."; | |||
leaf-list suitable-net-if { | list network-range { | |||
type uint32; | key network-range-id; | |||
description "network interface"; | description "Under the 'network-ranges' | |||
} | container, a 'network-range' list is | |||
leaf boot-file-url { | defined to configure the server at a | |||
type string; | network level which is also considered | |||
mandatory true; | as the second level. Different network | |||
description "url for boot file"; | are identified by the key 'network-range-id'. | |||
} | This is because a server may have different | |||
list boot-file-paras { | configuration parameters (e.g. option sets) | |||
key para-id; | for different networks."; | |||
description "boot file parameters"; | leaf network-range-id { | |||
leaf para-id { | type uint32; | |||
type uint8; | ||||
mandatory true; | mandatory true; | |||
description "parameter id"; | description "equivalent to subnet id"; | |||
} | } | |||
leaf parameter { | leaf network-description { | |||
type string; | type string; | |||
mandatory true; | mandatory true; | |||
description "parameter | description "description of the subnet"; | |||
value"; | ||||
} | } | |||
} | leaf network-prefix { | |||
} | type inet:ipv6-prefix; | |||
} | mandatory true; | |||
container aftr-name-option { | description "subnet prefix"; | |||
description "OPTION_AFTR_NAME (64) AFTR-Name DHCPv6 Option"; | } | |||
reference "RFC6334: Dynamic Host Configuration Protocol for IPv6 | leaf inherit-option-set { | |||
(DHCPv6) Option for Dual-Stack Lite"; | type boolean; | |||
leaf enable { | mandatory true; | |||
type boolean; | description "indicate whether to inherit | |||
mandatory true; | the configuration from higher level"; | |||
description "indicate whether this option will be included in the | } | |||
option set"; | leaf option-set-id { | |||
} | type leafref { | |||
leaf tunnel-endpoint-name { | path "/server/server-config/option-sets/option-set/id"; | |||
type string; | ||||
mandatory true; | } | |||
description "aftr name"; | description "The ID field of relevant option-set to be | |||
} | provisioned to clients of this network-range."; | |||
} | } | |||
container kerberos-option { | ||||
//This needs re-working and possibly splitting into several option | container reserved-addresses { | |||
//containers to follow the RFC. | description "reserved addresses"; | |||
description "kerberos option"; | list static-binding { | |||
reference "RFC6784: Kerberos Options for DHCPv6"; | key cli-id; | |||
leaf enable { | description "static binding of | |||
type boolean; | reserved addresses"; | |||
mandatory true; | leaf cli-id { | |||
description "indicate whether this | type uint32; | |||
option will be included in the | ||||
option set"; | ||||
} | ||||
leaf default-realm-name { | ||||
type string; | ||||
mandatory true; | ||||
description "default realm name"; | ||||
} | ||||
list kdc-info { | ||||
key kdc-id; | ||||
description "kdc info"; | ||||
leaf kdc-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "kdc id"; | ||||
} | ||||
leaf priority { | ||||
type uint16; | ||||
mandatory true; | ||||
description "priority"; | ||||
} | ||||
leaf weight { | ||||
type uint16; | ||||
mandatory true; | ||||
description "weight"; | ||||
} | ||||
leaf transport-type { | ||||
type uint8; | ||||
mandatory true; | ||||
description "transport type"; | ||||
} | ||||
leaf port-number { | ||||
type uint16; | ||||
mandatory true; | ||||
description "port number"; | ||||
} | ||||
leaf kdc-ipv6-addr { | ||||
type inet:ipv6-address; | ||||
mandatory true; | ||||
description "kdc ipv6 addr"; | ||||
} | ||||
leaf realm-name { | ||||
type string; | ||||
mandatory true; | ||||
description "realm name"; | ||||
} | ||||
} | ||||
} | ||||
container addr-selection-option { | ||||
description "address selection option"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this option will be included in the | ||||
option set"; | ||||
} | ||||
leaf a-bit-set { | ||||
type boolean; | ||||
mandatory true; | mandatory true; | |||
description "a bit"; | description "client id"; | |||
} | } | |||
leaf p-bit-set { | container duid { | |||
type boolean; | description "Sets the DUID"; | |||
uses duid; | ||||
} | ||||
leaf-list reserv-addr { | ||||
type inet:ipv6-address; | ||||
description "reserved addr"; | ||||
} | ||||
} | ||||
leaf-list other-reserv-addr { | ||||
type inet:ipv6-address; | ||||
description "other reserved | ||||
addr"; | ||||
} | ||||
} | ||||
container reserved-prefixes { | ||||
description "reserved prefixes"; | ||||
list static-binding { | ||||
key cli-id; | ||||
description "static binding"; | ||||
leaf cli-id { | ||||
type uint32; | ||||
mandatory true; | mandatory true; | |||
description "p bit"; | description "client id"; | |||
} | } | |||
list policy-table { | container duid { | |||
key policy-id; | description "Sets the DUID"; | |||
description "policy table"; | uses duid; | |||
leaf policy-id { | } | |||
type uint8; | leaf reserv-prefix-len { | |||
mandatory true; | type uint8; | |||
description "policy id"; | mandatory true; | |||
} | description "reserved | |||
leaf label { | prefix length"; | |||
type uint8; | } | |||
mandatory true; | leaf reserv-prefix { | |||
description "label"; | type inet:ipv6-prefix; | |||
} | mandatory true; | |||
leaf precedence { | description | |||
type uint8; | "reserved prefix"; | |||
mandatory true; | ||||
description "precedence"; | ||||
} | ||||
leaf prefix-len { | ||||
type uint8; | ||||
mandatory true; | ||||
description "prefix length"; | ||||
} | ||||
leaf prefix { | ||||
type inet:ipv6-prefix; | ||||
mandatory true; | ||||
description "prefix"; | ||||
} | ||||
} | } | |||
} | } | |||
container sol-max-rt-option { | leaf exclude-prefix-len { | |||
description "OPTION_SOL_MAX_RT (82) sol max rt option"; | type uint8; | |||
reference "RFC7083: Modification to Default Values of | mandatory true; | |||
SOL_MAX_RT and INF_MAX_RT"; | description "exclude prefix | |||
leaf enable { | length"; | |||
type boolean; | } | |||
leaf exclude-prefix { | ||||
type inet:ipv6-prefix; | ||||
mandatory true; | ||||
description "exclude prefix"; | ||||
} | ||||
list other-reserv-prefix { | ||||
key reserv-id; | ||||
description | ||||
"other reserved prefix"; | ||||
leaf reserv-id { | ||||
type uint32; | ||||
mandatory true; | mandatory true; | |||
description "indicate whether this | description | |||
option will be included in the | "reserved prefix id"; | |||
option set"; | ||||
} | } | |||
leaf sol-max-rt-value { | leaf prefix-len { | |||
type yang:timeticks; | type uint8; | |||
mandatory true; | mandatory true; | |||
description "sol max rt value"; | description "prefix length"; | |||
} | ||||
leaf prefix { | ||||
type inet:ipv6-prefix; | ||||
mandatory true; | ||||
description | ||||
"reserved prefix"; | ||||
} | } | |||
} | } | |||
container inf-max-rt-option { | } | |||
description "OPTION_INF_MAX_RT (83) inf max rt option"; | ||||
reference "RFC7083: Modification to Default Values of | container address-pools { | |||
SOL_MAX_RT and INF_MAX_RT"; | description "A container that describes | |||
leaf enable { | the DHCPv6 server's address pools."; | |||
type boolean; | 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-name'."; | ||||
leaf pool-id { | ||||
type uint32; | ||||
mandatory true; | mandatory true; | |||
description "indicate whether this | description "pool id"; | |||
option will be included in the | ||||
option set"; | ||||
} | } | |||
leaf inf-max-rt-value { | leaf pool-prefix { | |||
type inet:ipv6-prefix; | ||||
mandatory true; | ||||
description "pool 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 renew-time { | ||||
type yang:timeticks; | type yang:timeticks; | |||
mandatory true; | mandatory true; | |||
description "inf max rt value"; | description "renew time"; | |||
} | } | |||
} | leaf rebind-time { | |||
container pcp-server-option { | type yang:timeticks; | |||
description "OPTION_V6_PCP_SERVER (86) | mandatory true; | |||
pcp server option"; | description "rebind time"; | |||
reference "RFC7291: DHCP Options for the Port Control | } | |||
Protocol (PCP)"; | leaf preferred-lifetime { | |||
leaf enable { | type yang:timeticks; | |||
mandatory true; | ||||
description "preferred lifetime | ||||
for IA"; | ||||
} | ||||
leaf valid-lifetime { | ||||
type yang:timeticks; | ||||
mandatory true; | ||||
description "valid liftime for IA"; | ||||
} | ||||
leaf max-address-utilization-ratio { | ||||
type threshold; | ||||
mandatory true; | ||||
description "address pool utilization ratio threshold"; | ||||
} | ||||
leaf inherit-option-set { | ||||
type boolean; | type boolean; | |||
mandatory true; | mandatory true; | |||
description "indicate whether this | description "indicate whether to | |||
option will be included in the | inherit the configuration from | |||
option set"; | higher level"; | |||
} | } | |||
list pcp-server { | leaf option-set-id { | |||
key pcp-serv-id; | type leafref { | |||
description "pcp server info"; | path "/server/server-config/option-sets/option-set/id"; | |||
leaf pcp-serv-id { | } | |||
type uint8; | mandatory true; | |||
description "The ID field of relevant option-set to be | ||||
provisioned to clients of this address-pool."; | ||||
} | ||||
} | ||||
} | ||||
container prefix-pools { | ||||
description "If a server supports prefix | ||||
delegation function, this container will | ||||
be used to define the delegating router's | ||||
refix pools."; | ||||
list prefix-pool { | ||||
key pool-id; | ||||
description "Similar to server's | ||||
address pools, a delegating router | ||||
can also be configured with multiple | ||||
prefix pools specified by a list | ||||
called 'prefix-pool'."; | ||||
leaf pool-id { | ||||
type uint32; | ||||
mandatory true; | mandatory true; | |||
description "pcp server id"; | description "pool id"; | |||
} | } | |||
leaf pcp-serv-addr { | leaf prefix { | |||
type inet:ipv6-address; | type inet:ipv6-prefix; | |||
mandatory true; | mandatory true; | |||
description "pcp server addr"; | description "ipv6 prefix"; | |||
} | } | |||
leaf prefix-length { | ||||
} | ||||
} | ||||
container s46-rule-option { | ||||
description "s46 rule option"; | ||||
reference "RFC7598: DHCPv6 Options for Configuration of | ||||
Softwire Address and Port-Mapped Clients"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this | ||||
option will be included in the | ||||
option set"; | ||||
} | ||||
list s46-rule { | ||||
key rule-id; | ||||
description "s46 rule"; | ||||
leaf rule-id { | ||||
type uint8; | type uint8; | |||
mandatory true; | mandatory true; | |||
description "rule id"; | description "prefix length"; | |||
} | } | |||
leaf rule-type { | leaf renew-time { | |||
type enumeration { | type yang:timeticks; | |||
enum "BMR" { | ||||
description "BMR"; | ||||
} | ||||
enum "FMR" { | ||||
description "FMR"; | ||||
} | ||||
} | ||||
mandatory true; | mandatory true; | |||
description "rule type"; | description "renew time"; | |||
} | } | |||
leaf prefix4-len { | leaf rebind-time { | |||
type uint8; | type yang:timeticks; | |||
mandatory true; | mandatory true; | |||
description "ipv4 prefix length"; | description "rebind time"; | |||
} | } | |||
leaf ipv4-prefix { | leaf preferred-lifetime { | |||
type inet:ipv4-prefix; | type yang:timeticks; | |||
mandatory true; | mandatory true; | |||
description "ipv4 prefix"; | description "preferred lifetime for | |||
IA"; | ||||
} | } | |||
leaf prefix6-len { | leaf valid-lifetime { | |||
type uint8; | type yang:timeticks; | |||
mandatory true; | mandatory true; | |||
description "ipv6 prefix length"; | description "valid lifetime for IA"; | |||
} | } | |||
leaf ipv6-prefix { | leaf max-prefix-utilization-ratio { | |||
type inet:ipv6-prefix; | type threshold; | |||
mandatory true; | mandatory true; | |||
description "ipv6 prefix"; | description "prefix pool utilization ratio threshold"; | |||
} | ||||
leaf inherit-option-set { | ||||
type boolean; | ||||
mandatory true; | ||||
description "whether to inherit | ||||
configuration from higher level"; | ||||
} | ||||
leaf option-set-id { | ||||
type leafref { | ||||
path "/server/server-config/option-sets/option-set/id"; | ||||
} | ||||
description "The ID field of relevant option-set to be | ||||
provisioned to clients of this prefix-pool."; | ||||
} | } | |||
uses portset-para; | ||||
} | } | |||
} | } | |||
container s46-br-option { | container hosts { | |||
description "s46 br option"; | description "hosts level"; | |||
reference "RFC7598: DHCPv6 Options for Configuration of | list host { | |||
Softwire Address and Port-Mapped Clients"; | key cli-id; | |||
leaf enable { | description "specific host"; | |||
type boolean; | leaf cli-id { | |||
mandatory true; | type uint32; | |||
description "indicate whether this | ||||
option will be included in the | ||||
option set"; | ||||
} | ||||
list br { | ||||
key br-id; | ||||
description "br info"; | ||||
leaf br-id { | ||||
type uint8; | ||||
mandatory true; | mandatory true; | |||
description "br id"; | description "client id"; | |||
} | } | |||
leaf br-ipv6-addr { | container duid { | |||
type inet:ipv6-address; | description "Sets the DUID"; | |||
uses duid; | ||||
} | ||||
leaf inherit-option-set { | ||||
type boolean; | ||||
mandatory true; | mandatory true; | |||
description "br ipv6 addr"; | description "whether to inherit | |||
configuration | ||||
from higher level"; | ||||
} | ||||
leaf option-set-id { | ||||
type leafref { | ||||
path "/server/server-config/option-sets/option-set/id"; | ||||
} | ||||
description "The ID field of relevant option-set to be | ||||
provisioned to clients of this prefix-pool."; | ||||
} | ||||
leaf nis-domain-name { | ||||
type string; | ||||
description "nis domain name"; | ||||
} | ||||
leaf nis-plus-domain-name { | ||||
type string; | ||||
description "nisp domain name"; | ||||
} | } | |||
} | } | |||
} | } | |||
container operator-option-ipv6-address { | } | |||
description "operator ipv6 address option"; | ||||
reference "RFC7227: Guidelines for Creating New DHCPv6 Options"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this | ||||
option will be included in the | ||||
option set"; | ||||
} | } | |||
list operator-ipv6-addr { | container relay-opaque-paras { | |||
key operator-ipv6-addr-id; | description "This container contains some | |||
description "operator ipv6 address info"; | opaque values in Relay Agent options that | |||
leaf operator-ipv6-addr-id { | need to be configured on the server side | |||
type uint8; | only for value match. Such Relay Agent | |||
mandatory true; | options include Interface-Id option, | |||
description "operator ipv6 address id"; | Remote-Id option and Subscriber-Id option."; | |||
list relays { | ||||
key relay-name; | ||||
description "relay agents"; | ||||
leaf relay-name { | ||||
type string; | ||||
mandatory true; | ||||
description "relay agent name"; | ||||
} | ||||
list interface-info { | ||||
key if-name; | ||||
description "interface info"; | ||||
leaf if-name { | ||||
type string; | ||||
mandatory true; | ||||
description "interface name"; | ||||
} | ||||
leaf interface-id { | ||||
type string; | ||||
mandatory true; | ||||
description "interface id"; | ||||
} | ||||
} | ||||
list subscribers { | ||||
key subscriber; | ||||
description "subscribers"; | ||||
leaf subscriber { | ||||
type uint32; | ||||
mandatory true; | ||||
description "subscriber"; | ||||
} | ||||
leaf subscriber-id { | ||||
type string; | ||||
mandatory true; | ||||
description "subscriber id"; | ||||
} | ||||
} | ||||
list remote-host { | ||||
key ent-num; | ||||
description "remote host"; | ||||
leaf ent-num { | ||||
type uint32; | ||||
mandatory true; | ||||
description "enterprise number"; | ||||
} | ||||
leaf remote-id { | ||||
type string; | ||||
mandatory true; | ||||
description "remote id"; | ||||
} | ||||
} | ||||
} | } | |||
leaf operator-ipv6-addr { | } | |||
type inet:ipv6-address; | container rsoo-enabled-options { | |||
mandatory true; | description "rsoo enabled options"; | |||
description "operator ipv6 address id"; | list rsoo-enabled-option{ | |||
key option-code; | ||||
description "rsoo enabled option"; | ||||
leaf option-code { | ||||
type uint16; | ||||
mandatory true; | ||||
description "option code"; | ||||
} | ||||
leaf description { | ||||
type string; | ||||
mandatory true; | ||||
description "description of the option"; | ||||
} | ||||
} | } | |||
} | } | |||
} | ||||
/* | ||||
* State data | ||||
*/ | ||||
container server-state{ | ||||
config "false"; | ||||
description "states of server"; | ||||
container network-ranges{ | ||||
description "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."; | ||||
list network-range{ | ||||
key network-range-id; | ||||
description "The ID field of relevant option-set to be | ||||
provisioned to clients of this network-range."; | ||||
leaf network-range-id { | ||||
type uint32; | ||||
mandatory true; | ||||
description "equivalent to subnet id"; | ||||
} | } | |||
container operator-option-single-flag { | container address-pools{ | |||
description "operator single flag"; | description "A container that describes | |||
reference "RFC7227: Guidelines for Creating New DHCPv6 | the DHCPv6 server's address pools"; | |||
Options"; | list address-pool{ | |||
leaf enable { | key pool-id; | |||
type boolean; | leaf pool-id { | |||
mandatory true; | type uint32; | |||
description "indicate whether this | mandatory true; | |||
option will be included in the | description "pool id"; | |||
option set"; | } | |||
} | description "..."; | |||
list flag { | leaf total-ipv6-count { | |||
key flag-id; | type uint64; | |||
description "operator single flag info"; | mandatory true; | |||
leaf flag-id { | description "how many ipv6 addresses | |||
type uint8; | are in the pool"; | |||
mandatory true; | } | |||
description "operator single flag id"; | leaf used-ipv6-count { | |||
type uint64; | ||||
mandatory true; | ||||
description "how many are allocated"; | ||||
} | ||||
leaf address-utilization-ratio { | ||||
type uint16; | ||||
mandatory true; | ||||
description "current address pool utilization ratio"; | ||||
} | ||||
} | } | |||
leaf flag-value{ | list binding-info { | |||
type boolean; | key cli-id; | |||
mandatory true; | description "A list that records a binding | |||
description "operator single flag value"; | information for each DHCPv6 client | |||
that has already been allocated | ||||
IPv6 addresses."; | ||||
leaf cli-id { | ||||
type uint32; | ||||
mandatory true; | ||||
description "client id"; | ||||
} | ||||
container duid { | ||||
description "Read the DUID"; | ||||
uses duid; | ||||
} | ||||
list cli-ia{ | ||||
key iaid; | ||||
description "client IA"; | ||||
leaf ia-type { | ||||
type string; | ||||
mandatory true; | ||||
description "IA type"; | ||||
} | ||||
leaf iaid { | ||||
type uint32; | ||||
mandatory true; | ||||
description "IAID"; | ||||
} | ||||
leaf-list cli-addr { | ||||
type inet:ipv6-address; | ||||
description "client addr"; | ||||
} | ||||
leaf pool-id { | ||||
type uint32; | ||||
mandatory true; | ||||
description "pool id"; | ||||
} | ||||
} | ||||
} | } | |||
} | } | |||
} | container prefix-pools{ | |||
container operator-option-ipv6-prefix { | description "If a server supports prefix | |||
description "operator ipv6 prefix option"; | delegation function, this container will | |||
reference "RFC7227: Guidelines for Creating New DHCPv6 | be used to define the delegating router's | |||
Options"; | prefix pools."; | |||
leaf enable { | list prefix-pool { | |||
type boolean; | key pool-id; | |||
mandatory true; | description "Similar to server's address pools, | |||
description "indicate whether this | a delegating router can also be configured with | |||
option will be included in the | multiple prefix pools specified by a list | |||
option set"; | called 'prefix-pool'."; | |||
} | leaf pool-id { | |||
list operator-ipv6-prefix{ | type uint32; | |||
key operator-ipv6-prefix-id; | mandatory true; | |||
description "operator ipv6 prefix info"; | description "pool id"; | |||
leaf operator-ipv6-prefix-id { | } | |||
type uint8; | leaf prefix-utilization-ratio { | |||
mandatory true; | type uint16; | |||
description "operator ipv6 prefix id"; | mandatory true; | |||
} | description "current prefix pool utilization ratio"; | |||
leaf operator-ipv6-prefix6-len{ | } | |||
type uint8; | ||||
mandatory true; | ||||
description "operator ipv6 prefix length"; | ||||
} | } | |||
leaf operator-ipv6-prefix { | list binding-info { | |||
type inet:ipv6-prefix; | key cli-id; | |||
mandatory true; | description "A list records a binding information | |||
description "operator ipv6 prefix"; | for each DHCPv6 client that has already been | |||
alloated IPv6 addresses."; | ||||
leaf cli-id { | ||||
type uint32; | ||||
mandatory true; | ||||
description "client id"; | ||||
} | ||||
container duid { | ||||
description "Reads the DUID"; | ||||
uses duid; | ||||
} | ||||
list cli-iapd { | ||||
key iaid; | ||||
description "client IAPD"; | ||||
leaf iaid { | ||||
type uint32; | ||||
mandatory true; | ||||
description "IAID"; | ||||
} | ||||
leaf-list cli-prefix { | ||||
type inet:ipv6-prefix; | ||||
description "client ipv6 prefix"; | ||||
} | ||||
leaf-list cli-prefix-len { | ||||
type uint8; | ||||
description "client prefix length"; | ||||
} | ||||
leaf pool-id { | ||||
type uint32; | ||||
mandatory true; | ||||
description "pool id"; | ||||
} | ||||
} | ||||
} | } | |||
} | } | |||
} | ||||
container operator-option-int32 { | list address-prefix-assign-param { | |||
description "operator integer 32 option"; | // Zihao - This probably needs further updated. | |||
reference "RFC7227: Guidelines for Creating New DHCPv6 | // But is it a way to represent the address/prefix assignment | |||
Options"; | // logic? | |||
leaf enable { | key cli-id; | |||
type boolean; | description "This list includes some parameters/identifiers | |||
mandatory true; | that the server obtains from DHCPv6 options in this network-range. | |||
description "indicate whether this | These identifiers may be helpful for the server to assign | |||
option will be included in the | addresses/prefixes."; | |||
option set"; | reference "Section 3.12 of RFC7824"; | |||
} | leaf cli-id { | |||
list int32val{ | type uint32; | |||
key int32val-id; | ||||
description "operator integer 32 info"; | ||||
leaf int32val-id { | ||||
type uint8; | ||||
mandatory true; | mandatory true; | |||
description "operator integer 32 id"; | description "client id"; | |||
} | } | |||
leaf int32val{ | leaf source-ipv6-addr { | |||
type inet:ipv6-address; | ||||
description "The adrress of the link to which the client | ||||
is attached."; | ||||
} | ||||
container duid { | ||||
description "The DUID supplied by the client."; | ||||
uses duid; | ||||
} | ||||
leaf-list iaid { | ||||
type uint32; | type uint32; | |||
mandatory true; | description "IAID"; | |||
description "operator integer 32 value"; | ||||
} | } | |||
} | leaf-list preferred-addr { | |||
} | type inet:ipv6-address; | |||
container operator-option-int16 { | description "The IPv6 address preferred by the client."; | |||
description "operator integer 16 option"; | } | |||
reference "RFC7227: Guidelines for Creating New DHCPv6 | leaf-list preferred-prefix-len { | |||
Options"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this | ||||
option will be included in the | ||||
option set"; | ||||
} | ||||
list int16val{ | ||||
key int16val-id; | ||||
description "operator integer 16 info"; | ||||
leaf int16val-id { | ||||
type uint8; | type uint8; | |||
mandatory true; | description "The prefix length preferred by the client."; | |||
description "operator integer 16 id"; | ||||
} | } | |||
leaf int16val{ | leaf client-fqdn { | |||
type string; | ||||
description "Fully Qualified Domain Name supplied by the client."; | ||||
} | ||||
leaf client-link-layer-addr { | ||||
type uint16; | type uint16; | |||
mandatory true; | description "Link-layer address supplied by the client."; | |||
description "operator integer 16 value"; | ||||
} | } | |||
} | leaf client-enterprise-number { | |||
} | type uint32; | |||
container operator-option-int8 { | description "Enterprise number supplied by the client."; | |||
description "operator integer 8 option"; | ||||
reference "RFC7227: Guidelines for Creating New DHCPv6 | ||||
Options"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this | ||||
option will be included in the | ||||
option set"; | ||||
} | ||||
list int8val{ | ||||
key int8val-id; | ||||
description "operator integer 8 info"; | ||||
leaf int8val-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "operator integer 8 id"; | ||||
} | } | |||
leaf int8val{ | leaf-list client-sys-archi-type { | |||
type uint8; | type uint16; | |||
mandatory true; | description "Supported system architecture type supplied by | |||
description "operator integer 8 value"; | the client"; | |||
} | } | |||
} | ||||
} | ||||
} | ||||
container packet-stats { | ||||
description "A container presents | ||||
the packet statistics related to | ||||
the DHCPv6 server."; | ||||
leaf solicit-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description "solicit counter"; | ||||
} | } | |||
} | leaf request-count { | |||
container operator-option-uri { | type uint32; | |||
description "operator uri option"; | ||||
reference "RFC7227: Guidelines for Creating New DHCPv6 | ||||
Options"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | mandatory true; | |||
description "indicate whether this | description "request counter"; | |||
option will be included in the | ||||
option set"; | ||||
} | } | |||
list uri{ | leaf renew-count { | |||
key uri-id; | type uint32; | |||
description "operator uri info"; | mandatory true; | |||
leaf uri-id { | description "renew counter"; | |||
type uint8; | ||||
mandatory true; | ||||
description "operator uri id"; | ||||
} | ||||
leaf uri{ | ||||
type string; | ||||
mandatory true; | ||||
description "operator uri value"; | ||||
} | ||||
} | } | |||
} | leaf rebind-count { | |||
container operator-option-textstring { | type uint32; | |||
description "operator itext string option"; | ||||
reference "RFC7227: Guidelines for Creating New DHCPv6 Options"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | mandatory true; | |||
description "indicate whether this | description "rebind counter"; | |||
option will be included in the | ||||
option set"; | ||||
} | } | |||
list textstring{ | leaf decline-count { | |||
key textstring-id; | type uint32; | |||
description "operator text string info"; | mandatory true; | |||
leaf textstring-id { | description "decline count"; | |||
type uint8; | ||||
mandatory true; | ||||
description "operator text string id"; | ||||
} | ||||
leaf textstring{ | ||||
type string; | ||||
mandatory true; | ||||
description "operator text string value"; | ||||
} | ||||
} | } | |||
} | leaf release-count { | |||
container operator-option-var-data { | type uint32; | |||
description "operator variable length data option"; | ||||
reference "RFC7227: Guidelines for Creating New DHCPv6 Options"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | mandatory true; | |||
description "indicate whether this | description "release counter"; | |||
option will be included in the | ||||
option set"; | ||||
} | } | |||
list int32val{ | leaf info-req-count { | |||
key var-data-id; | type uint32; | |||
description "operator ivariable length data info"; | mandatory true; | |||
leaf var-data-id { | description "information request | |||
type uint8; | counter"; | |||
mandatory true; | ||||
description "operator variable length id"; | ||||
} | ||||
leaf var-data{ | ||||
type binary; | ||||
mandatory true; | ||||
description "operator variable length value"; | ||||
} | ||||
} | } | |||
} | leaf advertise-count { | |||
container operator-option-dns-wire { | type uint32; | |||
description "operator dns wire format domain name list option"; | ||||
reference "RFC7227: Guidelines for Creating New DHCPv6 | ||||
Options"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | mandatory true; | |||
description "indicate whether this | description "advertise counter"; | |||
option will be included in the | ||||
option set"; | ||||
} | } | |||
list operator-option-dns-wire{ | leaf confirm-count { | |||
key operator-option-dns-wire-id; | type uint32; | |||
description "operator dns wire format info"; | mandatory true; | |||
leaf operator-option-dns-wire-id { | description "confirm counter"; | |||
type uint8; | ||||
mandatory true; | ||||
description "operator dns wire format id"; | ||||
} | ||||
leaf operator-option-dns-wire{ | ||||
type binary; | ||||
mandatory true; | ||||
description "operator dns wire format value"; | ||||
} | ||||
} | } | |||
} | leaf reply-count { | |||
container s46-dmr-option { | type uint32; | |||
description "s46 dmr option"; | ||||
reference "RFC7598: DHCPv6 Options for Configuration of | ||||
Softwire Address and Port-Mapped Clients"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | mandatory true; | |||
description "indicate whether this | description "reply counter"; | |||
option will be included in the | ||||
option set"; | ||||
} | } | |||
list dmr { | leaf reconfigure-count { | |||
key dmr-id; | type uint32; | |||
description "dmr info"; | mandatory true; | |||
leaf dmr-id { | description "reconfigure counter"; | |||
type uint8; | ||||
mandatory true; | ||||
description "dmr id"; | ||||
} | ||||
leaf dmr-prefix-len { | ||||
type uint8; | ||||
mandatory true; | ||||
description "dmr prefix length"; | ||||
} | ||||
leaf dmr-ipv6-prefix { | ||||
type inet:ipv6-prefix; | ||||
mandatory true; | ||||
description "dmr ipv6 prefix"; | ||||
} | ||||
} | } | |||
} | leaf relay-forward-count { | |||
container s46-v4-v6-binding-option { | type uint32; | |||
description "s46 binding option"; | ||||
reference "RFC7598: DHCPv6 Options for Configuration of | ||||
Softwire Address and Port-Mapped Clients"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | mandatory true; | |||
description "indicate whether this | description "relay forward counter"; | |||
option will be included in the | ||||
option set"; | ||||
} | } | |||
list ce { | leaf relay-reply-count { | |||
key ce-id; | type uint32; | |||
description "ce info"; | mandatory true; | |||
leaf ce-id { | description "relay reply counter"; | |||
type uint8; | ||||
mandatory true; | ||||
description "ce id"; | ||||
} | ||||
leaf ipv4-addr { | ||||
type inet:ipv4-address; | ||||
mandatory true; | ||||
description "ce ipv4 addr"; | ||||
} | ||||
leaf bind-prefix6-len { | ||||
type uint8; | ||||
mandatory true; | ||||
description "bind ipv6 prefix | ||||
length"; | ||||
} | ||||
leaf bind-ipv6-prefix { | ||||
type inet:ipv6-prefix; | ||||
mandatory true; | ||||
description "bind ipv6 prefix"; | ||||
} | ||||
uses portset-para; | ||||
} | } | |||
} | } | |||
} | } | |||
//NB - The list of options needs to be updated with newer options. | } | |||
/* | ||||
* Notifications | ||||
*/ | ||||
notification notifications { | ||||
description "dhcpv6 server notification module"; | ||||
container dhcpv6-server-event { | ||||
description "dhcpv6 server event"; | ||||
container pool-running-out { | ||||
description "raised when the address/prefix pool is going to | ||||
run out. A threshold for utilization ratio of the pool has | ||||
been defined in the server feature so that it will notify the | ||||
administrator when the utilization ratio reaches the | ||||
threshold, and such threshold is a settable parameter"; | ||||
leaf max-address-utilization-ratio { | ||||
type uint16; | ||||
mandatory true; | ||||
description "address pool utilization ratio threshold"; | ||||
} | } | |||
container network-ranges { | leaf address-utilization-ratio { | |||
description "This model supports a hierarchy | type uint16; | |||
to achieve dynamic configuration. That is to | mandatory true; | |||
say we could configure the server at different | description "current address pool utilization ratio"; | |||
levels through this model. The top level is a | } | |||
global level which is defined as the container | leaf max-prefix-utilization-ratio { | |||
'network-ranges'. The following levels are | type uint16; | |||
defined as sub-containers under it. The | mandatory true; | |||
'network-ranges' contains the parameters | description "prefix pool utilization ratio threshold"; | |||
(e.g. option-sets) that would be allocated to | ||||
all the clients served by this server."; | ||||
leaf option-set-id { | ||||
type uint8; | ||||
description "a specific option set"; | ||||
} | ||||
list network-range { | ||||
key network-range-id; | ||||
description "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."; | ||||
leaf network-range-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "equivalent to subnet id"; | ||||
} | ||||
leaf network-description { | ||||
type string; | ||||
mandatory true; | ||||
description "description of the subnet"; | ||||
} | ||||
leaf network-prefix { | ||||
type inet:ipv6-prefix; | ||||
mandatory true; | ||||
description "subnet prefix"; | ||||
} | ||||
leaf inherit-option-set { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether to inherit | ||||
the configuration from higher level"; | ||||
} | ||||
leaf option-set-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "the selected option-set"; | ||||
} | ||||
container reserved-addresses { | ||||
description "reserved addresses"; | ||||
list static-binding { | ||||
key cli-id; | ||||
description "static binding of | ||||
reserved addresses"; | ||||
leaf cli-id { | ||||
type uint32; | ||||
mandatory true; | ||||
description "client id"; | ||||
} | ||||
container duid { | ||||
description "Sets the DUID"; | ||||
uses duid; | ||||
} | ||||
leaf-list reserv-addr { | ||||
type inet:ipv6-address; | ||||
description "reserved addr"; | ||||
} | ||||
} | } | |||
leaf-list other-reserv-addr { | leaf prefix-utilization-ratio { | |||
type uint16; | ||||
mandatory true; | ||||
description "current prefix pool utilization ratio"; | ||||
} | ||||
container duid { | ||||
description "Sets the DUID"; | ||||
uses duid; | ||||
} | ||||
leaf serv-name { | ||||
type string; | ||||
description "server name"; | ||||
} | ||||
leaf pool-name { | ||||
type string; | ||||
mandatory true; | ||||
description "pool name"; | ||||
} | ||||
} | ||||
container invalid-client-detected { | ||||
description "raised when the server has found a client which | ||||
can be regarded as a potential attacker. Some description | ||||
could also be included."; | ||||
container duid { | ||||
description "Sets the DUID"; | ||||
uses duid; | ||||
} | ||||
leaf description { | ||||
type string; | ||||
description "description of the event"; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
3.2. DHCPv6 Relay YANG Model | ||||
This module imports typedefs from [RFC6991]. | ||||
<CODE BEGINS> file "ietf-dhcpv6-relay@2017-12-22.yang" | ||||
module ietf-dhcpv6-relay { | ||||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-relay"; | ||||
prefix "dhcpv6-client"; | ||||
import ietf-inet-types { | ||||
prefix inet; | ||||
revision-date "2013-07-15"; | ||||
} | ||||
import ietf-dhcpv6-options { | ||||
prefix dhcpv6-options; | ||||
revision-date "2017-12-22"; | ||||
} | ||||
organization "DHC WG"; | ||||
contact "yong@csnet1.cs.tsinghua.edu.cn | ||||
lh.sunlinh@gmail.com | ||||
ian.farrer@telekom.de | ||||
sladjana.zechlin@telekom.de | ||||
hezihao9512@gmail.com"; | ||||
description "This model defines a YANG data model that can be | ||||
used to configure and manage a DHCPv6 relay."; | ||||
revision 2017-12-22 { | ||||
description "Resolve most issues on Ian's github."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
revision 2017-11-24 { | ||||
description "First version of the separated relay specific | ||||
YANG model."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
/* | ||||
* Grouping | ||||
*/ | ||||
grouping vendor-infor { | ||||
description "Vendor information."; | ||||
container vendor-info { | ||||
description ""; | ||||
leaf ent-num { | ||||
type uint32; | ||||
mandatory true; | ||||
description "enterprise number"; | ||||
} | ||||
leaf-list data { | ||||
type string; | ||||
description "specific vendor info"; | ||||
} | ||||
} | ||||
} | ||||
/* | ||||
* Data Nodes | ||||
*/ | ||||
container relay { | ||||
presence "Enables the relay"; | ||||
description "dhcpv6 relay portion"; | ||||
container relay-config{ | ||||
description "configuration tree of relay"; | ||||
container relay-attributes { | ||||
description "A container describes | ||||
some basic attributes of the relay | ||||
agent including some relay agent | ||||
specific options data that need to | ||||
be configured previously. Such options | ||||
include Remote-Id option and | ||||
Subscriber-Id option."; | ||||
leaf name { | ||||
type string; | ||||
description "relay agent name"; | ||||
} | ||||
leaf description { | ||||
type string; | ||||
description "description of the relay agent"; | ||||
} | ||||
leaf-list dest-addrs { | ||||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description "other reserved | description "Each DHCPv6 relay agent may | |||
addr"; | be configured with a list of destination | |||
addresses. This node defines such a list | ||||
of IPv6 addresses that may include | ||||
unicast addresses, multicast addresses | ||||
or other addresses."; | ||||
} | } | |||
} | list subscribers { | |||
container reserved-prefixes { | key subscriber; | |||
description "reserved prefixes"; | description "subscribers"; | |||
list static-binding { | leaf subscriber { | |||
key cli-id; | type uint8; | |||
description "static binding"; | ||||
leaf cli-id { | ||||
type uint32; | ||||
mandatory true; | mandatory true; | |||
description "client id"; | description "subscriber"; | |||
} | } | |||
container duid { | leaf subscriber-id { | |||
description "Sets the DUID"; | type string; | |||
uses duid; | mandatory true; | |||
description "subscriber id"; | ||||
} | } | |||
leaf reserv-prefix-len { | } | |||
type uint8; | list remote-host { | |||
key ent-num; | ||||
description "remote host"; | ||||
leaf ent-num { | ||||
type uint32; | ||||
mandatory true; | mandatory true; | |||
description "reserved | description "enterprise number"; | |||
prefix length"; | ||||
} | } | |||
leaf reserv-prefix { | leaf remote-id { | |||
type inet:ipv6-prefix; | type string; | |||
mandatory true; | mandatory true; | |||
description | description "remote id"; | |||
"reserved prefix"; | ||||
} | } | |||
} | } | |||
leaf exclude-prefix-len { | uses vendor-infor; | |||
type uint8; | } | |||
container rsoo-option-sets { | ||||
description "DHCPv6 relay agent could provide | ||||
some information that would be useful to DHCPv6 client. | ||||
Since relay agent cannot provide options directly to | ||||
the client, RSOO-enabled options are defined to | ||||
propose options for the server to send to the client. | ||||
This container models such RSOO-enabled options."; | ||||
reference "RFC6422"; | ||||
list option-set { | ||||
key id; | ||||
description "This list under the 'rsoo-option-sets' container | ||||
is 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."; | ||||
leaf id { | ||||
type uint32; | ||||
description "option sed id"; | ||||
} | ||||
uses dhcpv6-options:relay-supplied-option-definitions; | ||||
} | ||||
} | ||||
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 a string | ||||
called 'if-name; as the key of list."; | ||||
leaf if-name { | ||||
type string; | ||||
mandatory true; | mandatory true; | |||
description "exclude prefix | description "interface name"; | |||
length"; | ||||
} | } | |||
leaf exclude-prefix { | leaf enable { | |||
type inet:ipv6-prefix; | type boolean; | |||
mandatory true; | mandatory true; | |||
description "exclude prefix"; | description | |||
"whether this interface is enabled"; | ||||
} | } | |||
list other-reserv-prefix { | leaf ipv6-address { | |||
key reserv-id; | type inet:ipv6-address; | |||
description | description | |||
"other reserved prefix"; | "ipv6 address for this interface"; | |||
leaf reserv-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description | ||||
"reserved prefix id"; | ||||
} | ||||
leaf prefix-len { | ||||
type uint8; | ||||
mandatory true; | ||||
description "prefix length"; | ||||
} | ||||
leaf prefix { | ||||
type inet:ipv6-prefix; | ||||
mandatory true; | ||||
description | ||||
"reserved prefix"; | ||||
} | ||||
} | } | |||
} | leaf interface-id { | |||
container address-pools { | type string; | |||
description "A container describes | description "interface id"; | |||
the DHCPv6 server's address pools."; | } | |||
list address-pool { | leaf rsoo-option-set-id { | |||
key pool-id; | type leafref { | |||
description "A DHCPv6 server can | path "/relay/relay-config/rsoo-option-sets/option-set/id"; | |||
be configured with several address | ||||
pools. This list defines such | ||||
address pools which are distinguish | ||||
by the key called 'pool-name'."; | ||||
leaf pool-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "pool id"; | ||||
} | ||||
leaf pool-prefix { | ||||
type inet:ipv6-prefix; | ||||
mandatory true; | ||||
description "pool 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 renew-time { | ||||
type yang:timeticks; | ||||
mandatory true; | ||||
description "renew time"; | ||||
} | ||||
leaf rebind-time { | ||||
type yang:timeticks; | ||||
mandatory true; | ||||
description "rebind time"; | ||||
} | ||||
leaf preferred-lifetime { | ||||
type yang:timeticks; | ||||
mandatory true; | ||||
description "preferred lifetime | ||||
for IA"; | ||||
} | ||||
leaf valid-lifetime { | ||||
type yang:timeticks; | ||||
mandatory true; | ||||
description "valid liftime for IA"; | ||||
} | ||||
leaf total-ipv6-count { | ||||
type uint64; | ||||
config "false"; | ||||
mandatory true; | ||||
description "how many ipv6 | ||||
addressses are in the pool"; | ||||
} | } | |||
leaf used-ipv6-count { | description "Configured Relay Supplied Option set"; | |||
type uint64; | } | |||
config "false"; | list next-entity { | |||
key dest-addr; | ||||
description "This node defines | ||||
a list that is used to describe | ||||
the next hop entity of this | ||||
relay distinguished by their | ||||
addresses."; | ||||
leaf dest-addr { | ||||
type inet:ipv6-address; | ||||
mandatory true; | mandatory true; | |||
description "how many are | description "destination addr"; | |||
allocated"; | ||||
} | } | |||
leaf utilization-ratio { | leaf available { | |||
type threshold; | type boolean; | |||
mandatory true; | mandatory true; | |||
description "the utilization ratio"; | description "whether the next entity | |||
is available or not"; | ||||
} | } | |||
leaf inherit-option-set { | leaf multicast { | |||
type boolean; | type boolean; | |||
mandatory true; | mandatory true; | |||
description "indicate whether to | description "whether the address is | |||
inherit the configuration from | multicast or not"; | |||
higher level"; | ||||
} | } | |||
leaf option-set-id { | leaf server { | |||
type uint8; | type boolean; | |||
mandatory true; | mandatory true; | |||
description "the selected option-set"; | description "whether the next entity | |||
is a server"; | ||||
} | } | |||
} | } | |||
list binding-info { | } | |||
key cli-id; | ||||
config "false"; | } | |||
description "A list records a binding | ||||
information for each DHCPv6 client | container relay-state{ | |||
that has already been allocated IPv6 | config "false"; | |||
addresses."; | description "state tree of relay"; | |||
leaf cli-id { | list relay-if{ | |||
type uint32; | key if-name; | |||
mandatory true; | description "..."; | |||
description "client id"; | leaf if-name{ | |||
} | type string; | |||
container duid { | mandatory true; | |||
description "Sets the DUID"; | description "interface name"; | |||
uses duid; | } | |||
} | list pd-route { | |||
list cli-ia { | // if - need to look at if/how we model these. If they are | |||
key iaid; | // going to be modelled, then they should be ro state | |||
description "client IA"; | // entries (we're not trying to configure routes here) | |||
leaf ia-type { | key pd-route-id; | |||
type string; | description "pd route"; | |||
leaf pd-route-id { | ||||
type uint8; | ||||
mandatory true; | mandatory true; | |||
description "IA type"; | description "pd route id"; | |||
} | } | |||
leaf iaid { | leaf requesting-router-id { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "IAID"; | description "requesting router id"; | |||
} | ||||
leaf-list cli-addr { | ||||
type inet:ipv6-address; | ||||
description "client addr"; | ||||
} | ||||
leaf pool-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "pool id"; | ||||
} | } | |||
} | leaf delegating-router-id { | |||
} | ||||
} | ||||
container prefix-pools { | ||||
description "If a server supports prefix | ||||
delegation function, this container will | ||||
be used to define the delegating router's | ||||
refix pools."; | ||||
list prefix-pool { | ||||
key pool-id; | ||||
description "Similar to server's | ||||
address pools, a delegating router | ||||
can also be configured with multiple | ||||
prefix pools specified by a list | ||||
called 'prefix-pool'."; | ||||
leaf pool-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "pool id"; | ||||
} | ||||
leaf prefix { | ||||
type inet:ipv6-prefix; | ||||
mandatory true; | ||||
description "ipv6 prefix"; | ||||
} | ||||
leaf prefix-length { | ||||
type uint8; | ||||
mandatory true; | ||||
description "prefix length"; | ||||
} | ||||
leaf renew-time { | ||||
type yang:timeticks; | ||||
mandatory true; | ||||
description "renew time"; | ||||
} | ||||
leaf rebind-time { | ||||
type yang:timeticks; | ||||
mandatory true; | ||||
description "rebind time"; | ||||
} | ||||
leaf preferred-lifetime { | ||||
type yang:timeticks; | ||||
mandatory true; | ||||
description "preferred lifetime for | ||||
IA"; | ||||
} | ||||
leaf valid-lifetime { | ||||
type yang:timeticks; | ||||
mandatory true; | ||||
description "valid lifetime for IA"; | ||||
} | ||||
leaf utilization-ratio { | ||||
type threshold; | ||||
mandatory true; | ||||
description "utilization ratio"; | ||||
} | ||||
leaf inherit-option-set { | ||||
type boolean; | ||||
mandatory true; | ||||
description "whether to inherit | ||||
configuration from higher level"; | ||||
} | ||||
leaf option-set-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "the selected option-set"; | ||||
} | ||||
} | ||||
list binding-info { | ||||
key cli-id; | ||||
config "false"; | ||||
description "A list records a | ||||
binding information for each | ||||
DHCPv6 client that has already | ||||
been allocated IPv6 addresses."; | ||||
leaf cli-id { | ||||
type uint32; | ||||
mandatory true; | ||||
description "client id"; | ||||
} | ||||
container duid { | ||||
description "Sets the DUID"; | ||||
uses duid; | ||||
} | ||||
list cli-iapd { | ||||
key iaid; | ||||
description "client IAPD"; | ||||
leaf iaid { | ||||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "IAID"; | description "delegating router id"; | |||
} | ||||
leaf-list cli-prefix { | ||||
type inet:ipv6-prefix; | ||||
description | ||||
"client ipv6 prefix"; | ||||
} | } | |||
leaf-list cli-prefix-len { | leaf next-router { | |||
type uint8; | type inet:ipv6-address; | |||
description | mandatory true; | |||
"client prefix length"; | description "next router"; | |||
} | } | |||
leaf pool-id { | leaf last-router { | |||
type uint8; | type inet:ipv6-address; | |||
mandatory true; | mandatory true; | |||
description "pool id"; | description "previous router"; | |||
} | } | |||
} | } | |||
} | list next-entity{ | |||
} | key dest-addr; | |||
container hosts { | description "This node defines a list that is used to | |||
description "hosts level"; | describe the next hop entity of this relay agent. | |||
list host { | Different entities are distinguished by their | |||
key cli-id; | addresses."; | |||
description "specific host"; | leaf dest-addr{ | |||
leaf cli-id { | type inet:ipv6-address; | |||
type uint32; | ||||
mandatory true; | ||||
description "client id"; | ||||
} | ||||
container duid { | ||||
description "Sets the DUID"; | ||||
uses duid; | ||||
} | ||||
leaf inherit-option-set { | ||||
type boolean; | ||||
mandatory true; | ||||
description "whether to inherit | ||||
configuration | ||||
from higher level"; | ||||
} | ||||
leaf option-set-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "the selected option-set"; | ||||
} | ||||
leaf nis-domain-name { | ||||
type string; | ||||
description "nis domain name"; | ||||
} | ||||
leaf nis-plus-domain-name { | ||||
type string; | ||||
description "nisp domain name"; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
} | ||||
container relay-opaque-paras { | ||||
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; | ||||
description "relay agent name"; | ||||
} | ||||
list interface-info { | ||||
key if-name; | ||||
description "interface info"; | ||||
leaf if-name { | ||||
type string; | ||||
mandatory true; | ||||
description "interface name"; | ||||
} | ||||
leaf interface-id { | ||||
type string; | ||||
mandatory true; | ||||
description "interface id"; | ||||
} | ||||
} | ||||
list subscribers { | ||||
key subscriber; | ||||
description "subscribers"; | ||||
leaf subscriber { | ||||
type uint8; | ||||
mandatory true; | ||||
description "subscriber"; | ||||
} | ||||
leaf subscriber-id { | ||||
type string; | ||||
mandatory true; | ||||
description "subscriber id"; | ||||
} | ||||
} | ||||
list remote-host { | ||||
key ent-num; | ||||
description "remote host"; | ||||
leaf ent-num { | ||||
type uint32; | ||||
mandatory true; | ||||
description "enterprise number"; | ||||
} | ||||
leaf remote-id { | ||||
type string; | ||||
mandatory true; | ||||
description "remote id"; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
container rsoo-enabled-options { | ||||
description "rsoo enabled options"; | ||||
list rsoo-enabled-option{ | ||||
key option-code; | ||||
description "rsoo enabled option"; | ||||
leaf option-code { | ||||
type uint16; | ||||
mandatory true; | ||||
description "option code"; | ||||
} | ||||
leaf description { | ||||
type string; | ||||
mandatory true; | ||||
description "description of the option"; | ||||
} | ||||
} | ||||
} | ||||
container packet-stats { | ||||
config "false"; | ||||
description "A container presents | ||||
the packet statistics related to | ||||
the DHCPv6 server."; | ||||
leaf solicit-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description "solicit counter"; | ||||
} | ||||
leaf request-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description "request counter"; | ||||
} | ||||
leaf renew-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description "renew counter"; | ||||
} | ||||
leaf rebind-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description "rebind counter"; | ||||
} | ||||
leaf decline-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description "decline count"; | ||||
} | ||||
leaf release-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description "release counter"; | ||||
} | ||||
leaf info-req-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description "information request | ||||
counter"; | ||||
} | ||||
leaf advertise-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description "advertise counter"; | ||||
} | ||||
leaf confirm-count { | ||||
type uint32; | ||||
mandatory true; | mandatory true; | |||
description "confirm counter"; | description "destination addr"; | |||
} | } | |||
leaf reply-count { | container packet-stats { | |||
type uint32; | description "packet statistics"; | |||
mandatory true; | leaf solicit-rvd-count { | |||
description "reply counter"; | type uint32; | |||
mandatory true; | ||||
description | ||||
"solicit received counter"; | ||||
} | ||||
leaf request-rvd-count { | ||||
type uint32; | ||||
mandatory true; | ||||
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"; | ||||
} | ||||
leaf decline-rvd-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"decline received counter"; | ||||
} | ||||
leaf release-rvd-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"release received counter"; | ||||
} | ||||
leaf info-req-rvd-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"information request counter"; | ||||
} | ||||
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 received counter"; | ||||
} | ||||
leaf packet-to-cli-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"packet to client counter"; | ||||
} | ||||
leaf adver-sent-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"advertisement sent counter"; | ||||
} | ||||
leaf confirm-sent-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"confirm sent counter"; | ||||
} | ||||
leaf reply-sent-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"reply sent counter"; | ||||
} | ||||
leaf reconfig-sent-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"reconfigure sent counter"; | ||||
} | ||||
leaf relay-for-sent-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"relay forward sent counter"; | ||||
} | ||||
leaf relay-rep-sent-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"relay reply sent counter"; | ||||
} | ||||
} | } | |||
leaf reconfigure-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description "reconfigure counter"; | ||||
} | ||||
leaf relay-forward-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description "relay forward counter"; | ||||
} | ||||
leaf relay-reply-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description "relay reply counter"; | ||||
} | ||||
} | } | |||
} | } | |||
container relay { | container relay-stats { | |||
presence "Enables relay"; | config "false"; | |||
description "dhcpv6 relay portion"; | description "relay statistics"; | |||
container relay-attributes { | leaf cli-packet-rvd-count { | |||
description "A container describes | type uint32; | |||
some basic attributes of the relay | ||||
agent including some relay agent | ||||
specific options data that need to | ||||
be configured previously. Such options | ||||
include Remote-Id option and | ||||
Subscriber-Id option."; | ||||
leaf name { | ||||
type string; | ||||
description "relay agent name"; | ||||
} | ||||
leaf description { | ||||
type string; | ||||
description "description of the relay agent"; | ||||
} | ||||
leaf-list dest-addrs { | ||||
type inet:ipv6-address; | ||||
description "Each DHCPv6 relay agent may | ||||
be configured with a list of destination | ||||
addresses. This node defines such a list | ||||
of IPv6 addresses that may include | ||||
unicast addresses, multicast addresses | ||||
or other addresses."; | ||||
} | ||||
list subscribers { | ||||
key subscriber; | ||||
description "subscribers"; | ||||
leaf subscriber { | ||||
type uint8; | ||||
mandatory true; | mandatory true; | |||
description "subscriber"; | description "client packet received counter"; | |||
} | } | |||
leaf subscriber-id { | leaf relay-for-rvd-count { | |||
type string; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "subscriber id"; | description "relay forward received counter"; | |||
} | } | |||
} | leaf relay-rep-rvd-count { | |||
list remote-host { | ||||
key ent-num; | ||||
description "remote host"; | ||||
leaf ent-num { | ||||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "enterprise number"; | description "relay reply recevied counter"; | |||
} | } | |||
leaf remote-id { | leaf packet-to-cli-count { | |||
type string; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "remote id"; | description "packet to client counter"; | |||
} | } | |||
} | leaf relay-for-sent-count { | |||
uses vendor-infor; | type uint32; | |||
} | ||||
container relay-supplied-options-option { | ||||
description "relay supplied options option"; | ||||
list rsoo-set { | ||||
key rsoo-set-id; | ||||
description "rsoo set"; | ||||
leaf rsoo-set-id { | ||||
type uint8; | ||||
mandatory true; | mandatory true; | |||
description "rsoo set id"; | description "relay forward sent counter"; | |||
} | } | |||
container erp-local-domain-name-option { | leaf relay-rep-sent-count { | |||
description "erp local domain name option"; | type uint32; | |||
leaf enable { | mandatory true; | |||
type boolean; | description "relay reply sent counter"; | |||
mandatory true; | } | |||
description "indicate whether | leaf discarded-packet-count { | |||
this option is included in the | type uint32; | |||
rsoo set"; | mandatory true; | |||
} | description "discarded packet counter"; | |||
list erp-for-client { | ||||
key cli-id; | ||||
description "erp for client"; | ||||
leaf cli-id { | ||||
type uint32; | ||||
mandatory true; | ||||
description "client id"; | ||||
} | ||||
container duid { | ||||
description "Sets the DUID"; | ||||
uses duid; | ||||
} | ||||
leaf erp-name { | ||||
type string; | ||||
mandatory true; | ||||
description "erp name"; | ||||
} | ||||
} | ||||
} | } | |||
} | } | |||
} | ||||
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 | * Notifications | |||
their corresponding parameters is employed to | */ | |||
fulfil the configfuration. Here we use a string | ||||
called 'if-name; as the key of list."; | notification notifications { | |||
leaf if-name { | description "dhcpv6 relay notification module"; | |||
container dhcpv6-relay-event { | ||||
description "dhcpv6 relay event"; | ||||
container topo-changed { | ||||
description "raised when the topology | ||||
of the relay agent is changed."; | ||||
leaf relay-if-name { | ||||
type string; | type string; | |||
mandatory true; | mandatory true; | |||
description "interface name"; | description "relay interface name"; | |||
} | } | |||
leaf enable { | leaf first-hop { | |||
type boolean; | type boolean; | |||
mandatory true; | mandatory true; | |||
description | description "first hop"; | |||
"whether this interface is enabled"; | ||||
} | } | |||
leaf ipv6-address { | leaf last-entity-addr { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | mandatory true; | |||
"ipv6 address for this interface"; | description "last entity address"; | |||
} | ||||
leaf interface-id { | ||||
type string; | ||||
description "interface id"; | ||||
} | } | |||
leaf-list rsoo-set { | } | |||
type uint8; | } | |||
description "configured rsoo set"; | } | |||
} | ||||
<CODE ENDS> | ||||
3.3. DHCPv6 Client YANG Model | ||||
This module imports typedefs from [RFC6991]. | ||||
<CODE BEGINS> file "ietf-dhcpv6-client@2017-12-22.yang" | ||||
module ietf-dhcpv6-client { | ||||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-client"; | ||||
prefix "dhcpv6-client"; | ||||
import ietf-inet-types { | ||||
prefix inet; | ||||
revision-date "2013-07-15"; | ||||
} | ||||
import ietf-yang-types { | ||||
prefix yang; | ||||
revision-date "2013-07-15"; | ||||
} | ||||
import ietf-dhcpv6-options { | ||||
prefix dhcpv6-options; | ||||
revision-date "2017-12-22"; | ||||
} | ||||
organization "DHC WG"; | ||||
contact "yong@csnet1.cs.tsinghua.edu.cn | ||||
wangh13@mails.tsinghua.edu.cn | ||||
lh.sunlinh@gmail.com | ||||
ian.farrer@telekom.de | ||||
sladjana.zechlin@telekom.de | ||||
hezihao9512@gmail.com "; | ||||
description "This model defines a YANG data model that can be | ||||
used to configure and manage a DHCPv6 client."; | ||||
revision 2017-12-22 { | ||||
description "Resolve most issues on Ian's github."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
revision 2017-11-24 { | ||||
description "First version of the separated client specific | ||||
YANG model."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
/* | ||||
* Grouping | ||||
*/ | ||||
grouping vendor-infor { | ||||
description "Vendor information."; | ||||
container vendor-info { | ||||
description ""; | ||||
leaf ent-num { | ||||
type uint32; | ||||
mandatory true; | ||||
description "enterprise number"; | ||||
} | ||||
leaf-list data { | ||||
type string; | ||||
description "specific vendor info"; | ||||
} | ||||
} | ||||
} | ||||
grouping duid { | ||||
description "DHCP Unique Identifier"; | ||||
reference "RFC3315: Section 9"; | ||||
leaf type-code { | ||||
type uint16; | ||||
default 65535; | ||||
description "Type code of this DUID"; | ||||
} | } | |||
list pd-route { | choice duid-type { | |||
key pd-route-id; | default duid-invalid; | |||
description "pd route"; | description "Selects the format for the DUID."; | |||
leaf pd-route-id { | case duid-llt { | |||
type uint8; | description "DUID Based on Link-layer Address Plus Time (Type 1 - DUID-LLT)"; | |||
mandatory true; | reference "RFC3315 Section 9.2"; | |||
description "pd route id"; | leaf duid-llt-hardware-type { | |||
} | type uint16; | |||
leaf requesting-router-id { | description "Hardware type as assigned by IANA (RFC826)."; | |||
type uint32; | ||||
mandatory true; | ||||
description "requesting router id"; | ||||
} | ||||
leaf delegating-router-id { | ||||
type uint32; | ||||
mandatory true; | ||||
description "delegating router id"; | ||||
} | } | |||
leaf next-router { | leaf duid-llt-time { | |||
type inet:ipv6-address; | type yang:timeticks; | |||
mandatory true; | description "The time value is the time that the DUID is generated | |||
description "next router"; | represented in seconds since midnight (UTC), January 1, 2000, | |||
modulo 2^32."; | ||||
} | } | |||
leaf last-router { | leaf duid-llt-link-layer-addr { | |||
type inet:ipv6-address; | type yang:mac-address; | |||
mandatory true; | description "Link-layer address as described in RFC2464"; | |||
description "previous router"; | ||||
} | } | |||
} | } | |||
list next-entity { | case duid-en { | |||
key dest-addr; | description "DUID Assigned by Vendor Based on Enterprise Number (Type 2 - DUID-EN)"; | |||
description "This node defines | reference "RFC3315 Section 9.3"; | |||
a list that is used to describe | leaf duid-en-enterprise-number { | |||
the next hop entity of this | type uint32; | |||
relay distinguished by their | description "Vendor's registered Private Enterprise Number as | |||
addresses."; | maintained by IANA"; | |||
leaf dest-addr { | ||||
type inet:ipv6-address; | ||||
mandatory true; | ||||
description "destination addr"; | ||||
} | } | |||
leaf available { | leaf duid-en-identifier { | |||
type boolean; | type string; | |||
mandatory true; | description "Indentifier, unique to the device that is using it"; | |||
description "whether the next entity | ||||
is available or not"; | ||||
} | } | |||
leaf multicast { | } | |||
type boolean; | case duid-ll { | |||
mandatory true; | description "DUID Based on Link-layer Address (Type 3 - DUID-LL)"; | |||
description "whether the address is | reference "RFC3315 Section 9.4"; | |||
multicast or not"; | leaf duid-ll-hardware-type { | |||
type uint16; | ||||
description "Hardware type as assigned by IANA (RFC826)."; | ||||
} | } | |||
leaf server { | leaf duid-ll-link-layer-addr { | |||
type boolean; | type yang:mac-address; | |||
mandatory true; | description "Link-layer address as described in RFC2464"; | |||
description "whether the next entity | } | |||
is a server"; | } | |||
case duid-uuid { | ||||
description "DUID Based on Universally Unique Identifier (Type 4 - DUID-UUID)"; | ||||
reference "RFC6335 Defination 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"; | ||||
} | } | |||
container packet-stats { | } | |||
config "false"; | case duid-invalid { | |||
description "packet statistics"; | description "DUID based on free raw bytes"; | |||
leaf cli-packet-rvd-count { | leaf data { | |||
type uint32; | type binary; | |||
mandatory true; | description "The bits to be used as the identifier"; | |||
description "client received packet | ||||
counter"; | ||||
} | ||||
leaf solicit-rvd-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"solicit received counter"; | ||||
} | ||||
leaf request-rvd-count { | ||||
type uint32; | ||||
mandatory true; | ||||
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"; | ||||
} | ||||
leaf decline-rvd-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"decline received counter"; | ||||
} | ||||
leaf release-rvd-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"release received counter"; | ||||
} | ||||
leaf info-req-rvd-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"information request counter"; | ||||
} | ||||
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 received counter"; | ||||
} | ||||
leaf packet-to-cli-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"packet to client counter"; | ||||
} | ||||
leaf adver-sent-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"advertisement sent counter"; | ||||
} | ||||
leaf confirm-sent-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"confirm sent counter"; | ||||
} | ||||
leaf reply-sent-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"reply sent counter"; | ||||
} | ||||
leaf reconfig-sent-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"reconfigure sent counter"; | ||||
} | ||||
leaf relay-for-sent-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"relay forward sent counter"; | ||||
} | ||||
leaf relay-rep-sent-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description | ||||
"relay reply sent counter"; | ||||
} | ||||
} | } | |||
} | } | |||
} | } | |||
container relay-stats { | } | |||
grouping portset-para { | ||||
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; | ||||
mandatory true; | ||||
description "length of a psid"; | ||||
} | ||||
leaf psid { | ||||
type uint16; | ||||
mandatory true; | ||||
description "psid value"; | ||||
} | ||||
} | ||||
} | ||||
grouping iaid { | ||||
description "IA is a construct through which a server and a | ||||
client can identify, group, and manage a set of related IPv6 | ||||
addresses. The key of the list is a 4-byte number IAID defined | ||||
in [RFC3315]."; | ||||
list identity-association { | ||||
config "false"; | config "false"; | |||
description "relay statistics"; | key iaid; | |||
leaf cli-packet-rvd-count { | description "IA"; | |||
type uint32; | leaf iaid { | |||
mandatory true; | ||||
description "client packet received counter"; | ||||
} | ||||
leaf relay-for-rvd-count { | ||||
type uint32; | ||||
mandatory true; | ||||
description "relay forward received counter"; | ||||
} | ||||
leaf relay-rep-rvd-count { | ||||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "relay reply recevied counter"; | description "IAID"; | |||
} | } | |||
leaf packet-to-cli-count { | leaf ia-type { | |||
type uint32; | type string; | |||
mandatory true; | mandatory true; | |||
description "packet to client counter"; | description "IA type"; | |||
} | } | |||
leaf relay-for-sent-count { | leaf-list ipv6-addr { | |||
type uint32; | type inet:ipv6-address; | |||
mandatory true; | description "ipv6 address"; | |||
description "relay forward sent counter"; | ||||
} | } | |||
leaf relay-rep-sent-count { | leaf-list ipv6-prefix { | |||
type uint32; | type inet:ipv6-prefix; | |||
mandatory true; | description "ipv6 prefix"; | |||
description "relay reply sent counter"; | ||||
} | } | |||
leaf discarded-packet-count { | leaf-list prefix-length { | |||
type uint32; | type uint8; | |||
mandatory true; | description "ipv6 prefix length"; | |||
description "discarded packet counter"; | ||||
} | } | |||
} | leaf t1-time { | |||
} | type yang:timeticks; | |||
container client { | ||||
presence "Enables client"; | ||||
description "dhcpv6 client portion"; | ||||
container duid { | ||||
description "Sets the DUID"; | ||||
uses duid; | ||||
} | ||||
list client-if { | ||||
key if-name; | ||||
description "A client may have several | ||||
interfaces, it is more reasonable to | ||||
configure and manage parameters on | ||||
the interface-level. The list defines | ||||
specific client interfaces and their | ||||
data. Different interfaces are distinguished | ||||
by the key which is a configurable string | ||||
value."; | ||||
leaf if-name { | ||||
type string; | ||||
mandatory true; | mandatory true; | |||
description "interface name"; | description "t1 time"; | |||
} | } | |||
leaf cli-id { | leaf t2-time { | |||
type uint32; | type yang:timeticks; | |||
mandatory true; | mandatory true; | |||
description "client id"; | description "t2 time"; | |||
} | ||||
leaf description { | ||||
type string; | ||||
description | ||||
"description of the client interface"; | ||||
} | } | |||
leaf pd-function { | leaf preferred-lifetime { | |||
type boolean; | type yang:timeticks; | |||
mandatory true; | mandatory true; | |||
description "Whether the client | description "preferred lifetime"; | |||
can act as a requesting router | ||||
to request prefixes using prefix | ||||
delegation ([RFC3633])."; | ||||
} | } | |||
leaf rapid-commit { | leaf valid-lifetime { | |||
type boolean; | type yang:timeticks; | |||
mandatory true; | mandatory true; | |||
description "'1' indicates a client can | description "valid lifetime"; | |||
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 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."; | ||||
leaf m-tab { | ||||
type boolean; | ||||
mandatory true; | ||||
description "m tab"; | ||||
} | ||||
leaf o-tab { | ||||
type boolean; | ||||
mandatory true; | ||||
description "o tab"; | ||||
} | ||||
} | } | |||
container oro-options { | } | |||
description "oro options"; | ||||
list oro-option { | } | |||
key option-code; | ||||
description "oro option"; | /* | |||
leaf option-code { | * Data Nodes | |||
type uint16; | */ | |||
mandatory true; | ||||
description "option code"; | container client { | |||
} | presence "Enables the client"; | |||
leaf description { | description "dhcpv6 client portion"; | |||
type string; | container client-config{ | |||
mandatory true; | description "configuration tree of client"; | |||
description "description of oro | container duid { | |||
options"; | description "Sets the DUID"; | |||
} | uses duid; | |||
} | } | |||
} | list client-if { | |||
container client-configured-options { | key if-name; | |||
description "client configured options"; | description "A client may have several | |||
list new-or-standard-cli-option { | interfaces, it is more reasonable to | |||
key option-code; | configure and manage parameters on | |||
description "new or standard client option"; | the interface-level. The list defines | |||
leaf option-code { | specific client interfaces and their | |||
type uint16; | data. Different interfaces are distinguished | |||
mandatory true; | by the key which is a configurable string | |||
description "option code"; | value."; | |||
} | leaf if-name { | |||
leaf option-name { | ||||
type string; | ||||
mandatory true; | ||||
description "option name"; | ||||
} | ||||
leaf option-description { | ||||
type string; | ||||
mandatory true; | ||||
description "description of client | ||||
option"; | ||||
} | ||||
leaf option-reference { | ||||
type string; | ||||
description "the reference of option"; | ||||
} | ||||
leaf option-value { | ||||
type string; | type string; | |||
mandatory true; | mandatory true; | |||
description "the option value"; | description "interface name"; | |||
} | ||||
} | ||||
container user-class-option { | ||||
description "user class option"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this | ||||
option will be configured at the | ||||
client"; | ||||
} | ||||
list user-class { | ||||
key user-class-id; | ||||
description "user class"; | ||||
leaf user-class-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "user class id"; | ||||
} | ||||
leaf user-class-info { | ||||
type string; | ||||
mandatory true; | ||||
description "user class info"; | ||||
} | ||||
} | ||||
} | ||||
container vendor-class-option { | ||||
description "vendor class option"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this | ||||
option will be configured at the | ||||
client"; | ||||
} | } | |||
leaf ent-num { | leaf cli-id { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "enterprise number"; | description "client id"; | |||
} | ||||
leaf-list data { | ||||
type string; | ||||
description "option data"; | ||||
} | ||||
} | ||||
container client-fqdn-option { | ||||
description "client fqdn option"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this | ||||
option will be configured at the | ||||
client"; | ||||
} | } | |||
leaf fqdn { | leaf description { | |||
type string; | type string; | |||
mandatory true; | description | |||
description "fqdn"; | "description of the client interface"; | |||
} | ||||
leaf server-initiate-update { | ||||
type boolean; | ||||
mandatory true; | ||||
description "whether server initiate"; | ||||
} | } | |||
leaf client-initiate-update { | leaf pd-function { | |||
type boolean; | type boolean; | |||
mandatory true; | mandatory true; | |||
description "whether client initiate"; | description "Whether the client | |||
can act as a requesting router | ||||
to request prefixes using prefix | ||||
delegation ([RFC3633])."; | ||||
} | } | |||
} | leaf rapid-commit { | |||
container client-architecture-type-option { | ||||
description | ||||
"client architecture type option"; | ||||
leaf enable { | ||||
type boolean; | type boolean; | |||
mandatory true; | mandatory true; | |||
description "indicate whether this | description "'1' indicates a client can initiate a Solicit-Reply | |||
option will be configured at the | message exchange by adding a Rapid Commit option in Solicit | |||
client"; | message. '0' means the client is not allowed to add a Rapid | |||
Commit option to request addresses in a two-message exchange | ||||
pattern."; | ||||
} | } | |||
list architecture-types { | container mo-tab { | |||
key type-id; | description "The management tab label indicates the operation | |||
description "architecture types"; | mode of the DHCPv6 client. 'm'=1 and 'o'=1 indicate the | |||
leaf type-id { | client will use DHCPv6 to obtain all the configuration data. | |||
type uint16; | '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 | ||||
// the intention to be whether they PIO options will be | ||||
// obeyed as received or overridden? | ||||
leaf m-tab { | ||||
type boolean; | ||||
mandatory true; | mandatory true; | |||
description "type id"; | description "m tab"; | |||
} | } | |||
leaf most-preferred { | leaf o-tab { | |||
type boolean; | type boolean; | |||
mandatory true; | mandatory true; | |||
description "most preferred flag"; | description "o tab"; | |||
} | } | |||
} | } | |||
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 { | ||||
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 client-network-interface-option { | } | |||
description | } | |||
"client network interface option"; | /* | |||
* Notifications | ||||
*/ | ||||
leaf enable { | notification notifications { | |||
type boolean; | description "dhcpv6 client notification module"; | |||
mandatory true; | container dhcpv6-client-event { | |||
description "indicate whether this | description "dhcpv6 client event"; | |||
option will be configured at the | container ia-lease-event { | |||
client"; | description "raised when the | |||
} | client was allocated a new IA from | |||
leaf type { | the server or it renew/rebind/release | |||
type uint8; | its current IA"; | |||
mandatory true; | leaf event-type { | |||
description "type"; | type enumeration{ | |||
} | enum "allocation" { | |||
leaf major { | description "allocate"; | |||
type uint8; | ||||
mandatory true; | ||||
description "major"; | ||||
} | } | |||
leaf minor { | enum "rebind" { | |||
type uint8; | description "rebind"; | |||
mandatory true; | ||||
description "minor"; | ||||
} | } | |||
} | enum "renew" { | |||
container kerberos-principal-name-option { | description "renew"; | |||
description | ||||
"kerberos principal name option"; | ||||
leaf enable { | ||||
type boolean; | ||||
mandatory true; | ||||
description "indicate whether this | ||||
option will be configured at the | ||||
client"; | ||||
} | } | |||
leaf principal-name { | enum "release" { | |||
type string; | description "release"; | |||
mandatory true; | ||||
description "principal name"; | ||||
} | } | |||
} | } | |||
container client-link-layer-addr-option { | mandatory true; | |||
description | description "event type"; | |||
"client link layer address option"; | } | |||
leaf enable { | container duid { | |||
type boolean; | description "Sets the DUID"; | |||
mandatory true; | uses duid; | |||
description "indicate whether this | } | |||
option will be configured at the | leaf iaid { | |||
client"; | type uint32; | |||
mandatory true; | ||||
description "IAID"; | ||||
} | ||||
leaf serv-name { | ||||
type string; | ||||
description "server name"; | ||||
} | ||||
leaf description { | ||||
type string; | ||||
description "description of event"; | ||||
} | ||||
} | ||||
container invalid-ia-detected { | ||||
description "raised when the identity | ||||
association of the client can be proved | ||||
to be invalid. Possible condition includes | ||||
duplicated address, illegal address, etc."; | ||||
container duid { | ||||
description "Sets the DUID"; | ||||
uses duid; | ||||
} | ||||
leaf cli-duid { | ||||
type uint32; | ||||
mandatory true; | ||||
description "duid of client"; | ||||
} | ||||
leaf iaid { | ||||
type uint32; | ||||
mandatory true; | ||||
description "IAID"; | ||||
} | ||||
leaf serv-name { | ||||
type string; | ||||
description "server name"; | ||||
} | ||||
leaf description { | ||||
type string; | ||||
description "description of the event"; | ||||
} | ||||
} | ||||
container retransmission-failed { | ||||
description "raised when the retransmission | ||||
mechanism defined in [RFC3315] is failed."; | ||||
container duid { | ||||
description "Sets the DUID"; | ||||
uses duid; | ||||
} | ||||
leaf description { | ||||
type enumeration { | ||||
enum "MRC failed" { | ||||
description "MRC failed"; | ||||
} | } | |||
leaf link-layer-type { | enum "MRD failed" { | |||
type uint16; | description "MRD failed"; | |||
mandatory true; | ||||
description "link layer type"; | ||||
} | ||||
leaf link-layer-addr { | ||||
type string; | ||||
mandatory true; | ||||
description "link layer address"; | ||||
} | } | |||
} | } | |||
mandatory true; | ||||
description "description of failure"; | ||||
} | } | |||
container identity-associations { | ||||
config "false"; | } | |||
description "IA is a construct through | container failed-status-turn-up { | |||
which a server and a client can identify, | description "raised when the client receives | |||
group, and manage a set of related IPv6 | a message includes an unsuccessful Status Code | |||
addresses. The key of the list is a | option."; | |||
4-byte number IAID defined in [RFC3315]."; | container duid { | |||
list identity-association { | description "Sets the DUID"; | |||
key iaid; | uses duid; | |||
description "IA"; | } | |||
leaf iaid { | leaf status-code { | |||
type uint32; | type enumeration { | |||
mandatory true; | enum "1" { | |||
description "IAID"; | description "UnspecFail"; | |||
} | ||||
leaf ia-type { | ||||
type string; | ||||
mandatory true; | ||||
description "IA type"; | ||||
} | ||||
leaf-list ipv6-addr { | ||||
type inet:ipv6-address; | ||||
description "ipv6 address"; | ||||
} | ||||
leaf-list ipv6-prefix { | ||||
type inet:ipv6-prefix; | ||||
description "ipv6 prefix"; | ||||
} | ||||
leaf-list prefix-length { | ||||
type uint8; | ||||
description "ipv6 prefix length"; | ||||
} | } | |||
leaf t1-time { | enum "2" { | |||
type yang:timeticks; | description "NoAddrAvail"; | |||
mandatory true; | ||||
description "t1 time"; | ||||
} | } | |||
leaf t2-time { | enum "3" { | |||
type yang:timeticks; | description "NoBinding"; | |||
mandatory true; | ||||
description "t2 time"; | ||||
} | } | |||
leaf preferred-lifetime { | enum "4" { | |||
type yang:timeticks; | description "NotOnLink"; | |||
mandatory true; | ||||
description "preferred lifetime"; | ||||
} | } | |||
leaf valid-lifetime { | enum "5" { | |||
type yang:timeticks; | description "UseMulticast"; | |||
mandatory true; | ||||
description "valid lifetime"; | ||||
} | } | |||
} | } | |||
mandatory true; | ||||
description "employed status code"; | ||||
} | } | |||
container if-other-paras { | } | |||
config "false"; | } | |||
description "A client can obtain | } | |||
extra configuration data other than | } | |||
address and prefix information through | ||||
DHCPv6. This container describes such | <CODE ENDS> | |||
data the client was configured. The | ||||
potential configuration data may | 3.4. DHCPv6 Options YANG Model | |||
include DNS server addresses, SIP | ||||
server domain names, etc."; | This module imports typedefs from [RFC6991]. | |||
leaf-list uni-dhcpv6-serv-addr { | ||||
type inet:ipv6-address; | <CODE BEGINS> file "ietf-dhcpv6-options@2017-12-22.yang" | |||
description "unicast server address"; | module ietf-dhcpv6-options { | |||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-options"; | ||||
prefix "dhcpv6-options"; | ||||
import ietf-inet-types { | ||||
prefix inet; | ||||
revision-date "2013-07-15"; | ||||
} | ||||
import ietf-yang-types { | ||||
prefix yang; | ||||
revision-date "2013-07-15"; | ||||
} | ||||
organization "DHC WG"; | ||||
contact "yong@csnet1.cs.tsinghua.edu.cn | ||||
wangh13@mails.tsinghua.edu.cn | ||||
lh.sunlinh@gmail.com | ||||
ian.farrer@telekom.de | ||||
sladjana.zechlin@telekom.de | ||||
hezihao9512@gmail.com"; | ||||
description "This model defines a YANG data model that can be | ||||
used to configure and manage a DHCPv6 server."; | ||||
revision 2017-12-22 { | ||||
description "Resolve most issues on Ian's github."; | ||||
reference "I-D: draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
revision 2017-11-24 { | ||||
description "First version of the separated DHCPv6 options | ||||
YANG model."; | ||||
reference "I-D:draft-ietf-dhc-dhcpv6-yang"; | ||||
} | ||||
/* | ||||
* Features | ||||
*/ | ||||
// features for server options | ||||
feature server-unicast-op { | ||||
description "Support for Server Unicast option"; | ||||
} | ||||
feature sip-server-domain-name-list-op { | ||||
description "Support for SIP Server Domain Name List option"; | ||||
} | ||||
feature sip-server-address-list-op { | ||||
description "Support for SIP Server Address List option"; | ||||
} | ||||
feature dns-config-op { | ||||
description "Support for DNS Recursive Name Server option"; | ||||
} | ||||
feature domain-searchlist-op { | ||||
description "Support for Domain Search List Option"; | ||||
} | ||||
feature nis-config-op { | ||||
description "Support for Network Information Service (NIS) | ||||
Servers option"; | ||||
} | ||||
feature nis-plus-config-op { | ||||
description "Support for Network Information Service V2 (NIS+) | ||||
Servers option"; | ||||
} | ||||
feature nis-domain-name-op { | ||||
description "Support for Network Information Service (NIS) | ||||
Domain Name option"; | ||||
} | ||||
feature nis-plus-domain-name-op { | ||||
description "Support for Network Information Service V2 (NIS+) | ||||
Server option"; | ||||
} | ||||
feature sntp-server-op { | ||||
description "Support for Simple Network Protocol Configuration | ||||
(SNTP) Servers option"; | ||||
} | ||||
feature info-refresh-time-op { | ||||
description "Support for Information Refresh Time option"; | ||||
} | ||||
feature client-fqdn-op { | ||||
description "Support for Client FQDN option"; | ||||
} | ||||
feature posix-timezone-op { | ||||
description "Support for New POIX Timezone option"; | ||||
} | ||||
feature tzdb-timezone-op { | ||||
description "Support for New TZDB Timezone option"; | ||||
} | ||||
feature ntp-server-op { | ||||
description "Support for Network Time Protocol (NTP) | ||||
Server option"; | ||||
} | ||||
feature boot-file-url-op { | ||||
description "Support for Boot File URL option"; | ||||
} | ||||
feature boot-file-param-op { | ||||
description "Support for Boot File Parameters option"; | ||||
} | ||||
feature aftr-name-op { | ||||
description "Support for Address Family Transition | ||||
Router (AFTR) option"; | ||||
} | ||||
feature kbr-default-name-op { | ||||
description "Support for Kerberos Default Name | ||||
Option"; | ||||
} | ||||
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"; | ||||
} | ||||
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"; | ||||
} | ||||
feature s46-dmr-op { | ||||
description "Support for S46 Default Mapping Rule | ||||
(DMR) option"; | ||||
} | ||||
feature s46-v4-v6-binding-op { | ||||
description "Support for S46 IPv4/IPv6 Address | ||||
Bind option"; | ||||
} | ||||
// features for relay-supplied options | ||||
feature erp-local-domain-name-op { | ||||
description "Support for ERP Local Domain | ||||
Name option"; | ||||
} | ||||
// features for client options | ||||
feature option-request-op { | ||||
description "Support for Option Request option"; | ||||
} | ||||
feature rapid-commit-op { | ||||
description "Support for Rapid Commit option"; | ||||
} | ||||
feature user-class-op { | ||||
description "Support for User Class option"; | ||||
} | ||||
feature vendor-class-op { | ||||
description "Support for Vendor Class option"; | ||||
} | ||||
feature client-arch-type-op { | ||||
description "Support for Client System Architecture | ||||
Type option"; | ||||
} | ||||
feature client-network-interface-identifier-op { | ||||
description "Support for Client Network Interface | ||||
Identifier option"; | ||||
} | ||||
feature kbr-principal-name-op { | ||||
description "Support for Kerberos Principal | ||||
Name option"; | ||||
} | ||||
feature kbr-realm-name-op { | ||||
description "Support Kerberos Realm Name option"; | ||||
} | ||||
feature client-link-layer-addr-op { | ||||
description "Support for Client Link-Layer Address | ||||
Option"; | ||||
} | ||||
// features for custom options | ||||
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 | ||||
Integer Value"; | ||||
} | ||||
feature operator-op-int16 { | ||||
description "Support for Opion with 16-bit | ||||
Integer Value"; | ||||
} | ||||
feature operator-op-int8 { | ||||
description "Support for Opion with 8-bit | ||||
Integer Value"; | ||||
} | ||||
feature operator-op-uri { | ||||
description "Support for Opion with URI"; | ||||
} | ||||
feature operator-op-textstring { | ||||
description "Support for Opion with Text | ||||
String"; | ||||
} | ||||
feature operator-op-var-data { | ||||
description "Support for Opion with | ||||
Variable-Length Data"; | ||||
} | ||||
feature operator-op-dns-wire { | ||||
description "Support for Opion with DNS Wire | ||||
Format Domain Name List"; | ||||
} | ||||
/* | ||||
* Groupings | ||||
*/ | ||||
grouping portset-para { | ||||
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; | ||||
mandatory true; | ||||
description "length of a psid"; | ||||
} | ||||
leaf psid { | ||||
type uint16; | ||||
mandatory true; | ||||
description "psid value"; | ||||
} | ||||
} | ||||
} | ||||
grouping duid { | ||||
description "DHCP Unique Identifier"; | ||||
reference "RFC3315: Section 9"; | ||||
leaf type-code { | ||||
type uint16; | ||||
default 65535; | ||||
description "Type code of this DUID"; | ||||
} | ||||
choice duid-type { | ||||
default duid-invalid; | ||||
description "Selects the format for the DUID."; | ||||
case duid-llt { | ||||
description "DUID Based on Link-layer Address Plus Time (Type 1 - DUID-LLT)"; | ||||
reference "RFC3315 Section 9.2"; | ||||
leaf duid-llt-hardware-type { | ||||
type uint16; | ||||
description "Hardware type as assigned by IANA (RFC826)."; | ||||
} | } | |||
container dns-paras { | leaf duid-llt-time { | |||
description "dns parameters"; | type yang:timeticks; | |||
leaf domain-search-list { | description "The time value is the time that the DUID is generated | |||
type string; | represented in seconds since midnight (UTC), January 1, 2000, | |||
mandatory true; | modulo 2^32."; | |||
description "domain search list"; | ||||
} | ||||
list dns-servers { | ||||
key dns-serv-id; | ||||
description "dns servers"; | ||||
leaf dns-serv-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "dns server id"; | ||||
} | ||||
leaf dns-serv-addr { | ||||
type inet:ipv6-address; | ||||
mandatory true; | ||||
description "dns server address"; | ||||
} | ||||
} | ||||
} | } | |||
container sip-paras { | leaf duid-llt-link-layer-addr { | |||
description "sip parameters"; | type yang:mac-address; | |||
list sip-servers { | description "Link-layer address as described in RFC2464"; | |||
key sip-serv-id; | ||||
description "sip server info"; | ||||
leaf sip-serv-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "sip server id"; | ||||
} | ||||
leaf sip-serv-addr { | ||||
type inet:ipv6-address; | ||||
mandatory true; | ||||
description "sip server address"; | ||||
} | ||||
leaf sip-serv-domain-name { | ||||
type string; | ||||
mandatory true; | ||||
description | ||||
"sip server domain name"; | ||||
} | ||||
} | ||||
} | } | |||
container nis-paras { | } | |||
description "nis parameters"; | case duid-en { | |||
leaf nis-domain-name { | description "DUID Assigned by Vendor Based on Enterprise Number (Type 2 - DUID-EN)"; | |||
type string; | reference "RFC3315 Section 9.3"; | |||
mandatory true; | leaf duid-en-enterprise-number { | |||
description "nis domain name"; | type uint32; | |||
} | description "Vendor's registered Private Enterprise Number as | |||
list nis-server { | maintained by IANA"; | |||
key nis-serv-id; | ||||
description "nis server"; | ||||
leaf nis-serv-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "nis server id"; | ||||
} | ||||
leaf nis-serv-addr { | ||||
type inet:ipv6-address; | ||||
mandatory true; | ||||
description "nis server address"; | ||||
} | ||||
} | ||||
} | } | |||
container nis-plus-paras { | leaf duid-en-identifier { | |||
description "nisp parameters"; | type string; | |||
leaf nis-plus-domain-name { | description "Indentifier, unique to the device that is using it"; | |||
type string; | ||||
mandatory true; | ||||
description "nisp domian name"; | ||||
} | ||||
list nis-plus-server { | ||||
key nis-plus-serv-id; | ||||
description "nisp server"; | ||||
leaf nis-plus-serv-id { | ||||
type uint8; | ||||
mandatory true; | ||||
description "nisp server id"; | ||||
} | ||||
leaf nis-plus-serv-addr { | ||||
type inet:ipv6-address; | ||||
mandatory true; | ||||
description "nisp server address"; | ||||
} | ||||
} | ||||
} | } | |||
leaf info-refresh-time { | } | |||
type yang:timeticks; | case duid-ll { | |||
description "info refresh time"; | 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)."; | ||||
} | } | |||
container time-zone-paras { | leaf duid-ll-link-layer-addr { | |||
description "time zone parameters"; | type yang:mac-address; | |||
leaf tz-posix { | description "Link-layer address as described in RFC2464"; | |||
type string; | } | |||
mandatory true; | } | |||
description "tz posix"; | case duid-uuid { | |||
} | description "DUID Based on Universally Unique Identifier (Type 4 - DUID-UUID)"; | |||
leaf tz-database { | reference "RFC6335 Defination of the UUID-Based Unique Identifier"; | |||
type string; | leaf uuid { | |||
mandatory true; | type yang:uuid; | |||
description "tz database"; | description "A Universally Unique IDentifier in the string representation | |||
} |