summaryrefslogtreecommitdiffstats
path: root/src/share/yang/modules/ietf-dhcpv6-options@2018-09-04.yang
diff options
context:
space:
mode:
Diffstat (limited to 'src/share/yang/modules/ietf-dhcpv6-options@2018-09-04.yang')
-rw-r--r--src/share/yang/modules/ietf-dhcpv6-options@2018-09-04.yang1391
1 files changed, 1391 insertions, 0 deletions
diff --git a/src/share/yang/modules/ietf-dhcpv6-options@2018-09-04.yang b/src/share/yang/modules/ietf-dhcpv6-options@2018-09-04.yang
new file mode 100644
index 0000000..76169f1
--- /dev/null
+++ b/src/share/yang/modules/ietf-dhcpv6-options@2018-09-04.yang
@@ -0,0 +1,1391 @@
+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;
+ }
+ import ietf-yang-types {
+ prefix yang;
+ }
+ import ietf-dhcpv6-types {
+ prefix dhcpv6-types;
+ }
+
+ organization "DHC WG";
+ contact
+ "cuiyong@tsinghua.edu.cn
+ wangh13@mails.tsinghua.edu.cn
+ lh.sunlinh@gmail.com
+ ian.farrer@telekom.de
+ sladjana.zechlin@telekom.de
+ hezihao9512@gmail.com";
+
+ description "This model defines a YANG data model that can be
+ used to configure DHCPv6 options.";
+
+ revision 2018-09-04 {
+ description "";
+ reference "I-D: draft-ietf-dhc-dhcpv6-yang";
+ }
+ revision 2018-03-04 {
+ description "Resolved most issues on the DHC official
+ github";
+ reference "I-D: draft-ietf-dhc-dhcpv6-yang";
+ }
+
+ revision 2017-12-22 {
+ description "Resolve most issues on Ian's github.";
+ reference "I-D: draft-ietf-dhc-dhcpv6-yang";
+ }
+
+ revision 2017-11-24 {
+ description "First version of the separated DHCPv6 options
+ YANG model.";
+ reference "I-D:draft-ietf-dhc-dhcpv6-yang";
+ }
+
+ /*
+ * 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-servers-op {
+ description "Support for DNS Servers 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 server-option-definitions {
+ description "Contains definitions for options configured on the
+ DHCPv6 server which will be supplied to clients.";
+
+ container server-unicast-option {
+ if-feature server-unicast-op;
+ presence "Enable this option";
+ description "OPTION_UNICAST (12) Server Unicast Option";
+ reference "RFC3315: Dynamic Host Configuration Protocol for
+ IPv6 (DHCPv6)";
+ leaf server-address {
+ type inet:ipv6-address;
+ description "server ipv6 address";
+ }
+ }
+
+ container sip-server-domain-name-list-option {
+ if-feature sip-server-domain-name-list-op;
+ presence "Enable this option";
+ description "OPTION_SIP_SERVER_D (21) SIP Servers Domain Name List";
+ reference "RFC3319: Dynamic Host Configuration Protocol
+ (DHCPv6) Options for Session Initiation Protocol (SIP) Servers";
+ leaf sip-serv-domain-name {
+ type string;
+ mandatory true;
+ description "sip server domain name";
+ }
+ }
+
+ container sip-server-address-list-option {
+ if-feature sip-server-address-list-op;
+ presence "Enable this option";
+ description "OPTION_SIP_SERVER_A (22) SIP Servers IPv6 Address List";
+ reference "RFC3319: Dynamic Host Configuration Protocol (DHCPv6)
+ Options for Session Initiation Protocol (SIP) Servers";
+ 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-addr {
+ type inet:ipv6-address;
+ mandatory true;
+ description "sip server addr";
+ }
+ }
+ }
+
+ container dns-servers-option {
+ if-feature dns-servers-op;
+ presence "Enable this option";
+ description "OPTION_DNS_SERVERS (23) DNS recursive Name Server option";
+ reference "RFC3646: DNS Configuration options for Dynamic Host Configuration
+ Protocol for IPv6 (DHCPv6)";
+ 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 {
+ if-feature domain-searchlist-op;
+ presence "Enable this option";
+ description "OPTION_DOMAIN_LIST (24) Domain Search List Option";
+ reference "RFC3646: DNS Configuration options for Dynamic
+ Host Configuration Protocol for IPv6 (DHCPv6)";
+ 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 {
+ if-feature nis-config-op;
+ presence "Enable this option";
+ description "OPTION_NIS_SERVERS (27) Network Information Service (NIS)
+ Servers Option.";
+ reference "RFC3898: Network Information Service (NIS) Configuration
+ Options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6)";
+ 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 {
+ if-feature nis-plus-config-op;
+ presence "Enable this 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)";
+ 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 nis-domain-name-option {
+ if-feature nis-domain-name-op;
+ presence "Enable this option";
+ description "OPTION_NIS_DOMAIN_NAME (29) Network Information
+ Service (NIS) Domain Name Option";
+ reference "RFC3989: Network Information Service (NIS)
+ Configuration Options for Dynamic Host Configuration Protocol
+ for IPv6 (DHCPv6)";
+ leaf nis-domain-name {
+ type string;
+ description "The Network Information Service (NIS) Domain Name
+ option is used by the server to convey client's NIS Domain Name
+ info to the client.";
+ }
+ }
+
+ container nis-plus-domain-name-option {
+ if-feature nis-plus-domain-name-op;
+ presence "Enable this option";
+ description "OPTION_NISP_DOMAIN_NAME (30) Network Information
+ Service V2 (NIS+) Domain Name Option";
+ reference "RFC3989: Network Information Service (NIS)
+ Configuration Options for Dynamic Host Configuration Protocol
+ for IPv6 (DHCPv6)";
+ leaf nis-plus-domain-name {
+ type string;
+ description "The Network Information Service V2 (NIS+) Domain Name
+ option is used by the server to convey client's NIS+ Domain Name
+ info to the client.";
+ }
+ }
+
+
+ container sntp-server-option {
+ if-feature sntp-server-op;
+ presence "Enable this option";
+ description "OPTION_SNTP_SERVERS (31) Simple Network Time Protocol
+ (SNTP) Servers Option";
+ reference "RFC4075: Simple Network Time Protocol (SNTP) Configuration
+ Option for DHCPv6";
+ 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 {
+ if-feature info-refresh-time-op;
+ presence "Enable this 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 info-refresh-time {
+ type yang:timeticks;
+ mandatory true;
+ description "The refresh time.";
+ }
+ }
+
+ container client-fqdn-option {
+ if-feature client-fqdn-op;
+ presence "Enable this 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 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 {
+ type boolean;
+ mandatory true;
+ description "modify by client";
+ }
+ }
+
+ container posix-timezone-option {
+ if-feature posix-timezone-op;
+ presence "Enable this option";
+ description "OPTION_NEW_POSIX_TIMEZONE (41) Posix Timezone option";
+ reference "RFC4833: Timezone Options for DHCP";
+ leaf tz-posix {
+ type string;
+ mandatory true;
+ description "TZ Posix IEEE 1003.1 String";
+ }
+ }
+
+ container tzdb-timezone-option {
+ if-feature tzdb-timezone-op;
+ presence "Enable this option";
+ description "OPTION_NEW_TZDB_TIMEZONE (42) Timezone Database option";
+ reference "RFC4822: Timezone Options for DHCP";
+ leaf tz-database {
+ type string;
+ mandatory true;
+ description "Reference to the TZ Database";
+ }
+ }
+
+ container ntp-server-option {
+ //This option looks like it needs work to correctly model the
+ //option as defined in the RFC.
+
+ // Zihao - Re-modelled so it only contains one time source suboption
+
+ if-feature ntp-server-op;
+ presence "Enable this option";
+ description "OPTION_NTP_SERVER (56) NTP Server Option for DHCPv6";
+ reference "RFC5908: Network Time Protocol (NTP) Server Option for
+ DHCPv6";
+ list ntp-server {
+ key ntp-serv-id;
+ description "ntp server info";
+ leaf ntp-serv-id {
+ type uint8;
+ mandatory true;
+ description "NTP server id";
+ }
+ choice ntp-time-source-suboption {
+ description "Select a NTP time source suboption.";
+ case server-address {
+ leaf-list ntp-serv-addr-suboption {
+ type inet:ipv6-address;
+ description "NTP server addr";
+ }
+ }
+ case server-multicast-address {
+ leaf-list ntp-serv-mul-addr-suboption {
+ type inet:ipv6-address;
+ description "NTP server multicast addr";
+ }
+ }
+ case server-fqdn {
+ leaf-list ntp-serv-fqdn-suboption {
+ type string;
+ description "NTP server fqdn";
+ }
+ }
+ }
+ }
+ }
+
+ container boot-file-url-option {
+ if-feature boot-file-url-op;
+ presence "Enable this option";
+ description "OPT_BOOTFILE_URL (59) Boot File URL Option";
+ reference "RFC5970: DHCPv6 Options for Network Boot";
+ list boot-file {
+ key boot-file-id;
+ description "boot file info";
+ leaf boot-file-id {
+ type uint8;
+ mandatory true;
+ description "boot file id";
+ }
+ leaf-list suitable-arch-type {
+ type uint16;
+ description "architecture type";
+ }
+ leaf-list suitable-net-if {
+ type uint32;
+ description "network interface";
+ }
+ leaf boot-file-url {
+ type string;
+ mandatory true;
+ description "url for boot file";
+ }
+ }
+ }
+
+ container boot-file-param-option {
+ if-feature boot-file-param-op;
+ presence "Enable this option";
+ description "OPT_BOOTFiLE_PARAM (60) Boot File Parameters Option";
+ reference "RFC5970: DHCPv6 Options for Network Boot";
+ list boot-file-paras {
+ key para-id;
+ description "boot file parameters";
+ leaf para-id {
+ type uint8;
+ mandatory true;
+ description "parameter id";
+ }
+ leaf parameter {
+ type string;
+ mandatory true;
+ description "parameter value";
+ }
+ }
+ }
+
+ container aftr-name-option {
+ if-feature aftr-name-op;
+ presence "Enable this option";
+ description "OPTION_AFTR_NAME (64) AFTR-Name DHCPv6 Option";
+ reference "RFC6334: Dynamic Host Configuration Protocol for IPv6
+ (DHCPv6) Option for Dual-Stack Lite";
+ leaf tunnel-endpoint-name {
+ type string;
+ mandatory true;
+ description "aftr name";
+ }
+ }
+
+ container kbr-default-name-option {
+ if-feature kbr-default-name-op;
+ presence "Enable this option";
+ description "OPTION_KRB_DEFAULT_REALM_NAME (77) Kerberos Default Realm Name Option";
+ reference "RFC6784: Kerberos Options for DHCPv6";
+ leaf default-realm-name {
+ type string;
+ mandatory true;
+ description "default realm name";
+ }
+ }
+
+ container kbr-kdc-option {
+ if-feature kbr-kdc-op;
+ presence "Enable this option";
+ description "OPTION_KRB_KDC (78) Kerberos KDB Option";
+ reference "RFC6784: Kerberos Options for DHCPv6";
+ 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 sol-max-rt-option {
+ if-feature sol-max-rt-op;
+ presence "Enable this option";
+ description "OPTION_SOL_MAX_RT (82) sol max rt option";
+ reference "RFC7083: Modification to Default Values of
+ SOL_MAX_RT and INF_MAX_RT";
+ leaf sol-max-rt-value {
+ type yang:timeticks;
+ mandatory true;
+ description "sol max rt value";
+ }
+ }
+
+ container inf-max-rt-option {
+ if-feature inf-max-rt-op;
+ presence "Enable this option";
+ description "OPTION_INF_MAX_RT (83) inf max rt option";
+ reference "RFC7083: Modification to Default Values of
+ SOL_MAX_RT and INF_MAX_RT";
+ leaf inf-max-rt-value {
+ type yang:timeticks;
+ mandatory true;
+ description "inf max rt value";
+ }
+ }
+
+ container addr-selection-option {
+ if-feature addr-selection-op;
+ presence "Enable this option";
+ description "OPTION_ADDRSEL (84) and OPTION_ADDRSEL_TABLE (85)";
+ reference "RFC7078: Distributing Address Selection Policy Using
+ DHCPv6";
+ // if - Needs checking to see if this matches the RFC - there
+ // are two options here.
+ // Zihao - I think this matches RFC7078
+ leaf a-bit-set {
+ type boolean;
+ mandatory true;
+ description "a bit";
+ }
+ leaf p-bit-set {
+ type boolean;
+ mandatory true;
+ description "p bit";
+ }
+ list policy-table {
+ key policy-id;
+ description "policy table";
+ leaf policy-id {
+ type uint8;
+ mandatory true;
+ description "policy id";
+ }
+ leaf label {
+ type uint8;
+ mandatory true;
+ description "label";
+ }
+ leaf precedence {
+ type uint8;
+ 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 pcp-server-option {
+ if-feature pcp-server-op;
+ presence "Enable this option";
+ description "OPTION_V6_PCP_SERVER (86) pcp server option";
+ reference "RFC7291: DHCP Options for the Port Control
+ Protocol (PCP)";
+ list pcp-server {
+ key pcp-serv-id;
+ description "pcp server info";
+ leaf pcp-serv-id {
+ type uint8;
+ mandatory true;
+ description "pcp server id";
+ }
+ leaf pcp-serv-addr {
+ type inet:ipv6-address;
+ mandatory true;
+ description "pcp server addr";
+ }
+ }
+ }
+
+ container s46-rule-option {
+ if-feature s46-rule-op;
+ presence "Enable this option";
+ description "OPTION_S46_RULE (89) S46 rule option";
+ reference "RFC7598: DHCPv6 Options for Configuration of
+ Softwire Address and Port-Mapped Clients";
+ list s46-rule {
+ key rule-id;
+ description "s46 rule";
+ leaf rule-id {
+ type uint8;
+ mandatory true;
+ description "rule id";
+ }
+ leaf rule-type {
+ type enumeration {
+ enum "BMR" {
+ description "BMR";
+ }
+ enum "FMR" {
+ description "FMR";
+ }
+ }
+ mandatory true;
+ description "rule type";
+ }
+ leaf prefix4-len {
+ type uint8;
+ mandatory true;
+ description "ipv4 prefix length";
+ }
+ leaf ipv4-prefix {
+ type inet:ipv4-prefix;
+ mandatory true;
+ description "ipv4 prefix";
+ }
+ leaf prefix6-len {
+ type uint8;
+ mandatory true;
+ description "ipv6 prefix length";
+ }
+ leaf ipv6-prefix {
+ type inet:ipv6-prefix;
+ mandatory true;
+ description "ipv6 prefix";
+ }
+ uses dhcpv6-types:portset-para;
+ }
+ }
+
+ container s46-br-option {
+ if-feature s46-br-op;
+ presence "Enable this option";
+ description "OPTION_S46_BR (90) S46 BR Option";
+ reference "RFC7598: DHCPv6 Options for Configuration of
+ Softwire Address and Port-Mapped Clients";
+ list br {
+ key br-id;
+ description "br info";
+ leaf br-id {
+ type uint8;
+ mandatory true;
+ description "br id";
+ }
+ leaf br-ipv6-addr {
+ type inet:ipv6-address;
+ mandatory true;
+ description "br ipv6 addr";
+ }
+ }
+ }
+
+ container s46-dmr-option {
+ if-feature s46-dmr-op;
+ presence "Enable this option";
+ description "OPTION_S46_DMR (91) S46 DMR Option";
+ reference "RFC7598: DHCPv6 Options for Configuration of
+ Softwire Address and Port-Mapped Clients";
+ list dmr {
+ key dmr-id;
+ description "dmr info";
+ leaf dmr-id {
+ 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";
+ }
+ }
+ }
+
+ container s46-v4-v6-binding-option {
+ if-feature s46-v4-v6-binding-op;
+ presence "Enable this option";
+ description "OPTION_S46_V4V6BIND (92) S46 IPv4/IPv6 Address
+ Binding option";
+ reference "RFC7598: DHCPv6 Options for Configuration of
+ Softwire Address and Port-Mapped Clients";
+ list ce {
+ key ce-id;
+ description "ce info";
+ leaf ce-id {
+ 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-address;
+ mandatory true;
+ description "bind ipv6 prefix";
+ }
+ uses dhcpv6-types:portset-para;
+ }
+ }
+
+ }
+ //if - NB - The list of options needs to be updated.
+
+
+ grouping relay-supplied-option-definitions {
+ // if - The structure here needs to be checked and probably reworked.
+ description "OPTION_RSOO (66) Relay-Supplied Options option";
+ reference "RFC6422: Relay-Supplied DHCP Options";
+ container erp-local-domain-name-option {
+ if-feature erp-local-domain-name-op;
+ presence "Enable this option";
+ description "OPTION_ERP_LOCAL_DOMAIN_NAME (65) DHCPv6 ERP Local
+ Domain Name Option";
+ reference "RFC6440: The EAP Re-authentication Protocol (ERP)
+ Local Domain Name DHCPv6 Option";
+ 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;
+ // if - Maybe DUID definition needs to be moved to this module.
+ uses dhcpv6-types:duid;
+ }
+ leaf erp-name {
+ type string;
+ mandatory true;
+ description "erp name";
+ }
+ }
+ }
+ }
+
+ grouping client-option-definitions {
+ description "Contains definitions for options configured on the
+ DHCPv6 client which will be sent to the server.";
+
+ list new-or-standard-cli-option {
+ key option-code;
+ description "new or standard client option";
+ leaf option-code {
+ type uint16;
+ mandatory true;
+ description "option code";
+ }
+ 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;
+ mandatory true;
+ description "the option value";
+ }
+ }
+
+ container option-request-option {
+ if-feature option-request-op;
+ presence "Enable this option";
+ description "OPTION_ORO (6) Option Request Option";
+ reference "RFC3315: Dynamic Host Configuration Protocol for
+ IPv6 (DHCPv6)";
+ list oro-option {
+ key option-code;
+ description "oro option";
+ leaf option-code {
+ type uint16;
+ mandatory true;
+ description "option code";
+ }
+ leaf description {
+ type string;
+ mandatory true;
+ description "description of oro
+ options";
+ }
+ }
+ }
+
+ container user-class-option {
+ if-feature user-class-op;
+ presence "Enable this option";
+ description "OPTION_USER_CLASS (15) User Class Option";
+ reference "RFC3315: Dynamic Host Configuration Protocol
+ for IPv6 (DHCPv6)";
+ 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-data {
+ type string;
+ mandatory true;
+ description "The information contained in the data area
+ of this option is contained in one or more opaque
+ fields that represent the user class or classes of
+ which the client is a member. ";
+ }
+ }
+ }
+
+ container vendor-class-option {
+ if-feature vendor-class-op;
+ presence "Enable this option";
+ description "OPTION_VENDOR_CLASS (16) Vendor Class Option";
+ reference "RFC3315: Dynamic Host Configuration Protocol
+ for IPv6 (DHCPv6)";
+ leaf enterprise-number {
+ type uint32;
+ mandatory true;
+ description "enterprise number";
+ }
+ list vendor-class {
+ key vendor-class-id;
+ description "vendor class";
+ leaf vendor-class-id {
+ type uint8;
+ mandatory true;
+ description "vendor class id";
+ }
+ leaf vendor-class-data {
+ type string;
+ mandatory true;
+ description "The vendor-class-data is composed of a series of
+ separate items, each of which describes some characteristic
+ of the client's hardware configuration. Examples of
+ vendor-class-data instances might include the version of the
+ operating system the client is running or the amount of memory
+ installed on the client.";
+ }
+ }
+ }
+
+ container client-fqdn-option {
+ if-feature client-fqdn-op;
+ presence "Enable this option";
+ description "OPTION_CLIENT_FQDN (39) The Dynamic Host
+ Configuration Protocol for IPv6 (DHCPv6) Client Fully
+ Qualified Domain Name (FQDN) Option";
+ reference "RFC4704: The Dynamic Host Configuration Protocol
+ for IPv6 (DHCPv6) Client Fully Qualified Domain Name (FQDN)
+ Option";
+ leaf fqdn {
+ type string;
+ mandatory true;
+ description "fqdn";
+ }
+ leaf server-initiate-update {
+ type boolean;
+ mandatory true;
+ description "whether server initiate";
+ }
+ leaf client-initiate-update {
+ type boolean;
+ mandatory true;
+ description "whether client initiate";
+ }
+ }
+
+ container client-arch-type-option {
+ if-feature client-arch-type-op;
+ presence "Enable this option";
+ description "OPTION_CLIENT_ARCH_TYPE (61) Client System
+ Architecture Type Option";
+ reference "RFC5970: DHCPv6 Options for Network Boot";
+ list architecture-types {
+ key type-id;
+ description "architecture types";
+ leaf type-id {
+ type uint16;
+ mandatory true;
+ description "type id";
+ }
+ leaf most-preferred {
+ type boolean;
+ mandatory true;
+ description "most preferred flag";
+ }
+ }
+ }
+
+ container client-network-interface-identifier-option {
+ if-feature client-network-interface-identifier-op;
+ presence "Enable this option";
+ description "OPTION_NII (62) Client Network Interface
+ Identifier Option";
+ reference "RFC5970: DHCPv6 Options for Network Boot";
+ leaf type {
+ type uint8;
+ mandatory true;
+ description "type";
+ }
+ leaf major {
+ type uint8;
+ mandatory true;
+ description "major";
+ }
+ leaf minor {
+ type uint8;
+ mandatory true;
+ description "minor";
+ }
+ }
+
+ container kbr-principal-name-option {
+ if-feature kbr-principal-name-op;
+ presence "Enable this option";
+ description "OPTION_KRB_PRINCIPAL_NAME (75) Kerberos
+ Principal Name Option";
+ reference "RFC6784: Kerberos Options for DHCPv6";
+ list principle-name {
+ key principle-name-id;
+ description "principle name";
+ leaf principle-name-id {
+ type uint8;
+ mandatory true;
+ description "principle name id";
+ }
+ leaf name-type {
+ type int32;
+ mandatory true;
+ description "This field specifies the type of name that follows.";
+ }
+ leaf name-string {
+ type string;
+ mandatory true;
+ description "This field encodes a sequence of components that form
+ a name, each component encoded as a KerberoString";
+ }
+ }
+ }
+
+ container kbr-realm-name-option {
+ if-feature kbr-realm-name-op;
+ presence "Enable this option";
+ description "OPTION_KRB_REALM_NAME (76) Kerberos Realm Name Option";
+ reference "RFC6784: Kerberos Options for DHCPv6";
+ leaf realm-name {
+ type string;
+ mandatory true;
+ description "realm name";
+ }
+ }
+
+ container client-link-layer-addr-option {
+ if-feature client-link-layer-addr-op;
+ presence "Enable this option";
+ description "OPTION_CLIENT_LINKLAYER_ADDR (79) DHCPv6 Client
+ Link-Layer Address Option";
+ reference "RFC6939: Client Link-Layer Address Option in
+ DHCPv6";
+ leaf link-layer-type {
+ type uint16;
+ mandatory true;
+ description "Client link-layer address type. The link-layer
+ type MUST be a valid hardware type assigned by the IANA,
+ as described in [RFC0826]";
+ }
+ leaf link-layer-addr {
+ type string;
+ mandatory true;
+ description "Client link-layer address";
+ }
+ }
+
+ }
+
+
+ grouping custom-option-definitions {
+ description "operator customized options";
+
+ container operator-option-ipv6-address {
+ if-feature operator-op-ipv6-address;
+ presence "Enable this option";
+ description "operator ipv6 address option";
+ reference "RFC7227: Guidelines for Creating New DHCPv6 Options";
+ list operator-ipv6-addr {
+ key operator-ipv6-addr-id;
+ description "operator ipv6 address info";
+ leaf operator-ipv6-addr-id {
+ type uint8;
+ mandatory true;
+ description "operator ipv6 address id";
+ }
+ leaf operator-ipv6-addr {
+ type inet:ipv6-address;
+ mandatory true;
+ description "operator ipv6 address id";
+ }
+ }
+ }
+
+ container operator-option-single-flag {
+ if-feature operator-op-single-flag;
+ presence "Enable this option";
+ description "operator single flag";
+ reference "RFC7227: Guidelines for Creating New DHCPv6
+ Options";
+ list flag {
+ key flag-id;
+ description "operator single flag info";
+ leaf flag-id {
+ type uint8;
+ mandatory true;
+ description "operator single flag id";
+ }
+ leaf flag-value{
+ type boolean;
+ mandatory true;
+ description "operator single flag value";
+ }
+ }
+ }
+
+ container operator-option-ipv6-prefix {
+ if-feature operator-op-ipv6-prefix;
+ presence "Enable this option";
+ description "operator ipv6 prefix option";
+ reference "RFC7227: Guidelines for Creating New DHCPv6
+ Options";
+ list operator-ipv6-prefix {
+ key operator-ipv6-prefix-id;
+ description "operator ipv6 prefix info";
+ leaf operator-ipv6-prefix-id {
+ type uint8;
+ mandatory true;
+ description "operator ipv6 prefix id";
+ }
+ leaf operator-ipv6-prefix6-len {
+ type uint8;
+ mandatory true;
+ description "operator ipv6 prefix length";
+ }
+ leaf operator-ipv6-prefix {
+ type inet:ipv6-prefix;
+ mandatory true;
+ description "operator ipv6 prefix";
+ }
+ }
+ }
+
+ container operator-option-int32 {
+ if-feature operator-op-int32;
+ presence "Enable this option";
+ description "operator integer 32 option";
+ reference "RFC7227: Guidelines for Creating New DHCPv6
+ Options";
+ list int32val {
+ key int32val-id;
+ description "operator integer 32 info";
+ leaf int32val-id {
+ type uint8;
+ mandatory true;
+ description "operator integer 32 id";
+ }
+ leaf int32val {
+ type uint32;
+ mandatory true;
+ description "operator integer 32 value";
+ }
+ }
+ }
+
+ container operator-option-int16 {
+ if-feature operator-op-int16;
+ presence "Enable this option";
+ description "operator integer 16 option";
+ reference "RFC7227: Guidelines for Creating New DHCPv6
+ Options";
+ list int16val {
+ key int16val-id;
+ description "operator integer 16 info";
+ leaf int16val-id {
+ type uint8;
+ mandatory true;
+ description "operator integer 16 id";
+ }
+ leaf int16val {
+ type uint16;
+ mandatory true;
+ description "operator integer 16 value";
+ }
+ }
+ }
+
+ container operator-option-int8 {
+ if-feature operator-op-int8;
+ presence "Enable this option";
+ description "operator integer 8 option";
+ reference "RFC7227: Guidelines for Creating New DHCPv6
+ Options";
+ list int8val {
+ key int8val-id;
+ description "operator integer 8 info";
+ leaf int8val-id {
+ type uint8;
+ mandatory true;
+ description "operator integer 8 id";
+ }
+ leaf int8val {
+ type uint8;
+ mandatory true;
+ description "operator integer 8 value";
+ }
+ }
+ }
+
+ container operator-option-uri {
+ if-feature operator-op-uri;
+ presence "Enable this option";
+ description "operator uri option";
+ reference "RFC7227: Guidelines for Creating New DHCPv6 Options";
+ list uri{
+ key uri-id;
+ description "operator uri info";
+ leaf uri-id {
+ type uint8;
+ mandatory true;
+ description "operator uri id";
+ }
+ leaf uri {
+ type string;
+ mandatory true;
+ description "operator uri value";
+ }
+ }
+ }
+
+ container operator-option-textstring {
+ if-feature operator-op-textstring;
+ presence "Enable this option";
+ description "operator itext string option";
+ reference "RFC7227: Guidelines for Creating New DHCPv6 Options";
+ list textstring{
+ key textstring-id;
+ description "operator text string info";
+ leaf textstring-id {
+ type uint8;
+ mandatory true;
+ description "operator text string id";
+ }
+ leaf textstring {
+ type string;
+ mandatory true;
+ description "operator text string value";
+ }
+ }
+ }
+
+ container operator-option-var-data {
+ if-feature operator-op-var-data;
+ presence "Enable this option";
+ description "operator variable length data option";
+ reference "RFC7227: Guidelines for Creating New DHCPv6 Options";
+ list int32val {
+ key var-data-id;
+ description "operator ivariable length data info";
+ leaf var-data-id {
+ type uint8;
+ mandatory true;
+ description "operator variable length id";
+ }
+ leaf var-data {
+ type binary;
+ mandatory true;
+ description "operator variable length value";
+ }
+ }
+ }
+
+ container operator-option-dns-wire {
+ if-feature operator-op-dns-wire;
+ presence "Enable this option";
+ description "operator dns wire format domain name list option";
+ reference "RFC7227: Guidelines for Creating New DHCPv6
+ Options";
+ list operator-option-dns-wire {
+ key operator-option-dns-wire-id;
+ description "operator dns wire format info";
+ leaf operator-option-dns-wire-id {
+ 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";
+ }
+ }
+ }
+
+ }
+}