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";
}
revision 2017-12-22 {
- description "Resolve most issues on Ian's github.";
- reference "I-D: draft-ietf-dhc-dhcpv6-yang";
+ description "Resolve most issues on Ian's github.";
+ reference "I-D: draft-ietf-dhc-dhcpv6-yang";
}
revision 2017-11-24 {
*/
// 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 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";
- }
+ 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 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 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";
+ }
- // 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
*/
}
container sip-server-domain-name-list-option {
- // if-feature sip-server-domain-name-list-op;
- // presence "Enable this 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";
}
container sip-server-address-list-option {
- // if-feature sip-server-address-list-op;
- // presence "Enable this 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";
}
container dns-servers-option {
- // if-feature dns-servers-op;
- // presence "Enable this 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)";
}
container domain-searchlist-option {
- // if-feature domain-searchlist-op;
- // presence "Enable this 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)";
}
}
}
-
container nis-config-option {
- // if-feature nis-config-op;
- // presence "Enable this 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
}
container nis-plus-config-option {
- // if-feature nis-plus-config-op;
- // presence "Enable this 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
}
}
}
+
container nis-domain-name-option {
if-feature nis-domain-name-op;
presence "Enable this option";
container sntp-server-option {
- // if-feature sntp-server-op;
+ if-feature sntp-server-op;
presence "Enable this option";
description "OPTION_SNTP_SERVERS (31) Simple Network Time Protocol
(SNTP) Servers Option";
}
container info-refresh-time-option {
- //if-feature info-refresh-time-op;
+ if-feature info-refresh-time-op;
presence "Enable this option";
description "OPTION_INFORMATION_REFRESH_TIME (32) Information Refresh
Time option.";
}
container client-fqdn-option {
- //if-feature client-fqdn-op;
+ 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
}
container posix-timezone-option {
- //if-feature posix-timezone-op;
+ if-feature posix-timezone-op;
presence "Enable this option";
description "OPTION_NEW_POSIX_TIMEZONE (41) Posix Timezone option";
reference "RFC4833: Timezone Options for DHCP";
}
container tzdb-timezone-option {
- //if-feature tzdb-timezone-op;
+ if-feature tzdb-timezone-op;
presence "Enable this option";
description "OPTION_NEW_TZDB_TIMEZONE (42) Timezone Database option";
reference "RFC4822: Timezone Options for DHCP";
// Zihao - Re-modelled so it only contains one time source suboption
- //if-feature ntp-server-op;
+ 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
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";
- }
+ 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 {
+ case server-multicast-address {
+ leaf-list ntp-serv-mul-addr-suboption {
type inet:ipv6-address;
- description "NTP server multicast addr";
+ description "NTP server multicast addr";
}
- }
- case server-fqdn {
- leaf-list ntp-serv-fqdn-suboption {
+ }
+ 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";
- }
+ 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";
+ 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";
description "parameter value";
}
}
- }
+ }
container aftr-name-option {
- //if-feature aftr-name-op;
+ 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
}
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";
+ 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;
}
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";
+ 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";
}
container sol-max-rt-option {
- //if-feature sol-max-rt-op;
+ 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
}
container inf-max-rt-option {
- //if-feature inf-max-rt-op;
+ 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
}
container addr-selection-option {
- //if-feature addr-selection-op;
+ 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
}
container pcp-server-option {
- //if-feature pcp-server-op;
+ 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
}
container s46-rule-option {
- //if-feature s46-rule-op;
+ if-feature s46-rule-op;
presence "Enable this option";
description "OPTION_S46_RULE (89) S46 rule option";
reference "RFC7598: DHCPv6 Options for Configuration of
}
container s46-br-option {
- //if-feature s46-br-op;
+ if-feature s46-br-op;
presence "Enable this option";
description "OPTION_S46_BR (90) S46 BR Option";
reference "RFC7598: DHCPv6 Options for Configuration of
}
container s46-dmr-option {
- //if-feature s46-dmr-op;
+ if-feature s46-dmr-op;
presence "Enable this option";
description "OPTION_S46_DMR (91) S46 DMR Option";
reference "RFC7598: DHCPv6 Options for Configuration of
}
container s46-v4-v6-binding-option {
- //if-feature s46-v4-v6-binding-op;
+ if-feature s46-v4-v6-binding-op;
presence "Enable this option";
description "OPTION_S46_V4V6BIND (92) S46 IPv4/IPv6 Address
Binding option";
leaf bind-prefix6-len {
type uint8;
mandatory true;
- description "bind ipv6 prefix length";
+ description "bind ipv6 prefix
+ length";
}
leaf bind-ipv6-prefix {
type inet:ipv6-address;
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;
+ if-feature erp-local-domain-name-op;
presence "Enable this option";
description "OPTION_ERP_LOCAL_DOMAIN_NAME (65) DHCPv6 ERP Local
Domain Name Option";
}
container option-request-option {
- //if-feature option-request-op;
+ if-feature option-request-op;
presence "Enable this option";
description "OPTION_ORO (6) Option Request Option";
reference "RFC3315: Dynamic Host Configuration Protocol for
}
container user-class-option {
- //if-feature user-class-op;
+ if-feature user-class-op;
presence "Enable this option";
description "OPTION_USER_CLASS (15) User Class Option";
reference "RFC3315: Dynamic Host Configuration Protocol
}
container vendor-class-option {
- //if-feature vendor-class-op;
+ if-feature vendor-class-op;
presence "Enable this option";
description "OPTION_VENDOR_CLASS (16) Vendor Class Option";
reference "RFC3315: Dynamic Host Configuration Protocol
description "enterprise number";
}
list vendor-class {
- key vendor-class-id;
- description "vendor class";
+ key vendor-class-id;
+ description "vendor class";
leaf vendor-class-id {
type uint8;
mandatory true;
}
container client-fqdn-option {
- //if-feature client-fqdn-op;
+ if-feature client-fqdn-op;
presence "Enable this option";
description "OPTION_CLIENT_FQDN (39) The Dynamic Host
Configuration Protocol for IPv6 (DHCPv6) Client Fully
}
container client-arch-type-option {
- //if-feature client-arch-type-op;
+ if-feature client-arch-type-op;
presence "Enable this option";
description "OPTION_CLIENT_ARCH_TYPE (61) Client System
Architecture Type Option";
}
container client-network-interface-identifier-option {
- //if-feature client-network-interface-identifier-op;
+ if-feature client-network-interface-identifier-op;
presence "Enable this option";
description "OPTION_NII (62) Client Network Interface
- Identifier Option";
+ Identifier Option";
reference "RFC5970: DHCPv6 Options for Network Boot";
leaf type {
type uint8;
}
container kbr-principal-name-option {
- //if-feature kbr-principal-name-op;
+ 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";
- }
+ 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";
- }
+ 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;
+ if-feature client-link-layer-addr-op;
presence "Enable this option";
description "OPTION_CLIENT_LINKLAYER_ADDR (79) DHCPv6 Client
Link-Layer Address Option";
description "operator customized options";
container operator-option-ipv6-address {
- //if-feature operator-op-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";
}
container operator-option-single-flag {
- //if-feature operator-op-single-flag;
+ if-feature operator-op-single-flag;
presence "Enable this option";
description "operator single flag";
reference "RFC7227: Guidelines for Creating New DHCPv6
}
container operator-option-ipv6-prefix {
- //if-feature operator-op-ipv6-prefix;
+ if-feature operator-op-ipv6-prefix;
presence "Enable this option";
description "operator ipv6 prefix option";
reference "RFC7227: Guidelines for Creating New DHCPv6
}
container operator-option-int32 {
- //if-feature operator-op-int32;
+ if-feature operator-op-int32;
presence "Enable this option";
description "operator integer 32 option";
reference "RFC7227: Guidelines for Creating New DHCPv6
}
container operator-option-int16 {
- //if-feature operator-op-int16;
+ if-feature operator-op-int16;
presence "Enable this option";
description "operator integer 16 option";
reference "RFC7227: Guidelines for Creating New DHCPv6
}
container operator-option-int8 {
- //if-feature operator-op-int8;
+ if-feature operator-op-int8;
presence "Enable this option";
description "operator integer 8 option";
reference "RFC7227: Guidelines for Creating New DHCPv6
}
container operator-option-uri {
- //if-feature operator-op-uri;
+ if-feature operator-op-uri;
presence "Enable this option";
description "operator uri option";
reference "RFC7227: Guidelines for Creating New DHCPv6 Options";
}
container operator-option-textstring {
- //if-feature operator-op-textstring;
+ if-feature operator-op-textstring;
presence "Enable this option";
description "operator itext string option";
reference "RFC7227: Guidelines for Creating New DHCPv6 Options";
}
container operator-option-var-data {
- //if-feature operator-op-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";
}
container operator-option-dns-wire {
- //if-feature operator-op-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
}
}
}
+
}
}
module ietf-dhcpv6-server {
- yang-version 1.1;
- namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-server";
- prefix "dhcpv6-server";
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-server";
+ prefix "dhcpv6-server";
- import ietf-inet-types {
- prefix inet;
+ import ietf-inet-types {
+ prefix inet;
}
- import ietf-yang-types {
- prefix yang;
- }
- import ietf-dhcpv6-options {
- prefix dhcpv6-options;
+ import ietf-yang-types {
+ prefix yang;
+ }
+ import ietf-dhcpv6-options {
+ prefix dhcpv6-options;
}
import ietf-dhcpv6-types {
- prefix dhcpv6-types;
+ prefix dhcpv6-types;
}
import ietf-interfaces {
- prefix if;
+ prefix if;
}
organization "DHC WG";
contact
- "cuiyong@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.";
+ "cuiyong@tsinghua.edu.cn
+ lh.sunlinh@gmail.com
+ ian.farrer@telekom.de
+ sladjana.zechlin@telekom.de
+ hezihao9512@gmail.com";
- revision 2018-03-04 {
- description "Resolved most issues on the DHC official
- github";
- reference "I-D: draft-ietf-dhc-dhcpv6-yang";
- }
+ 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.";
+ revision 2018-09-04 {
+ description "";
reference "I-D: draft-ietf-dhc-dhcpv6-yang";
}
- revision 2017-11-24 {
- description "First version of the separated server specific
- YANG model.";
- 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";
}
- /*
- * Typedef
- */
- typedef threshold {
- type union {
- type uint16 {
- range 0..100;
- }
- type enumeration {
- enum "disabled" {
- description "No threshold";
+ 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 server specific
+ YANG model.";
+ reference "I-D: draft-ietf-dhc-dhcpv6-yang";
+ }
+
+ /*
+ * Typedef
+ */
+ typedef threshold {
+ type union {
+ type uint16 {
+ range 0..100;
+ }
+ type enumeration {
+ enum "disabled" {
+ description "No threshold";
+ }
+ }
+ }
+ description "Threshold value in percent";
}
- }
- }
- description "Threshold value in percent";
- }
- /*
- * Data Nodes
- */
- container server {
- presence "Enables the server";
- description "DHCPv6 server portion";
+ /*
+ * Data Nodes
+ */
+ container server {
+ presence "Enables the server";
+ description "DHCPv6 server portion";
/*
* Configuration data
*/
container server-config {
- description "This container contains the configuration data
+ description "This container contains the configuration data
of a server.";
- container serv-attributes {
- description
- "This container contains basic attributes of a DHCPv6 server
- such as IPv6 address, server name and so on. Some optional
- functions that can be provided by the server is also included.";
- container duid {
- description "Sets the DUID of server";
- uses dhcpv6-types:duid;
- }
- leaf name {
- type string;
- description "server's name";
- }
- leaf description {
- type string;
- description "description of the server.";
- }
- leaf-list ipv6-address {
- type inet:ipv6-address;
- description "server's IPv6 address.";
- }
- leaf-list interfaces-config {
- // Note - this should probably be references to
- // entries in the ietf-interfaces model
- type if:interface-ref;
- 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'.";
+ container serv-attributes {
+ description
+ "This container contains basic attributes of a DHCPv6 server
+ such as IPv6 address, server name and so on. Some optional
+ functions that can be provided by the server is also included.";
+ container duid {
+ description "Sets the DUID of server";
+ uses dhcpv6-types:duid;
+ }
+ leaf name {
+ type string;
+ description "server's name";
+ }
+ leaf description {
+ type string;
+ description "description of the server.";
+ }
+ leaf-list ipv6-address {
+ type inet:ipv6-address;
+ description "server's IPv6 address.";
+ }
+ leaf-list interfaces-config {
+ // Note - this should probably be references to
+ // entries in the ietf-interfaces model
+ type if:interface-ref;
+ 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'.";
+ }
+ container lease-storage {
+ description "Indicates how the server stores the lease";
+ choice storage-type {
+ description "the type of lease storage";
+ // leaf persist {
+ // type boolean;
+ // mandatory true;
+ // description "controls whether the new leases and updates to existing leases are
+ // written to the file";
+ // }
+ case memfile {
+ description "the server stores lease information in a CSV file";
+
+ leaf memfile-name {
+ type string;
+ description "specifies an absolute location of the lease file in which new leases
+ and lease updates will be recorded";
+ }
+
+ leaf memfile-lfc-interval {
+ type uint64;
+ description "specifies the interval in seconds, at which the server will perform a
+ lease file cleanup (LFC)";
+ }
+
+ }
+ case mysql {
+ leaf mysql-name {
+ type string;
+ description "type of the database";
+ }
+ leaf mysql-host {
+ type string;
+ description "If the database is located
+ on a different system to the DHCPv6 server, the database host name must also be specified.";
+ }
+ leaf mysql-password {
+ type string;
+ description "the credentials of the account under which the server will access the database";
+ }
+ leaf mysql-port {
+ type uint8;
+ description "If the database is located on a different system, the port number may be specified";
+ }
+ leaf mysql-lfc-interval {
+ type uint64;
+ description "specifies the interval in seconds, at which the server will perform a
+ lease file cleanup (LFC)";
+ }
+ leaf mysql-connect-timeout {
+ type uint64;
+ description "If the database is located on a different system, a longer interval needs to be specified";
+ }
+
+ }
+ case postgresql {
+ leaf postgresql-name {
+ type string;
+ description "type of the database";
+ }
+ leaf postgresql-host {
+ type string;
+ description "If the database is located
+ on a different system to the DHCPv6 server, the database host name must also be specified.";
+ }
+ leaf postgresql-password {
+ type string;
+ description "the credentials of the account under which the server will access the database";
+ }
+ leaf postgresql-port {
+ type uint8;
+ description "If the database is located on a different system, the port number may be specified";
+ }
+ leaf postgresql-lfc-interval {
+ type uint64;
+ description "specifies the interval in seconds, at which the server will perform a
+ lease file cleanup (LFC)";
+ }
+ leaf postgresql-connect-timeout {
+ type uint64;
+ description "If the database is located on a different system, a longer interval needs to be specified";
+ }
+ }
+ case cassandra {
+ leaf cassandra-name {
+ type string;
+ description "type of the database";
+ }
+ leaf cassandra-contact-points {
+ type string;
+ description "Cassandra takes a list of comma separated IP addresses to contact the cluster";
+ }
+ leaf cassandra-password {
+ type string;
+ description "the credentials of the account under which the server will access the database";
+ }
+ leaf cassandra-lfc-interval {
+ type uint64;
+ description "specifies the interval in seconds, at which the server will perform a
+ lease file cleanup (LFC)";
+ }
+ leaf cassandra-connect-timeout {
+ type uint64;
+ description "If the database is located on a different system, a longer interval needs to be specified";
+ }
+ }
+ }
+ }
+ uses dhcpv6-types:vendor-infor;
}
- uses dhcpv6-types:vendor-infor;
- }
- container option-sets {
- description "DHCPv6 employs various options to carry additional
+ 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. 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).";
+ 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. 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 option-set-id {
- type uint32;
- description "option set id";
+ type uint32;
+ description "option set id";
}
uses dhcpv6-options:server-option-definitions;
uses dhcpv6-options:custom-option-definitions;
}
- }
+ }
- container network-ranges {
+ 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.";
+ 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.";
leaf option-set-id {
type leafref {
path "/server/server-config/option-sets/option-set/option-set-id";
}
description
- "The ID field of relevant global option-set to be provisioned to
- clients.";
+ "The ID field of relevant global option-set to be provisioned to
+ clients.";
}
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
+ 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 uint32;
- 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 option-set-id {
+ leaf network-range-id {
+ type uint32;
+ 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 option-set-id {
type leafref {
path "/server/server-config/option-sets/option-set/option-set-id";
}
description "The ID field of relevant option-set to be provisioned to
clients of this network-range.";
- }
+ }
- container address-pools {
+ container address-pools {
description
"A container that describes the DHCPv6 server's
address pools.";
list address-pool {
- key pool-id;
- description "A DHCPv6 server can be configured with
- several address pools. This list defines such address pools
- which are distinguished by the key called 'pool-id'.";
- leaf pool-id {
- type uint32;
+ key pool-id;
+ description "A DHCPv6 server can be configured with
+ several address pools. This list defines such address pools
+ which are distinguished by the key called 'pool-id'.";
+ leaf pool-id {
+ type uint32;
mandatory true;
description "pool id";
- }
- leaf pool-prefix {
+ }
+ leaf pool-prefix {
type inet:ipv6-prefix;
mandatory true;
description "pool prefix";
- }
- leaf start-address {
+ }
+ leaf start-address {
type inet:ipv6-address-no-zone;
mandatory true;
description "start address";
- }
- leaf end-address {
+ }
+ leaf end-address {
type inet:ipv6-address-no-zone;
mandatory true;
description "end address";
}
- leaf valid-lifetime {
+ leaf valid-lifetime {
type yang:timeticks;
mandatory true;
description "valid liftime for IA";
- }
- leaf renew-time {
+ }
+ leaf renew-time {
type yang:timeticks;
mandatory true;
description "renew time";
}
- leaf rebind-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 rapid-commit {
- type boolean;
- mandatory false;
- description "A boolean value specifies whether the pool
- supports client-server exchanges involving two messages.";
- }
+ }
+ leaf preferred-lifetime {
+ type yang:timeticks;
+ mandatory true;
+ description "preferred lifetime for IA";
+ }
+ leaf rapid-commit {
+ type boolean;
+ mandatory true;
+ description "A boolean value specifies whether the pool
+ supports client-server exchanges involving two messages.";
+ }
leaf client-class {
type string;
description
"If this leaf is specified, this pool will only serve
the clients belonging to this class.";
}
- leaf max-address-count {
+ leaf max-address-count {
type threshold;
mandatory true;
description "maximum count of addresses that can
- be allocated in this pool. This value may be
- less than count of total addresses.";
- }
- leaf option-set-id {
+ be allocated in this pool. This value may be
+ less than count of total addresses.";
+ }
+ leaf option-set-id {
type leafref {
- path "/server/server-config/option-sets/option-set/option-set-id";
+ path "/server/server-config/option-sets/option-set/option-set-id";
}
mandatory true;
description "The ID field of relevant option-set to be
- provisioned to clients of this address-pool.";
- }
- }
- }
- container pd-pools {
+ provisioned to clients of this address-pool.";
+ }
+ }
+ }
+
+ container pd-pools {
description "If a server supports prefix delegation function, this
- container will be used to define the delegating router's prefix
- pools.";
+ container will be used to define the delegating router's prefix
+ pools.";
list pd-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;
- 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 valid-lifetime {
- type yang:timeticks;
+ 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;
+ 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 valid-lifetime {
+ type yang:timeticks;
mandatory true;
description "valid lifetime for IA";
- }
- leaf renew-time {
+ }
+ leaf renew-time {
type yang:timeticks;
mandatory true;
description "renew time";
- }
- leaf rebind-time {
+ }
+ leaf rebind-time {
type yang:timeticks;
mandatory true;
description "rebind time";
- }
- leaf preferred-lifetime {
+ }
+ leaf preferred-lifetime {
type yang:timeticks;
mandatory true;
description "preferred lifetime for IA";
- }
- leaf rapid-commit {
- type boolean;
- mandatory false;
- description "A boolean value specifies whether the server
- support client-server exchanges involving two messages defined.";
- }
- leaf client-class {
+ }
+ leaf rapid-commit {
+ type boolean;
+ mandatory true;
+ description "A boolean value specifies whether the server
+ support client-server exchanges involving two messages defined.";
+ }
+ leaf client-class {
type string;
description "client class";
}
- leaf max-pd-space-utilization {
+ leaf max-pd-space-utilization {
type threshold;
- mandatory false;
+ mandatory true;
description "Maximum utilization of pd space in this pool";
- }
- leaf option-set-id {
- type leafref {
- path "/server/server-config/option-sets/option-set/option-set-id";
+ }
+ leaf option-set-id {
+ type leafref {
+ path "/server/server-config/option-sets/option-set/option-set-id";
+ }
+ mandatory true;
+ description "The ID field of relevant option-set to be
+ provisioned to clients of this prefix-pool.";
+ }
}
- mandatory false;
- description "The ID field of relevant option-set to be
- provisioned to clients of this prefix-pool.";
- }
- }
- }
+ }
container host-reservations {
description
- "This container allows the server to make reservations at host level.";
+ "This container allows the server to make reservations at host level.";
list host-reservation {
key cli-id;
description "This list allows the server to reserve addresses,
choice client-identifier {
description "When making reservations, the server needs to choose a
- identifier to identify the server. Currently 'DUID' and 'hardware
+ identifier to identify the client. Currently 'DUID' and 'hardware
address' are supported.";
case duid {
description "DUID";
key reserv-prefix-id;
description "reserved prefix reservation";
leaf reserv-prefix-id {
- type uint32;
- mandatory true;
- description "reserved prefix id";
+ type uint32;
+ mandatory true;
+ description "reserved prefix id";
}
leaf reserv-prefix {
- type inet:ipv6-prefix;
- mandatory true;
- description "reserved prefix";
- }
+ type inet:ipv6-prefix;
+ mandatory true;
+ description "reserved prefix";
+ }
leaf reserv-prefix-len {
- type uint8;
- mandatory true;
- description "reserved prefix length";
+ type uint8;
+ mandatory true;
+ description "reserved prefix length";
}
}
}
}
- }
+ }
- container relay-opaque-paras {
+ 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.";
+ 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 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";
- }
+ 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";
+ }
+ }
+ }
+ }
- container rsoo-enabled-options {
+ 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";
- }
+ 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
- */
+ /*
+ * 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 address-pools {
- description "A container that describes the DHCPv6 server's address pools";
- list address-pool {
- key pool-id;
- description "A DHCPv6 server can be configured with
- several address pools. This list defines such address pools
- which are distinguished by the key called 'pool-id'.";
- leaf pool-id {
- type uint32;
- mandatory true;
- description "pool id";
- }
- leaf total-address-count {
- type uint64;
- mandatory true;
- description "count of total addresses in the pool";
- }
- leaf allocated-address-conut {
- type uint64;
- mandatory true;
- description "count of allocated addresses in the pool";
+ 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";
}
- }
- list binding-info {
- key cli-id;
- description "A list that 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 "Read the DUID";
- uses dhcpv6-types:duid;
+ container address-pools {
+ description "A container that describes the DHCPv6 server's address pools";
+ list address-pool {
+ key pool-id;
+ description "A DHCPv6 server can be configured with
+ several address pools. This list defines such address pools
+ which are distinguished by the key called 'pool-id'.";
+ leaf pool-id {
+ type uint32;
+ mandatory true;
+ description "pool id";
+ }
+ leaf total-address-count {
+ type uint64;
+ mandatory true;
+ description "count of total addresses in the pool";
+ }
+ leaf allocated-address-conut {
+ type uint64;
+ mandatory true;
+ description "count of allocated addresses in the pool";
+ }
+ }
+ list binding-info {
+ key cli-id;
+ description "A list that 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";
}
- 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 duid {
+ description "Read the DUID";
+ uses dhcpv6-types:duid;
}
- }
- }
- container pd-pools {
- description "If a server supports prefix delegation function,
- this container will be used to define the delegating
- router's prefix pools.";
- list prefix-pool {
+ 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 pd-pools {
+ description "If a server supports prefix delegation function,
+ this container will be used to define the delegating
+ router's prefix 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'.";
+ router can also be configured with multiple prefix pools
+ specified by a list called 'prefix-pool'.";
leaf pool-id {
- type uint32;
- mandatory true;
- description "pool id";
+ type uint32;
+ mandatory true;
+ description "pool id";
}
leaf pd-space-utilization {
- type threshold;
- mandatory true;
- description "current PD space utilization";
- }
- }
- list binding-info {
- key cli-id;
- description "A list records a binding information for each DHCPv6
- client that has already been alloated IPv6 prefixes.";
- leaf cli-id {
- type uint32;
- mandatory true;
- description "client id";
- }
- container duid {
- description "Reads the DUID";
- uses dhcpv6-types:duid;
+ type threshold;
+ mandatory true;
+ description "current PD space utilization";
}
- 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";
- }
- }
- }
- }
+ }
+ list binding-info {
+ key cli-id;
+ description "A list records a binding information for each DHCPv6
+ client that has already been alloated IPv6 prefixes.";
+ leaf cli-id {
+ type uint32;
+ mandatory true;
+ description "client id";
+ }
+ container duid {
+ description "Reads the DUID";
+ uses dhcpv6-types:duid;
+ }
+ list cli-iapd {
+ 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 host-reservations {
+ container host-reservations {
description "This container provides host reservations in the host level.";
- list binding-info {
- key cli-id;
- description
- "A list records a binding information for each DHCPv6
- client that has already been alloated IPv6 addresses or prefixes
- by host reservations.";
- leaf cli-id {
- type uint32;
- mandatory true;
- description "client id";
- }
- container duid {
- description "Reads the DUID";
- uses dhcpv6-types:duid;
- }
- list cli-ia {
- key iaid;
- description "client IA";
- leaf ia-type {
- type string;
- mandatory true;
- description "IA type, IA_NA or IA_TA";
- }
- leaf iaid {
- type uint32;
- mandatory true;
- description "IAID";
- }
- leaf-list cli-addr {
- type inet:ipv6-address;
- description "client addr";
- }
- }
+ list binding-info {
+ key cli-id;
+ description
+ "A list records a binding information for each DHCPv6
+ client that has already been alloated IPv6 addresses or prefixes
+ by host reservations.";
+ leaf cli-id {
+ type uint32;
+ mandatory true;
+ description "client id";
+ }
+ container duid {
+ description "Reads the DUID";
+ uses dhcpv6-types:duid;
+ }
+ list cli-ia {
+ key iaid;
+ description "client IA";
+ leaf ia-type {
+ type string;
+ mandatory true;
+ description "IA type, IA_NA or IA_TA";
+ }
+ leaf iaid {
+ type uint32;
+ mandatory true;
+ description "IAID";
+ }
+ leaf-list cli-addr {
+ type inet:ipv6-address;
+ description "client addr";
+ }
+ }
- 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";
+ 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";
+ }
+ }
+ }
}
- }
- }
- }
- }
- }
+ }
+ }
container packet-stats {
- description "A container presents the packet statistics related to
- the DHCPv6 server.";
+ description "A container presents the packet statistics related to
+ the DHCPv6 server.";
leaf solicit-count {
- type uint32;
- mandatory true;
- description "solicit counter";
+ type uint32;
+ mandatory true;
+ description "solicit counter";
}
leaf request-count {
- type uint32;
- mandatory true;
- description "request counter";
+ type uint32;
+ mandatory true;
+ description "request counter";
}
leaf renew-count {
- type uint32;
- mandatory true;
- description "renew counter";
+ type uint32;
+ mandatory true;
+ description "renew counter";
}
leaf rebind-count {
- type uint32;
- mandatory true;
- description "rebind counter";
+ type uint32;
+ mandatory true;
+ description "rebind counter";
}
leaf decline-count {
- type uint32;
- mandatory true;
- description "decline count";
+ type uint32;
+ mandatory true;
+ description "decline count";
}
leaf release-count {
- type uint32;
- mandatory true;
- description "release counter";
+ type uint32;
+ mandatory true;
+ description "release counter";
}
leaf info-req-count {
- type uint32;
- mandatory true;
- description "information request counter";
+ type uint32;
+ mandatory true;
+ description "information request counter";
}
leaf advertise-count {
- type uint32;
- mandatory true;
- description "advertise counter";
+ type uint32;
+ mandatory true;
+ description "advertise counter";
}
leaf confirm-count {
- type uint32;
- mandatory true;
- description "confirm counter";
+ type uint32;
+ mandatory true;
+ description "confirm counter";
}
leaf reply-count {
- type uint32;
- mandatory true;
- description "reply counter";
+ type uint32;
+ mandatory true;
+ description "reply counter";
}
leaf reconfigure-count {
- type uint32;
- mandatory true;
- description "reconfigure counter";
+ type uint32;
+ mandatory true;
+ description "reconfigure counter";
}
leaf relay-forward-count {
- type uint32;
- mandatory true;
- description "relay forward counter";
+ type uint32;
+ mandatory true;
+ description "relay forward counter";
}
leaf relay-reply-count {
- type uint32;
- mandatory true;
- description "relay reply counter";
+ type uint32;
+ mandatory true;
+ description "relay reply counter";
}
}
- }
- }
+ }
+ }
- /*
- * Notifications
- */
+ /*
+ * Notifications
+ */
- notification notifications {
- description "dhcpv6 server notification module";
+ notification notifications {
+ description "dhcpv6 server notification module";
container dhcpv6-server-event {
- description "dhcpv6 server event";
- container address-pool-running-out {
+ description "dhcpv6 server event";
+ container address-pool-running-out {
description "raised when the address 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";
+ 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 total-address-count {
- type uint64;
- mandatory true;
- description "count of total addresses in the pool";
+ type uint64;
+ mandatory true;
+ description "count of total addresses in the pool";
}
leaf max-address-count {
- type uint64;
- mandatory true;
- description "maximum count of addresses that can be allocated
- in the pool. This value may be less than count of total
- addresses";
+ type uint64;
+ mandatory true;
+ description "maximum count of addresses that can be allocated
+ in the pool. This value may be less than count of total
+ addresses";
}
leaf allocated-address-conut {
- type uint64;
- mandatory true;
- description "count of allocated addresses in the pool";
- }
- container duid {
- description "server duid";
- uses dhcpv6-types:duid;
+ type uint64;
+ mandatory true;
+ description "count of allocated addresses in the pool";
}
+ container duid {
+ description "server duid";
+ uses dhcpv6-types:duid;
+ }
leaf serv-name {
- type string;
- description "server name";
+ type string;
+ description "server name";
}
leaf pool-name {
- type string;
- mandatory true;
- description "pool name";
- }
- }
- container pd-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-pd-space-utilization {
- type threshold;
- mandatory true;
- description "maximum pd space utilization";
+ type string;
+ mandatory true;
+ description "pool name";
}
- leaf pd-space-utilization {
- type threshold;
- mandatory true;
- description "current pd space utilization";
}
+ container pd-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-pd-space-utilization {
+ type threshold;
+ mandatory true;
+ description "maximum pd space utilization";
+ }
+ leaf pd-space-utilization {
+ type threshold;
+ mandatory true;
+ description "current pd space utilization";
+ }
container duid {
- description "Sets the DUID";
- uses dhcpv6-types:duid;
+ description "Sets the DUID";
+ uses dhcpv6-types:duid;
}
leaf serv-name {
- type string;
- description "server name";
+ type string;
+ description "server name";
}
leaf pool-name {
- type string;
- mandatory true;
- description "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 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 dhcpv6-types:duid;
+ description "Sets the DUID";
+ uses dhcpv6-types:duid;
}
leaf description {
- type string;
- description "description of the event";
+ type string;
+ description "description of the event";
+ }
+ }
+ }
}
- }
- }
- }
}