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