idnits 2.17.1 draft-ietf-ospf-yang-07.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 document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 312 has weird spacing: '...-rw tag uin...' == Line 430 has weird spacing: '...area-id are...' -- The document date (March 13, 2017) is 2595 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- ** Obsolete normative reference: RFC 7223 (Obsoleted by RFC 8343) ** Obsolete normative reference: RFC 8022 (Obsoleted by RFC 8349) == Outdated reference: A later version (-24) exists of draft-ietf-rtgwg-yang-key-chain-15 Summary: 3 errors (**), 0 flaws (~~), 4 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet D. Yeung 3 Internet-Draft Arrcus 4 Intended status: Informational Y. Qu 5 Expires: September 14, 2017 Huawei 6 J. Zhang 7 Juniper Networks 8 I. Chen 9 Jabil 10 A. Lindem 11 Cisco Systems 12 March 13, 2017 14 Yang Data Model for OSPF Protocol 15 draft-ietf-ospf-yang-07 17 Abstract 19 This document defines a YANG data model that can be used to configure 20 and manage OSPF. 22 Status of This Memo 24 This Internet-Draft is submitted in full conformance with the 25 provisions of BCP 78 and BCP 79. 27 Internet-Drafts are working documents of the Internet Engineering 28 Task Force (IETF). Note that other groups may also distribute 29 working documents as Internet-Drafts. The list of current Internet- 30 Drafts is at http://datatracker.ietf.org/drafts/current/. 32 Internet-Drafts are draft documents valid for a maximum of six months 33 and may be updated, replaced, or obsoleted by other documents at any 34 time. It is inappropriate to use Internet-Drafts as reference 35 material or to cite them other than as "work in progress." 37 This Internet-Draft will expire on September 14, 2017. 39 Copyright Notice 41 Copyright (c) 2017 IETF Trust and the persons identified as the 42 document authors. All rights reserved. 44 This document is subject to BCP 78 and the IETF Trust's Legal 45 Provisions Relating to IETF Documents 46 (http://trustee.ietf.org/license-info) in effect on the date of 47 publication of this document. Please review these documents 48 carefully, as they describe your rights and restrictions with respect 49 to this document. Code Components extracted from this document must 50 include Simplified BSD License text as described in Section 4.e of 51 the Trust Legal Provisions and are provided without warranty as 52 described in the Simplified BSD License. 54 Table of Contents 56 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 57 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 58 2. Design of Data Model . . . . . . . . . . . . . . . . . . . . 3 59 2.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3 60 2.2. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 5 61 2.3. Optional Features . . . . . . . . . . . . . . . . . . . . 5 62 2.4. Inheritance . . . . . . . . . . . . . . . . . . . . . . . 5 63 2.5. OSPF Router Configuration . . . . . . . . . . . . . . . . 5 64 2.6. OSPF Instance Configuration . . . . . . . . . . . . . . . 6 65 2.7. OSPF Area Configuration . . . . . . . . . . . . . . . . . 7 66 2.8. OSPF Interface Configuration . . . . . . . . . . . . . . 9 67 2.9. OSPF notification . . . . . . . . . . . . . . . . . . . . 11 68 2.10. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 15 69 3. OSPF Yang Module . . . . . . . . . . . . . . . . . . . . . . 15 70 4. Security Considerations . . . . . . . . . . . . . . . . . . . 95 71 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 95 72 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 96 73 6.1. Normative References . . . . . . . . . . . . . . . . . . 96 74 6.2. Informative References . . . . . . . . . . . . . . . . . 97 75 Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 98 76 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 98 78 1. Overview 80 YANG [RFC6020] is a data definition language used to define the 81 contents of a conceptual data store that allows networked devices to 82 be managed using NETCONF [RFC6241]. YANG is proving relevant beyond 83 its initial confines, as bindings to other interfaces (e.g., ReST) 84 and encodings other than XML (e.g., JSON) are being defined. 85 Furthermore, YANG data models can be used as the basis for 86 implementation of other interfaces, such as CLI and programmatic 87 APIs. 89 This document defines a YANG data model that can be used to configure 90 and manage OSPF and it is an augmentation to the core routing data 91 model. A core routing data model is defined in [RFC8022], and it 92 provides the basis for the development of data models for routing 93 protocols. The interface data model is defined in [RFC7223] and is 94 used for referencing interfaces from the routing protocol. The key- 95 chain data model used for OSPF authentication is defined in 97 [I-D.ietf-rtgwg-yang-key-chain] and provides both a reference to 98 configured key-chains and an enumeration of cryptographic algorithms. 100 Both OSPFv2 [RFC2328] and OSPFv3 [RFC5340] are supported. In 101 addition to the core OSPF protocol, features described in other OSPF 102 RFCs are also supported. These includes demand circuit [RFC1793], 103 traffic engineering [RFC3630], multiple address family [RFC5838], 104 graceful restart [RFC3623] [RFC5187], NSSA [RFC3101], and OSPF(v3) as 105 a PE-CE Protocol [RFC4577], [RFC6565]. These non-core features are 106 optional in the OSPF data model. 108 1.1. Requirements Language 110 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 111 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 112 document are to be interpreted as described in [RFC2119]. 114 2. Design of Data Model 116 Although the basis of OSPF configuration elements like routers, 117 areas, and interfaces remains the same, the detailed configuration 118 model varies among router vendors. Differences are observed in terms 119 of how the protocol engine is tied to the routing domain, how 120 multiple protocol engines are be instantiated, and configuration 121 inheritance, among others. 123 The goal of this document is to define a data model that provides a 124 common user interface to the OSPFv2 and OSPFv3 protocols. There is 125 very little information that is designated as "mandatory", providing 126 freedom for vendors to adapt this data model to their respective 127 product implementations. 129 2.1. Overview 131 The OSPF YANG module defined in this document has all the common 132 building blocks for the OSPF protocol. 134 The OSPF YANG module augments the /routing/control-plane-protocols/ 135 control-plane-protocol path defined in the ietf-routing module. 137 module: ietf-ospf 138 augment /rt:routing/rt:control-plane-protocols/ 139 rt:control-plane-protocol: 140 +--rw ospf 141 +--rw all-instances-inherit {instance-inheritance}? 142 . 143 . 144 +--rw operation-mode? identityref 145 +--rw instance* [af] 146 . 147 . 148 +--rw areas 149 | +--rw area* [area-id] 150 | +--rw area-id area-id-type 151 | +--rw all-interfaces-inherit {interface-inheritance}? 152 | . 153 | . 154 | +--rw virtual-links 155 | | +--rw virtual-link* [transit-area-id router-id] 156 | | . 157 | | . 158 | +--rw sham-links {pe-ce-protocol}? 159 | | +--rw sham-link* [local-id remote-id] 160 | | . 161 | | . 162 | +--rw interfaces 163 | +--rw interface* [name] 164 | . 165 | . 166 +--rw topologies {multi-topology}? 167 +--rw topology* [name] 168 . 169 . 171 The ospf module is intended to match to the vendor specific OSPF 172 configuration construct that is identified by the local identifier 173 'name'. The field 'version' allows support for OSPFv2 and OSPFv3. 175 The ospf container includes one or more OSPF protocol engines, each 176 enclosed in a separate instance entity. Each instance includes 177 information for the routing domain based on the [routing-instance af] 178 specification. There is no default routing domain assumed by the 179 data model. For example, to enable OSPF on a vendor's default IPv4 180 routing domain, an explicit instance entity with a specification like 181 ["default" "ipv4-unicast"] is required. The instance also contains 182 OSPF router level configuration 183 The instance/area and instance/area/interface containers respectively 184 define the OSPF configuration for OSPF areas and interfaces. 186 The instance/topology container defines the OSPF configuration for 187 OSPF topologies when the multi-topology feature is supported. 189 2.2. OSPFv2 and OSPFv3 191 The data model defined herein supports both OSPFv2 and OSPFv3. 193 The field 'version' is used to indicate the OSPF version and is 194 mandatory. Based on the configured version, the data model varies to 195 accommodate the differences between OSPFv2 and OSPFv3. 197 2.3. Optional Features 199 Optional features are beyond the basic OSPF configuration and it is 200 the responsibility of each vendor to decide whether to support a 201 given feature on a particular device. 203 This model defines a number of features, such as NSR, max-LSA, etc. 204 It is expected that vendors will support additional features through 205 vendor specific augmentations. 207 2.4. Inheritance 209 This data model supports configuration inheritance at different 210 levels including instance-level, area-level, and interface-level 211 inheritance. 213 The all-instances-inherit, all-areas-inherit, and all-interfaces- 214 inherit containers are defined to provide a consistent way to 215 configure inheritable configuration parameters. For example, 216 parameters defined in the all-instances-inherit container apply to 217 all OSPF instances. However, a particular instance configuration can 218 include leaves that override this inheritance. 220 Inheritance is defined as an optional feature, and vendors are 221 permitted to augment the inheritance containers with their own vendor 222 specific parameters. 224 2.5. OSPF Router Configuration 226 The ospf container is the top level container in this data model. It 227 contains shared information among the OSPF instances configured 228 within the container. 230 module: ietf-ospf 231 augment /rt:routing/rt:control-plane-protocols/ 232 rt:control-plane-protocol: 233 +--rw ospf 234 +--rw all-instances-inherit {instance-inheritance}? 235 | +--rw area 236 | +--rw interface 237 +--rw operation-mode? identityref 238 +--rw instance* [af] 239 . 240 . 242 2.6. OSPF Instance Configuration 244 The instance container represents an OSPF protocol engine and 245 contains the router level configuration. The routing domain for each 246 instance is dictated through the specification of [routing-instance 247 af]. 249 The all-areas-inherit container contains area configuration that may 250 be inherited by configured OSPF areas in the OSPF instance. 252 module: ietf-ospf 253 augment /rt:routing/rt:control-plane-protocols/ 254 rt:control-plane-protocol: 255 +--rw ospf 256 . 257 . 258 +--rw instance* [af] 259 +--rw af identityref 260 +--rw all-areas-inherit {area-inheritance}? 261 | +--rw area 262 | +--rw interface 263 +--rw explicit-router-id? rt-types:router-id 264 | {explicit-router-id}? 265 +--rw preference 266 | +--rw (scope)? 267 | +--:(single-value) 268 | | +--rw all? uint8 269 | +--:(multi-values) 270 | +--rw (granularity)? 271 | | +--:(detail) 272 | | | +--rw intra-area? uint8 273 | | | +--rw inter-area? uint8 274 | | +--:(coarse) 275 | | +--rw internal? uint8 276 | +--rw external? uint8 277 +--rw nsr {nsr}? 278 | +--rw enable? boolean 279 +--rw graceful-restart {graceful-restart}? 280 | +--rw enable? boolean 281 | +--rw helper-enable? boolean 282 | +--rw restart-interval? uint16 283 | +--rw helper-strict-lsa-checking? boolean 284 +--rw enable? boolean {admin-control}? 285 +--rw auto-cost {auto-cost}? 286 | +--rw enable? boolean 287 | +--rw reference-bandwidth? uint32 288 +--rw spf-control 289 | +--rw paths? uint16 {max-ecmp}? 290 | +--rw ietf-spf-delay {ietf-spf-delay}? 291 | +--rw initial-delay? uint16 292 | +--rw short-delay? uint16 293 | +--rw long-delay? uint16 294 | +--rw hold-down? uint16 295 | +--rw time-to-learn? uint16 296 +--rw database-control 297 | +--rw max-lsa? uint32 {max-lsa}? 298 +--rw stub-router {stub-router}? 299 | +--rw (trigger)? 300 | +--:(always) 301 | +--rw always! 302 +--rw mpls 303 | +--rw te-rid {te-rid}? 304 | | +--rw ipv4-router-id? inet:ipv4-address 305 | | +--rw ipv6-router-id? inet:ipv6-address 306 | +--rw ldp 307 | +--rw igp-sync? boolean {ldp-igp-sync}? 308 +--rw fast-reroute {fast-reroute}? 309 | +--rw lfa {lfa}? 310 +--rw node-tags {node-tag}? 311 | +--rw node-tag* [tag] 312 | +--rw tag uint32 313 . 314 . 316 2.7. OSPF Area Configuration 318 The area container contains OSPF area configuration and the list of 319 interface containers representing all the OSPF interfaces in the 320 area. 322 The all-interfaces-inherit contains interface configuration that may 323 be inherited by all OSPF area interfaces. 325 module: ietf-ospf 326 augment /rt:routing/rt:control-plane-protocols/ 327 rt:control-plane-protocol: 328 +--rw ospf 329 . 330 . 331 +--rw instance* [af] 332 +--rw areas 333 | +--rw area* [area-id] 334 | +--rw area-id area-id-type 335 | +--rw all-interfaces-inherit {interface-inheritance}? 336 | | +--rw interface 337 | +--rw area-type? identityref 338 | +--rw summary? boolean 339 | +--rw default-cost? uint32 340 | +--rw ranges 341 | | +--rw range* [prefix] 342 | | +--rw prefix inet:ip-prefix 343 | | +--rw advertise? boolean 344 | | +--rw cost? uint24 345 | +--rw virtual-links 346 | | +--rw virtual-link* [transit-area-id router-id] 347 | | +--rw transit-area-id -> ../../../area-id 348 | | +--rw router-id rt-types:router-id 349 | | +--rw hello-interval? uint16 350 | | +--rw dead-interval? uint32 351 | | +--rw retransmit-interval? uint16 352 | | +--rw transmit-delay? uint16 353 | | +--rw lls? boolean {lls}? 354 | | +--rw ttl-security {ttl-security}? 355 | | | +--rw enable? boolean 356 | | | +--rw hops? uint8 357 | | +--rw enable? boolean 358 | | {admin-control}? 359 | | +--rw authentication 360 | | +--rw (auth-type-selection)? 361 | | +--:(auth-ipsec) 362 | | {ospfv3-authentication-ipsec}? 363 | | | +--rw sa? string 364 | | +--:(auth-trailer-key-chain) 365 | | | +--rw key-chain? 366 | | key-chain:key-chain-ref 367 | | +--:(auth-trailer-key) 368 | | +--rw key? string 369 | | +--rw crypto-algorithm? identityref 370 | +--rw sham-links {pe-ce-protocol}? 371 | | +--rw sham-link* [local-id remote-id] 372 | | +--rw local-id inet:ip-address 373 | | +--rw remote-id inet:ip-address 374 | | +--rw hello-interval? uint16 375 | | +--rw dead-interval? uint32 376 | | +--rw retransmit-interval? uint16 377 | | +--rw transmit-delay? uint16 378 | | +--rw lls? boolean {lls}? 379 | | +--rw ttl-security {ttl-security}? 380 | | | +--rw enable? boolean 381 | | | +--rw hops? uint8 382 | | +--rw enable? boolean 383 | | {admin-control}? 384 | | +--rw authentication 385 | | | +--rw (auth-type-selection)? 386 | | | +--:(auth-ipsec) 387 | | | {ospfv3-authentication-ipsec}? 388 | | | | +--rw sa? string 389 | | | +--:(auth-trailer-key-chain) 390 | | | | +--rw key-chain? 391 | | | key-chain:key-chain-ref 392 | | | +--:(auth-trailer-key) 393 | | | +--rw key? string 394 | | | +--rw crypto-algorithm? identityref 395 | | +--rw cost? uint16 396 | | +--rw mtu-ignore? boolean 397 | | {mtu-ignore}? 398 | | +--rw prefix-suppression? boolean 399 | | {prefix-suppression}? 400 . . 401 . . 403 2.8. OSPF Interface Configuration 405 The interface container contains OSPF interface configuration. 407 module: ietf-ospf 408 augment /rt:routing/rt:control-plane-protocols/ 409 rt:control-plane-protocol: 410 +--rw ospf 411 . 412 . 413 +--rw instance* [af] 414 . 415 . 416 +--rw areas 417 | +--rw area* [area-id] 418 | . 419 | . 420 | +--rw interfaces 421 | +--rw interface* [name] 422 | +--rw name if:interface-ref 423 | +--rw interface-type? enumeration 424 | +--rw passive? boolean 425 | +--rw demand-circuit? boolean 426 | {demand-circuit}? 427 | +--rw priority? uint8 428 | +--rw multi-areas {multi-area-adj}? 429 | | +--rw multi-area* [multi-area-id] 430 | | +--rw multi-area-id area-id-type 431 | | +--rw cost? uint16 432 | +--rw static-neighbors 433 | | +--rw neighbor* [identifier] 434 | | +--rw identifier inet:ip-address 435 | | +--rw cost? uint16 436 | | +--rw poll-interval? uint16 437 | | +--rw priority? uint8 438 | +--rw node-flag? boolean 439 | {node-flag}? 440 | +--rw bfd {bfd}? 441 | | +--rw enable? boolean 442 | +--rw fast-reroute {fast-reroute}? 443 | | +--rw lfa {lfa}? 444 | | +--rw candidate-enable? boolean 445 | | +--rw enable? boolean 446 | | +--rw remote-lfa {remote-lfa}? 447 | | +--rw enable? boolean 448 | +--rw hello-interval? uint16 449 | +--rw dead-interval? uint32 450 | +--rw retransmit-interval? uint16 451 | +--rw transmit-delay? uint16 452 | +--rw lls? boolean {lls}? 453 | +--rw ttl-security {ttl-security}? 454 | | +--rw enable? boolean 455 | | +--rw hops? uint8 456 | +--rw enable? boolean 457 | {admin-control}? 458 | +--rw authentication 459 | | +--rw (auth-type-selection)? 460 | | +--:(auth-ipsec) 461 | | | {ospfv3-authentication-ipsec}? 462 | | | +--rw sa? string 463 | | +--:(auth-trailer-key-chain) 464 | | | +--rw key-chain? 465 | | | key-chain:key-chain-ref 466 | | +--:(auth-trailer-key) 467 | | +--rw key? string 468 | | +--rw crypto-algorithm? identityref 469 | +--rw cost? uint16 470 | +--rw mtu-ignore? boolean 471 | | {mtu-ignore}? 472 | +--rw prefix-suppression? boolean 473 | | {prefix-suppression}? 474 | +--rw topologies {ospf:multi-topology}? 475 | | +--rw topology* [name] 476 | | +--rw name -> ../../../../../../../../ 477 | | ../../../rt:ribs/rib/name 478 | | +--rw cost? uint32 479 | +--rw instance-id? uint8 480 . 481 . 483 2.9. OSPF notification 485 This YANG model defines a list of notifications that inform YANG 486 clients of important events detected during protocol operation. The 487 defined notifications cover the common set of traps from the OSPFv2 488 MIB [RFC4750] and OSPFv3 MIB [RFC5643]. 490 notifications: 491 +---n if-state-change 492 | +--ro routing-protocol-name? 493 | + -> /rt:routing/control-plane-protocols/ 494 | + control-plane-protocol/name 495 | +--ro af? 496 | + -> /rt:routing/control-plane-protocols/ 497 | + control-plane-protocol 498 | + [rt:name=current()/../routing-protocol-name]/ 499 | + ospf:ospf/instance/af 500 | +--ro (if-link-type-selection)? 501 | | +--:(interface) 502 | | | +--ro interface 503 | | | +--ro interface? if:interface-ref 504 | | +--:(virtual-link) 505 | | | +--ro virtual-link 506 | | | +--ro transit-area-id? area-id-type 507 | | | +--ro neighbor-router-id? rt-types:router-id 508 | | +--:(sham-link) 509 | | +--ro sham-link 510 | | +--ro area-id? area-id-type 511 | | +--ro local-ip-addr? inet:ip-address 512 | | +--ro remote-ip-addr? inet:ip-address 513 | +--ro state? if-state-type 514 +---n if-config-error 515 | +--ro routing-protocol-name? 516 | + -> /rt:routing/control-plane-protocols/ 517 | + control-plane-protocol/name 518 | +--ro af? 519 | + -> /rt:routing/control-plane-protocols/ 520 | + control-plane-protocol 521 | + [rt:name=current()/../routing-protocol-name]/ 522 | + ospf:ospf/instance/af 523 | +--ro (if-link-type-selection)? 524 | | +--:(interface) 525 | | | +--ro interface 526 | | | +--ro interface? if:interface-ref 527 | | +--:(virtual-link) 528 | | | +--ro virtual-link 529 | | | +--ro transit-area-id? area-id-type 530 | | | +--ro neighbor-router-id? rt-types:router-id 531 | | +--:(sham-link) 532 | | +--ro sham-link 533 | | +--ro area-id? area-id-type 534 | | +--ro local-ip-addr? inet:ip-address 535 | | +--ro remote-ip-addr? inet:ip-address 536 | +--ro packet-source? yang:dotted-quad 537 | +--ro packet-type? packet-type 538 | +--ro error? enumeration 539 +---n nbr-state-change 540 | +--ro routing-protocol-name? 541 | + -> /rt:routing/control-plane-protocols/ 542 | + control-plane-protocol/name 543 | +--ro af? 544 | + -> /rt:routing/control-plane-protocols/ 545 | + control-plane-protocol 546 | + [rt:name=current()/../routing-protocol-name]/ 547 | + ospf:ospf/instance/af 548 | +--ro (if-link-type-selection)? 549 | | +--:(interface) 550 | | | +--ro interface 551 | | | +--ro interface? if:interface-ref 552 | | +--:(virtual-link) 553 | | | +--ro virtual-link 554 | | | +--ro transit-area-id? area-id-type 555 | | | +--ro neighbor-router-id? rt-types:router-id 556 | | +--:(sham-link) 557 | | +--ro sham-link 558 | | +--ro area-id? area-id-type 559 | | +--ro local-ip-addr? inet:ip-address 560 | | +--ro remote-ip-addr? inet:ip-address 561 | +--ro neighbor-router-id? rt-types:router-id 562 | +--ro neighbor-ip-addr? yang:dotted-quad 563 | +--ro state? nbr-state-type 564 +---n nbr-restart-helper-status-change 565 | +--ro routing-protocol-name? 566 | + -> /rt:routing/control-plane-protocols/ 567 | + control-plane-protocol/name 568 | +--ro af? 569 | + -> /rt:routing/control-plane-protocols/ 570 | + control-plane-protocol 571 | + [rt:name=current()/../routing-protocol-name]/ 572 | + ospf:ospf/instance/af 573 | +--ro (if-link-type-selection)? 574 | | +--:(interface) 575 | | | +--ro interface 576 | | | +--ro interface? if:interface-ref 577 | | +--:(virtual-link) 578 | | | +--ro virtual-link 579 | | | +--ro transit-area-id? area-id-type 580 | | | +--ro neighbor-router-id? rt-types:router-id 581 | | +--:(sham-link) 582 | | +--ro sham-link 583 | | +--ro area-id? area-id-type 584 | | +--ro local-ip-addr? inet:ip-address 585 | | +--ro remote-ip-addr? inet:ip-address 586 | +--ro neighbor-router-id? rt-types:router-id 587 | +--ro neighbor-ip-addr? yang:dotted-quad 588 | +--ro status? restart-helper-status-type 589 | +--ro age? uint32 590 | +--ro exit-reason? restart-exit-reason-type 591 +---n if-rx-bad-packet 592 | +--ro routing-protocol-name? 593 | + -> /rt:routing/control-plane-protocols/ 594 | + control-plane-protocol/name 595 | +--ro af? 596 | + -> /rt:routing/control-plane-protocols/ 597 | + control-plane-protocol 598 | + [rt:name=current()/../routing-protocol-name]/ 599 | + ospf:ospf/instance/af 600 | +--ro (if-link-type-selection)? 601 | | +--:(interface) 602 | | | +--ro interface 603 | | | +--ro interface? if:interface-ref 604 | | +--:(virtual-link) 605 | | | +--ro virtual-link 606 | | | +--ro transit-area-id? area-id-type 607 | | | +--ro neighbor-router-id? rt-types:router-id 608 | | +--:(sham-link) 609 | | +--ro sham-link 610 | | +--ro area-id? area-id-type 611 | | +--ro local-ip-addr? inet:ip-address 612 | | +--ro remote-ip-addr? inet:ip-address 613 | +--ro packet-source? yang:dotted-quad 614 | +--ro packet-type? packet-type 615 +---n lsdb-approaching-overflow 616 | +--ro routing-protocol-name? 617 | + -> /rt:routing/control-plane-protocols/ 618 | + control-plane-protocol/name 619 | +--ro af? 620 | + -> /rt:routing/control-plane-protocols/ 621 | + control-plane-protocol 622 | + [rt:name=current()/../routing-protocol-name]/ 623 | + ospf:ospf/instance/af 624 | +--ro ext-lsdb-limit? uint32 625 +---n lsdb-overflow 626 | +--ro routing-protocol-name? 627 | + -> /rt:routing/control-plane-protocols/ 628 | + control-plane-protocol/name 629 | +--ro af? 630 | + -> /rt:routing/control-plane-protocols/ 631 | + control-plane-protocol 632 | + [rt:name=current()/../routing-protocol-name]/ 633 | + ospf:ospf/instance/af 634 | +--ro ext-lsdb-limit? uint32 635 +---n nssa-translator-status-change 636 | +--ro routing-protocol-name? 637 | + -> /rt:routing/control-plane-protocols/ 638 | + control-plane-protocol/name 639 | +--ro af? 640 | + -> /rt:routing/control-plane-protocols/ 641 | + control-plane-protocol 642 | + [rt:name=current()/../routing-protocol-name]/ 643 | + ospf:ospf/instance/af 644 | +--ro area-id? area-id-type 645 | +--ro status? nssa-translator-state-type 646 +---n restart-status-change 647 +--ro routing-protocol-name? 648 + -> /rt:routing/control-plane-protocols/ 649 + control-plane-protocol/name 650 +--ro af? 651 + -> /rt:routing/control-plane-protocols/ 652 + control-plane-protocol 653 + [rt:name=current()/../routing-protocol-name]/ 654 + ospf:ospf/instance/af 655 +--ro status? restart-status-type 656 +--ro restart-interval? uint16 657 +--ro exit-reason? restart-exit-reason-type 659 2.10. OSPF RPC Operations 661 The "ietf-ospf" module defines two RPC operations: 663 o clear-database: reset the content of a particular OSPF database. 665 o clear-neighbor: restart a particular set of OSPF neighbor. 667 rpcs: 668 +---x clear-neighbor 669 | +---w input 670 | +---w routing-protocol-name 671 | + -> /rt:routing/control-plane-protocols/ 672 | + control-plane-protocol/name 673 | +---w interface? if:interface-ref 674 +---x clear-database 675 +---w input 676 +---w routing-protocol-name 677 -> /rt:routing/control-plane-protocols/ 678 control-plane-protocol/name 680 3. OSPF Yang Module 682 file "ietf-ospf@2017-03-12.yang" 683 module ietf-ospf { 684 namespace "urn:ietf:params:xml:ns:yang:ietf-ospf"; 686 prefix ospf; 688 import ietf-inet-types { 689 prefix "inet"; 690 } 692 import ietf-yang-types { 693 prefix "yang"; 694 } 696 import ietf-interfaces { 697 prefix "if"; 698 } 700 import ietf-routing-types { 701 prefix "rt-types"; 702 } 704 import ietf-routing { 705 prefix "rt"; 706 } 707 import ietf-key-chain { 708 prefix "key-chain"; 709 } 711 organization 712 "Cisco Systems 713 170 West Tasman Drive 714 San Jose, CA 95134-1706 715 USA"; 717 contact 718 "WG Web: 719 WG List: 721 WG Chair: Acee Lindem 722 724 WG Chair: Abhay Roy 725 727 Editor: Derek Yeung 728 729 Author: Derek Yeung 730 731 Author: Yingzhen Qu 732 733 Author: Jeffrey Zhang 734 735 Author: Ing-Wher Chen 736 737 Author: Dean Bogdanovic 738 739 Author: Kiran Agrahara Sreenivasa 740 "; 742 description 743 "This YANG module defines the generic configuration and 744 operational state for the OSPF protocol common to all 745 vendor implementations. It is intended that the module 746 will be extended by vendors to define vendor-specific 747 OSPF configuration parameters and policies, 748 for example route maps or route policies. 750 Terms and Acronyms 752 OSPF (ospf): Open Shortest Path First 754 IP (ip): Internet Protocol 755 IPv4 (ipv4):Internet Protocol Version 4 757 IPv6 (ipv6): Internet Protocol Version 6 759 MTU (mtu) Maximum Transmission Unit 760 "; 762 revision 2017-03-12 { 763 description 764 "* Update authors information. 765 * Rename admin distance to preference. 766 * Rename network type to interface type. 767 * Add ietf-spf-delay as a feature. 768 * Add node-tag as a feature and update LSA 769 definition accordingly. 770 * Remove LDP IGP autoconfig. 771 * Add BFD as a feature instead of a separate module. 772 * Change TE router ID to support IPv4 and IPv6 router ID. 773 * Replace key-chain:crypto-algorithm-types with 774 key-chain:crypto-algorithm. 775 * Remove type ieee-bandwidth. 776 * Import ietf-routing-types and make use of 777 router-id, address-family and bandwidth-ieee-float32 778 type definitions. 779 * Simplify notification header. 780 * Fix compilation issue in multiple must statements. 781 "; 782 reference 783 "RFC XXXX: A YANG Data Model for OSPF."; 784 } 786 revision 2016-10-31 { 787 description 788 "* Update authors information. 789 * Rename candidate-disabled to candidiate-enable 790 and set the default value to TRUE. 791 * Rename node identifiers that end with 792 'enabled' to 'enable'. 793 * Set the default value of 794 ospf/instance/areas/area/interfaces/interface/ 795 fast-reroute/lfa/enable (previously named 'enabled') 796 to FALSE. 797 * Set the default value of 798 ospf/instance/areas/area/interfaces/interface/ 799 fast-reroute/remote-lfa/enable (previously named 'enabled') 800 to FALSE. 801 * Rename 802 ospf/instance/areas/area/interfaces/interface/ 803 static-neighbors/neighbor/address to 'identifier' 804 with type inet:ip-address 805 * Add 'dead-timer' to 806 ospf-state/instance/areas/area/interfaces/interface/ 807 neighbors/neighbor. 808 * Remove 'mtu-ignore' and 'prefix-suppression' from 809 virtual-link configuration. 810 * Adjust range specifications from 'transmit-delay', 811 'dead-interval', and 'retransmit-interval' in 812 ospf/instance/areas/area/interfaces/interface. 813 * Change the type of 814 ospf/instance/areas/area/interface/interface/dead-interval 815 to uint32 to match RFC2328 Appendix A.3.2. 816 * Change hello-timer and wait-timer unit to seconds. 817 * Update hello-timer, dead-timer and wait-timer descriptions. 818 * Add IEEE bandwidth type and update all TE bandwidth fields 819 to use it. 820 * Add Nt-bit to OSPFv2 router LSA. 821 * Remove L-bit from OSPFv2 router LSA. 822 "; 823 reference 824 "RFC XXXX: A YANG Data Model for OSPF."; 825 } 827 revision 2016-07-07 { 828 description 829 "* Add ospfv3 AF bit. 830 * Add ospfv2 MT, L, O, DN bit. 831 * Add interface priority config. 832 * Change bdr-ip-address to type ip-address. 833 * Rename leaf interface to name. 834 * Rename rx-bad-packet to if-rx-bad-packet. 835 * Move virtual link placement to backbone area. 836 * Remove cost configuration from virtual link. 837 * Move if-feature multi-area-adj statement. 838 * Add type checksum16-type. 839 * Change LSA header checksum to use checksum16-type. 840 * Change routing-protocol to control-plane-protocol. 841 * Change import module name to ietf-key-chain."; 842 reference 843 "RFC XXXX: A YANG Data Model for OSPF."; 844 } 846 revision 2016-03-20 { 847 description 848 "* Reorganize *-config and *-operation groupings. 849 * Use *-config under state tree for applied config. 850 * Rename config router-id to explicit-router-id. 852 * Rename feature router-id to explicit-router-id. 853 * Add OSPFv3 instance ID. 854 * Add OSPFv3 interface ID. 855 * Add ip-address for DR and BDR. 856 * Remove routing-instance. 857 * Change import module name to ietf-routing-key-chain."; 858 reference 859 "RFC XXXX: A YANG Data Model for OSPF."; 860 } 862 revision 2015-10-19 { 863 description 864 "* Remove the abstract identity ospf. 865 * Make area-id-type dotted-quad only. 866 * Use area-id-type for all area-id leafs. 867 * Restructure notifications. 868 * Move BFD support to the new ietf-ospf-bfd module. 869 * Update author information. 870 * Editorial changes."; 871 reference 872 "RFC XXXX: A YANG Data Model for OSPF."; 873 } 875 revision 2015-09-02 { 876 description 877 "* Author information update. 878 * Editorial changes"; 879 reference 880 "RFC XXXX: A YANG Data Model for OSPF."; 881 } 883 revision 2015-07-06 { 884 description 885 "* Remove support for protocol-centric config. 886 * Enclose list in container, except for instance. 887 * Replace protocol-shutdown with admin-control. 888 * Add IP-FRR per-interface config. 889 * Reorganize max-path etc node. 890 * Add node-flag. 891 * Align config/operation hierarchy. 892 * Use relative path for reference to rib. 893 * Add ability to set single admin distance. 894 * Make unreserved bandwidth into list. 895 * Add F and T bit to OSPFv3 external LSA. 896 * Remove key statement inside LSA body. 897 * Add stub router support. 898 * Fix usage of af-area-config. 899 * Add statistics to operation data. 901 * Add local rib. 902 * Use dotted-quad for all router-id fields. 903 * Support more than one multi-area per interface. 904 * Use uint16 for LSA type. 905 * Update grouping notification-instance-hdr. 906 * Rework condition for opaque type and id in OSPFv2 LSA. 907 * Rename local-remote-ipv4-addr with remote-if-ipv4-addr. 908 * Add virtual-link/sham-link to operation state. 909 * Allow multiple link TLVs in one LSA. 910 * Fix bug in as-scope-lsas. 911 * Remove OSPFv3 restriction in link-scope-lsas. 912 * Editorial changes."; 913 reference 914 "RFC XXXX: A YANG Data Model for OSPF."; 915 } 917 revision 2015-03-09 { 918 description 919 "Initial revision."; 920 reference 921 "RFC XXXX: A YANG Data Model for OSPF."; 922 } 924 identity ospfv2 { 925 base "rt:routing-protocol"; 926 description "OSPFv2"; 927 } 929 identity ospfv3 { 930 base "rt:routing-protocol"; 931 description "OSPFv3"; 932 } 934 identity operation-mode { 935 description 936 "OSPF operation mode."; 937 } 939 identity ships-in-the-night { 940 base operation-mode; 941 description 942 "Ships-in-the-night operation mode in which 943 each OSPF instance carries only one address family"; 944 } 946 identity area-type { 947 description "Base identity for OSPF area type."; 948 } 949 identity normal { 950 base area-type; 951 description "OSPF normal area."; 952 } 954 identity stub { 955 base area-type; 956 description "OSPF stub area."; 957 } 959 identity nssa { 960 base area-type; 961 description "OSPF NSSA area."; 962 } 964 typedef uint24 { 965 type uint32 { 966 range "0 .. 16777215"; 967 } 968 description 969 "24-bit unsigned integer."; 970 } 972 typedef area-id-type { 973 type yang:dotted-quad; 974 description 975 "Area ID type."; 976 } 978 typedef route-type { 979 type enumeration { 980 enum intra-area { 981 description "OSPF intra-area route."; 982 } 983 enum inter-area { 984 description "OSPF inter-area route."; 985 } 986 enum external-1 { 987 description "OSPF type 1 external route."; 988 } 989 enum external-2 { 990 description "OSPF type 2 external route."; 991 } 992 enum nssa-1 { 993 description "OSPF type 1 NSSA route."; 994 } 995 enum nssa-2 { 996 description "OSPF type 2 NSSA route."; 998 } 999 } 1000 description "OSPF route type."; 1001 } 1003 typedef if-state-type { 1004 type enumeration { 1005 enum Down { 1006 value "1"; 1007 description 1008 "Interface down state."; 1009 } 1010 enum Loopback { 1011 value "2"; 1012 description 1013 "Interface loopback state."; 1014 } 1015 enum Waiting { 1016 value "3"; 1017 description 1018 "Interface waiting state."; 1019 } 1020 enum Point-to-Point { 1021 value "4"; 1022 description 1023 "Interface point-to-point state."; 1024 } 1025 enum DR { 1026 value "5"; 1027 description 1028 "Interface Designated Router (DR) state."; 1029 } 1030 enum BDR { 1031 value "6"; 1032 description 1033 "Interface Backup Designated Router (BDR) state."; 1034 } 1035 enum DR-Other { 1036 value "7"; 1037 description 1038 "Interface Other Designated Router state."; 1039 } 1040 } 1041 description 1042 "OSPF interface state type."; 1043 } 1045 typedef nbr-state-type { 1046 type enumeration { 1047 enum Down { 1048 value "1"; 1049 description 1050 "Neighbor down state."; 1051 } 1052 enum Attempt { 1053 value "2"; 1054 description 1055 "Neighbor attempt state."; 1056 } 1057 enum Init { 1058 value "3"; 1059 description 1060 "Neighbor init state."; 1061 } 1062 enum 2-Way { 1063 value "4"; 1064 description 1065 "Neighbor 2-Way state."; 1066 } 1067 enum ExStart { 1068 value "5"; 1069 description 1070 "Neighbor exchange start state."; 1071 } 1072 enum Exchange { 1073 value "6"; 1074 description 1075 "Neighbor exchange state."; 1076 } 1077 enum Loading { 1078 value "7"; 1079 description 1080 "Neighbor loading state."; 1081 } 1082 enum Full { 1083 value "8"; 1084 description 1085 "Neighbor full state."; 1086 } 1087 } 1088 description 1089 "OSPF neighbor state type."; 1090 } 1092 typedef restart-helper-status-type { 1093 type enumeration { 1094 enum Not-Helping { 1095 value "1"; 1096 description 1097 "Restart helper status not helping."; 1098 } 1099 enum Helping { 1100 value "2"; 1101 description 1102 "Restart helper status helping."; 1103 } 1104 } 1105 description 1106 "Restart helper status type."; 1107 } 1109 typedef restart-exit-reason-type { 1110 type enumeration { 1111 enum None { 1112 value "1"; 1113 description 1114 "Not attempted."; 1115 } 1116 enum InProgress { 1117 value "2"; 1118 description 1119 "Restart in progress."; 1120 } 1121 enum Completed { 1122 value "3"; 1123 description 1124 "Successfully completed."; 1125 } 1126 enum TimedOut { 1127 value "4"; 1128 description 1129 "Timed out."; 1130 } 1131 enum TopologyChanged { 1132 value "5"; 1133 description 1134 "Aborted due to topology change."; 1135 } 1136 } 1137 description 1138 "Describes the outcome of the last attempt at a 1139 graceful restart, either by itself or acting 1140 as a helper."; 1141 } 1142 typedef packet-type { 1143 type enumeration { 1144 enum Hello { 1145 value "1"; 1146 description 1147 "OSPF hello packet."; 1148 } 1149 enum Database-Descripton { 1150 value "2"; 1151 description 1152 "OSPF database description packet."; 1153 } 1154 enum Link-State-Request { 1155 value "3"; 1156 description 1157 "OSPF link state request packet."; 1158 } 1159 enum Link-State-Update { 1160 value "4"; 1161 description 1162 "OSPF link state update packet."; 1163 } 1164 enum Link-State-Ack { 1165 value "5"; 1166 description 1167 "OSPF link state acknowlegement packet."; 1168 } 1169 } 1170 description 1171 "OSPF packet type."; 1172 } 1174 typedef nssa-translator-state-type { 1175 type enumeration { 1176 enum Enabled { 1177 value "1"; 1178 description 1179 "NSSA translator enabled state."; 1180 } 1181 enum Elected { 1182 description 1183 "NSSA translator elected state."; 1184 } 1185 enum Disabled { 1186 value "3"; 1187 description 1188 "NSSA translator disabled state."; 1189 } 1191 } 1192 description 1193 "OSPF NSSA translator state type."; 1194 } 1196 typedef restart-status-type { 1197 type enumeration { 1198 enum Not-Restarting { 1199 value "1"; 1200 description 1201 "Router is not restarting."; 1202 } 1203 enum Planned-Restart { 1204 description 1205 "Router is going through planned restart."; 1206 } 1207 enum Unplanned-Restart { 1208 value "3"; 1209 description 1210 "Router is going through unplanned restart."; 1211 } 1212 } 1213 description 1214 "OSPF graceful restart status type."; 1215 } 1217 typedef checksum16-type { 1218 type string { 1219 pattern '(0x)?[0-9a-fA-F]{4}'; 1220 } 1221 description 1222 "16-bit checksum in hex-string format 0xXXXX."; 1223 } 1225 feature multi-topology { 1226 description 1227 "Support Multiple-Topolgy Routing (MTR)."; 1228 } 1230 feature multi-area-adj { 1231 description 1232 "OSPF multi-area adjacency support as in RFC 5185."; 1233 } 1234 feature explicit-router-id { 1235 description 1236 "Set Router-ID per instance explicitly."; 1237 } 1238 feature demand-circuit { 1239 description 1240 "OSPF demand circuit support as in RFC 1793."; 1241 } 1243 feature mtu-ignore { 1244 description 1245 "Disable OSPF Database Description packet MTU 1246 mismatch checking."; 1247 } 1249 feature lls { 1250 description 1251 "OSPF link-local signaling (LLS) as in RFC 5613."; 1252 } 1254 feature prefix-suppression { 1255 description 1256 "OSPF prefix suppression support as in RFC 6860."; 1257 } 1259 feature ttl-security { 1260 description 1261 "OSPF TTL security check."; 1262 } 1264 feature nsr { 1265 description 1266 "Non-Stop-Routing (NSR)."; 1267 } 1269 feature graceful-restart { 1270 description 1271 "Graceful OSPF Restart as defined in RFC 3623 and 1272 RFC 5187."; 1273 } 1275 feature admin-control { 1276 description 1277 "Administrative control of the protocol state."; 1278 } 1280 feature auto-cost { 1281 description 1282 "Calculate OSPF interface cost according to 1283 reference bandwidth."; 1284 } 1285 feature max-ecmp { 1286 description 1287 "Setting maximum number of ECMP paths."; 1288 } 1290 feature max-lsa { 1291 description 1292 "Setting maximum number of LSAs the OSPF instance 1293 will accept."; 1294 } 1296 feature te-rid { 1297 description 1298 "TE Router-ID."; 1299 } 1301 feature ldp-igp-sync { 1302 description 1303 "LDP IGP synchronization."; 1304 } 1306 feature ospfv3-authentication-ipsec { 1307 description 1308 "Use IPsec for OSPFv3 authentication."; 1309 } 1311 feature fast-reroute { 1312 description 1313 "Support of IP Fast Reroute (IP-FRR)."; 1314 } 1316 feature node-flag { 1317 description 1318 "Support of node flag."; 1319 } 1321 feature node-tag { 1322 description 1323 "Support of node tag."; 1324 } 1326 feature lfa { 1327 description 1328 "Support of Loop Free Alternates (LFAs)."; 1329 } 1331 feature remote-lfa { 1332 description 1333 "Support of Remote Loop Free Alternates (R-LFA)."; 1334 } 1336 feature stub-router { 1337 description 1338 "Support of RFC 6987 OSPF Stub Router Advertisement."; 1339 } 1341 feature instance-inheritance { 1342 description 1343 "Support instance inheritance"; 1344 } 1346 feature area-inheritance { 1347 description 1348 "Support area inheritance"; 1349 } 1351 feature interface-inheritance { 1352 description 1353 "Support interface inheritance"; 1354 } 1356 feature pe-ce-protocol { 1357 description 1358 "Support PE-CE protocol"; 1359 } 1361 feature ietf-spf-delay { 1362 description 1363 "Support of IETF SPF delay algorithm."; 1364 } 1366 feature bfd { 1367 description 1368 "Support of BFD."; 1369 } 1371 grouping tlv { 1372 description 1373 "TLV"; 1374 leaf type { 1375 type uint16; 1376 description "TLV type."; 1377 } 1378 leaf length { 1379 type uint16; 1380 description "TLV length."; 1382 } 1383 leaf value { 1384 type yang:hex-string; 1385 description "TLV value."; 1386 } 1387 } 1389 grouping unknown-tlvs { 1390 description 1391 "Unknown TLVs grouping - Used for unknown TLVs or 1392 unknown sub-TLVs."; 1393 container unknown-tlvs { 1394 description "All unknown TLVs."; 1395 list unknown-tlv { 1396 description "Unknown TLV."; 1397 uses tlv; 1398 } 1399 } 1400 } 1402 grouping node-tag-tlv { 1403 description "OSPF Node Admin Tag TLV grouping."; 1404 list node-tag { 1405 leaf tag { 1406 type uint32; 1407 description 1408 "Node tag value."; 1409 } 1410 description 1411 "List of tags."; 1412 } 1413 } 1415 grouping ospfv2-router-link { 1416 description "OSPFv2 router link."; 1417 leaf link-id { 1418 type union { 1419 type inet:ipv4-address; 1420 type yang:dotted-quad; 1421 } 1422 description "Link ID."; 1423 } 1424 leaf link-data { 1425 type union { 1426 type inet:ipv4-address; 1427 type uint32; 1428 } 1429 description "Link data."; 1431 } 1432 leaf type { 1433 type uint8; 1434 description "Link type."; 1435 } 1436 } 1438 grouping ospfv2-lsa-body { 1439 description "OSPFv2 LSA body."; 1440 container router { 1441 when "../../header/type = 1" { 1442 description 1443 "Only applies to Router LSAs."; 1444 } 1445 description 1446 "Router LSA."; 1447 leaf flags { 1448 type bits { 1449 bit V { 1450 description 1451 "When set, the router is an endpoint of one or 1452 more virtual links."; 1453 } 1454 bit E { 1455 description 1456 "When set, the router is an AS Boundary Router 1457 (ASBR)."; 1458 } 1459 bit B { 1460 description 1461 "When set, the router is an Area Border 1462 Router (ABR)."; 1463 } 1464 bit Nt { 1465 description 1466 "When set, the router is an NSSA border router 1467 that is unconditionally translating NSSA LSAs 1468 into AS-external LSAs."; 1469 } 1470 } 1471 description "Flags."; 1472 } 1473 leaf num-of-links { 1474 type uint16; 1475 description "Number of links."; 1476 } 1477 container links { 1478 description "All router Links."; 1479 list link { 1480 description "Router LSA link."; 1481 uses ospfv2-router-link; 1482 container topologies { 1483 description "All topologies for the link."; 1484 list topology { 1485 description 1486 "Topology specific information."; 1487 leaf mt-id { 1488 type uint8; 1489 description 1490 "The MT-ID for the topology enabled on 1491 the link."; 1492 } 1493 leaf metric { 1494 type uint16; 1495 description "Metric for the topology."; 1496 } 1497 } 1498 } 1499 } 1500 } 1501 } 1502 container network { 1503 when "../../header/type = 2" { 1504 description 1505 "Only applies to Network LSAs."; 1506 } 1507 description 1508 "Network LSA."; 1509 leaf network-mask { 1510 type inet:ipv4-address; 1511 description 1512 "The IP address mask for the network."; 1513 } 1514 container attached-routers { 1515 description "All attached routers."; 1516 leaf-list attached-router { 1517 type yang:dotted-quad; 1518 description 1519 "List of the routers attached to the network."; 1520 } 1521 } 1522 } 1523 container summary { 1524 when "../../header/type = 3 or " 1525 + "../../header/type = 4" { 1526 description 1527 "Only applies to Summary LSAs."; 1528 } 1529 description 1530 "Summary LSA."; 1531 leaf network-mask { 1532 type inet:ipv4-address; 1533 description 1534 "The IP address mask for the network"; 1535 } 1536 container topologies { 1537 description "All topologies for the summary LSA."; 1538 list topology { 1539 description 1540 "Topology specific information."; 1541 leaf mt-id { 1542 type uint8; 1543 description 1544 "The MT-ID for the topology enabled for 1545 the summary."; 1546 } 1547 leaf metric { 1548 type uint24; 1549 description "Metric for the topology."; 1550 } 1551 } 1552 } 1553 } 1554 container external { 1555 when "../../header/type = 5 or " 1556 + "../../header/type = 7" { 1557 description 1558 "Only applies to AS-external LSAs and NSSA LSAs."; 1559 } 1560 description 1561 "External LSA."; 1562 leaf network-mask { 1563 type inet:ipv4-address; 1564 description 1565 "The IP address mask for the network"; 1566 } 1567 container topologies { 1568 description "All topologies for the external."; 1569 list topology { 1570 description 1571 "Topology specific information."; 1572 leaf mt-id { 1573 type uint8; 1574 description 1575 "The MT-ID for the topology enabled for the 1576 external or NSSA prefix."; 1577 } 1578 leaf flags { 1579 type bits { 1580 bit E { 1581 description 1582 "When set, the metric specified is a Type 2 1583 external metric."; 1584 } 1585 } 1586 description "Flags."; 1587 } 1588 leaf metric { 1589 type uint24; 1590 description "Metric for the topology."; 1591 } 1592 leaf forwarding-address { 1593 type inet:ipv4-address; 1594 description 1595 "Forwarding address."; 1596 } 1597 leaf external-route-tag { 1598 type uint32; 1599 description 1600 "Route tag for the topology."; 1601 } 1602 } 1603 } 1604 } 1605 container opaque { 1606 when "../../header/type = 9 or " 1607 + "../../header/type = 10 or " 1608 + "../../header/type = 11" { 1609 description 1610 "Only applies to Opaque LSAs."; 1611 } 1612 description 1613 "Opaque LSA."; 1615 uses unknown-tlvs; 1617 container node-tag-tlvs { 1618 description 1619 "All node tag tlvs."; 1620 list node-tag-tlv { 1621 description 1622 "Node tag tlv."; 1624 uses node-tag-tlv; 1625 } 1626 } 1628 container router-address-tlv { 1629 description 1630 "Router address TLV."; 1631 leaf router-address { 1632 type inet:ipv4-address; 1633 description 1634 "Router address."; 1635 } 1636 } 1638 container link-tlvs { 1639 description "All link TLVs in the LSA."; 1640 list link-tlv { 1641 description "Link TLV."; 1642 leaf link-type { 1643 type uint8; 1644 mandatory true; 1645 description "Link type."; 1646 } 1647 leaf link-id { 1648 type union { 1649 type inet:ipv4-address; 1650 type yang:dotted-quad; 1651 } 1652 mandatory true; 1653 description "Link ID."; 1654 } 1655 container local-if-ipv4-addrs { 1656 description "All local interface IPv4 addresses."; 1657 leaf-list local-if-ipv4-addr { 1658 type inet:ipv4-address; 1659 description 1660 "List of local interface IPv4 addresses."; 1661 } 1662 } 1663 container remote-if-ipv4-addrs { 1664 description "All remote interface IPv4 addresses."; 1665 leaf-list remote-if-ipv4-addr { 1666 type inet:ipv4-address; 1667 description 1668 "List of remote interface IPv4 addresses."; 1669 } 1670 } 1671 leaf te-metric { 1672 type uint32; 1673 description "TE metric."; 1674 } 1675 leaf max-bandwidth { 1676 type rt-types:bandwidth-ieee-float32; 1677 description "Maximum bandwidth."; 1678 } 1679 leaf max-reservable-bandwidth { 1680 type rt-types:bandwidth-ieee-float32; 1681 description "Maximum reservable bandwidth."; 1682 } 1683 container unreserved-bandwidths { 1684 description "All unreserved bandwidths."; 1685 list unreserved-bandwidth { 1686 leaf priority { 1687 type uint8 { 1688 range "0 .. 7"; 1689 } 1690 description "Priority from 0 to 7."; 1691 } 1692 leaf unreserved-bandwidth { 1693 type rt-types:bandwidth-ieee-float32; 1694 description "Unreserved bandwidth."; 1695 } 1696 description 1697 "List of unreserved bandwidths for different 1698 priorities."; 1699 } 1700 } 1701 leaf admin-group { 1702 type uint32; 1703 description 1704 "Administrative group/Resource Class/Color."; 1705 } 1706 uses unknown-tlvs; 1707 } 1708 } 1710 container extended-prefix-tlvs { 1711 description "All extended prefix TLVs in the LSA."; 1712 list extended-prefix-tlv { 1713 description "Extended prefix TLV."; 1714 leaf route-type { 1715 type enumeration { 1716 enum unspecified { 1717 value "0"; 1718 description "Unspecified."; 1719 } 1720 enum intra-area { 1721 value "1"; 1722 description "OSPF intra-area route."; 1723 } 1724 enum inter-area { 1725 value "3"; 1726 description "OSPF inter-area route."; 1727 } 1728 enum external { 1729 value "5"; 1730 description "OSPF External route."; 1731 } 1732 enum nssa { 1733 value "7"; 1734 description "OSPF NSSA external route."; 1735 } 1736 } 1737 description "Route type."; 1738 } 1739 leaf flags { 1740 type bits { 1741 bit A { 1742 description 1743 "Attach flag."; 1744 } 1745 bit N { 1746 description 1747 "Node flag."; 1748 } 1749 } 1750 description "Flags."; 1751 } 1752 leaf prefix { 1753 type inet:ip-prefix; 1754 description "Address prefix."; 1755 } 1756 uses unknown-tlvs; 1757 } 1758 } 1760 container extended-link-tlvs { 1761 description "All extended link TLVs in the LSA."; 1762 list extended-link-tlv { 1763 description "Extended link TLV."; 1764 uses ospfv2-router-link; 1765 uses unknown-tlvs; 1766 } 1767 } 1769 } 1770 } 1772 grouping ospfv3-lsa-options { 1773 description "OSPFv3 LSA options"; 1774 leaf options { 1775 type bits { 1776 bit AF { 1777 description 1778 "When set, the router supprts OSPFv3 AFs as in RFC5838."; 1779 } 1780 bit DC { 1781 description 1782 "When set, the router supports demand circuits."; 1783 } 1784 bit R { 1785 description 1786 "When set, the originator is an active router."; 1787 } 1788 bit N { 1789 description 1790 "If set, the router is attached to an NSSA"; 1791 } 1792 bit E { 1793 description 1794 "This bit describes the way AS-external LSAs 1795 are flooded"; 1796 } 1797 bit V6 { 1798 description 1799 "If clear, the router/link should be excluded 1800 from IPv6 routing calculaton"; 1801 } 1802 } 1803 mandatory true; 1804 description "OSPFv3 LSA options."; 1805 } 1806 } 1808 grouping ospfv3-lsa-prefix { 1809 description 1810 "OSPFv3 LSA prefix."; 1812 leaf prefix { 1813 type inet:ip-prefix; 1814 description 1815 "Prefix."; 1816 } 1817 leaf prefix-options { 1818 type bits { 1819 bit NU { 1820 description 1821 "When set, the prefix should be excluded 1822 from IPv6 unicast calculations."; 1823 } 1824 bit LA { 1825 description 1826 "When set, the prefix is actually an IPv6 interface 1827 address of the Advertising Router."; 1828 } 1829 bit P { 1830 description 1831 "When set, the NSSA area prefix should be 1832 translated to an AS External LSA and readvertised 1833 by the translating NSSA Border Router."; 1834 } 1835 bit DN { 1836 description 1837 "When set, the inter-area-prefix LSA or 1838 AS-external LSA prefix has been advertised as an 1839 L3VPN prefix."; 1840 } 1841 } 1842 mandatory true; 1843 description "Prefix options."; 1844 } 1845 } 1847 grouping ospfv3-lsa-external { 1848 description 1849 "AS-External and NSSA LSA."; 1850 leaf metric { 1851 type uint24; 1852 description "Metric"; 1853 } 1855 leaf flags { 1856 type bits { 1857 bit E { 1858 description 1859 "When set, the metric specified is a Type 2 1860 external metric."; 1861 } 1862 bit F { 1863 description 1864 "When set, a Forwarding Address is included 1865 in the LSA."; 1866 } 1867 bit T { 1868 description 1869 "When set, an External Route Tag is included 1870 in the LSA."; 1871 } 1872 } 1873 description "Flags."; 1874 } 1876 leaf referenced-ls-type { 1877 type uint16; 1878 description "Referenced Link State type."; 1879 } 1881 uses ospfv3-lsa-prefix; 1883 leaf forwarding-address { 1884 type inet:ipv6-address; 1885 description 1886 "Forwarding address."; 1887 } 1889 leaf external-route-tag { 1890 type uint32; 1891 description 1892 "Route tag."; 1893 } 1894 leaf referenced-link-state-id { 1895 type uint32; 1896 description 1897 "Referenced Link State ID."; 1898 } 1899 } 1901 grouping ospfv3-lsa-body { 1902 description "OSPFv3 LSA body."; 1903 container router { 1904 when "../../header/type = 8193" { // 0x2001 1905 description 1906 "Only applies to Router LSAs."; 1907 } 1908 description "Router LSA."; 1909 leaf flags { 1910 type bits { 1911 bit V { 1912 description 1913 "When set, the router is an endpoint of one or 1914 more virtual links."; 1915 } 1916 bit E { 1917 description 1918 "When set, the router is an AS Boundary Router 1919 (ASBR)."; 1920 } 1921 bit B { 1922 description 1923 "When set, the router is an Area Border 1924 Router (ABR)."; 1925 } 1926 bit Nt { 1927 description 1928 "When set, the router is an NSSA border router 1929 that is unconditionally translating NSSA LSAs 1930 into AS-external LSAs."; 1931 } 1932 } 1933 mandatory true; 1934 description "Router LSA flags."; 1935 } 1937 uses ospfv3-lsa-options; 1939 container links { 1940 description "All router link."; 1941 list link { 1942 description "Router LSA link."; 1943 leaf interface-id { 1944 type uint32; 1945 description "Interface ID."; 1946 } 1947 leaf neighbor-interface-id { 1948 type uint32; 1949 description "Neighbor Interface ID."; 1950 } 1951 leaf neighbor-router-id { 1952 type rt-types:router-id; 1953 description "Neighbor Router ID."; 1954 } 1955 leaf type { 1956 type uint8; 1957 description "Link type."; 1958 } 1959 leaf metric { 1960 type uint16; 1961 description "Metric."; 1962 } 1963 } 1964 } 1965 } 1966 container network { 1967 when "../../header/type = 8194" { // 0x2002 1968 description 1969 "Only applies to Network LSA."; 1970 } 1971 description "Network LSA."; 1973 uses ospfv3-lsa-options; 1975 container attached-routers { 1976 description "All attached routers."; 1977 leaf-list attached-router { 1978 type yang:dotted-quad; 1979 description 1980 "List of the routers attached to the network."; 1981 } 1982 } 1983 } 1984 container inter-area-prefix { 1985 when "../../header/type = 8195" { // 0x2003 1986 description 1987 "Only applies to Inter-Area-Prefix LSAs."; 1988 } 1989 leaf metric { 1990 type uint24; 1991 description "Metric"; 1992 } 1993 uses ospfv3-lsa-prefix; 1994 description "Inter-Area-Prefix LSA."; 1995 } 1996 container inter-area-router { 1997 when "../../header/type = 8196" { // 0x2004 1998 description 1999 "Only applies to Inter-Area-Router LSAs."; 2000 } 2001 uses ospfv3-lsa-options; 2002 leaf metric { 2003 type uint24; 2004 description "Metric."; 2005 } 2006 leaf destination-router-id { 2007 type rt-types:router-id; 2008 description 2009 "The Router ID of the router being described by the LSA."; 2010 } 2011 description "Inter-Area-Router LSA."; 2012 } 2013 container as-external { 2014 when "../../header/type = 16389" { // 0x4005 2015 description 2016 "Only applies to AS-external LSAs."; 2017 } 2019 uses ospfv3-lsa-external; 2021 description "AS-External LSA."; 2022 } 2023 container nssa { 2024 when "../../header/type = 8199" { // 0x2007 2025 description 2026 "Only applies to NSSA LSAs."; 2027 } 2028 uses ospfv3-lsa-external; 2030 description "NSSA LSA."; 2031 } 2032 container link { 2033 when "../../header/type = 8" { // 0x0008 2034 description 2035 "Only applies to Link LSAs."; 2036 } 2037 leaf rtr-priority { 2038 type uint8; 2039 description "Router Priority for the interface."; 2040 } 2041 uses ospfv3-lsa-options; 2043 leaf link-local-interface-address { 2044 type inet:ipv6-address; 2045 description 2046 "The originating router's link-local 2047 interface address for the link."; 2048 } 2050 leaf num-of-prefixes { 2051 type uint32; 2052 description "Number of prefixes."; 2053 } 2055 container prefixes { 2056 description "All prefixes for the link."; 2057 list prefix { 2058 description 2059 "List of prefixes associated with the link."; 2060 uses ospfv3-lsa-prefix; 2061 } 2062 } 2063 description "Link LSA."; 2064 } 2065 container intra-area-prefix { 2066 when "../../header/type = 8201" { // 0x2009 2067 description 2068 "Only applies to Intra-Area-Prefix LSA."; 2069 } 2070 description "Intra-Area-Prefix LSA."; 2072 leaf referenced-ls-type { 2073 type uint16; 2074 description "Referenced Link State type."; 2075 } 2076 leaf referenced-link-state-id { 2077 type uint32; 2078 description 2079 "Referenced Link State ID."; 2080 } 2081 leaf referenced-adv-router { 2082 type inet:ipv4-address; 2083 description 2084 "Referenced Advertising Router."; 2085 } 2087 leaf num-of-prefixes { 2088 type uint16; 2089 description "Number of prefixes."; 2090 } 2091 container prefixes { 2092 description "All prefixes in this LSA."; 2093 list prefix { 2094 description "List of prefixes in this LSA."; 2095 uses ospfv3-lsa-prefix; 2096 leaf metric { 2097 type uint24; 2098 description "Prefix Metric."; 2099 } 2100 } 2101 } 2102 } 2103 container router-information { 2104 when "../../header/type = 32780 or " // 0x800C 2105 + "../../header/type = 40972 or " // 0xA00C 2106 + "../../header/type = 49164 or " // 0xC00C 2107 + "../../header/type = 57356" { // 0xE00C 2108 description 2109 "Only applies to Router Information LSAs (RFC7770)."; 2110 } 2111 container node-tag-tlvs { 2112 description 2113 "All node tag tlvs."; 2114 list node-tag-tlv { 2115 description 2116 "Node tag tlv."; 2117 uses node-tag-tlv; 2118 } 2119 } 2120 description "Router Information LSA."; 2121 } 2122 } 2124 grouping lsa-header { 2125 description 2126 "Common LSA for OSPFv2 and OSPFv3"; 2127 leaf age { 2128 type uint16; 2129 mandatory true; 2130 description "LSA age."; 2131 } 2132 leaf type { 2133 type uint16; 2134 mandatory true; 2135 description "LSA type."; 2136 } 2137 leaf adv-router { 2138 type yang:dotted-quad; 2139 mandatory true; 2140 description "LSA advertising router."; 2141 } 2142 leaf seq-num { 2143 type uint32; 2144 mandatory true; 2145 description "LSA sequence number."; 2146 } 2147 leaf checksum { 2148 type checksum16-type; 2149 mandatory true; 2150 description "LSA checksum."; 2151 } 2152 leaf length { 2153 type uint16; 2154 mandatory true; 2155 description "LSA length."; 2156 } 2157 } 2159 grouping ospfv2-lsa { 2160 description 2161 "OSPFv2 LSA."; 2162 container header { 2163 must "(type = 9 or type = 10 or type = 11) and " 2164 + "opaque-id and opaque-type " 2165 + "or (type != 9 and type != 10 and type != 11) " 2166 + "and not(opaque-id) and " 2167 + "not(opaque-type)" { 2168 description 2169 "Opaque type and ID only apply to Opaque LSAs."; 2170 } 2171 description 2172 "Decoded OSPFv2 LSA header data."; 2173 leaf option { 2174 type bits { 2175 bit MT { 2176 description 2177 "When set, the router supports multi-topology as 2178 in RFC 4915."; 2179 } 2180 bit DC { 2181 description 2182 "When set, the router supports demand circuits."; 2183 } 2184 bit P { 2185 description 2186 "Only used in type-7 LSA. When set, an NSSA 2187 border router should translate the type-7 LSA 2188 to a type-5 LSA."; 2189 } 2190 bit MC { 2191 description 2192 "When set, the router supports MOSPF."; 2193 } 2194 bit E { 2195 description 2196 "This bit describes the way AS-external LSAs 2197 are flooded."; 2198 } 2199 bit O { 2200 description 2201 "When set, the router is opaque-capable as in 2202 RFC 5250."; 2203 } 2204 bit DN { 2205 description 2206 "When a type 3, 5 or 7 LSA is sent from a PE to a CE, 2207 the DN bit must be set. See RFC 4576."; 2208 } 2209 } 2210 mandatory true; 2211 description "LSA options."; 2212 } 2213 leaf lsa-id { 2214 type inet:ipv4-address; 2215 mandatory true; 2216 description "LSA ID."; 2217 } 2219 leaf opaque-type { 2220 type uint8; 2221 description "Opaque type."; 2222 } 2224 leaf opaque-id { 2225 type uint24; 2226 description "Opaque ID."; 2227 } 2229 uses lsa-header; 2230 } 2231 container body { 2232 description 2233 "Decoded OSPFv2 LSA body data."; 2234 uses ospfv2-lsa-body; 2235 } 2236 } 2238 grouping ospfv3-lsa { 2239 description 2240 "Decoded OSPFv3 LSA."; 2241 container header { 2242 description 2243 "Decoded OSPFv3 LSA header data."; 2244 leaf lsa-id { 2245 type uint32; 2246 mandatory true; 2247 description "LSA ID."; 2248 } 2249 uses lsa-header; 2250 } 2251 container body { 2252 description 2253 "Decoded OSPF LSA body data."; 2254 uses ospfv3-lsa-body; 2255 } 2256 } 2257 grouping lsa-common { 2258 description 2259 "Common field for OSPF LSA represenation."; 2260 leaf decoded-completed { 2261 type boolean; 2262 description 2263 "The OSPF LSA body is fully decoded."; 2264 } 2265 leaf raw-data { 2266 type yang:hex-string; 2267 description 2268 "The complete LSA in network byte 2269 order hexadecimal as received or originated."; 2270 } 2271 } 2273 grouping lsa { 2274 description 2275 "OSPF LSA."; 2276 uses lsa-common; 2277 choice version { 2278 description 2279 "OSPFv2 or OSPFv3 LSA body."; 2280 container ospfv2 { 2281 description "OSPFv2 LSA"; 2282 uses ospfv2-lsa; 2283 } 2284 container ospfv3 { 2285 description "OSPFv3 LSA"; 2286 uses ospfv3-lsa; 2287 } 2288 } 2289 } 2291 grouping lsa-key { 2292 description 2293 "OSPF LSA key."; 2294 leaf lsa-id { 2295 type union { 2296 type inet:ipv4-address; 2297 type uint32; 2298 } 2299 description 2300 "LSA ID."; 2301 } 2302 leaf adv-router { 2303 type inet:ipv4-address; 2304 description 2305 "Advertising router."; 2306 } 2307 } 2309 grouping instance-stat { 2310 description "Per-instance statistics"; 2311 leaf originate-new-lsa-count { 2312 type yang:counter32; 2313 description "The number of new LSAs originated."; 2314 } 2315 leaf rx-new-lsas-count { 2316 type yang:counter32; 2317 description "The number of LSAs received."; 2318 } 2319 leaf as-scope-lsa-count { 2320 type yang:gauge32; 2321 description "The number of AS Scope LSAs."; 2322 } 2323 leaf as-scope-lsa-chksum-sum { 2324 type uint32; 2325 description 2326 "The sum of the LSA checksums for AS Scope LSAs."; 2327 } 2328 container database { 2329 description "Container for per AS-scope LSA statistics."; 2330 list as-scope-lsa-type { 2331 description "List of AS-scope LSA statistics"; 2332 leaf lsa-type { 2333 type uint16; 2334 description "AS-scope LSA type."; 2335 } 2336 leaf lsa-count { 2337 type yang:gauge32; 2338 description "The number of LSAs of the LSA type."; 2339 } 2340 leaf lsa-cksum-sum { 2341 type int32; 2342 description 2343 "The sum of the LSA checksums of the LSA type."; 2344 } 2346 } 2347 } 2348 } 2350 grouping area-stat { 2351 description "Per-area statistics."; 2352 leaf spf-runs-count { 2353 type yang:counter32; 2354 description 2355 "The number of times the intra-area SPF has run."; 2356 } 2357 leaf abr-count { 2358 type yang:gauge32; 2359 description 2360 "The total number of Area Border Routers (ABRs) 2361 reachable within this area."; 2362 } 2363 leaf asbr-count { 2364 type yang:gauge32; 2365 description 2366 "The total number of AS Border Routers (ASBRs)."; 2367 } 2368 leaf ar-nssa-translator-event-count { 2369 type yang:counter32; 2370 description 2371 "The number of NSSA translator-state changes."; 2372 } 2373 leaf area-scope-lsa-count { 2374 type yang:gauge32; 2375 description 2376 "The number of area scope LSAs in the area."; 2377 } 2378 leaf area-scope-lsa-cksum-sum { 2379 type int32; 2380 description "The sum of the area scope LSAs checksums."; 2381 } 2382 container database { 2383 description "Container for area scope LSA type statistics."; 2384 list area-scope-lsa-type { 2385 description "List of area scope LSA statistics"; 2386 leaf lsa-type { 2387 type uint16; 2388 description "Area scope LSA type."; 2389 } 2390 leaf lsa-count { 2391 type yang:gauge32; 2392 description "The number of LSAs of the LSA type."; 2393 } 2394 leaf lsa-cksum-sum { 2395 type int32; 2396 description 2397 "The sum of the LSA checksums of the LSA type."; 2398 } 2399 } 2400 } 2401 } 2403 grouping interface-stat { 2404 description "Per-interface statistics"; 2405 leaf if-event-count { 2406 type yang:counter32; 2407 description 2408 "The number of times this interface has changed its 2409 state or an error has occurred."; 2410 } 2411 leaf link-scope-lsa-count { 2412 type yang:gauge32; 2413 description "The number of link scope LSAs."; 2414 } 2415 leaf link-scope-lsa-cksum-sum { 2416 type uint32; 2417 description "The sum of link scope LSA checksums."; 2418 } 2419 container database { 2420 description "Container for link scope LSA type statistics."; 2421 list link-scope-lsa-type { 2422 description "List of link scope LSA statistics"; 2423 leaf lsa-type { 2424 type uint16; 2425 description "Link scope LSA type."; 2426 } 2427 leaf lsa-count { 2428 type yang:gauge32; 2429 description "The number of LSAs of the LSA type."; 2430 } 2431 leaf lsa-cksum-sum { 2432 type int32; 2433 description 2434 "The sum of the LSA checksums of the LSA type."; 2435 } 2436 } 2437 } 2438 } 2440 grouping neighbor-stat { 2441 description "Per-neighbor statistics."; 2442 leaf nbr-event-count { 2443 type yang:counter32; 2444 description 2445 "The number of times this neighbor has changed 2446 state or an error has occurred."; 2447 } 2448 leaf nbr-retrans-qlen { 2449 type yang:gauge32; 2450 description 2451 "The current length of the retransmission queue."; 2452 } 2453 } 2455 grouping instance-fast-reroute-config { 2456 description 2457 "This group defines global configuration of IP-FRR."; 2458 container fast-reroute { 2459 if-feature fast-reroute; 2460 description 2461 "This container may be augmented with global 2462 parameters for IP-FRR."; 2463 container lfa { 2464 if-feature lfa; 2465 description 2466 "This container may be augmented with 2467 global parameters for LFA. Container creation 2468 has no effect on LFA activation."; 2469 } 2470 } 2471 } 2473 grouping interface-fast-reroute-config { 2474 description 2475 "This group defines interface configuration of IP-FRR."; 2476 container fast-reroute { 2477 if-feature fast-reroute; 2478 container lfa { 2479 if-feature lfa; 2480 leaf candidate-enable { 2481 type boolean; 2482 default true; 2483 description 2484 "Enable the interface to be used as backup."; 2485 } 2486 leaf enable { 2487 type boolean; 2488 default false; 2489 description 2490 "Activates LFA - Per-prefix LFA computation 2491 is assumed."; 2492 } 2493 container remote-lfa { 2494 if-feature remote-lfa; 2495 leaf enable { 2496 type boolean; 2497 default false; 2498 description 2499 "Activates Remote LFA (R-LFA)."; 2500 } 2501 description 2502 "Remote LFA configuration."; 2503 } 2504 description 2505 "LFA configuration."; 2506 } 2507 description 2508 "IP Fast-reroute configuration."; 2509 } 2510 } 2512 grouping interface-physical-link-config { 2513 description 2514 "Interface cost configuration that only applies to 2515 physical interfaces and sham links."; 2516 leaf cost { 2517 type uint16 { 2518 range "1..65535"; 2519 } 2520 description 2521 "Interface cost."; 2522 } 2523 leaf mtu-ignore { 2524 if-feature mtu-ignore; 2525 type boolean; 2526 description 2527 "Enable/Disable bypassing the MTU mismatch check in 2528 Database Description packets."; 2529 } 2530 leaf prefix-suppression { 2531 if-feature prefix-suppression; 2532 type boolean; 2533 description 2534 "Suppress advertisement of the prefixes associated 2535 with the interface."; 2536 } 2537 } 2538 grouping interface-common-config { 2539 description 2540 "Common configuration for all types of interfaces, 2541 including virtual links and sham links."; 2543 leaf hello-interval { 2544 type uint16 { 2545 range "1..65535"; 2546 } 2547 units seconds; 2548 description 2549 "Interval between hello packets in seconds."; 2550 } 2552 leaf dead-interval { 2553 type uint32 { 2554 range "1..2147483647"; 2555 } 2556 units seconds; 2557 must "../dead-interval > ../hello-interval" { 2558 error-message "The dead interval must be " 2559 + "larger than the hello interval"; 2560 description 2561 "The value MUST be greater than 'hello-internval'."; 2562 } 2563 description 2564 "Interval after which a neighbor is 2565 declared down in seconds."; 2566 } 2568 leaf retransmit-interval { 2569 type uint16 { 2570 range "1..3600"; 2571 } 2572 units seconds; 2573 description 2574 "Interval between retransmitting unacknowledged Link 2575 State Advertisements (LSAs) in seconds."; 2576 } 2578 leaf transmit-delay { 2579 type uint16 { 2580 range "1..3600"; 2581 } 2582 units seconds; 2583 description 2584 "Estimated time needed to transmit Link State Update 2585 packets on the interface in seconds."; 2587 } 2589 leaf lls { 2590 if-feature lls; 2591 type boolean; 2592 description 2593 "Enable/Disable link-local signaling (LLS) support."; 2594 } 2596 container ttl-security { 2597 if-feature ttl-security; 2598 description "TTL security check."; 2599 leaf enable { 2600 type boolean; 2601 description 2602 "Enable/Disable TTL security check."; 2603 } 2604 leaf hops { 2605 type uint8 { 2606 range "1..254"; 2607 } 2608 description 2609 "Maximum number of hops that an OSPF packet may 2610 have traversed before reception."; 2611 } 2612 } 2613 leaf enable { 2614 if-feature admin-control; 2615 type boolean; 2616 default true; 2617 description 2618 "Enable/disable protocol on the interface."; 2619 } 2621 container authentication { 2622 description "Authentication configuration."; 2623 choice auth-type-selection { 2624 description 2625 "Options for expressing authentication setting."; 2626 case auth-ipsec { 2627 when "../../../../../../../rt:type = 'ospf:ospfv3'" { 2628 description "Applied to OSPFv3 only."; 2629 } 2630 if-feature ospfv3-authentication-ipsec; 2631 leaf sa { 2632 type string; 2633 description 2634 "Security Association name."; 2636 } 2637 } 2638 case auth-trailer-key-chain { 2639 leaf key-chain { 2640 type key-chain:key-chain-ref; 2641 description 2642 "key-chain name."; 2643 } 2644 } 2645 case auth-trailer-key { 2646 leaf key { 2647 type string; 2648 description 2649 "Key string in ASCII format."; 2650 } 2651 leaf crypto-algorithm { 2652 type identityref { 2653 base key-chain:crypto-algorithm; 2654 } 2655 description 2656 "Cryptographic algorithm associated with key."; 2657 } 2658 } 2659 } 2660 } 2661 } // interface-common-config 2663 grouping interface-config { 2664 description "Configuration for real interfaces."; 2666 leaf interface-type { 2667 type enumeration { 2668 enum "broadcast" { 2669 description 2670 "Specify OSPF broadcast multi-access network."; 2671 } 2672 enum "non-broadcast" { 2673 description 2674 "Specify OSPF Non-Broadcast Multi-Access 2675 (NBMA) network."; 2676 } 2677 enum "point-to-multipoint" { 2678 description 2679 "Specify OSPF point-to-multipoint network."; 2680 } 2681 enum "point-to-point" { 2682 description 2683 "Specify OSPF point-to-point network."; 2685 } 2686 } 2687 description 2688 "Interface type."; 2689 } 2691 leaf passive { 2692 type boolean; 2693 description 2694 "Enable/Disable passive interface - a passive interface's 2695 prefix will be advertised but no neighbor adjacencies 2696 will be formed on the interface."; 2697 } 2699 leaf demand-circuit { 2700 if-feature demand-circuit; 2701 type boolean; 2702 description 2703 "Enable/Disable demand circuit."; 2704 } 2706 leaf priority { 2707 type uint8; 2708 description 2709 "Configure OSPF router priority."; 2710 } 2712 container multi-areas { 2713 if-feature multi-area-adj; 2714 description "Container for multi-area config."; 2715 list multi-area { 2716 key multi-area-id; 2717 description 2718 "Configure OSPF multi-area adjacency."; 2719 leaf multi-area-id { 2720 type area-id-type; 2721 description 2722 "Multi-area adjacency area ID."; 2723 } 2724 leaf cost { 2725 type uint16; 2726 description 2727 "Interface cost for multi-area adjacency."; 2728 } 2729 } 2730 } 2732 container static-neighbors { 2733 description "Statically configured neighbors."; 2735 list neighbor { 2736 key "identifier"; 2737 description 2738 "Specify a static OSPF neighbor."; 2740 leaf identifier { 2741 type inet:ip-address; 2742 description "Neighbor IPv4 address or router ID."; 2743 } 2745 leaf cost { 2746 type uint16 { 2747 range "1..65535"; 2748 } 2749 description "Neighbor cost."; 2750 } 2751 leaf poll-interval { 2752 type uint16 { 2753 range "1..65535"; 2754 } 2755 units seconds; 2756 description "Neighbor poll interval in seconds."; 2757 } 2758 leaf priority { 2759 type uint8 { 2760 range "1..255"; 2761 } 2762 description "Neighbor priority for DR election."; 2763 } 2764 } 2765 } 2767 leaf node-flag { 2768 if-feature node-flag; 2769 type boolean; 2770 default false; 2771 description 2772 "Set prefix as a node representative prefix."; 2773 } 2775 container bfd { 2776 if-feature bfd; 2777 description "BFD configuration."; 2778 leaf enable { 2779 type boolean; 2780 default false; 2781 description 2782 "True if BFD is enabled for the OSPF interface."; 2783 } 2784 } 2786 uses interface-fast-reroute-config; 2787 uses interface-common-config; 2788 uses interface-physical-link-config; 2789 } // grouping interface-config 2791 grouping neighbor-operation { 2792 description 2793 "OSPF neighbor operation data."; 2795 leaf address { 2796 type inet:ip-address; 2797 description 2798 "Neighbor address."; 2799 } 2800 leaf dr-router-id { 2801 type rt-types:router-id; 2802 description "Neighbor's Designated Router (DR) router ID."; 2803 } 2805 leaf dr-ip-addr { 2806 type inet:ip-address; 2807 description "Neighbor's Designated Router (DR) IP address."; 2808 } 2810 leaf bdr-router-id { 2811 type rt-types:router-id; 2812 description 2813 "Neighbor's Backup Designated Router (BDR) router ID."; 2814 } 2816 leaf bdr-ip-addr { 2817 type inet:ip-address; 2818 description 2819 "Neighbor's Backup Designated Router (BDR) IP Address."; 2820 } 2821 leaf state { 2822 type nbr-state-type; 2823 description 2824 "OSPF neighbor state."; 2825 } 2826 leaf dead-timer { 2827 type uint32; 2828 units "seconds"; 2829 description "This timer tracks the remaining time before 2830 the neighbor is declared dead."; 2831 } 2832 container statistics { 2833 description "Per neighbor statistics"; 2834 uses neighbor-stat; 2835 } 2836 } 2838 grouping interface-common-operation { 2839 description 2840 "OSPF interface common operation state."; 2841 reference "RFC2328 Section 9"; 2843 leaf state { 2844 type if-state-type; 2845 description "Interface state."; 2846 } 2848 leaf hello-timer { 2849 type uint32; 2850 units "seconds"; 2851 description "This timer tracks the remaining time before 2852 the next hello packet is sent."; 2853 } 2855 leaf wait-timer { 2856 type uint32; 2857 units "seconds"; 2858 description "This timer tracks the remaining time before 2859 the interface exits the Waiting state."; 2860 } 2862 leaf dr-router-id { 2863 type rt-types:router-id; 2864 description "Designated Router (DR) router ID."; 2865 } 2867 leaf dr-ip-addr { 2868 type inet:ip-address; 2869 description "Designated Router (DR) IP address."; 2870 } 2872 leaf bdr-router-id { 2873 type rt-types:router-id; 2874 description "Backup Designated Router (BDR) router ID."; 2875 } 2876 leaf bdr-ip-addr { 2877 type inet:ip-address; 2878 description "Backup Designated Router (BDR) IP Address."; 2879 } 2881 container statistics { 2882 description "Per interface statistics"; 2883 uses interface-stat; 2884 } 2886 container neighbors { 2887 description "All neighbors for the interface."; 2888 list neighbor { 2889 key "neighbor-router-id"; 2890 description 2891 "List of OSPF neighbors."; 2892 leaf neighbor-router-id { 2893 type rt-types:router-id; 2894 description 2895 "Neighbor router ID."; 2896 } 2897 uses neighbor-operation; 2898 } // list of OSPF neighbors 2899 } 2900 } // interface-common-operation 2902 grouping interface-operation { 2903 description 2904 "OSPF interface operation state."; 2905 reference "RFC2328 Section 9"; 2907 uses interface-common-operation; 2909 container database { 2910 description "Link scope LSA database."; 2911 list link-scope-lsa-type { 2912 key "lsa-type"; 2913 description 2914 "List OSPF link scope LSA databases."; 2915 leaf lsa-type { 2916 type uint16; 2917 description "OSPF link scope LSA type."; 2918 } 2919 container link-scope-lsas { 2920 description 2921 "All link scope LSAs of this LSA type."; 2922 list link-scope-lsa { 2923 key "lsa-id adv-router"; 2924 description "List of OSPF link scope LSAs"; 2925 uses lsa-key; 2926 uses lsa { 2927 refine "version/ospfv2/ospfv2" { 2928 must "../../../../../../../../../../../" 2929 + "rt:type = 'ospf:ospfv2'" { 2930 description "OSPFv2 LSA."; 2931 } 2932 } 2933 refine "version/ospfv3/ospfv3" { 2934 must "../../../../../../../../../../../" 2935 + "rt:type = 'ospf:ospfv3'" { 2936 description "OSPFv3 LSA."; 2937 } 2938 } 2939 } 2940 } 2941 } 2942 } // list link-scope-lsas 2943 } 2944 } 2946 grouping virtual-link-config { 2947 description 2948 "OSPF virtual link configuration state."; 2950 uses interface-common-config; 2951 } 2953 grouping virtual-link-operation { 2954 description 2955 "OSPF virtual link operation state."; 2957 leaf cost { 2958 type uint16 { 2959 range "1..65535"; 2960 } 2961 description 2962 "Virtual link interface cost."; 2963 } 2964 uses interface-common-operation; 2965 } 2967 grouping sham-link-config { 2968 description 2969 "OSPF sham link configuration state."; 2971 uses interface-common-config; 2972 uses interface-physical-link-config; 2973 } 2975 grouping sham-link-operation { 2976 description 2977 "OSPF sham link operation state."; 2979 uses interface-common-operation; 2980 } 2982 grouping af-area-config { 2983 description 2984 "OSPF address-family specific area config state."; 2986 container ranges { 2987 description "Container for summary ranges"; 2989 list range { 2990 key "prefix"; 2991 description 2992 "Summarize routes matching address/mask 2993 (Area Border Routers (ABRs) only)"; 2994 leaf prefix { 2995 type inet:ip-prefix; 2996 description 2997 "IPv4 or IPv6 prefix"; 2998 } 2999 leaf advertise { 3000 type boolean; 3001 description 3002 "Advertise or hide."; 3003 } 3004 leaf cost { 3005 type uint24 { 3006 range "0..16777214"; 3007 } 3008 description 3009 "Advertised cost of summary route."; 3010 } 3011 } 3012 } 3013 } 3015 grouping area-common-config { 3016 description 3017 "OSPF area common configuration state."; 3019 leaf summary { 3020 when "../area-type = 'ospf:stub' or " 3021 + "../area-type = 'ospf:nssa'" { 3022 description 3023 "Summary advertisement into the stub/NSSA area."; 3024 } 3025 type boolean; 3026 description 3027 "Enable/Disable summary advertisement into the stub or 3028 NSSA area."; 3029 } 3030 leaf default-cost { 3031 when "../area-type = 'ospf:stub' or " 3032 + "../area-type = 'ospf:nssa'" { 3033 description 3034 "Cost for LSA default route advertised into the 3035 stub or NSSA area."; 3036 } 3037 type uint32 { 3038 range "1..16777215"; 3039 } 3040 description 3041 "Set the summary default route cost for a 3042 stub or NSSA area."; 3043 } 3044 } 3046 grouping area-config { 3047 description 3048 "OSPF area configuration state."; 3050 container all-interfaces-inherit { 3051 if-feature interface-inheritance; 3052 description 3053 "Inheritance for all interfaces"; 3054 container interface { 3055 description 3056 "Interface config to be inherited by all 3057 interfaces in the area."; 3058 } 3059 } 3061 leaf area-type { 3062 type identityref { 3063 base area-type; 3064 } 3065 default normal; 3066 description 3067 "Area type."; 3069 } 3071 uses area-common-config; 3073 uses af-area-config { 3074 when "../../../operation-mode = " 3075 + "'ospf:ships-in-the-night'" { 3076 description 3077 "Ships in the night configuration."; 3078 } 3079 } 3080 } 3082 grouping area-operation { 3083 description 3084 "OSPF area operation state."; 3086 container statistics { 3087 description "Per area statistics"; 3088 uses area-stat; 3089 } 3091 container database { 3092 description "Area scope LSA database."; 3093 list area-scope-lsa-type { 3094 key "lsa-type"; 3095 description "List OSPF area scope LSA databases."; 3096 leaf lsa-type { 3097 type uint16; 3098 description "OSPF area scope LSA type."; 3099 } 3100 container area-scope-lsas { 3101 description 3102 "All area scope LSAs of an area scope 3103 LSA type."; 3104 list area-scope-lsa { 3105 key "lsa-id adv-router"; 3106 description "List of OSPF area scope LSAs"; 3107 uses lsa-key; 3108 uses lsa { 3109 refine "version/ospfv2/ospfv2" { 3110 must "../../../../../../../../../" 3111 + "rt:type = 'ospf:ospfv2'" { 3112 description "OSPFv2 LSA."; 3113 } 3114 } 3115 refine "version/ospfv3/ospfv3" { 3116 must "../../../../../../../../../" 3117 + "rt:type = 'ospf:ospfv3'" { 3118 description "OSPFv3 LSA."; 3119 } 3120 } 3121 } 3122 } 3123 } 3124 } // list area-scope-lsas 3125 } 3126 } 3128 grouping local-rib { 3129 description "Local-rib grouping."; 3130 container local-rib { 3131 description "Local-rib."; 3132 list route { 3133 key "prefix"; 3134 description "Routes"; 3135 leaf prefix { 3136 type inet:ip-prefix; 3137 description "Destination prefix."; 3138 } 3139 container next-hops { 3140 description "All next hops for the route."; 3141 list next-hop { 3142 key "next-hop"; 3143 description "List of next hop for the route"; 3144 leaf outgoing-interface { 3145 type if:interface-ref; 3146 description 3147 "Name of the outgoing interface."; 3148 } 3149 leaf next-hop { 3150 type inet:ip-address; 3151 description "Nexthop address."; 3152 } 3153 } 3154 } 3155 leaf metric { 3156 type uint32; 3157 description "Metric for this route."; 3158 } 3159 leaf route-type { 3160 type route-type; 3161 description "Route type for this route."; 3162 } 3163 leaf route-tag { 3164 type uint32; 3165 description "Route tag for this route."; 3166 } 3167 } 3168 } 3169 } 3171 grouping ietf-spf-delay-config { 3172 leaf initial-delay { 3173 type uint16; 3174 units msec; 3175 description 3176 "Delay used while in QUIET state."; 3177 } 3178 leaf short-delay { 3179 type uint16; 3180 units msec; 3181 description 3182 "Delay used while in SHORT_WAIT state."; 3183 } 3184 leaf long-delay { 3185 type uint16; 3186 units msec; 3187 description 3188 "Delay used while in LONG_WAIT state."; 3189 } 3190 leaf hold-down { 3191 type uint16; 3192 units msec; 3193 description 3194 "Timer used to consider an IGP stability period."; 3195 } 3196 leaf time-to-learn { 3197 type uint16; 3198 units msec; 3199 description 3200 "Duration used to learn all the IGP events 3201 related to a single component failure."; 3202 } 3203 description 3204 "Grouping for IETF SPF delay configuration."; 3205 } 3207 grouping ietf-spf-delay-operation { 3208 leaf current-state { 3209 type enumeration { 3210 enum "QUIET" { 3211 description "QUIET state"; 3212 } 3213 enum "SHORT_WAIT" { 3214 description "SHORT_WAIT state"; 3215 } 3216 enum "LONG_WAIT" { 3217 description "LONG_WAIT state"; 3218 } 3219 } 3220 description 3221 "Current state of the algorithm."; 3222 } 3223 leaf remaining-time-to-learn { 3224 type uint16; 3225 units "seconds"; 3226 description 3227 "Remaining time until time-to-learn timer fires."; 3228 } 3229 leaf remaining-hold-down { 3230 type uint16; 3231 units "seconds"; 3232 description 3233 "Remaining time until hold-down timer fires."; 3234 } 3235 leaf last-event-received { 3236 type yang:timestamp; 3237 description 3238 "Time of last IGP event received"; 3239 } 3240 leaf next-spf-time { 3241 type yang:timestamp; 3242 description 3243 "Time when next SPF has been scheduled."; 3244 } 3245 leaf last-spf-time { 3246 type yang:timestamp; 3247 description 3248 "Time of last SPF computation."; 3249 } 3250 description 3251 "Grouping for IETF SPF delay operational states."; 3252 } 3254 grouping node-tag-config { 3255 description 3256 "OSPF node tag config state."; 3257 container node-tags { 3258 if-feature node-tag; 3259 list node-tag { 3260 key tag; 3261 leaf tag { 3262 type uint32; 3263 description 3264 "Node tag value."; 3265 } 3266 description 3267 "List of tags."; 3268 } 3269 description 3270 "Container for node tags."; 3271 } 3272 } 3274 grouping instance-config { 3275 description 3276 "OSPF instance config state."; 3278 container all-areas-inherit { 3279 if-feature area-inheritance; 3280 description 3281 "Inheritance for all areas."; 3282 container area { 3283 description 3284 "Area config to be inherited by all areas."; 3285 } 3286 container interface { 3287 description 3288 "Interface config to be inherited by all interfaces 3289 in all areas."; 3290 } 3291 } 3293 leaf explicit-router-id { 3294 if-feature explicit-router-id; 3295 type rt-types:router-id; 3296 description 3297 "Defined in RFC 2328. A 32-bit number 3298 that uniquely identifies the router."; 3299 } 3301 container preference { 3302 description "Route preference config state."; 3303 choice scope { 3304 description 3305 "Options for expressing preference 3306 as single or multiple values."; 3307 case single-value { 3308 leaf all { 3309 type uint8; 3310 description 3311 "Preference for intra-area, inter-area and 3312 external routes."; 3313 } 3314 } 3315 case multi-values { 3316 choice granularity { 3317 description 3318 "Options for expressing preference 3319 for intra-area and inter-area routes."; 3320 case detail { 3321 leaf intra-area { 3322 type uint8; 3323 description 3324 "Preference for intra-area routes."; 3325 } 3326 leaf inter-area { 3327 type uint8; 3328 description 3329 "Preference for inter-area routes."; 3330 } 3331 } 3332 case coarse { 3333 leaf internal { 3334 type uint8; 3335 description 3336 "Preference for both intra-area and 3337 inter-area routes."; 3338 } 3339 } 3340 } 3341 leaf external { 3342 type uint8; 3343 description 3344 "Preference for external routes."; 3345 } 3346 } 3347 } 3348 } 3350 container nsr { 3351 if-feature nsr; 3352 description 3353 "Non-Stop Routing (NSR) config state."; 3354 leaf enable { 3355 type boolean; 3356 description 3357 "Enable/Disable NSR."; 3358 } 3359 } 3361 container graceful-restart { 3362 if-feature graceful-restart; 3363 description 3364 "Graceful restart config state."; 3365 leaf enable { 3366 type boolean; 3367 description 3368 "Enable/Disable graceful restart as defined in RFC 3623 3369 for OSPFv2 and RFC 5187 for OSPFv3."; 3370 } 3371 leaf helper-enable { 3372 type boolean; 3373 description 3374 "Enable graceful restart helper support for restarting 3375 routers (RFC 3623 Section 3)."; 3376 } 3377 leaf restart-interval { 3378 type uint16 { 3379 range "1..1800"; // Range is defined in RFC 3623. 3380 } 3381 units seconds; 3382 default "120"; // Default is defined in RFC 3623. 3383 description 3384 "Interval in seconds to attempt graceful restart prior 3385 to failing (RFC 3623 Section B.1)"; 3386 } 3387 leaf helper-strict-lsa-checking { 3388 type boolean; 3389 description 3390 "Terminate graceful restart when an LSA topology change 3391 is detected (RFC 3623 Section B.2)."; 3392 } 3393 } 3395 leaf enable { 3396 if-feature admin-control; 3397 type boolean; 3398 default true; 3399 description 3400 "Enable/Disable the protocol."; 3401 } 3403 container auto-cost { 3404 if-feature auto-cost; 3405 description 3406 "Interface Auto-cost configuration state."; 3407 leaf enable { 3408 type boolean; 3409 description 3410 "Enable/Disable interface auto-cost."; 3411 } 3412 leaf reference-bandwidth { 3413 when "../enable = 'true'" { 3414 description "Only when auto cost is enabled"; 3415 } 3416 type uint32 { 3417 range "1..4294967"; 3418 } 3419 units Mbits; 3420 description 3421 "Configure reference bandwidth used to automatically 3422 determine interface cost (Mbits). The cost is the 3423 reference bandwidth divided by the interface speed 3424 with 1 being the minimum cost."; 3425 } 3426 } 3428 container spf-control { 3429 leaf paths { 3430 if-feature max-ecmp; 3431 type uint16 { 3432 range "1..32"; 3433 } 3434 description 3435 "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; 3436 } 3437 container ietf-spf-delay { 3438 if-feature ietf-spf-delay; 3439 uses ietf-spf-delay-config; 3440 description 3441 "IETF spf delay algorithm configuration."; 3442 } 3443 description "SPF calculation control."; 3444 } 3446 container database-control { 3447 leaf max-lsa { 3448 if-feature max-lsa; 3449 type uint32 { 3450 range "1..4294967294"; 3451 } 3452 description 3453 "Maximum number of LSAs OSPF the router will accept."; 3454 } 3455 description "Database maintenance control."; 3456 } 3458 container stub-router { 3459 if-feature stub-router; 3460 description "Set maximum metric configuration"; 3462 choice trigger { 3463 description 3464 "Specific triggers which will enable stub 3465 router state."; 3466 container always { 3467 presence 3468 "Enables unconditional stub router support"; 3469 description 3470 "Unconditional stub router state (advertise 3471 transit links with max metric"; 3472 } 3473 } 3474 } 3476 container mpls { 3477 description 3478 "OSPF MPLS config state."; 3479 container te-rid { 3480 if-feature te-rid; 3481 description 3482 "Stable OSPF Router IP Address used for Traffic 3483 Engineering (TE)"; 3484 leaf ipv4-router-id { 3485 type inet:ipv4-address; 3486 description 3487 "Explicitly configure the TE IPv4 router ID."; 3488 } 3489 leaf ipv6-router-id { 3490 type inet:ipv6-address; 3491 description 3492 "Explicitly configure the TE IPv6 router ID."; 3493 } 3494 } 3495 container ldp { 3496 description 3497 "OSPF MPLS LDP config state."; 3498 leaf igp-sync { 3499 if-feature ldp-igp-sync; 3500 type boolean; 3501 description 3502 "Enable LDP IGP synchronization."; 3503 } 3504 } 3505 } 3506 uses instance-fast-reroute-config; 3507 uses node-tag-config; 3508 } 3510 grouping instance-operation { 3511 description 3512 "OSPF Address Family operation state."; 3514 leaf router-id { 3515 type rt-types:router-id; 3516 description 3517 "Defined in RFC 2328. A 32-bit number 3518 that uniquely identifies the router."; 3519 } 3521 uses local-rib; 3523 container statistics { 3524 description "Per instance statistics"; 3525 uses instance-stat; 3526 } 3528 container ietf-spf-delay { 3529 if-feature ietf-spf-delay; 3530 uses ietf-spf-delay-config; 3531 uses ietf-spf-delay-operation; 3532 description 3533 "IETF SPF delay operational states."; 3534 } 3536 container database { 3537 description "AS scope LSA database."; 3538 list as-scope-lsa-type { 3539 key "lsa-type"; 3540 description "List OSPF AS scope LSA databases."; 3541 leaf lsa-type { 3542 type uint16; 3543 description "OSPF AS scope LSA type."; 3544 } 3545 container as-scope-lsas { 3546 description "All AS scope of LSA of this LSA type."; 3547 list as-scope-lsa { 3548 key "lsa-id adv-router"; 3549 description "List of OSPF area scope LSAs"; 3550 uses lsa-key; 3551 uses lsa { 3552 refine "version/ospfv2/ospfv2" { 3553 must "../../../../../../../rt:type = " 3554 + "'ospf:ospfv2'" { 3555 description "OSPFv2 LSA."; 3556 } 3557 } 3558 refine "version/ospfv3/ospfv3" { 3559 must "../../../../../../../rt:type = " 3560 + "'ospf:ospfv3'" { 3561 description "OSPFv3 LSA."; 3562 } 3563 } 3564 } 3565 } 3566 } 3567 } // list as-scope-lsas 3568 } 3569 } 3571 grouping ospf-config { 3572 description 3573 "OSPF top configuration state."; 3575 container all-instances-inherit { 3576 if-feature instance-inheritance; 3577 description 3578 "Inheritance support to all instances."; 3579 container area { 3580 description 3581 "Area config to be inherited by all areas 3582 in all instances."; 3583 } 3584 container interface { 3585 description 3586 "Interface config to be inherited by all 3587 interfaces in all instances."; 3588 } 3589 } 3591 leaf operation-mode { 3592 type identityref { 3593 base operation-mode; 3594 } 3595 default ospf:ships-in-the-night; 3596 description 3597 "OSPF operation mode."; 3598 } 3599 } 3601 grouping ospf-operation { 3602 description 3603 "OSPF top operation state."; 3604 } 3606 grouping multi-topology-area-common-config { 3607 description 3608 "OSPF multi-topology area common configuration state."; 3609 leaf summary { 3610 when "../../../../../areas/area[area-id=current()/../area-id]/" 3611 + "area-type = 'ospf:stub' or " 3612 + "../../../../../areas/area[area-id=current()/../area-id]/" 3613 + "area-type = 'ospf:nssa'" { 3614 description 3615 "Summary advertisement into the stub/NSSA area."; 3616 } 3617 type boolean; 3618 description 3619 "Enable/Disable summary advertisement into the 3620 topology in the stub or NSSA area."; 3621 } 3622 leaf default-cost { 3623 when "../../../../../areas/area[area-id=current()/../area-id]/" 3624 + "area-type = 'ospf:stub' or " 3625 + "../../../../../areas/area[area-id=current()/../area-id]/" 3626 + "area-type = 'ospf:nssa'" { 3627 description 3628 "Cost for LSA default route advertised into the 3629 topology into the stub or NSSA area."; 3630 } 3631 type uint32 { 3632 range "1..16777215"; 3633 } 3634 description 3635 "Set the summary default route cost for a 3636 stub or NSSA area."; 3637 } 3638 } 3640 grouping multi-topology-area-config { 3641 description 3642 "OSPF multi-topology area configuration state."; 3644 uses multi-topology-area-common-config; 3645 uses af-area-config { 3646 when "../../../../../operation-mode = " 3647 + "'ospf:ships-in-the-night'" { 3648 description 3649 "Ships in the night configuration."; 3650 } 3651 } 3652 } 3654 grouping multi-topology-area-operation { 3655 description 3656 "OSPF multi-topology area operation state."; 3657 } 3659 grouping multi-topology-config { 3660 description 3661 "OSPF multi-topology configuration state."; 3662 } 3664 grouping multi-topology-operation { 3665 description 3666 "OSPF multi-topology operation state."; 3668 uses local-rib; 3669 } 3671 grouping multi-topology-interface-config { 3672 description 3673 "OSPF multi-topology configuration state."; 3675 leaf cost { 3676 type uint32; 3677 description 3678 "Interface cost for this topology."; 3679 } 3680 } 3682 grouping multi-topology-interface-operation { 3683 description 3684 "OSPF multi-topology operation state."; 3685 } 3687 grouping ospfv3-interface-config { 3688 description 3689 "OSPFv3 interface specific configuration state."; 3691 leaf instance-id { 3692 type uint8 { 3693 range "0 .. 31"; 3694 } 3695 description 3696 "OSPFv3 instance ID."; 3697 } 3698 } 3700 grouping ospfv3-interface-operation { 3701 description 3702 "OSPFv3 interface specific operation state."; 3704 leaf interface-id { 3705 type uint16; 3706 description 3707 "OSPFv3 interface ID."; 3708 } 3709 } 3711 augment "/rt:routing/rt:control-plane-protocols/" 3712 + "rt:control-plane-protocol" { 3713 when "rt:type = 'ospf:ospfv2' or rt:type = 'ospf:ospfv3'" { 3714 description 3715 "This augmentation is only valid for a routing protocol 3716 instance of OSPF (type 'ospfv2' or 'ospfv3')."; 3717 } 3718 description "OSPF augmentation."; 3720 container ospf { 3721 description 3722 "OSPF."; 3724 uses ospf-config; 3726 list instance { 3727 key "af"; 3728 description 3729 "An OSPF routing protocol instance."; 3731 leaf af { 3732 type identityref { 3733 base rt-types:address-family; 3734 } 3735 description 3736 "Address-family of the instance."; 3737 } 3739 uses instance-config; 3740 container areas { 3741 description "All areas."; 3742 list area { 3743 key "area-id"; 3744 description 3745 "List of OSPF areas"; 3746 leaf area-id { 3747 type area-id-type; 3748 description 3749 "Area ID."; 3750 } 3752 uses area-config; 3754 container virtual-links { 3755 when "../area-id = '0.0.0.0' and " 3756 + "../area-type = 'ospf:normal'" { 3757 description 3758 "Virutal links must be in backbone area."; 3759 } 3760 description "All virtual links."; 3761 list virtual-link { 3762 key "transit-area-id router-id"; 3763 description 3764 "OSPF virtual link"; 3765 leaf transit-area-id { 3766 type leafref { 3767 path "../../../area-id"; 3768 } 3769 must "current() != '0.0.0.0'" { 3770 error-message "Virtual link transit area must " 3771 + "be non-zero."; 3772 description 3773 "Virtual-link trasit area must be 3774 non-zero area."; 3775 } 3776 description 3777 "Virtual link tranist area ID."; 3778 } 3779 leaf router-id { 3780 type rt-types:router-id; 3781 description 3782 "Virtual Link remote endpoint router ID."; 3783 } 3785 uses virtual-link-config; 3786 } 3787 } 3788 container sham-links { 3789 if-feature pe-ce-protocol; 3790 description "All sham links."; 3791 list sham-link { 3792 key "local-id remote-id"; 3793 description 3794 "OSPF sham link"; 3795 leaf local-id { 3796 type inet:ip-address; 3797 description 3798 "Address of the local Sham Link endpoint."; 3799 } 3800 leaf remote-id { 3801 type inet:ip-address; 3802 description 3803 "Address of the remote Sham Link endpoint."; 3804 } 3805 uses sham-link-config; 3806 } 3807 } 3808 container interfaces { 3809 description "All interfaces."; 3810 list interface { 3811 key "name"; 3812 description 3813 "List of OSPF interfaces."; 3814 leaf name { 3815 type if:interface-ref; 3816 description 3817 "Interface name."; 3818 } 3819 uses interface-config; 3820 } // list of interfaces 3821 } 3822 } // list of areas 3823 } 3824 } // list of instance 3825 } // container ospf 3826 } 3828 augment "/rt:routing/rt:control-plane-protocols/" 3829 + "rt:control-plane-protocol/ospf:ospf/ospf:instance" { 3830 when "../../rt:type = 'ospf:ospfv2' or 3831 ../../rt:type = 'ospf:ospfv3'" { 3832 description 3833 "This augmentation is only valid for OSPF 3834 (type 'ospfv2' or 'ospfv3')."; 3835 } 3836 if-feature multi-topology; 3837 description 3838 "OSPF multi-topology instance configuration 3839 state augmentation."; 3840 container topologies { 3841 description "All topologies."; 3842 list topology { 3843 // Topology must be in the same routing-instance 3844 // and of same AF as the container. 3845 key "name"; 3846 description "OSPF topology."; 3847 leaf name { 3848 type leafref { 3849 path "../../../../../../../rt:ribs/rt:rib/rt:name"; 3850 } 3851 description "RIB"; 3852 } 3854 uses multi-topology-config; 3856 container areas { 3857 description "All areas in the topology."; 3858 list area { 3859 key "area-id"; 3860 description 3861 "List of OSPF areas"; 3862 leaf area-id { 3863 type area-id-type; 3864 description 3865 "Area ID."; 3866 } 3867 uses multi-topology-area-config; 3868 } 3869 } 3870 } 3871 } 3872 } 3874 augment "/rt:routing/rt:control-plane-protocols/" 3875 + "rt:control-plane-protocol/ospf:ospf/ospf:instance/" 3876 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 3877 when "../../../../../../rt:type = 'ospf:ospfv2'" { 3878 description 3879 "This augmentation is only valid for OSPFv2."; 3880 } 3881 if-feature ospf:multi-topology; 3882 description 3883 "OSPF multi-topology interface configuration state 3884 augmentation."; 3885 container topologies { 3886 description "All topologies for the interface."; 3887 list topology { 3888 key "name"; 3889 description "OSPF interface topology."; 3890 leaf name { 3891 type leafref { 3892 path "../../../../../../../../../../../" 3893 + "rt:ribs/rt:rib/rt:name"; 3894 } 3895 description 3896 "One of the topologies enabled on this interface."; 3897 } 3899 uses multi-topology-interface-config; 3900 } 3901 } 3902 } 3904 augment "/rt:routing/rt:control-plane-protocols/" 3905 + "rt:control-plane-protocol/ospf:ospf/ospf:instance/" 3906 + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { 3907 when "../../../../../../rt:type = 'ospf:ospfv3'" { 3908 description 3909 "This augmentation is only valid for OSPFv3."; 3910 } 3911 description 3912 "OSPFv3 interface specific configuration state 3913 augmentation."; 3914 uses ospfv3-interface-config; 3915 } 3917 augment "/rt:routing-state/" 3918 + "rt:control-plane-protocols/rt:control-plane-protocol" { 3919 when "rt:type = 'ospf:ospfv2' or " 3920 + "rt:type = 'ospf:ospfv3'" { 3921 description 3922 "This augmentation is only valid for a routing protocol 3923 instance of type 'ospfv2' or 'ospfv3'."; 3924 } 3925 description 3926 "OSPF operational state."; 3927 container ospf { 3928 description "OSPF"; 3930 uses ospf-config; 3931 uses ospf-operation; 3932 list instance { 3933 key "af"; 3934 description 3935 "An OSPF routing protocol instance."; 3937 leaf af { 3938 type identityref { 3939 base rt-types:address-family; 3940 } 3941 description 3942 "Address-family of the instance."; 3943 } 3945 uses instance-config; 3946 uses instance-operation; 3948 container areas { 3949 description "All areas"; 3950 list area { 3951 key "area-id"; 3952 description "List of OSPF areas"; 3953 leaf area-id { 3954 type area-id-type; 3955 description "Area ID."; 3956 } 3958 uses area-config; 3959 uses area-operation; 3961 container virtual-links { 3962 description "All virtual links."; 3963 list virtual-link { 3964 description 3965 "OSPF virtual link"; 3966 leaf transit-area-id { 3967 type leafref { 3968 path "../../../area-id"; 3969 } 3970 description 3971 "Virutal link transit area ID."; 3972 } 3973 leaf router-id { 3974 type rt-types:router-id; 3975 description 3976 "Virtual link router ID."; 3977 } 3979 uses virtual-link-config; 3980 uses virtual-link-operation; 3981 } 3982 } 3983 container sham-links { 3984 description "All sham links."; 3985 list sham-link { 3986 description 3987 "OSPF sham link"; 3988 leaf local-id { 3989 type inet:ip-address; 3990 description 3991 "Address of the local Sham Link endpoint."; 3992 } 3993 leaf remote-id { 3994 type inet:ip-address; 3995 description 3996 "Address of the remote Sham Link endpoint."; 3997 } 3998 uses sham-link-config; 3999 uses sham-link-operation; 4000 } 4001 } 4003 container interfaces { 4004 description "All interfaces in the area."; 4005 list interface { 4006 key "name"; 4007 description 4008 "List of OSPF interfaces."; 4009 leaf name { 4010 // Should it refer to config state leaf? 4011 type if:interface-ref; 4012 description "Interface name."; 4013 } 4015 uses interface-config; 4016 uses interface-operation; 4017 } // list of OSPF interfaces 4018 } 4019 } // list of OSPF areas 4020 } 4021 } // list of instances 4022 } // container ospf 4023 } 4025 augment "/rt:routing-state/" 4026 + "rt:control-plane-protocols/rt:control-plane-protocol/" 4027 + "ospf:ospf/ospf:instance" { 4029 when "../../rt:type = 'ospf:ospfv2'" { 4030 description 4031 "This augmentation is only valid for OSPFv2."; 4032 } 4033 if-feature multi-topology; 4034 description 4035 "OSPF multi-topology instance operation state 4036 augmentation."; 4037 container topologies { 4038 description "All topologies."; 4039 list topology { 4040 // Topology must be in the same routing-instance 4041 // and of same AF as the container. 4042 key "name"; 4043 description "OSPF topology."; 4044 leaf name { 4045 type leafref { 4046 path "../../../../../../../" 4047 + "rt:ribs/rt:rib/rt:name"; 4048 } 4049 description "RIB"; 4050 } 4052 uses multi-topology-config; 4053 uses multi-topology-operation; 4055 container areas { 4056 description "All areas in the topology."; 4057 list area { 4058 key "area-id"; 4059 description 4060 "List of OSPF areas"; 4061 leaf area-id { 4062 type area-id-type; 4063 description 4064 "Area ID."; 4065 } 4066 uses multi-topology-area-config; 4067 uses multi-topology-area-operation; 4068 } 4069 } 4070 } 4071 } 4072 } 4074 augment "/rt:routing-state/" 4075 + "rt:control-plane-protocols/rt:control-plane-protocol/" 4076 + "ospf:ospf/ospf:instance/ospf:areas/ospf:area/" 4077 + "ospf:interfaces/ospf:interface" { 4078 when "../../../../../../rt:type = 'ospf:ospfv2'" { 4079 description 4080 "This augmentation is only valid for OSPFv2."; 4081 } 4082 if-feature ospf:multi-topology; 4083 description 4084 "OSPF multi-topology interface operation state 4085 augmentation."; 4086 container topologies { 4087 description "All topologies."; 4088 list topology { 4089 key "name"; 4090 description "OSPF interface topology."; 4091 leaf name { 4092 type leafref { 4093 path "../../../../../../../../../../../" 4094 + "rt:ribs/rt:rib/rt:name"; 4095 } 4096 description 4097 "One of the topologies enabled on this interface."; 4098 } 4099 uses multi-topology-interface-config; 4100 uses multi-topology-interface-operation; 4101 } 4102 } 4103 } 4105 augment "/rt:routing-state/" 4106 + "rt:control-plane-protocols/rt:control-plane-protocol/" 4107 + "ospf:ospf/ospf:instance/ospf:areas/ospf:area/" 4108 + "ospf:interfaces/ospf:interface" { 4109 when "../../../../../../rt:type = 'ospf:ospfv3'" { 4110 description 4111 "This augmentation is only valid for OSPFv3."; 4112 } 4113 description 4114 "OSPFv3 interface specific operation state 4115 augmentation."; 4116 uses ospfv3-interface-config; 4117 uses ospfv3-interface-operation; 4118 } 4120 grouping route-content { 4121 description 4122 "This grouping defines OSPF-specific route attributes."; 4123 leaf metric { 4124 type uint32; 4125 description "OSPF route metric."; 4126 } 4127 leaf tag { 4128 type uint32; 4129 default "0"; 4130 description "OSPF route tag."; 4131 } 4132 leaf route-type { 4133 type route-type; 4134 description "OSPF route type"; 4135 } 4136 } 4138 augment "/rt:routing-state/" 4139 + "rt:ribs/rt:rib/rt:routes/rt:route" { 4140 when "rt:source-protocol = 'ospf:ospfv2' or " 4141 + "rt:source-protocol = 'ospf:ospfv3'" { 4142 description 4143 "This augmentation is only valid for a routes whose 4144 source protocol is OSPF."; 4145 } 4146 description 4147 "OSPF-specific route attributes."; 4148 uses route-content; 4149 } 4151 /* 4152 * RPCs 4153 */ 4155 rpc clear-neighbor { 4156 description 4157 "This RPC request clears a particular 4158 set of OSPF neighbors. If the operation 4159 fails for OSPF internal reason, then 4160 error-tag and error-app-tag should be set 4161 to a meaningful value."; 4162 input { 4163 leaf routing-protocol-name { 4164 type leafref { 4165 path "/rt:routing/rt:control-plane-protocols/" 4166 + "rt:control-plane-protocol/rt:name"; 4167 } 4168 mandatory "true"; 4169 description 4170 "Name of the OSPF protocol instance which information 4171 is being queried. 4173 If the OSPF instance with name equal to the 4174 value of this parameter doesn't exist, then this 4175 operation SHALL fail with error-tag 'data-missing' 4176 and error-app-tag 4177 'routing-protocol-instance-not-found'."; 4178 } 4180 leaf interface { 4181 type if:interface-ref; 4182 description 4183 "Name of the OSPF interface. 4185 If the OSPF interface with name equal to the 4186 value of this parameter doesn't exist, then this 4187 operation SHALL fail with error-tag 'data-missing' 4188 and error-app-tag 4189 'ospf-interface-not-found'."; 4190 } 4191 } 4192 } 4194 rpc clear-database { 4195 description 4196 "This RPC request clears a particular 4197 OSPF database. If the operation 4198 fails for OSPF internal reason, then 4199 error-tag and error-app-tag should be set 4200 to a meaningful value."; 4201 input { 4202 leaf routing-protocol-name { 4203 type leafref { 4204 path "/rt:routing/rt:control-plane-protocols/" 4205 + "rt:control-plane-protocol/rt:name"; 4206 } 4207 mandatory "true"; 4208 description 4209 "Name of the OSPF protocol instance whose 4210 information is being queried. 4212 If the OSPF instance with name equal to the 4213 value of this parameter doesn't exist, then this 4214 operation SHALL fail with error-tag 'data-missing' 4215 and error-app-tag 4216 'routing-protocol-instance-not-found'."; 4217 } 4218 } 4219 } 4220 /* 4221 * Notifications 4222 */ 4224 grouping notification-instance-hdr { 4225 description 4226 "This group describes common instance specific 4227 data for notifications."; 4229 leaf routing-protocol-name { 4230 type leafref { 4231 path "/rt:routing/rt:control-plane-protocols/" 4232 + "rt:control-plane-protocol/rt:name"; 4233 } 4234 must "/rt:routing/rt:control-plane-protocols/" 4235 + "rt:control-plane-protocol[rt:name=current()]/" 4236 + "rt:type = 'ospf:ospfv2' or " 4237 + "/rt:routing/rt:control-plane-protocols/" 4238 + "rt:control-plane-protocol[rt:name=current()]/" 4239 + "rt:type = 'ospf:ospfv3'"; 4240 description 4241 "OSPF routing protocol instance name."; 4242 } 4244 leaf af { 4245 type leafref { 4246 path "/rt:routing/" 4247 + "rt:control-plane-protocols/rt:control-plane-protocol" 4248 + "[rt:name=current()/../routing-protocol-name]/" 4249 + "ospf:ospf/ospf:instance/af"; 4250 } 4251 description 4252 "Address family of the OSPF instance."; 4253 } 4254 } 4256 grouping notification-interface { 4257 description 4258 "This grouping provides the interface information 4259 for the notifications."; 4261 choice if-link-type-selection { 4262 description 4263 "Options for link type."; 4264 container interface { 4265 description "Normal interface."; 4266 leaf interface { 4267 type if:interface-ref; 4268 description "Interface."; 4269 } 4270 } 4271 container virtual-link { 4272 description "virtual-link."; 4273 leaf transit-area-id { 4274 type area-id-type; 4275 description "Area ID."; 4276 } 4277 leaf neighbor-router-id { 4278 type rt-types:router-id; 4279 description "Neighbor Router ID."; 4280 } 4281 } 4282 container sham-link { 4283 description "sham-link."; 4284 leaf area-id { 4285 type area-id-type; 4286 description "Area ID."; 4287 } 4288 leaf local-ip-addr { 4289 type inet:ip-address; 4290 description "Sham link local address."; 4291 } 4292 leaf remote-ip-addr { 4293 type inet:ip-address; 4294 description "Sham link remote address."; 4295 } 4296 } 4297 } 4298 } 4300 grouping notification-neighbor { 4301 description 4302 "This grouping provides the neighbor information 4303 for the notifications."; 4305 leaf neighbor-router-id { 4306 type rt-types:router-id; 4307 description "Neighbor Router ID."; 4308 } 4310 leaf neighbor-ip-addr { 4311 type yang:dotted-quad; 4312 description "Neighbor address."; 4313 } 4314 } 4315 notification if-state-change { 4316 uses notification-instance-hdr; 4317 uses notification-interface; 4319 leaf state { 4320 type if-state-type; 4321 description "Interface state."; 4322 } 4323 description 4324 "This notification is sent when an interface 4325 state change is detected."; 4326 } 4328 notification if-config-error { 4329 uses notification-instance-hdr; 4330 uses notification-interface; 4332 leaf packet-source { 4333 type yang:dotted-quad; 4334 description "Source address."; 4335 } 4337 leaf packet-type { 4338 type packet-type; 4339 description "OSPF packet type."; 4340 } 4342 leaf error { 4343 type enumeration { 4344 enum "badVersion" { 4345 description "Bad version."; 4346 } 4347 enum "areaMismatch" { 4348 description "Area mistmatch."; 4349 } 4350 enum "unknownNbmaNbr" { 4351 description "Unknown NBMA neighbor."; 4352 } 4353 enum "unknownVirtualNbr" { 4354 description "Unknown virtual link neighbor."; 4355 } 4356 enum "authTypeMismatch" { 4357 description "Auth type mismatch."; 4358 } 4359 enum "authFailure" { 4360 description "Auth failure."; 4361 } 4362 enum "netMaskMismatch" { 4363 description "Network mask mismatch."; 4364 } 4365 enum "helloIntervalMismatch" { 4366 description "Hello interval mismatch."; 4367 } 4368 enum "deadIntervalMismatch" { 4369 description "Dead interval mismatch."; 4370 } 4371 enum "optionMismatch" { 4372 description "Option mismatch."; 4373 } 4374 enum "mtuMismatch" { 4375 description "MTU mismatch."; 4376 } 4377 enum "duplicateRouterId" { 4378 description "Duplicate router ID."; 4379 } 4380 enum "noError" { 4381 description "No error."; 4382 } 4383 } 4384 description "Error code."; 4385 } 4386 description 4387 "This notification is sent when interface 4388 config error is detected."; 4389 } 4391 notification nbr-state-change { 4392 uses notification-instance-hdr; 4393 uses notification-interface; 4394 uses notification-neighbor; 4396 leaf state { 4397 type nbr-state-type; 4398 description "Neighbor state."; 4399 } 4401 description 4402 "This notification is sent when neighbor 4403 state change is detected."; 4404 } 4406 notification nbr-restart-helper-status-change { 4407 uses notification-instance-hdr; 4408 uses notification-interface; 4409 uses notification-neighbor; 4410 leaf status { 4411 type restart-helper-status-type; 4412 description "Restart helper status."; 4413 } 4415 leaf age { 4416 type uint32; 4417 units seconds; 4418 description 4419 "Remaining time in current OSPF graceful restart 4420 interval, if the router is acting as a restart 4421 helper for the neighbor."; 4422 } 4424 leaf exit-reason { 4425 type restart-exit-reason-type; 4426 description 4427 "Restart helper exit reason."; 4428 } 4429 description 4430 "This notification is sent when a neighbor restart 4431 helper status change is detected."; 4432 } 4434 notification if-rx-bad-packet { 4435 uses notification-instance-hdr; 4436 uses notification-interface; 4438 leaf packet-source { 4439 type yang:dotted-quad; 4440 description "Source address."; 4441 } 4443 leaf packet-type { 4444 type packet-type; 4445 description "OSPF packet type."; 4446 } 4448 description 4449 "This notification is sent when an OSPF packet that 4450 cannot be parsed is received on an OSPF interface."; 4451 } 4453 notification lsdb-approaching-overflow { 4454 uses notification-instance-hdr; 4456 leaf ext-lsdb-limit { 4457 type uint32; 4458 description 4459 "The maximum number of non-default AS-external LSAs 4460 entries that can be stored in the link state database."; 4461 } 4463 description 4464 "This notification is sent when the number of LSAs 4465 in the router's link state database has exceeded 4466 ninety percent of the ext-lsdb-limit."; 4467 } 4469 notification lsdb-overflow { 4470 uses notification-instance-hdr; 4472 leaf ext-lsdb-limit { 4473 type uint32; 4474 description 4475 "The maximum number of non-default AS-external LSAs 4476 entries that can be stored in the link state database."; 4477 } 4479 description 4480 "This notification is sent when the number of LSAs 4481 in the router's link state database has exceeded 4482 ext-lsdb-limit."; 4483 } 4485 notification nssa-translator-status-change { 4486 uses notification-instance-hdr; 4488 leaf area-id { 4489 type area-id-type; 4490 description "Area ID."; 4491 } 4493 leaf status { 4494 type nssa-translator-state-type; 4495 description 4496 "NSSA translator status."; 4497 } 4499 description 4500 "This notification is sent when there is a change 4501 in the router's role in translating OSPF NSSA LSAs 4502 to OSPF AS-External LSAs."; 4503 } 4505 notification restart-status-change { 4506 uses notification-instance-hdr; 4508 leaf status { 4509 type restart-status-type; 4510 description 4511 "Restart status."; 4512 } 4514 leaf restart-interval { 4515 type uint16 { 4516 range "1..1800"; 4517 } 4518 units seconds; 4519 default "120"; 4520 description 4521 "Restart interval."; 4522 } 4524 leaf exit-reason { 4525 type restart-exit-reason-type; 4526 description 4527 "Restart exit reason."; 4528 } 4530 description 4531 "This notification is sent when the graceful restart 4532 state for the router has changed."; 4533 } 4534 } 4535 4537 4. Security Considerations 4539 The data model defined does not create any security implications. 4541 This draft does not change any underlying security issues inherent in 4542 [RFC8022]. 4544 5. Acknowledgements 4546 The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, 4547 Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and 4548 Alan Davey for their thorough reviews and helpful comments. 4550 This document was produced using Marshall Rose's xml2rfc tool. 4552 6. References 4554 6.1. Normative References 4556 [RFC1793] Moy, J., "Extending OSPF to Support Demand Circuits", 4557 RFC 1793, DOI 10.17487/RFC1793, April 1995, 4558 . 4560 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 4561 Requirement Levels", BCP 14, RFC 2119, 4562 DOI 10.17487/RFC2119, March 1997, 4563 . 4565 [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, 4566 DOI 10.17487/RFC2328, April 1998, 4567 . 4569 [RFC3101] Murphy, P., "The OSPF Not-So-Stubby Area (NSSA) Option", 4570 RFC 3101, DOI 10.17487/RFC3101, January 2003, 4571 . 4573 [RFC3623] Moy, J., Pillay-Esnault, P., and A. Lindem, "Graceful OSPF 4574 Restart", RFC 3623, DOI 10.17487/RFC3623, November 2003, 4575 . 4577 [RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering 4578 (TE) Extensions to OSPF Version 2", RFC 3630, 4579 DOI 10.17487/RFC3630, September 2003, 4580 . 4582 [RFC4577] Rosen, E., Psenak, P., and P. Pillay-Esnault, "OSPF as the 4583 Provider/Customer Edge Protocol for BGP/MPLS IP Virtual 4584 Private Networks (VPNs)", RFC 4577, DOI 10.17487/RFC4577, 4585 June 2006, . 4587 [RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed., 4588 Coltun, R., and F. Baker, "OSPF Version 2 Management 4589 Information Base", RFC 4750, DOI 10.17487/RFC4750, 4590 December 2006, . 4592 [RFC5187] Pillay-Esnault, P. and A. Lindem, "OSPFv3 Graceful 4593 Restart", RFC 5187, DOI 10.17487/RFC5187, June 2008, 4594 . 4596 [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF 4597 for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, 4598 . 4600 [RFC5643] Joyal, D., Ed. and V. Manral, Ed., "Management Information 4601 Base for OSPFv3", RFC 5643, DOI 10.17487/RFC5643, August 4602 2009, . 4604 [RFC5838] Lindem, A., Ed., Mirtorabi, S., Roy, A., Barnes, M., and 4605 R. Aggarwal, "Support of Address Families in OSPFv3", 4606 RFC 5838, DOI 10.17487/RFC5838, April 2010, 4607 . 4609 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 4610 the Network Configuration Protocol (NETCONF)", RFC 6020, 4611 DOI 10.17487/RFC6020, October 2010, 4612 . 4614 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 4615 and A. Bierman, Ed., "Network Configuration Protocol 4616 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 4617 . 4619 [RFC6565] Pillay-Esnault, P., Moyer, P., Doyle, J., Ertekin, E., and 4620 M. Lundberg, "OSPFv3 as a Provider Edge to Customer Edge 4621 (PE-CE) Routing Protocol", RFC 6565, DOI 10.17487/RFC6565, 4622 June 2012, . 4624 [RFC7223] Bjorklund, M., "A YANG Data Model for Interface 4625 Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, 4626 . 4628 [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 4629 Management", RFC 8022, DOI 10.17487/RFC8022, November 4630 2016, . 4632 6.2. Informative References 4634 [I-D.ietf-rtgwg-yang-key-chain] 4635 Lindem, A., Qu, Y., Yeung, D., Chen, I., Zhang, Z., and Y. 4636 Yang, "Routing Key Chain YANG Data Model", draft-ietf- 4637 rtgwg-yang-key-chain-15 (work in progress), February 2017. 4639 Appendix A. Contributors' Addreses 4641 Dean Bogdanovic 4642 Volta Networks, Inc. 4644 EMail: dean@voltanet.io 4646 Kiran Koushik Agrahara Sreenivasa 4647 Cisco Systems 4648 12515 Research Blvd, Bldg 4 4649 Austin, TX 78681 4650 USA 4652 EMail: kkoushik@cisco.com 4654 Authors' Addresses 4656 Derek Yeung 4657 Arrcus 4659 EMail: derek@arrcus.com 4661 Yingzhen Qu 4662 Huawei 4663 2330 Central Expressway 4664 Santa Clara, CA 95050 4665 USA 4667 EMail: yingzhen.qu@huawei.com 4669 Jeffrey Zhang 4670 Juniper Networks 4671 10 Technology Park Drive 4672 Westford, MA 01886 4673 USA 4675 EMail: zzhang@juniper.net 4677 Ing-Wher Chen 4678 Jabil 4680 EMail: ing-wher_chen@jabil.com 4681 Acee Lindem 4682 Cisco Systems 4683 301 Midenhall Way 4684 Cary, NC 27513 4686 EMail: acee@cisco.com