diff options
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.yang | 1391 |
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"; + } + } + } + + } +} |