idnits 2.17.1 draft-cui-dhc-dhcpv6-yang-04.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 6 instances of too long lines in the document, the longest one being 28 characters in excess of 72. ** The abstract seems to contain references ([RFC6020]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 194 has weird spacing: '...in-name stri...' == Line 217 has weird spacing: '...-update boo...' == Line 218 has weird spacing: '...-update boo...' == Line 366 has weird spacing: '...fix-len uint8...' == Line 367 has weird spacing: '...-prefix ine...' == (17 more instances...) -- The document date (September 25, 2015) is 3107 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Unused Reference: 'RFC6087' is defined on line 3698, but no explicit reference was found in the text ** Obsolete normative reference: RFC 3315 (Obsoleted by RFC 8415) ** Obsolete normative reference: RFC 3633 (Obsoleted by RFC 8415) ** Obsolete normative reference: RFC 6087 (Obsoleted by RFC 8407) -- Obsolete informational reference (is this intentional?): RFC 4242 (Obsoleted by RFC 8415) -- Obsolete informational reference (is this intentional?): RFC 7083 (Obsoleted by RFC 8415) Summary: 5 errors (**), 0 flaws (~~), 8 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 DHC Working Group Y. Cui 3 Internet-Draft H. Wang 4 Intended status: Standards Track L. Sun 5 Expires: March 28, 2016 Tsinghua University 6 T. Lemon 7 Nominum 8 I. Farrer 9 Deutsche Telekom AG 10 September 25, 2015 12 YANG Data Model for DHCPv6 Configuration 13 draft-cui-dhc-dhcpv6-yang-04 15 Abstract 17 There has no unified method to configure DHCPv6 server ,relay and 18 client itself, always pre-configured manually by operators. 20 IETF netmod WG has developed a general data model for NETCONF 21 protocol, YANG data model [RFC6020]. 23 This document defines a YANG data model for the configuration and 24 management of DHCPv6 server, DHCPv6 relay and DHCPv6 client. With 25 this model, the operators can configure and manage the devices by 26 using NETCONF. 28 Requirements Language 30 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 31 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 32 document are to be interpreted as described in [RFC2119]. 34 Status of This Memo 36 This Internet-Draft is submitted in full conformance with the 37 provisions of BCP 78 and BCP 79. 39 Internet-Drafts are working documents of the Internet Engineering 40 Task Force (IETF). Note that other groups may also distribute 41 working documents as Internet-Drafts. The list of current Internet- 42 Drafts is at http://datatracker.ietf.org/drafts/current/. 44 Internet-Drafts are draft documents valid for a maximum of six months 45 and may be updated, replaced, or obsoleted by other documents at any 46 time. It is inappropriate to use Internet-Drafts as reference 47 material or to cite them other than as "work in progress." 48 This Internet-Draft will expire on March 28, 2016. 50 Copyright Notice 52 Copyright (c) 2015 IETF Trust and the persons identified as the 53 document authors. All rights reserved. 55 This document is subject to BCP 78 and the IETF Trust's Legal 56 Provisions Relating to IETF Documents 57 (http://trustee.ietf.org/license-info) in effect on the date of 58 publication of this document. Please review these documents 59 carefully, as they describe your rights and restrictions with respect 60 to this document. Code Components extracted from this document must 61 include Simplified BSD License text as described in Section 4.e of 62 the Trust Legal Provisions and are provided without warranty as 63 described in the Simplified BSD License. 65 Table of Contents 67 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 68 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 69 2. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 3 70 2.1. DHCPv6 server . . . . . . . . . . . . . . . . . . . . . . 4 71 2.2. DHCPv6 relay . . . . . . . . . . . . . . . . . . . . . . 4 72 2.3. DHCPv6 client . . . . . . . . . . . . . . . . . . . . . . 4 73 3. DHCPv6 Tree Diagrams . . . . . . . . . . . . . . . . . . . . 4 74 3.1. DHCPv6 Server Tree Diagrams . . . . . . . . . . . . . . . 4 75 3.2. DHCPv6 Relay Tree Diagrams . . . . . . . . . . . . . . . 12 76 3.3. DHCPv6 Client Tree Diagrams . . . . . . . . . . . . . . . 14 77 3.4. Notifications Mechanism for DHCPv6 . . . . . . . . . . . 19 78 4. DHCPv6 YANG Model . . . . . . . . . . . . . . . . . . . . . . 21 79 5. Security Considerations (TBD) . . . . . . . . . . . . . . . . 77 80 6. IANA Considerations (TBD) . . . . . . . . . . . . . . . . . . 77 81 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 77 82 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 77 83 8.1. Normative References . . . . . . . . . . . . . . . . . . 77 84 8.2. Informative References . . . . . . . . . . . . . . . . . 78 85 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 80 87 1. Introduction 89 This document defines a YANG data model for the configuration and 90 management of DHCPv6 server, DHCPv6 relay and DHCPv6 client. With 91 this model, the operators can configure and manage the devices by 92 using NETCONF. 94 Model include three sub-modules: 96 o DHCPv6 server 98 o DHCPv6 relay 100 o DHCPv6 client 102 For DHCPv6 client configuration, it is worth noting that as DHCPv6 103 itself a device configuration protocol, the intention of this 104 document is not to replace client configuration of DHCPv6 options and 105 parameters over the DHCPv6 protocol with the configuration of DHCPv6 106 options and parameters over NETCONF/YANG. The DHCPv6 client model is 107 intended for the configuration of the DHCPv6 client function and also 108 for obtaining read-only state data from the client which has been 109 learnt via the normal DHCPv6 message flow. This gives an operator a 110 better method for managing DHCPv6 clients and simplifies 111 troubleshooting. 113 1.1. Terminology 115 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 116 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 117 document are to be interpreted as described in [RFC2119]. 119 The reader should be familiar with the terms defined in DHCPv6 120 [RFC3315] and relevant documents. 122 DHCPv6 tree diagrams provide a concise representation of a YANG 123 module to help readers understand the module structure. The meaning 124 if the symbols in these diagrams is as follows: 126 o Brackets "[" and "]" enclose list keys. 128 o Braces "{" and "}" enclose feature content. 130 o Parentheses "(" and ")" enclose choice and case nodes, and case 131 nodes are also marked with a colon (":"). 133 o Symbols after data node names: "?" means an optional node, and "*" 134 denotes a list and leaf-list. 136 o Abbreviations before data node names: "rw" means configuration 137 data (read-write), and "ro" means state data (read-only). 139 2. Objectives 141 This document defines a YANG data model that can be used to configure 142 and manage DHCPv6 server, DHCPv6 relay and DHCPv6 client. 144 2.1. DHCPv6 server 146 DHCPv6 server parameters. 148 2.2. DHCPv6 relay 150 DHCPv6 relay parameters. 152 2.3. DHCPv6 client 154 DHCPv6 client parameters. 156 3. DHCPv6 Tree Diagrams 158 3.1. DHCPv6 Server Tree Diagrams 160 +--rw dhcpv6 161 +--rw server {dhcpv6-server}? 162 +--rw serv-attributes 163 | +--rw name string 164 | +--rw duid duidtype 165 | +--rw enable boolean 166 | +--rw ipv6-address inet:ipv6-address 167 | +--rw description? string 168 | +--rw pd-function boolean 169 | +--rw stateless-service boolean 170 | +--rw rapid-commit boolean 171 | +--rw store-client-link-layer? boolean 172 | +--rw vendor-info 173 | +--rw ent-num uint32 174 | +--rw data* string 175 +--rw option-sets 176 | +--rw option-set* [option-set-id] 177 | +--rw option-set-id uint8 178 | +--rw new-option* [option-code] 179 | | +--rw option-code uint16 180 | | +--rw option-name string 181 | | +--rw option-description string 182 | | +--rw option-reference? string 183 | | +--rw option-value string 184 | +--rw user-class-value? string 185 | +--rw enterprise-number? uint32 186 | +--rw store-client-link-layer? boolean 187 | +--rw preference-option 188 | | +--rw enable boolean 189 | | +--rw preference-value uint8 190 | +--rw sip-server-option 191 | | +--rw enable boolean 192 | | +--rw sip-server* [sip-serv-id] 193 | | +--rw sip-serv-id uint8 194 | | +--rw sip-serv-domain-name string 195 | | +--rw sip-serv-addr inet:ipv6-address 196 | +--rw dns-config-option 197 | | +--rw enable boolean 198 | | +--rw dns-server* [dns-serv-id] 199 | | | +--rw dns-serv-id uint8 200 | | | +--rw dns-serv-addr inet:ipv6-address 201 | | +--rw domain-search-list string 202 | +--rw nis-config-option 203 | | +--rw enable boolean 204 | | +--rw nis-server* [nis-serv-id] 205 | | +--rw nis-serv-id uint8 206 | | +--rw nis-serv-addr inet:ipv6-address 207 | +--rw nis-plus-config-option 208 | | +--rw enable boolean 209 | | +--rw nis-plus-server* [nis-plus-serv-id] 210 | | +--rw nis-plus-serv-id uint8 211 | | +--rw nis-plus-serv-addr inet:ipv6-address 212 | +--rw info-refresh-time-option 213 | | +--rw enable boolean 214 | | +--rw info-refresh-time yang:timeticks 215 | +--rw cli-fqdn-option 216 | | +--rw enable boolean 217 | | +--rw server-initiate-update boolean 218 | | +--rw client-initiate-update boolean 219 | | +--rw modify-name-from-cli boolean 220 | +--rw timezone-option 221 | | +--rw enable boolean 222 | | +--rw tz-posix string 223 | | +--rw tz-database string 224 | +--rw ntp-server-option 225 | | +--rw enable boolean 226 | | +--rw ntp-server* [ntp-serv-id] 227 | | +--rw ntp-serv-id uint8 228 | | +--rw ntp-serv-addr inet:ipv6-address 229 | | +--rw ntp-serv-mul-addr inet:ipv6-address 230 | | +--rw ntp-serv-fqdn string 231 | +--rw sntp-server-option 232 | | +--rw enable boolean 233 | | +--rw sntp-server* [sntp-serv-id] 234 | | +--rw sntp-serv-id uint8 235 | | +--rw sntp-serv-addr inet:ipv6-address 236 | +--rw network-boot-option 237 | | +--rw enable boolean 238 | | +--rw boot-file* [boot-file-id] 239 | | +--rw boot-file-id uint8 240 | | +--rw suitable-arch-type* uint16 241 | | +--rw suitable-net-if* uint32 242 | | +--rw boot-file-url string 243 | | +--rw boot-file-paras* [para-id] 244 | | +--rw para-id uint8 245 | | +--rw parameter string 246 | +--rw dslite-option 247 | | +--rw enable boolean 248 | | +--rw dslite-aftr-name string 249 | +--rw kerberos-option 250 | | +--rw enable boolean 251 | | +--rw default-realm-name string 252 | | +--rw kdc-info* [kdc-id] 253 | | +--rw kdc-id uint8 254 | | +--rw priority uint16 255 | | +--rw weight uint16 256 | | +--rw transport-type uint8 257 | | +--rw port-number uint16 258 | | +--rw kdc-ipv6-addr inet:ipv6-address 259 | | +--rw realm-name string 260 | +--rw addr-selection-option 261 | | +--rw enable boolean 262 | | +--rw a-bit-set boolean 263 | | +--rw p-bit-set boolean 264 | | +--rw policy-table* [policy-id] 265 | | +--rw policy-id uint8 266 | | +--rw label uint8 267 | | +--rw precedence uint8 268 | | +--rw prefix-len uint8 269 | | +--rw prefix inet:ipv6-prefix 270 | +--rw sol-max-rt-option 271 | | +--rw enable boolean 272 | | +--rw sol-max-rt-value yang:timeticks 273 | +--rw inf-max-rt-option 274 | | +--rw enable boolean 275 | | +--rw inf-max-rt-value yang:timeticks 276 | +--rw pcp-server-option 277 | | +--rw enable boolean 278 | | +--rw pcp-server* [pcp-serv-id] 279 | | +--rw pcp-serv-id uint8 280 | | +--rw pcp-serv-addr* inet:ipv6-address 281 | +--rw s46-rule-option 282 | | +--rw enable boolean 283 | | +--rw s46-rule* [rule-id] 284 | | +--rw rule-id uint8 285 | | +--rw rule-type enumeration 286 | | +--rw ea-len uint8 287 | | +--rw prefix4-len uint8 288 | | +--rw ipv4-prefix inet:ipv4-prefix 289 | | +--rw prefix6-len uint8 290 | | +--rw ipv6-prefix inet:ipv6-prefix 291 | | +--rw port-parameter 292 | | +--rw offset uint8 293 | | +--rw psid-len uint8 294 | | +--rw psid uint16 295 | +--rw s46-br-option 296 | | +--rw enable boolean 297 | | +--rw br* [br-id] 298 | | +--rw br-id uint8 299 | | +--rw br-ipv6-addr inet:ipv6-address 300 | +--rw s46-dmr-option 301 | | +--rw enable boolean 302 | | +--rw dmr* [dmr-id] 303 | | +--rw dmr-id uint8 304 | | +--rw dmr-prefix6-len uint8 305 | | +--rw dmr-ipv6-prefix inet:ipv6-prefix 306 | +--rw s46-v4-v6-binding-option 307 | +--rw enable boolean 308 | +--rw ce* [ce-id] 309 | +--rw ce-id uint8 310 | +--rw ipv4-addr inet:ipv4-address 311 | +--rw bind-prefix6-len uint8 312 | +--rw bind-ipv6-prefix inet:ipv6-prefix 313 | +--rw port-parameter 314 | +--rw offset uint8 315 | +--rw psid-len uint8 316 | +--rw psid uint16 317 +--rw network-ranges 318 | +--rw option-set [option-set-id] 319 | +--rw network-range* [network-range-id] 320 | +--rw network-range-id uint8 321 | +--rw network-description string 322 | +--rw network-prefix inet:ipv6-prefix 323 | +--rw inherit-option-set boolean 324 | +--rw option-set [option-set-id] 325 | +--rw address-pools 326 | | +--rw address-pool* [pool-id] 327 | | | +--rw pool-id uint8 328 | | | +--rw pool-prefix inet:ipv6-prefix 329 | | | +--rw start-address inet:ipv6-address 330 | | | +--rw end-address inet:ipv6-address 331 | | | +--rw preferred-lifetime yang:timeticks 332 | | | +--rw valid-lifetime yang:timeticks 333 | | | +--ro total-ipv6-count uint64 334 | | | +--ro used-ipv6-count uint64 335 | | | +--rw utilization-ratio threshold 336 | | | +--rw inherit-option-set boolean 337 | | | +--rw option-set [option-set-id] 338 | | | +--rw reserved-addresses 339 | | | +--rw static-binding* [cli-id] 340 | | | | +--rw cli-id uint32 341 | | | | +--rw duid duidtype 342 | | | | +--rw reserv-addr* inet:ipv6-address 343 | | | +--rw other-reserv-addr* inet:ipv6-address 344 | | +--ro binding-info* [cli-id] 345 | | +--ro cli-id uint32 346 | | +--ro duid duidtype 347 | | +--ro cli-ia* [iaid] 348 | | +--ro ia-type string 349 | | +--ro iaid uint32 350 | | +--ro cli-addr* inet:ipv6-address 351 | | +--ro pool-id? uint8 352 | +--rw prefix-pools 353 | | +--rw prefix-pool* [pool-id] 354 | | | +--rw pool-id uint8 355 | | | +--rw prefix inet:ipv6-prefix 356 | | | +--rw prefix-length uint8 357 | | | +--rw preferred-lifetime yang:timeticks 358 | | | +--rw valid-lifetime yang:timeticks 359 | | | +--rw utilization-ratio threshold 360 | | | +--rw inherit-option-set boolean 361 | | | +--rw option-set [option-set-id] 362 | | | +--rw reserved-prefixes 363 | | | +--rw static-binding* [cli-id] 364 | | | | +--rw cli-id uint32 365 | | | | +--rw duid duidtype 366 | | | | +--rw reserv-prefix-len uint8 367 | | | | +--rw reserv-prefix inet:ipv6-prefix 368 | | | +--rw exclude-prefix-len uint8 369 | | | +--rw exclude-prefix inet:ipv6-prefix 370 | | | +--rw other-reserv-prefix* [reserv-id] 371 | | | +--rw reserv-id uint8 372 | | | +--rw prefix-len uint8 373 | | | +--rw prefix inet:ipv6-prefix 374 | | +--ro binding-info* [cli-id] 375 | | +--ro cli-id uint32 376 | | +--ro duid duidtype 377 | | +--ro cli-iapd* [iaid] 378 | | +--ro iaid uint32 379 | | +--ro cli-prefix* uint32 380 | | +--ro cli-prefix-len* uint8 381 | | +--ro pool-id? uint8 382 | +--rw hosts 383 | +--rw host* [cli-id] 384 | +--rw cli-id uint32 385 | +--rw duid duidtype 386 | +--rw inherit-option-set boolean 387 | +--rw option-set [option-set-id] 388 | +--rw nis-domain-name? string 389 | +--rw nis-plus-domain-name? string 390 +--rw relay-opaque-paras 391 | +--rw relays* [relay-name] 392 | +--rw relay-name string 393 | +--rw interface-info* [if-name] 394 | | +--rw if-name string 395 | | +--rw interface-id string 396 | +--rw subscribers* [subscriber] 397 | | +--rw subscriber uint8 398 | | +--rw subscriber-id string 399 | +--rw remote-host* [ent-num] 400 | +--rw ent-num uint32 401 | +--rw remote-id string 402 +--rw rsoo-enabled-options 403 | +--rw rsoo-enabled-option* [option-code] 404 | +--rw option-code uint16 405 | +--rw description string 406 +--ro packet-stats 407 +--ro solicit-count uint32 408 +--ro request-count uint32 409 +--ro renew-count uint32 410 +--ro rebind-count uint32 411 +--ro decline-count uint32 412 +--ro release-count uint32 413 +--ro info-req-count uint32 414 +--ro advertise-count uint32 415 +--ro confirm-count uint32 416 +--ro reply-count uint32 417 +--ro reconfigure-count uint32 418 +--ro relay-forward-count uint32 419 +--ro relay-reply-count uint32 421 Figure 1: DHCPv6 Data Model Structure 423 Introduction of important nodes: 425 o serv-attributes: This container contains basic attributes of a 426 DHCPv6 server such as DUID, server name and so on. Some optional 427 functions that can be provided by the server is also included. 429 o duid: Each server and client has only one DUID (DHCP Unique 430 Identifier). The DUID here identifies a unique DHCPv6 server for 431 clients. DUID consists of a two-octet type field and an arbitrary 432 length (no more than 128 bytes) content field. 434 o pd-function: Whether the server can act as a delegating router to 435 perform prefix delegation ([RFC3633]). 437 o stateless-service: A boolean value specifies whether the server 438 support client-server exchanges involving two messages defined in 439 ([RFC3315]). 441 o rapid-commit: Setting the value to '1' represents the server 442 support the Solicit-Reply message exchange. '0' means the server 443 will simply ignore the Rapid Commit option in Solicit message. 445 o option-sets: DHCPv6 employs various options to carry additional 446 information and parameters in DHCP messages. This container 447 defines all the possible options that need to be configured at the 448 server side. The relevant RFCs that define those options include: 449 [RFC3315], [RFC3319], [RFC3646], [RFC3898], [RFC4242], [RFC4704], 450 [RFC4833], [RFC5908], [RFC5970], [RFC4075], [RFC6334], [RFC6784], 451 [RFC7078], [RFC7083], [RFC7291], [RFC7598]. 453 o option-set: A server may allow different option sets to be 454 configured for different conditions (i.e. different networks, 455 clients and etc). This "option-set" list enables various sets of 456 options being defined and configured in a single server. 457 Different sets are distinguished by the key called "option-set- 458 id". All the possible options discussed above are defined in the 459 list and each option is corresponding to a container. Since all 460 the options in the list are optional, each container in this list 461 has a boolean parameter called "enable" to indicate whether this 462 option (container) will be included in the current option set or 463 not. With the "new-option" container, it is easy to extend the 464 model when new options are defined. 466 o network-ranges: This model supports a hierarchy to achieve dynamic 467 configuration. That is to say we could configure the server at 468 different levels through this model. The top level is a global 469 level which is defined as the container "network-ranges". The 470 following levels are defined as sub-containers under it. The 471 "network-ranges" contains the parameters (e.g. option-sets) that 472 would be allocated to all the clients served by this server. 474 o network-range: Under the "network-ranges" container, a "network- 475 range" list is defined to configure the server at a network level 476 which is also considered as the second level. Different network 477 are identified by the key "network-range-id". This is because a 478 server may have different configuration parameters (e.g. option 479 sets) for different networks. 481 o address-pools: Under the "network-range" list, a container 482 describes the DHCPv6 server's address pools for a specific network 483 is defined. This container supports the server to be configured 484 at a pool level. 486 o address-pool: A DHCPv6 server can be configured with several 487 address pools for a specific network. This list defines such 488 address pools which are distinguish by the key called "pool-id". 490 o binding-info: A list records a binding information for each DHCPv6 491 client that has already been allocated IPv6 addresses. 493 o prefix-pools: If a server supports prefix delegation function, 494 this container under the "network-range" list will be valid to 495 define the delegating router's prefix pools for a specific 496 network. This container also supports the server to be configured 497 at a pool level. 499 o prefix-pool: Similar to server's address pools, a delegating 500 router can also be configured with multiple prefix pools specified 501 by a list called "prefix-pool". 503 o binding-info: A list records a binding information for each DHCPv6 504 requesting router that has already been configured IPv6 prefixes. 506 o hosts: A server may also desire to be configured at a host level 507 under some circumstances. This container include a list called 508 "host" to allow the server carrying different parameters (e.g. 509 option sets) for different hosts. 511 o relay-opaque-paras: This container contains some opaque values in 512 Relay Agent options that need to be configured on the server side 513 only for value match. Such Relay Agent options include Interface- 514 Id option, Remote-Id option and Subscriber-Id option. 516 o rsoo-enabled-options: [RFC6422] requires that the server SHOULD 517 have an administrator-configurable list of RSOO-enabled options. 518 This container include a list called "rsoo-enabled-option" to 519 allow new RSOO-enabled options to be defined at the server side. 521 o packet-stats: A container presents the packet statistics related 522 to the DHCPv6 server. 524 3.2. DHCPv6 Relay Tree Diagrams 526 +--rw dhcpv6 527 +-- ... 528 | 529 +--rw relay {dhcpv6-relay}? 530 +--rw relay-attributes 531 | +--rw name string 532 | +--rw enable boolean 533 | +--rw ipv6-address inet:ipv6-address 534 | +--rw description? string 535 | +--rw dest-addrs* inet:ipv6-address 536 | +--rw subscribers* [subscriber] 537 | | +--rw subscriber uint8 538 | | +--rw subscriber-id string 539 | +--rw remote-host* [entNum] 540 | | +--rw ent-num uint32 541 | | +--rw remote-id string 542 | +--rw vendor-info 543 | +--rw ent-num uint32 544 | +--rw data* string 545 +--rw relay-supplied-options-option 546 | +--rw rsoo-set* [rsoo-set-id] 547 | +--rw rsoo-set-id uint8 548 | +--rw erp-local-domain-name-option 549 | +--rw enable boolean 550 | +--rw erp-for-client* [cli-id] 551 | +--rw cli-id uint32 552 | +--rw duid duidtype 553 | +--rw erp-name string 554 +--rw relay-interfaces 555 | +--rw relay-if* [if-name] 556 | +--rw if-name string 557 | +--rw enable boolean 558 | +--rw interface-id? string 559 | +--rw rsoo-set [rsoo-set-id] 560 | +--rw pd-route* [pd-route-id] 561 | | +--rw pd-route-id uint8 562 | | +--rw requesting-router-id uint32 563 | | +--rw delegating-router-id uint32 564 | | +--rw next-router inet:ipv6-address 565 | | +--rw last-router inet:ipv6-address 566 | +--rw next-entity* [dest-addr] 567 | +--rw dest-addr inet:ipv6-address 568 | +--rw available boolean 569 | +--rw multicast boolean 570 | +--rw server boolean 571 | +--ro packet-stats 572 | +--ro cli-packet-rvd-count uint32 573 | +--ro solicit-rvd-count uint32 574 | +--ro request-rvd-count uint32 575 | +--ro renew-rvd-count uint32 576 | +--ro rebind-rvd-count uint32 577 | +--ro decline-rvd-count uint32 578 | +--ro release-rvd-count uint32 579 | +--ro info-req-rvd-count uint32 580 | +--ro relay-for-rvd-count uint32 581 | +--ro relay-rep-rvd-count uint32 582 | +--ro packet-to-cli-count uint32 583 | +--ro adver-sent-count uint32 584 | +--ro confirm-sent-count uint32 585 | +--ro reply-sent-count uint32 586 | +--ro reconfig-sent-count uint32 587 | +--ro relay-for-sent-count uint32 588 | +--ro relay-rep-sent-count uint32 589 +--ro relay-stats 590 +--ro cli-packet-rvd-count uint32 591 +--ro relay-for-rvd-count uint32 592 +--ro relay-rep-rvd-count uint32 593 +--ro packet-to-cli-count uint32 594 +--ro relay-for-sent-count uint32 595 +--ro relay-rep-sent-count uint32 596 +--ro discarded-packet-count uint32 598 Introduction of important nodes: 600 o relay-attributes: A container describes some basic attributes of 601 the relay agent including some relay agent specific options data 602 that need to be configured previously. Such options include 603 Remote-Id option and Subscriber-Id option. 605 o dest-addrs: Each DHCPv6 relay agent may be configured with a list 606 of destination addresses. This node defines such a list of IPv6 607 addresses that may include unicast addresses, multicast addresses 608 or other addresses. 610 o relay-supplied-options-option: DHCPv6 relay agent could provide 611 some information that would be useful to DHCPv6 client. Since 612 relay agent cannot provide options directly to the client, 613 [RFC6422] defines RSOO-enabled options to propose options for the 614 server to send to the client. This container modelled such RSOO- 615 enabled options. 617 o rsoo-set: This list under the "relay-supplied-options-option" 618 container is similar to the "option-set" defined in server 619 feature. It allows the relay to implement several sets of RSOO- 620 enabled options for different interfaces. The list only include 621 the EAP Re-authentication Protocol (ERP) Local Domain Name DHCPv6 622 Option defined in [RFC6440], since it is the only one RSOO-enabled 623 options accepted by IANA so far. 625 o relay-interfaces: The "relay-interfaces" defines common 626 configuration and state parameters of the interfaces belonging to 627 a DHCPv6 relay agent. 629 o relay-if: A list under "relay-interfaces" container that describes 630 a specific interface and its corresponding parameters. Here we 631 use a string called "if-name" as the key of list. 633 o pd-route: A sub-container of "relay-if" which describes the route 634 for delegated prefixes into the provider edge router. 636 o next-entity: This node defines a list that is used to describe the 637 next hop entity of this relay agent. Different entities are 638 distinguished by their addresses. 640 o packet-stats: A container shows packet state information of a 641 specific data communication. 643 o relay-stats: The "relay-stats" container records and presents the 644 overall packet statistics of the relay agent. 646 3.3. DHCPv6 Client Tree Diagrams 648 +--rw dhcpv6 649 +-- ... 650 | 651 +--rw client {dhcpv6-client}? 652 +--rw client-interfaces 653 +--rw client-if* [if-name] 654 +--rw if-name string 655 +--rw cli-id uint32 656 +--rw duid duidtype 657 +--rw enable boolean 658 +--rw description? string 659 +--rw pd-function boolean 660 +--rw rapid-commit boolean 661 +--rw mo-tab 662 | +--rw m-tab boolean 663 | +--rw o-tab boolean 664 +--rw oro-options 665 | +--rw oro-option* [option-code] 666 | +--rw option-code uint16 667 | +--rw description string 668 +--rw client-configured-options 669 | +--rw new-cli-option* [option-code] 670 | | +--rw option-code uint16 671 | | +--rw option-name string 672 | | +--rw option-description string 673 | | +--rw option-reference? string 674 | | +--rw option-value string 675 | +--rw user-class-option 676 | | +--rw enable boolean 677 | | +--rw user-class* [user-class-id] 678 | | +--rw user-class-id uint8 679 | | +--rw user-class-info string 680 | +--rw vendor-class-option 681 | | +--rw enable boolean 682 | | +--rw ent-num uint32 683 | | +--rw data* string 684 | +--rw client-fqdn-option 685 | | +--rw enable boolean 686 | | +--rw fqdn string 687 | | +--rw server-initiate-update boolean 688 | | +--rw client-initiate-update boolean 689 | +--rw client-architecture-type-option 690 | | +--rw enable boolean 691 | | +--rw architecture-types* [type-id] 692 | | | +--rw type-id uint16 693 | | | +--rw most-preferred boolean 694 | +--rw client-network-interface-option 695 | | +--rw enable booelan 696 | | +--rw type uint8 697 | | +--rw major uint8 698 | | +--rw minor uint8 699 | +--rw kerberos-principal-name-option 700 | | +--rw enable boolean 701 | | +--rw principal-name string 702 | +--rw client-link-layer-addr-option 703 | +--rw enable boolean 704 | +--rw link-layer-type uint16 705 | +--rw link-layer-addr string 706 +--ro identity-associations 707 | +--ro identity-association* [iaid] 708 | +--ro iaid uint32 709 | +--ro ia-type string 710 | +--ro ipv6-addr* inet:ipv6-address 711 | +--ro ipv6-prefix* inet:ipv6-prefix 712 | +--ro prefix-length* uint8 713 | +--ro t1-time yang:date-and-time 714 | +--ro t2-time yang:date-and-time 715 | +--ro preferred-lifetime yang:timeticks 716 | +--ro valid-lifetime yang:timeticks 717 +--ro if-other-paras 718 | +--ro uni-dhcpv6-serv-addr inet:ipv6-address 719 | +--ro dns-paras 720 | | +--ro domain-search-list string 721 | | +--ro dns-servers* [dns-serv-id] 722 | | +--ro dns-serv-id uint8 723 | | +--ro dns-serv-addr inet:ipv6-address 724 | +--ro sip-paras 725 | | +--ro sip-servers* [sip-serv-id] 726 | | +--ro sip-serv-id uint8 727 | | +--ro sip-serv-addr inet:ipv6-address 728 | | +--ro sip-serv-domain-name string 729 | +--ro nis-paras 730 | | +--ro nis-domain-name string 731 | | +--ro nis-server* [nis-serv-id] 732 | | +--ro nis-serv-id uint8 733 | | +--ro nis-serv-addr inet:ipv6-address 734 | +--ro nis-plus-paras 735 | | +--ro nis-plus-domain-name string 736 | | +--ro nis-plus-server* [nis-plus-serv-id] 737 | | +--ro nis-plus-serv-id uint8 738 | | +--ro nis-plus-serv-addr inet:ipv6-address 739 | +--ro info-refresh-time yang:timeticks 740 | +--ro time-zone-paras 741 | | +--ro tz-posix string 742 | | +--ro tz-database string 743 | +--ro cli-fqdn string 744 | +--ro ntp-paras 745 | | +--ro ntp-server* [ntp-serv-id] 746 | | +--ro ntp-serv-id uint8 747 | | +--ro ntp-serv-addr inet:ipv6-address 748 | | +--ro ntp-serv-mul-addr inet:ipv6-address 749 | | +--ro ntp-serv-fqdn string 750 | +--ro sntp-paras 751 | | +--ro sntp-server* [sntp-serv-id] 752 | | +--ro sntp-serv-id uint8 753 | | +--ro sntp-serv-addr inet:ipv6-address 754 | +--ro network-boot-paras 755 | | +--ro boot-file* [boot-file-id] 756 | | +--ro boot-file-id uint8 757 | | +--ro suitable-arch-type* uint16 758 | | +--ro suitable-net-if* uint32 759 | | +--ro boot-file-url string 760 | | +--ro boot-file-paras* [para-id] 761 | | +--ro para-id uint8 762 | | +--ro parameter string 763 | +--ro kerberos-paras 764 | | +--ro default-realm-name string 765 | | +--ro kdc-info* [kdc-id] 766 | | +--ro kdc-id uint8 767 | | +--ro priority uint16 768 | | +--ro weight uint16 769 | | +--ro transport-type uint8 770 | | +--ro port-number uint16 771 | | +--ro kdc-ipv6-addr inet:ipv6-address 772 | | +--ro realm-name string 773 | +--ro addr-selection-paras 774 | | +--ro automatic-row-add boolean 775 | | +--ro prefer-temporary-addr boolean 776 | | +--ro policy-table* [policy-id] 777 | | +--ro policy-id uint8 778 | | +--ro label uint8 779 | | +--ro precedence uint8 780 | | +--ro prefix-len uint8 781 | | +--ro prefix inet:ipv6-prefix 782 | +--ro sol-max-rt yang:timeticks 783 | +--ro inf-max-rt yang:timeticks 784 | +--ro pcp-paras 785 | | +--ro pcp-server* [pcp-serv-id] 786 | | +--ro pcp-serv-id uint8 787 | | +--ro pcp-serv-addr inet:ipv6-address 788 | +--ro s46-rule-paras 789 | | +--ro s46-rule* [rule-id] 790 | | +--ro rule-id uint8 791 | | +--ro rule-type enumeration 792 | | +--ro ea-len uint8 793 | | +--ro prefix4-len uint8 794 | | +--ro ipv4-prefix inet:ipv4-prefix 795 | | +--ro prefix6-len uint8 796 | | +--ro ipv6-prefix inet:ipv6-prefix 797 | | +--ro port-parameter 798 | | +--ro offset uint8 799 | | +--ro psid-len uint8 800 | | +--ro psid uint16 801 | +--ro s46-br-paras 802 | | +--ro br* [br-id] 803 | | +--ro br-id uint8 804 | | +--ro br-ipv6-addr inet:ipv6-address 805 | +--ro s46-dmr-paras 806 | | +--ro dmr* [dmr-id] 807 | | +--ro dmr-id uint8 808 | | +--ro dmr-prefix6-len uint8 809 | | +--ro dmr-ipv6-prefix inet:ipv6-prefix 810 | +--ro s46-v4-v6-binding-paras 811 | | +--ro ipv4-addr inet:ipv6-address 812 | | +--ro bind-prefix6-len uint8 813 | | +--ro port-parameter 814 | | +--ro offset uint8 815 | | +--ro psid-len uint8 816 | | +--ro psid uint16 817 | +--ro erp-local-domain-name string 818 +--ro supported-options 819 | +--ro supported-option* [option-code] 820 | +--ro option-code uint16 821 | +--ro description string 822 +--ro packet-stats 823 +--ro solicit-count uint32 824 +--ro request-count uint32 825 +--ro renew-count uint32 826 +--ro rebind-count uint32 827 +--ro decline-count uint32 828 +--ro release-count uint32 829 +--ro info-req-count uint32 830 +--ro advertise-count uint32 831 +--ro confirm-count uint32 832 +--ro reply-count uint32 833 +--ro reconfigure-count uint32 835 Introduction of important nodes: 837 o client-interfaces: A client may have several interfaces, it is 838 more reasonable to configure and manage parameters on the 839 interface-level. This container includes configuration and state 840 data of a DHCPv6 client in a per-interface manner. 842 o client-if: The list defines a specific client interface and its 843 data. Different interfaces are distinguished by the "ifName" key 844 which is a configurable string value. 846 o duid: Each server and client has only one DUID (DHCP Unique 847 Identifier). The DUID here will be carried in the Client ID 848 option to identify a specific DHCPv6 client. This leaf are same 849 as the "duid" leaf in "dhcpv6-server" feature. 851 o pd-function: Whether the client can act as a requesting router to 852 request prefixes using prefix delegation ([RFC3633]). 854 o rapid-commit: '1' indicates a client can initiate a Solicit-Reply 855 message exchange by adding a Rapid Commit option in Solicit 856 message. '0' means the client is not allowed to add a Rapid Commit 857 option to request addresses in a two-message exchange pattern. 859 o mo-tab: The management tab label indicates the operation mode of 860 the DHCPv6 client. 'm'=1 and 'o'=1 indicate the client will use 861 DHCPv6 to obtain all the configuration data. 'm'=1 and 'o'=0 are a 862 meaningless combination. 'm'=0 and 'o'=1 indicate the client will 863 use stateless DHCPv6 to obtain configuration data apart from 864 addresses/prefixes data. 'm'=0 and 'o'=0 represent the client will 865 not use DHCPv6 but use SLAAC to achieve configuration. 867 o oro-options: This container provide a way to configure the list of 868 options that the client will request in its ORO option. 870 o client-configured-options: Similar to the server, the client also 871 need to configure some options to fulfil some desired functions. 872 This container include all the potential options that need to be 873 configured at the client side. The relevant RFCs that define 874 those options include: [RFC3315], [RFC4704], [RFC5970], [RFC6784], 875 [RFC6939]. 877 o identity-association: IA is a construct through which a server and 878 a client can identify, group, and manage a set of related IPv6 879 addresses. The key of the "identity-association" list is a 4-byte 880 number IAID defined in [RFC3315] . 882 o if-other-paras: A client can obtain extra configuration data other 883 than address and prefix information through DHCPv6 options. This 884 container describes such data the client was configured through 885 DHCPv6. The potential configuration data may include DNS server 886 parameters, SIP server parameters and etc. 888 o supported-options: This state data container defines a list of 889 options supported by the client for administrator to interrogate a 890 client's capabilities. 892 o packet-stats: A container records all the packet status 893 information of a specific interface. 895 3.4. Notifications Mechanism for DHCPv6 896 +--rw dhcpv6 897 +-- ... 898 | 899 +--n notifications 900 +--n dhcpv6-server-event {dhcpv6-server}? 901 | +--n pool-running-out 902 | | +--ro utilization-ratio uint16 903 | | +--ro duid duidtype 904 | | +--ro serv-name? string 905 | | +--ro pool-name string 906 | +--n invalid-client-detected 907 | +--ro duid duidtype 908 | +--ro description? string 909 +--n dhcpv6-relay-event {dhcpv6-relay}? 910 | +--n topo-changed 911 | +--ro relay-if-name string 912 | +--ro first-hop boolean 913 | +--ro last-entity-addr inet:ipv6-address 914 +--n dhcpv6-client-event {dhcpv6-client}? 915 +--n ia-lease-event 916 | +--ro event-type enumeration 917 | +--ro duid duidtype 918 | +--ro iaid uint32 919 | +--ro serv-name? string 920 | +--ro description? string 921 +--n invalid-ia-detected 922 | +--ro duid duidtype 923 | +--ro iaid uint32 924 | +--ro serv-name? string 925 | +--ro description? string 926 +--n retransmission-failed 927 | +--ro duid duidtype 928 | +--ro description enumeration 929 +--n failed-status-turn-up 930 +--ro duid duidtype 931 +--ro status-code enumeration 933 Introduction of notifications: 935 o pool-running-out: raised when the address/prefix pool is going to 936 run out. A threshold for utilization ratio of the pool has been 937 defined in the server feature so that it will notify the 938 administrator when the utilization ratio reaches the threshold, 939 and such threshold is a settable parameter. 941 o invalid-client-detected: raised when the server has found a client 942 which can be regarded as a potential attacker. Some description 943 could also be included. 945 o topo-changed: raised when the topology of the relay agent is 946 changed. 948 o ia-lease-event: raised when the client was allocated a new IA from 949 the server or it renew/rebind/release its current IA. 951 o invalid-ia-detected: raised when the identity association of the 952 client can be proved to be invalid. Possible condition includes 953 duplicated address, illegal address, etc. 955 o retransmission-failed: raised when the retransmission mechanism 956 defined in [RFC3315] is failed. 958 o failed-status-turn-up: raised when the client receives a message 959 includes an unsuccessful Status Code option. 961 4. DHCPv6 YANG Model 963 This module imports typedefs from [RFC6991]. 965 file "ietf-dhcpv6@2015-09-25.yang" 967 module ietf-dhcpv6 { 968 namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6"; 969 prefix "dhcpv6"; 971 import ietf-inet-types { 972 prefix inet; 973 revision-date "2013-07-15"; 974 } 975 import ietf-yang-types { 976 prefix yang; 977 revision-date "2013-07-15"; 978 } 980 organization "dhc wg"; 981 contact "yong@csnet1.cs.tsinghua.edu.cn 982 wangh13@mails.tsinghua.edu.cn 983 lh.sunlinh@gmail.com 984 Ted.Lemon@nominum.com 985 ian.farrer@telekom.de"; 987 description "This model defines a YANG data model that can be 988 used to configure and manage DHCPv6 server, DHCPv6 relay and 989 DHCPv6 client."; 991 revision 2015-09-25 { 992 description "version04: Correct duid and grammar errors."; 993 reference "I-D: draft-cui-dhc-dhcpv6-yang-04" 994 } 995 revision 2015-07-01 { 996 description "version03: Correct grammar errors."; 998 reference "I-D: draft-cui-dhc-dhcpv6-yang-03" 999 } 1000 revision 2015-04-13 { 1001 description "version02: Correct grammar errors."; 1003 reference "I-D: draft-cui-dhc-dhcpv6-yang-02" 1004 } 1005 revision 2015-04-02 { 1006 description "version01: Correct grammar errors, Reuse 1007 groupings, Update 'dhcpv6-realy' feature, Add 1008 notifications."; 1010 reference "I-D: draft-cui-dhc-dhcpv6-yang-01" 1011 } 1012 revision 2015-03-04 { 1013 description "version00: Initial revision."; 1015 reference "I-D: draft-cui-dhc-dhcpv6-yang-00" 1016 } 1018 /* 1019 * Features 1020 */ 1022 feature dhcpv6-server { 1023 description 1024 "Server in DHCPv6."; 1025 reference 1026 "RFC3315"; 1027 } 1029 feature dhcpv6-relay { 1030 description 1031 "Relay agent in DHCPv6."; 1032 reference 1033 "RFC3315"; 1034 } 1036 feature dhcpv6-client { 1037 description 1038 "Client in DHCPv6."; 1039 reference 1040 "RFC3315"; 1041 } 1042 /* 1043 * Typedef 1044 */ 1046 typedef duidtype { 1047 type union { 1048 type uint16 { 1049 description 1050 "This uint16 specifies the type of this duid"; 1051 } 1052 type string { 1053 pattern '(([0-9a-fA-F]{2}){2,128})'; 1054 description 1055 "This should be a variable length value 1056 no more than 128 octets." 1057 } 1058 } 1059 } 1061 typedef threshold { 1062 description "Threshold value in percent"; 1063 type union { 1064 type uint16 { 1065 range 0..100; 1066 description "threshold value"; 1067 } 1068 type enumeration { 1069 enum "disabled" { 1070 description "No threshold"; 1071 } 1072 } 1073 } 1074 } 1075 /* 1076 * Grouping 1077 */ 1079 grouping vendor-infor { 1080 container vendor-info { 1081 description ""; 1082 leaf ent-num { 1083 type uint32; 1084 mandatory true; 1085 description "enterprise number"; 1086 } 1087 leaf-list data { 1088 type string; 1089 description "specific vendor info"; 1090 } 1091 } 1092 } 1094 grouping portset-para { 1095 container port-parameter { 1096 leaf offset { 1097 type uint8; 1098 mandatory true; 1099 description "offset in a port set"; 1100 } 1101 leaf psid-len { 1102 type uint8; 1103 mandatory true; 1104 description "length of a psid"; 1105 } 1106 leaf psid { 1107 type uint16; 1108 mandatory true; 1109 description "psid value"; 1110 } 1111 } 1112 } 1114 /* 1115 * Data Nodes 1116 */ 1118 container server { 1119 if-feature dhcpv6-server; 1120 description "server portion"; 1121 container serv-attributes { 1122 description "This container contains basic attributes 1123 of a DHCPv6 server such as DUID, server name and so 1124 on. Some optional functions that can be provided by 1125 the server is also included."; 1126 leaf name { 1127 type string; 1128 mandatory true; 1129 description "server's name"; 1130 } 1131 leaf duid { 1132 type duidtype; 1133 mandatory true; 1134 description "DHCP Unique Identifer"; 1135 } 1137 leaf enable { 1138 type boolean; 1139 mandatory true; 1140 description "whether to enable the server"; 1141 } 1142 leaf ipv6-address { 1143 type inet:ipv6-address; 1144 mandatory true; 1145 description "server's IPv6 address"; 1146 } 1147 leaf description { 1148 type string; 1149 description "description of the server"; 1150 } 1151 leaf pd-function { 1152 type boolean; 1153 mandatory true; 1154 description "Whether the server can act as a 1155 delegating router to perform prefix delegation 1156 ([RFC3633])."; 1157 } 1158 leaf stateless-service { 1159 type boolean; 1160 mandatory true; 1161 description "A boolean value specifies whether 1162 the server support client-server exchanges 1163 involving two messages defined in ([RFC3315])."; 1164 } 1165 leaf rapid-commit { 1166 type boolean; 1167 mandatory true; 1168 description "A boolean value specifies whether 1169 the server support client-server exchanges 1170 involving two messages defined in ([RFC3315])."; 1171 } 1172 leaf store-client-link-layer { 1173 type boolean; 1174 description "whether to store the clients' 1175 link-layer addresses"; 1176 } 1177 uses vendor-infor; 1178 } 1179 container option-sets { 1180 description "*"; 1181 list option-set { 1182 key option-set-id; 1183 description "*"; 1184 leaf option-set-id { 1185 type uint8; 1186 mandatory true; 1187 description "the option-set-id key"; 1188 } 1189 list new-option { 1190 key option-code; 1191 description "*"; 1192 leaf option-code { 1193 type uint16; 1194 manadatory true; 1195 description "the option code key"; 1196 } 1197 leaf option-name { 1198 type string; 1199 manadatory true; 1200 description "the new option's name"; 1201 } 1202 leaf option-description { 1203 type string; 1204 manadatory true; 1205 description "description of new option"; 1206 } 1207 leaf option-reference { 1208 type string; 1209 description "reference to the 1210 specification"; 1211 } 1212 leaf option-value { 1213 type string; 1214 manadatory true; 1215 description "the new option's value"; 1216 } 1217 } 1218 leaf user-class-value { 1219 type string; 1220 description "use class option's value"; 1221 } 1222 leaf enterprise-number { 1223 type uint32; 1224 description "*"; 1225 } 1226 leaf store-client-link-layer { 1227 type boolean; 1228 description "*"; 1229 } 1230 container preference-option { 1231 description "*"; 1232 leaf enable { 1233 type boolean; 1234 mandatory true; 1235 description "*"; 1236 } 1237 leaf preference-value { 1238 type uint8; 1239 mandatory true; 1240 description "*"; 1241 } 1242 } 1243 container sip-server-option { 1244 description "*"; 1245 leaf enable { 1246 type boolean; 1247 mandatory true; 1248 description "*"; 1249 } 1250 list sip-server { 1251 key sip-serv-id; 1252 leaf sip-serv-id { 1253 type uint8; 1254 mandatory true; 1255 description "*"; 1256 } 1257 leaf sip-serv-domain-name { 1258 type string; 1259 mandatory true; 1260 description "*"; 1261 } 1262 leaf sip-serv-addr { 1263 type inet:ipv6-address; 1264 mandatory true; 1265 description "*"; 1266 } 1267 } 1268 } 1269 container dns-config-option { 1270 description "*"; 1271 leaf enable { 1272 type boolean; 1273 mandatory true; 1274 description "*"; 1275 } 1276 list dns-server { 1277 key dns-serv-id; 1278 leaf dns-serv-id { 1279 type uint8; 1280 mandatory true; 1281 description "*"; 1282 } 1283 leaf dns-serv-addr { 1284 type inet:ipv6-address; 1285 mandatory true; 1286 description "*"; 1287 } 1288 } 1289 leaf domain-search-list { 1290 type string; 1291 mandatory true; 1292 description "*"; 1293 } 1294 } 1295 container nis-config-option { 1296 description "*"; 1297 leaf enable { 1298 type boolean; 1299 mandatory true; 1300 description "*"; 1301 } 1302 list nis-server { 1303 key nis-serv-id; 1304 description "*"; 1305 leaf nis-serv-id { 1306 type uint8; 1307 mandatory true; 1308 description "*"; 1309 } 1310 leaf nis-serv-addr { 1311 type inet:ipv6-address; 1312 mandatory true; 1313 description "*"; 1314 } 1315 } 1316 } 1317 container nis-plus-config-option { 1318 description "*"; 1319 leaf enable { 1320 type boolean; 1321 mandatory true; 1322 description "*"; 1323 } 1324 list nis-plus-server { 1325 key nis-plus-serv-id; 1326 description "*"; 1327 leaf nis-plus-serv-id { 1328 type uint8; 1329 mandatory true; 1330 description "*"; 1331 } 1332 leaf nis-plus-serv-addr { 1333 type inet:ipv6-address; 1334 mandatory true; 1335 description "*"; 1336 } 1337 } 1338 } 1339 container info-refresh-time-option { 1340 description "*"; 1341 leaf enable { 1342 type boolean; 1343 mandatory true; 1344 description "*"; 1345 } 1346 leaf info-refresh-time { 1347 type yang:timeticks; 1348 mandatory true; 1349 description "*"; 1350 } 1351 } 1352 container cli-fqdn-option { 1353 description "*"; 1354 leaf enable { 1355 type boolean; 1356 mandatory true; 1357 description "*"; 1358 } 1359 leaf server-initiate-update { 1360 type boolean; 1361 mandatory true; 1362 description "*"; 1363 } 1364 leaf client-initiate-update { 1365 type boolean; 1366 mandatory true; 1367 description "*"; 1368 } 1369 leaf modify-name-from-cli { 1370 type boolean; 1371 mandatory true; 1372 description "*"; 1373 } 1374 } 1375 container timezone-option { 1376 description "*"; 1377 leaf enable { 1378 type boolean; 1379 mandatory true; 1380 description "*"; 1381 } 1382 leaf tz-posix { 1383 type string; 1384 mandatory true; 1385 description "*"; 1386 } 1387 leaf tz-database { 1388 type string; 1389 mandatory true; 1390 description "*"; 1391 } 1392 } 1393 container ntp-server-option { 1394 description "*"; 1395 leaf enable { 1396 type boolean; 1397 mandatory true; 1398 description "*"; 1399 } 1400 list ntp-server { 1401 key ntp-serv-id; 1402 description "*"; 1403 leaf ntp-serv-id { 1404 type uint8; 1405 mandatory true; 1406 description "*"; 1407 } 1408 leaf ntp-serv-addr { 1409 type inet:ipv6-address; 1410 mandatory true; 1411 description "*"; 1412 } 1413 leaf ntp-serv-mul-addr { 1414 type inet:ipv6-address; 1415 mandatory true; 1416 description "*"; 1417 } 1418 leaf ntp-serv-fqdn { 1419 type string; 1420 mandatory true; 1421 description "*"; 1422 } 1423 } 1424 } 1425 container sntp-server-option { 1426 description "*"; 1427 leaf enable { 1428 type boolean; 1429 mandatory true; 1430 description "*"; 1431 } 1432 list sntp-server { 1433 key sntp-serv-id; 1434 description "*"; 1435 leaf sntp-serv-id { 1436 type uint8; 1437 mandatory true; 1438 description "*"; 1439 } 1440 leaf sntp-serv-addr { 1441 type inet:ipv6-address; 1442 mandatory true; 1443 description "*"; 1444 } 1445 } 1446 } 1447 container network-boot-option { 1448 description "*"; 1449 leaf enable { 1450 type boolean; 1451 mandatory true; 1452 description "*"; 1453 } 1454 list boot-file { 1455 key boot-file-id; 1456 description "*"; 1457 leaf boot-file-id { 1458 type uint8; 1459 mandatory true; 1460 description "*"; 1461 } 1462 leaf-list suitable-arch-type { 1463 type uint16; 1464 description "*"; 1465 } 1466 leaf-list suitable-net-if { 1467 type uint32; 1468 description "*"; 1469 } 1470 leaf boot-file-url { 1471 type string; 1472 mandatory true; 1473 description "*"; 1474 } 1475 list boot-file-paras { 1476 key para-id; 1477 description "*"; 1478 leaf para-id { 1479 type uint8; 1480 mandatory true; 1481 description "*"; 1482 } 1483 leaf parameter { 1484 type string; 1485 mandatory true; 1486 description "*"; 1487 } 1488 } 1489 } 1490 } 1491 container dslite-option { 1492 description "*"; 1493 leaf enable { 1494 type boolean; 1495 mandatory true; 1496 description "*"; 1497 } 1498 leaf dslite-aftr-name { 1499 type string; 1500 mandatory true; 1501 description "*"; 1502 } 1503 } 1504 container kerberos-option { 1505 description "*"; 1506 leaf enable { 1507 type boolean; 1508 mandatory true; 1509 description "*"; 1510 } 1511 leaf default-realm-name { 1512 type string; 1513 mandatory true; 1514 description "*"; 1515 } 1516 list kdc-info { 1517 key kdc-id; 1518 description "*"; 1519 leaf kdc-id { 1520 type uint8; 1521 mandatory true; 1522 description "*"; 1523 } 1524 leaf priority { 1525 type uint16; 1526 mandatory true; 1527 description "*"; 1528 } 1529 leaf weight { 1530 type uint16; 1531 mandatory true; 1532 description "*"; 1533 } 1534 leaf transport-type { 1535 type uint8; 1536 mandatory true; 1537 description "*"; 1538 } 1539 leaf port-number { 1540 type uint16; 1541 mandatory true; 1542 description "*"; 1543 } 1544 leaf kdc-ipv6-addr { 1545 type inet:ipv6-address; 1546 mandatory true; 1547 description "*"; 1548 } 1549 leaf realm-name { 1550 type string; 1551 mandatory true; 1552 description "*"; 1553 } 1554 } 1555 } 1556 container addr-selection-option { 1557 description "*"; 1558 leaf enable { 1559 type boolean; 1560 mandatory true; 1561 description "*"; 1562 } 1563 leaf a-bit-set { 1564 type boolean; 1565 mandatory true; 1566 description "*"; 1567 } 1568 leaf p-bit-set { 1569 type boolean; 1570 mandatory true; 1571 description "*"; 1572 } 1573 list policy-table { 1574 key policy-id; 1575 description "*"; 1576 leaf policy-id { 1577 type uint8; 1578 mandatory true; 1579 description "*"; 1580 } 1581 leaf label { 1582 type uint8; 1583 mandatory true; 1584 description "*"; 1585 } 1586 leaf precedence { 1587 type uint8; 1588 mandatory true; 1589 description "*"; 1590 } 1591 leaf prefix-len { 1592 type uint8; 1593 mandatory true; 1594 description "*"; 1595 } 1596 leaf prefix { 1597 type inet:ipv6-prefix; 1598 mandatory true; 1599 description "*"; 1600 } 1601 } 1602 } 1603 container sol-max-rt-option { 1604 description "*"; 1605 leaf enable { 1606 type boolean; 1607 mandatory true; 1608 description "*"; 1609 } 1610 leaf sol-max-rt-value { 1611 type yang:timeticks; 1612 mandatory true; 1613 description "*"; 1614 } 1615 } 1616 container inf-max-rt-option { 1617 description "*"; 1618 leaf enable { 1619 type boolean; 1620 mandatory true; 1621 description "*"; 1622 } 1623 leaf inf-max-rt-value { 1624 type yang:timeticks; 1625 mandatory true; 1626 description "*"; 1627 } 1628 } 1629 container pcp-server-option { 1630 description "*"; 1631 leaf enable { 1632 type boolean; 1633 mandatory true; 1634 description "*"; 1635 } 1636 list pcp-server { 1637 key pcp-serv-id; 1638 description "*"; 1639 leaf pcp-serv-id { 1640 type uint8; 1641 mandatory true; 1642 description "*"; 1643 } 1644 leaf pcp-serv-addr { 1645 type inet:ipv6-address; 1646 mandatory true; 1647 description "*"; 1648 } 1649 } 1650 } 1651 container s46-rule-option { 1652 description "*"; 1653 leaf enable { 1654 type boolean; 1655 mandatory true; 1656 description "*"; 1657 } 1658 list s46-rule { 1659 key rule-id; 1660 description "*"; 1661 leaf rule-id { 1662 type uint8; 1663 mandatory true; 1664 description "*"; 1666 } 1667 leaf rule-type { 1668 type enumeration { 1669 enum "BMR"; 1670 enum "FMR"; 1671 } 1672 mandatory true; 1673 description "*"; 1674 } 1675 leaf prefix4-len { 1676 type uint8; 1677 mandatory true; 1678 description "*"; 1679 } 1680 leaf ipv4-prefix { 1681 type inet:ipv4-prefix; 1682 mandatory true; 1683 description "*"; 1684 } 1685 leaf prefix6-len { 1686 type uint8; 1687 mandatory true; 1688 description "*"; 1689 } 1690 leaf ipv6-prefix { 1691 type inet:ipv6-prefix; 1692 mandatory true; 1693 description "*"; 1694 } 1695 uses portset-para; 1696 } 1697 } 1698 container s46-br-option { 1699 description "*"; 1700 leaf enable { 1701 type boolean; 1702 mandatory true; 1703 description "*"; 1704 } 1705 list br { 1706 key br-id; 1707 description "*"; 1708 leaf br-id { 1709 type uint8; 1710 mandatory true; 1711 description "*"; 1712 } 1713 leaf br-ipv6-addr { 1714 type inet:ipv6-address; 1715 mandatory true; 1716 description "*"; 1717 } 1718 } 1719 } 1720 container s46-dmr-option { 1721 leaf enable { 1722 type boolean; 1723 mandatory true; 1724 description "*"; 1725 } 1726 list dmr { 1727 key dmr-id; 1728 description "*"; 1729 leaf dmr-id { 1730 type uint8; 1731 mandatory true; 1732 description "*"; 1733 } 1734 leaf dmr-prefix-len { 1735 type uint8; 1736 mandatory true; 1737 description "*"; 1738 } 1739 leaf dmr-ipv6-prefix { 1740 type inet:ipv6-prefix; 1741 mandatory true; 1742 description "*"; 1743 } 1744 } 1745 } 1746 container s46-v4-v6-binding-option { 1747 description "*"; 1748 leaf enable { 1749 type boolean; 1750 mandatory true; 1751 description "*"; 1752 } 1753 list ce { 1754 key ce-id; 1755 description "*"; 1756 leaf ce-id { 1757 type uint8; 1758 mandatory true; 1759 description "*"; 1760 } 1761 leaf ipv4-addr { 1762 type inet:ipv4-address; 1763 mandatory true; 1764 description "*"; 1765 } 1766 leaf bind-prefix6-len { 1767 type uint8; 1768 mandatory true; 1769 description "*"; 1770 } 1771 leaf bind-ipv6-prefix { 1772 type inet:ipv6-prefix; 1773 mandatory true; 1774 description "*"; 1775 } 1776 uses portset-para; 1777 } 1778 } 1779 } 1780 } 1781 container network-range { 1782 description "*"; 1783 leaf-list option-set { 1784 type uint8; 1785 description "*"; 1786 } 1787 list network-range { 1788 key network-range-id; 1789 description "*"; 1790 leaf network-range-id { 1791 type uint8; 1792 mandatory true; 1793 description "*"; 1794 } 1795 leaf network-description { 1796 type string; 1797 mandatory true; 1798 description "*"; 1799 } 1800 leaf network-prefix { 1801 type inet:ipv6-prefix; 1802 mandatory true; 1803 description "*"; 1804 } 1805 leaf inherit-option-set { 1806 type boolean; 1807 mandatory true; 1808 description "*"; 1809 } 1810 leaf-list option-set { 1811 type uint8; 1812 description "*"; 1813 } 1814 container address-pools { 1815 description "A container describes 1816 the DHCPv6 server's address pools."; 1817 list address-pool { 1818 key pool-id; 1819 description "A DHCPv6 server can 1820 be configured with several address 1821 pools. This list defines such 1822 address pools which are distinguish 1823 by the key called 'pool-name'."; 1824 leaf pool-id { 1825 type uint8; 1826 mandatory true; 1827 description "*"; 1828 } 1829 leaf pool-prefix { 1830 type inet:ipv6-prefix; 1831 mandatory true; 1832 description "*"; 1833 } 1834 leaf start-address { 1835 type inet:ipv6-address-no-zone; 1836 mandatory true; 1837 description "*"; 1838 } 1839 leaf end-address { 1840 type inet:ipv6-address-no-zone; 1841 mandatory true; 1842 description "*"; 1843 } 1844 leaf preferred-lifetime { 1845 type yang:timeticks; 1846 mandatory true; 1847 description "*"; 1848 } 1849 leaf valid-lifetime { 1850 type yang:timeticks; 1851 mandatory true; 1852 description "*"; 1853 } 1854 leaf total-ipv6-count { 1855 type uint64; 1856 config "false"; 1857 mandatory true; 1858 description "*"; 1859 } 1860 leaf used-ipv6-count { 1861 type uint64; 1862 config "false"; 1863 mandatory true; 1864 description "*"; 1865 } 1866 leaf utilization-ratio { 1867 type threshold; 1868 mandatory true; 1869 description "*"; 1870 } 1871 leaf inherit-option-set { 1872 type boolean; 1873 mandatory true; 1874 description "*"; 1875 } 1876 leaf-list option-set { 1877 type uint8; 1878 description "*"; 1879 } 1880 container reserved-addresses { 1881 description "*"; 1882 list static-binding { 1883 key cli-id; 1884 description "*"; 1885 leaf cli-id { 1886 type uint32; 1887 mandatory true; 1888 description "*"; 1889 } 1890 leaf duid { 1891 type duidtype; 1892 mandatory true; 1893 description "DHCP Unique 1894 Identifer"; 1895 } 1896 leaf-list reserv-addr { 1897 type inet:ipv6-address; 1898 description "*"; 1899 } 1900 } 1901 leaf-list other-reserv-addr { 1902 type inet:ipv6-address; 1903 description "*"; 1904 } 1905 } 1907 } 1908 list binding-info { 1909 key cli-id; 1910 config "false"; 1911 description "A list records a binding 1912 information for each DHCPv6 client 1913 that has already been allocated IPv6 1914 addresses."; 1915 leaf cli-id { 1916 type uint32; 1917 mandatory true; 1918 description "*"; 1919 } 1920 leaf duid { 1921 type duidtype; 1922 mandatory true; 1923 description "DHCP Unique Identifer"; 1924 } 1925 list cli-ia { 1926 key iaid; 1927 description "*"; 1928 leaf ia-type { 1929 type string; 1930 mandatory true; 1931 description "*"; 1932 } 1933 leaf iaid { 1934 type uint32; 1935 mandatory true; 1936 description "*"; 1937 } 1938 leaf-list cli-addr { 1939 type inet:ipv6-address; 1940 description "*"; 1941 } 1942 leaf pool-id { 1943 type uint8; 1944 mandatory true; 1945 description "*"; 1946 } 1947 } 1948 } 1949 } 1950 container prefix-pools { 1951 description "If a server supports prefix 1952 delegation function, this container will 1953 be used to define the delegating router's 1954 refix pools."; 1955 list prefix-pool { 1956 key pool-id; 1957 description "Similar to server's 1958 address pools, a delegating router 1959 can also be configured with multiple 1960 prefix pools specified by a list 1961 called 'prefix-pool'."; 1962 leaf pool-id { 1963 type uint8; 1964 mandatory true; 1965 description "*"; 1966 } 1967 leaf prefix { 1968 type inet:ipv6-prefix; 1969 mandatory true; 1970 description "*"; 1971 } 1972 leaf prefix-length { 1973 type uint8; 1974 mandatory true; 1975 description "*"; 1976 } 1977 leaf preferred-lifetime { 1978 type yang:timeticks; 1979 mandatory true; 1980 description "*"; 1981 } 1982 leaf valid-lifetime { 1983 type yang:timeticks; 1984 mandatory true; 1985 description "*"; 1986 } 1987 leaf utilization-ratio { 1988 type threshold; 1989 mandatory true; 1990 description "*"; 1991 } 1992 leaf inherit-option-set { 1993 type boolean; 1994 mandatory true; 1995 description "*"; 1996 } 1997 leaf-list option-set { 1998 type uint8; 1999 description "*"; 2000 } 2001 container reserved-prefixes { 2002 description "*"; 2003 list static-binding { 2004 key cli-id; 2005 description "*"; 2006 leaf cli-id { 2007 type uint32; 2008 mandatory true; 2009 description "*"; 2010 } 2011 leaf duid { 2012 type duidtype; 2013 mandatory true; 2014 description "DHCP Unique 2015 Identifer"; 2016 } 2017 leaf reserv-prefix-len { 2018 type uint8; 2019 mandatory true; 2020 description "*"; 2021 } 2022 leaf reserv-prefix { 2023 type inet:ipv6-prefix; 2024 mandatory true; 2025 description "*"; 2026 } 2027 } 2028 leaf exclude-prefix-len { 2029 type uint8; 2030 mandatory true; 2031 description "*"; 2032 } 2033 leaf exclude-prefix { 2034 type inet:ipv6-prefix; 2035 mandatory true; 2036 description "*"; 2037 } 2038 list other-reserv-prefix { 2039 key reserv-id; 2040 description "*"; 2041 leaf reserv-id { 2042 type uint8; 2043 mandatory true; 2044 description "*"; 2045 } 2046 leaf prefix-len { 2047 type uint8; 2048 mandatory true; 2049 description "*"; 2050 } 2051 leaf prefix { 2052 type inet:ipv6-prefix; 2053 mandatory true; 2054 description "*"; 2055 } 2056 } 2057 } 2058 } 2059 list binding-info { 2060 key cli-id; 2061 config "false"; 2062 description "A list records a 2063 binding information for each 2064 DHCPv6 client that has already 2065 been allocated IPv6 addresses."; 2066 leaf cli-id { 2067 type uint32; 2068 mandatory true; 2069 description "*"; 2070 } 2071 leaf duid { 2072 type duidtype; 2073 manadatory true; 2074 description "DHCP Unique 2075 Identifier"; 2076 } 2077 list cli-iapd { 2078 key iaid; 2079 description "*"; 2080 leaf iaid { 2081 type uint32; 2082 mandatory true; 2083 description "*"; 2084 } 2085 leaf-list cli-prefix { 2086 type inet:ipv6-prefix; 2087 description "*"; 2088 } 2089 leaf-list cli-prefix-len { 2090 type uint8; 2091 description "*"; 2092 } 2093 leaf pool-id { 2094 type uint8; 2095 mandatory true; 2096 description "*"; 2097 } 2098 } 2100 } 2101 } 2102 container hosts { 2103 description "*"; 2104 list host { 2105 key cli-id; 2106 description "*"; 2107 leaf cli-id { 2108 type uint32; 2109 mandatory true; 2110 description "*"; 2111 } 2112 leaf duid { 2113 type duidtype; 2114 mandatory true; 2115 description "DHCP Unique 2116 Identifer"; 2117 } 2118 leaf inherit-option-set { 2119 type boolean; 2120 mandatory true; 2121 description "*"; 2122 } 2123 leaf-list option-set { 2124 type uint8; 2125 description "*"; 2126 } 2127 leaf nis-domain-name { 2128 type string; 2129 description "*"; 2130 } 2131 leaf nis-plus-domain-name { 2132 type string; 2133 description "*"; 2134 } 2135 } 2136 } 2137 } 2138 } 2139 container relay-opaque-paras { 2140 description "This container contains some 2141 opaque values in Relay Agent options that 2142 need to be configured on the server side 2143 only for value match. Such Relay Agent 2144 options include Interface-Id option, 2145 Remote-Id option and Subscriber-Id option."; 2146 list relays { 2147 key relay-name; 2148 description "*"; 2149 leaf relay-name { 2150 type string; 2151 mandatory true; 2152 description "*"; 2153 } 2154 list interface-info { 2155 key if-name; 2156 description "*"; 2157 leaf if-name { 2158 type string; 2159 mandatory true; 2160 description "*"; 2161 } 2162 leaf interface-id { 2163 type string; 2164 mandatory true; 2165 description "*"; 2166 } 2167 } 2168 list subscribers { 2169 key subscriber; 2170 description "*"; 2171 leaf subscriber { 2172 type uint8; 2173 mandatory true; 2174 description "*"; 2175 } 2176 leaf subscriber-id { 2177 type string; 2178 mandatory true; 2179 description "*"; 2180 } 2181 } 2182 list remote-host { 2183 key ent-num; 2184 description "*"; 2185 leaf ent-num { 2186 type uint32; 2187 mandatory true; 2188 description "*"; 2189 } 2190 leaf remote-id { 2191 type string; 2192 mandatory true; 2193 description "*"; 2194 } 2195 } 2197 } 2198 } 2199 container rsoo-enabled-options { 2200 description "*"; 2201 list rsoo-enabled-option{ 2202 key option-code; 2203 description "*"; 2204 leaf option-code { 2205 type uint16; 2206 mandatory true; 2207 description "*"; 2208 } 2209 leaf description { 2210 type string; 2211 mandatory true; 2212 description "*"; 2213 } 2214 } 2215 } 2216 container packet-stats { 2217 config "false"; 2218 description "A container presents 2219 the packet statistics related to 2220 the DHCPv6 server."; 2221 leaf solicit-count { 2222 type uint32; 2223 mandatory true; 2224 description "*"; 2225 } 2226 leaf request-count { 2227 type uint32; 2228 mandatory true; 2229 description "*"; 2230 } 2231 leaf renew-count { 2232 type uint32; 2233 mandatory true; 2234 description "*"; 2235 } 2236 leaf rebind-count { 2237 type uint32; 2238 mandatory true; 2239 description "*"; 2240 } 2241 leaf decline-count { 2242 type uint32; 2243 mandatory true; 2244 description "*"; 2246 } 2247 leaf release-count { 2248 type uint32; 2249 mandatory true; 2250 description "*"; 2251 } 2252 leaf info-req-count { 2253 type uint32; 2254 mandatory true; 2255 description "*"; 2256 } 2257 leaf advertise-count { 2258 type uint32; 2259 mandatory true; 2260 description "*"; 2261 } 2262 leaf confirm-count { 2263 type uint32; 2264 mandatory true; 2265 description "*"; 2266 } 2267 leaf reply-count { 2268 type uint32; 2269 mandatory true; 2270 description "*"; 2271 } 2272 leaf reconfigure-count { 2273 type uint32; 2274 mandatory true; 2275 description "*"; 2276 } 2277 leaf relay-forward-count { 2278 type uint32; 2279 mandatory true; 2280 description "*"; 2281 } 2282 leaf relay-reply-count { 2283 type uint32; 2284 mandatory true; 2285 description "*"; 2286 } 2287 } 2288 } 2289 } 2290 container relay { 2291 if-feature dhcpv6-relay; 2292 description "relay portion"; 2293 container relay-attributes { 2294 description "A container describes 2295 some basic attributes of the relay 2296 agent including some relay agent 2297 specific options data that need to 2298 be configured previously. Such options 2299 include Remote-Id option and 2300 Subscriber-Id option."; 2301 leaf name { 2302 type string; 2303 mandatory true; 2304 description "*"; 2305 } 2306 leaf enable { 2307 type boolean; 2308 mandatory true; 2309 description "*"; 2310 } 2311 leaf ipv6-address { 2312 type inet:ipv6-address; 2313 mandatory true; 2314 description "*"; 2315 } 2316 leaf description { 2317 type string; 2318 description "*"; 2319 } 2320 leaf-list dest-addrs { 2321 type inet:ipv6-address; 2322 description "Each DHCPv6 relay agent may 2323 be configured with a list of destination 2324 addresses. This node defines such a list 2325 of IPv6 addresses that may include 2326 unicast addresses, multicast addresses 2327 or other addresses."; 2328 } 2329 list subscribers { 2330 key subscriber; 2331 description "*"; 2332 leaf subscriber { 2333 type uint8; 2334 mandatory true; 2335 description "*"; 2336 } 2337 leaf subscriber-id { 2338 type string; 2339 mandatory true; 2340 description "*"; 2341 } 2343 } 2344 list remote-host { 2345 key ent-num; 2346 description "*"; 2347 leaf ent-num { 2348 type uint32; 2349 mandatory true; 2350 description "*"; 2351 } 2352 leaf remote-id { 2353 type string; 2354 mandatory true; 2355 description "*"; 2356 } 2357 } 2358 uses vendor-infor; 2359 container relay-supplied-options-option { 2360 description "*"; 2361 list rsoo-set { 2362 key rsoo-set-id; 2363 description "*"; 2364 leaf rsoo-set-id { 2365 type uint8; 2366 mandatory true; 2367 description "*"; 2368 } 2369 container erp-local-domain-name-option { 2370 description "*"; 2371 leaf enable { 2372 type boolean; 2373 mandatory true; 2374 description "*"; 2375 } 2376 list erp-for-client { 2377 key cli-id; 2378 description "*"; 2379 leaf cli-id { 2380 type uint32; 2381 mandatory true; 2382 description "*"; 2383 } 2384 leaf duid { 2385 type duidtype; 2386 mandatory true; 2387 description "DHCP Unique 2388 Identifer"; 2389 } 2390 leaf erp-name { 2391 type string; 2392 mandatory true; 2393 description "*"; 2394 } 2395 } 2396 } 2397 } 2398 } 2399 container relay-interfaces { 2400 description "It is a container that 2401 defines common configuration and 2402 state parameters in the interfaces 2403 of a DHCPv6 relay agent. In this YANG 2404 data model for DHCPv6 relay agent, 2405 the parameters are configured in a 2406 per-interface manner."; 2407 list relay-if { 2408 key if-name; 2409 description "A list describes a 2410 specific interface and its 2411 corresponding parameters. Here 2412 we use a string called 'ifName' 2413 as the key of list."; 2414 leaf if-name { 2415 type string; 2416 mandatory true; 2417 description "*"; 2418 } 2419 leaf enable { 2420 type boolean; 2421 mandatory true; 2422 description "*"; 2423 } 2424 leaf interface-id { 2425 type string; 2426 description "*"; 2427 } 2428 leaf-list rsoo-set { 2429 type uint8; 2430 description "*"; 2431 } 2432 list pd-route { 2433 key pd-route-id; 2434 description "*"; 2435 leaf pd-route-id { 2436 type uint8; 2437 mandatory true; 2438 description "*"; 2440 } 2441 leaf requesting-router- d { 2442 type uint32; 2443 mandatory true; 2444 description "*"; 2445 } 2446 leaf delegating-router-id { 2447 type uint32; 2448 mandatory true; 2449 description "*"; 2450 } 2451 leaf next-router { 2452 type inet:ipv6-address; 2453 mandatory true; 2454 description "*"; 2455 } 2456 leaf last-router { 2457 type inet:ipv6-address; 2458 mandatory true; 2459 description "*"; 2460 } 2461 } 2462 list next-entity { 2463 key dest-addr; 2464 description "This node defines 2465 a list that is used to describe 2466 the next hop entity of this 2467 relay distinguished by their 2468 addresses."; 2469 leaf dest-addr { 2470 type inet:ipv6-address; 2471 mandatory true; 2472 description "*"; 2473 } 2474 leaf available { 2475 type boolean; 2476 mandatory true; 2477 description "*"; 2478 } 2479 leaf multicast { 2480 type boolean; 2481 mandatory true; 2482 description "*"; 2483 } 2484 leaf server { 2485 type boolean; 2486 mandatory true; 2487 description "*"; 2489 } 2490 container packet-stats { 2491 config "false"; 2492 description "*"; 2493 leaf cli-packet-rvd-count { 2494 type uint32; 2495 mandatory true; 2496 description "*"; 2497 } 2498 leaf solicit-rvd-count { 2499 type uint32; 2500 mandatory true; 2501 description "*"; 2502 } 2503 leaf request-rvd-count { 2504 type uint32; 2505 mandatory true; 2506 description "*"; 2507 } 2508 leaf renew-rvd-count { 2509 type uint32; 2510 mandatory true; 2511 description "*"; 2512 } 2513 leaf rebind-rvd-count { 2514 type uint32; 2515 mandatory true; 2516 description "*"; 2517 } 2518 leaf decline-rvd-count { 2519 type uint32; 2520 mandatory true; 2521 description "*"; 2522 } 2523 leaf release-rvd-count { 2524 type uint32; 2525 mandatory true; 2526 description "*"; 2527 } 2528 leaf info-req-rvd-count { 2529 type uint32; 2530 mandatory true; 2531 description "*"; 2532 } 2533 leaf relay-for-rvd-count { 2534 type uint32; 2535 mandatory true; 2536 description "*"; 2538 } 2539 leaf relay-rep-rvd-count { 2540 type uint32; 2541 mandatory true; 2542 description "*"; 2543 } 2544 leaf packet-to-cli-count { 2545 type uint32; 2546 mandatory true; 2547 description "*"; 2548 } 2549 leaf adver-sent-count { 2550 type uint32; 2551 mandatory true; 2552 description "*"; 2553 } 2554 leaf confirm-sent-count { 2555 type uint32; 2556 mandatory true; 2557 description "*"; 2558 } 2559 leaf reply-sent-count { 2560 type uint32; 2561 mandatory true; 2562 description "*"; 2563 } 2564 leaf reconfig-sent-count { 2565 type uint32; 2566 mandatory true; 2567 description "*"; 2568 } 2569 leaf relay-for-sent-count { 2570 type uint32; 2571 mandatory true; 2572 description "*"; 2573 } 2574 leaf relay-rep-sent-count { 2575 type uint32; 2576 mandatory true; 2577 description "*"; 2578 } 2579 } 2580 } 2581 } 2582 } 2583 container relay-stats { 2584 config "false"; 2585 description "*"; 2586 leaf cli-packet-rvd-count { 2587 type uint32; 2588 mandatory true; 2589 description "*"; 2590 } 2591 leaf relay-for-rvd-count { 2592 type uint32; 2593 mandatory true; 2594 description "*"; 2595 } 2596 leaf relay-rep-rvd-count { 2597 type uint32; 2598 mandatory true; 2599 description "*"; 2600 } 2601 leaf packet-to-cli-count { 2602 type uint32; 2603 mandatory true; 2604 description "*"; 2605 } 2606 leaf relay-for-sent-count { 2607 type uint32; 2608 mandatory true; 2609 description "*"; 2610 } 2611 leaf relay-rep-sent-count { 2612 type uint32; 2613 mandatory true; 2614 description "*"; 2615 } 2616 leaf discarded-packet-count { 2617 type uint32; 2618 mandatory true; 2619 description "*"; 2620 } 2621 } 2622 } 2623 } 2624 container client { 2625 if-feature dhcpv6-client; 2626 description "DHCPv6 Client Portion"; 2627 container client-interfaces { 2628 description "A client may have several 2629 interfaces, it is more reasonable to 2630 configure and manage parameters on 2631 the interface-level. This container 2632 includes configuration and state data 2633 of a DHCPv6 client in a per-interface 2634 manner."; 2635 list client-if { 2636 key if-name; 2637 description "The list defines a 2638 specific client interface and its 2639 data. Different interfaces are 2640 distinguished by the key which 2641 is a configurable string value."; 2642 leaf if-name { 2643 type string; 2644 mandatory true; 2645 description "interface name"; 2646 } 2647 leaf cli-id { 2648 type uint32; 2649 mandatory true; 2650 description "*"; 2651 } 2652 leaf duid { 2653 type duidtype; 2654 mandatory true; 2655 description "DHCP Unique 2656 Identifer"; 2657 } 2658 leaf enable { 2659 type boolean; 2660 mandatory true; 2661 description "*"; 2662 } 2663 leaf description { 2664 type string; 2665 description "*"; 2666 } 2667 leaf pd-function { 2668 type boolean; 2669 description "Whether the client 2670 can act as a requesting router 2671 to request prefixes using prefix 2672 delegation ([RFC3633])."; 2673 mandatory true; 2674 } 2675 leaf rapid-commit { 2676 type boolean; 2677 description "'1' indicates a client 2678 can initiate a Solicit-Reply message 2679 exchange by adding a Rapid Commit 2680 option in Solicit message. '0' means 2681 the client is not allowed to add a 2682 Rapid Commit option to request 2683 addresses in a two-message 2684 exchange pattern."; 2685 mandatory true; 2686 } 2687 container mo-tab { 2688 description "The management tab 2689 label indicates the operation 2690 mode of the DHCPv6 client. 'm'=1 2691 and 'o'=1 indicate the client 2692 will use DHCPv6 to obtain all 2693 the configuration data. 'm'=1 2694 and 'o'=0 are a meaningless 2695 combination. 'm'=0 and 'o'=1 2696 indicate the client will use 2697 stateless DHCPv6 to obtain 2698 configuration data apart from 2699 addresses/prefixes data. 2700 'm'=0 and 'o'=0 represent the 2701 client will not use DHCPv6 2702 but use SLAAC to achieve 2703 configuration."; 2704 leaf m-tab { 2705 type boolean; 2706 mandatory true; 2707 description "*"; 2708 } 2709 leaf o-tab { 2710 type boolean; 2711 mandatory true; 2712 description "*"; 2713 } 2714 } 2715 container oro-options { 2716 description "*"; 2717 list oro-option { 2718 key option-code; 2719 description "*"; 2720 leaf option-code { 2721 type uint16; 2722 mandatory true; 2723 description "*"; 2724 } 2725 leaf description { 2726 type string; 2727 mandatory true; 2728 description "*"; 2729 } 2731 } 2732 } 2733 container client-configured-options { 2734 description "*"; 2735 list new-cli-option { 2736 key option-code; 2737 description "*"; 2738 leaf option-code { 2739 type uint16; 2740 manadatory true; 2741 description "*"; 2742 } 2743 leaf option-name { 2744 type string; 2745 manadatory true; 2746 description "*"; 2747 } 2748 leaf option-description { 2749 type string; 2750 manadatory true; 2751 description "*"; 2752 } 2753 leaf option-reference { 2754 type string; 2755 description "*"; 2756 } 2757 leaf option-value { 2758 type string; 2759 manadatory true; 2760 description "*"; 2761 } 2762 } 2763 container user-class-option { 2764 description "*"; 2765 leaf enable { 2766 type boolean; 2767 mandatory true; 2768 description "*"; 2769 } 2770 list user-class { 2771 key user-class-id; 2772 description "*"; 2773 leaf user-class-id { 2774 type uint8; 2775 mandatory true; 2776 description "*"; 2777 } 2778 leaf user-class-info { 2779 type string; 2780 mandatory true; 2781 description "*"; 2782 } 2783 } 2784 } 2785 container vendor-class-option { 2786 description "*"; 2787 leaf enable { 2788 type boolean; 2789 mandatory true; 2790 description "*"; 2791 } 2792 leaf ent-num { 2793 type uint32; 2794 mandatory true; 2795 description "*"; 2796 } 2797 leaf-list data { 2798 type string; 2799 description "*"; 2800 } 2801 } 2802 container client-fqdn-option { 2803 description "*"; 2804 leaf enable { 2805 type boolean; 2806 mandatory true; 2807 description "*"; 2808 } 2809 leaf fqdn { 2810 type string; 2811 mandatory true; 2812 description "*"; 2813 } 2814 leaf server-initiate-update { 2815 type boolean; 2816 mandatory true; 2817 description "*"; 2818 } 2819 leaf client-initiate-update { 2820 type boolean; 2821 mandatory true; 2822 description "*"; 2823 } 2824 } 2825 container client-architecture-type-option { 2826 description "*"; 2827 leaf enable { 2828 type boolean; 2829 mandatory true; 2830 description "*"; 2831 } 2832 list architecture-types { 2833 key type-id; 2834 description "*"; 2835 leaf type-id { 2836 type uint16; 2837 mandatory true; 2838 description "*"; 2839 } 2840 leaf most-preferred { 2841 type boolean; 2842 mandatory true; 2843 description "*"; 2844 } 2845 } 2846 } 2847 container client-network-interface-option { 2848 description "*"; 2849 leaf enable { 2850 type boolean; 2851 mandatory true; 2852 description "*"; 2853 } 2854 leaf type { 2855 type uint8; 2856 mandatory true; 2857 description "*"; 2858 } 2859 leaf major { 2860 type uint8; 2861 mandatory true; 2862 description "*"; 2863 } 2864 leaf minor { 2865 type uint8; 2866 mandatory true; 2867 description "*"; 2868 } 2869 } 2870 container kerberos-principal-name-option { 2871 description "*"; 2872 leaf enable { 2873 type boolean; 2874 mandatory true; 2875 description "*"; 2876 } 2877 leaf principal-name { 2878 type string; 2879 mandatory true; 2880 description "*"; 2881 } 2882 } 2883 container client-link-layer-addr-option { 2884 description "*"; 2885 leaf enable { 2886 type boolean; 2887 mandatory true; 2888 description "*"; 2889 } 2890 leaf link-layer-type { 2891 type uint16; 2892 mandatory true; 2893 description "*"; 2894 } 2895 leaf link-layer-addr { 2896 type string; 2897 mandatory true; 2898 description "*"; 2899 } 2900 } 2901 } 2902 container identity-associations { 2903 config "false"; 2904 description "IA is a construct through 2905 which a server and a client can identify, 2906 group, and manage a set of related IPv6 2907 addresses. The key of the list is a 2908 4-byte number IAID defined in [RFC3315]."; 2909 list identity-association { 2910 key iaid; 2911 description "*"; 2912 leaf iaid { 2913 type uint32; 2914 mandatory true; 2915 description "*"; 2916 } 2917 leaf ia-type { 2918 type string; 2919 mandatory true; 2920 description "*"; 2921 } 2922 leaf-list ipv6-addr { 2923 type inet:ipv6-address; 2924 description "*"; 2925 } 2926 leaf-list ipv6-prefix { 2927 type inet:ipv6-prefix; 2928 description "*"; 2929 } 2930 leaf-list prefix-length { 2931 type uint8; 2932 description "*"; 2933 } 2934 leaf t1-time { 2935 type yang:date-and-time; 2936 mandatory true; 2937 description "*"; 2938 } 2939 leaf t2-time { 2940 type yang:date-and-time; 2941 mandatory true; 2942 description "*"; 2943 } 2944 leaf preferred-lifetime { 2945 type yang:timeticks; 2946 mandatory true; 2947 description "*"; 2948 } 2949 leaf valid-lifetime { 2950 type yang:timeticks; 2951 mandatory true; 2952 description "*"; 2953 } 2954 } 2955 } 2956 container if-other-paras { 2957 config "false"; 2958 description "A client can obtain 2959 extra configuration data other than 2960 address and prefix information through 2961 DHCPv6. This container describes such 2962 data the client was configured. The 2963 potential configuration data may 2964 include DNS server addresses, SIP 2965 server domain names, etc."; 2966 leaf-list uni-dhcpv6-serv-addr { 2967 type inet:ipv6-address; 2968 description "*"; 2969 } 2970 container dns-paras { 2971 description "*"; 2972 leaf domain-search-list { 2973 type string; 2974 mandatory true; 2975 description "*"; 2976 } 2977 list dns-servers { 2978 key dns-serv-id; 2979 description "*"; 2980 leaf dns-serv-id { 2981 type uint8; 2982 mandatory true; 2983 description "*"; 2984 } 2985 leaf dns-serv-addr { 2986 type inet:ipv6-address; 2987 mandatory true; 2988 description "*"; 2989 } 2990 } 2991 } 2992 container sip-paras { 2993 description "*"; 2994 list sip-servers { 2995 key sip-serv-id; 2996 description "*"; 2997 leaf sip-serv-id { 2998 type uint8; 2999 mandatory true; 3000 description "*"; 3001 } 3002 leaf sip-serv-addr { 3003 type inet:ipv6-address; 3004 mandatory true; 3005 description "*"; 3006 } 3007 leaf sip-serv-domain-name { 3008 type string; 3009 mandatory true; 3010 description "*"; 3011 } 3012 } 3013 } 3014 container nis-paras { 3015 description "*"; 3016 leaf nis-domain-name { 3017 type string; 3018 mandatory true; 3019 description "*"; 3020 } 3021 list nis-server { 3022 key nis-serv-id; 3023 description "*"; 3024 leaf nis-serv-id { 3025 type uint8; 3026 mandatory true; 3027 description "*"; 3028 } 3029 leaf nis-serv-addr { 3030 type inet:ipv6-address; 3031 mandatory true; 3032 description "*"; 3033 } 3034 } 3035 } 3036 container nis-plus-paras { 3037 description "*"; 3038 leaf nis-plus-domain-name { 3039 type string; 3040 mandatory true; 3041 description "*"; 3042 } 3043 list nis-plus-server { 3044 key nis-plus-serv-id; 3045 description "*"; 3046 leaf nis-plus-serv-id { 3047 type uint8; 3048 mandatory true; 3049 description "*"; 3050 } 3051 leaf nis-plus-serv-addr { 3052 type inet:ipv6-address; 3053 mandatory true; 3054 description "*"; 3055 } 3056 } 3057 } 3058 leaf info-refresh-time { 3059 type yang:timeticks; 3060 description "*"; 3061 } 3062 container time-zone-paras { 3063 description "*"; 3064 leaf tz-posix { 3065 type string; 3066 mandatory true; 3067 description "*"; 3068 } 3069 leaf tz-database { 3070 type string; 3071 mandatory true; 3072 description "*"; 3073 } 3074 } 3075 leaf cli-fqdn { 3076 type string; 3077 description "*"; 3078 } 3079 container ntp-paras { 3080 description "*"; 3081 list ntp-server { 3082 key ntp-serv-id; 3083 description "*"; 3084 leaf ntp-serv-id { 3085 type uint8; 3086 mandatory true; 3087 description "*"; 3088 } 3089 leaf ntp-serv-addr { 3090 type inet:ipv6-address; 3091 mandatory true; 3092 description "*"; 3093 } 3094 leaf ntp-serv-mul-addr { 3095 type inet:ipv6-address; 3096 mandatory true; 3097 description "*"; 3098 } 3099 leaf ntp-serv-fqdn { 3100 type string; 3101 mandatory true; 3102 description "*"; 3103 } 3104 } 3105 } 3106 container sntp-paras { 3107 description "*"; 3108 list sntp-server { 3109 key sntp-serv-id; 3110 description "*"; 3111 leaf sntp-serv-id { 3112 type uint8; 3113 mandatory true; 3114 description "*"; 3116 } 3117 leaf sntp-serv-addr { 3118 type inet:ipv6-address; 3119 mandatory true; 3120 description "*"; 3121 } 3122 } 3123 } 3124 container network-boot-paras { 3125 description "*"; 3126 list boot-file { 3127 key boot-file-id; 3128 description "*"; 3129 leaf boot-file-id { 3130 type uint8; 3131 mandatory true; 3132 description "*"; 3133 } 3134 leaf-list suitable-arch-type { 3135 type uint16; 3136 description "*"; 3137 } 3138 leaf-list suitable-net-if { 3139 type uint32; 3140 description "*"; 3141 } 3142 leaf boot-file-url { 3143 type string; 3144 mandatory true; 3145 description "*"; 3146 } 3147 list boot-file-paras { 3148 key para-id; 3149 description "*"; 3150 leaf para-id { 3151 type uint8; 3152 mandatory true; 3153 description "*"; 3154 } 3155 leaf parameter { 3156 type string; 3157 mandatory true; 3158 description "*"; 3159 } 3160 } 3161 } 3162 } 3163 container kerberos-paras { 3164 description "*"; 3165 leaf default-realm-name { 3166 type string; 3167 mandatory true 3168 description "*"; 3169 } 3170 list kdc-info { 3171 key kdc-id; 3172 description "*"; 3173 leaf kdc-id { 3174 type uint8; 3175 mandatory true; 3176 description "*"; 3177 } 3178 leaf priority { 3179 type uint16; 3180 mandatory true; 3181 description "*"; 3182 } 3183 leaf weight { 3184 type uint16; 3185 mandatory true; 3186 description "*"; 3187 } 3188 leaf transport-type { 3189 type uint8; 3190 mandatory true; 3191 description "*"; 3192 } 3193 leaf port-number { 3194 type uint16; 3195 mandatory true; 3196 description "*"; 3197 } 3198 leaf kdc-ipv6-addr { 3199 type inet:ipv6-address; 3200 mandatory true; 3201 description "*"; 3202 } 3203 leaf realm-name { 3204 type string; 3205 mandatory true; 3206 description "*"; 3207 } 3208 } 3209 } 3210 container addr-selection-paras { 3211 description "*"; 3212 leaf automatic-row-add { 3213 type boolean; 3214 mandatory true; 3215 description "*"; 3216 } 3217 leaf prefer-temporary-addr { 3218 type boolean; 3219 mandatory true; 3220 description "*"; 3221 } 3222 list policy-table { 3223 key policy-id; 3224 description "*"; 3225 leaf policy-id { 3226 type uint8; 3227 mandatory true; 3228 description "*"; 3229 } 3230 leaf label { 3231 type uint8; 3232 mandatory true; 3233 description "*"; 3234 } 3235 leaf precedence { 3236 type uint8; 3237 mandatory true; 3238 description "*"; 3239 } 3240 leaf prefix-len { 3241 type uint8; 3242 mandatory true; 3243 description "*"; 3244 } 3245 leaf prefix { 3246 type inet:ipv6-prefix; 3247 mandatory true; 3248 description "*"; 3249 } 3250 } 3251 } 3252 leaf sol-max-rt { 3253 type yang:timeticks; 3254 mandatory true; 3255 description "*"; 3256 } 3257 leaf inf-max-rt { 3258 type yang:timeticks; 3259 mandatory true; 3260 description "*"; 3261 } 3262 container pcp-server-paras { 3263 description "*"; 3264 list pcp-server { 3265 key pcp-serv-id; 3266 description "*"; 3267 leaf pcp-serv-id { 3268 type uint8; 3269 mandatory true; 3270 description "*"; 3271 } 3272 leaf pcp-serv-addr { 3273 type inet:ipv6-address; 3274 mandatory true; 3275 description "*"; 3276 } 3277 } 3278 } 3279 container s46-rule-paras { 3280 description "*"; 3281 list s46-rule { 3282 key rule-id; 3283 description "*"; 3284 leaf rule-id { 3285 type uint8; 3286 mandatory true; 3287 description "*"; 3288 } 3289 leaf rule-type { 3290 type enumeration { 3291 enum "BMR"; 3292 enum "FMR"; 3293 } 3294 mandatory true; 3295 description "*"; 3296 } 3297 leaf ea-len { 3298 type uint8; 3299 mandatory true; 3300 description "*"; 3301 } 3302 leaf prefix4-len { 3303 type uint8; 3304 mandatory true; 3305 description "*"; 3306 } 3307 leaf ipv4-prefix { 3308 type inet:ipv4-prefix; 3309 mandatory true; 3310 description "*"; 3311 } 3312 leaf prefix6-len { 3313 type uint8; 3314 mandatory true; 3315 description "*"; 3316 } 3317 leaf ipv6-prefix { 3318 type inet:ipv6-prefix; 3319 mandatory true; 3320 description "*"; 3321 } 3322 uses portset-para; 3323 } 3324 } 3325 container s46-br-paras { 3326 description "*"; 3327 list br { 3328 key br-id; 3329 description "*"; 3330 leaf br-id { 3331 type uint8; 3332 mandatory true; 3333 description "*"; 3334 } 3335 leaf br-ipv6-addr { 3336 type inet:ipv6-address; 3337 mandatory true; 3338 description "*"; 3339 } 3340 } 3341 } 3342 container s46-dmr-paras { 3343 description "*"; 3344 list dmr { 3345 key dmr-id; 3346 description "*"; 3347 leaf dmr-id { 3348 type uint8; 3349 mandatory true; 3350 description "*"; 3351 } 3352 leaf dmr-prefix-len { 3353 type uint8; 3354 mandatory true; 3355 description "*"; 3357 } 3358 leaf dmr-ipv6-prefix { 3359 type inet:ipv6-prefix; 3360 mandatory true; 3361 description "*"; 3362 } 3363 } 3364 } 3365 container s46-v4-v6-binding-paras { 3366 description "*"; 3367 leaf ipv4-addr { 3368 type inet:ipv4-address; 3369 mandatory true; 3370 description "*"; 3371 } 3372 leaf bind-prefix6-len { 3373 type uint8; 3374 mandatory true; 3375 description "*"; 3376 } 3377 uses portset-para; 3378 leaf erp-local-domain-name { 3379 type string; 3380 mandatory true; 3381 description "*"; 3382 } 3383 } 3384 container supported-options { 3385 description "*"; 3386 list supported-option { 3387 key option-code; 3388 description "*"; 3389 leaf option-code { 3390 type uint16; 3391 mandatory true; 3392 description "*"; 3393 } 3394 leaf description { 3395 type string; 3396 mandatory true; 3397 description "*"; 3398 } 3399 } 3400 } 3401 } 3402 container packet-stats { 3403 config "false"; 3404 description "A container records 3405 all the packet status information 3406 of a specific interface."; 3407 leaf solicit-count { 3408 type uint32; 3409 mandatory true; 3410 description "*"; 3411 } 3412 leaf request-count { 3413 type uint32; 3414 mandatory true; 3415 description "*"; 3416 } 3417 leaf renew-count { 3418 type uint32; 3419 mandatory true; 3420 description "*"; 3421 } 3422 leaf rebind-count { 3423 type uint32; 3424 mandatory true; 3425 description "*"; 3426 } 3427 leaf decline-count { 3428 type uint32; 3429 mandatory true; 3430 description "*"; 3431 } 3432 leaf release-count { 3433 type uint32; 3434 mandatory true; 3435 description "*"; 3436 } 3437 leaf info-req-count { 3438 type uint32; 3439 mandatory true; 3440 description "*"; 3441 } 3442 leaf advertise-count { 3443 type uint32; 3444 mandatory true; 3445 description "*"; 3446 } 3447 leaf confirm-count { 3448 type uint32; 3449 mandatory true; 3450 description "*"; 3451 } 3452 leaf reply-count { 3453 type uint32; 3454 mandatory true; 3455 description "*"; 3456 } 3457 leaf reconfigure-count { 3458 type uint32; 3459 mandatory true; 3460 description "*"; 3461 } 3462 } 3463 } 3464 } 3465 } 3467 /* 3468 * Notifications 3469 */ 3471 notification notifications { 3472 container dhcpv6-server-event { 3473 if-feature dhcpv6-server; 3474 description "server portion"; 3475 container pool-running-out { 3476 description "raised when the address/prefix pool is going to 3477 run out. A threshold for utilization ratio of the pool has been 3478 defined in the server feature so that it will notify the 3479 administrator when the utilization ratio reaches the threshold, 3480 and such threshold is a settable parameter"; 3481 leaf utilization-ratio { 3482 type uint16; 3483 mandatory true; 3484 description "*"; 3485 } 3486 leaf duid { 3487 type duidtype; 3488 mandatory true; 3489 description "DHCP Unique 3490 Identifer"; 3491 } 3492 leaf serv-name { 3493 type string; 3494 description "*"; 3495 } 3496 leaf pool-name { 3497 type string; 3498 mandatory true; 3499 description "*"; 3500 } 3502 } 3503 container invalid-client-detected { 3504 description "raised when the server has found a client 3505 which can be regarded as a potential attacker. Some 3506 description could also be included."; 3507 leaf duid { 3508 type duidtype; 3509 mandatory true; 3510 description "DHCP Unique 3511 Identifer"; 3512 } 3513 leaf description { 3514 type string; 3515 description "*"; 3516 } 3517 } 3518 } 3519 container dhcpv6-relay-event { 3520 if-feature dhcpv6-relay; 3521 description "relay portion"; 3522 container topo-changed { 3523 description "raised when the topology 3524 of the relay agent is changed."; 3525 leaf relay-if-name { 3526 type string; 3527 mandatory true; 3528 description "*"; 3529 } 3530 leaf first-hop { 3531 type boolean; 3532 mandatory true; 3533 description "*"; 3534 } 3535 leaf last-entity-addr { 3536 type inet:ipv6-address; 3537 mandatory true; 3538 description "*"; 3539 } 3540 } 3541 } 3542 container dhcpv6-client-event { 3543 if-feature dhcpv6-client; 3544 description "client portion"; 3545 container ia-lease-event { 3546 description "raised when the 3547 client was allocated a new IA from 3548 the server or it renew/rebind/release 3549 its current IA"; 3550 leaf event-type { 3551 type enumeration{ 3552 enum "allocation"; 3553 enum "rebind"; 3554 enum "renew"; 3555 enum "release"; 3556 } 3557 mandatory true; 3558 description "*"; 3559 } 3560 leaf duid { 3561 type duidtype; 3562 mandatory true; 3563 description "DHCP Unique 3564 Identifer"; 3565 } 3566 leaf iaid { 3567 type uint32; 3568 mandatory true; 3569 description "*"; 3570 } 3571 leaf serv-name { 3572 type string; 3573 description "*"; 3574 } 3575 leaf description { 3576 type string; 3577 description "*"; 3578 } 3579 } 3580 container invalid-ia-detected { 3581 description "raised when the identity 3582 association of the client can be proved 3583 to be invalid. Possible condition includes 3584 duplicated address, illegal address, etc."; 3585 leaf duid { 3586 type duidtype; 3587 mandatory true; 3588 description "DHCP Unique 3589 Identifer"; 3590 } 3591 leaf cli-duid { 3592 type uint32; 3593 mandatory true; 3594 description "*"; 3595 } 3596 leaf iaid { 3597 type uint32; 3598 mandatory true; 3599 description "*"; 3600 } 3601 leaf serv-name { 3602 type string; 3603 description "*"; 3604 } 3605 leaf description { 3606 type string; 3607 description "*"; 3608 } 3609 } 3610 container retransmission-failed { 3611 description "raised when the retransmission 3612 mechanism defined in [RFC3315] is failed."; 3613 uses duid-para; 3614 leaf description { 3615 type enumeration { 3616 enum "MRC failed"; 3617 enum "MRD failed"; 3618 } 3619 mandatory true; 3620 description "*"; 3621 } 3622 } 3623 container failed-status-turn-up { 3624 description "raised when the client receives 3625 a message includes an unsuccessful Status Code 3626 option."; 3627 leaf duid { 3628 type duidtype; 3629 mandatory true; 3630 description "DHCP Unique 3631 Identifer"; 3632 } 3633 leaf status-code { 3634 type enumeration { 3635 enum "1" { 3636 description "UnspecFail"; 3637 } 3638 enum "2" { 3639 description "NoAddrAvail"; 3640 } 3641 enum "3" { 3642 description "NoBinding"; 3643 } 3644 enum "4" { 3645 description "NotOnLink"; 3647 } 3648 enum "5" { 3649 description "UseMulticast"; 3650 } 3651 } 3652 mandatory true; 3653 description "*"; 3654 } 3655 } 3656 } 3657 } 3658 } 3659 3661 5. Security Considerations (TBD) 3663 TBD 3665 6. IANA Considerations (TBD) 3667 TBD 3669 7. Acknowledgements 3671 The authors would like to thank Qi Sun, Lishan Li and Sladjana Zoric 3672 for their valuable contributions to this work. 3674 8. References 3676 8.1. Normative References 3678 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 3679 Requirement Levels", BCP 14, RFC 2119, 3680 DOI 10.17487/RFC2119, March 1997, 3681 . 3683 [RFC3315] Droms, R., Ed., Bound, J., Volz, B., Lemon, T., Perkins, 3684 C., and M. Carney, "Dynamic Host Configuration Protocol 3685 for IPv6 (DHCPv6)", RFC 3315, DOI 10.17487/RFC3315, July 3686 2003, . 3688 [RFC3633] Troan, O. and R. Droms, "IPv6 Prefix Options for Dynamic 3689 Host Configuration Protocol (DHCP) version 6", RFC 3633, 3690 DOI 10.17487/RFC3633, December 2003, 3691 . 3693 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 3694 the Network Configuration Protocol (NETCONF)", RFC 6020, 3695 DOI 10.17487/RFC6020, October 2010, 3696 . 3698 [RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG 3699 Data Model Documents", RFC 6087, DOI 10.17487/RFC6087, 3700 January 2011, . 3702 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 3703 RFC 6991, DOI 10.17487/RFC6991, July 2013, 3704 . 3706 8.2. Informative References 3708 [RFC3319] Schulzrinne, H. and B. Volz, "Dynamic Host Configuration 3709 Protocol (DHCPv6) Options for Session Initiation Protocol 3710 (SIP) Servers", RFC 3319, DOI 10.17487/RFC3319, July 2003, 3711 . 3713 [RFC3646] Droms, R., Ed., "DNS Configuration options for Dynamic 3714 Host Configuration Protocol for IPv6 (DHCPv6)", RFC 3646, 3715 DOI 10.17487/RFC3646, December 2003, 3716 . 3718 [RFC3898] Kalusivalingam, V., "Network Information Service (NIS) 3719 Configuration Options for Dynamic Host Configuration 3720 Protocol for IPv6 (DHCPv6)", RFC 3898, 3721 DOI 10.17487/RFC3898, October 2004, 3722 . 3724 [RFC4075] Kalusivalingam, V., "Simple Network Time Protocol (SNTP) 3725 Configuration Option for DHCPv6", RFC 4075, 3726 DOI 10.17487/RFC4075, May 2005, 3727 . 3729 [RFC4242] Venaas, S., Chown, T., and B. Volz, "Information Refresh 3730 Time Option for Dynamic Host Configuration Protocol for 3731 IPv6 (DHCPv6)", RFC 4242, DOI 10.17487/RFC4242, November 3732 2005, . 3734 [RFC4704] Volz, B., "The Dynamic Host Configuration Protocol for 3735 IPv6 (DHCPv6) Client Fully Qualified Domain Name (FQDN) 3736 Option", RFC 4704, DOI 10.17487/RFC4704, October 2006, 3737 . 3739 [RFC4833] Lear, E. and P. Eggert, "Timezone Options for DHCP", 3740 RFC 4833, DOI 10.17487/RFC4833, April 2007, 3741 . 3743 [RFC5908] Gayraud, R. and B. Lourdelet, "Network Time Protocol (NTP) 3744 Server Option for DHCPv6", RFC 5908, DOI 10.17487/RFC5908, 3745 June 2010, . 3747 [RFC5970] Huth, T., Freimann, J., Zimmer, V., and D. Thaler, "DHCPv6 3748 Options for Network Boot", RFC 5970, DOI 10.17487/RFC5970, 3749 September 2010, . 3751 [RFC6334] Hankins, D. and T. Mrugalski, "Dynamic Host Configuration 3752 Protocol for IPv6 (DHCPv6) Option for Dual-Stack Lite", 3753 RFC 6334, DOI 10.17487/RFC6334, August 2011, 3754 . 3756 [RFC6422] Lemon, T. and Q. Wu, "Relay-Supplied DHCP Options", 3757 RFC 6422, DOI 10.17487/RFC6422, December 2011, 3758 . 3760 [RFC6440] Zorn, G., Wu, Q., and Y. Wang, "The EAP Re-authentication 3761 Protocol (ERP) Local Domain Name DHCPv6 Option", RFC 6440, 3762 DOI 10.17487/RFC6440, December 2011, 3763 . 3765 [RFC6784] Sakane, S. and M. Ishiyama, "Kerberos Options for DHCPv6", 3766 RFC 6784, DOI 10.17487/RFC6784, November 2012, 3767 . 3769 [RFC6939] Halwasia, G., Bhandari, S., and W. Dec, "Client Link-Layer 3770 Address Option in DHCPv6", RFC 6939, DOI 10.17487/RFC6939, 3771 May 2013, . 3773 [RFC7078] Matsumoto, A., Fujisaki, T., and T. Chown, "Distributing 3774 Address Selection Policy Using DHCPv6", RFC 7078, 3775 DOI 10.17487/RFC7078, January 2014, 3776 . 3778 [RFC7083] Droms, R., "Modification to Default Values of SOL_MAX_RT 3779 and INF_MAX_RT", RFC 7083, DOI 10.17487/RFC7083, November 3780 2013, . 3782 [RFC7291] Boucadair, M., Penno, R., and D. Wing, "DHCP Options for 3783 the Port Control Protocol (PCP)", RFC 7291, 3784 DOI 10.17487/RFC7291, July 2014, 3785 . 3787 [RFC7598] Mrugalski, T., Troan, O., Farrer, I., Perreault, S., Dec, 3788 W., Bao, C., Yeh, L., and X. Deng, "DHCPv6 Options for 3789 Configuration of Softwire Address and Port-Mapped 3790 Clients", RFC 7598, DOI 10.17487/RFC7598, July 2015, 3791 . 3793 Authors' Addresses 3795 Yong Cui 3796 Tsinghua University 3797 Beijing 100084 3798 P.R.China 3800 Phone: +86-10-6260-3059 3801 Email: yong@csnet1.cs.tsinghua.edu.cn 3803 Hao Wang 3804 Tsinghua University 3805 Beijing 100084 3806 P.R.China 3808 Phone: +86-10-6278-5822 3809 Email: wangh13@mails.tsinghua.edu.cn 3811 Linhui Sun 3812 Tsinghua University 3813 Beijing 100084 3814 P.R.China 3816 Phone: +86-10-6278-5822 3817 Email: lh.sunlinh@gmail.com 3819 Ted Lemon 3820 Nominum, Inc. 3821 950 Charter St. 3822 Redwood City, CA 94043 3823 USA 3825 Email: Ted.Lemon@nominum.com 3826 Ian Farrer 3827 Deutsche Telekom AG 3828 CTO-ATI, Landgrabenweg 151 3829 Bonn, NRW 53227 3830 Germany 3832 Email: ian.farrer@telekom.de