| < draft-ietf-ospf-yang-09.txt | draft-ietf-ospf-yang-29.txt > | |||
|---|---|---|---|---|
| Internet D. Yeung | Internet D. Yeung | |||
| Internet-Draft Arrcus | Internet-Draft Arrcus | |||
| Intended status: Standards Track Y. Qu | Intended status: Standards Track Y. Qu | |||
| Expires: May 3, 2018 Huawei | Expires: April 19, 2020 Futurewei | |||
| J. Zhang | J. Zhang | |||
| Juniper Networks | Juniper Networks | |||
| I. Chen | I. Chen | |||
| Jabil | The MITRE Corporation | |||
| A. Lindem | A. Lindem | |||
| Cisco Systems | Cisco Systems | |||
| October 30, 2017 | October 17, 2019 | |||
| Yang Data Model for OSPF Protocol | YANG Data Model for OSPF Protocol | |||
| draft-ietf-ospf-yang-09 | draft-ietf-ospf-yang-29 | |||
| Abstract | Abstract | |||
| This document defines a YANG data model that can be used to configure | This document defines a YANG data model that can be used to configure | |||
| and manage OSPF. | and manage OSPF. The model is based on YANG 1.1 as defined in RFC | |||
| 7950 and conforms to the Network Management Datastore Architecture | ||||
| (NMDA) as described in RFC 8342. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on May 3, 2018. | This Internet-Draft will expire on April 19, 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2019 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | |||
| 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 | ||||
| 2. Design of Data Model . . . . . . . . . . . . . . . . . . . . 3 | 2. Design of Data Model . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. OSPF Operational State . . . . . . . . . . . . . . . . . 3 | 2.1. OSPF Operational State . . . . . . . . . . . . . . . . . 3 | |||
| 2.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.3. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 5 | 2.3. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.4. Optional Features . . . . . . . . . . . . . . . . . . . . 5 | 2.4. Optional Features . . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.5. OSPF Router Configuration/Operational State . . . . . . . 5 | 2.5. OSPF Router Configuration/Operational State . . . . . . . 7 | |||
| 2.6. OSPF Instance Configuration/Operational State . . . . . . 5 | 2.6. OSPF Area Configuration/Operational State . . . . . . . . 10 | |||
| 2.7. OSPF Area Configuration/Operational State . . . . . . . . 8 | 2.7. OSPF Interface Configuration/Operational State . . . . . 16 | |||
| 2.8. OSPF Interface Configuration/Operational State . . . . . 13 | 2.8. OSPF Notifications . . . . . . . . . . . . . . . . . . . 19 | |||
| 2.9. OSPF notification . . . . . . . . . . . . . . . . . . . . 16 | 2.9. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 23 | |||
| 2.10. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 20 | 3. OSPF YANG Module . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 3. OSPF Yang Module . . . . . . . . . . . . . . . . . . . . . . 20 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 120 | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 100 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 123 | |||
| 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 101 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 123 | |||
| 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 101 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 124 | |||
| 6.1. Normative References . . . . . . . . . . . . . . . . . . 101 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 124 | |||
| 6.2. Informative References . . . . . . . . . . . . . . . . . 103 | 7.2. Informative References . . . . . . . . . . . . . . . . . 129 | |||
| Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 104 | Appendix A. Contributors' Addresses . . . . . . . . . . . . . . 131 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 104 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 131 | |||
| 1. Overview | 1. Overview | |||
| YANG [RFC6020] is a data definition language used to define the | YANG [RFC6020][RFC7950] is a data definition language used to define | |||
| contents of a conceptual data store that allows networked devices to | the contents of a conceptual data store that allows networked devices | |||
| be managed using NETCONF [RFC6241]. YANG is proving relevant beyond | to be managed using NETCONF [RFC6241], RESTCONF [RFC8040], and other | |||
| its initial confines, as bindings to other interfaces (e.g., ReST) | Network Management protocols. Furthermore, YANG data models can be | |||
| and encodings other than XML (e.g., JSON) are being defined. | used as the basis for implementation of other interfaces, such as CLI | |||
| Furthermore, YANG data models can be used as the basis for | and programmatic APIs. | |||
| implementation of other interfaces, such as CLI and programmatic | ||||
| APIs. | ||||
| This document defines a YANG data model that can be used to configure | This document defines a YANG data model that can be used to configure | |||
| and manage OSPF and it is an augmentation to the core routing data | and manage OSPF and it is an augmentation to the core routing data | |||
| model. A core routing data model is defined in [RFC8022], and it | model. It fully conforms to the Network Management Datastore | |||
| provides the basis for the development of data models for routing | Architecture (NMDA) [RFC8342]. A core routing data model is defined | |||
| protocols. The interface data model is defined in [RFC7223] and is | in [RFC8349], and it provides the basis for the development of data | |||
| used for referencing interfaces from the routing protocol. The key- | models for routing protocols. The interface data model is defined in | |||
| chain data model used for OSPF authentication is defined in [RFC8177] | [RFC8343] and is used for referencing interfaces from the routing | |||
| and provides both a reference to configured key-chains and an | protocol. The key-chain data model used for OSPF authentication is | |||
| enumeration of cryptographic algorithms. | defined in [RFC8177] and provides both a reference to configured key- | |||
| chains and an enumeration of cryptographic algorithms. | ||||
| Both OSPFv2 [RFC2328] and OSPFv3 [RFC5340] are supported. In | Both OSPFv2 [RFC2328] and OSPFv3 [RFC5340] are supported. In | |||
| addition to the core OSPF protocol, features described in other OSPF | addition to the core OSPF protocol, features described in other OSPF | |||
| RFCs are also supported. These includes demand circuit [RFC1793], | RFCs are also supported. These includes demand circuit [RFC1793], | |||
| traffic engineering [RFC3630], multiple address family [RFC5838], | traffic engineering [RFC3630], multiple address family [RFC5838], | |||
| graceful restart [RFC3623] [RFC5187], NSSA [RFC3101], and OSPF(v3) as | graceful restart [RFC3623] [RFC5187], NSSA [RFC3101], and OSPFv2 or | |||
| a PE-CE Protocol [RFC4577], [RFC6565]. These non-core features are | OSPFv3 as a PE-CE Protocol [RFC4577], [RFC6565]. These non-core | |||
| optional in the OSPF data model. | features are optional in the OSPF data model. | |||
| 1.1. Requirements Language | 1.1. Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| document are to be interpreted as described in [RFC2119]. | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
| capitals, as shown here. | ||||
| 1.2. Tree Diagrams | ||||
| This document uses the graphical representation of data models | ||||
| defined in [RFC8340]. | ||||
| 2. Design of Data Model | 2. Design of Data Model | |||
| Although the basis of OSPF configuration elements like routers, | Although the basis of OSPF configuration elements like routers, | |||
| areas, and interfaces remains the same, the detailed configuration | areas, and interfaces remains the same, the detailed configuration | |||
| model varies among router vendors. Differences are observed in terms | model varies among router vendors. Differences are observed in terms | |||
| of how the protocol engine is tied to the routing domain, how | of how the protocol instance is tied to the routing domain and how | |||
| multiple protocol engines are be instantiated among others. | multiple protocol instances are be instantiated among others. | |||
| The goal of this document is to define a data model that provides a | The goal of this document is to define a data model that provides a | |||
| common user interface to the OSPFv2 and OSPFv3 protocols. There is | common user interface to the OSPFv2 and OSPFv3 protocols. There is | |||
| very little information that is designated as "mandatory", providing | very little information that is designated as "mandatory", providing | |||
| freedom for vendors to adapt this data model to their respective | freedom for vendors to adapt this data model to their respective | |||
| product implementations. | product implementations. | |||
| 2.1. OSPF Operational State | 2.1. OSPF Operational State | |||
| The OSPF operational state is included in the same tree as OSPF | The OSPF operational state is included in the same tree as OSPF | |||
| configuration consistent with Network Management Datastore | configuration consistent with the Network Management Datastore | |||
| Architecture [I-D.ietf-netmod-revised-datastores]. Consequently, | Architecture [RFC8342]. Consequently, only the routing container in | |||
| only the routing container in the ietf-routing model [RFC8022] is | the ietf-routing model [RFC8349] is augmented. The routing-state | |||
| augmented. The routing-state container is not augmented. | container is not augmented. | |||
| 2.2. Overview | 2.2. Overview | |||
| The OSPF YANG module defined in this document has all the common | The OSPF YANG module defined in this document has all the common | |||
| building blocks for the OSPF protocol. | building blocks for the OSPF protocol. | |||
| The OSPF YANG module augments the /routing/control-plane-protocols/ | The OSPF YANG module augments the /routing/control-plane-protocols/ | |||
| control-plane-protocol path defined in the ietf-routing module. | control-plane-protocol path defined in the ietf-routing module. The | |||
| ietf-ospf model defines a single instance of OSPF which may be | ||||
| instantiated as an OSPFv2 or OSPFv3 instance. Multiple instances are | ||||
| instantiated as multiple control-plane protocols instances. | ||||
| module: ietf-ospf | module: ietf-ospf | |||
| augment /rt:routing/rt:control-plane-protocols/ | augment /rt:routing/rt:control-plane-protocols/ | |||
| rt:control-plane-protocol: | rt:control-plane-protocol: | |||
| +--rw ospf | +--rw ospf | |||
| . | . | |||
| . | . | |||
| +--rw operation-mode? identityref | +--rw af? identityref | |||
| +--rw instance* [af] | ||||
| . | . | |||
| . | . | |||
| +--rw areas | +--rw areas | |||
| | +--rw area* [area-id] | | +--rw area* [area-id] | |||
| | +--rw area-id area-id-type | | +--rw area-id area-id-type | |||
| | . | | . | |||
| | . | | . | |||
| | +--rw virtual-links | | +--rw virtual-links | |||
| | | +--rw virtual-link* [transit-area-id router-id] | | | +--rw virtual-link* [transit-area-id router-id] | |||
| | | . | | | . | |||
| | | . | | | . | |||
| | +--rw sham-links {pe-ce-protocol}? | | +--rw sham-links {pe-ce-protocol}? | |||
| | | +--rw sham-link* [local-id remote-id] | | | +--rw sham-link* [local-id remote-id] | |||
| | | . | | | . | |||
| | | . | | | . | |||
| | +--rw interfaces | | +--rw interfaces | |||
| | +--rw interface* [name] | | +--rw interface* [name] | |||
| | . | | . | |||
| | . | | . | |||
| +--rw topologies {multi-topology}? | +--rw topologies {multi-topology}? | |||
| +--rw topology* [name] | +--rw topology* [name] | |||
| . | . | |||
| . | . | |||
| The ospf module is intended to match to the vendor specific OSPF | ||||
| configuration construct that is identified by the local identifier | ||||
| 'name'. The field 'version' allows support for OSPFv2 and OSPFv3. | ||||
| The ospf container includes one or more OSPF protocol engines, each | The ospf container includes one OSPF protocol instance. The instance | |||
| enclosed in a separate instance entity. Each instance includes | includes OSPF router level configuration and operational state. Each | |||
| information for the routing domain based on the [routing-instance af] | OSPF instance maps to a control-plane-protcol instance as defined in | |||
| specification. There is no default routing domain assumed by the | [RFC8349]. | |||
| data model. For example, to enable OSPF on a vendor's default IPv4 | ||||
| routing domain, an explicit instance entity with a specification like | ||||
| ["default" "ipv4-unicast"] is required. The instance also contains | ||||
| OSPF router level configuration and operational state. | ||||
| The instance/area and instance/area/interface containers respectively | The area and area/interface containers define the OSPF configuration | |||
| define the OSPF configuration and operational state for OSPF areas | and operational state for OSPF areas and interfaces respectively. | |||
| and interfaces. | ||||
| The instance/topology container defines the OSPF configuration and | The topologies container defines the OSPF configuration and | |||
| operational state for OSPF topologies when the multi-topology feature | operational state for OSPF topologies when the multi-topology feature | |||
| is supported. | is supported. | |||
| 2.3. OSPFv2 and OSPFv3 | 2.3. OSPFv2 and OSPFv3 | |||
| The data model defined herein supports both OSPFv2 and OSPFv3. | The data model defined herein supports both OSPFv2 and OSPFv3. | |||
| The field 'version' is used to indicate the OSPF version and is | The field 'version' is used to indicate the OSPF version and is | |||
| mandatory. Based on the configured version, the data model varies to | mandatory. Based on the configured version, the data model varies to | |||
| accommodate the differences between OSPFv2 and OSPFv3. | accommodate the differences between OSPFv2 and OSPFv3. | |||
| 2.4. Optional Features | 2.4. Optional Features | |||
| Optional features are beyond the basic OSPF configuration and it is | Optional features are beyond the basic OSPF configuration and it is | |||
| the responsibility of each vendor to decide whether to support a | the responsibility of each vendor to decide whether to support a | |||
| given feature on a particular device. | given feature on a particular device. | |||
| This model defines a number of features, such as NSR, max-LSA, etc. | This model defines the following optional features: | |||
| It is expected that vendors will support additional features through | ||||
| vendor-specific augmentations. | ||||
| 2.5. OSPF Router Configuration/Operational State | 1. multi-topology: Support Multi-Topology Routing (MTR) [RFC4915]. | |||
| The ospf container is the top level container in this data model. It | 2. multi-area-adj: Support OSPF multi-area adjacency [RFC5185]. | |||
| contains shared information among the OSPF instances configured | ||||
| within the container. | ||||
| module: ietf-ospf | 3. explicit-router-id: Support explicit per-instance Router-ID | |||
| augment /rt:routing/rt:control-plane-protocols/ | specification. | |||
| rt:control-plane-protocol: | ||||
| +--rw ospf | ||||
| +--rw operation-mode? identityref | ||||
| +--rw instance* [af] | ||||
| . | ||||
| . | ||||
| 2.6. OSPF Instance Configuration/Operational State | 4. demand-circuit: Support OSPF demand circuits [RFC1793]. | |||
| The instance container represents an OSPF protocol engine and | 5. mtu-ignore: Support disabling OSPF Database Description packet | |||
| contains the router level configuration and operational state. The | MTU mismatch checking specified in section 10.6 of [RFC2328]. | |||
| routing domain for each instance is dictated through the | ||||
| specification of [routing-instance af]. The instance level | 6. lls: Support OSPF link-local signaling (LLS) [RFC5613]. | |||
| operational state includes the instance level statistics, IETF SPF | ||||
| delay statistics, AS-Scoped Link State Database, local RIB, SPF Log, | 7. prefix-suppression: Support OSPF prefix advertisement | |||
| and the LSA log. | suppression [RFC6860]. | |||
| 8. ttl-security: Support OSPF Time to Live (TTL) security check | ||||
| support [RFC5082]. | ||||
| 9. nsr: Support OSPF Non-Stop Routing (NSR). The OSPF NSR feature | ||||
| allows a router with redundant control-plane capability (e.g., | ||||
| dual Route-Processor (RP) cards) to maintain its state and | ||||
| adjacencies during planned and unplanned control-plane | ||||
| processing restarts. It differs from graceful-restart or Non- | ||||
| Stop Forwarding (NSF) in that no protocol signaling or | ||||
| assistance from adjacent OSPF neighbors is required to recover | ||||
| control-plane state. | ||||
| 10. graceful-restart: Support Graceful OSPF Restart [RFC3623], | ||||
| [RFC5187]. | ||||
| 11. auto-cost: Support OSPF interface cost calculation according to | ||||
| reference bandwidth [RFC2328]. | ||||
| 12. max-ecmp: Support configuration of the maximum number of Equal- | ||||
| Cost Multi-Path (ECMP) paths. | ||||
| 13. max-lsa: Support configuration of the maximum number of LSAs the | ||||
| OSPF instance will accept [RFC1765]. | ||||
| 14. te-rid: Support configuration of the Traffic Engineering (TE) | ||||
| Router-ID, i.e., the Router Address described in Section 2.4.1 | ||||
| of [RFC3630] or the Router IPv6 Address TLV described in | ||||
| Section 3 of [RFC5329]. | ||||
| 15. ldp-igp-sync: Support LDP IGP synchronization [RFC5443]. | ||||
| 16. ospfv2-authentication-trailer: Support OSPFv2 Authentication | ||||
| trailer as specified in [RFC5709] or [RFC7474]. | ||||
| 17. ospfv3-authentication-ipsec: Support IPsec for OSPFv3 | ||||
| authentication [RFC4552]. | ||||
| 18. ospfv3-authentication-trailer: Support OSPFv3 Authentication | ||||
| trailer as specified in [RFC7166]. | ||||
| 19. fast-reroute: Support IP Fast Reroute (IP-FRR) [RFC5714]. | ||||
| 20. node-flag: Support node-flag for OSPF prefixes. [RFC7684]. | ||||
| 21. node-tag: Support node admin tag for OSPF instances [RFC7777]. | ||||
| 22. lfa: Support Loop-Free Alternates (LFAs) [RFC5286]. | ||||
| 23. remote-lfa: Support Remote Loop-Free Alternates (R-LFA) | ||||
| [RFC7490]. | ||||
| 24. stub-router: Support RFC 6987 OSPF Stub Router advertisement | ||||
| [RFC6987]. | ||||
| 25. pe-ce-protocol: Support OSPF as a PE-CE protocol [RFC4577], | ||||
| [RFC6565]. | ||||
| 26. ietf-spf-delay: Support IETF SPF delay algorithm [RFC8405]. | ||||
| 27. bfd: Support BFD detection of OSPF neighbor reachability | ||||
| [RFC5880], [RFC5881], and [I-D.ietf-bfd-yang]. | ||||
| 28. hybrid-interface: Support OSPF Hybrid Broadcast and Point-to- | ||||
| Point Interfaces [RFC6845]. | ||||
| It is expected that vendors will support additional features through | ||||
| vendor-specific augmentations. | ||||
| 2.5. OSPF Router Configuration/Operational State | ||||
| The ospf container is the top-level container in this data model. It | ||||
| represents an OSPF protocol instance and contains the router level | ||||
| configuration and operational state. The operational state includes | ||||
| the instance statistics, IETF SPF delay statistics, AS-Scoped Link | ||||
| State Database, local RIB, SPF Log, and the LSA log. | ||||
| module: ietf-ospf | module: ietf-ospf | |||
| augment /rt:routing/rt:control-plane-protocols/ | augment /rt:routing/rt:control-plane-protocols/ | |||
| rt:control-plane-protocol: | rt:control-plane-protocol: | |||
| +--rw ospf | +--rw ospf | |||
| . | . | |||
| . | . | |||
| +--rw instance* [af] | +--rw af iana-rt-types:address-family | |||
| +--rw af identityref | +--rw enable? boolean | |||
| +--rw explicit-router-id? rt-types:router-id | +--rw explicit-router-id? rt-types:router-id | |||
| | {explicit-router-id}? | | {explicit-router-id}? | |||
| +--rw preference | +--rw preference | |||
| | +--rw (scope)? | | +--rw (scope)? | |||
| | +--:(single-value) | | +--:(single-value) | |||
| | | +--rw all? uint8 | | | +--rw all? uint8 | |||
| | +--:(multi-values) | | +--:(multi-values) | |||
| | +--rw (granularity)? | | +--rw (granularity)? | |||
| | | +--:(detail) | | | +--:(detail) | |||
| | | | +--rw intra-area? uint8 | | | | +--rw intra-area? uint8 | |||
| | | | +--rw inter-area? uint8 | | | | +--rw inter-area? uint8 | |||
| | | +--:(coarse) | | | +--:(coarse) | |||
| | | +--rw internal? uint8 | | | +--rw internal? uint8 | |||
| | +--rw external? uint8 | | +--rw external? uint8 | |||
| +--rw nsr {nsr}? | +--rw nsr {nsr}? | |||
| | +--rw enable? boolean | | +--rw enable? boolean | |||
| +--rw graceful-restart {graceful-restart}? | +--rw graceful-restart {graceful-restart}? | |||
| | +--rw enable? boolean | | +--rw enable? boolean | |||
| | +--rw helper-enable? boolean | | +--rw helper-enable? boolean | |||
| | +--rw restart-interval? uint16 | | +--rw restart-interval? uint16 | |||
| | +--rw helper-strict-lsa-checking? boolean | | +--rw helper-strict-lsa-checking? boolean | |||
| +--rw enable? boolean {admin-control}? | +--rw auto-cost {auto-cost}? | |||
| +--rw auto-cost {auto-cost}? | | +--rw enable? boolean | |||
| | +--rw enable? boolean | | +--rw reference-bandwidth? uint32 | |||
| | +--rw reference-bandwidth? uint32 | +--rw spf-control | |||
| +--rw spf-control | | +--rw paths? uint16 {max-ecmp}? | |||
| | +--rw paths? uint16 {max-ecmp}? | | +--rw ietf-spf-delay {ietf-spf-delay}? | |||
| | +--rw ietf-spf-delay {ietf-spf-delay}? | | +--rw initial-delay? uint16 | |||
| | +--rw initial-delay? uint16 | | +--rw short-delay? uint16 | |||
| | +--rw short-delay? uint16 | | +--rw long-delay? uint16 | |||
| | +--rw long-delay? uint16 | | +--rw hold-down? uint16 | |||
| | +--rw hold-down? uint16 | | +--rw time-to-learn? uint16 | |||
| | +--rw time-to-learn? uint16 | | +--ro current-state? enumeration | |||
| +--rw database-control | | +--ro remaining-time-to-learn? uint16 | |||
| | +--rw max-lsa? uint32 {max-lsa}? | | +--ro remaining-hold-down? uint16 | |||
| +--rw stub-router {stub-router}? | | +--ro last-event-received? yang:timestamp | |||
| | +--rw (trigger)? | | +--ro next-spf-time? yang:timestamp | |||
| | +--:(always) | | +--ro last-spf-time? yang:timestamp | |||
| | +--rw always! | +--rw database-control | |||
| +--rw mpls | | +--rw max-lsa? uint32 {max-lsa}? | |||
| | +--rw te-rid {te-rid}? | +--rw stub-router {stub-router}? | |||
| | | +--rw ipv4-router-id? inet:ipv4-address | | +--rw (trigger)? | |||
| | | +--rw ipv6-router-id? inet:ipv6-address | | +--:(always) | |||
| | +--rw ldp | | +--rw always! | |||
| | +--rw igp-sync? boolean {ldp-igp-sync}? | +--rw mpls | |||
| +--rw fast-reroute {fast-reroute}? | | +--rw te-rid {te-rid}? | |||
| | +--rw lfa {lfa}? | | | +--rw ipv4-router-id? inet:ipv4-address | |||
| +--rw node-tags {node-tag}? | | | +--rw ipv6-router-id? inet:ipv6-address | |||
| | +--rw node-tag* [tag] | | +--rw ldp | |||
| | +--rw tag uint32 | | +--rw igp-sync? boolean {ldp-igp-sync}? | |||
| +--ro router-id? | +--rw fast-reroute {fast-reroute}? | |||
| +--ro local-rib | | +--rw lfa {lfa}? | |||
| | +--ro route* [prefix] | +--ro protected-routes | |||
| | +--ro prefix inet:ip-prefix | | +--ro af-stats* [af prefix alternate] | |||
| | +--ro next-hops | | +--ro af iana-rt-types:address-family | |||
| | | +--ro next-hop* [next-hop] | | +--ro prefix string | |||
| | | +--ro outgoing-interface? if:interface-ref | | +--ro alternate string | |||
| | | +--ro next-hop inet:ip-address | | +--ro alternate-type? enumeration | |||
| | +--ro metric? uint32 | | +--ro best? boolean | |||
| | +--ro route-type? route-type | | +--ro non-best-reason? string | |||
| | +--ro route-tag? uint32 | | +--ro protection-available? bits | |||
| +--ro statistics | | +--ro alternate-metric1? uint32 | |||
| | +--ro originate-new-lsa-count? yang:counter32 | | +--ro alternate-metric2? uint32 | |||
| | +--ro rx-new-lsas-count? yang:counter32 | | +--ro alternate-metric3? uint32 | |||
| | +--ro as-scope-lsa-count? yang:gauge32 | +--ro unprotected-routes | |||
| | +--ro as-scope-lsa-chksum-sum? uint32 | | +--ro af-stats* [af prefix] | |||
| | +--ro database | | +--ro af iana-rt-types:address-family | |||
| | +--ro as-scope-lsa-type* | | +--ro prefix string | |||
| | +--ro lsa-type? uint16 | +--ro protection-statistics* [frr-protection-method] | |||
| | +--ro lsa-count? yang:gauge32 | | +--ro frr-protection-method string | |||
| | +--ro lsa-cksum-sum? int32 | | +--ro af-stats* [af] | |||
| +--ro ietf-spf-delay | | +--ro af iana-rt-types:address-family | |||
| | +--ro initial-delay? uint16 | | +--ro total-routes? uint32 | |||
| | +--ro short-delay? uint16 | | +--ro unprotected-routes? uint32 | |||
| | +--ro long-delay? uint16 | | +--ro protected-routes? uint32 | |||
| | +--ro hold-down? uint16 | | +--ro linkprotected-routes? uint32 | |||
| | +--ro time-to-learn? uint16 | | +--ro nodeprotected-routes? uint32 | |||
| | +--ro current-state? enumeration | +--rw node-tags {node-tag}? | |||
| | +--ro remaining-time-to-learn? uint16 | | +--rw node-tag* [tag] | |||
| | +--ro remaining-hold-down? uint16 | | +--rw tag uint32 | |||
| | +--ro last-event-received? yang:timestamp | +--ro router-id? | |||
| | +--ro next-spf-time? yang:timestamp | +--ro local-rib | |||
| | +--ro last-spf-time? yang:timestamp | | +--ro route* [prefix] | |||
| +--ro database | | +--ro prefix inet:ip-prefix | |||
| | +--ro as-scope-lsa-type* [lsa-type] | | +--ro next-hops | |||
| | +--ro as-scope-lsas | | | +--ro next-hop* [next-hop] | |||
| | +--ro as-scope-lsa* [lsa-id adv-router] | | | +--ro outgoing-interface? if:interface-ref | |||
| | +--ro lsa-id union | | | +--ro next-hop inet:ip-address | |||
| | +--ro adv-router inet:ipv4-address | | +--ro metric? uint32 | |||
| | +--ro decoded-completed? boolean | | +--ro route-type? route-type | |||
| | +--ro raw-data? yang:hex-string | | +--ro route-tag? uint32 | |||
| | +--ro (version)? | +--ro statistics | |||
| | +--:(ospfv2) | | +--ro discontinuity-time yang:date-and-time | |||
| | | +--ro ospfv2 | | +--ro originate-new-lsa-count? yang:counter32 | |||
| . . | | +--ro rx-new-lsas-count? yang:counter32 | |||
| . . | | +--ro as-scope-lsa-count? yang:gauge32 | |||
| | +--:(ospfv3) | | +--ro as-scope-lsa-chksum-sum? uint32 | |||
| | +--ro ospfv3 | | +--ro database | |||
| . | | +--ro as-scope-lsa-type* | |||
| . | | +--ro lsa-type? uint16 | |||
| +--ro spf-log | | +--ro lsa-count? yang:gauge32 | |||
| | +--ro event* [id] | | +--ro lsa-cksum-sum? int32 | |||
| | +--ro id uint32 | +--ro database | |||
| | +--ro spf-type? enumeration | | +--ro as-scope-lsa-type* [lsa-type] | |||
| | +--ro schedule-timestamp? yang:timestamp | | +--ro as-scope-lsas | |||
| | +--ro start-timestamp? yang:timestamp | | +--ro as-scope-lsa* [lsa-id adv-router] | |||
| | +--ro end-timestamp? yang:timestamp | | +--ro lsa-id union | |||
| | +--ro trigger-lsa* | | +--ro adv-router inet:ipv4-address | |||
| | +--ro area-id? area-id-type | | +--ro decoded-completed? boolean | |||
| | +--ro link-id? union | | +--ro raw-data? yang:hex-string | |||
| | +--ro type? uint16 | | +--ro (version)? | |||
| | +--ro lsa-id? yang:dotted-quad | | +--:(ospfv2) | |||
| | +--ro adv-router? yang:dotted-quad | | | +--ro ospfv2 | |||
| | +--ro seq-num? uint32 | . . | |||
| +--ro lsa-log | . . | |||
| | +--ro event* [id] | | +--:(ospfv3) | |||
| | +--ro id uint32 | | +--ro ospfv3 | |||
| | +--ro lsa | . | |||
| | | +--ro area-id? area-id-type | . | |||
| | | +--ro link-id? union | +--ro spf-log | |||
| | | +--ro type? uint16 | | +--ro event* [id] | |||
| | | +--ro lsa-id? yang:dotted-quad | | +--ro id uint32 | |||
| | | +--ro adv-router? yang:dotted-quad | | +--ro spf-type? enumeration | |||
| | | +--ro seq-num? uint32 | | +--ro schedule-timestamp? yang:timestamp | |||
| | +--ro received-timestamp? yang:timestamp | | +--ro start-timestamp? yang:timestamp | |||
| | +--ro reason? identityref | +--ro end-timestamp? yang:timestamp | |||
| . | | +--ro trigger-lsa* | |||
| . | | +--ro area-id? area-id-type | |||
| | +--ro link-id? union | ||||
| | +--ro type? uint16 | ||||
| | +--ro lsa-id? yang:dotted-quad | ||||
| | +--ro adv-router? yang:dotted-quad | ||||
| | +--ro seq-num? uint32 | ||||
| +--ro lsa-log | ||||
| | +--ro event* [id] | ||||
| | +--ro id uint32 | ||||
| | +--ro lsa | ||||
| | | +--ro area-id? area-id-type | ||||
| | | +--ro link-id? union | ||||
| | | +--ro type? uint16 | ||||
| | | +--ro lsa-id? yang:dotted-quad | ||||
| | | +--ro adv-router? yang:dotted-quad | ||||
| | | +--ro seq-num? uint32 | ||||
| | +--ro received-timestamp? yang:timestamp | ||||
| | +--ro reason? identityref | ||||
| . | ||||
| . | ||||
| 2.7. OSPF Area Configuration/Operational State | 2.6. OSPF Area Configuration/Operational State | |||
| The area container contains OSPF area configuration and the list of | The area container contains OSPF area configuration and the list of | |||
| interface containers representing all the OSPF interfaces in the | interface containers representing all the OSPF interfaces in the | |||
| area. The area operational state includes the area statistics and | area. The area operational state includes the area statistics and | |||
| the area Link State Database (LSDB). | the Area Link State Database (LSDB). | |||
| module: ietf-ospf | module: ietf-ospf | |||
| augment /rt:routing/rt:control-plane-protocols/ | augment /rt:routing/rt:control-plane-protocols/ | |||
| rt:control-plane-protocol: | rt:control-plane-protocol: | |||
| +--rw ospf | +--rw ospf | |||
| . | . | |||
| . | . | |||
| +--rw instance* [af] | +--rw areas | |||
| +--rw areas | | +--rw area* [area-id] | |||
| | +--rw area* [area-id] | | +--rw area-id area-id-type | |||
| | +--rw area-id area-id-type | | +--rw area-type? identityref | |||
| | +--rw area-type? identityref | | +--rw summary? boolean | |||
| | +--rw summary? boolean | | +--rw default-cost? uint32 | |||
| | +--rw default-cost? uint32 | | +--rw ranges | |||
| | +--rw ranges | | | +--rw range* [prefix] | |||
| | | +--rw range* [prefix] | | | +--rw prefix inet:ip-prefix | |||
| | | +--rw prefix inet:ip-prefix | | | +--rw advertise? boolean | |||
| | | +--rw advertise? boolean | | | +--rw cost? uint24 | |||
| | | +--rw cost? uint24 | | +--rw topologies {ospf:multi-topology}? | |||
| | +--ro statistics | | | +--rw topology* [name] | |||
| | | +--ro spf-runs-count? yang:counter32 | | | +--rw name -> ../../../../../../../../ | |||
| | | +--ro abr-count? yang:gauge32 | | | ../../../rt:ribs/rib/name | |||
| | | +--ro asbr-count? yang:gauge32 | | | +--rw summary? boolean | |||
| | | +--ro ar-nssa-translator-event-count? | | | +--rw default-cost? ospf-metric | |||
| | | yang:counter32 | | | +--rw ranges | |||
| | | +--ro area-scope-lsa-count? yang:gauge32 | | | +--rw range* [prefix] | |||
| | | +--ro area-scope-lsa-cksum-sum? int32 | | | +--rw prefix inet:ip-prefix | |||
| | | +--ro database | | | +--rw advertise? boolean | |||
| | | +--ro area-scope-lsa-type* | | | +--rw cost? ospf-metric | |||
| | | +--ro lsa-type? uint16 | | +--ro statistics | |||
| | | +--ro lsa-count? yang:gauge32 | | | +--ro discontinuity-time yang:date-and-time | |||
| | | +--ro lsa-cksum-sum? int32 | | | +--ro spf-runs-count? yang:counter32 | |||
| | +--ro database | | | +--ro abr-count? yang:gauge32 | |||
| | | +--ro area-scope-lsa-type* [lsa-type] | | | +--ro asbr-count? yang:gauge32 | |||
| | | +--ro lsa-type uint16 | | | +--ro ar-nssa-translator-event-count? | |||
| | | +--ro area-scope-lsas | | | yang:counter32 | |||
| | | +--ro area-scope-lsa* [lsa-id adv-router] | | | +--ro area-scope-lsa-count? yang:gauge32 | |||
| | | +--ro lsa-id union | | | +--ro area-scope-lsa-cksum-sum? int32 | |||
| . . . | | | +--ro database | |||
| . . . | | | +--ro area-scope-lsa-type* | |||
| | | +--ro (version)? | | | +--ro lsa-type? uint16 | |||
| | | +--:(ospfv2) | | | +--ro lsa-count? yang:gauge32 | |||
| | | | +--ro ospfv2 | | | +--ro lsa-cksum-sum? int32 | |||
| | | | +--ro header | | +--ro database | |||
| . . . . | | | +--ro area-scope-lsa-type* [lsa-type] | |||
| . . . . | | | +--ro lsa-type uint16 | |||
| | | | +--ro body | | | +--ro area-scope-lsas | |||
| | | | +--ro router | | | +--ro area-scope-lsa* [lsa-id adv-router] | |||
| . . . . | | | +--ro lsa-id union | |||
| . . . . | . . . | |||
| . . . | ||||
| | | | +--ro network | | | +--ro (version)? | |||
| . . . . | | | +--:(ospfv2) | |||
| . . . . | | | | +--ro ospfv2 | |||
| | | | +--ro summary | | | | +--ro header | |||
| . . . . | . . . . | |||
| . . . . | . . . . | |||
| | | | +--ro external | | | | +--ro body | |||
| . . . . | | | | +--ro router | |||
| . . . . | . . . . | |||
| | | | +--ro opaque | . . . . | |||
| . . . . | | | | +--ro network | |||
| . . . . | . . . . | |||
| | | +--:(ospfv3) | . . . . | |||
| | | +--ro ospfv3 | | | | +--ro summary | |||
| | | +--ro header | . . . . | |||
| . . . | . . . . | |||
| . . . | | | | +--ro external | |||
| | | +--ro body | . . . . | |||
| | | +--ro router | . . . . | |||
| . . . | | | | +--ro opaque | |||
| . . . | . . . . | |||
| | | +--ro network | . . . . | |||
| . . . | | | +--:(ospfv3) | |||
| . . . | | | +--ro ospfv3 | |||
| | | +--ro inter-area-prefix | | | +--ro header | |||
| . . . | . . . | |||
| . . . | . . . | |||
| | | +--ro inter-area-router | | | +--ro body | |||
| . . . | | | +--ro router | |||
| . . . | . . . | |||
| | | +--ro as-external | . . . | |||
| . . . | | | +--ro network | |||
| . . . | . . . | |||
| | | +--ro nssa | . . . | |||
| . . . | | | +--ro inter-area-prefix | |||
| . . . | . . . | |||
| | | +--ro link | . . . | |||
| . . . | | | +--ro inter-area-router | |||
| . . . | . . . | |||
| | | +--ro intra-area-prefix | . . . | |||
| . . . | | | +--ro as-external | |||
| . . . | . . . | |||
| | | +--ro router-information | . . . | |||
| . . . | | | +--ro nssa | |||
| . . . | . . . | |||
| | +--rw virtual-links | . . . | |||
| | | +--rw virtual-link* [transit-area-id router-id] | | | +--ro link | |||
| | | +--rw transit-area-id -> ../../../../ | . . . | |||
| | | area/area-id | . . . | |||
| | | +--rw router-id rt-types:router-id | | | +--ro intra-area-prefix | |||
| | | +--rw hello-interval? uint16 | . . . | |||
| | | +--rw dead-interval? uint32 | . . . | |||
| | | +--rw retransmit-interval? uint16 | | | +--ro router-information | |||
| | | +--rw transmit-delay? uint16 | . . . | |||
| | | +--rw lls? boolean {lls}? | . . . | |||
| | | +--rw ttl-security {ttl-security}? | | +--rw virtual-links | |||
| | | | +--rw enable? boolean | | | +--rw virtual-link* [transit-area-id router-id] | |||
| | | | +--rw hops? uint8 | | | +--rw transit-area-id -> ../../../../ | |||
| | | +--rw enable? boolean | | | area/area-id | |||
| | | {admin-control}? | | | +--rw router-id rt-types:router-id | |||
| | | +--rw authentication | | | +--rw hello-interval? uint16 | |||
| | | +--rw (auth-type-selection)? | | | +--rw dead-interval? uint32 | |||
| | | +--:(auth-ipsec) | | | +--rw retransmit-interval? uint16 | |||
| | | {ospfv3-authentication-ipsec}? | | | +--rw transmit-delay? uint16 | |||
| | | | +--rw sa? string | | | +--rw lls? boolean {lls}? | |||
| | | +--:(auth-trailer-key-chain) | | | +--rw ttl-security {ttl-security}? | |||
| | | | +--rw key-chain? | | | | +--rw enable? boolean | |||
| | | key-chain:key-chain-ref | | | | +--rw hops? uint8 | |||
| | | +--:(auth-trailer-key) | | | +--rw enable? boolean | |||
| | | +--rw key? string | | | +--rw authentication | |||
| | | +--rw crypto-algorithm? identityref | | | | +--rw (auth-type-selection)? | |||
| | | +--ro cost? uint16 | | | | +--:(ospfv2-auth) | |||
| | | +--ro state? if-state-type | | | | | +--rw ospfv2-auth-trailer-rfc? | |||
| | | +--ro hello-timer? uint32 | | | | | | ospfv2-auth-trailer-rfc-version | |||
| | | +--ro wait-timer? uint32 | | | | | | {ospfv2-authentication-trailer}? | |||
| | | +--ro dr-router-id? rt-types:router-id | | | | | +--rw (ospfv2-auth-specification)? | |||
| | | +--ro dr-ip-addr? inet:ip-address | | | | | +--:(auth-key-chain) {key-chain}? | |||
| | | +--ro bdr-router-id? rt-types:router-id | | | | | | +--rw ospfv2-key-chain? | |||
| | | +--ro bdr-ip-addr? inet:ip-address | | | | | | key-chain:key-chain-ref | |||
| | | +--ro statistics | | | | | +--:(auth-key-explicit) | |||
| | | | +--ro if-event-count? yang:counter32 | | | | | +--rw ospfv2-key-id? uint32 | |||
| | | | +--ro link-scope-lsa-count? yang:gauge32 | | | | | +--rw ospfv2-key? string | |||
| | | | +--ro link-scope-lsa-cksum-sum? | | | | | +--rw ospfv2-crypto-algorithm? | |||
| | | | uint32 | | | | | identityref | |||
| | | | +--ro database | | | | +--:(ospfv3-auth-ipsec) | |||
| | | | +--ro link-scope-lsa-type* | | | | | {ospfv3-authentication-ipsec}? | |||
| | | | +--ro lsa-type? uint16 | | | | | +--rw sa? string | |||
| | | | +--ro lsa-count? yang:gauge32 | | | | +--:(ospfv3-auth-trailer) | |||
| | | | +--ro lsa-cksum-sum? int32 | | | | | {ospfv3-authentication-trailer}? | |||
| | | +--ro neighbors | | | | +--rw (ospfv3-auth-specification)? | |||
| | | | +--ro neighbor* [neighbor-router-id] | | | | +--:(auth-key-chain) {key-chain}? | |||
| | | | +--ro neighbor-router-id | | | | | +--rw ospfv3-key-chain? | |||
| | | | rt-types:router-id | | | | | key-chain:key-chain-ref | |||
| | | | +--ro address? inet:ip-address | | | | +--:(auth-key-explicit) | |||
| | | | +--ro dr-router-id? rt-types:router-id | | | | +--rw ospfv3-sa-id? uint16 | |||
| | | | +--ro dr-ip-addr? inet:ip-address | | | | +--rw ospfv3-key? string | |||
| | | | +--ro bdr-router-id? rt-types:router-id | | | | +--rw ospfv3-crypto-algorithm? | |||
| | | | +--ro bdr-ip-addr? inet:ip-address | | | | identityref | |||
| | | | +--ro state? nbr-state-type | | | +--ro cost? uint16 | |||
| | | | +--ro dead-timer? uint32 | | | +--ro state? if-state-type | |||
| | | | +--ro statistics | | | +--ro hello-timer? rt-types: | |||
| | | | +--ro nbr-event-count? | | | | rtimer-value-seconds16 | |||
| | | | yang:counter32 | | | +--ro wait-timer? rt-types: | |||
| | | | +--ro nbr-retrans-qlen? | | | | rtimer-value-seconds16 | |||
| | | | yang:gauge32 | | | +--ro dr-router-id? rt-types:router-id | |||
| | | +--ro database | | | +--ro dr-ip-addr? inet:ip-address | |||
| | | +--ro link-scope-lsa-type* [lsa-type] | | | +--ro bdr-router-id? rt-types:router-id | |||
| | | +--ro lsa-type uint16 | | | +--ro bdr-ip-addr? inet:ip-address | |||
| | | +--ro link-scope-lsas | | | +--ro statistics | |||
| . . | | | | +--ro discontinuity-time yang:date-and-time | |||
| . . | | | | +--ro if-event-count? yang:counter32 | |||
| | +--rw sham-links {pe-ce-protocol}? | | | | +--ro link-scope-lsa-count? yang:gauge32 | |||
| | | +--rw sham-link* [local-id remote-id] | | | | +--ro link-scope-lsa-cksum-sum? | |||
| | | +--rw local-id inet:ip-address | | | | uint32 | |||
| | | +--rw remote-id inet:ip-address | | | | +--ro database | |||
| | | +--rw hello-interval? uint16 | | | | +--ro link-scope-lsa-type* | |||
| | | +--rw dead-interval? uint32 | | | | +--ro lsa-type? uint16 | |||
| | | +--rw retransmit-interval? uint16 | | | | +--ro lsa-count? yang:gauge32 | |||
| | | +--rw transmit-delay? uint16 | | | | +--ro lsa-cksum-sum? int32 | |||
| | | +--rw lls? boolean {lls}? | | | +--ro neighbors | |||
| | | +--rw ttl-security {ttl-security}? | | | | +--ro neighbor* [neighbor-router-id] | |||
| | | | +--rw enable? boolean | | | | +--ro neighbor-router-id | |||
| | | | +--rw hops? uint8 | | | | rt-types:router-id | |||
| | | +--rw enable? boolean | | | | +--ro address? inet:ip-address | |||
| | | {admin-control}? | | | | +--ro dr-router-id? rt-types:router-id | |||
| | | +--rw authentication | | | | +--ro dr-ip-addr? inet:ip-address | |||
| | | | +--rw (auth-type-selection)? | | | | +--ro bdr-router-id? rt-types:router-id | |||
| | | | +--:(auth-ipsec) | | | | +--ro bdr-ip-addr? inet:ip-address | |||
| | | | {ospfv3-authentication-ipsec}? | | | | +--ro state? nbr-state-type | |||
| | | | | +--rw sa? string | | | | +--ro dead-timer? rt-types: | |||
| | | | +--:(auth-trailer-key-chain) | | | | | rtimer-value-seconds16 | |||
| | | | | +--rw key-chain? | | | | +--ro statistics | |||
| | | | key-chain:key-chain-ref | | | | +--ro discontinuity-time | |||
| | | | +--:(auth-trailer-key) | | | | yang:date-and-time | |||
| | | | +--rw key? string | | | | +--ro nbr-event-count? | |||
| | | | +--rw crypto-algorithm? identityref | | | | yang:counter32 | |||
| | | +--rw cost? uint16 | | | | +--ro nbr-retrans-qlen? | |||
| | | +--rw mtu-ignore? boolean | | | | yang:gauge32 | |||
| | | {mtu-ignore}? | | | +--ro database | |||
| | | +--rw prefix-suppression? boolean | | | +--ro link-scope-lsa-type* [lsa-type] | |||
| | | {prefix-suppression}? | | | +--ro lsa-type uint16 | |||
| | | +--ro state? if-state-type | | | +--ro link-scope-lsas | |||
| | | +--ro hello-timer? uint32 | . . | |||
| | | +--ro wait-timer? uint32 | . . | |||
| | | +--ro dr-router-id? rt-types:router-id | | +--rw sham-links {pe-ce-protocol}? | |||
| | | +--ro dr-ip-addr? inet:ip-address | | | +--rw sham-link* [local-id remote-id] | |||
| | | +--ro bdr-router-id? rt-types:router-id | | | +--rw local-id inet:ip-address | |||
| | | +--ro bdr-ip-addr? inet:ip-address | | | +--rw remote-id inet:ip-address | |||
| | | +--ro statistics | | | +--rw hello-interval? uint16 | |||
| | | | +--ro if-event-count? yang:counter32 | | | +--rw dead-interval? uint32 | |||
| | | | +--ro link-scope-lsa-count? yang:gauge32 | | | +--rw retransmit-interval? uint16 | |||
| | | | +--ro link-scope-lsa-cksum-sum? | | | +--rw transmit-delay? uint16 | |||
| | | | uint32 | | | +--rw lls? boolean {lls}? | |||
| | | | +--ro database | | | +--rw ttl-security {ttl-security}? | |||
| | | | +--ro link-scope-lsa-type* | | | | +--rw enable? boolean | |||
| | | | +--ro lsa-type? uint16 | | | | +--rw hops? uint8 | |||
| | | | +--ro lsa-count? yang:gauge32 | | | +--rw enable? boolean | |||
| | | | +--ro lsa-cksum-sum? int32 | | | +--rw authentication | |||
| | | +--ro neighbors | | | | +--rw (auth-type-selection)? | |||
| | | | +--ro neighbor* [neighbor-router-id] | | | | +--:(ospfv2-auth) | |||
| | | | +--ro neighbor-router-id | | | | | +--rw ospfv2-auth-trailer-rfc? | |||
| | | | rt-types:router-id | | | | | | ospfv2-auth-trailer-rfc-version | |||
| | | | +--ro address? inet:ip-address | | | | | | {ospfv2-authentication-trailer}? | |||
| | | | +--ro dr-router-id? rt-types:router-id | | | | | +--rw (ospfv2-auth-specification)? | |||
| | | | +--ro dr-ip-addr? inet:ip-address | | | | | +--:(auth-key-chain) {key-chain}? | |||
| | | | +--ro bdr-router-id? rt-types:router-id | | | | | | +--rw ospfv2-key-chain? | |||
| | | | +--ro bdr-ip-addr? inet:ip-address | | | | | | key-chain:key-chain-ref | |||
| | | | +--ro state? nbr-state-type | | | | | +--:(auth-key-explicit) | |||
| | | | +--ro dead-timer? uint32 | | | | | +--rw ospfv2-key-id? uint32 | |||
| | | | +--ro statistics | | | | | +--rw ospfv2-key? string | |||
| | | | +--ro nbr-event-count? | | | | | +--rw ospfv2-crypto-algorithm? | |||
| | | | yang:counter32 | | | | | identityref | |||
| | | | +--ro nbr-retrans-qlen? | | | | +--:(ospfv3-auth-ipsec) | |||
| | | | yang:gauge32 | | | | | {ospfv3-authentication-ipsec}? | |||
| | | +--ro database | | | | | +--rw sa? string | |||
| | | +--ro link-scope-lsa-type* [lsa-type] | | | | +--:(ospfv3-auth-trailer) | |||
| | | +--ro lsa-type uint16 | | | | | {ospfv3-authentication-trailer}? | |||
| | | +--ro link-scope-lsas | | | | +--rw (ospfv3-auth-specification)? | |||
| . . | | | | +--:(auth-key-chain) {key-chain}? | |||
| . . | | | | | +--rw ospfv3-key-chain? | |||
| | | | | key-chain:key-chain-ref | ||||
| | | | +--:(auth-key-explicit) | ||||
| | | | +--rw ospfv3-sa-id? uint16 | ||||
| | | | +--rw ospfv3-key? string | ||||
| | | | +--rw ospfv3-crypto-algorithm? | ||||
| | | | identityref | ||||
| | | +--rw cost? uint16 | ||||
| | | +--rw mtu-ignore? boolean | ||||
| | | {mtu-ignore}? | ||||
| | | +--rw prefix-suppression? boolean | ||||
| | | {prefix-suppression}? | ||||
| | | +--ro state? if-state-type | ||||
| | | +--ro hello-timer? rt-types: | ||||
| | | | rtimer-value-seconds16 | ||||
| | | +--ro wait-timer? rt-types: | ||||
| | | | rtimer-value-seconds16 | ||||
| | | +--ro dr-router-id? rt-types:router-id | ||||
| | | +--ro dr-ip-addr? inet:ip-address | ||||
| | | +--ro bdr-router-id? rt-types:router-id | ||||
| | | +--ro bdr-ip-addr? inet:ip-address | ||||
| | | +--ro statistics | ||||
| | | | +--ro discontinuity-time yang:date-and-time | ||||
| | | | +--ro if-event-count? yang:counter32 | ||||
| | | | +--ro link-scope-lsa-count? yang:gauge32 | ||||
| | | | +--ro link-scope-lsa-cksum-sum? | ||||
| | | | uint32 | ||||
| | | | +--ro database | ||||
| | | | +--ro link-scope-lsa-type* | ||||
| | | | +--ro lsa-type? uint16 | ||||
| | | | +--ro lsa-count? yang:gauge32 | ||||
| | | | +--ro lsa-cksum-sum? int32 | ||||
| | | +--ro neighbors | ||||
| | | | +--ro neighbor* [neighbor-router-id] | ||||
| | | | +--ro neighbor-router-id | ||||
| | | | rt-types:router-id | ||||
| | | | +--ro address? inet:ip-address | ||||
| | | | +--ro dr-router-id? rt-types:router-id | ||||
| | | | +--ro dr-ip-addr? inet:ip-address | ||||
| | | | +--ro bdr-router-id? rt-types:router-id | ||||
| | | | +--ro bdr-ip-addr? inet:ip-address | ||||
| | | | +--ro state? nbr-state-type | ||||
| | | | +--ro cost? uint32 | ||||
| | | | +--ro dead-timer? rt-types: | ||||
| | | | | rtimer-value-seconds16 | ||||
| | | | +--ro statistics | ||||
| | | | +--ro nbr-event-count? | ||||
| | | | yang:counter32 | ||||
| | | | +--ro nbr-retrans-qlen? | ||||
| | | | yang:gauge32 | ||||
| | | +--ro database | ||||
| | | +--ro link-scope-lsa-type* [lsa-type] | ||||
| | | +--ro lsa-type uint16 | ||||
| | | +--ro link-scope-lsas | ||||
| . . | ||||
| . . | ||||
| 2.8. OSPF Interface Configuration/Operational State | 2.7. OSPF Interface Configuration/Operational State | |||
| The interface container contains OSPF interface configuration and | The interface container contains OSPF interface configuration and | |||
| operational state. The interface operational state includes the | operational state. The interface operational state includes the | |||
| statistics, list of neighbors, and link-local Link State database | statistics, list of neighbors, and Link-Local Link State Database | |||
| (LSDB). | (LSDB). | |||
| module: ietf-ospf | module: ietf-ospf | |||
| augment /rt:routing/rt:control-plane-protocols/ | augment /rt:routing/rt:control-plane-protocols/ | |||
| rt:control-plane-protocol: | rt:control-plane-protocol: | |||
| +--rw ospf | +--rw ospf | |||
| . | . | |||
| . | ||||
| +--rw areas | ||||
| | +--rw area* [area-id] | ||||
| | . | ||||
| | . | ||||
| | +--rw interfaces | ||||
| | +--rw interface* [name] | ||||
| | +--rw name if:interface-ref | ||||
| | +--rw interface-type? enumeration | ||||
| | +--rw passive? boolean | ||||
| | +--rw demand-circuit? boolean | ||||
| | {demand-circuit}? | ||||
| | +--rw priority? uint8 | ||||
| | +--rw multi-areas {multi-area-adj}? | ||||
| | | +--rw multi-area* [multi-area-id] | ||||
| | | +--rw multi-area-id area-id-type | ||||
| | | +--rw cost? uint16 | ||||
| | +--rw static-neighbors | ||||
| | | +--rw neighbor* [identifier] | ||||
| | | +--rw identifier inet:ip-address | ||||
| | | +--rw cost? uint16 | ||||
| | | +--rw poll-interval? uint16 | ||||
| | | +--rw priority? uint8 | ||||
| | +--rw node-flag? boolean | ||||
| | {node-flag}? | ||||
| | +--rw bfd {bfd}? | ||||
| | | +--rw enable? boolean | ||||
| | +--rw fast-reroute {fast-reroute}? | ||||
| | | +--rw lfa {lfa}? | ||||
| | | +--rw candidate-enable? boolean | ||||
| | | +--rw enable? boolean | ||||
| | | +--rw remote-lfa {remote-lfa}? | ||||
| | | +--rw enable? boolean | ||||
| | +--rw hello-interval? uint16 | ||||
| | +--rw dead-interval? uint32 | ||||
| | +--rw retransmit-interval? uint16 | ||||
| | +--rw transmit-delay? uint16 | ||||
| | +--rw lls? boolean {lls}? | ||||
| | +--rw ttl-security {ttl-security}? | ||||
| | | +--rw enable? boolean | ||||
| | | +--rw hops? uint8 | ||||
| | +--rw enable? boolean | ||||
| | +--rw authentication | ||||
| | | +--rw (auth-type-selection)? | ||||
| | | +--:(ospfv2-auth) | ||||
| | | | +--rw ospfv2-auth-trailer-rfc? | ||||
| | | | | ospfv2-auth-trailer-rfc-version | ||||
| | | | | {ospfv2-authentication-trailer}? | ||||
| | | | +--rw (ospfv2-auth-specification)? | ||||
| | | | +--:(auth-key-chain) {key-chain}? | ||||
| | | | | +--rw ospfv2-key-chain? | ||||
| | | | | key-chain:key-chain-ref | ||||
| | | | +--:(auth-key-explicit) | ||||
| | | | +--rw ospfv2-key-id? uint32 | ||||
| | | | +--rw ospfv2-key? string | ||||
| | | | +--rw ospfv2-crypto-algorithm? | ||||
| | | | identityref | ||||
| | | +--:(ospfv3-auth-ipsec) | ||||
| | | | {ospfv3-authentication-ipsec}? | ||||
| | | | +--rw sa? string | ||||
| | | +--:(ospfv3-auth-trailer) | ||||
| | | | {ospfv3-authentication-trailer}? | ||||
| | | +--rw (ospfv3-auth-specification)? | ||||
| | | +--:(auth-key-chain) {key-chain}? | ||||
| | | | +--rw ospfv3-key-chain? | ||||
| | | | key-chain:key-chain-ref | ||||
| | | +--:(auth-key-explicit) | ||||
| | | +--rw ospfv3-sa-id? uint16 | ||||
| | | +--rw ospfv3-key? string | ||||
| | | +--rw ospfv3-crypto-algorithm? | ||||
| | | identityref | ||||
| | +--rw cost? uint16 | ||||
| | +--rw mtu-ignore? boolean | ||||
| | | {mtu-ignore}? | ||||
| | +--rw prefix-suppression? boolean | ||||
| | | {prefix-suppression}? | ||||
| | +--ro state? if-state-type | ||||
| | +--ro hello-timer? rt-types: | ||||
| | | rtimer-value-seconds16 | ||||
| | +--ro wait-timer? rt-types: | ||||
| | | rtimer-value-seconds16 | ||||
| | +--ro dr-router-id? rt-types:router-id | ||||
| | +--ro dr-ip-addr? inet:ip-address | ||||
| | +--ro bdr-router-id? rt-types:router-id | ||||
| | +--ro bdr-ip-addr? inet:ip-address | ||||
| | +--ro statistics | ||||
| | | +--ro if-event-count? yang:counter32 | ||||
| | | +--ro link-scope-lsa-count? yang:gauge32 | ||||
| | | +--ro link-scope-lsa-cksum-sum? | ||||
| | | uint32 | ||||
| | | +--ro database | ||||
| | | +--ro link-scope-lsa-type* | ||||
| | | +--ro lsa-type? uint16 | ||||
| | | +--ro lsa-count? yang:gauge32 | ||||
| | | +--ro lsa-cksum-sum? int32 | ||||
| | +--ro neighbors | ||||
| | | +--ro neighbor* [neighbor-router-id] | ||||
| | | +--ro neighbor-router-id | ||||
| | | rt-types:router-id | ||||
| | | +--ro address? inet:ip-address | ||||
| | | +--ro dr-router-id? rt-types:router-id | ||||
| | | +--ro dr-ip-addr? inet:ip-address | ||||
| | | +--ro bdr-router-id? rt-types:router-id | ||||
| | | +--ro bdr-ip-addr? inet:ip-address | ||||
| | | +--ro state? nbr-state-type | ||||
| | | +--ro dead-timer? rt-types: | ||||
| | | | rtimer-value-seconds16 | ||||
| | | +--ro statistics | ||||
| | | +--ro nbr-event-count? | ||||
| | | yang:counter32 | ||||
| | | +--ro nbr-retrans-qlen? | ||||
| | | yang:gauge32 | ||||
| | +--ro database | ||||
| | . +--ro link-scope-lsa-type* [lsa-type] | ||||
| | . +--ro lsa-type uint16 | ||||
| | . +--ro link-scope-lsas | ||||
| . . | ||||
| . . | ||||
| | +--rw topologies {ospf:multi-topology}? | ||||
| | | +--rw topology* [name] | ||||
| | | +--rw name -> ../../../../../../../../ | ||||
| | | ../../../rt:ribs/rib/name | ||||
| | | +--rw cost? uint32 | ||||
| | +--rw instance-id? uint8 | ||||
| . | ||||
| . | . | |||
| +--rw instance* [af] | ||||
| . | ||||
| . | ||||
| +--rw areas | ||||
| | +--rw area* [area-id] | ||||
| | . | ||||
| | . | ||||
| | +--rw interfaces | ||||
| | +--rw interface* [name] | ||||
| | +--rw name if:interface-ref | ||||
| | +--rw interface-type? enumeration | ||||
| | +--rw passive? boolean | ||||
| | +--rw demand-circuit? boolean | ||||
| | {demand-circuit}? | ||||
| | +--rw priority? uint8 | ||||
| | +--rw multi-areas {multi-area-adj}? | ||||
| | | +--rw multi-area* [multi-area-id] | ||||
| | | +--rw multi-area-id area-id-type | ||||
| | | +--rw cost? uint16 | ||||
| | +--rw static-neighbors | ||||
| | | +--rw neighbor* [identifier] | ||||
| | | +--rw identifier inet:ip-address | ||||
| | | +--rw cost? uint16 | ||||
| | | +--rw poll-interval? uint16 | ||||
| | | +--rw priority? uint8 | ||||
| | +--rw node-flag? boolean | ||||
| | {node-flag}? | ||||
| | +--rw bfd {bfd}? | ||||
| | | +--rw enable? boolean | ||||
| | +--rw fast-reroute {fast-reroute}? | ||||
| | | +--rw lfa {lfa}? | ||||
| | | +--rw candidate-enable? boolean | ||||
| | | +--rw enable? boolean | ||||
| | | +--rw remote-lfa {remote-lfa}? | ||||
| | | +--rw enable? boolean | ||||
| | +--rw hello-interval? uint16 | ||||
| | +--rw dead-interval? uint32 | ||||
| | +--rw retransmit-interval? uint16 | ||||
| | +--rw transmit-delay? uint16 | ||||
| | +--rw lls? boolean {lls}? | ||||
| | +--rw ttl-security {ttl-security}? | ||||
| | | +--rw enable? boolean | ||||
| | | +--rw hops? uint8 | ||||
| | +--rw enable? boolean | ||||
| | {admin-control}? | ||||
| | +--rw authentication | ||||
| | | +--rw (auth-type-selection)? | ||||
| | | +--:(auth-ipsec) | ||||
| | | | {ospfv3-authentication-ipsec}? | ||||
| | | | +--rw sa? string | ||||
| | | +--:(auth-trailer-key-chain) | ||||
| | | | +--rw key-chain? | ||||
| | | | key-chain:key-chain-ref | ||||
| | | +--:(auth-trailer-key) | ||||
| | | +--rw key? string | ||||
| | | +--rw crypto-algorithm? identityref | ||||
| | +--rw cost? uint16 | ||||
| | +--rw mtu-ignore? boolean | ||||
| | | {mtu-ignore}? | ||||
| | +--rw prefix-suppression? boolean | ||||
| | | {prefix-suppression}? | ||||
| | +--ro state? if-state-type | ||||
| | +--ro hello-timer? uint32 | ||||
| | +--ro wait-timer? uint32 | ||||
| | +--ro dr-router-id? rt-types:router-id | ||||
| | +--ro dr-ip-addr? inet:ip-address | ||||
| | +--ro bdr-router-id? rt-types:router-id | ||||
| | +--ro bdr-ip-addr? inet:ip-address | ||||
| | +--ro statistics | ||||
| | | +--ro if-event-count? yang:counter32 | ||||
| | | +--ro link-scope-lsa-count? yang:gauge32 | ||||
| | | +--ro link-scope-lsa-cksum-sum? | ||||
| | | uint32 | ||||
| | | +--ro database | ||||
| | | +--ro link-scope-lsa-type* | ||||
| | | +--ro lsa-type? uint16 | ||||
| | | +--ro lsa-count? yang:gauge32 | ||||
| | | +--ro lsa-cksum-sum? int32 | ||||
| | +--ro neighbors | ||||
| | | +--ro neighbor* [neighbor-router-id] | ||||
| | | +--ro neighbor-router-id | ||||
| | | rt-types:router-id | ||||
| | | +--ro address? inet:ip-address | ||||
| | | +--ro dr-router-id? rt-types:router-id | ||||
| | | +--ro dr-ip-addr? inet:ip-address | ||||
| | | +--ro bdr-router-id? rt-types:router-id | ||||
| | | +--ro bdr-ip-addr? inet:ip-address | ||||
| | | +--ro state? nbr-state-type | ||||
| | | +--ro dead-timer? uint32 | ||||
| | | +--ro statistics | ||||
| | | +--ro nbr-event-count? | ||||
| | | yang:counter32 | ||||
| | | +--ro nbr-retrans-qlen? | ||||
| | | yang:gauge32 | ||||
| | +--ro database | ||||
| | . +--ro link-scope-lsa-type* [lsa-type] | ||||
| | . +--ro lsa-type uint16 | ||||
| | . +--ro link-scope-lsas | ||||
| . . | ||||
| . . | ||||
| | +--rw topologies {ospf:multi-topology}? | ||||
| | | +--rw topology* [name] | ||||
| | | +--rw name -> ../../../../../../../../ | ||||
| | | ../../../rt:ribs/rib/name | ||||
| | | +--rw cost? uint32 | ||||
| | +--rw instance-id? uint8 | ||||
| . | ||||
| . | ||||
| 2.9. OSPF notification | 2.8. OSPF Notifications | |||
| This YANG model defines a list of notifications that inform YANG | This YANG model defines a list of notifications that inform YANG | |||
| clients of important events detected during protocol operation. The | clients of important events detected during protocol operation. The | |||
| defined notifications cover the common set of traps from the OSPFv2 | defined notifications cover the common set of traps from the OSPFv2 | |||
| MIB [RFC4750] and OSPFv3 MIB [RFC5643]. | MIB [RFC4750] and OSPFv3 MIB [RFC5643]. | |||
| notifications: | notifications: | |||
| +---n if-state-change | +---n if-state-change | |||
| | +--ro routing-protocol-name? | | +--ro routing-protocol-name? | |||
| | + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| | + control-plane-protocol/name | | + control-plane-protocol/name | |||
| | +--ro af? | | +--ro af? | |||
| | + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| | + control-plane-protocol | | + control-plane-protocol | |||
| | + [rt:name=current()/../routing-protocol-name]/ | | + [rt:name=current()/../routing-protocol-name]/ | |||
| | + ospf:ospf/instance/af | | + ospf:ospf/af | |||
| | +--ro (if-link-type-selection)? | | +--ro (if-link-type-selection)? | |||
| | | +--:(interface) | | | +--:(interface) | |||
| | | | +--ro interface | | | | +--ro interface | |||
| | | | +--ro interface? if:interface-ref | | | | +--ro interface? if:interface-ref | |||
| | | +--:(virtual-link) | | | +--:(virtual-link) | |||
| | | | +--ro virtual-link | | | | +--ro virtual-link | |||
| | | | +--ro transit-area-id? area-id-type | | | | +--ro transit-area-id? area-id-type | |||
| | | | +--ro neighbor-router-id? rt-types:router-id | | | | +--ro neighbor-router-id? rt-types:router-id | |||
| | | +--:(sham-link) | | | +--:(sham-link) | |||
| | | +--ro sham-link | | | +--ro sham-link | |||
| skipping to change at page 17, line 10 ¶ | skipping to change at page 20, line 26 ¶ | |||
| | | +--ro remote-ip-addr? inet:ip-address | | | +--ro remote-ip-addr? inet:ip-address | |||
| | +--ro state? if-state-type | | +--ro state? if-state-type | |||
| +---n if-config-error | +---n if-config-error | |||
| | +--ro routing-protocol-name? | | +--ro routing-protocol-name? | |||
| | + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| | + control-plane-protocol/name | | + control-plane-protocol/name | |||
| | +--ro af? | | +--ro af? | |||
| | + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| | + control-plane-protocol | | + control-plane-protocol | |||
| | + [rt:name=current()/../routing-protocol-name]/ | | + [rt:name=current()/../routing-protocol-name]/ | |||
| | + ospf:ospf/instance/af | | + ospf:ospf/af | |||
| | +--ro (if-link-type-selection)? | | +--ro (if-link-type-selection)? | |||
| | | +--:(interface) | | | +--:(interface) | |||
| | | | +--ro interface | | | | +--ro interface | |||
| | | | +--ro interface? if:interface-ref | | | | +--ro interface? if:interface-ref | |||
| | | +--:(virtual-link) | | | +--:(virtual-link) | |||
| | | | +--ro virtual-link | | | | +--ro virtual-link | |||
| | | | +--ro transit-area-id? area-id-type | | | | +--ro transit-area-id? area-id-type | |||
| | | | +--ro neighbor-router-id? rt-types:router-id | | | | +--ro neighbor-router-id? rt-types:router-id | |||
| | | +--:(sham-link) | | | +--:(sham-link) | |||
| | | +--ro sham-link | | | +--ro sham-link | |||
| skipping to change at page 17, line 35 ¶ | skipping to change at page 20, line 51 ¶ | |||
| | +--ro packet-type? packet-type | | +--ro packet-type? packet-type | |||
| | +--ro error? enumeration | | +--ro error? enumeration | |||
| +---n nbr-state-change | +---n nbr-state-change | |||
| | +--ro routing-protocol-name? | | +--ro routing-protocol-name? | |||
| | + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| | + control-plane-protocol/name | | + control-plane-protocol/name | |||
| | +--ro af? | | +--ro af? | |||
| | + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| | + control-plane-protocol | | + control-plane-protocol | |||
| | + [rt:name=current()/../routing-protocol-name]/ | | + [rt:name=current()/../routing-protocol-name]/ | |||
| | + ospf:ospf/instance/af | | + ospf:ospf/af | |||
| | +--ro (if-link-type-selection)? | | +--ro (if-link-type-selection)? | |||
| | | +--:(interface) | | | +--:(interface) | |||
| | | | +--ro interface | | | | +--ro interface | |||
| | | | +--ro interface? if:interface-ref | | | | +--ro interface? if:interface-ref | |||
| | | +--:(virtual-link) | | | +--:(virtual-link) | |||
| | | | +--ro virtual-link | | | | +--ro virtual-link | |||
| | | | +--ro transit-area-id? area-id-type | | | | +--ro transit-area-id? area-id-type | |||
| | | | +--ro neighbor-router-id? rt-types:router-id | | | | +--ro neighbor-router-id? rt-types:router-id | |||
| | | +--:(sham-link) | | | +--:(sham-link) | |||
| | | +--ro sham-link | | | +--ro sham-link | |||
| skipping to change at page 18, line 12 ¶ | skipping to change at page 21, line 28 ¶ | |||
| | +--ro neighbor-ip-addr? yang:dotted-quad | | +--ro neighbor-ip-addr? yang:dotted-quad | |||
| | +--ro state? nbr-state-type | | +--ro state? nbr-state-type | |||
| +---n nbr-restart-helper-status-change | +---n nbr-restart-helper-status-change | |||
| | +--ro routing-protocol-name? | | +--ro routing-protocol-name? | |||
| | + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| | + control-plane-protocol/name | | + control-plane-protocol/name | |||
| | +--ro af? | | +--ro af? | |||
| | + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| | + control-plane-protocol | | + control-plane-protocol | |||
| | + [rt:name=current()/../routing-protocol-name]/ | | + [rt:name=current()/../routing-protocol-name]/ | |||
| | + ospf:ospf/instance/af | | + ospf:ospf/af | |||
| | +--ro (if-link-type-selection)? | | +--ro (if-link-type-selection)? | |||
| | | +--:(interface) | | | +--:(interface) | |||
| | | | +--ro interface | | | | +--ro interface | |||
| | | | +--ro interface? if:interface-ref | | | | +--ro interface? if:interface-ref | |||
| | | +--:(virtual-link) | | | +--:(virtual-link) | |||
| | | | +--ro virtual-link | | | | +--ro virtual-link | |||
| | | | +--ro transit-area-id? area-id-type | | | | +--ro transit-area-id? area-id-type | |||
| | | | +--ro neighbor-router-id? rt-types:router-id | | | | +--ro neighbor-router-id? rt-types:router-id | |||
| | | +--:(sham-link) | | | +--:(sham-link) | |||
| | | +--ro sham-link | | | +--ro sham-link | |||
| skipping to change at page 18, line 39 ¶ | skipping to change at page 22, line 7 ¶ | |||
| | +--ro age? uint32 | | +--ro age? uint32 | |||
| | +--ro exit-reason? restart-exit-reason-type | | +--ro exit-reason? restart-exit-reason-type | |||
| +---n if-rx-bad-packet | +---n if-rx-bad-packet | |||
| | +--ro routing-protocol-name? | | +--ro routing-protocol-name? | |||
| | + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| | + control-plane-protocol/name | | + control-plane-protocol/name | |||
| | +--ro af? | | +--ro af? | |||
| | + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| | + control-plane-protocol | | + control-plane-protocol | |||
| | + [rt:name=current()/../routing-protocol-name]/ | | + [rt:name=current()/../routing-protocol-name]/ | |||
| | + ospf:ospf/instance/af | | + ospf:ospf/af | |||
| | +--ro (if-link-type-selection)? | | +--ro (if-link-type-selection)? | |||
| | | +--:(interface) | | | +--:(interface) | |||
| | | | +--ro interface | | | | +--ro interface | |||
| | | | +--ro interface? if:interface-ref | | | | +--ro interface? if:interface-ref | |||
| | | +--:(virtual-link) | | | +--:(virtual-link) | |||
| | | | +--ro virtual-link | | | | +--ro virtual-link | |||
| | | | +--ro transit-area-id? area-id-type | | | | +--ro transit-area-id? area-id-type | |||
| | | | +--ro neighbor-router-id? rt-types:router-id | | | | +--ro neighbor-router-id? rt-types:router-id | |||
| | | +--:(sham-link) | | | +--:(sham-link) | |||
| | | +--ro sham-link | | | +--ro sham-link | |||
| skipping to change at page 19, line 15 ¶ | skipping to change at page 22, line 31 ¶ | |||
| | +--ro packet-source? yang:dotted-quad | | +--ro packet-source? yang:dotted-quad | |||
| | +--ro packet-type? packet-type | | +--ro packet-type? packet-type | |||
| +---n lsdb-approaching-overflow | +---n lsdb-approaching-overflow | |||
| | +--ro routing-protocol-name? | | +--ro routing-protocol-name? | |||
| | + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| | + control-plane-protocol/name | | + control-plane-protocol/name | |||
| | +--ro af? | | +--ro af? | |||
| | + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| | + control-plane-protocol | | + control-plane-protocol | |||
| | + [rt:name=current()/../routing-protocol-name]/ | | + [rt:name=current()/../routing-protocol-name]/ | |||
| | + ospf:ospf/instance/af | | + ospf:ospf/af | |||
| | +--ro ext-lsdb-limit? uint32 | | +--ro ext-lsdb-limit? uint32 | |||
| +---n lsdb-overflow | +---n lsdb-overflow | |||
| | +--ro routing-protocol-name? | | +--ro routing-protocol-name? | |||
| | + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| | + control-plane-protocol/name | | + control-plane-protocol/name | |||
| | +--ro af? | | +--ro af? | |||
| | + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| | + control-plane-protocol | | + control-plane-protocol | |||
| | + [rt:name=current()/../routing-protocol-name]/ | | + [rt:name=current()/../routing-protocol-name]/ | |||
| | + ospf:ospf/instance/af | | + ospf:ospf/af | |||
| | +--ro ext-lsdb-limit? uint32 | | +--ro ext-lsdb-limit? uint32 | |||
| +---n nssa-translator-status-change | +---n nssa-translator-status-change | |||
| | +--ro routing-protocol-name? | | +--ro routing-protocol-name? | |||
| | + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| | + control-plane-protocol/name | | + control-plane-protocol/name | |||
| | +--ro af? | | +--ro af? | |||
| | + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| | + control-plane-protocol | | + control-plane-protocol | |||
| | + [rt:name=current()/../routing-protocol-name]/ | | + [rt:name=current()/../routing-protocol-name]/ | |||
| | + ospf:ospf/instance/af | | + ospf:ospf/af | |||
| | +--ro area-id? area-id-type | | +--ro area-id? area-id-type | |||
| | +--ro status? nssa-translator-state-type | | +--ro status? nssa-translator-state-type | |||
| +---n restart-status-change | +---n restart-status-change | |||
| +--ro routing-protocol-name? | +--ro routing-protocol-name? | |||
| + -> /rt:routing/control-plane-protocols/ | + -> /rt:routing/control-plane-protocols/ | |||
| + control-plane-protocol/name | + control-plane-protocol/name | |||
| +--ro af? | +--ro af? | |||
| + -> /rt:routing/control-plane-protocols/ | + -> /rt:routing/control-plane-protocols/ | |||
| + control-plane-protocol | + control-plane-protocol | |||
| + [rt:name=current()/../routing-protocol-name]/ | + [rt:name=current()/../routing-protocol-name]/ | |||
| + ospf:ospf/instance/af | + ospf:ospf/af | |||
| +--ro status? restart-status-type | +--ro status? restart-status-type | |||
| +--ro restart-interval? uint16 | +--ro restart-interval? uint16 | |||
| +--ro exit-reason? restart-exit-reason-type | +--ro exit-reason? restart-exit-reason-type | |||
| 2.10. OSPF RPC Operations | 2.9. OSPF RPC Operations | |||
| The "ietf-ospf" module defines two RPC operations: | The "ietf-ospf" module defines two RPC operations: | |||
| o clear-database: reset the content of a particular OSPF database. | o clear-database: reset the content of a particular OSPF Link State | |||
| Database. | ||||
| o clear-neighbor: restart a particular set of OSPF neighbor. | o clear-neighbor: Reset a particular OSPF neighbor or group of | |||
| neighbors associated with an OSPF interface. | ||||
| rpcs: | rpcs: | |||
| +---x clear-neighbor | +---x clear-neighbor | |||
| | +---w input | | +---w input | |||
| | +---w routing-protocol-name | | +---w routing-protocol-name | |||
| | + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| | + control-plane-protocol/name | | + control-plane-protocol/name | |||
| | +---w interface? if:interface-ref | | +---w interface? if:interface-ref | |||
| +---x clear-database | +---x clear-database | |||
| +---w input | +---w input | |||
| +---w routing-protocol-name | +---w routing-protocol-name | |||
| -> /rt:routing/control-plane-protocols/ | -> /rt:routing/control-plane-protocols/ | |||
| control-plane-protocol/name | control-plane-protocol/name | |||
| 3. OSPF Yang Module | 3. OSPF YANG Module | |||
| <CODE BEGINS> file "ietf-ospf@2017-10-30.yang" | The following RFCs and drafts are not referenced in the document text | |||
| but are referenced in the ietf-ospf.yang module: [RFC0905], | ||||
| [RFC4576], [RFC4973], [RFC5250], [RFC5309], [RFC5642], [RFC5881], | ||||
| [RFC6991], [RFC7770], [RFC7884], [RFC8294], and [RFC8476]. | ||||
| <CODE BEGINS> file "ietf-ospf@2019-10-17.yang" | ||||
| module ietf-ospf { | module ietf-ospf { | |||
| yang-version 1.1; | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-ospf"; | namespace "urn:ietf:params:xml:ns:yang:ietf-ospf"; | |||
| prefix ospf; | prefix ospf; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| reference "RFC 6991: Common YANG Data Types"; | ||||
| } | } | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix "yang"; | prefix "yang"; | |||
| reference "RFC 6991: Common YANG Data Types"; | ||||
| } | } | |||
| import ietf-interfaces { | import ietf-interfaces { | |||
| prefix "if"; | prefix "if"; | |||
| reference "RFC 8343: A YANG Data Model for Interface | ||||
| Management (NMDA Version)"; | ||||
| } | } | |||
| import ietf-routing-types { | import ietf-routing-types { | |||
| prefix "rt-types"; | prefix "rt-types"; | |||
| reference "RFC 8294: Common YANG Data Types for the | ||||
| Routing Area"; | ||||
| } | } | |||
| import iana-routing-types { | import iana-routing-types { | |||
| prefix "iana-rt-types"; | prefix "iana-rt-types"; | |||
| reference "RFC 8294: Common YANG Data Types for the | ||||
| Routing Area"; | ||||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| reference "RFC 8349: A YANG Data Model for Routing | ||||
| Management (NMDA Version)"; | ||||
| } | } | |||
| import ietf-key-chain { | import ietf-key-chain { | |||
| prefix "key-chain"; | prefix "key-chain"; | |||
| reference "RFC 8177: YANG Data Model for Key Chains"; | ||||
| } | ||||
| import ietf-bfd-types { | ||||
| prefix "bfd-types"; | ||||
| reference "RFC YYYY: YANG Data Model for Bidirectional | ||||
| Forwarding Detection (BFD). Please replace YYYY with | ||||
| published RFC number for draft-ietf-bfd-yang."; | ||||
| } | } | |||
| organization | organization | |||
| "IETF OSPF - OSPF Working Group"; | "IETF LSR - Link State Routing Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://datatracker.ietf.org/group/ospf/> | "WG Web: <https://datatracker.ietf.org/group/lsr/> | |||
| WG List: <mailto:ospf@ietf.org> | WG List: <mailto:lsr@ietf.org> | |||
| Editor: Derek Yeung | Editor: Derek Yeung | |||
| <mailto:derek@arrcus.com> | <mailto:derek@arrcus.com> | |||
| Author: Acee Lindem | Author: Acee Lindem | |||
| <mailto:acee@cisco.com> | <mailto:acee@cisco.com> | |||
| Author: Yingzhen Qu | Author: Yingzhen Qu | |||
| <mailto:yingzhen.qu@huawei.com> | <mailto:yingzhen.qu@futurewei.com> | |||
| Author: Jeffrey Zhang | Author: Salih K A | |||
| <mailto:zzhang@juniper.net> | <mailto:salih@juniper.net> | |||
| Author: Ing-Wher Chen | Author: Ing-Wher Chen | |||
| <mailto:ing-wher_chen@jabil.com> | <mailto:ingwherchen@mitre.org>"; | |||
| Author: Dean Bogdanovic | ||||
| <mailto:ivandean@gmail.com> | ||||
| Author: Kiran Agrahara Sreenivasa | ||||
| <mailto:kkoushik@cisco.com>"; | ||||
| description | description | |||
| "This YANG module defines the generic configuration and | "This YANG module defines the generic configuration and | |||
| operational state for the OSPF protocol common to all | operational state for the OSPF protocol common to all | |||
| vendor implementations. It is intended that the module | vendor implementations. It is intended that the module | |||
| will be extended by vendors to define vendor-specific | will be extended by vendors to define vendor-specific | |||
| OSPF configuration parameters and policies, | OSPF configuration parameters and policies, | |||
| for example route maps or route policies. | for example, route maps or route policies. | |||
| Copyright (c) 2017 IETF Trust and the persons identified as | ||||
| authors of the code. All rights reserved. | ||||
| Redistribution and use in source and binary forms, with or | ||||
| without modification, is permitted pursuant to, and subject | ||||
| to the license terms contained in, the Simplified BSD License | ||||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
| Relating to IETF Documents | ||||
| (http://trustee.ietf.org/license-info). | ||||
| This version of this YANG module is part of RFC XXXX; | ||||
| see the RFC itself for full legal notices."; | ||||
| reference "RFC XXXX"; | ||||
| revision 2017-10-30 { | ||||
| description | ||||
| "* Address iana-routing-types address-family type change. | ||||
| * Complete NMDA change for routing-state augmentation. | ||||
| "; | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for OSPF."; | ||||
| } | ||||
| revision 2017-07-01 { | ||||
| description | ||||
| "* Restructure model to conform to NMDA. | ||||
| * Remove features for instance, area and interface | ||||
| inheritance. | ||||
| * Update static neighbor identifier description to | ||||
| allow for router-id, ipv4-address, and ipv6-address. | ||||
| * Added spf-log and lsa-log. | ||||
| * Use dotted-quad for OSPFv2 LSA ID. | ||||
| * Fix virtual-link transit-area-id leafref path and | ||||
| must statement. | ||||
| "; | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for OSPF."; | ||||
| } | ||||
| revision 2017-03-12 { | ||||
| description | ||||
| "* Update authors information. | ||||
| * Rename admin distance to preference. | ||||
| * Rename network type to interface type. | ||||
| * Add ietf-spf-delay as a feature. | ||||
| * Add node-tag as a feature and update LSA | ||||
| definition accordingly. | ||||
| * Remove LDP IGP autoconfig. | ||||
| * Add BFD as a feature instead of a separate module. | ||||
| * Change TE router ID to support IPv4 and IPv6 router ID. | ||||
| * Replace key-chain:crypto-algorithm-types with | ||||
| key-chain:crypto-algorithm. | ||||
| * Remove type ieee-bandwidth. | ||||
| * Import ietf-routing-types and make use of | ||||
| router-id, address-family and bandwidth-ieee-float32 | ||||
| type definitions. | ||||
| * Simplify notification header. | ||||
| * Fix compilation issue in multiple must statements. | ||||
| "; | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for OSPF."; | ||||
| } | ||||
| revision 2016-10-31 { | This YANG model conforms to the Network Management | |||
| description | Datastore Architecture (NMDA) as described in RFC 8242. | |||
| "* Update authors information. | ||||
| * Rename candidate-disabled to candidiate-enable | ||||
| and set the default value to TRUE. | ||||
| * Rename node identifiers that end with | ||||
| 'enabled' to 'enable'. | ||||
| * Set the default value of | ||||
| ospf/instance/areas/area/interfaces/interface/ | ||||
| fast-reroute/lfa/enable (previously named 'enabled') | ||||
| to FALSE. | ||||
| * Set the default value of | ||||
| ospf/instance/areas/area/interfaces/interface/ | ||||
| fast-reroute/remote-lfa/enable (previously named 'enabled') | ||||
| to FALSE. | ||||
| * Rename | ||||
| ospf/instance/areas/area/interfaces/interface/ | ||||
| static-neighbors/neighbor/address to 'identifier' | ||||
| with type inet:ip-address | ||||
| * Add 'dead-timer' to | ||||
| ospf-state/instance/areas/area/interfaces/interface/ | ||||
| neighbors/neighbor. | ||||
| * Remove 'mtu-ignore' and 'prefix-suppression' from | ||||
| virtual-link configuration. | ||||
| * Adjust range specifications from 'transmit-delay', | ||||
| 'dead-interval', and 'retransmit-interval' in | ||||
| ospf/instance/areas/area/interfaces/interface. | ||||
| * Change the type of | ||||
| ospf/instance/areas/area/interface/interface/dead-interval | ||||
| to uint32 to match RFC2328 Appendix A.3.2. | ||||
| * Change hello-timer and wait-timer unit to seconds. | ||||
| * Update hello-timer, dead-timer and wait-timer descriptions. | ||||
| * Add IEEE bandwidth type and update all TE bandwidth fields | ||||
| to use it. | ||||
| * Add Nt-bit to OSPFv2 router LSA. | ||||
| * Remove L-bit from OSPFv2 router LSA. | ||||
| "; | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for OSPF."; | ||||
| } | ||||
| revision 2016-07-07 { | Copyright (c) 2018 IETF Trust and the persons identified as | |||
| description | authors of the code. All rights reserved. | |||
| "* Add ospfv3 AF bit. | ||||
| * Add ospfv2 MT, L, O, DN bit. | ||||
| * Add interface priority config. | ||||
| * Change bdr-ip-address to type ip-address. | ||||
| * Rename leaf interface to name. | ||||
| * Rename rx-bad-packet to if-rx-bad-packet. | ||||
| * Move virtual link placement to backbone area. | ||||
| * Remove cost configuration from virtual link. | ||||
| * Move if-feature multi-area-adj statement. | ||||
| * Add type checksum16-type. | ||||
| * Change LSA header checksum to use checksum16-type. | ||||
| * Change routing-protocol to control-plane-protocol. | ||||
| * Change import module name to ietf-key-chain."; | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for OSPF."; | ||||
| } | ||||
| revision 2016-03-20 { | Redistribution and use in source and binary forms, with or | |||
| description | without modification, is permitted pursuant to, and subject to | |||
| "* Reorganize *-config and *-operation groupings. | the license terms contained in, the Simplified BSD License set | |||
| * Use *-config under state tree for applied config. | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| * Rename config router-id to explicit-router-id. | Relating to IETF Documents | |||
| * Rename feature router-id to explicit-router-id. | (https://trustee.ietf.org/license-info). | |||
| * Add OSPFv3 instance ID. | ||||
| * Add OSPFv3 interface ID. | ||||
| * Add ip-address for DR and BDR. | ||||
| * Remove routing-instance. | ||||
| * Change import module name to ietf-routing-key-chain."; | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for OSPF."; | ||||
| } | ||||
| revision 2015-10-19 { | This version of this YANG module is part of RFC XXXX | |||
| description | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | |||
| "* Remove the abstract identity ospf. | for full legal notices. | |||
| * Make area-id-type dotted-quad only. | ||||
| * Use area-id-type for all area-id leafs. | ||||
| * Restructure notifications. | ||||
| * Move BFD support to the new ietf-ospf-bfd module. | ||||
| * Update author information. | ||||
| * Editorial changes."; | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for OSPF."; | ||||
| } | ||||
| revision 2015-09-02 { | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| description | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| "* Author information update. | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| * Editorial changes"; | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| reference | they appear in all capitals, as shown here. | |||
| "RFC XXXX: A YANG Data Model for OSPF."; | ||||
| } | ||||
| revision 2015-07-06 { | This version of this YANG module is part of RFC XXXX; | |||
| description | see the RFC itself for full legal notices."; | |||
| "* Remove support for protocol-centric config. | ||||
| * Enclose list in container, except for instance. | ||||
| * Replace protocol-shutdown with admin-control. | ||||
| * Add IP-FRR per-interface config. | ||||
| * Reorganize max-path etc node. | ||||
| * Add node-flag. | ||||
| * Align config/operation hierarchy. | ||||
| * Use relative path for reference to rib. | ||||
| * Add ability to set single admin distance. | ||||
| * Make unreserved bandwidth into list. | ||||
| * Add F and T bit to OSPFv3 external LSA. | ||||
| * Remove key statement inside LSA body. | ||||
| * Add stub router support. | ||||
| * Fix usage of af-area-config. | ||||
| * Add statistics to operation data. | ||||
| * Add local rib. | ||||
| * Use dotted-quad for all router-id fields. | ||||
| * Support more than one multi-area per interface. | ||||
| * Use uint16 for LSA type. | ||||
| * Update grouping notification-instance-hdr. | ||||
| * Rework condition for opaque type and id in OSPFv2 LSA. | ||||
| * Rename local-remote-ipv4-addr with remote-if-ipv4-addr. | ||||
| * Add virtual-link/sham-link to operation state. | ||||
| * Allow multiple link TLVs in one LSA. | ||||
| * Fix bug in as-scope-lsas. | ||||
| * Remove OSPFv3 restriction in link-scope-lsas. | ||||
| * Editorial changes."; | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for OSPF."; | ||||
| } | ||||
| revision 2015-03-09 { | revision 2019-10-17 { | |||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Data Model for OSPF."; | "RFC XXXX: A YANG Data Model for OSPF."; | |||
| } | } | |||
| feature multi-topology { | feature multi-topology { | |||
| description | description | |||
| "Support Multiple-Topolgy Routing (MTR)."; | "Support Multiple-Topology Routing (MTR)."; | |||
| reference "RFC 4915: Multi-Topology Routing"; | ||||
| } | } | |||
| feature multi-area-adj { | feature multi-area-adj { | |||
| description | description | |||
| "OSPF multi-area adjacency support as in RFC 5185."; | "OSPF multi-area adjacency support as in RFC 5185."; | |||
| reference "RFC 5185: Multi-Area Adjacency"; | ||||
| } | } | |||
| feature explicit-router-id { | feature explicit-router-id { | |||
| description | description | |||
| "Set Router-ID per instance explicitly."; | "Set Router-ID per instance explicitly."; | |||
| } | } | |||
| feature demand-circuit { | feature demand-circuit { | |||
| description | description | |||
| "OSPF demand circuit support as in RFC 1793."; | "OSPF demand circuit support as in RFC 1793."; | |||
| reference "RFC 1793: OSPF Demand Circuits"; | ||||
| } | } | |||
| feature mtu-ignore { | feature mtu-ignore { | |||
| description | description | |||
| "Disable OSPF Database Description packet MTU | "Disable OSPF Database Description packet MTU | |||
| mismatch checking."; | mismatch checking specified in the OSPF | |||
| protocol specification."; | ||||
| reference "RFC 2328: OSPF Version 2, section 10.6"; | ||||
| } | } | |||
| feature lls { | feature lls { | |||
| description | description | |||
| "OSPF link-local signaling (LLS) as in RFC 5613."; | "OSPF link-local signaling (LLS) as in RFC 5613."; | |||
| reference "RFC 5613: OSPF Link-Local Signaling"; | ||||
| } | } | |||
| feature prefix-suppression { | feature prefix-suppression { | |||
| description | description | |||
| "OSPF prefix suppression support as in RFC 6860."; | "OSPF prefix suppression support as in RFC 6860."; | |||
| reference "RFC 6860: Hide Transit-Only Networks in OSPF"; | ||||
| } | } | |||
| feature ttl-security { | feature ttl-security { | |||
| description | description | |||
| "OSPF TTL security check."; | "OSPF Time to Live (TTL) security check support."; | |||
| reference "RFC 5082: The Generalized TTL Security | ||||
| Mechanism (GTSM)"; | ||||
| } | } | |||
| feature nsr { | feature nsr { | |||
| description | description | |||
| "Non-Stop-Routing (NSR)."; | "Non-Stop-Routing (NSR) support. The OSPF NSR feature | |||
| allows a router with redundant control-plane capability | ||||
| (e.g., dual Route-Processor (RP) cards) to maintain its | ||||
| state and adjacencies during planned and unplanned | ||||
| OSPF instance restarts. It differs from graceful-restart | ||||
| or Non-Stop Forwarding (NSF) in that no protocol signaling | ||||
| or assistance from adjacent OSPF neighbors is required to | ||||
| recover control-plane state."; | ||||
| } | } | |||
| feature graceful-restart { | feature graceful-restart { | |||
| description | description | |||
| "Graceful OSPF Restart as defined in RFC 3623 and | "Graceful OSPF Restart as defined in RFC 3623 and | |||
| RFC 5187."; | RFC 5187."; | |||
| } | reference "RFC 3623: Graceful OSPF Restart | |||
| feature admin-control { | RFC 5187: OSPFv3 Graceful Restart"; | |||
| description | ||||
| "Administrative control of the protocol state."; | ||||
| } | } | |||
| feature auto-cost { | feature auto-cost { | |||
| description | description | |||
| "Calculate OSPF interface cost according to | "Calculate OSPF interface cost according to | |||
| reference bandwidth."; | reference bandwidth."; | |||
| reference "RFC 2328: OSPF Version 2"; | ||||
| } | } | |||
| feature max-ecmp { | feature max-ecmp { | |||
| description | description | |||
| "Setting maximum number of ECMP paths."; | "Setting maximum number of ECMP paths."; | |||
| } | } | |||
| feature max-lsa { | feature max-lsa { | |||
| description | description | |||
| "Setting maximum number of LSAs the OSPF instance | "Setting the maximum number of LSAs the OSPF instance | |||
| will accept."; | will accept."; | |||
| reference "RFC 1765: OSPF Database Overload"; | ||||
| } | } | |||
| feature te-rid { | feature te-rid { | |||
| description | description | |||
| "TE Router-ID."; | "Support configuration of the Traffic Engineering (TE) | |||
| Router-ID, i.e., the Router Address described in Section | ||||
| 2.4.1 of RFC3630 or the Router IPv6 Address TLV described | ||||
| in Section 3 of RFC5329."; | ||||
| reference "RFC 3630: Traffic Engineering (TE) Extensions | ||||
| to OSPF Version 2 | ||||
| RFC 5329: Traffic Engineering (TE) Extensions | ||||
| to OSPF Version 3"; | ||||
| } | } | |||
| feature ldp-igp-sync { | feature ldp-igp-sync { | |||
| description | description | |||
| "LDP IGP synchronization."; | "LDP IGP synchronization."; | |||
| reference "RFC 5443: LDP IGP Synchronization"; | ||||
| } | ||||
| feature ospfv2-authentication-trailer { | ||||
| description | ||||
| "Support OSPFv2 authentication trailer for OSPFv2 | ||||
| authentication."; | ||||
| reference "RFC 5709: Supporting Authentication | ||||
| Trailer for OSPFv2 | ||||
| RFC 7474: Security Extension for OSPFv2 When | ||||
| Using Manual Key Management"; | ||||
| } | } | |||
| feature ospfv3-authentication-ipsec { | feature ospfv3-authentication-ipsec { | |||
| description | description | |||
| "Use IPsec for OSPFv3 authentication."; | "Support IPsec for OSPFv3 authentication."; | |||
| reference "RFC 4552: Authentication/Confidentiality | ||||
| for OSPFv3"; | ||||
| } | ||||
| feature ospfv3-authentication-trailer { | ||||
| description | ||||
| "Support OSPFv3 authentication trailer for OSPFv3 | ||||
| authentication."; | ||||
| reference "RFC 7166: Supporting Authentication | ||||
| Trailer for OSPFv3"; | ||||
| } | } | |||
| feature fast-reroute { | feature fast-reroute { | |||
| description | description | |||
| "Support of IP Fast Reroute (IP-FRR)."; | "Support for IP Fast Reroute (IP-FRR)."; | |||
| reference "RFC 5714: IP Fast Reroute Framework"; | ||||
| } | ||||
| feature key-chain { | ||||
| description | ||||
| "Support of keychain for authentication."; | ||||
| reference "RFC8177: YANG Data Model for Key Chains"; | ||||
| } | } | |||
| feature node-flag { | feature node-flag { | |||
| description | description | |||
| "Support of node flag."; | "Support for node-flag for OSPF prefixes."; | |||
| reference "RFC 7684: OSPFv2 Prefix/Link Advertisement"; | ||||
| } | } | |||
| feature node-tag { | feature node-tag { | |||
| description | description | |||
| "Support of node tag."; | "Support for node admin tag for OSPF routing instances."; | |||
| reference "RFC 7777: Advertising Node Administrative | ||||
| Tags in OSPF"; | ||||
| } | } | |||
| feature lfa { | feature lfa { | |||
| description | description | |||
| "Support of Loop Free Alternates (LFAs)."; | "Support for Loop-Free Alternates (LFAs)."; | |||
| reference "RFC 5286: Basic Specification for IP Fast | ||||
| Reroute: Loop-Free Alternates"; | ||||
| } | } | |||
| feature remote-lfa { | feature remote-lfa { | |||
| description | description | |||
| "Support of Remote Loop Free Alternates (R-LFA)."; | "Support for Remote Loop-Free Alternates (R-LFA)."; | |||
| reference "RFC 7490: Remote Loop-Free Alternate (LFA) | ||||
| Fast Reroute (FRR)"; | ||||
| } | } | |||
| feature stub-router { | feature stub-router { | |||
| description | description | |||
| "Support of RFC 6987 OSPF Stub Router Advertisement."; | "Support for RFC 6987 OSPF Stub Router Advertisement."; | |||
| reference "RFC 6987: OSPF Stub Router Advertisement"; | ||||
| } | } | |||
| feature pe-ce-protocol { | feature pe-ce-protocol { | |||
| description | description | |||
| "Support PE-CE protocol"; | "Support for OSPF as a PE-CE protocol"; | |||
| reference "RFC 4577: OSPF as the Provider/Customer Edge | ||||
| Protocol for BGP/MPLS IP Virtual Private | ||||
| Networks (VPNs) | ||||
| RFC 6565: OSPFv3 as a Provider Edge to Customer | ||||
| Edge (PE-CE) Routing Protocol"; | ||||
| } | } | |||
| feature ietf-spf-delay { | feature ietf-spf-delay { | |||
| description | description | |||
| "Support of IETF SPF delay algorithm."; | "Support for IETF SPF delay algorithm."; | |||
| reference "RFC 8405: SPF Back-off algorithm for link | ||||
| state IGPs"; | ||||
| } | } | |||
| feature bfd { | feature bfd { | |||
| description | description | |||
| "Support of BFD."; | "Support for BFD detection of OSPF neighbor reachability."; | |||
| reference "RFC 5880: Bidirectional Forwarding Detection (BFD) | ||||
| RFC 5881: Bidirectional Forwarding Detection | ||||
| (BFD) for IPv4 and IPv6 (Single Hop)"; | ||||
| } | } | |||
| identity ospfv2 { | feature hybrid-interface { | |||
| base "rt:routing-protocol"; | description | |||
| description "OSPFv2"; | "Support for OSPF Hybrid interface type."; | |||
| reference "RFC 6845: OSPF Hybrid Broadcast and | ||||
| Point-to-Multipoint Interface Type"; | ||||
| } | } | |||
| identity ospfv3 { | identity ospf { | |||
| base "rt:routing-protocol"; | base "rt:routing-protocol"; | |||
| description "OSPFv3"; | description "Any OSPF protocol version"; | |||
| } | } | |||
| identity operation-mode { | identity ospfv2 { | |||
| description | base "ospf"; | |||
| "OSPF operation mode."; | description "OSPFv2 protocol"; | |||
| } | } | |||
| identity ships-in-the-night { | ||||
| base operation-mode; | identity ospfv3 { | |||
| description | base "ospf"; | |||
| "Ships-in-the-night operation mode in which | description "OSPFv3 protocol"; | |||
| each OSPF instance carries only one address family"; | ||||
| } | } | |||
| identity area-type { | identity area-type { | |||
| description "Base identity for OSPF area type."; | description "Base identity for OSPF area type."; | |||
| } | } | |||
| identity normal { | identity normal-area { | |||
| base area-type; | base area-type; | |||
| description "OSPF normal area."; | description "OSPF normal area."; | |||
| } | } | |||
| identity stub { | identity stub-nssa-area { | |||
| base area-type; | base area-type; | |||
| description "OSPF stub or NSSA area."; | ||||
| } | ||||
| identity stub-area { | ||||
| base stub-nssa-area; | ||||
| description "OSPF stub area."; | description "OSPF stub area."; | |||
| } | } | |||
| identity nssa { | identity nssa-area { | |||
| base area-type; | base stub-nssa-area; | |||
| description "OSPF NSSA area."; | description "OSPF Not-So-Stubby Area (NSSA)."; | |||
| reference "RFC 3101: The OSPF Not-So-Stubby Area | ||||
| (NSSA) Option"; | ||||
| } | ||||
| identity ospf-lsa-type { | ||||
| description | ||||
| "Base identity for OSPFv2 and OSPFv3 | ||||
| Link State Advertisement (LSA) types"; | ||||
| } | ||||
| identity ospfv2-lsa-type { | ||||
| base ospf-lsa-type; | ||||
| description | ||||
| "OSPFv2 LSA types"; | ||||
| } | ||||
| identity ospfv2-router-lsa { | ||||
| base ospfv2-lsa-type; | ||||
| description | ||||
| "OSPFv2 Router LSA - Type 1"; | ||||
| } | ||||
| identity ospfv2-network-lsa { | ||||
| base ospfv2-lsa-type; | ||||
| description | ||||
| "OSPFv2 Network LSA - Type 2"; | ||||
| } | ||||
| identity ospfv2-summary-lsa-type { | ||||
| base ospfv2-lsa-type; | ||||
| description | ||||
| "OSPFv2 Summary LSA types"; | ||||
| } | ||||
| identity ospfv2-network-summary-lsa { | ||||
| base ospfv2-summary-lsa-type; | ||||
| description | ||||
| "OSPFv2 Network Summary LSA - Type 3"; | ||||
| } | ||||
| identity ospfv2-asbr-summary-lsa { | ||||
| base ospfv2-summary-lsa-type; | ||||
| description | ||||
| "OSPFv2 AS Boundary Router (ASBR) Summary LSA - Type 4"; | ||||
| } | ||||
| identity ospfv2-external-lsa-type { | ||||
| base ospfv2-lsa-type; | ||||
| description | ||||
| "OSPFv2 External LSA types"; | ||||
| } | ||||
| identity ospfv2-as-external-lsa { | ||||
| base ospfv2-external-lsa-type; | ||||
| description | ||||
| "OSPFv2 AS External LSA - Type 5"; | ||||
| } | ||||
| identity ospfv2-nssa-lsa { | ||||
| base ospfv2-external-lsa-type; | ||||
| description | ||||
| "OSPFv2 Not-So-Stubby-Area (NSSA) LSA - Type 7"; | ||||
| } | ||||
| identity ospfv2-opaque-lsa-type { | ||||
| base ospfv2-lsa-type; | ||||
| description | ||||
| "OSPFv2 Opaque LSA types"; | ||||
| } | ||||
| identity ospfv2-link-scope-opaque-lsa { | ||||
| base ospfv2-opaque-lsa-type; | ||||
| description | ||||
| "OSPFv2 Link-Scoped Opaque LSA - Type 9"; | ||||
| } | ||||
| identity ospfv2-area-scope-opaque-lsa { | ||||
| base ospfv2-opaque-lsa-type; | ||||
| description | ||||
| "OSPFv2 Area-Scoped Opaque LSA - Type 10"; | ||||
| } | ||||
| identity ospfv2-as-scope-opaque-lsa { | ||||
| base ospfv2-opaque-lsa-type; | ||||
| description | ||||
| "OSPFv2 AS-Scoped Opaque LSA - Type 11"; | ||||
| } | ||||
| identity ospfv2-unknown-lsa-type { | ||||
| base ospfv2-lsa-type; | ||||
| description | ||||
| "OSPFv2 Unknown LSA type"; | ||||
| } | ||||
| identity ospfv3-lsa-type { | ||||
| base ospf-lsa-type; | ||||
| description | ||||
| "OSPFv3 LSA types."; | ||||
| } | ||||
| identity ospfv3-router-lsa { | ||||
| base ospfv3-lsa-type; | ||||
| description | ||||
| "OSPFv3 Router LSA - Type 0x2001"; | ||||
| } | ||||
| identity ospfv3-network-lsa { | ||||
| base ospfv3-lsa-type; | ||||
| description | ||||
| "OSPFv3 Network LSA - Type 0x2002"; | ||||
| } | ||||
| identity ospfv3-summary-lsa-type { | ||||
| base ospfv3-lsa-type; | ||||
| description | ||||
| "OSPFv3 Summary LSA types"; | ||||
| } | ||||
| identity ospfv3-inter-area-prefix-lsa { | ||||
| base ospfv3-summary-lsa-type; | ||||
| description | ||||
| "OSPFv3 Inter-area Prefix LSA - Type 0x2003"; | ||||
| } | ||||
| identity ospfv3-inter-area-router-lsa { | ||||
| base ospfv3-summary-lsa-type; | ||||
| description | ||||
| "OSPFv3 Inter-area Router LSA - Type 0x2004"; | ||||
| } | ||||
| identity ospfv3-external-lsa-type { | ||||
| base ospfv3-lsa-type; | ||||
| description | ||||
| "OSPFv3 External LSA types"; | ||||
| } | ||||
| identity ospfv3-as-external-lsa { | ||||
| base ospfv3-external-lsa-type; | ||||
| description | ||||
| "OSPFv3 AS-External LSA - Type 0x4005"; | ||||
| } | ||||
| identity ospfv3-nssa-lsa { | ||||
| base ospfv3-external-lsa-type; | ||||
| description | ||||
| "OSPFv3 Not-So-Stubby-Area (NSSA) LSA - Type 0x2007"; | ||||
| } | ||||
| identity ospfv3-link-lsa { | ||||
| base ospfv3-lsa-type; | ||||
| description | ||||
| "OSPFv3 Link LSA - Type 0x0008"; | ||||
| } | ||||
| identity ospfv3-intra-area-prefix-lsa { | ||||
| base ospfv3-lsa-type; | ||||
| description | ||||
| "OSPFv3 Intra-area Prefix LSA - Type 0x2009"; | ||||
| } | ||||
| identity ospfv3-router-information-lsa { | ||||
| base ospfv3-lsa-type; | ||||
| description | ||||
| "OSPFv3 Router Information LSA - Types 0x800C, | ||||
| 0xA00C, and 0xC00C"; | ||||
| } | ||||
| identity ospfv3-unknown-lsa-type { | ||||
| base ospfv3-lsa-type; | ||||
| description | ||||
| "OSPFv3 Unknown LSA type"; | ||||
| } | } | |||
| identity lsa-log-reason { | identity lsa-log-reason { | |||
| description | description | |||
| "Base identity for an LSA log reason."; | "Base identity for an LSA log reason."; | |||
| } | } | |||
| identity lsa-refresh { | identity lsa-refresh { | |||
| base lsa-log-reason; | base lsa-log-reason; | |||
| description | description | |||
| skipping to change at page 30, line 9 ¶ | skipping to change at page 35, line 29 ¶ | |||
| of the LSA."; | of the LSA."; | |||
| } | } | |||
| identity lsa-purge { | identity lsa-purge { | |||
| base lsa-log-reason; | base lsa-log-reason; | |||
| description | description | |||
| "Identity used when the LSA is logged | "Identity used when the LSA is logged | |||
| as a result of being purged."; | as a result of being purged."; | |||
| } | } | |||
| typedef uint24 { | identity informational-capability { | |||
| description | ||||
| "Base identity for router informational capabilities."; | ||||
| } | ||||
| identity graceful-restart { | ||||
| base informational-capability; | ||||
| description | ||||
| "When set, the router is capable of restarting | ||||
| gracefully."; | ||||
| reference "RFC 3623: Graceful OSPF Restart | ||||
| RFC 5187: OSPFv3 Graceful Restart"; | ||||
| } | ||||
| identity graceful-restart-helper { | ||||
| base informational-capability; | ||||
| description | ||||
| "When set, the router is capable of acting as | ||||
| a graceful restart helper."; | ||||
| reference "RFC 3623: Graceful OSPF Restart | ||||
| RFC 5187: OSPFv3 Graceful Restart"; | ||||
| } | ||||
| identity stub-router { | ||||
| base informational-capability; | ||||
| description | ||||
| "When set, the router is capable of acting as | ||||
| an OSPF Stub Router."; | ||||
| reference "RFC 6987: OSPF Stub Router Advertisement"; | ||||
| } | ||||
| identity traffic-engineering { | ||||
| base informational-capability; | ||||
| description | ||||
| "When set, the router is capable of OSPF traffic | ||||
| engineering."; | ||||
| reference "RFC 3630: Traffic Engineering (TE) Extensions | ||||
| to OSPF Version 2 | ||||
| RFC 5329: Traffic Engineering (TE) Extensions | ||||
| to OSPF Version 3"; | ||||
| } | ||||
| identity p2p-over-lan { | ||||
| base informational-capability; | ||||
| description | ||||
| "When set, the router is capable of OSPF Point-to-Point | ||||
| over LAN."; | ||||
| reference "RFC 5309: Point-to-Point Operation over LAN | ||||
| in Link State Routing Protocols"; | ||||
| } | ||||
| identity experimental-te { | ||||
| base informational-capability; | ||||
| description | ||||
| "When set, the router is capable of OSPF experimental | ||||
| traffic engineering."; | ||||
| reference | ||||
| "RFC 4973: OSPF-xTE OSPF Experimental Traffic | ||||
| Engineering"; | ||||
| } | ||||
| identity router-lsa-bit { | ||||
| description | ||||
| "Base identity for Router-LSA bits."; | ||||
| } | ||||
| identity vlink-end-bit { | ||||
| base router-lsa-bit; | ||||
| description | ||||
| "V bit, when set, the router is an endpoint of one or | ||||
| more virtual links."; | ||||
| } | ||||
| identity asbr-bit { | ||||
| base router-lsa-bit; | ||||
| description | ||||
| "E bit, when set, the router is an AS Boundary | ||||
| Router (ASBR)."; | ||||
| } | ||||
| identity abr-bit { | ||||
| base router-lsa-bit; | ||||
| description | ||||
| "B bit, when set, the router is an Area Border | ||||
| Router (ABR)."; | ||||
| } | ||||
| identity nssa-bit { | ||||
| base router-lsa-bit; | ||||
| description | ||||
| "Nt bit, when set, the router is an NSSA border router | ||||
| that is unconditionally translating NSSA LSAs into | ||||
| AS-external LSAs."; | ||||
| } | ||||
| identity ospfv3-lsa-option { | ||||
| description | ||||
| "Base identity for OSPF LSA options flags."; | ||||
| } | ||||
| identity af-bit { | ||||
| base ospfv3-lsa-option; | ||||
| description | ||||
| "AF bit, when set, the router supports OSPFv3 Address | ||||
| Families as in RFC5838."; | ||||
| } | ||||
| identity dc-bit { | ||||
| base ospfv3-lsa-option; | ||||
| description | ||||
| "DC bit, when set, the router supports demand circuits."; | ||||
| } | ||||
| identity r-bit { | ||||
| base ospfv3-lsa-option; | ||||
| description | ||||
| "R bit, when set, the originator is an active router."; | ||||
| } | ||||
| identity n-bit { | ||||
| base ospfv3-lsa-option; | ||||
| description | ||||
| "N bit, when set, the router is attached to an NSSA"; | ||||
| } | ||||
| identity e-bit { | ||||
| base ospfv3-lsa-option; | ||||
| description | ||||
| "E bit, this bit describes the way AS-external LSAs | ||||
| are flooded"; | ||||
| } | ||||
| identity v6-bit { | ||||
| base ospfv3-lsa-option; | ||||
| description | ||||
| "V6 bit, if clear, the router/link should be excluded | ||||
| from IPv6 routing calculation"; | ||||
| } | ||||
| identity ospfv3-prefix-option { | ||||
| description | ||||
| "Base identity for OSPFv3 Prefix Options."; | ||||
| } | ||||
| identity nu-bit { | ||||
| base ospfv3-prefix-option; | ||||
| description | ||||
| "NU Bit, when set, the prefix should be excluded | ||||
| from IPv6 unicast calculations."; | ||||
| } | ||||
| identity la-bit { | ||||
| base ospfv3-prefix-option; | ||||
| description | ||||
| "LA bit, when set, the prefix is actually an IPv6 | ||||
| interface address of the Advertising Router."; | ||||
| } | ||||
| identity p-bit { | ||||
| base ospfv3-prefix-option; | ||||
| description | ||||
| "P bit, when set, the NSSA area prefix should be | ||||
| translated to an AS External LSA and advertised | ||||
| by the translating NSSA Border Router."; | ||||
| } | ||||
| identity dn-bit { | ||||
| base ospfv3-prefix-option; | ||||
| description | ||||
| "DN bit, when set, the inter-area-prefix LSA or | ||||
| AS-external LSA prefix has been advertised as an | ||||
| L3VPN prefix."; | ||||
| } | ||||
| identity ospfv2-lsa-option { | ||||
| description | ||||
| "Base identity for OSPFv2 LSA option flags."; | ||||
| } | ||||
| identity mt-bit { | ||||
| base ospfv2-lsa-option; | ||||
| description | ||||
| "MT bit, When set, the router supports multi-topology as | ||||
| in RFC 4915."; | ||||
| } | ||||
| identity v2-dc-bit { | ||||
| base ospfv2-lsa-option; | ||||
| description | ||||
| "DC bit, When set, the router supports demand circuits."; | ||||
| } | ||||
| identity v2-p-bit { | ||||
| base ospfv2-lsa-option; | ||||
| description | ||||
| "P bit, wnly used in type-7 LSA. When set, an NSSA | ||||
| border router should translate the type-7 LSA | ||||
| to a type-5 LSA."; | ||||
| } | ||||
| identity mc-flag { | ||||
| base ospfv2-lsa-option; | ||||
| description | ||||
| "MC Bit, when set, the router supports MOSPF."; | ||||
| } | ||||
| identity v2-e-flag { | ||||
| base ospfv2-lsa-option; | ||||
| description | ||||
| "E Bit, this bit describes the way AS-external LSAs | ||||
| are flooded."; | ||||
| } | ||||
| identity o-bit { | ||||
| base ospfv2-lsa-option; | ||||
| description | ||||
| "O bit, when set, the router is opaque-capable as in | ||||
| RFC 5250."; | ||||
| } | ||||
| identity v2-dn-bit { | ||||
| base ospfv2-lsa-option; | ||||
| description | ||||
| "DN bit, when a type 3, 5 or 7 LSA is sent from a PE | ||||
| to a CE, the DN bit must be set. See RFC 4576."; | ||||
| } | ||||
| identity ospfv2-extended-prefix-flag { | ||||
| description | ||||
| "Base identity for extended prefix TLV flag."; | ||||
| } | ||||
| identity a-flag { | ||||
| base ospfv2-extended-prefix-flag; | ||||
| description | ||||
| "Attach flag, when set it indicates that the prefix | ||||
| corresponds and a route what is directly connected to | ||||
| the advertising router.."; | ||||
| } | ||||
| identity node-flag { | ||||
| base ospfv2-extended-prefix-flag; | ||||
| description | ||||
| "Node flag, when set, it indicates that the prefix is | ||||
| used to represent the advertising node, e.g., a loopback | ||||
| address."; | ||||
| } | ||||
| typedef ospf-metric { | ||||
| type uint32 { | type uint32 { | |||
| range "0 .. 16777215"; | range "0 .. 16777215"; | |||
| } | } | |||
| description | description | |||
| "24-bit unsigned integer."; | "OSPF Metric - 24-bit unsigned integer."; | |||
| } | ||||
| typedef ospf-link-metric { | ||||
| type uint16 { | ||||
| range "0 .. 65535"; | ||||
| } | ||||
| description | ||||
| "OSPF Link Metric - 16-bit unsigned integer."; | ||||
| } | ||||
| typedef opaque-id { | ||||
| type uint32 { | ||||
| range "0 .. 16777215"; | ||||
| } | ||||
| description | ||||
| "Opaque ID - 24-bit unsigned integer."; | ||||
| } | } | |||
| typedef area-id-type { | typedef area-id-type { | |||
| type yang:dotted-quad; | type yang:dotted-quad; | |||
| description | description | |||
| "Area ID type."; | "Area ID type."; | |||
| } | } | |||
| typedef route-type { | typedef route-type { | |||
| type enumeration { | type enumeration { | |||
| skipping to change at page 30, line 49 ¶ | skipping to change at page 41, line 44 ¶ | |||
| } | } | |||
| enum nssa-2 { | enum nssa-2 { | |||
| description "OSPF type 2 NSSA route."; | description "OSPF type 2 NSSA route."; | |||
| } | } | |||
| } | } | |||
| description "OSPF route type."; | description "OSPF route type."; | |||
| } | } | |||
| typedef if-state-type { | typedef if-state-type { | |||
| type enumeration { | type enumeration { | |||
| enum Down { | enum down { | |||
| value "1"; | value "1"; | |||
| description | description | |||
| "Interface down state."; | "Interface down state."; | |||
| } | } | |||
| enum Loopback { | enum loopback { | |||
| value "2"; | value "2"; | |||
| description | description | |||
| "Interface loopback state."; | "Interface loopback state."; | |||
| } | } | |||
| enum Waiting { | enum waiting { | |||
| value "3"; | value "3"; | |||
| description | description | |||
| "Interface waiting state."; | "Interface waiting state."; | |||
| } | } | |||
| enum Point-to-Point { | enum point-to-point { | |||
| value "4"; | value "4"; | |||
| description | description | |||
| "Interface point-to-point state."; | "Interface point-to-point state."; | |||
| } | } | |||
| enum DR { | enum dr { | |||
| value "5"; | value "5"; | |||
| description | description | |||
| "Interface Designated Router (DR) state."; | "Interface Designated Router (DR) state."; | |||
| } | } | |||
| enum BDR { | enum bdr { | |||
| value "6"; | value "6"; | |||
| description | description | |||
| "Interface Backup Designated Router (BDR) state."; | "Interface Backup Designated Router (BDR) state."; | |||
| } | } | |||
| enum DR-Other { | enum dr-other { | |||
| value "7"; | value "7"; | |||
| description | description | |||
| "Interface Other Designated Router state."; | "Interface Other Designated Router state."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "OSPF interface state type."; | "OSPF interface state type."; | |||
| } | } | |||
| typedef router-link-type { | ||||
| type enumeration { | ||||
| enum point-to-point-link { | ||||
| value "1"; | ||||
| description | ||||
| "Point-to-Point link to Router"; | ||||
| } | ||||
| enum transit-network-link { | ||||
| value "2"; | ||||
| description | ||||
| "Link to transit network identified by | ||||
| Designated-Router (DR)"; | ||||
| } | ||||
| enum stub-network-link { | ||||
| value "3"; | ||||
| description | ||||
| "Link to stub network identified by subnet"; | ||||
| } | ||||
| enum virtual-link { | ||||
| value "4"; | ||||
| description | ||||
| "Virtual link across transit area"; | ||||
| } | ||||
| } | ||||
| description | ||||
| "OSPF Router Link Type."; | ||||
| } | ||||
| typedef nbr-state-type { | typedef nbr-state-type { | |||
| type enumeration { | type enumeration { | |||
| enum Down { | enum down { | |||
| value "1"; | value "1"; | |||
| description | description | |||
| "Neighbor down state."; | "Neighbor down state."; | |||
| } | } | |||
| enum Attempt { | enum attempt { | |||
| value "2"; | value "2"; | |||
| description | description | |||
| "Neighbor attempt state."; | "Neighbor attempt state."; | |||
| } | } | |||
| enum Init { | enum init { | |||
| value "3"; | value "3"; | |||
| description | description | |||
| "Neighbor init state."; | "Neighbor init state."; | |||
| } | } | |||
| enum 2-Way { | enum 2-way { | |||
| value "4"; | value "4"; | |||
| description | description | |||
| "Neighbor 2-Way state."; | "Neighbor 2-Way state."; | |||
| } | } | |||
| enum ExStart { | enum exstart { | |||
| value "5"; | value "5"; | |||
| description | description | |||
| "Neighbor exchange start state."; | "Neighbor exchange start state."; | |||
| } | } | |||
| enum Exchange { | enum exchange { | |||
| value "6"; | value "6"; | |||
| description | description | |||
| "Neighbor exchange state."; | "Neighbor exchange state."; | |||
| } | } | |||
| enum Loading { | enum loading { | |||
| value "7"; | value "7"; | |||
| description | description | |||
| "Neighbor loading state."; | "Neighbor loading state."; | |||
| } | } | |||
| enum Full { | enum full { | |||
| value "8"; | value "8"; | |||
| description | description | |||
| "Neighbor full state."; | "Neighbor full state."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "OSPF neighbor state type."; | "OSPF neighbor state type."; | |||
| } | } | |||
| typedef restart-helper-status-type { | typedef restart-helper-status-type { | |||
| type enumeration { | type enumeration { | |||
| enum Not-Helping { | enum not-helping { | |||
| value "1"; | value "1"; | |||
| description | description | |||
| "Restart helper status not helping."; | "Restart helper status not helping."; | |||
| } | } | |||
| enum Helping { | enum helping { | |||
| value "2"; | value "2"; | |||
| description | description | |||
| "Restart helper status helping."; | "Restart helper status helping."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "Restart helper status type."; | "Restart helper status type."; | |||
| } | } | |||
| typedef restart-exit-reason-type { | typedef restart-exit-reason-type { | |||
| type enumeration { | type enumeration { | |||
| enum None { | enum none { | |||
| value "1"; | value "1"; | |||
| description | description | |||
| "Not attempted."; | "Restart not attempted."; | |||
| } | } | |||
| enum InProgress { | enum in-progress { | |||
| value "2"; | value "2"; | |||
| description | description | |||
| "Restart in progress."; | "Restart in progress."; | |||
| } | } | |||
| enum Completed { | enum completed { | |||
| value "3"; | value "3"; | |||
| description | description | |||
| "Successfully completed."; | "Restart successfully completed."; | |||
| } | } | |||
| enum TimedOut { | enum timed-out { | |||
| value "4"; | value "4"; | |||
| description | description | |||
| "Timed out."; | "Restart timed out."; | |||
| } | } | |||
| enum TopologyChanged { | enum topology-changed { | |||
| value "5"; | value "5"; | |||
| description | description | |||
| "Aborted due to topology change."; | "Restart aborted due to topology change."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "Describes the outcome of the last attempt at a | "Describes the outcome of the last attempt at a | |||
| graceful restart, either by itself or acting | graceful restart, either by itself or acting | |||
| as a helper."; | as a helper."; | |||
| } | } | |||
| typedef packet-type { | typedef packet-type { | |||
| type enumeration { | type enumeration { | |||
| enum Hello { | enum hello { | |||
| value "1"; | value "1"; | |||
| description | description | |||
| "OSPF hello packet."; | "OSPF Hello packet."; | |||
| } | } | |||
| enum Database-Descripton { | enum database-description { | |||
| value "2"; | value "2"; | |||
| description | description | |||
| "OSPF database description packet."; | "OSPF Database Description packet."; | |||
| } | } | |||
| enum Link-State-Request { | enum link-state-request { | |||
| value "3"; | value "3"; | |||
| description | description | |||
| "OSPF link state request packet."; | "OSPF Link State Request packet."; | |||
| } | } | |||
| enum Link-State-Update { | enum link-state-update { | |||
| value "4"; | value "4"; | |||
| description | description | |||
| "OSPF link state update packet."; | "OSPF Link State Update packet."; | |||
| } | } | |||
| enum Link-State-Ack { | enum link-state-ack { | |||
| value "5"; | value "5"; | |||
| description | description | |||
| "OSPF link state acknowlegement packet."; | "OSPF Link State Acknowledgement packet."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "OSPF packet type."; | "OSPF packet type."; | |||
| } | } | |||
| typedef nssa-translator-state-type { | typedef nssa-translator-state-type { | |||
| type enumeration { | type enumeration { | |||
| enum Enabled { | enum enabled { | |||
| value "1"; | value "1"; | |||
| description | description | |||
| "NSSA translator enabled state."; | "NSSA translator enabled state."; | |||
| } | } | |||
| enum Elected { | enum elected { | |||
| value "2"; | ||||
| description | description | |||
| "NSSA translator elected state."; | "NSSA translator elected state."; | |||
| } | } | |||
| enum Disabled { | enum disabled { | |||
| value "3"; | value "3"; | |||
| description | description | |||
| "NSSA translator disabled state."; | "NSSA translator disabled state."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "OSPF NSSA translator state type."; | "OSPF NSSA translator state type."; | |||
| } | } | |||
| typedef restart-status-type { | typedef restart-status-type { | |||
| type enumeration { | type enumeration { | |||
| enum Not-Restarting { | enum not-restarting { | |||
| value "1"; | value "1"; | |||
| description | description | |||
| "Router is not restarting."; | "Router is not restarting."; | |||
| } | } | |||
| enum Planned-Restart { | enum planned-restart { | |||
| value "2"; | ||||
| description | description | |||
| "Router is going through planned restart."; | "Router is going through planned restart."; | |||
| } | } | |||
| enum Unplanned-Restart { | enum unplanned-restart { | |||
| value "3"; | value "3"; | |||
| description | description | |||
| "Router is going through unplanned restart."; | "Router is going through unplanned restart."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "OSPF graceful restart status type."; | "OSPF graceful restart status type."; | |||
| } | } | |||
| typedef checksum16-type { | typedef fletcher-checksum16-type { | |||
| type string { | type string { | |||
| pattern '(0x)?[0-9a-fA-F]{4}'; | pattern '(0x)?[0-9a-fA-F]{4}'; | |||
| } | } | |||
| description | ||||
| "Fletcher 16-bit checksum in hex-string format 0xXXXX."; | ||||
| reference "RFC 905: ISO Transport Protocol specification | ||||
| ISO DP 8073"; | ||||
| } | ||||
| typedef ospfv2-auth-trailer-rfc-version { | ||||
| type enumeration { | ||||
| enum rfc5709 { | ||||
| description | ||||
| "Support OSPF Authentication Trailer as | ||||
| described in RFC 5709"; | ||||
| reference "RFC 5709: OSPFv2 HMAC-SHA Cryptographic | ||||
| Authentication"; | ||||
| } | ||||
| enum rfc7474 { | ||||
| description | ||||
| "Support OSPF Authentication Trailer as | ||||
| described in RFC 7474"; | ||||
| reference | ||||
| "RFC 7474: Security Extension for OSPFv2 | ||||
| When Using Manual Key Management Authentication"; | ||||
| } | ||||
| } | ||||
| description | description | |||
| "16-bit checksum in hex-string format 0xXXXX."; | "OSPFv2 Authentication Trailer Support"; | |||
| } | } | |||
| grouping tlv { | grouping tlv { | |||
| description | description | |||
| "TLV"; | "Type-Length-Value (TLV)"; | |||
| leaf type { | leaf type { | |||
| type uint16; | type uint16; | |||
| description "TLV type."; | description "TLV type."; | |||
| } | } | |||
| leaf length { | leaf length { | |||
| type uint16; | type uint16; | |||
| description "TLV length."; | description "TLV length (octets)."; | |||
| } | } | |||
| leaf value { | leaf value { | |||
| type yang:hex-string; | type yang:hex-string; | |||
| description "TLV value."; | description "TLV value."; | |||
| } | } | |||
| } | } | |||
| grouping unknown-tlvs { | grouping unknown-tlvs { | |||
| description | description | |||
| "Unknown TLVs grouping - Used for unknown TLVs or | "Unknown TLVs grouping - Used for unknown TLVs or | |||
| skipping to change at page 36, line 17 ¶ | skipping to change at page 48, line 20 ¶ | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping node-tag-tlv { | grouping node-tag-tlv { | |||
| description "OSPF Node Admin Tag TLV grouping."; | description "OSPF Node Admin Tag TLV grouping."; | |||
| list node-tag { | list node-tag { | |||
| leaf tag { | leaf tag { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Node tag value."; | "Node admin tag value."; | |||
| } | } | |||
| description | description | |||
| "List of tags."; | "List of tags."; | |||
| } | } | |||
| } | } | |||
| grouping router-capabilities-tlv { | ||||
| description "OSPF Router Capabilities TLV grouping."; | ||||
| reference "RFC 7770: OSPF Router Capabilities"; | ||||
| container router-informational-capabilities { | ||||
| leaf-list informational-capabilities { | ||||
| type identityref { | ||||
| base informational-capability; | ||||
| } | ||||
| description | ||||
| "Informational capability list. This list will | ||||
| contains the identities for the informational | ||||
| capabilities supported by router."; | ||||
| } | ||||
| description | ||||
| "OSPF Router Informational Flag Definitions."; | ||||
| } | ||||
| list informational-capabilities-flags { | ||||
| leaf informational-flag { | ||||
| type uint32; | ||||
| description | ||||
| "Individual informational capability flag."; | ||||
| } | ||||
| description | ||||
| "List of informational capability flags. This will | ||||
| return all the 32-bit informational flags irrespective | ||||
| of whether or not they are known to the device."; | ||||
| } | ||||
| list functional-capabilities { | ||||
| leaf functional-flag { | ||||
| type uint32; | ||||
| description | ||||
| "Individual functional capability flag."; | ||||
| } | ||||
| description | ||||
| "List of functional capability flags. This will | ||||
| return all the 32-bit functional flags irrespective | ||||
| of whether or not they are known to the device."; | ||||
| } | ||||
| } | ||||
| grouping dynamic-hostname-tlv { | ||||
| description "Dynamic Hostname TLV"; | ||||
| reference "RFC 5642: Dynamic Hostnames for OSPF"; | ||||
| leaf hostname { | ||||
| type string { | ||||
| length "1..255"; | ||||
| } | ||||
| description "Dynamic Hostname"; | ||||
| } | ||||
| } | ||||
| grouping sbfd-discriminator-tlv { | ||||
| description "Seamless BFD Discriminator TLV"; | ||||
| reference "RFC 7884: S-BFD Discriminators in OSPF"; | ||||
| list sbfd-discriminators { | ||||
| leaf sbfd-discriminator { | ||||
| type uint32; | ||||
| description "Individual S-BFD Discriminator."; | ||||
| } | ||||
| description | ||||
| "List of S-BFD Discriminators"; | ||||
| } | ||||
| } | ||||
| grouping maximum-sid-depth-tlv { | ||||
| description "Maximum SID Depth (MSD) TLV"; | ||||
| reference | ||||
| "RFC 8476: Signaling Maximum Segment Depth (MSD) | ||||
| using OSPF"; | ||||
| list msd-type { | ||||
| leaf msd-type { | ||||
| type uint8; | ||||
| description "Maximum Segment Depth (MSD) type"; | ||||
| } | ||||
| leaf msd-value { | ||||
| type uint8; | ||||
| description | ||||
| "Maximum Segment Depth (MSD) value for the type"; | ||||
| } | ||||
| description | ||||
| "List of Maximum Segment Depth (MSD) tuples"; | ||||
| } | ||||
| } | ||||
| grouping ospf-router-lsa-bits { | ||||
| container router-bits { | ||||
| leaf-list rtr-lsa-bits { | ||||
| type identityref { | ||||
| base router-lsa-bit; | ||||
| } | ||||
| description | ||||
| "Router LSA bits list. This list will contain | ||||
| identities for the bits which are set in the | ||||
| Router-LSA bits."; | ||||
| } | ||||
| description "Router LSA Bits."; | ||||
| } | ||||
| description | ||||
| "Router LSA Bits - Currently common for OSPFv2 and | ||||
| OSPFv3 but it may diverge with future augmentations."; | ||||
| } | ||||
| grouping ospfv2-router-link { | grouping ospfv2-router-link { | |||
| description "OSPFv2 router link."; | description "OSPFv2 router link."; | |||
| leaf link-id { | leaf link-id { | |||
| type union { | type union { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| type yang:dotted-quad; | type yang:dotted-quad; | |||
| } | } | |||
| description "Link ID."; | description "Router-LSA Link ID"; | |||
| } | } | |||
| leaf link-data { | leaf link-data { | |||
| type union { | type union { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| type uint32; | type uint32; | |||
| } | } | |||
| description "Link data."; | description "Router-LSA Link data."; | |||
| } | } | |||
| leaf type { | leaf type { | |||
| type uint8; | type router-link-type; | |||
| description "Link type."; | description "Router-LSA Link type."; | |||
| } | } | |||
| } | } | |||
| grouping ospfv2-lsa-body { | grouping ospfv2-lsa-body { | |||
| description "OSPFv2 LSA body."; | description "OSPFv2 LSA body."; | |||
| container router { | container router { | |||
| when "../../header/type = 1" { | when "derived-from-or-self(../../header/type, " | |||
| + "'ospfv2-router-lsa')" { | ||||
| description | description | |||
| "Only applies to Router LSAs."; | "Only applies to Router-LSAs."; | |||
| } | } | |||
| description | description | |||
| "Router LSA."; | "Router LSA."; | |||
| leaf flags { | uses ospf-router-lsa-bits; | |||
| type bits { | ||||
| bit V { | ||||
| description | ||||
| "When set, the router is an endpoint of one or | ||||
| more virtual links."; | ||||
| } | ||||
| bit E { | ||||
| description | ||||
| "When set, the router is an AS Boundary Router | ||||
| (ASBR)."; | ||||
| } | ||||
| bit B { | ||||
| description | ||||
| "When set, the router is an Area Border | ||||
| Router (ABR)."; | ||||
| } | ||||
| bit Nt { | ||||
| description | ||||
| "When set, the router is an NSSA border router | ||||
| that is unconditionally translating NSSA LSAs | ||||
| into AS-external LSAs."; | ||||
| } | ||||
| } | ||||
| description "Flags."; | ||||
| } | ||||
| leaf num-of-links { | leaf num-of-links { | |||
| type uint16; | type uint16; | |||
| description "Number of links."; | description "Number of links in Router LSA."; | |||
| } | } | |||
| container links { | container links { | |||
| description "All router Links."; | description "All router Links."; | |||
| list link { | list link { | |||
| description "Router LSA link."; | description "Router LSA link."; | |||
| uses ospfv2-router-link; | uses ospfv2-router-link; | |||
| container topologies { | container topologies { | |||
| description "All topologies for the link."; | description "All topologies for the link."; | |||
| list topology { | list topology { | |||
| description | description | |||
| skipping to change at page 38, line 4 ¶ | skipping to change at page 51, line 38 ¶ | |||
| container topologies { | container topologies { | |||
| description "All topologies for the link."; | description "All topologies for the link."; | |||
| list topology { | list topology { | |||
| description | description | |||
| "Topology specific information."; | "Topology specific information."; | |||
| leaf mt-id { | leaf mt-id { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "The MT-ID for the topology enabled on | "The MT-ID for the topology enabled on | |||
| the link."; | the link."; | |||
| } | } | |||
| leaf metric { | leaf metric { | |||
| type uint16; | type uint16; | |||
| description "Metric for the topology."; | description "Metric for the topology."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container network { | container network { | |||
| when "../../header/type = 2" { | when "derived-from-or-self(../../header/type, " | |||
| + "'ospfv2-network-lsa')" { | ||||
| description | description | |||
| "Only applies to Network LSAs."; | "Only applies to Network LSAs."; | |||
| } | } | |||
| description | description | |||
| "Network LSA."; | "Network LSA."; | |||
| leaf network-mask { | leaf network-mask { | |||
| type inet:ipv4-address; | type yang:dotted-quad; | |||
| description | description | |||
| "The IP address mask for the network."; | "The IP address mask for the network."; | |||
| } | } | |||
| container attached-routers { | container attached-routers { | |||
| description "All attached routers."; | description "All attached routers."; | |||
| leaf-list attached-router { | leaf-list attached-router { | |||
| type yang:dotted-quad; | type inet:ipv4-address; | |||
| description | description | |||
| "List of the routers attached to the network."; | "List of the routers attached to the network."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container summary { | container summary { | |||
| when "../../header/type = 3 or " | when "derived-from(../../header/type, " | |||
| + "../../header/type = 4" { | + "'ospfv2-summary-lsa-type')" { | |||
| description | description | |||
| "Only applies to Summary LSAs."; | "Only applies to Summary LSAs."; | |||
| } | } | |||
| description | description | |||
| "Summary LSA."; | "Summary LSA."; | |||
| leaf network-mask { | leaf network-mask { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "The IP address mask for the network"; | "The IP address mask for the network"; | |||
| } | } | |||
| skipping to change at page 39, line 12 ¶ | skipping to change at page 52, line 47 ¶ | |||
| list topology { | list topology { | |||
| description | description | |||
| "Topology specific information."; | "Topology specific information."; | |||
| leaf mt-id { | leaf mt-id { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "The MT-ID for the topology enabled for | "The MT-ID for the topology enabled for | |||
| the summary."; | the summary."; | |||
| } | } | |||
| leaf metric { | leaf metric { | |||
| type uint24; | type ospf-metric; | |||
| description "Metric for the topology."; | description "Metric for the topology."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container external { | container external { | |||
| when "../../header/type = 5 or " | when "derived-from(../../header/type, " | |||
| + "../../header/type = 7" { | + "'ospfv2-external-lsa-type')" { | |||
| description | description | |||
| "Only applies to AS-external LSAs and NSSA LSAs."; | "Only applies to AS-external LSAs and NSSA LSAs."; | |||
| } | } | |||
| description | description | |||
| "External LSA."; | "External LSA."; | |||
| leaf network-mask { | leaf network-mask { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "The IP address mask for the network"; | "The IP address mask for the network"; | |||
| } | } | |||
| skipping to change at page 40, line 5 ¶ | skipping to change at page 53, line 39 ¶ | |||
| type bits { | type bits { | |||
| bit E { | bit E { | |||
| description | description | |||
| "When set, the metric specified is a Type 2 | "When set, the metric specified is a Type 2 | |||
| external metric."; | external metric."; | |||
| } | } | |||
| } | } | |||
| description "Flags."; | description "Flags."; | |||
| } | } | |||
| leaf metric { | leaf metric { | |||
| type uint24; | type ospf-metric; | |||
| description "Metric for the topology."; | description "Metric for the topology."; | |||
| } | } | |||
| leaf forwarding-address { | leaf forwarding-address { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "Forwarding address."; | "Forwarding address."; | |||
| } | } | |||
| leaf external-route-tag { | leaf external-route-tag { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| skipping to change at page 40, line 18 ¶ | skipping to change at page 54, line 4 ¶ | |||
| leaf forwarding-address { | leaf forwarding-address { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "Forwarding address."; | "Forwarding address."; | |||
| } | } | |||
| leaf external-route-tag { | leaf external-route-tag { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Route tag for the topology."; | "Route tag for the topology."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container opaque { | container opaque { | |||
| when "../../header/type = 9 or " | when "derived-from(../../header/type, " | |||
| + "../../header/type = 10 or " | + "'ospfv2-opaque-lsa-type')" { | |||
| + "../../header/type = 11" { | ||||
| description | description | |||
| "Only applies to Opaque LSAs."; | "Only applies to Opaque LSAs."; | |||
| } | } | |||
| description | description | |||
| "Opaque LSA."; | "Opaque LSA."; | |||
| uses unknown-tlvs; | container ri-opaque { | |||
| description "OSPF Router Information (RI) opaque LSA."; | ||||
| reference "RFC 7770: OSPF Router Capabilities"; | ||||
| container node-tag-tlvs { | container router-capabilities-tlv { | |||
| description | ||||
| "All node tag tlvs."; | ||||
| list node-tag-tlv { | ||||
| description | description | |||
| "Node tag tlv."; | "Informational and functional router capabilities"; | |||
| uses node-tag-tlv; | uses router-capabilities-tlv; | |||
| } | } | |||
| } | ||||
| container router-address-tlv { | container node-tag-tlvs { | |||
| description | ||||
| "Router address TLV."; | ||||
| leaf router-address { | ||||
| type inet:ipv4-address; | ||||
| description | description | |||
| "Router address."; | "All node tag TLVs."; | |||
| list node-tag-tlv { | ||||
| description | ||||
| "Node tag TLV."; | ||||
| uses node-tag-tlv; | ||||
| } | ||||
| } | ||||
| container dynamic-hostname-tlv { | ||||
| description "OSPF Dynamic Hostname"; | ||||
| uses dynamic-hostname-tlv; | ||||
| } | ||||
| container sbfd-discriminator-tlv { | ||||
| description "OSPF S-BFD Discriminators"; | ||||
| uses sbfd-discriminator-tlv; | ||||
| } | ||||
| container maximum-sid-depth-tlv { | ||||
| description "OSPF Maximum SID Depth (MSD) values"; | ||||
| uses maximum-sid-depth-tlv; | ||||
| } | } | |||
| uses unknown-tlvs; | ||||
| } | } | |||
| container link-tlvs { | container te-opaque { | |||
| description "All link TLVs in the LSA."; | description "OSPFv2 Traffic Engineering (TE) opaque LSA."; | |||
| list link-tlv { | reference "RFC 3630: Traffic Engineering (TE) | |||
| description "Link TLV."; | Extensions to OSPFv2"; | |||
| container router-address-tlv { | ||||
| description | ||||
| "Router address TLV."; | ||||
| leaf router-address { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "Router address."; | ||||
| } | ||||
| } | ||||
| container link-tlv { | ||||
| description "Describes a single link, and it is constructed | ||||
| of a set of Sub-TLVs."; | ||||
| leaf link-type { | leaf link-type { | |||
| type uint8; | type router-link-type; | |||
| mandatory true; | mandatory true; | |||
| description "Link type."; | description "Link type."; | |||
| } | } | |||
| leaf link-id { | leaf link-id { | |||
| type union { | type union { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| type yang:dotted-quad; | type yang:dotted-quad; | |||
| } | } | |||
| mandatory true; | mandatory true; | |||
| description "Link ID."; | description "Link ID."; | |||
| skipping to change at page 42, line 28 ¶ | skipping to change at page 56, line 42 ¶ | |||
| } | } | |||
| leaf admin-group { | leaf admin-group { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Administrative group/Resource Class/Color."; | "Administrative group/Resource Class/Color."; | |||
| } | } | |||
| uses unknown-tlvs; | uses unknown-tlvs; | |||
| } | } | |||
| } | } | |||
| container extended-prefix-tlvs { | container extended-prefix-opaque { | |||
| description "All extended prefix TLVs in the LSA."; | description "All extended prefix TLVs in the LSA."; | |||
| list extended-prefix-tlv { | list extended-prefix-tlv { | |||
| description "Extended prefix TLV."; | description "Extended prefix TLV."; | |||
| leaf route-type { | leaf route-type { | |||
| type enumeration { | type enumeration { | |||
| enum unspecified { | enum unspecified { | |||
| value "0"; | value "0"; | |||
| description "Unspecified."; | description "Unspecified."; | |||
| } | } | |||
| enum intra-area { | enum intra-area { | |||
| skipping to change at page 43, line 9 ¶ | skipping to change at page 57, line 23 ¶ | |||
| value "5"; | value "5"; | |||
| description "OSPF External route."; | description "OSPF External route."; | |||
| } | } | |||
| enum nssa { | enum nssa { | |||
| value "7"; | value "7"; | |||
| description "OSPF NSSA external route."; | description "OSPF NSSA external route."; | |||
| } | } | |||
| } | } | |||
| description "Route type."; | description "Route type."; | |||
| } | } | |||
| leaf flags { | container flags { | |||
| type bits { | leaf-list extended-prefix-flags { | |||
| bit A { | type identityref { | |||
| description | base ospfv2-extended-prefix-flag; | |||
| "Attach flag."; | ||||
| } | ||||
| bit N { | ||||
| description | ||||
| "Node flag."; | ||||
| } | } | |||
| description | ||||
| "Extended prefix TLV flags list. This list will | ||||
| contain identities for the prefix flags that | ||||
| are set in the extended prefix flags."; | ||||
| } | } | |||
| description "Flags."; | description "Prefix Flags."; | |||
| } | } | |||
| leaf prefix { | leaf prefix { | |||
| type inet:ip-prefix; | type inet:ip-prefix; | |||
| description "Address prefix."; | description "Address prefix."; | |||
| } | } | |||
| uses unknown-tlvs; | uses unknown-tlvs; | |||
| } | } | |||
| } | } | |||
| container extended-link-tlvs { | container extended-link-opaque { | |||
| description "All extended link TLVs in the LSA."; | description "All extended link TLVs in the LSA."; | |||
| list extended-link-tlv { | container extended-link-tlv { | |||
| description "Extended link TLV."; | description "Extended link TLV."; | |||
| uses ospfv2-router-link; | uses ospfv2-router-link; | |||
| container maximum-sid-depth-tlv { | ||||
| description "OSPF Maximum SID Depth (MSD) values"; | ||||
| uses maximum-sid-depth-tlv; | ||||
| } | ||||
| uses unknown-tlvs; | uses unknown-tlvs; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping ospfv3-lsa-options { | grouping ospfv3-lsa-options { | |||
| description "OSPFv3 LSA options"; | description "OSPFv3 LSA options"; | |||
| leaf options { | container lsa-options { | |||
| type bits { | leaf-list lsa-options { | |||
| bit AF { | type identityref { | |||
| description | base ospfv3-lsa-option; | |||
| "When set, the router supprts OSPFv3 AFs as in RFC5838."; | ||||
| } | ||||
| bit DC { | ||||
| description | ||||
| "When set, the router supports demand circuits."; | ||||
| } | ||||
| bit R { | ||||
| description | ||||
| "When set, the originator is an active router."; | ||||
| } | ||||
| bit N { | ||||
| description | ||||
| "If set, the router is attached to an NSSA"; | ||||
| } | ||||
| bit E { | ||||
| description | ||||
| "This bit describes the way AS-external LSAs | ||||
| are flooded"; | ||||
| } | ||||
| bit V6 { | ||||
| description | ||||
| "If clear, the router/link should be excluded | ||||
| from IPv6 routing calculaton"; | ||||
| } | } | |||
| description | ||||
| "OSPFv3 LSA Option flags list. This list will contain | ||||
| the identities for the OSPFv3 LSA options that are | ||||
| set for the LSA."; | ||||
| } | } | |||
| mandatory true; | ||||
| description "OSPFv3 LSA options."; | description "OSPFv3 LSA options."; | |||
| } | } | |||
| } | } | |||
| grouping ospfv3-lsa-prefix { | grouping ospfv3-lsa-prefix { | |||
| description | description | |||
| "OSPFv3 LSA prefix."; | "OSPFv3 LSA prefix."; | |||
| leaf prefix { | leaf prefix { | |||
| type inet:ip-prefix; | type inet:ip-prefix; | |||
| description | description | |||
| "Prefix."; | "LSA Prefix."; | |||
| } | } | |||
| leaf prefix-options { | container prefix-options { | |||
| type bits { | leaf-list prefix-options { | |||
| bit NU { | type identityref { | |||
| description | base ospfv3-prefix-option; | |||
| "When set, the prefix should be excluded | ||||
| from IPv6 unicast calculations."; | ||||
| } | ||||
| bit LA { | ||||
| description | ||||
| "When set, the prefix is actually an IPv6 interface | ||||
| address of the Advertising Router."; | ||||
| } | ||||
| bit P { | ||||
| description | ||||
| "When set, the NSSA area prefix should be | ||||
| translated to an AS External LSA and readvertised | ||||
| by the translating NSSA Border Router."; | ||||
| } | ||||
| bit DN { | ||||
| description | ||||
| "When set, the inter-area-prefix LSA or | ||||
| AS-external LSA prefix has been advertised as an | ||||
| L3VPN prefix."; | ||||
| } | } | |||
| description | ||||
| "OSPFv3 prefix option flag list. This list will | ||||
| contain the identities for the OSPFv3 options | ||||
| that are set for the OSPFv3 prefix."; | ||||
| } | } | |||
| mandatory true; | ||||
| description "Prefix options."; | description "Prefix options."; | |||
| } | } | |||
| } | } | |||
| grouping ospfv3-lsa-external { | grouping ospfv3-lsa-external { | |||
| description | description | |||
| "AS-External and NSSA LSA."; | "AS-External and NSSA LSA."; | |||
| leaf metric { | leaf metric { | |||
| type uint24; | type ospf-metric; | |||
| description "Metric"; | description "Metric"; | |||
| } | } | |||
| leaf flags { | leaf flags { | |||
| type bits { | type bits { | |||
| bit E { | bit E { | |||
| description | description | |||
| "When set, the metric specified is a Type 2 | "When set, the metric specified is a Type 2 | |||
| external metric."; | external metric."; | |||
| } | } | |||
| bit F { | bit F { | |||
| description | description | |||
| "When set, a Forwarding Address is included | "When set, a Forwarding Address is included | |||
| skipping to change at page 45, line 50 ¶ | skipping to change at page 59, line 31 ¶ | |||
| bit T { | bit T { | |||
| description | description | |||
| "When set, an External Route Tag is included | "When set, an External Route Tag is included | |||
| in the LSA."; | in the LSA."; | |||
| } | } | |||
| } | } | |||
| description "Flags."; | description "Flags."; | |||
| } | } | |||
| leaf referenced-ls-type { | leaf referenced-ls-type { | |||
| type uint16; | type identityref { | |||
| base ospfv3-lsa-type; | ||||
| } | ||||
| description "Referenced Link State type."; | description "Referenced Link State type."; | |||
| } | ||||
| leaf unknown-referenced-ls-type { | ||||
| type uint16; | ||||
| description | ||||
| "Value for an unknown Referenced Link State type."; | ||||
| } | } | |||
| uses ospfv3-lsa-prefix; | uses ospfv3-lsa-prefix; | |||
| leaf forwarding-address { | leaf forwarding-address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "Forwarding address."; | "Forwarding address."; | |||
| } | } | |||
| skipping to change at page 46, line 30 ¶ | skipping to change at page 60, line 16 ¶ | |||
| leaf referenced-link-state-id { | leaf referenced-link-state-id { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Referenced Link State ID."; | "Referenced Link State ID."; | |||
| } | } | |||
| } | } | |||
| grouping ospfv3-lsa-body { | grouping ospfv3-lsa-body { | |||
| description "OSPFv3 LSA body."; | description "OSPFv3 LSA body."; | |||
| container router { | container router { | |||
| when "../../header/type = 8193" { // 0x2001 | when "derived-from-or-self(../../header/type, " | |||
| + "'ospfv3-router-lsa')" { | ||||
| description | description | |||
| "Only applies to Router LSAs."; | "Only applies to Router LSAs."; | |||
| } | } | |||
| description "Router LSA."; | description "Router LSA."; | |||
| leaf flags { | uses ospf-router-lsa-bits; | |||
| type bits { | ||||
| bit V { | ||||
| description | ||||
| "When set, the router is an endpoint of one or | ||||
| more virtual links."; | ||||
| } | ||||
| bit E { | ||||
| description | ||||
| "When set, the router is an AS Boundary Router | ||||
| (ASBR)."; | ||||
| } | ||||
| bit B { | ||||
| description | ||||
| "When set, the router is an Area Border | ||||
| Router (ABR)."; | ||||
| } | ||||
| bit Nt { | ||||
| description | ||||
| "When set, the router is an NSSA border router | ||||
| that is unconditionally translating NSSA LSAs | ||||
| into AS-external LSAs."; | ||||
| } | ||||
| } | ||||
| mandatory true; | ||||
| description "Router LSA flags."; | ||||
| } | ||||
| uses ospfv3-lsa-options; | uses ospfv3-lsa-options; | |||
| container links { | container links { | |||
| description "All router link."; | description "All router link."; | |||
| list link { | list link { | |||
| description "Router LSA link."; | description "Router LSA link."; | |||
| leaf interface-id { | leaf interface-id { | |||
| type uint32; | type uint32; | |||
| description "Interface ID."; | description "Interface ID for link."; | |||
| } | } | |||
| leaf neighbor-interface-id { | leaf neighbor-interface-id { | |||
| type uint32; | type uint32; | |||
| description "Neighbor Interface ID."; | description "Neighbor's Interface ID for link."; | |||
| } | } | |||
| leaf neighbor-router-id { | leaf neighbor-router-id { | |||
| type rt-types:router-id; | type rt-types:router-id; | |||
| description "Neighbor Router ID."; | description "Neighbor's Router ID for link."; | |||
| } | } | |||
| leaf type { | leaf type { | |||
| type uint8; | type router-link-type; | |||
| description "Link type."; | description "Link type: 1 - Point-to-Point Link | |||
| 2 - Transit Network Link | ||||
| 3 - Stub Network Link | ||||
| 4 - Virtual Link"; | ||||
| } | } | |||
| leaf metric { | leaf metric { | |||
| type uint16; | type uint16; | |||
| description "Metric."; | description "Link Metric."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container network { | container network { | |||
| when "../../header/type = 8194" { // 0x2002 | when "derived-from-or-self(../../header/type, " | |||
| + "'ospfv3-network-lsa')" { | ||||
| description | description | |||
| "Only applies to Network LSA."; | "Only applies to Network LSAs."; | |||
| } | } | |||
| description "Network LSA."; | description "Network LSA."; | |||
| uses ospfv3-lsa-options; | uses ospfv3-lsa-options; | |||
| container attached-routers { | container attached-routers { | |||
| description "All attached routers."; | description "All attached routers."; | |||
| leaf-list attached-router { | leaf-list attached-router { | |||
| type yang:dotted-quad; | type rt-types:router-id; | |||
| description | description | |||
| "List of the routers attached to the network."; | "List of the routers attached to the network."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container inter-area-prefix { | container inter-area-prefix { | |||
| when "../../header/type = 8195" { // 0x2003 | when "derived-from-or-self(../../header/type, " | |||
| + "'ospfv3-inter-area-prefix-lsa')" { | ||||
| description | description | |||
| "Only applies to Inter-Area-Prefix LSAs."; | "Only applies to Inter-Area-Prefix LSAs."; | |||
| } | } | |||
| leaf metric { | leaf metric { | |||
| type uint24; | type ospf-metric; | |||
| description "Metric"; | description "Inter-Area Prefix Metric"; | |||
| } | } | |||
| uses ospfv3-lsa-prefix; | uses ospfv3-lsa-prefix; | |||
| description "Inter-Area-Prefix LSA."; | description "Prefix LSA."; | |||
| } | } | |||
| container inter-area-router { | container inter-area-router { | |||
| when "../../header/type = 8196" { // 0x2004 | when "derived-from-or-self(../../header/type, " | |||
| + "'ospfv3-inter-area-router-lsa')" { | ||||
| description | description | |||
| "Only applies to Inter-Area-Router LSAs."; | "Only applies to Inter-Area-Router LSAs."; | |||
| } | } | |||
| uses ospfv3-lsa-options; | uses ospfv3-lsa-options; | |||
| leaf metric { | leaf metric { | |||
| type uint24; | type ospf-metric; | |||
| description "Metric."; | description "AS Boundary Router (ASBR) Metric."; | |||
| } | } | |||
| leaf destination-router-id { | leaf destination-router-id { | |||
| type rt-types:router-id; | type rt-types:router-id; | |||
| description | description | |||
| "The Router ID of the router being described by the LSA."; | "The Router ID of the ASBR described by the LSA."; | |||
| } | } | |||
| description "Inter-Area-Router LSA."; | description "Inter-Area-Router LSA."; | |||
| } | } | |||
| container as-external { | container as-external { | |||
| when "../../header/type = 16389" { // 0x4005 | when "derived-from-or-self(../../header/type, " | |||
| + "'ospfv3-as-external-lsa')" { | ||||
| description | description | |||
| "Only applies to AS-external LSAs."; | "Only applies to AS-external LSAs."; | |||
| } | } | |||
| uses ospfv3-lsa-external; | uses ospfv3-lsa-external; | |||
| description "AS-External LSA."; | description "AS-External LSA."; | |||
| } | } | |||
| container nssa { | container nssa { | |||
| when "../../header/type = 8199" { // 0x2007 | when "derived-from-or-self(../../header/type, " | |||
| + "'ospfv3-nssa-lsa')" { | ||||
| description | description | |||
| "Only applies to NSSA LSAs."; | "Only applies to NSSA LSAs."; | |||
| } | } | |||
| uses ospfv3-lsa-external; | uses ospfv3-lsa-external; | |||
| description "NSSA LSA."; | description "NSSA LSA."; | |||
| } | } | |||
| container link { | container link { | |||
| when "../../header/type = 8" { // 0x0008 | when "derived-from-or-self(../../header/type, " | |||
| + "'ospfv3-link-lsa')" { | ||||
| description | description | |||
| "Only applies to Link LSAs."; | "Only applies to Link LSAs."; | |||
| } | } | |||
| leaf rtr-priority { | leaf rtr-priority { | |||
| type uint8; | type uint8; | |||
| description "Router Priority for the interface."; | description | |||
| "Router priority for DR election. A router with a | ||||
| higher priority will be preferred in the election | ||||
| and a value of 0 indicates the router is not | ||||
| eligible to become Designated Router or Backup | ||||
| Designated Router (BDR)."; | ||||
| } | } | |||
| uses ospfv3-lsa-options; | uses ospfv3-lsa-options; | |||
| leaf link-local-interface-address { | leaf link-local-interface-address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "The originating router's link-local | "The originating router's link-local | |||
| interface address for the link."; | interface address for the link."; | |||
| } | } | |||
| leaf num-of-prefixes { | leaf num-of-prefixes { | |||
| type uint32; | type uint32; | |||
| description "Number of prefixes."; | description "Number of prefixes."; | |||
| } | } | |||
| container prefixes { | container prefixes { | |||
| description "All prefixes for the link."; | description "All prefixes for the link."; | |||
| list prefix { | list prefix { | |||
| description | description | |||
| "List of prefixes associated with the link."; | "List of prefixes associated with the link."; | |||
| uses ospfv3-lsa-prefix; | uses ospfv3-lsa-prefix; | |||
| } | } | |||
| } | } | |||
| description "Link LSA."; | description "Link LSA."; | |||
| } | } | |||
| container intra-area-prefix { | container intra-area-prefix { | |||
| when "../../header/type = 8201" { // 0x2009 | when "derived-from-or-self(../../header/type, " | |||
| + "'ospfv3-intra-area-prefix-lsa')" { | ||||
| description | description | |||
| "Only applies to Intra-Area-Prefix LSA."; | "Only applies to Intra-Area-Prefix LSAs."; | |||
| } | } | |||
| description "Intra-Area-Prefix LSA."; | description "Intra-Area-Prefix LSA."; | |||
| leaf referenced-ls-type { | leaf referenced-ls-type { | |||
| type uint16; | type identityref { | |||
| base ospfv3-lsa-type; | ||||
| } | ||||
| description "Referenced Link State type."; | description "Referenced Link State type."; | |||
| } | } | |||
| leaf unknown-referenced-ls-type { | ||||
| type uint16; | ||||
| description | ||||
| "Value for an unknown Referenced Link State type."; | ||||
| } | ||||
| leaf referenced-link-state-id { | leaf referenced-link-state-id { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Referenced Link State ID."; | "Referenced Link State ID."; | |||
| } | } | |||
| leaf referenced-adv-router { | leaf referenced-adv-router { | |||
| type inet:ipv4-address; | type rt-types:router-id; | |||
| description | description | |||
| "Referenced Advertising Router."; | "Referenced Advertising Router."; | |||
| } | } | |||
| leaf num-of-prefixes { | leaf num-of-prefixes { | |||
| type uint16; | type uint16; | |||
| description "Number of prefixes."; | description "Number of prefixes."; | |||
| } | } | |||
| container prefixes { | container prefixes { | |||
| description "All prefixes in this LSA."; | description "All prefixes in this LSA."; | |||
| list prefix { | list prefix { | |||
| description "List of prefixes in this LSA."; | description "List of prefixes in this LSA."; | |||
| uses ospfv3-lsa-prefix; | uses ospfv3-lsa-prefix; | |||
| leaf metric { | leaf metric { | |||
| type uint24; | type ospf-metric; | |||
| description "Prefix Metric."; | description "Prefix Metric."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container router-information { | container router-information { | |||
| when "../../header/type = 32780 or " // 0x800C | when "derived-from-or-self(../../header/type, " | |||
| + "../../header/type = 40972 or " // 0xA00C | + "'ospfv3-router-information-lsa')" { | |||
| + "../../header/type = 49164 or " // 0xC00C | ||||
| + "../../header/type = 57356" { // 0xE00C | ||||
| description | description | |||
| "Only applies to Router Information LSAs (RFC7770)."; | "Only applies to Router Information LSAs (RFC7770)."; | |||
| } | } | |||
| container router-capabilities-tlv { | ||||
| description | ||||
| "Informational and functional router capabilities"; | ||||
| uses router-capabilities-tlv; | ||||
| } | ||||
| container node-tag-tlvs { | container node-tag-tlvs { | |||
| description | description | |||
| "All node tag tlvs."; | "All node tag tlvs."; | |||
| list node-tag-tlv { | list node-tag-tlv { | |||
| description | description | |||
| "Node tag tlv."; | "Node tag tlv."; | |||
| uses node-tag-tlv; | uses node-tag-tlv; | |||
| } | } | |||
| } | } | |||
| container dynamic-hostname-tlv { | ||||
| description "OSPF Dynamic Hostname"; | ||||
| uses dynamic-hostname-tlv; | ||||
| } | ||||
| container sbfd-discriminator-tlv { | ||||
| description "OSPF S-BFD Discriminators"; | ||||
| uses sbfd-discriminator-tlv; | ||||
| } | ||||
| description "Router Information LSA."; | description "Router Information LSA."; | |||
| reference "RFC 7770: Extensions for Advertising Router | ||||
| Capabilities"; | ||||
| } | } | |||
| } | } | |||
| grouping lsa-header { | grouping lsa-header { | |||
| description | description | |||
| "Common LSA for OSPFv2 and OSPFv3"; | "Common LSA for OSPFv2 and OSPFv3"; | |||
| leaf age { | leaf age { | |||
| type uint16; | type uint16; | |||
| mandatory true; | mandatory true; | |||
| description "LSA age."; | description "LSA age."; | |||
| } | } | |||
| leaf type { | leaf type { | |||
| type uint16; | type identityref { | |||
| base ospf-lsa-type; | ||||
| } | ||||
| mandatory true; | mandatory true; | |||
| description "LSA type."; | description "LSA type"; | |||
| } | } | |||
| leaf adv-router { | leaf adv-router { | |||
| type yang:dotted-quad; | type rt-types:router-id; | |||
| mandatory true; | mandatory true; | |||
| description "LSA advertising router."; | description "LSA advertising router."; | |||
| } | } | |||
| leaf seq-num { | leaf seq-num { | |||
| type uint32; | type uint32; | |||
| mandatory true; | mandatory true; | |||
| description "LSA sequence number."; | description "LSA sequence number."; | |||
| } | } | |||
| leaf checksum { | leaf checksum { | |||
| type checksum16-type; | type fletcher-checksum16-type; | |||
| mandatory true; | mandatory true; | |||
| description "LSA checksum."; | description "LSA checksum."; | |||
| } | } | |||
| leaf length { | leaf length { | |||
| type uint16; | type uint16; | |||
| mandatory true; | mandatory true; | |||
| description "LSA length."; | description "LSA length including the header."; | |||
| } | } | |||
| } | } | |||
| grouping ospfv2-lsa { | grouping ospfv2-lsa { | |||
| description | description | |||
| "OSPFv2 LSA."; | "OSPFv2 LSA - LSAs are uniquely identified by | |||
| the <LSA Type, Link-State ID, Advertising Router> | ||||
| tuple with the sequence number differentiating | ||||
| LSA instances."; | ||||
| container header { | container header { | |||
| must "(type = 9 or type = 10 or type = 11) and " | must "(derived-from(type, " | |||
| + "opaque-id and opaque-type " | + "'ospfv2-opaque-lsa-type') and " | |||
| + "or (type != 9 and type != 10 and type != 11) " | + "opaque-id and opaque-type) or " | |||
| + "and not(opaque-id) and " | + "(not(derived-from(type, " | |||
| + "not(opaque-type)" { | + "'ospfv2-opaque-lsa-type')) " | |||
| + "and not(opaque-id) and not(opaque-type))" { | ||||
| description | description | |||
| "Opaque type and ID only apply to Opaque LSAs."; | "Opaque type and ID only apply to Opaque LSAs."; | |||
| } | } | |||
| description | description | |||
| "Decoded OSPFv2 LSA header data."; | "Decoded OSPFv2 LSA header data."; | |||
| leaf option { | ||||
| type bits { | container lsa-options { | |||
| bit MT { | leaf-list lsa-options { | |||
| description | type identityref { | |||
| "When set, the router supports multi-topology as | base ospfv2-lsa-option; | |||
| in RFC 4915."; | ||||
| } | ||||
| bit DC { | ||||
| description | ||||
| "When set, the router supports demand circuits."; | ||||
| } | ||||
| bit P { | ||||
| description | ||||
| "Only used in type-7 LSA. When set, an NSSA | ||||
| border router should translate the type-7 LSA | ||||
| to a type-5 LSA."; | ||||
| } | ||||
| bit MC { | ||||
| description | ||||
| "When set, the router supports MOSPF."; | ||||
| } | ||||
| bit E { | ||||
| description | ||||
| "This bit describes the way AS-external LSAs | ||||
| are flooded."; | ||||
| } | ||||
| bit O { | ||||
| description | ||||
| "When set, the router is opaque-capable as in | ||||
| RFC 5250."; | ||||
| } | ||||
| bit DN { | ||||
| description | ||||
| "When a type 3, 5 or 7 LSA is sent from a PE to a CE, | ||||
| the DN bit must be set. See RFC 4576."; | ||||
| } | } | |||
| description | ||||
| "LSA option flags list. This list will contain | ||||
| the identities for the identities for the OSPFv2 | ||||
| LSA options that are set."; | ||||
| } | } | |||
| mandatory true; | description | |||
| description "LSA options."; | "LSA options."; | |||
| } | } | |||
| leaf lsa-id { | leaf lsa-id { | |||
| type yang:dotted-quad; | type yang:dotted-quad; | |||
| mandatory true; | mandatory true; | |||
| description "LSA ID."; | description "Link-State ID."; | |||
| } | } | |||
| leaf opaque-type { | leaf opaque-type { | |||
| type uint8; | type uint8; | |||
| description "Opaque type."; | description "Opaque type."; | |||
| } | } | |||
| leaf opaque-id { | leaf opaque-id { | |||
| type uint24; | type opaque-id; | |||
| description "Opaque ID."; | description "Opaque ID."; | |||
| } | } | |||
| uses lsa-header; | uses lsa-header; | |||
| } | } | |||
| container body { | container body { | |||
| description | description | |||
| "Decoded OSPFv2 LSA body data."; | "Decoded OSPFv2 LSA body data."; | |||
| uses ospfv2-lsa-body; | uses ospfv2-lsa-body; | |||
| } | } | |||
| skipping to change at page 53, line 35 ¶ | skipping to change at page 67, line 12 ¶ | |||
| grouping ospfv3-lsa { | grouping ospfv3-lsa { | |||
| description | description | |||
| "Decoded OSPFv3 LSA."; | "Decoded OSPFv3 LSA."; | |||
| container header { | container header { | |||
| description | description | |||
| "Decoded OSPFv3 LSA header data."; | "Decoded OSPFv3 LSA header data."; | |||
| leaf lsa-id { | leaf lsa-id { | |||
| type uint32; | type uint32; | |||
| mandatory true; | mandatory true; | |||
| description "LSA ID."; | description "OSPFv3 LSA ID."; | |||
| } | } | |||
| uses lsa-header; | uses lsa-header; | |||
| } | } | |||
| container body { | container body { | |||
| description | description | |||
| "Decoded OSPF LSA body data."; | "Decoded OSPF LSA body data."; | |||
| uses ospfv3-lsa-body; | uses ospfv3-lsa-body; | |||
| } | } | |||
| } | } | |||
| grouping lsa-common { | grouping lsa-common { | |||
| description | description | |||
| "Common field for OSPF LSA represenation."; | "Common fields for OSPF LSA representation."; | |||
| leaf decoded-completed { | leaf decode-completed { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "The OSPF LSA body is fully decoded."; | "The OSPF LSA body was successfully decoded other than | |||
| unknown TLVs. Unknown LSAs types and OSPFv2 unknown | ||||
| opaque LSA types are not decoded. Additionally, | ||||
| malformed LSAs are generally not accepted and will | ||||
| not be in the Link State Database."; | ||||
| } | } | |||
| leaf raw-data { | leaf raw-data { | |||
| type yang:hex-string; | type yang:hex-string; | |||
| description | description | |||
| "The complete LSA in network byte | "The complete LSA in network byte | |||
| order hexadecimal as received or originated."; | order hexadecimal as received or originated."; | |||
| } | } | |||
| } | } | |||
| grouping lsa { | grouping lsa { | |||
| skipping to change at page 54, line 24 ¶ | skipping to change at page 68, line 4 ¶ | |||
| grouping lsa { | grouping lsa { | |||
| description | description | |||
| "OSPF LSA."; | "OSPF LSA."; | |||
| uses lsa-common; | uses lsa-common; | |||
| choice version { | choice version { | |||
| description | description | |||
| "OSPFv2 or OSPFv3 LSA body."; | "OSPFv2 or OSPFv3 LSA body."; | |||
| container ospfv2 { | container ospfv2 { | |||
| description "OSPFv2 LSA"; | description "OSPFv2 LSA"; | |||
| uses ospfv2-lsa; | uses ospfv2-lsa; | |||
| } | } | |||
| container ospfv3 { | container ospfv3 { | |||
| description "OSPFv3 LSA"; | description "OSPFv3 LSA"; | |||
| uses ospfv3-lsa; | uses ospfv3-lsa; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping lsa-key { | grouping lsa-key { | |||
| description | description | |||
| "OSPF LSA key."; | "OSPF LSA key - the database key for each LSA of a given | |||
| type in the Link State DataBase (LSDB)."; | ||||
| leaf lsa-id { | leaf lsa-id { | |||
| type union { | type union { | |||
| type yang:dotted-quad; | type yang:dotted-quad; | |||
| type uint32; | type uint32; | |||
| } | } | |||
| description | description | |||
| "LSA ID."; | "Link-State ID."; | |||
| } | } | |||
| leaf adv-router { | leaf adv-router { | |||
| type inet:ipv4-address; | type rt-types:router-id; | |||
| description | description | |||
| "Advertising router."; | "Advertising router."; | |||
| } | } | |||
| } | } | |||
| grouping instance-stat { | grouping instance-stat { | |||
| description "Per-instance statistics"; | description "Per-instance statistics"; | |||
| leaf discontinuity-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "The time on the most recent occasion at which any one or | ||||
| more of this OSPF instance's counters suffered a | ||||
| discontinuity. If no such discontinuities have occurred | ||||
| since the OSPF instance was last re-initialized, then | ||||
| this node contains the time the OSPF instance was | ||||
| re-initialized which normally occurs when it was | ||||
| created."; | ||||
| } | ||||
| leaf originate-new-lsa-count { | leaf originate-new-lsa-count { | |||
| type yang:counter32; | type yang:counter32; | |||
| description "The number of new LSAs originated."; | description | |||
| "The number of new LSAs originated. Discontinuities in the | ||||
| value of this counter can occur when the OSPF instance is | ||||
| re-initialized."; | ||||
| } | } | |||
| leaf rx-new-lsas-count { | leaf rx-new-lsas-count { | |||
| type yang:counter32; | type yang:counter32; | |||
| description "The number of LSAs received."; | description | |||
| "The number of new LSAs received. Discontinuities in the | ||||
| value of this counter can occur when the OSPF instance is | ||||
| re-initialized."; | ||||
| } | } | |||
| leaf as-scope-lsa-count { | leaf as-scope-lsa-count { | |||
| type yang:gauge32; | type yang:gauge32; | |||
| description "The number of AS Scope LSAs."; | description "The number of AS-scope LSAs."; | |||
| } | } | |||
| leaf as-scope-lsa-chksum-sum { | leaf as-scope-lsa-chksum-sum { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The sum of the LSA checksums for AS Scope LSAs."; | "The module 2**32 sum of the LSA checksums | |||
| for AS-scope LSAs. The value should be treated as | ||||
| unsigned when comparing two sums of checksums. While | ||||
| differing checksums indicate a different combination | ||||
| of LSAs, equivalent checksums don't guarantee that the | ||||
| LSAs are the same given that multiple combinations of | ||||
| LSAs can result in the same checksum."; | ||||
| } | } | |||
| container database { | container database { | |||
| description "Container for per AS-scope LSA statistics."; | description "Container for per AS-scope LSA statistics."; | |||
| list as-scope-lsa-type { | list as-scope-lsa-type { | |||
| description "List of AS-scope LSA statistics"; | description "List of AS-scope LSA statistics"; | |||
| leaf lsa-type { | leaf lsa-type { | |||
| type uint16; | type uint16; | |||
| description "AS-scope LSA type."; | description "AS-Scope LSA type."; | |||
| } | } | |||
| leaf lsa-count { | leaf lsa-count { | |||
| type yang:gauge32; | type yang:gauge32; | |||
| description "The number of LSAs of the LSA type."; | description "The number of LSAs of the LSA type."; | |||
| } | } | |||
| leaf lsa-cksum-sum { | leaf lsa-cksum-sum { | |||
| type int32; | type uint32; | |||
| description | description | |||
| "The sum of the LSA checksums of the LSA type."; | "The module 2**32 sum of the LSA checksums | |||
| for the LSAs of this type. The value should be | ||||
| treated as unsigned when comparing two sums of | ||||
| checksums. While differing checksums indicate a | ||||
| different combination of LSAs, equivalent checksums | ||||
| don't guarantee that the LSAs are the same given that | ||||
| multiple combinations of LSAs can result in the same | ||||
| checksum."; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| uses instance-fast-reroute-state; | ||||
| } | } | |||
| grouping area-stat { | grouping area-stat { | |||
| description "Per-area statistics."; | description "Per-area statistics."; | |||
| leaf discontinuity-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "The time on the most recent occasion at which any one or | ||||
| more of this OSPF area's counters suffered a | ||||
| discontinuity. If no such discontinuities have occurred | ||||
| since the OSPF area was last re-initialized, then | ||||
| this node contains the time the OSPF area was | ||||
| re-initialized which normally occurs when it was | ||||
| created."; | ||||
| } | ||||
| leaf spf-runs-count { | leaf spf-runs-count { | |||
| type yang:counter32; | type yang:counter32; | |||
| description | description | |||
| "The number of times the intra-area SPF has run."; | "The number of times the intra-area SPF has run. | |||
| Discontinuities in the value of this counter can occur | ||||
| when the OSPF area is re-initialized."; | ||||
| } | } | |||
| leaf abr-count { | leaf abr-count { | |||
| type yang:gauge32; | type yang:gauge32; | |||
| description | description | |||
| "The total number of Area Border Routers (ABRs) | "The total number of Area Border Routers (ABRs) | |||
| reachable within this area."; | reachable within this area."; | |||
| } | } | |||
| leaf asbr-count { | leaf asbr-count { | |||
| type yang:gauge32; | type yang:gauge32; | |||
| description | description | |||
| "The total number of AS Border Routers (ASBRs)."; | "The total number of AS Boundary Routers (ASBRs)."; | |||
| } | } | |||
| leaf ar-nssa-translator-event-count { | leaf ar-nssa-translator-event-count { | |||
| type yang:counter32; | type yang:counter32; | |||
| description | description | |||
| "The number of NSSA translator-state changes."; | "The number of NSSA translator-state changes. | |||
| Discontinuities in the value of this counter can occur | ||||
| when the OSPF area is re-initialized."; | ||||
| } | } | |||
| leaf area-scope-lsa-count { | leaf area-scope-lsa-count { | |||
| type yang:gauge32; | type yang:gauge32; | |||
| description | description | |||
| "The number of area scope LSAs in the area."; | "The number of area-scope LSAs in the area."; | |||
| } | } | |||
| leaf area-scope-lsa-cksum-sum { | leaf area-scope-lsa-cksum-sum { | |||
| type int32; | type uint32; | |||
| description "The sum of the area scope LSAs checksums."; | description | |||
| "The module 2**32 sum of the LSA checksums | ||||
| for area-scope LSAs. The value should be treated as | ||||
| unsigned when comparing two sums of checksums. While | ||||
| differing checksums indicate a different combination | ||||
| of LSAs, equivalent checksums don't guarantee that the | ||||
| LSAs are the same given that multiple combinations of | ||||
| LSAs can result in the same checksum."; | ||||
| } | } | |||
| container database { | container database { | |||
| description "Container for area scope LSA type statistics."; | description "Container for area-scope LSA type statistics."; | |||
| list area-scope-lsa-type { | list area-scope-lsa-type { | |||
| description "List of area scope LSA statistics"; | description "List of area-scope LSA statistics"; | |||
| leaf lsa-type { | leaf lsa-type { | |||
| type uint16; | type uint16; | |||
| description "Area scope LSA type."; | description "Area-scope LSA type."; | |||
| } | } | |||
| leaf lsa-count { | leaf lsa-count { | |||
| type yang:gauge32; | type yang:gauge32; | |||
| description "The number of LSAs of the LSA type."; | description "The number of LSAs of the LSA type."; | |||
| } | } | |||
| leaf lsa-cksum-sum { | leaf lsa-cksum-sum { | |||
| type int32; | type uint32; | |||
| description | description | |||
| "The sum of the LSA checksums of the LSA type."; | "The module 2**32 sum of the LSA checksums | |||
| for the LSAs of this type. The value should be | ||||
| treated as unsigned when comparing two sums of | ||||
| checksums. While differing checksums indicate a | ||||
| different combination of LSAs, equivalent checksums | ||||
| don't guarantee that the LSAs are the same given that | ||||
| multiple combinations of LSAs can result in the same | ||||
| checksum."; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping interface-stat { | grouping interface-stat { | |||
| description "Per-interface statistics"; | description "Per-interface statistics"; | |||
| leaf discontinuity-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "The time on the most recent occasion at which any one or | ||||
| more of this OSPF interface's counters suffered a | ||||
| discontinuity. If no such discontinuities have occurred | ||||
| since the OSPF interface was last re-initialized, then | ||||
| this node contains the time the OSPF interface was | ||||
| re-initialized which normally occurs when it was | ||||
| created."; | ||||
| } | ||||
| leaf if-event-count { | leaf if-event-count { | |||
| type yang:counter32; | type yang:counter32; | |||
| description | description | |||
| "The number of times this interface has changed its | "The number of times this interface has changed its | |||
| state or an error has occurred."; | state or an error has occurred. Discontinuities in the | |||
| value of this counter can occur when the OSPF interface | ||||
| is re-initialized."; | ||||
| } | } | |||
| leaf link-scope-lsa-count { | leaf link-scope-lsa-count { | |||
| type yang:gauge32; | type yang:gauge32; | |||
| description "The number of link scope LSAs."; | description "The number of link-scope LSAs."; | |||
| } | } | |||
| leaf link-scope-lsa-cksum-sum { | leaf link-scope-lsa-cksum-sum { | |||
| type uint32; | type uint32; | |||
| description "The sum of link scope LSA checksums."; | description | |||
| "The module 2**32 sum of the LSA checksums | ||||
| for link-scope LSAs. The value should be treated as | ||||
| unsigned when comparing two sums of checksums. While | ||||
| differing checksums indicate a different combination | ||||
| of LSAs, equivalent checksums don't guarantee that the | ||||
| LSAs are the same given that multiple combinations of | ||||
| LSAs can result in the same checksum."; | ||||
| } | } | |||
| container database { | container database { | |||
| description "Container for link scope LSA type statistics."; | description "Container for link-scope LSA type statistics."; | |||
| list link-scope-lsa-type { | list link-scope-lsa-type { | |||
| description "List of link scope LSA statistics"; | description "List of link-scope LSA statistics"; | |||
| leaf lsa-type { | leaf lsa-type { | |||
| type uint16; | type uint16; | |||
| description "Link scope LSA type."; | description "Link scope LSA type."; | |||
| } | } | |||
| leaf lsa-count { | leaf lsa-count { | |||
| type yang:gauge32; | type yang:gauge32; | |||
| description "The number of LSAs of the LSA type."; | description "The number of LSAs of the LSA type."; | |||
| } | } | |||
| leaf lsa-cksum-sum { | leaf lsa-cksum-sum { | |||
| type int32; | type uint32; | |||
| description | description | |||
| "The sum of the LSA checksums of the LSA type."; | "The module 2**32 sum of the LSA checksums | |||
| for the LSAs of this type. The value should be | ||||
| treated as unsigned when comparing two sums of | ||||
| checksums. While differing checksums indicate a | ||||
| different combination of LSAs, equivalent checksums | ||||
| don't guarantee that the LSAs are the same given that | ||||
| multiple combinations of LSAs can result in the same | ||||
| checksum."; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping neighbor-stat { | grouping neighbor-stat { | |||
| description "Per-neighbor statistics."; | description "Per-neighbor statistics."; | |||
| leaf discontinuity-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "The time on the most recent occasion at which any one or | ||||
| more of this OSPF neighbor's counters suffered a | ||||
| discontinuity. If no such discontinuities have occurred | ||||
| since the OSPF neighbor was last re-initialized, then | ||||
| this node contains the time the OSPF neighbor was | ||||
| re-initialized which normally occurs when the neighbor | ||||
| is dynamically discovered andcreated."; | ||||
| } | ||||
| leaf nbr-event-count { | leaf nbr-event-count { | |||
| type yang:counter32; | type yang:counter32; | |||
| description | description | |||
| "The number of times this neighbor has changed | "The number of times this neighbor has changed | |||
| state or an error has occurred."; | state or an error has occurred. Discontinuities in the | |||
| value of this counter can occur when the OSPF neighbor | ||||
| is re-initialized."; | ||||
| } | } | |||
| leaf nbr-retrans-qlen { | leaf nbr-retrans-qlen { | |||
| type yang:gauge32; | type yang:gauge32; | |||
| description | description | |||
| "The current length of the retransmission queue."; | "The current length of the retransmission queue."; | |||
| } | } | |||
| } | } | |||
| grouping instance-fast-reroute-config { | grouping instance-fast-reroute-config { | |||
| description | description | |||
| "This group defines global configuration of IP-FRR."; | "This group defines global configuration of IP | |||
| Fast ReRoute (FRR)."; | ||||
| container fast-reroute { | container fast-reroute { | |||
| if-feature fast-reroute; | if-feature fast-reroute; | |||
| description | description | |||
| "This container may be augmented with global | "This container may be augmented with global | |||
| parameters for IP-FRR."; | parameters for IP-FRR."; | |||
| container lfa { | container lfa { | |||
| if-feature lfa; | if-feature lfa; | |||
| description | description | |||
| "This container may be augmented with | "This container may be augmented with | |||
| global parameters for LFA. Container creation | global parameters for Loop-Free Alternatives (LFA). | |||
| has no effect on LFA activation."; | Container creation has no effect on LFA activation."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping instance-fast-reroute-state { | ||||
| description "IP-FRR state data grouping"; | ||||
| container protected-routes { | ||||
| if-feature fast-reroute; | ||||
| config false; | ||||
| description "Instance protection statistics"; | ||||
| list address-family-stats { | ||||
| key "address-family prefix alternate"; | ||||
| description | ||||
| "Per Address Family protected prefix information"; | ||||
| leaf address-family { | ||||
| type iana-rt-types:address-family; | ||||
| description | ||||
| "Address-family"; | ||||
| } | ||||
| leaf prefix { | ||||
| type inet:ip-prefix; | ||||
| description | ||||
| "Protected prefix."; | ||||
| } | ||||
| leaf alternate { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Alternate next hop for the prefix."; | ||||
| } | ||||
| leaf alternate-type { | ||||
| type enumeration { | ||||
| enum equal-cost { | ||||
| description | ||||
| "ECMP alternate."; | ||||
| } | ||||
| enum lfa { | ||||
| description | ||||
| "LFA alternate."; | ||||
| } | ||||
| enum remote-lfa { | ||||
| description | ||||
| "Remote LFA alternate."; | ||||
| } | ||||
| enum tunnel { | ||||
| description | ||||
| "Tunnel based alternate | ||||
| (like RSVP-TE or GRE)."; | ||||
| } | ||||
| enum ti-lfa { | ||||
| description | ||||
| "TI-LFA alternate."; | ||||
| } | ||||
| enum mrt { | ||||
| description | ||||
| "MRT alternate."; | ||||
| } | ||||
| enum other { | ||||
| description | ||||
| "Unknown alternate type."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Type of alternate."; | ||||
| } | ||||
| leaf best { | ||||
| type boolean; | ||||
| description | ||||
| "Indicates that this alternate is preferred."; | ||||
| } | ||||
| leaf non-best-reason { | ||||
| type string { | ||||
| length "1..255"; | ||||
| } | ||||
| description | ||||
| "Information field to describe why the alternate | ||||
| is not best."; | ||||
| } | ||||
| leaf protection-available { | ||||
| type bits { | ||||
| bit node-protect { | ||||
| position 0; | ||||
| description | ||||
| "Node protection available."; | ||||
| } | ||||
| bit link-protect { | ||||
| position 1; | ||||
| description | ||||
| "Link protection available."; | ||||
| } | ||||
| bit srlg-protect { | ||||
| position 2; | ||||
| description | ||||
| "SRLG protection available."; | ||||
| } | ||||
| bit downstream-protect { | ||||
| position 3; | ||||
| description | ||||
| "Downstream protection available."; | ||||
| } | ||||
| bit other { | ||||
| position 4; | ||||
| description | ||||
| "Other protection available."; | ||||
| } | ||||
| } | ||||
| description "Protection provided by the alternate."; | ||||
| } | ||||
| leaf alternate-metric1 { | ||||
| type uint32; | ||||
| description | ||||
| "Metric from Point of Local Repair (PLR) to | ||||
| destination through the alternate path."; | ||||
| } | ||||
| leaf alternate-metric2 { | ||||
| type uint32; | ||||
| description | ||||
| "Metric from PLR to the alternate node"; | ||||
| } | ||||
| leaf alternate-metric3 { | ||||
| type uint32; | ||||
| description | ||||
| "Metric from alternate node to the destination"; | ||||
| } | ||||
| } | ||||
| } | ||||
| container unprotected-routes { | ||||
| if-feature fast-reroute; | ||||
| config false; | ||||
| description "List of prefixes that are not protected"; | ||||
| list address-family-stats { | ||||
| key "address-family prefix"; | ||||
| description | ||||
| "Per Address Family (AF) unprotected prefix statistics."; | ||||
| leaf address-family { | ||||
| type iana-rt-types:address-family; | ||||
| description "Address-family"; | ||||
| } | ||||
| leaf prefix { | ||||
| type inet:ip-prefix; | ||||
| description "Unprotected prefix."; | ||||
| } | ||||
| } | ||||
| } | ||||
| list protection-statistics { | ||||
| key frr-protection-method; | ||||
| config false; | ||||
| description "List protection method statistics"; | ||||
| leaf frr-protection-method { | ||||
| type string; | ||||
| description "Protection method used."; | ||||
| } | ||||
| list address-family-stats { | ||||
| key address-family; | ||||
| description "Per Address Family protection statistics."; | ||||
| leaf address-family { | ||||
| type iana-rt-types:address-family; | ||||
| description "Address-family"; | ||||
| } | ||||
| leaf total-routes { | ||||
| type uint32; | ||||
| description "Total prefixes."; | ||||
| } | ||||
| leaf unprotected-routes { | ||||
| type uint32; | ||||
| description | ||||
| "Total prefixes that are not protected."; | ||||
| } | ||||
| leaf protected-routes { | ||||
| type uint32; | ||||
| description | ||||
| "Total prefixes that are protected."; | ||||
| } | ||||
| leaf linkprotected-routes { | ||||
| type uint32; | ||||
| description | ||||
| "Total prefixes that are link protected."; | ||||
| } | ||||
| leaf nodeprotected-routes { | ||||
| type uint32; | ||||
| description | ||||
| "Total prefixes that are node protected."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping interface-fast-reroute-config { | grouping interface-fast-reroute-config { | |||
| description | description | |||
| "This group defines interface configuration of IP-FRR."; | "This group defines interface configuration of IP-FRR."; | |||
| container fast-reroute { | container fast-reroute { | |||
| if-feature fast-reroute; | if-feature fast-reroute; | |||
| container lfa { | container lfa { | |||
| if-feature lfa; | if-feature lfa; | |||
| leaf candidate-enable { | leaf candidate-enable { | |||
| type boolean; | type boolean; | |||
| default true; | default true; | |||
| skipping to change at page 59, line 7 ¶ | skipping to change at page 78, line 42 ¶ | |||
| description | description | |||
| "Activates Remote LFA (R-LFA)."; | "Activates Remote LFA (R-LFA)."; | |||
| } | } | |||
| description | description | |||
| "Remote LFA configuration."; | "Remote LFA configuration."; | |||
| } | } | |||
| description | description | |||
| "LFA configuration."; | "LFA configuration."; | |||
| } | } | |||
| description | description | |||
| "IP Fast-reroute configuration."; | "Interface IP Fast-reroute configuration."; | |||
| } | } | |||
| } | } | |||
| grouping interface-physical-link-config { | grouping interface-physical-link-config { | |||
| description | description | |||
| "Interface cost configuration that only applies to | "Interface cost configuration that only applies to | |||
| physical interfaces and sham links."; | physical interfaces (non-virtual) and sham links."; | |||
| leaf cost { | leaf cost { | |||
| type uint16 { | type ospf-link-metric; | |||
| range "1..65535"; | ||||
| } | ||||
| description | description | |||
| "Interface cost."; | "Interface cost."; | |||
| } | } | |||
| leaf mtu-ignore { | leaf mtu-ignore { | |||
| if-feature mtu-ignore; | if-feature mtu-ignore; | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable bypassing the MTU mismatch check in | "Enable/Disable bypassing the MTU mismatch check in | |||
| Database Description packets."; | Database Description packets specified in RFC 2328, | |||
| section 10.6."; | ||||
| } | } | |||
| leaf prefix-suppression { | leaf prefix-suppression { | |||
| if-feature prefix-suppression; | if-feature prefix-suppression; | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Suppress advertisement of the prefixes associated | "Suppress advertisement of the prefixes associated | |||
| with the interface."; | with the interface."; | |||
| } | } | |||
| } | } | |||
| grouping interface-common-config { | grouping interface-common-config { | |||
| description | description | |||
| "Common configuration for all types of interfaces, | "Common configuration for all types of interfaces, | |||
| including virtual links and sham links."; | including virtual links and sham links."; | |||
| leaf hello-interval { | leaf hello-interval { | |||
| type uint16 { | type uint16; | |||
| range "1..65535"; | ||||
| } | ||||
| units seconds; | units seconds; | |||
| description | description | |||
| "Interval between hello packets in seconds."; | "Interval between hello packets (seconds). It must | |||
| be the same for all routers on the same network. | ||||
| Different networks, implementations, and deployments | ||||
| will use different hello-intervals. A sample value | ||||
| for a LAN network would be 10 seconds."; | ||||
| reference "RFC 2328: OSPF Version 2, Appendix C.3"; | ||||
| } | } | |||
| leaf dead-interval { | leaf dead-interval { | |||
| type uint32 { | type uint16; | |||
| range "1..2147483647"; | ||||
| } | ||||
| units seconds; | units seconds; | |||
| must "../dead-interval > ../hello-interval" { | must "../dead-interval > ../hello-interval" { | |||
| error-message "The dead interval must be " | error-message "The dead interval must be " | |||
| + "larger than the hello interval"; | + "larger than the hello interval"; | |||
| description | description | |||
| "The value MUST be greater than 'hello-internval'."; | "The value must be greater than the 'hello-interval'."; | |||
| } | } | |||
| description | description | |||
| "Interval after which a neighbor is | "Interval after which a neighbor is declared down | |||
| declared down in seconds."; | (seconds) if hello packets are not received. It is | |||
| typically 3 or 4 times the hello-interval. A typical | ||||
| value for LAN networks is 40 seconds."; | ||||
| reference "RFC 2328: OSPF Version 2, Appendix C.3"; | ||||
| } | } | |||
| leaf retransmit-interval { | leaf retransmit-interval { | |||
| type uint16 { | type uint16 { | |||
| range "1..3600"; | range "1..3600"; | |||
| } | } | |||
| units seconds; | units seconds; | |||
| description | description | |||
| "Interval between retransmitting unacknowledged Link | "Interval between retransmitting unacknowledged Link | |||
| State Advertisements (LSAs) in seconds."; | State Advertisements (LSAs) (seconds). This should | |||
| be well over the round-trip transmit delay for | ||||
| any two routers on the network. A sample value | ||||
| would be 5 seconds."; | ||||
| reference "RFC 2328: OSPF Version 2, Appendix C.3"; | ||||
| } | } | |||
| leaf transmit-delay { | leaf transmit-delay { | |||
| type uint16 { | type uint16; | |||
| range "1..3600"; | ||||
| } | ||||
| units seconds; | units seconds; | |||
| description | description | |||
| "Estimated time needed to transmit Link State Update | "Estimated time needed to transmit Link State Update | |||
| packets on the interface in seconds."; | (LSU) packets on the interface (seconds). LSAs have | |||
| their age incremented by this amount when advertised | ||||
| on the interface. A sample value would be 1 second."; | ||||
| reference "RFC 2328: OSPF Version 2, Appendix C.3"; | ||||
| } | } | |||
| leaf lls { | leaf lls { | |||
| if-feature lls; | if-feature lls; | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable link-local signaling (LLS) support."; | "Enable/Disable link-local signaling (LLS) support."; | |||
| } | } | |||
| container ttl-security { | container ttl-security { | |||
| if-feature ttl-security; | if-feature ttl-security; | |||
| description "TTL security check."; | description "Time to Live (TTL) security check."; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable TTL security check."; | "Enable/Disable TTL security check."; | |||
| } | } | |||
| leaf hops { | leaf hops { | |||
| type uint8 { | type uint8 { | |||
| range "1..254"; | range "1..254"; | |||
| } | } | |||
| default 1; | ||||
| description | description | |||
| "Maximum number of hops that an OSPF packet may | "Maximum number of hops that an OSPF packet may | |||
| have traversed before reception."; | have traversed before reception."; | |||
| } | } | |||
| } | } | |||
| leaf enable { | leaf enable { | |||
| if-feature admin-control; | ||||
| type boolean; | type boolean; | |||
| default true; | default true; | |||
| description | description | |||
| "Enable/disable protocol on the interface."; | "Enable/disable OSPF protocol on the interface."; | |||
| } | } | |||
| container authentication { | container authentication { | |||
| description "Authentication configuration."; | description "Authentication configuration."; | |||
| choice auth-type-selection { | choice auth-type-selection { | |||
| description | description | |||
| "Options for expressing authentication setting."; | "Options for OSPFv2/OSPFv3 authentication | |||
| case auth-ipsec { | configuration."; | |||
| when "../../../../../../../rt:type = 'ospf:ospfv3'" { | case ospfv2-auth { | |||
| when "derived-from-or-self(../../../../../../rt:type, " | ||||
| + "'ospfv2')" { | ||||
| description "Applied to OSPFv2 only."; | ||||
| } | ||||
| leaf ospfv2-auth-trailer-rfc { | ||||
| if-feature ospfv2-authentication-trailer; | ||||
| type ospfv2-auth-trailer-rfc-version; | ||||
| description | ||||
| "Version of OSFPv2 authentication trailer support - | ||||
| RFC 5709 or RFC 7474"; | ||||
| } | ||||
| choice ospfv2-auth-specification { | ||||
| description | ||||
| "Key chain or explicit key parameter specification"; | ||||
| case auth-key-chain { | ||||
| if-feature key-chain; | ||||
| leaf ospfv2-key-chain { | ||||
| type key-chain:key-chain-ref; | ||||
| description | ||||
| "key-chain name."; | ||||
| } | ||||
| } | ||||
| case auth-key-explicit { | ||||
| leaf ospfv2-key-id { | ||||
| type uint32; | ||||
| description | ||||
| "Key Identifier"; | ||||
| } | ||||
| leaf ospfv2-key { | ||||
| type string; | ||||
| description | ||||
| "OSPFv2 authentication key. The | ||||
| length of the key may be dependent on the | ||||
| cryptographic algorithm."; | ||||
| } | ||||
| leaf ospfv2-crypto-algorithm { | ||||
| type identityref { | ||||
| base key-chain:crypto-algorithm; | ||||
| } | ||||
| description | ||||
| "Cryptographic algorithm associated with key."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| case ospfv3-auth-ipsec { | ||||
| when "derived-from-or-self(../../../../../../rt:type, " | ||||
| + "'ospfv3')" { | ||||
| description "Applied to OSPFv3 only."; | description "Applied to OSPFv3 only."; | |||
| } | } | |||
| if-feature ospfv3-authentication-ipsec; | if-feature ospfv3-authentication-ipsec; | |||
| leaf sa { | leaf sa { | |||
| type string; | type string; | |||
| description | description | |||
| "Security Association name."; | "Security Association (SA) name."; | |||
| } | } | |||
| } | } | |||
| case auth-trailer-key-chain { | case ospfv3-auth-trailer { | |||
| leaf key-chain { | when "derived-from-or-self(../../../../../../rt:type, " | |||
| type key-chain:key-chain-ref; | + "'ospfv3')" { | |||
| description | description "Applied to OSPFv3 only."; | |||
| "key-chain name."; | ||||
| } | ||||
| } | } | |||
| case auth-trailer-key { | if-feature ospfv3-authentication-trailer; | |||
| leaf key { | choice ospfv3-auth-specification { | |||
| type string; | ||||
| description | description | |||
| "Key string in ASCII format."; | "Key chain or explicit key parameter specification"; | |||
| case auth-key-chain { | ||||
| } | if-feature key-chain; | |||
| leaf crypto-algorithm { | leaf ospfv3-key-chain { | |||
| type identityref { | type key-chain:key-chain-ref; | |||
| base key-chain:crypto-algorithm; | description | |||
| "key-chain name."; | ||||
| } | ||||
| } | ||||
| case auth-key-explicit { | ||||
| leaf ospfv3-sa-id { | ||||
| type uint16; | ||||
| description | ||||
| "Security Association (SA) Identifier"; | ||||
| } | ||||
| leaf ospfv3-key { | ||||
| type string; | ||||
| description | ||||
| "OSPFv3 authentication key. The | ||||
| length of the key may be dependent on the | ||||
| cryptographic algorithm."; | ||||
| } | ||||
| leaf ospfv3-crypto-algorithm { | ||||
| type identityref { | ||||
| base key-chain:crypto-algorithm; | ||||
| } | ||||
| description | ||||
| "Cryptographic algorithm associated with key."; | ||||
| } | ||||
| } | } | |||
| description | ||||
| "Cryptographic algorithm associated with key."; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } // interface-common-config | } | |||
| grouping interface-config { | grouping interface-config { | |||
| description "Configuration for real interfaces."; | description "Configuration for real interfaces."; | |||
| leaf interface-type { | leaf interface-type { | |||
| type enumeration { | type enumeration { | |||
| enum "broadcast" { | enum "broadcast" { | |||
| description | description | |||
| "Specify OSPF broadcast multi-access network."; | "Specify OSPF broadcast multi-access network."; | |||
| } | } | |||
| skipping to change at page 62, line 40 ¶ | skipping to change at page 84, line 4 ¶ | |||
| (NBMA) network."; | (NBMA) network."; | |||
| } | } | |||
| enum "point-to-multipoint" { | enum "point-to-multipoint" { | |||
| description | description | |||
| "Specify OSPF point-to-multipoint network."; | "Specify OSPF point-to-multipoint network."; | |||
| } | } | |||
| enum "point-to-point" { | enum "point-to-point" { | |||
| description | description | |||
| "Specify OSPF point-to-point network."; | "Specify OSPF point-to-point network."; | |||
| } | } | |||
| enum "hybrid" { | ||||
| if-feature hybrid-interface; | ||||
| description | ||||
| "Specify OSPF hybrid broadcast/P2MP network."; | ||||
| } | ||||
| } | } | |||
| description | description | |||
| "Interface type."; | "Interface type."; | |||
| } | } | |||
| leaf passive { | leaf passive { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable passive interface - a passive interface's | "Enable/Disable passive interface - a passive interface's | |||
| prefix will be advertised but no neighbor adjacencies | prefix will be advertised but no neighbor adjacencies | |||
| skipping to change at page 63, line 4 ¶ | skipping to change at page 84, line 21 ¶ | |||
| "Interface type."; | "Interface type."; | |||
| } | } | |||
| leaf passive { | leaf passive { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable passive interface - a passive interface's | "Enable/Disable passive interface - a passive interface's | |||
| prefix will be advertised but no neighbor adjacencies | prefix will be advertised but no neighbor adjacencies | |||
| will be formed on the interface."; | will be formed on the interface."; | |||
| } | } | |||
| leaf demand-circuit { | leaf demand-circuit { | |||
| if-feature demand-circuit; | if-feature demand-circuit; | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable demand circuit."; | "Enable/Disable demand circuit."; | |||
| } | } | |||
| leaf priority { | leaf priority { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Configure OSPF router priority."; | "Configure OSPF router priority. On multi-access network | |||
| this value is for Designated Router (DR) election. The | ||||
| priority is ignored on other interface types. A router | ||||
| with a higher priority will be preferred in the election | ||||
| and a value of 0 indicates the router is not eligible to | ||||
| become Designated Router or Backup Designated Router | ||||
| (BDR)."; | ||||
| } | } | |||
| container multi-areas { | container multi-areas { | |||
| if-feature multi-area-adj; | if-feature multi-area-adj; | |||
| description "Container for multi-area config."; | description "Container for multi-area config."; | |||
| list multi-area { | list multi-area { | |||
| key multi-area-id; | key multi-area-id; | |||
| description | description | |||
| "Configure OSPF multi-area adjacency."; | "Configure OSPF multi-area adjacency."; | |||
| leaf multi-area-id { | leaf multi-area-id { | |||
| skipping to change at page 63, line 28 ¶ | skipping to change at page 85, line 4 ¶ | |||
| if-feature multi-area-adj; | if-feature multi-area-adj; | |||
| description "Container for multi-area config."; | description "Container for multi-area config."; | |||
| list multi-area { | list multi-area { | |||
| key multi-area-id; | key multi-area-id; | |||
| description | description | |||
| "Configure OSPF multi-area adjacency."; | "Configure OSPF multi-area adjacency."; | |||
| leaf multi-area-id { | leaf multi-area-id { | |||
| type area-id-type; | type area-id-type; | |||
| description | description | |||
| "Multi-area adjacency area ID."; | "Multi-area adjacency area ID."; | |||
| } | } | |||
| leaf cost { | leaf cost { | |||
| type uint16; | type ospf-link-metric; | |||
| description | description | |||
| "Interface cost for multi-area adjacency."; | "Interface cost for multi-area adjacency."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container static-neighbors { | container static-neighbors { | |||
| description "Statically configured neighbors."; | description "Statically configured neighbors."; | |||
| list neighbor { | list neighbor { | |||
| key "identifier"; | key "identifier"; | |||
| description | description | |||
| "Specify a static OSPF neighbor."; | "Specify a static OSPF neighbor."; | |||
| leaf identifier { | leaf identifier { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Neighbor router ID, IPv4 address, or IPv6 address."; | "Neighbor Router ID, IPv4 address, or IPv6 address."; | |||
| } | } | |||
| leaf cost { | leaf cost { | |||
| type uint16 { | type ospf-link-metric; | |||
| range "1..65535"; | description | |||
| } | "Neighbor cost. Different implementations have different | |||
| description "Neighbor cost."; | default costs with some defaulting to a cost inversely | |||
| proportional to the interface speed. Others will | ||||
| default to 1 equating the cost to a hop count." ; | ||||
| } | } | |||
| leaf poll-interval { | leaf poll-interval { | |||
| type uint16 { | type uint16; | |||
| range "1..65535"; | ||||
| } | ||||
| units seconds; | units seconds; | |||
| description "Neighbor poll interval in seconds."; | description | |||
| "Neighbor poll interval (seconds) for sending OSPF | ||||
| hello packets to discover the neighbor on NBMA | ||||
| networks. This interval dictates the granularity for | ||||
| discovery of new neighbors. A sample would be | ||||
| 120 seconds (2 minutes) for a legacy Packet Data | ||||
| Network (PDN) X.25 network."; | ||||
| reference "RFC 2328: OSPF Version 2, Appendix C.5"; | ||||
| } | } | |||
| leaf priority { | leaf priority { | |||
| type uint8 { | type uint8; | |||
| range "1..255"; | description | |||
| } | "Neighbor priority for DR election. A router with a | |||
| description "Neighbor priority for DR election."; | higher priority will be preferred in the election | |||
| and a value of 0 indicates the router is not | ||||
| eligible to become Designated Router or Backup | ||||
| Designated Router (BDR)."; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| leaf node-flag { | leaf node-flag { | |||
| if-feature node-flag; | if-feature node-flag; | |||
| type boolean; | type boolean; | |||
| default false; | default false; | |||
| description | description | |||
| "Set prefix as a node representative prefix."; | "Set prefix as identifying the advertising router."; | |||
| reference "RFC 7684: OSPFv2 Prefix/Link Attribute | ||||
| Advertisement"; | ||||
| } | } | |||
| container bfd { | container bfd { | |||
| if-feature bfd; | if-feature bfd; | |||
| description "BFD configuration."; | description "BFD Client Configuration."; | |||
| leaf enable { | uses bfd-types:client-cfg-parms; | |||
| type boolean; | reference "RFC YYYY: YANG Data Model for Bidirectional | |||
| default false; | Forwarding Detection (BFD). Please replace YYYY with | |||
| description | published RFC number for draft-ietf-bfd-yang."; | |||
| "True if BFD is enabled for the OSPF interface."; | ||||
| } | ||||
| } | } | |||
| uses interface-fast-reroute-config; | uses interface-fast-reroute-config; | |||
| uses interface-common-config; | uses interface-common-config; | |||
| uses interface-physical-link-config; | uses interface-physical-link-config; | |||
| } // grouping interface-config | } | |||
| grouping neighbor-state { | grouping neighbor-state { | |||
| description | description | |||
| "OSPF neighbor operational state."; | "OSPF neighbor operational state."; | |||
| leaf address { | leaf address { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| config false; | config false; | |||
| description | description | |||
| "Neighbor address."; | "Neighbor address."; | |||
| } | } | |||
| leaf dr-router-id { | leaf dr-router-id { | |||
| type rt-types:router-id; | type rt-types:router-id; | |||
| config false; | config false; | |||
| description "Neighbor's Designated Router (DR) router ID."; | description "Neighbor's Designated Router (DR) Router ID."; | |||
| } | } | |||
| leaf dr-ip-addr { | leaf dr-ip-addr { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| config false; | config false; | |||
| description "Neighbor's Designated Router (DR) IP address."; | description "Neighbor's Designated Router (DR) IP address."; | |||
| } | } | |||
| leaf bdr-router-id { | leaf bdr-router-id { | |||
| type rt-types:router-id; | type rt-types:router-id; | |||
| config false; | config false; | |||
| description | description | |||
| "Neighbor's Backup Designated Router (BDR) router ID."; | "Neighbor's Backup Designated Router (BDR) Router ID."; | |||
| } | } | |||
| leaf bdr-ip-addr { | leaf bdr-ip-addr { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| config false; | config false; | |||
| description | description | |||
| "Neighbor's Backup Designated Router (BDR) IP Address."; | "Neighbor's Backup Designated Router (BDR) IP Address."; | |||
| } | } | |||
| leaf state { | leaf state { | |||
| type nbr-state-type; | type nbr-state-type; | |||
| config false; | config false; | |||
| description | description | |||
| "OSPF neighbor state."; | "OSPF neighbor state."; | |||
| } | } | |||
| leaf cost { | ||||
| type ospf-link-metric; | ||||
| config false; | ||||
| description "Cost to reach neighbor for Point-to-Multipoint | ||||
| and Hybrid networks"; | ||||
| } | ||||
| leaf dead-timer { | leaf dead-timer { | |||
| type uint32; | type rt-types:timer-value-seconds16; | |||
| units "seconds"; | ||||
| config false; | config false; | |||
| description "This timer tracks the remaining time before | description "This timer tracks the remaining time before | |||
| the neighbor is declared dead."; | the neighbor is declared dead."; | |||
| } | } | |||
| container statistics { | container statistics { | |||
| config false; | config false; | |||
| description "Per neighbor statistics"; | description "Per-neighbor statistics"; | |||
| uses neighbor-stat; | uses neighbor-stat; | |||
| } | } | |||
| } | } | |||
| grouping interface-common-state { | grouping interface-common-state { | |||
| description | description | |||
| "OSPF interface common operational state."; | "OSPF interface common operational state."; | |||
| reference "RFC2328 Section 9"; | reference "RFC2328 Section 9: OSPF Version2 - | |||
| The Interface Data Structure"; | ||||
| leaf state { | leaf state { | |||
| type if-state-type; | type if-state-type; | |||
| config false; | config false; | |||
| description "Interface state."; | description "Interface state."; | |||
| } | } | |||
| leaf hello-timer { | leaf hello-timer { | |||
| type uint32; | type rt-types:timer-value-seconds16; | |||
| units "seconds"; | ||||
| config false; | config false; | |||
| description "This timer tracks the remaining time before | description "This timer tracks the remaining time before | |||
| the next hello packet is sent."; | the next hello packet is sent on the | |||
| interface."; | ||||
| } | } | |||
| leaf wait-timer { | leaf wait-timer { | |||
| type uint32; | type rt-types:timer-value-seconds16; | |||
| units "seconds"; | ||||
| config false; | config false; | |||
| description "This timer tracks the remaining time before | description "This timer tracks the remaining time before | |||
| the interface exits the Waiting state."; | the interface exits the Waiting state."; | |||
| } | } | |||
| leaf dr-router-id { | leaf dr-router-id { | |||
| type rt-types:router-id; | type rt-types:router-id; | |||
| config false; | config false; | |||
| description "Designated Router (DR) router ID."; | description "Designated Router (DR) Router ID."; | |||
| } | } | |||
| leaf dr-ip-addr { | leaf dr-ip-addr { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| config false; | config false; | |||
| description "Designated Router (DR) IP address."; | description "Designated Router (DR) IP address."; | |||
| } | } | |||
| leaf bdr-router-id { | leaf bdr-router-id { | |||
| type rt-types:router-id; | type rt-types:router-id; | |||
| config false; | config false; | |||
| description "Backup Designated Router (BDR) router ID."; | description "Backup Designated Router (BDR) Router ID."; | |||
| } | } | |||
| leaf bdr-ip-addr { | leaf bdr-ip-addr { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| config false; | config false; | |||
| description "Backup Designated Router (BDR) IP Address."; | description "Backup Designated Router (BDR) IP Address."; | |||
| } | } | |||
| container statistics { | container statistics { | |||
| config false; | config false; | |||
| description "Per interface statistics"; | description "Per-interface statistics"; | |||
| uses interface-stat; | uses interface-stat; | |||
| } | } | |||
| container neighbors { | container neighbors { | |||
| config false; | config false; | |||
| description "All neighbors for the interface."; | description "All neighbors for the interface."; | |||
| list neighbor { | list neighbor { | |||
| key "neighbor-router-id"; | key "neighbor-router-id"; | |||
| description | description | |||
| "List of OSPF neighbors."; | "List of interface OSPF neighbors."; | |||
| leaf neighbor-router-id { | leaf neighbor-router-id { | |||
| type rt-types:router-id; | type rt-types:router-id; | |||
| description | description | |||
| "Neighbor router ID."; | "Neighbor Router ID."; | |||
| } | } | |||
| uses neighbor-state; | uses neighbor-state; | |||
| } // list of OSPF neighbors | } | |||
| } | } | |||
| container database { | container database { | |||
| config false; | config false; | |||
| description "Link scope LSA database."; | description "Link-scope Link State Database."; | |||
| list link-scope-lsa-type { | list link-scope-lsa-type { | |||
| key "lsa-type"; | key "lsa-type"; | |||
| description | description | |||
| "List OSPF link scope LSA databases."; | "List OSPF link-scope LSAs."; | |||
| leaf lsa-type { | leaf lsa-type { | |||
| type uint16; | type uint16; | |||
| description "OSPF link scope LSA type."; | description "OSPF link-scope LSA type."; | |||
| } | } | |||
| container link-scope-lsas { | container link-scope-lsas { | |||
| description | description | |||
| "All link scope LSAs of this LSA type."; | "All link-scope LSAs of this LSA type."; | |||
| list link-scope-lsa { | list link-scope-lsa { | |||
| key "lsa-id adv-router"; | key "lsa-id adv-router"; | |||
| description "List of OSPF link scope LSAs"; | description "List of OSPF link-scope LSAs"; | |||
| uses lsa-key; | uses lsa-key; | |||
| uses lsa { | uses lsa { | |||
| refine "version/ospfv2/ospfv2" { | refine "version/ospfv2/ospfv2" { | |||
| must "../../../../../../../../../../../" | must "derived-from-or-self( " | |||
| + "rt:type = 'ospf:ospfv2'" { | + "../../../../../../../../../../" | |||
| + "rt:type, 'ospfv2')" { | ||||
| description "OSPFv2 LSA."; | description "OSPFv2 LSA."; | |||
| } | } | |||
| } | } | |||
| refine "version/ospfv3/ospfv3" { | refine "version/ospfv3/ospfv3" { | |||
| must "../../../../../../../../../../../" | must "derived-from-or-self( " | |||
| + "rt:type = 'ospf:ospfv3'" { | + "../../../../../../../../../../" | |||
| + "rt:type, 'ospfv3')" { | ||||
| description "OSPFv3 LSA."; | description "OSPFv3 LSA."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } // list link-scope-lsas | } | |||
| } | } | |||
| } // interface-common-state | } | |||
| grouping interface-state { | grouping interface-state { | |||
| description | description | |||
| "OSPF interface operational state."; | "OSPF interface operational state."; | |||
| reference "RFC2328 Section 9"; | reference "RFC2328 Section 9: OSPF Version2 - | |||
| The Interface Data Structure"; | ||||
| uses interface-common-state; | uses interface-common-state; | |||
| } | } | |||
| grouping virtual-link-config { | grouping virtual-link-config { | |||
| description | description | |||
| "OSPF virtual link configuration state."; | "OSPF virtual link configuration state."; | |||
| uses interface-common-config; | uses interface-common-config; | |||
| } | } | |||
| grouping virtual-link-state { | grouping virtual-link-state { | |||
| description | description | |||
| "OSPF virtual link operational state."; | "OSPF virtual link operational state."; | |||
| leaf cost { | leaf cost { | |||
| type uint16 { | type ospf-link-metric; | |||
| range "1..65535"; | ||||
| } | ||||
| config false; | config false; | |||
| description | description | |||
| "Virtual link interface cost."; | "Virtual link interface cost."; | |||
| } | } | |||
| uses interface-common-state; | uses interface-common-state; | |||
| } | } | |||
| grouping sham-link-config { | grouping sham-link-config { | |||
| description | description | |||
| "OSPF sham link configuration state."; | "OSPF sham link configuration state."; | |||
| uses interface-common-config; | uses interface-common-config; | |||
| uses interface-physical-link-config; | uses interface-physical-link-config; | |||
| } | } | |||
| grouping sham-link-state { | grouping sham-link-state { | |||
| description | description | |||
| "OSPF sham link operational state."; | "OSPF sham link operational state."; | |||
| /* All container/leaf should be config false. */ | ||||
| uses interface-common-state; | uses interface-common-state; | |||
| } | } | |||
| grouping af-area-config { | grouping address-family-area-config { | |||
| description | description | |||
| "OSPF address-family specific area config state."; | "OSPF address-family specific area config state."; | |||
| container ranges { | container ranges { | |||
| description "Container for summary ranges"; | description "Container for summary ranges"; | |||
| list range { | list range { | |||
| key "prefix"; | key "prefix"; | |||
| description | description | |||
| "Summarize routes matching address/mask | "Summarize routes matching address/mask - | |||
| (Area Border Routers (ABRs) only)"; | Applicable to Area Border Routers (ABRs) only."; | |||
| leaf prefix { | leaf prefix { | |||
| type inet:ip-prefix; | type inet:ip-prefix; | |||
| description | description | |||
| "IPv4 or IPv6 prefix"; | "IPv4 or IPv6 prefix"; | |||
| } | } | |||
| leaf advertise { | leaf advertise { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Advertise or hide."; | "Advertise or hide."; | |||
| } | } | |||
| leaf cost { | leaf cost { | |||
| type uint24 { | type ospf-metric; | |||
| range "0..16777214"; | ||||
| } | ||||
| description | description | |||
| "Advertised cost of summary route."; | "Advertised cost of summary route."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping area-common-config { | grouping area-common-config { | |||
| description | description | |||
| "OSPF area common configuration state."; | "OSPF area common configuration state."; | |||
| leaf summary { | leaf summary { | |||
| when "../area-type = 'ospf:stub' or " | when "derived-from(../area-type,'stub-nssa-area')" { | |||
| + "../area-type = 'ospf:nssa'" { | ||||
| description | description | |||
| "Summary advertisement into the stub/NSSA area."; | "Summary advertisement into the stub/NSSA area."; | |||
| } | } | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable summary advertisement into the stub or | "Enable/Disable summary advertisement into the stub or | |||
| NSSA area."; | NSSA area."; | |||
| } | } | |||
| leaf default-cost { | leaf default-cost { | |||
| when "../area-type = 'ospf:stub' or " | when "derived-from(../area-type,'stub-nssa-area')" { | |||
| + "../area-type = 'ospf:nssa'" { | ||||
| description | description | |||
| "Cost for LSA default route advertised into the | "Cost for LSA default route advertised into the | |||
| stub or NSSA area."; | stub or NSSA area."; | |||
| } | } | |||
| type uint32 { | type ospf-metric; | |||
| range "1..16777215"; | ||||
| } | ||||
| description | description | |||
| "Set the summary default route cost for a | "Set the summary default route cost for a | |||
| stub or NSSA area."; | stub or NSSA area."; | |||
| } | } | |||
| } | } | |||
| grouping area-config { | grouping area-config { | |||
| description | description | |||
| "OSPF area configuration state."; | "OSPF area configuration state."; | |||
| leaf area-type { | leaf area-type { | |||
| type identityref { | type identityref { | |||
| base area-type; | base area-type; | |||
| } | } | |||
| default normal; | default normal-area; | |||
| description | description | |||
| "Area type."; | "Area type."; | |||
| } | } | |||
| uses area-common-config; | uses area-common-config; | |||
| uses address-family-area-config; | ||||
| uses af-area-config { | ||||
| when "../../../operation-mode = " | ||||
| + "'ospf:ships-in-the-night'" { | ||||
| description | ||||
| "Ships in the night configuration."; | ||||
| } | ||||
| } | ||||
| } | } | |||
| grouping area-state { | grouping area-state { | |||
| description | description | |||
| "OSPF area operational state."; | "OSPF area operational state."; | |||
| container statistics { | container statistics { | |||
| config false; | config false; | |||
| description "Per area statistics"; | description "Per-area statistics"; | |||
| uses area-stat; | uses area-stat; | |||
| } | } | |||
| container database { | container database { | |||
| config false; | config false; | |||
| description "Area scope LSA database."; | description "Area-scope Link State Database."; | |||
| list area-scope-lsa-type { | list area-scope-lsa-type { | |||
| key "lsa-type"; | key "lsa-type"; | |||
| description "List OSPF area scope LSA databases."; | description "List OSPF area-scope LSAs."; | |||
| leaf lsa-type { | leaf lsa-type { | |||
| type uint16; | type uint16; | |||
| description "OSPF area scope LSA type."; | description "OSPF area-scope LSA type."; | |||
| } | } | |||
| container area-scope-lsas { | container area-scope-lsas { | |||
| description | description | |||
| "All area scope LSAs of an area scope | "All area-scope LSAs of an area-scope | |||
| LSA type."; | LSA type."; | |||
| list area-scope-lsa { | list area-scope-lsa { | |||
| key "lsa-id adv-router"; | key "lsa-id adv-router"; | |||
| description "List of OSPF area scope LSAs"; | description "List of OSPF area-scope LSAs"; | |||
| uses lsa-key; | uses lsa-key; | |||
| uses lsa { | uses lsa { | |||
| refine "version/ospfv2/ospfv2" { | refine "version/ospfv2/ospfv2" { | |||
| must "../../../../../../../../../" | must "derived-from-or-self( " | |||
| + "rt:type = 'ospf:ospfv2'" { | + "../../../../../../../../" | |||
| + "rt:type, 'ospfv2')" { | ||||
| description "OSPFv2 LSA."; | description "OSPFv2 LSA."; | |||
| } | } | |||
| } | } | |||
| refine "version/ospfv3/ospfv3" { | refine "version/ospfv3/ospfv3" { | |||
| must "../../../../../../../../../" | must "derived-from-or-self( " | |||
| + "rt:type = 'ospf:ospfv3'" { | + "../../../../../../../../" | |||
| + "rt:type, 'ospfv3')" { | ||||
| description "OSPFv3 LSA."; | description "OSPFv3 LSA."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } // list area-scope-lsas | } | |||
| } | } | |||
| } | } | |||
| grouping local-rib { | grouping local-rib { | |||
| description "Local-rib grouping."; | description "Local-rib - RIB for Routes computed by the local | |||
| OSPF routing instance."; | ||||
| container local-rib { | container local-rib { | |||
| config false; | config false; | |||
| description "Local-rib."; | description "Local-rib."; | |||
| list route { | list route { | |||
| key "prefix"; | key "prefix"; | |||
| description "Routes"; | description "Routes"; | |||
| leaf prefix { | leaf prefix { | |||
| type inet:ip-prefix; | type inet:ip-prefix; | |||
| description "Destination prefix."; | description "Destination prefix."; | |||
| } | } | |||
| container next-hops { | container next-hops { | |||
| description "All next hops for the route."; | description "Next hops for the route."; | |||
| list next-hop { | list next-hop { | |||
| key "next-hop"; | key "next-hop"; | |||
| description "List of next hop for the route"; | description "List of next hops for the route"; | |||
| leaf outgoing-interface { | leaf outgoing-interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "Name of the outgoing interface."; | "Name of the outgoing interface."; | |||
| } | } | |||
| leaf next-hop { | leaf next-hop { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description "Nexthop address."; | description "Next hop address."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| leaf metric { | leaf metric { | |||
| type uint32; | type uint32; | |||
| description "Metric for this route."; | description "Metric for this route."; | |||
| } | } | |||
| leaf route-type { | leaf route-type { | |||
| type route-type; | type route-type; | |||
| description "Route type for this route."; | description "Route type for this route."; | |||
| skipping to change at page 73, line 4 ¶ | skipping to change at page 94, line 33 ¶ | |||
| leaf route-type { | leaf route-type { | |||
| type route-type; | type route-type; | |||
| description "Route type for this route."; | description "Route type for this route."; | |||
| } | } | |||
| leaf route-tag { | leaf route-tag { | |||
| type uint32; | type uint32; | |||
| description "Route tag for this route."; | description "Route tag for this route."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping ietf-spf-delay-config { | grouping ietf-spf-delay { | |||
| leaf initial-delay { | leaf initial-delay { | |||
| type uint16; | type uint32; | |||
| units msec; | units milliseconds; | |||
| description | description | |||
| "Delay used while in QUIET state."; | "Delay used while in QUIET state (milliseconds)."; | |||
| } | } | |||
| leaf short-delay { | leaf short-delay { | |||
| type uint16; | type uint32; | |||
| units msec; | units milliseconds; | |||
| description | description | |||
| "Delay used while in SHORT_WAIT state."; | "Delay used while in SHORT_WAIT state (milliseconds)."; | |||
| } | } | |||
| leaf long-delay { | leaf long-delay { | |||
| type uint16; | type uint32; | |||
| units msec; | units milliseconds; | |||
| description | description | |||
| "Delay used while in LONG_WAIT state."; | "Delay used while in LONG_WAIT state (milliseconds)."; | |||
| } | } | |||
| leaf hold-down { | leaf hold-down { | |||
| type uint16; | type uint32; | |||
| units msec; | units milliseconds; | |||
| description | description | |||
| "Timer used to consider an IGP stability period."; | "Timer used to consider an IGP stability period | |||
| (milliseconds)."; | ||||
| } | } | |||
| leaf time-to-learn { | leaf time-to-learn { | |||
| type uint16; | type uint32; | |||
| units msec; | units milliseconds; | |||
| description | description | |||
| "Duration used to learn all the IGP events | "Duration used to learn all the IGP events | |||
| related to a single component failure."; | related to a single component failure (milliseconds)."; | |||
| } | } | |||
| description | ||||
| "Grouping for IETF SPF delay configuration."; | ||||
| } | ||||
| grouping ietf-spf-delay-state { | ||||
| leaf current-state { | leaf current-state { | |||
| type enumeration { | type enumeration { | |||
| enum "QUIET" { | enum "quiet" { | |||
| description "QUIET state"; | description "QUIET state"; | |||
| } | } | |||
| enum "SHORT_WAIT" { | enum "short-wait" { | |||
| description "SHORT_WAIT state"; | description "SHORT_WAIT state"; | |||
| } | } | |||
| enum "LONG_WAIT" { | enum "long-wait" { | |||
| description "LONG_WAIT state"; | description "LONG_WAIT state"; | |||
| } | } | |||
| } | } | |||
| config false; | config false; | |||
| description | description | |||
| "Current state of the algorithm."; | "Current SPF back-off algorithm state."; | |||
| } | } | |||
| leaf remaining-time-to-learn { | leaf remaining-time-to-learn { | |||
| type uint16; | type rt-types:timer-value-milliseconds; | |||
| units "seconds"; | ||||
| config false; | config false; | |||
| description | description | |||
| "Remaining time until time-to-learn timer fires."; | "Remaining time until time-to-learn timer fires."; | |||
| } | } | |||
| leaf remaining-hold-down { | leaf remaining-hold-down { | |||
| type uint16; | type rt-types:timer-value-milliseconds; | |||
| units "seconds"; | ||||
| config false; | config false; | |||
| description | description | |||
| "Remaining time until hold-down timer fires."; | "Remaining time until hold-down timer fires."; | |||
| } | } | |||
| leaf last-event-received { | leaf last-event-received { | |||
| type yang:timestamp; | type yang:timestamp; | |||
| config false; | config false; | |||
| description | description | |||
| "Time of last IGP event received"; | "Time of last SPF triggering event."; | |||
| } | } | |||
| leaf next-spf-time { | leaf next-spf-time { | |||
| type yang:timestamp; | type yang:timestamp; | |||
| config false; | config false; | |||
| description | description | |||
| "Time when next SPF has been scheduled."; | "Time when next SPF has been scheduled."; | |||
| } | } | |||
| leaf last-spf-time { | leaf last-spf-time { | |||
| type yang:timestamp; | type yang:timestamp; | |||
| config false; | config false; | |||
| description | description | |||
| "Time of last SPF computation."; | "Time of last SPF computation."; | |||
| } | } | |||
| description | description | |||
| "Grouping for IETF SPF delay operational states."; | "Grouping for IETF SPF delay configuration and state"; | |||
| } | } | |||
| grouping node-tag-config { | grouping node-tag-config { | |||
| description | description | |||
| "OSPF node tag config state."; | "OSPF node tag config state."; | |||
| container node-tags { | container node-tags { | |||
| if-feature node-tag; | if-feature node-tag; | |||
| list node-tag { | list node-tag { | |||
| key tag; | key tag; | |||
| leaf tag { | leaf tag { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Node tag value."; | "Node tag value."; | |||
| } | } | |||
| description | description | |||
| "List of tags."; | "List of tags."; | |||
| } | } | |||
| description | description | |||
| "Container for node tags."; | "Container for node admin tags."; | |||
| } | } | |||
| } | } | |||
| grouping instance-config { | grouping instance-config { | |||
| description | description | |||
| "OSPF instance config state."; | "OSPF instance config state."; | |||
| leaf enable { | ||||
| type boolean; | ||||
| default true; | ||||
| description | ||||
| "Enable/Disable the protocol."; | ||||
| } | ||||
| leaf explicit-router-id { | leaf explicit-router-id { | |||
| if-feature explicit-router-id; | if-feature explicit-router-id; | |||
| type rt-types:router-id; | type rt-types:router-id; | |||
| description | description | |||
| "Defined in RFC 2328. A 32-bit number | "Defined in RFC 2328. A 32-bit number | |||
| that uniquely identifies the router."; | that uniquely identifies the router."; | |||
| } | } | |||
| container preference { | container preference { | |||
| description "Route preference config state."; | description | |||
| "Route preference configuration. In many | ||||
| implementations, preference is referred to as | ||||
| administrative distance."; | ||||
| reference | ||||
| "RFC 8349: A YANG Data Model for Routing Management | ||||
| (NMDA Version)"; | ||||
| choice scope { | choice scope { | |||
| description | description | |||
| "Options for expressing preference | "Options for expressing preference | |||
| as single or multiple values."; | as single or multiple values."; | |||
| case single-value { | case single-value { | |||
| leaf all { | leaf all { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Preference for intra-area, inter-area and | "Preference for intra-area, inter-area, and | |||
| external routes."; | external routes."; | |||
| } | } | |||
| } | } | |||
| case multi-values { | case multi-values { | |||
| choice granularity { | choice granularity { | |||
| description | description | |||
| "Options for expressing preference | "Options for expressing preference | |||
| for intra-area and inter-area routes."; | for intra-area and inter-area routes."; | |||
| case detail { | case detail { | |||
| leaf intra-area { | leaf intra-area { | |||
| skipping to change at page 76, line 26 ¶ | skipping to change at page 98, line 13 ¶ | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Preference for both intra-area and | "Preference for both intra-area and | |||
| inter-area routes."; | inter-area routes."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| leaf external { | leaf external { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Preference for external routes."; | "Preference for AS external routes."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container nsr { | container nsr { | |||
| if-feature nsr; | if-feature nsr; | |||
| description | description | |||
| "Non-Stop Routing (NSR) config state."; | "Non-Stop Routing (NSR) config state."; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable NSR."; | "Enable/Disable NSR."; | |||
| } | } | |||
| } | } | |||
| container graceful-restart { | container graceful-restart { | |||
| if-feature graceful-restart; | if-feature graceful-restart; | |||
| description | description | |||
| "Graceful restart config state."; | "Graceful restart config state."; | |||
| reference "RFC 3623: OSPF Graceful Restart | ||||
| RFC 5187: OSPFv3 Graceful Restart"; | ||||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable graceful restart as defined in RFC 3623 | "Enable/Disable graceful restart as defined in RFC 3623 | |||
| for OSPFv2 and RFC 5187 for OSPFv3."; | for OSPFv2 and RFC 5187 for OSPFv3."; | |||
| } | } | |||
| leaf helper-enable { | leaf helper-enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable graceful restart helper support for restarting | "Enable graceful restart helper support for restarting | |||
| routers (RFC 3623 Section 3)."; | routers (RFC 3623 Section 3)."; | |||
| } | } | |||
| leaf restart-interval { | leaf restart-interval { | |||
| type uint16 { | type uint16 { | |||
| range "1..1800"; // Range is defined in RFC 3623. | range "1..1800"; | |||
| } | } | |||
| units seconds; | units seconds; | |||
| default "120"; // Default is defined in RFC 3623. | default "120"; | |||
| description | description | |||
| "Interval in seconds to attempt graceful restart prior | "Interval to attempt graceful restart prior | |||
| to failing (RFC 3623 Section B.1)"; | to failing (RFC 3623 Section B.1) (seconds)"; | |||
| } | } | |||
| leaf helper-strict-lsa-checking { | leaf helper-strict-lsa-checking { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Terminate graceful restart when an LSA topology change | "Terminate graceful restart when an LSA topology change | |||
| is detected (RFC 3623 Section B.2)."; | is detected (RFC 3623 Section B.2)."; | |||
| } | } | |||
| } | } | |||
| leaf enable { | ||||
| if-feature admin-control; | ||||
| type boolean; | ||||
| default true; | ||||
| description | ||||
| "Enable/Disable the protocol."; | ||||
| } | ||||
| container auto-cost { | container auto-cost { | |||
| if-feature auto-cost; | if-feature auto-cost; | |||
| description | description | |||
| "Interface Auto-cost configuration state."; | "Interface Auto-cost configuration state."; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable interface auto-cost."; | "Enable/Disable interface auto-cost."; | |||
| } | } | |||
| leaf reference-bandwidth { | leaf reference-bandwidth { | |||
| skipping to change at page 78, line 4 ¶ | skipping to change at page 99, line 33 ¶ | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable interface auto-cost."; | "Enable/Disable interface auto-cost."; | |||
| } | } | |||
| leaf reference-bandwidth { | leaf reference-bandwidth { | |||
| when "../enable = 'true'" { | when "../enable = 'true'" { | |||
| description "Only when auto cost is enabled"; | description "Only when auto cost is enabled"; | |||
| } | } | |||
| type uint32 { | type uint32 { | |||
| range "1..4294967"; | range "1..4294967"; | |||
| } | } | |||
| units Mbits; | units Mbits; | |||
| description | description | |||
| "Configure reference bandwidth used to automatically | "Configure reference bandwidth used to automatically | |||
| determine interface cost (Mbits). The cost is the | determine interface cost (Mbits). The cost is the | |||
| reference bandwidth divided by the interface speed | reference bandwidth divided by the interface speed | |||
| with 1 being the minimum cost."; | with 1 being the minimum cost."; | |||
| } | } | |||
| } | } | |||
| container spf-control { | container spf-control { | |||
| leaf paths { | leaf paths { | |||
| if-feature max-ecmp; | if-feature max-ecmp; | |||
| type uint16 { | type uint16 { | |||
| range "1..32"; | range "1..65535"; | |||
| } | } | |||
| description | description | |||
| "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; | "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; | |||
| } | } | |||
| container ietf-spf-delay { | container ietf-spf-delay { | |||
| if-feature ietf-spf-delay; | if-feature ietf-spf-delay; | |||
| uses ietf-spf-delay-config; | uses ietf-spf-delay; | |||
| description | description | |||
| "IETF spf delay algorithm configuration."; | "IETF SPF delay algorithm configuration."; | |||
| } | } | |||
| description "SPF calculation control."; | description "SPF calculation control."; | |||
| } | } | |||
| container database-control { | container database-control { | |||
| leaf max-lsa { | leaf max-lsa { | |||
| if-feature max-lsa; | if-feature max-lsa; | |||
| type uint32 { | type uint32 { | |||
| range "1..4294967294"; | range "1..4294967294"; | |||
| } | } | |||
| skipping to change at page 79, line 4 ¶ | skipping to change at page 100, line 33 ¶ | |||
| } | } | |||
| container stub-router { | container stub-router { | |||
| if-feature stub-router; | if-feature stub-router; | |||
| description "Set maximum metric configuration"; | description "Set maximum metric configuration"; | |||
| choice trigger { | choice trigger { | |||
| description | description | |||
| "Specific triggers which will enable stub | "Specific triggers which will enable stub | |||
| router state."; | router state."; | |||
| container always { | container always { | |||
| presence | presence | |||
| "Enables unconditional stub router support"; | "Enables unconditional stub router support"; | |||
| description | description | |||
| "Unconditional stub router state (advertise | "Unconditional stub router state (advertise | |||
| transit links with max metric"; | transit links with MaxLinkMetric"; | |||
| reference "RFC 6987: OSPF Stub Router | ||||
| Advertisement"; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| container mpls { | container mpls { | |||
| description | description | |||
| "OSPF MPLS config state."; | "OSPF MPLS config state."; | |||
| container te-rid { | container te-rid { | |||
| if-feature te-rid; | if-feature te-rid; | |||
| description | description | |||
| "Stable OSPF Router IP Address used for Traffic | "Stable OSPF Router IP Address used for Traffic | |||
| Engineering (TE)"; | Engineering (TE)"; | |||
| leaf ipv4-router-id { | leaf ipv4-router-id { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "Explicitly configure the TE IPv4 router ID."; | "Explicitly configure the TE IPv4 Router ID."; | |||
| } | } | |||
| leaf ipv6-router-id { | leaf ipv6-router-id { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "Explicitly configure the TE IPv6 router ID."; | "Explicitly configure the TE IPv6 Router ID."; | |||
| } | } | |||
| } | } | |||
| container ldp { | container ldp { | |||
| description | description | |||
| "OSPF MPLS LDP config state."; | "OSPF MPLS LDP config state."; | |||
| leaf igp-sync { | leaf igp-sync { | |||
| if-feature ldp-igp-sync; | if-feature ldp-igp-sync; | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable LDP IGP synchronization."; | "Enable LDP IGP synchronization."; | |||
| skipping to change at page 80, line 17 ¶ | skipping to change at page 101, line 47 ¶ | |||
| config false; | config false; | |||
| description | description | |||
| "Defined in RFC 2328. A 32-bit number | "Defined in RFC 2328. A 32-bit number | |||
| that uniquely identifies the router."; | that uniquely identifies the router."; | |||
| } | } | |||
| uses local-rib; | uses local-rib; | |||
| container statistics { | container statistics { | |||
| config false; | config false; | |||
| description "Per instance statistics"; | description "Per-instance statistics"; | |||
| uses instance-stat; | uses instance-stat; | |||
| } | } | |||
| container ietf-spf-delay { | ||||
| if-feature ietf-spf-delay; | ||||
| config false; | ||||
| uses ietf-spf-delay-config; | ||||
| uses ietf-spf-delay-state; | ||||
| description | ||||
| "IETF SPF delay operational states."; | ||||
| } | ||||
| container database { | container database { | |||
| config false; | config false; | |||
| description "AS scope LSA database."; | description "AS-scope Link State Database."; | |||
| list as-scope-lsa-type { | list as-scope-lsa-type { | |||
| key "lsa-type"; | key "lsa-type"; | |||
| description "List OSPF AS scope LSA databases."; | description "List OSPF AS-scope LSAs."; | |||
| leaf lsa-type { | leaf lsa-type { | |||
| type uint16; | type uint16; | |||
| description "OSPF AS scope LSA type."; | description "OSPF AS scope LSA type."; | |||
| } | } | |||
| container as-scope-lsas { | container as-scope-lsas { | |||
| description "All AS scope of LSA of this LSA type."; | description "All AS-scope of LSA of this LSA type."; | |||
| list as-scope-lsa { | list as-scope-lsa { | |||
| key "lsa-id adv-router"; | key "lsa-id adv-router"; | |||
| description "List of OSPF area scope LSAs"; | description "List of OSPF AS-scope LSAs"; | |||
| uses lsa-key; | uses lsa-key; | |||
| uses lsa { | uses lsa { | |||
| refine "version/ospfv2/ospfv2" { | refine "version/ospfv2/ospfv2" { | |||
| must "../../../../../../../rt:type = " | must "derived-from-or-self( " | |||
| + "'ospf:ospfv2'" { | + "../../../../../../" | |||
| + "rt:type, 'ospfv2')" { | ||||
| description "OSPFv2 LSA."; | description "OSPFv2 LSA."; | |||
| } | } | |||
| } | } | |||
| refine "version/ospfv3/ospfv3" { | refine "version/ospfv3/ospfv3" { | |||
| must "../../../../../../../rt:type = " | must "derived-from-or-self( " | |||
| + "'ospf:ospfv3'" { | + "../../../../../../" | |||
| + "rt:type, 'ospfv3')" { | ||||
| description "OSPFv3 LSA."; | description "OSPFv3 LSA."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } // list as-scope-lsas | } | |||
| } | } | |||
| uses spf-log; | uses spf-log; | |||
| uses lsa-log; | uses lsa-log; | |||
| } | } | |||
| grouping ospf-config { | ||||
| description | ||||
| "OSPF top configuration state."; | ||||
| leaf operation-mode { | ||||
| type identityref { | ||||
| base operation-mode; | ||||
| } | ||||
| default ospf:ships-in-the-night; | ||||
| description | ||||
| "OSPF operation mode."; | ||||
| } | ||||
| } | ||||
| grouping ospf-state { | ||||
| /* All leaf/container must be config false. */ | ||||
| description | ||||
| "OSPF top operational state."; | ||||
| } | ||||
| grouping multi-topology-area-common-config { | grouping multi-topology-area-common-config { | |||
| description | description | |||
| "OSPF multi-topology area common configuration state."; | "OSPF multi-topology area common configuration state."; | |||
| leaf summary { | leaf summary { | |||
| when "../../../../../areas/area[area-id=current()/../area-id]/" | when "derived-from(../../../area-type, 'stub-nssa-area')" { | |||
| + "area-type = 'ospf:stub' or " | ||||
| + "../../../../../areas/area[area-id=current()/../area-id]/" | ||||
| + "area-type = 'ospf:nssa'" { | ||||
| description | description | |||
| "Summary advertisement into the stub/NSSA area."; | "Summary advertisement into the stub/NSSA area."; | |||
| } | } | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable summary advertisement into the | "Enable/Disable summary advertisement into the | |||
| topology in the stub or NSSA area."; | topology in the stub or NSSA area."; | |||
| } | } | |||
| leaf default-cost { | leaf default-cost { | |||
| when "../../../../../areas/area[area-id=current()/../area-id]/" | when "derived-from(../../../area-type, 'stub-nssa-area')" { | |||
| + "area-type = 'ospf:stub' or " | ||||
| + "../../../../../areas/area[area-id=current()/../area-id]/" | ||||
| + "area-type = 'ospf:nssa'" { | ||||
| description | description | |||
| "Cost for LSA default route advertised into the | "Cost for LSA default route advertised into the | |||
| topology into the stub or NSSA area."; | topology into the stub or NSSA area."; | |||
| } | } | |||
| type uint32 { | type ospf-metric; | |||
| range "1..16777215"; | ||||
| } | ||||
| description | description | |||
| "Set the summary default route cost for a | "Set the summary default route cost for a | |||
| stub or NSSA area."; | stub or NSSA area."; | |||
| } | } | |||
| } | } | |||
| grouping multi-topology-area-config { | grouping multi-topology-area-config { | |||
| description | description | |||
| "OSPF multi-topology area configuration state."; | "OSPF multi-topology area configuration state."; | |||
| uses multi-topology-area-common-config; | uses multi-topology-area-common-config; | |||
| uses address-family-area-config; | ||||
| uses af-area-config { | ||||
| when "../../../../../operation-mode = " | ||||
| + "'ospf:ships-in-the-night'" { | ||||
| description | ||||
| "Ships in the night configuration."; | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping multi-topology-area-state { | ||||
| /* All leaf/container must be config false. */ | ||||
| description | ||||
| "OSPF multi-topology area operational state."; | ||||
| } | ||||
| grouping multi-topology-config { | ||||
| description | ||||
| "OSPF multi-topology configuration state."; | ||||
| } | } | |||
| grouping multi-topology-state { | grouping multi-topology-state { | |||
| /* All leaf/container must be config false. */ | ||||
| description | description | |||
| "OSPF multi-topology operational state."; | "OSPF multi-topology operational state."; | |||
| uses local-rib; | uses local-rib; | |||
| } | } | |||
| grouping multi-topology-interface-config { | grouping multi-topology-interface-config { | |||
| description | description | |||
| "OSPF multi-topology configuration state."; | "OSPF multi-topology configuration state."; | |||
| leaf cost { | leaf cost { | |||
| type uint32; | type ospf-link-metric; | |||
| description | description | |||
| "Interface cost for this topology."; | "Interface cost for this topology."; | |||
| } | } | |||
| } | } | |||
| grouping multi-topology-interface-state { | ||||
| /* All leaf/container must be config false. */ | ||||
| description | ||||
| "OSPF multi-topology operational state."; | ||||
| } | ||||
| grouping ospfv3-interface-config { | grouping ospfv3-interface-config { | |||
| description | description | |||
| "OSPFv3 interface specific configuration state."; | "OSPFv3 interface specific configuration state."; | |||
| leaf instance-id { | leaf instance-id { | |||
| type uint8 { | type uint8 { | |||
| range "0 .. 31"; | range "0 .. 31"; | |||
| } | } | |||
| description | description | |||
| "OSPFv3 instance ID."; | "OSPFv3 instance ID."; | |||
| skipping to change at page 84, line 4 ¶ | skipping to change at page 104, line 23 ¶ | |||
| description | description | |||
| "OSPFv3 interface specific operational state."; | "OSPFv3 interface specific operational state."; | |||
| leaf interface-id { | leaf interface-id { | |||
| type uint16; | type uint16; | |||
| config false; | config false; | |||
| description | description | |||
| "OSPFv3 interface ID."; | "OSPFv3 interface ID."; | |||
| } | } | |||
| } | } | |||
| grouping lsa-identifiers { | grouping lsa-identifiers { | |||
| description | description | |||
| "The parameters that uniquely identify an LSA."; | "The parameters that uniquely identify an LSA."; | |||
| leaf area-id { | leaf area-id { | |||
| type area-id-type; | type area-id-type; | |||
| description | description | |||
| "Area ID"; | "Area ID"; | |||
| } | } | |||
| leaf link-id { | ||||
| type union { | ||||
| type inet:ipv4-address; | ||||
| type yang:dotted-quad; | ||||
| } | ||||
| description "Link ID."; | ||||
| } | ||||
| leaf type { | leaf type { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "LSA type."; | "LSA type."; | |||
| } | } | |||
| leaf lsa-id { | leaf lsa-id { | |||
| type yang:dotted-quad; | type union { | |||
| description "LSA ID."; | type inet:ipv4-address; | |||
| type yang:dotted-quad; | ||||
| } | ||||
| description "Link-State ID."; | ||||
| } | } | |||
| leaf adv-router { | leaf adv-router { | |||
| type yang:dotted-quad; | type rt-types:router-id; | |||
| description | description | |||
| "LSA advertising router."; | "LSA advertising router."; | |||
| } | } | |||
| leaf seq-num { | leaf seq-num { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "LSA sequence number."; | "LSA sequence number."; | |||
| } | } | |||
| } | } | |||
| grouping spf-log { | grouping spf-log { | |||
| description | description | |||
| "Grouping for SPF log."; | "Grouping for SPF log."; | |||
| container spf-log { | container spf-log { | |||
| config false; | config false; | |||
| description | description | |||
| "This container lists the SPF log."; | "This container lists the SPF log."; | |||
| list event { | list event { | |||
| key id; | key id; | |||
| description | description | |||
| "List of SPF logs. | "List of SPF log entries represented | |||
| It is used as a wrapping buffer."; | as a wrapping buffer in chronological | |||
| order with the oldest entry returned | ||||
| first."; | ||||
| leaf id { | leaf id { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "This leaf defines the event identifier. | "Event identifier - Purely internal value."; | |||
| This is a purely internal value."; | ||||
| } | } | |||
| leaf spf-type { | leaf spf-type { | |||
| type enumeration { | type enumeration { | |||
| enum full { | enum full { | |||
| description | description | |||
| "Computation done is a Full SPF."; | "SPF computation was a Full SPF."; | |||
| } | } | |||
| enum intra { | enum intra { | |||
| description | description | |||
| "Computation done is only for intra-area routes."; | "SPF computation was only for intra-area routes."; | |||
| } | } | |||
| enum inter { | enum inter { | |||
| description | description | |||
| "Computation done is only for inter-area | "SPF computation was only for inter-area | |||
| summary routes."; | summary routes."; | |||
| } | } | |||
| enum external { | enum external { | |||
| description | description | |||
| "Computation done is only for AS external routes."; | "SPF computation was only for AS external routes."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "The SPF computation type."; | "The SPF computation type for the SPF log entry."; | |||
| } | } | |||
| leaf schedule-timestamp { | leaf schedule-timestamp { | |||
| type yang:timestamp; | type yang:timestamp; | |||
| description | description | |||
| "This leaf describes the timestamp | "This is the timestamp when the computation was | |||
| when the computation was scheduled."; | scheduled."; | |||
| } | } | |||
| leaf start-timestamp { | leaf start-timestamp { | |||
| type yang:timestamp; | type yang:timestamp; | |||
| description | description | |||
| "This leaf describes the timestamp | "This is the timestamp when the computation was | |||
| when the computation was started."; | started."; | |||
| } | } | |||
| leaf end-timestamp { | leaf end-timestamp { | |||
| type yang:timestamp; | type yang:timestamp; | |||
| description | description | |||
| "This leaf describes the timestamp | "This the timestamp when the computation was | |||
| when the computation was completed."; | completed."; | |||
| } | } | |||
| list trigger-lsa { | list trigger-lsa { | |||
| description | description | |||
| "The list of LSAs that triggered the computation."; | "The list of LSAs that triggered the computation."; | |||
| uses lsa-identifiers; | uses lsa-identifiers; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping lsa-log { | grouping lsa-log { | |||
| description | description | |||
| "Grouping for LSA log."; | "Grouping for the LSA log."; | |||
| container lsa-log { | container lsa-log { | |||
| config false; | config false; | |||
| description | description | |||
| "This conatiner lists the LSA log. | "This container lists the LSA log. | |||
| Local LSA modifications are also included | Local LSA modifications are also included | |||
| in the list."; | in the list."; | |||
| list event { | list event { | |||
| key id; | key id; | |||
| description | description | |||
| "List of LSA logs. | "List of LSA log entries represented | |||
| It is used as a wrapping buffer."; | as a wrapping buffer in chronological order | |||
| with the oldest entries returned first."; | ||||
| leaf id { | leaf id { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "This leaf defines the event identifier. | "Event identifier - purely internal value."; | |||
| This is a purely internal value."; | ||||
| } | } | |||
| container lsa { | container lsa { | |||
| description | description | |||
| "This container describes the logged LSA."; | "This container describes the logged LSA."; | |||
| uses lsa-identifiers; | uses lsa-identifiers; | |||
| } | } | |||
| leaf received-timestamp { | leaf received-timestamp { | |||
| type yang:timestamp; | type yang:timestamp; | |||
| description | description | |||
| "This leaf describes the timestamp | "This is the timestamp when the LSA was received. | |||
| when the LSA was received. In case of | In case of local LSA update, the timestamp refers | |||
| local LSA update, the timestamp refers | to the LSA origination time."; | |||
| to the local LSA update time."; | ||||
| } | } | |||
| leaf reason { | leaf reason { | |||
| type identityref { | type identityref { | |||
| base lsa-log-reason; | base lsa-log-reason; | |||
| } | } | |||
| description | description | |||
| "This leaf describes the reason | "This reason for the LSA log entry."; | |||
| that resulted in this LSA log."; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol" { | + "rt:control-plane-protocol" { | |||
| when "rt:type = 'ospf:ospfv2' or rt:type = 'ospf:ospfv3'" { | when "derived-from(rt:type, 'ospf')" { | |||
| description | description | |||
| "This augmentation is only valid for a routing protocol | "This augmentation is only valid for a routing protocol | |||
| instance of OSPF (type 'ospfv2' or 'ospfv3')."; | instance of OSPF (type 'ospfv2' or 'ospfv3')."; | |||
| } | } | |||
| description "OSPF augmentation."; | description "OSPF protocol ietf-routing module | |||
| control-plane-protocol augmentation."; | ||||
| container ospf { | container ospf { | |||
| description | description | |||
| "OSPF."; | "OSPF protocol Instance"; | |||
| uses ospf-config; | ||||
| uses ospf-state; | ||||
| list instance { | leaf address-family { | |||
| key "af"; | type iana-rt-types:address-family; | |||
| description | description | |||
| "An OSPF routing protocol instance."; | "Address-family of the instance."; | |||
| } | ||||
| leaf af { | ||||
| type iana-rt-types:address-family; | ||||
| description | ||||
| "Address-family of the instance."; | ||||
| } | ||||
| uses instance-config; | uses instance-config; | |||
| uses instance-state; | uses instance-state; | |||
| container areas { | container areas { | |||
| description "All areas."; | description "All areas."; | |||
| list area { | list area { | |||
| key "area-id"; | key "area-id"; | |||
| description | ||||
| "List of OSPF areas"; | ||||
| leaf area-id { | ||||
| type area-id-type; | ||||
| description | description | |||
| "List of OSPF areas"; | "Area ID"; | |||
| leaf area-id { | } | |||
| type area-id-type; | ||||
| description | ||||
| "Area ID."; | ||||
| } | ||||
| uses area-config; | uses area-config; | |||
| uses area-state; | uses area-state; | |||
| container virtual-links { | container virtual-links { | |||
| when "../area-id = '0.0.0.0' and " | when "derived-from-or-self(../area-type, 'normal-area') " | |||
| + "../area-type = 'ospf:normal'" { | + "and ../area-id = '0.0.0.0'" { | |||
| description | description | |||
| "Virtual links must be in backbone area."; | "Virtual links must be in backbone area."; | |||
| } | } | |||
| description "All virtual links."; | description "All virtual links."; | |||
| list virtual-link { | list virtual-link { | |||
| key "transit-area-id router-id"; | key "transit-area-id router-id"; | |||
| description | description | |||
| "OSPF virtual link"; | "OSPF virtual link"; | |||
| leaf transit-area-id { | leaf transit-area-id { | |||
| type leafref { | type leafref { | |||
| path "../../../../area/area-id"; | path "../../../../area/area-id"; | |||
| } | ||||
| must "../../../../area[area-id=current()]/" | ||||
| + "area-id != '0.0.0.0' and " | ||||
| + "../../../../area[area-id=current()]/" | ||||
| + "area-type = 'ospf:normal'" { | ||||
| error-message "Virtual link transit area must " | ||||
| + "be non-zero."; | ||||
| description | ||||
| "Virtual-link trasit area must be | ||||
| non-zero area."; | ||||
| } | ||||
| description | ||||
| "Virtual link tranist area ID."; | ||||
| } | } | |||
| leaf router-id { | must "derived-from-or-self(" | |||
| type rt-types:router-id; | + "../../../../area[area-id=current()]/area-type, " | |||
| + "'normal-area') and " | ||||
| + "../../../../area[area-id=current()]/area-id != " | ||||
| + "'0.0.0.0'" { | ||||
| error-message "Virtual link transit area must " | ||||
| + "be non-zero."; | ||||
| description | description | |||
| "Virtual Link remote endpoint router ID."; | "Virtual-link transit area must be | |||
| non-zero area."; | ||||
| } | } | |||
| description | ||||
| uses virtual-link-config; | "Virtual link transit area ID."; | |||
| uses virtual-link-state; | } | |||
| leaf router-id { | ||||
| type rt-types:router-id; | ||||
| description | ||||
| "Virtual Link remote endpoint Router ID."; | ||||
| } | } | |||
| uses virtual-link-config; | ||||
| uses virtual-link-state; | ||||
| } | } | |||
| container sham-links { | ||||
| if-feature pe-ce-protocol; | } | |||
| description "All sham links."; | container sham-links { | |||
| list sham-link { | if-feature pe-ce-protocol; | |||
| key "local-id remote-id"; | description "All sham links."; | |||
| list sham-link { | ||||
| key "local-id remote-id"; | ||||
| description | ||||
| "OSPF sham link"; | ||||
| leaf local-id { | ||||
| type inet:ip-address; | ||||
| description | description | |||
| "OSPF sham link"; | "Address of the local sham Link endpoint."; | |||
| leaf local-id { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Address of the local Sham Link endpoint."; | ||||
| } | ||||
| leaf remote-id { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Address of the remote Sham Link endpoint."; | ||||
| } | ||||
| uses sham-link-config; | ||||
| uses sham-link-state; | ||||
| } | } | |||
| leaf remote-id { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "Address of the remote sham Link endpoint."; | ||||
| } | ||||
| uses sham-link-config; | ||||
| uses sham-link-state; | ||||
| } | } | |||
| container interfaces { | } | |||
| description "All interfaces."; | container interfaces { | |||
| list interface { | description "All interfaces."; | |||
| key "name"; | list interface { | |||
| key "name"; | ||||
| description | ||||
| "List of OSPF interfaces."; | ||||
| leaf name { | ||||
| type if:interface-ref; | ||||
| description | description | |||
| "List of OSPF interfaces."; | "Interface name reference."; | |||
| leaf name { | } | |||
| type if:interface-ref; | uses interface-config; | |||
| description | uses interface-state; | |||
| "Interface name."; | ||||
| } | ||||
| uses interface-config; | ||||
| uses interface-state; | ||||
| } // list of interfaces | ||||
| } | } | |||
| } // list of areas | } | |||
| } | } | |||
| } // list of instance | } | |||
| } // container ospf | } | |||
| } | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/ospf:ospf/ospf:instance" { | + "rt:control-plane-protocol/ospf" { | |||
| when "../../rt:type = 'ospf:ospfv2' or | when "derived-from(../rt:type, 'ospf')" { | |||
| ../../rt:type = 'ospf:ospfv3'" { | ||||
| description | description | |||
| "This augmentation is only valid for OSPF | "This augmentation is only valid for OSPF | |||
| (type 'ospfv2' or 'ospfv3')."; | (type 'ospfv2' or 'ospfv3')."; | |||
| } | } | |||
| if-feature multi-topology; | if-feature multi-topology; | |||
| description | description | |||
| "OSPF multi-topology instance configuration | "OSPF multi-topology instance configuration | |||
| state augmentation."; | state augmentation."; | |||
| container topologies { | container topologies { | |||
| description "All topologies."; | description "All topologies."; | |||
| list topology { | list topology { | |||
| // Topology must be in the same routing-instance | ||||
| // and of same AF as the container. | ||||
| key "name"; | key "name"; | |||
| description "OSPF topology."; | description | |||
| "OSPF topology - The OSPF topology address-family | ||||
| must coincide with the routing-instance | ||||
| address-family."; | ||||
| leaf name { | leaf name { | |||
| type leafref { | type leafref { | |||
| path "../../../../../../../rt:ribs/rt:rib/rt:name"; | path "../../../../../../rt:ribs/rt:rib/rt:name"; | |||
| } | } | |||
| description "RIB"; | description "RIB name corresponding to the OSPF | |||
| topology."; | ||||
| } | } | |||
| uses multi-topology-config; | ||||
| uses multi-topology-state; | uses multi-topology-state; | |||
| } | ||||
| } | ||||
| } | ||||
| container areas { | augment "/rt:routing/rt:control-plane-protocols/" | |||
| description "All areas in the topology."; | + "rt:control-plane-protocol/ospf/" | |||
| list area { | + "areas/area" { | |||
| key "area-id"; | when "derived-from-or-self(../../../rt:type, " | |||
| description | + "'ospfv2')" { | |||
| "List of OSPF areas"; | description | |||
| leaf area-id { | "This augmentation is only valid for OSPFv2."; | |||
| type area-id-type; | } | |||
| description | if-feature multi-topology; | |||
| "Area ID."; | description | |||
| } | "OSPF multi-topology area configuration state | |||
| uses multi-topology-area-config; | augmentation."; | |||
| uses multi-topology-area-state; | container topologies { | |||
| description "All topologies for the area."; | ||||
| list topology { | ||||
| key "name"; | ||||
| description "OSPF area topology."; | ||||
| leaf name { | ||||
| type leafref { | ||||
| path "../../../../../../../../" | ||||
| + "rt:ribs/rt:rib/rt:name"; | ||||
| } | } | |||
| description | ||||
| "Single topology enabled for this area."; | ||||
| } | } | |||
| uses multi-topology-area-config; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/ospf:ospf/ospf:instance/" | + "rt:control-plane-protocol/ospf/" | |||
| + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { | + "areas/area/interfaces/interface" { | |||
| when "../../../../../../rt:type = 'ospf:ospfv2'" { | when "derived-from-or-self(../../../../../rt:type, " | |||
| + "'ospfv2')" { | ||||
| description | description | |||
| "This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
| } | } | |||
| if-feature ospf:multi-topology; | if-feature multi-topology; | |||
| description | description | |||
| "OSPF multi-topology interface configuration state | "OSPF multi-topology interface configuration state | |||
| augmentation."; | augmentation."; | |||
| container topologies { | container topologies { | |||
| description "All topologies for the interface."; | description "All topologies for the interface."; | |||
| list topology { | list topology { | |||
| key "name"; | key "name"; | |||
| description "OSPF interface topology."; | description "OSPF interface topology."; | |||
| leaf name { | leaf name { | |||
| type leafref { | type leafref { | |||
| path "../../../../../../../../../../../" | path "../../../../../../../../../../" | |||
| + "rt:ribs/rt:rib/rt:name"; | + "rt:ribs/rt:rib/rt:name"; | |||
| } | } | |||
| description | description | |||
| "One of the topologies enabled on this interface."; | "Single topology enabled on this interface."; | |||
| } | } | |||
| uses multi-topology-interface-config; | uses multi-topology-interface-config; | |||
| uses multi-topology-interface-state; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/ospf:ospf/ospf:instance/" | + "rt:control-plane-protocol/ospf/" | |||
| + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { | + "areas/area/interfaces/interface" { | |||
| when "../../../../../../rt:type = 'ospf:ospfv3'" { | when "derived-from-or-self(../../../../../rt:type, " | |||
| + "'ospfv3')" { | ||||
| description | description | |||
| "This augmentation is only valid for OSPFv3."; | "This augmentation is only valid for OSPFv3."; | |||
| } | } | |||
| description | description | |||
| "OSPFv3 interface specific configuration state | "OSPFv3 interface specific configuration state | |||
| augmentation."; | augmentation."; | |||
| uses ospfv3-interface-config; | uses ospfv3-interface-config; | |||
| uses ospfv3-interface-state; | uses ospfv3-interface-state; | |||
| } | } | |||
| skipping to change at page 92, line 4 ¶ | skipping to change at page 112, line 28 ¶ | |||
| leaf tag { | leaf tag { | |||
| type uint32; | type uint32; | |||
| default "0"; | default "0"; | |||
| description "OSPF route tag."; | description "OSPF route tag."; | |||
| } | } | |||
| leaf route-type { | leaf route-type { | |||
| type route-type; | type route-type; | |||
| description "OSPF route type"; | description "OSPF route type"; | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" { | augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" { | |||
| when "rt:source-protocol = 'ospf:ospfv2' or " | when "derived-from(rt:source-protocol, 'ospf')" { | |||
| + "rt:source-protocol = 'ospf:ospfv3'" { | ||||
| description | description | |||
| "This augmentation is only valid for a routes whose | "This augmentation is only valid for routes whose | |||
| source protocol is OSPF."; | source protocol is OSPF."; | |||
| } | } | |||
| description | description | |||
| "OSPF-specific route attributes."; | "OSPF-specific route attributes."; | |||
| uses route-content; | uses route-content; | |||
| } | } | |||
| /* | /* | |||
| * RPCs | * RPCs | |||
| */ | */ | |||
| rpc clear-neighbor { | rpc clear-neighbor { | |||
| description | description | |||
| "This RPC request clears a particular | "This RPC request clears a particular set of OSPF neighbors. | |||
| set of OSPF neighbors. If the operation | If the operation fails for OSPF internal reason, then | |||
| fails for OSPF internal reason, then | error-tag and error-app-tag should be set to a meaningful | |||
| error-tag and error-app-tag should be set | value."; | |||
| to a meaningful value."; | ||||
| input { | input { | |||
| leaf routing-protocol-name { | leaf routing-protocol-name { | |||
| type leafref { | type leafref { | |||
| path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
| } | } | |||
| mandatory "true"; | mandatory "true"; | |||
| description | description | |||
| "Name of the OSPF protocol instance which information | "OSPF protocol instance which information for neighbors | |||
| is being queried. | are to be cleared. | |||
| If the OSPF instance with name equal to the | If the referenced OSPF instance doesn't exist, then | |||
| value of this parameter doesn't exist, then this | this operation SHALL fail with error-tag 'data-missing' | |||
| operation SHALL fail with error-tag 'data-missing' | ||||
| and error-app-tag | and error-app-tag | |||
| 'routing-protocol-instance-not-found'."; | 'routing-protocol-instance-not-found'."; | |||
| } | } | |||
| leaf interface { | leaf interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description | description | |||
| "Name of the OSPF interface. | "Name of the OSPF interface for which neighbors are to | |||
| be cleared. | ||||
| If the OSPF interface with name equal to the | If the referenced OSPF interface doesn't exist, then | |||
| value of this parameter doesn't exist, then this | this operation SHALL fail with error-tag | |||
| operation SHALL fail with error-tag 'data-missing' | 'data-missing' and error-app-tag | |||
| and error-app-tag | ||||
| 'ospf-interface-not-found'."; | 'ospf-interface-not-found'."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| rpc clear-database { | rpc clear-database { | |||
| description | description | |||
| "This RPC request clears a particular | "This RPC request clears a particular OSPF Link State | |||
| OSPF database. If the operation | Database. If the operation fails for OSPF internal reason, | |||
| fails for OSPF internal reason, then | then error-tag and error-app-tag should be set to a | |||
| error-tag and error-app-tag should be set | meaningful value."; | |||
| to a meaningful value."; | ||||
| input { | input { | |||
| leaf routing-protocol-name { | leaf routing-protocol-name { | |||
| type leafref { | type leafref { | |||
| path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
| } | } | |||
| mandatory "true"; | mandatory "true"; | |||
| description | description | |||
| "Name of the OSPF protocol instance whose | "OSPF protocol instance whose Link State Database is to | |||
| information is being queried. | be cleared. | |||
| If the OSPF instance with name equal to the | If the referenced OSPF instance doesn't exist, then | |||
| value of this parameter doesn't exist, then this | this operation SHALL fail with error-tag 'data-missing' | |||
| operation SHALL fail with error-tag 'data-missing' | ||||
| and error-app-tag | and error-app-tag | |||
| 'routing-protocol-instance-not-found'."; | 'routing-protocol-instance-not-found'."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| /* | /* | |||
| * Notifications | * Notifications | |||
| */ | */ | |||
| grouping notification-instance-hdr { | grouping notification-instance-hdr { | |||
| description | description | |||
| "This group describes common instance specific | "This grouping describes common instance specific | |||
| data for notifications."; | data for OSPF notifications."; | |||
| leaf routing-protocol-name { | leaf routing-protocol-name { | |||
| type leafref { | type leafref { | |||
| path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
| } | } | |||
| must "/rt:routing/rt:control-plane-protocols/" | must "derived-from( " | |||
| + "rt:control-plane-protocol[rt:name=current()]/" | + "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:type = 'ospf:ospfv2' or " | + "rt:control-plane-protocol[rt:name=current()]/" | |||
| + "/rt:routing/rt:control-plane-protocols/" | + "rt:type, 'ospf')"; | |||
| + "rt:control-plane-protocol[rt:name=current()]/" | ||||
| + "rt:type = 'ospf:ospfv3'"; | ||||
| description | description | |||
| "OSPF routing protocol instance name."; | "OSPF routing protocol instance name."; | |||
| } | } | |||
| leaf af { | leaf address-family { | |||
| type leafref { | type leafref { | |||
| path "/rt:routing/" | path "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
| + "[rt:name=current()/../routing-protocol-name]/" | + "[rt:name=current()/../routing-protocol-name]/" | |||
| + "ospf:ospf/ospf:instance/af"; | + "ospf/address-family"; | |||
| } | } | |||
| description | description | |||
| "Address family of the OSPF instance."; | "Address family of the OSPF instance."; | |||
| } | } | |||
| } | } | |||
| grouping notification-interface { | grouping notification-interface { | |||
| description | description | |||
| "This grouping provides the interface information | "This grouping provides interface information | |||
| for the notifications."; | for the OSPF interface specific notification."; | |||
| choice if-link-type-selection { | choice if-link-type-selection { | |||
| description | description | |||
| "Options for link type."; | "Options for link type."; | |||
| container interface { | container interface { | |||
| description "Normal interface."; | description "Normal interface."; | |||
| leaf interface { | leaf interface { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| description "Interface."; | description "Interface."; | |||
| } | } | |||
| } | } | |||
| container virtual-link { | container virtual-link { | |||
| description "virtual-link."; | description "virtual-link."; | |||
| leaf transit-area-id { | leaf transit-area-id { | |||
| type area-id-type; | type area-id-type; | |||
| description "Area ID."; | description "Area ID."; | |||
| } | } | |||
| leaf neighbor-router-id { | leaf neighbor-router-id { | |||
| type rt-types:router-id; | type rt-types:router-id; | |||
| description "Neighbor Router ID."; | description "Neighbor Router ID."; | |||
| } | } | |||
| } | } | |||
| container sham-link { | container sham-link { | |||
| description "sham-link."; | description "sham link."; | |||
| leaf area-id { | leaf area-id { | |||
| type area-id-type; | type area-id-type; | |||
| description "Area ID."; | description "Area ID."; | |||
| } | } | |||
| leaf local-ip-addr { | leaf local-ip-addr { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description "Sham link local address."; | description "Sham link local address."; | |||
| } | } | |||
| leaf remote-ip-addr { | leaf remote-ip-addr { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description "Sham link remote address."; | description "Sham link remote address."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping notification-neighbor { | grouping notification-neighbor { | |||
| description | description | |||
| "This grouping provides the neighbor information | "This grouping provides the neighbor information | |||
| for the notifications."; | for neighbor specific notifications."; | |||
| leaf neighbor-router-id { | leaf neighbor-router-id { | |||
| type rt-types:router-id; | type rt-types:router-id; | |||
| description "Neighbor Router ID."; | description "Neighbor Router ID."; | |||
| } | } | |||
| leaf neighbor-ip-addr { | leaf neighbor-ip-addr { | |||
| type yang:dotted-quad; | type inet:ip-address; | |||
| description "Neighbor address."; | description "Neighbor address."; | |||
| } | } | |||
| } | } | |||
| notification if-state-change { | notification if-state-change { | |||
| uses notification-instance-hdr; | uses notification-instance-hdr; | |||
| uses notification-interface; | uses notification-interface; | |||
| leaf state { | leaf state { | |||
| type if-state-type; | type if-state-type; | |||
| description "Interface state."; | description "Interface state."; | |||
| } | } | |||
| description | description | |||
| "This notification is sent when an interface | "This notification is sent when an interface | |||
| state change is detected."; | state change is detected."; | |||
| } | } | |||
| notification if-config-error { | notification if-config-error { | |||
| uses notification-instance-hdr; | uses notification-instance-hdr; | |||
| uses notification-interface; | uses notification-interface; | |||
| leaf packet-source { | leaf packet-source { | |||
| type yang:dotted-quad; | type inet:ip-address; | |||
| description "Source address."; | description "Source address."; | |||
| } | } | |||
| leaf packet-type { | leaf packet-type { | |||
| type packet-type; | type packet-type; | |||
| description "OSPF packet type."; | description "OSPF packet type."; | |||
| } | } | |||
| leaf error { | leaf error { | |||
| type enumeration { | type enumeration { | |||
| enum "badVersion" { | enum "bad-version" { | |||
| description "Bad version."; | description "Bad version."; | |||
| } | } | |||
| enum "areaMismatch" { | enum "area-mismatch" { | |||
| description "Area mistmatch."; | description "Area mismatch."; | |||
| } | } | |||
| enum "unknownNbmaNbr" { | enum "unknown-nbma-nbr" { | |||
| description "Unknown NBMA neighbor."; | description "Unknown NBMA neighbor."; | |||
| } | } | |||
| enum "unknownVirtualNbr" { | enum "unknown-virtual-nbr" { | |||
| description "Unknown virtual link neighbor."; | description "Unknown virtual link neighbor."; | |||
| } | } | |||
| enum "authTypeMismatch" { | enum "auth-type-mismatch" { | |||
| description "Auth type mismatch."; | description "Auth type mismatch."; | |||
| } | } | |||
| enum "authFailure" { | enum "auth-failure" { | |||
| description "Auth failure."; | description "Auth failure."; | |||
| } | } | |||
| enum "netMaskMismatch" { | enum "net-mask-mismatch" { | |||
| description "Network mask mismatch."; | description "Network mask mismatch."; | |||
| } | } | |||
| enum "helloIntervalMismatch" { | enum "hello-interval-mismatch" { | |||
| description "Hello interval mismatch."; | description "Hello interval mismatch."; | |||
| } | } | |||
| enum "deadIntervalMismatch" { | enum "dead-interval-mismatch" { | |||
| description "Dead interval mismatch."; | description "Dead interval mismatch."; | |||
| } | } | |||
| enum "optionMismatch" { | enum "option-mismatch" { | |||
| description "Option mismatch."; | description "Option mismatch."; | |||
| } | } | |||
| enum "mtuMismatch" { | enum "mtu-mismatch" { | |||
| description "MTU mismatch."; | description "MTU mismatch."; | |||
| } | } | |||
| enum "duplicateRouterId" { | enum "duplicate-router-id" { | |||
| description "Duplicate router ID."; | description "Duplicate Router ID."; | |||
| } | } | |||
| enum "noError" { | enum "no-error" { | |||
| description "No error."; | description "No error."; | |||
| } | } | |||
| } | } | |||
| description "Error code."; | description "Error code."; | |||
| } | } | |||
| description | description | |||
| "This notification is sent when interface | "This notification is sent when an interface | |||
| config error is detected."; | config error is detected."; | |||
| } | } | |||
| notification nbr-state-change { | notification nbr-state-change { | |||
| uses notification-instance-hdr; | uses notification-instance-hdr; | |||
| uses notification-interface; | uses notification-interface; | |||
| uses notification-neighbor; | uses notification-neighbor; | |||
| leaf state { | leaf state { | |||
| type nbr-state-type; | type nbr-state-type; | |||
| description "Neighbor state."; | description "Neighbor state."; | |||
| } | } | |||
| description | description | |||
| "This notification is sent when neighbor | "This notification is sent when a neighbor | |||
| state change is detected."; | state change is detected."; | |||
| } | } | |||
| notification nbr-restart-helper-status-change { | notification nbr-restart-helper-status-change { | |||
| uses notification-instance-hdr; | uses notification-instance-hdr; | |||
| uses notification-interface; | uses notification-interface; | |||
| uses notification-neighbor; | uses notification-neighbor; | |||
| leaf status { | leaf status { | |||
| type restart-helper-status-type; | type restart-helper-status-type; | |||
| description "Restart helper status."; | description "Restart helper status."; | |||
| } | } | |||
| leaf age { | leaf age { | |||
| type uint32; | type rt-types:timer-value-seconds16; | |||
| units seconds; | ||||
| description | description | |||
| "Remaining time in current OSPF graceful restart | "Remaining time in current OSPF graceful restart | |||
| interval, if the router is acting as a restart | interval when the router is acting as a restart | |||
| helper for the neighbor."; | helper for the neighbor."; | |||
| } | } | |||
| leaf exit-reason { | leaf exit-reason { | |||
| type restart-exit-reason-type; | type restart-exit-reason-type; | |||
| description | description | |||
| "Restart helper exit reason."; | "Restart helper exit reason."; | |||
| } | } | |||
| description | description | |||
| "This notification is sent when a neighbor restart | "This notification is sent when a neighbor restart | |||
| helper status change is detected."; | helper status change is detected."; | |||
| } | } | |||
| notification if-rx-bad-packet { | notification if-rx-bad-packet { | |||
| uses notification-instance-hdr; | uses notification-instance-hdr; | |||
| uses notification-interface; | uses notification-interface; | |||
| leaf packet-source { | leaf packet-source { | |||
| type yang:dotted-quad; | type inet:ip-address; | |||
| description "Source address."; | description "Source address."; | |||
| } | } | |||
| leaf packet-type { | leaf packet-type { | |||
| type packet-type; | type packet-type; | |||
| description "OSPF packet type."; | description "OSPF packet type."; | |||
| } | } | |||
| description | description | |||
| "This notification is sent when an OSPF packet that | "This notification is sent when an OSPF packet that | |||
| skipping to change at page 98, line 35 ¶ | skipping to change at page 119, line 4 ¶ | |||
| description "OSPF packet type."; | description "OSPF packet type."; | |||
| } | } | |||
| description | description | |||
| "This notification is sent when an OSPF packet that | "This notification is sent when an OSPF packet that | |||
| cannot be parsed is received on an OSPF interface."; | cannot be parsed is received on an OSPF interface."; | |||
| } | } | |||
| notification lsdb-approaching-overflow { | notification lsdb-approaching-overflow { | |||
| uses notification-instance-hdr; | uses notification-instance-hdr; | |||
| leaf ext-lsdb-limit { | leaf ext-lsdb-limit { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The maximum number of non-default AS-external LSAs | "The maximum number of non-default AS-external LSAs | |||
| entries that can be stored in the link state database."; | entries that can be stored in the Link State Database."; | |||
| } | } | |||
| description | description | |||
| "This notification is sent when the number of LSAs | "This notification is sent when the number of LSAs | |||
| in the router's link state database has exceeded | in the router's Link State Database has exceeded | |||
| ninety percent of the ext-lsdb-limit."; | ninety percent of the AS-external limit (ext-lsdb-limit)."; | |||
| } | } | |||
| notification lsdb-overflow { | notification lsdb-overflow { | |||
| uses notification-instance-hdr; | uses notification-instance-hdr; | |||
| leaf ext-lsdb-limit { | leaf ext-lsdb-limit { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The maximum number of non-default AS-external LSAs | "The maximum number of non-default AS-external LSAs | |||
| entries that can be stored in the link state database."; | entries that can be stored in the Link State Database."; | |||
| } | } | |||
| description | description | |||
| "This notification is sent when the number of LSAs | "This notification is sent when the number of LSAs | |||
| in the router's link state database has exceeded | in the router's Link State Database has exceeded the | |||
| ext-lsdb-limit."; | AS-external limit (ext-lsdb-limit)."; | |||
| } | } | |||
| notification nssa-translator-status-change { | notification nssa-translator-status-change { | |||
| uses notification-instance-hdr; | uses notification-instance-hdr; | |||
| leaf area-id { | leaf area-id { | |||
| type area-id-type; | type area-id-type; | |||
| description "Area ID."; | description "Area ID."; | |||
| } | } | |||
| skipping to change at page 99, line 36 ¶ | skipping to change at page 120, line 4 ¶ | |||
| type nssa-translator-state-type; | type nssa-translator-state-type; | |||
| description | description | |||
| "NSSA translator status."; | "NSSA translator status."; | |||
| } | } | |||
| description | description | |||
| "This notification is sent when there is a change | "This notification is sent when there is a change | |||
| in the router's role in translating OSPF NSSA LSAs | in the router's role in translating OSPF NSSA LSAs | |||
| to OSPF AS-External LSAs."; | to OSPF AS-External LSAs."; | |||
| } | } | |||
| notification restart-status-change { | notification restart-status-change { | |||
| uses notification-instance-hdr; | uses notification-instance-hdr; | |||
| leaf status { | leaf status { | |||
| type restart-status-type; | type restart-status-type; | |||
| description | description | |||
| "Restart status."; | "Restart status."; | |||
| } | } | |||
| leaf restart-interval { | leaf restart-interval { | |||
| type uint16 { | type uint16 { | |||
| range "1..1800"; | range 1..1800; | |||
| } | } | |||
| units seconds; | units seconds; | |||
| default "120"; | default "120"; | |||
| description | description | |||
| "Restart interval."; | "Restart interval."; | |||
| } | } | |||
| leaf exit-reason { | leaf exit-reason { | |||
| type restart-exit-reason-type; | type restart-exit-reason-type; | |||
| description | description | |||
| skipping to change at page 100, line 23 ¶ | skipping to change at page 120, line 38 ¶ | |||
| description | description | |||
| "This notification is sent when the graceful restart | "This notification is sent when the graceful restart | |||
| state for the router has changed."; | state for the router has changed."; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 4. Security Considerations | 4. Security Considerations | |||
| The YANG module defined in this document is designed to be accessed | The YANG modules specified in this document define a schema for data | |||
| via network management protocols such as NETCONF [RFC6241] or | that is designed to be accessed via network management protocols such | |||
| RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
| layer, and the mandatory-to-implement secure transport is Secure | is the secure transport layer, and the mandatory-to-implement secure | |||
| Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
| mandatory-to-implement secure transport is TLS [RFC5246]. | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
| [RFC8446]. | ||||
| The NETCONF access control model [RFC6536] provides the means to | The NETCONF Access Control Model (NACM) [RFC8341] provides the means | |||
| restrict access for particular NETCONF or RESTCONF users to a pre- | to restrict access for particular NETCONF or RESTCONF users to a pre- | |||
| configured subset of all available NETCONF or RESTCONF protocol | configured subset of all available NETCONF or RESTCONF protocol | |||
| operations and content. | operations and content. | |||
| There are a number of data nodes defined in this YANG module that are | There are a number of data nodes defined in ietf-ospf.yang module | |||
| writable/creatable/deletable (i.e., config true, which is the | that are writable/creatable/deletable (i.e., config true, which is | |||
| default). These data nodes may be considered sensitive or vulnerable | the default). These data nodes may be considered sensitive or | |||
| in some network environments. Write operations (e.g., edit-config) | vulnerable in some network environments. Write operations (e.g., | |||
| to these data nodes without proper protection can have a negative | edit-config) to these data nodes without proper protection can have a | |||
| effect on network operations. For OSPF, the ability to modify OSPF | negative effect on network operations. Writable data node represent | |||
| configuration will allow the entire OSPF domain to be compromised | configuration of each instance, area, virtual link, sham-link, and | |||
| including peering with unauthorized routers to misroute traffic or | interface. These correspond to the following schema nodes: | |||
| mount a massive Denial-of-Service (DoS) attack. The security | ||||
| considerations of OSPFv2 [RFC2328] and [RFC5340]. | ||||
| Some of the readable data nodes in this YANG module may be considered | /ospf | |||
| sensitive or vulnerable in some network environments. It is thus | ||||
| important to control read access (e.g., via get, get-config, or | /ospf/areas/ | |||
| notification) to these data nodes. The exposure of the Link State | ||||
| /ospf/areas/area[area-id] | ||||
| /ospf/virtual-links/ | ||||
| /ospf/virtual-links/virtual-link[transit-area-id router-id] | ||||
| /ospf/areas/area[area-id]/interfaces | ||||
| /ospf/areas/area[area-id]/interfaces/interface[name] | ||||
| /ospf/area/area[area-id]/sham-links | ||||
| /ospf/area/area[area-id]/sham-links/sham-link[local-id remote-id] | ||||
| For OSPF, the ability to modify OSPF configuration will allow the | ||||
| entire OSPF domain to be compromised including peering with | ||||
| unauthorized routers to misroute traffic or mount a massive Denial- | ||||
| of-Service (DoS) attack. For example, adding OSPF on any unprotected | ||||
| interface could allow an OSPF adjacency to be formed with an | ||||
| unauthorized and malicious neighbor. Once an adjacency is formed, | ||||
| traffic could be hijacked. As a simpler example, a Denial-of-Service | ||||
| attack could be mounted by changing the cost of an OSPF interface to | ||||
| be asymmetric such that a hard routing loop ensues. In general, | ||||
| unauthorized modification of most OSPF features will pose there own | ||||
| set of security risks and the "Security Considerations" in the | ||||
| respective reference RFCs should be consulted. | ||||
| Some of the readable data nodes in the ietf-ospf.yang module may be | ||||
| considered sensitive or vulnerable in some network environments. It | ||||
| is thus important to control read access (e.g., via get, get-config, | ||||
| or notification) to these data nodes. The exposure of the Link State | ||||
| Database (LSDB) will expose the detailed topology of the network. | Database (LSDB) will expose the detailed topology of the network. | |||
| This may be undesirable since both due to the fact that exposure may | There is a separate Link State Database for each instance, area, | |||
| facilitate other attacks. Additionally, network operators may | virtual link, sham-link, and interface. These correspond to the | |||
| consider their topologies to be propritary. | following schema nodes: | |||
| /ospf/database | ||||
| /ospf/areas/area[area-id]/database | ||||
| /ospf/virtual-links/virtual-link[transit-area-id router- | ||||
| id]/database | ||||
| /ospf/areas/area[area-id]/interfaces/interface[name]/database | ||||
| /ospf/area/area[area-id]/sham-links/sham-link[local-id remote- | ||||
| id]/database | ||||
| Exposure of the Link State Database includes information beyond the | ||||
| scope of the OSPF router and this may be undesirable since exposure | ||||
| may facilitate other attacks. Additionally, in the case of an area | ||||
| LSDB, the complete IP network topology and, if deployed, the traffic | ||||
| engineering topology of the OSPF area can be reconstucted. Network | ||||
| operators may consider their topologies to be sensitive confidential | ||||
| data. | ||||
| For OSPF authentication, configuration is supported via the | For OSPF authentication, configuration is supported via the | |||
| specification of key-chains [RFC8177] or the direct specification of | specification of key-chains [RFC8177] or the direct specification of | |||
| key and authentication algorithm. Hence, authentification | key and authentication algorithm. Hence, authentication | |||
| configuration using the "auth-table-trailer" case in the | configuration using the "auth-table-trailer" case in the | |||
| "authentication" container inherits the security considerations of | "authentication" container inherits the security considerations of | |||
| [RFC8177]. This includes the considerations with respect to the | [RFC8177]. This includes the considerations with respect to the | |||
| local storage and handling of authentication keys. | local storage and handling of authentication keys. | |||
| Additionally, local specification of OSPF authentication keys and the | ||||
| associated authentication algorithm is supported for legacy | ||||
| implementations that do not support key-chains [RFC8177] It is | ||||
| RECOMMENDED that implementations migrate to key-chains due the | ||||
| seamless support of key and algorithm rollover, as well as, the | ||||
| hexadecimal key specification affording more key entropy, and | ||||
| encryption of keys using the Advanced Encryption Standard (AES) Key | ||||
| Wrap Padding Algorithm [RFC5649]. | ||||
| Some of the RPC operations in this YANG module may be considered | Some of the RPC operations in this YANG module may be considered | |||
| sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
| important to control access to these operations. The OSPF Yang | important to control access to these operations. The OSPF YANG | |||
| module support the "clear-neighbor" and "clear-database" RPCs. If | module supports the "clear-neighbor" and "clear-database" RPCs. If | |||
| access too either of these is compromised, they can result in | access to either of these is compromised, they can result in | |||
| temporary network outages be employed to mount DoS attacks. | temporary network outages be employed to mount DoS attacks. | |||
| 5. Acknowledgements | The actual authentication key data (whether locally specified or part | |||
| of a key-chain) is sensitive and needs to be kept secret from | ||||
| unauthorized parties; compromise of the key data would allow an | ||||
| attacker to forge OSPF traffic that would be accepted as authentic, | ||||
| potentially compromising the entirety OSPF domain. | ||||
| 5. IANA Considerations | ||||
| This document registers a URI in the IETF XML registry [RFC3688]. | ||||
| Following the format in [RFC3688], the following registration is | ||||
| requested to be made: | ||||
| URI: urn:ietf:params:xml:ns:yang:ietf-ospf | ||||
| Registrant Contact: The IESG. | ||||
| XML: N/A, the requested URI is an XML namespace. | ||||
| This document registers a YANG module in the YANG Module Names | ||||
| registry [RFC6020]. | ||||
| name: ietf-ospf | ||||
| namespace: urn:ietf:params:xml:ns:yang:ietf-ospf | ||||
| prefix: ospf | ||||
| reference: RFC XXXX | ||||
| 6. Acknowledgements | ||||
| The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, | The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, | |||
| Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and | Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta, | |||
| Alan Davey for their thorough reviews and helpful comments. | Michael Darwish, and Alan Davey for their thorough reviews and | |||
| helpful comments. | ||||
| Thanks to Tom Petch for last call review and improvement of the | ||||
| document organization. | ||||
| Thanks to Alvaro Retana for AD comments. | ||||
| Thanks to Benjamin Kaduk, Suresh Krishnan, and Roman Dannyliw for | ||||
| IESG review comments. | ||||
| This document was produced using Marshall Rose's xml2rfc tool. | This document was produced using Marshall Rose's xml2rfc tool. | |||
| 6. References | Author affiliation with The MITRE Corporation is provided for | |||
| identification purposes only, and is not intended to convey or imply | ||||
| MITRE's concurrence with, or support for, the positions, opinions or | ||||
| viewpoints expressed. MITRE has approved this document for Public | ||||
| Release, Distribution Unlimited, with Public Release Case Number | ||||
| 18-3194. | ||||
| 6.1. Normative References | 7. References | |||
| 7.1. Normative References | ||||
| [I-D.ietf-bfd-yang] | ||||
| Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and | ||||
| G. Mirsky, "YANG Data Model for Bidirectional Forwarding | ||||
| Detection (BFD)", draft-ietf-bfd-yang-17 (work in | ||||
| progress), August 2018. | ||||
| [RFC1765] Moy, J., "OSPF Database Overflow", RFC 1765, | ||||
| DOI 10.17487/RFC1765, March 1995, | ||||
| <https://www.rfc-editor.org/info/rfc1765>. | ||||
| [RFC1793] Moy, J., "Extending OSPF to Support Demand Circuits", | [RFC1793] Moy, J., "Extending OSPF to Support Demand Circuits", | |||
| RFC 1793, DOI 10.17487/RFC1793, April 1995, | RFC 1793, DOI 10.17487/RFC1793, April 1995, | |||
| <https://www.rfc-editor.org/info/rfc1793>. | <https://www.rfc-editor.org/info/rfc1793>. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| skipping to change at page 102, line 14 ¶ | skipping to change at page 124, line 45 ¶ | |||
| [RFC3623] Moy, J., Pillay-Esnault, P., and A. Lindem, "Graceful OSPF | [RFC3623] Moy, J., Pillay-Esnault, P., and A. Lindem, "Graceful OSPF | |||
| Restart", RFC 3623, DOI 10.17487/RFC3623, November 2003, | Restart", RFC 3623, DOI 10.17487/RFC3623, November 2003, | |||
| <https://www.rfc-editor.org/info/rfc3623>. | <https://www.rfc-editor.org/info/rfc3623>. | |||
| [RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering | [RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering | |||
| (TE) Extensions to OSPF Version 2", RFC 3630, | (TE) Extensions to OSPF Version 2", RFC 3630, | |||
| DOI 10.17487/RFC3630, September 2003, | DOI 10.17487/RFC3630, September 2003, | |||
| <https://www.rfc-editor.org/info/rfc3630>. | <https://www.rfc-editor.org/info/rfc3630>. | |||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | ||||
| DOI 10.17487/RFC3688, January 2004, | ||||
| <https://www.rfc-editor.org/info/rfc3688>. | ||||
| [RFC4552] Gupta, M. and N. Melam, "Authentication/Confidentiality | ||||
| for OSPFv3", RFC 4552, DOI 10.17487/RFC4552, June 2006, | ||||
| <https://www.rfc-editor.org/info/rfc4552>. | ||||
| [RFC4576] Rosen, E., Psenak, P., and P. Pillay-Esnault, "Using a | ||||
| Link State Advertisement (LSA) Options Bit to Prevent | ||||
| Looping in BGP/MPLS IP Virtual Private Networks (VPNs)", | ||||
| RFC 4576, DOI 10.17487/RFC4576, June 2006, | ||||
| <https://www.rfc-editor.org/info/rfc4576>. | ||||
| [RFC4577] Rosen, E., Psenak, P., and P. Pillay-Esnault, "OSPF as the | [RFC4577] Rosen, E., Psenak, P., and P. Pillay-Esnault, "OSPF as the | |||
| Provider/Customer Edge Protocol for BGP/MPLS IP Virtual | Provider/Customer Edge Protocol for BGP/MPLS IP Virtual | |||
| Private Networks (VPNs)", RFC 4577, DOI 10.17487/RFC4577, | Private Networks (VPNs)", RFC 4577, DOI 10.17487/RFC4577, | |||
| June 2006, <https://www.rfc-editor.org/info/rfc4577>. | June 2006, <https://www.rfc-editor.org/info/rfc4577>. | |||
| [RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed., | [RFC4915] Psenak, P., Mirtorabi, S., Roy, A., Nguyen, L., and P. | |||
| Coltun, R., and F. Baker, "OSPF Version 2 Management | Pillay-Esnault, "Multi-Topology (MT) Routing in OSPF", | |||
| Information Base", RFC 4750, DOI 10.17487/RFC4750, | RFC 4915, DOI 10.17487/RFC4915, June 2007, | |||
| December 2006, <https://www.rfc-editor.org/info/rfc4750>. | <https://www.rfc-editor.org/info/rfc4915>. | |||
| [RFC4973] Srisuresh, P. and P. Joseph, "OSPF-xTE: Experimental | ||||
| Extension to OSPF for Traffic Engineering", RFC 4973, | ||||
| DOI 10.17487/RFC4973, July 2007, | ||||
| <https://www.rfc-editor.org/info/rfc4973>. | ||||
| [RFC5082] Gill, V., Heasley, J., Meyer, D., Savola, P., Ed., and C. | ||||
| Pignataro, "The Generalized TTL Security Mechanism | ||||
| (GTSM)", RFC 5082, DOI 10.17487/RFC5082, October 2007, | ||||
| <https://www.rfc-editor.org/info/rfc5082>. | ||||
| [RFC5185] Mirtorabi, S., Psenak, P., Lindem, A., Ed., and A. Oswal, | ||||
| "OSPF Multi-Area Adjacency", RFC 5185, | ||||
| DOI 10.17487/RFC5185, May 2008, | ||||
| <https://www.rfc-editor.org/info/rfc5185>. | ||||
| [RFC5187] Pillay-Esnault, P. and A. Lindem, "OSPFv3 Graceful | [RFC5187] Pillay-Esnault, P. and A. Lindem, "OSPFv3 Graceful | |||
| Restart", RFC 5187, DOI 10.17487/RFC5187, June 2008, | Restart", RFC 5187, DOI 10.17487/RFC5187, June 2008, | |||
| <https://www.rfc-editor.org/info/rfc5187>. | <https://www.rfc-editor.org/info/rfc5187>. | |||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5250] Berger, L., Bryskin, I., Zinin, A., and R. Coltun, "The | |||
| (TLS) Protocol Version 1.2", RFC 5246, | OSPF Opaque LSA Option", RFC 5250, DOI 10.17487/RFC5250, | |||
| DOI 10.17487/RFC5246, August 2008, | July 2008, <https://www.rfc-editor.org/info/rfc5250>. | |||
| <https://www.rfc-editor.org/info/rfc5246>. | ||||
| [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for | ||||
| IP Fast Reroute: Loop-Free Alternates", RFC 5286, | ||||
| DOI 10.17487/RFC5286, September 2008, | ||||
| <https://www.rfc-editor.org/info/rfc5286>. | ||||
| [RFC5309] Shen, N., Ed. and A. Zinin, Ed., "Point-to-Point Operation | ||||
| over LAN in Link State Routing Protocols", RFC 5309, | ||||
| DOI 10.17487/RFC5309, October 2008, | ||||
| <https://www.rfc-editor.org/info/rfc5309>. | ||||
| [RFC5329] Ishiguro, K., Manral, V., Davey, A., and A. Lindem, Ed., | ||||
| "Traffic Engineering Extensions to OSPF Version 3", | ||||
| RFC 5329, DOI 10.17487/RFC5329, September 2008, | ||||
| <https://www.rfc-editor.org/info/rfc5329>. | ||||
| [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF | [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF | |||
| for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, | for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, | |||
| <https://www.rfc-editor.org/info/rfc5340>. | <https://www.rfc-editor.org/info/rfc5340>. | |||
| [RFC5643] Joyal, D., Ed. and V. Manral, Ed., "Management Information | [RFC5613] Zinin, A., Roy, A., Nguyen, L., Friedman, B., and D. | |||
| Base for OSPFv3", RFC 5643, DOI 10.17487/RFC5643, August | Yeung, "OSPF Link-Local Signaling", RFC 5613, | |||
| 2009, <https://www.rfc-editor.org/info/rfc5643>. | DOI 10.17487/RFC5613, August 2009, | |||
| <https://www.rfc-editor.org/info/rfc5613>. | ||||
| [RFC5642] Venkata, S., Harwani, S., Pignataro, C., and D. McPherson, | ||||
| "Dynamic Hostname Exchange Mechanism for OSPF", RFC 5642, | ||||
| DOI 10.17487/RFC5642, August 2009, | ||||
| <https://www.rfc-editor.org/info/rfc5642>. | ||||
| [RFC5709] Bhatia, M., Manral, V., Fanto, M., White, R., Barnes, M., | ||||
| Li, T., and R. Atkinson, "OSPFv2 HMAC-SHA Cryptographic | ||||
| Authentication", RFC 5709, DOI 10.17487/RFC5709, October | ||||
| 2009, <https://www.rfc-editor.org/info/rfc5709>. | ||||
| [RFC5714] Shand, M. and S. Bryant, "IP Fast Reroute Framework", | ||||
| RFC 5714, DOI 10.17487/RFC5714, January 2010, | ||||
| <https://www.rfc-editor.org/info/rfc5714>. | ||||
| [RFC5838] Lindem, A., Ed., Mirtorabi, S., Roy, A., Barnes, M., and | [RFC5838] Lindem, A., Ed., Mirtorabi, S., Roy, A., Barnes, M., and | |||
| R. Aggarwal, "Support of Address Families in OSPFv3", | R. Aggarwal, "Support of Address Families in OSPFv3", | |||
| RFC 5838, DOI 10.17487/RFC5838, April 2010, | RFC 5838, DOI 10.17487/RFC5838, April 2010, | |||
| <https://www.rfc-editor.org/info/rfc5838>. | <https://www.rfc-editor.org/info/rfc5838>. | |||
| [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
| the Network Configuration Protocol (NETCONF)", RFC 6020, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
| DOI 10.17487/RFC6020, October 2010, | DOI 10.17487/RFC6020, October 2010, | |||
| <https://www.rfc-editor.org/info/rfc6020>. | <https://www.rfc-editor.org/info/rfc6020>. | |||
| [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
| and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
| (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
| <https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
| [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
| Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
| <https://www.rfc-editor.org/info/rfc6242>. | <https://www.rfc-editor.org/info/rfc6242>. | |||
| [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | ||||
| Protocol (NETCONF) Access Control Model", RFC 6536, | ||||
| DOI 10.17487/RFC6536, March 2012, | ||||
| <https://www.rfc-editor.org/info/rfc6536>. | ||||
| [RFC6565] Pillay-Esnault, P., Moyer, P., Doyle, J., Ertekin, E., and | [RFC6565] Pillay-Esnault, P., Moyer, P., Doyle, J., Ertekin, E., and | |||
| M. Lundberg, "OSPFv3 as a Provider Edge to Customer Edge | M. Lundberg, "OSPFv3 as a Provider Edge to Customer Edge | |||
| (PE-CE) Routing Protocol", RFC 6565, DOI 10.17487/RFC6565, | (PE-CE) Routing Protocol", RFC 6565, DOI 10.17487/RFC6565, | |||
| June 2012, <https://www.rfc-editor.org/info/rfc6565>. | June 2012, <https://www.rfc-editor.org/info/rfc6565>. | |||
| [RFC7223] Bjorklund, M., "A YANG Data Model for Interface | [RFC6845] Sheth, N., Wang, L., and J. Zhang, "OSPF Hybrid Broadcast | |||
| Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, | and Point-to-Multipoint Interface Type", RFC 6845, | |||
| <https://www.rfc-editor.org/info/rfc7223>. | DOI 10.17487/RFC6845, January 2013, | |||
| <https://www.rfc-editor.org/info/rfc6845>. | ||||
| [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing | [RFC6860] Yang, Y., Retana, A., and A. Roy, "Hiding Transit-Only | |||
| Management", RFC 8022, DOI 10.17487/RFC8022, November | Networks in OSPF", RFC 6860, DOI 10.17487/RFC6860, January | |||
| 2016, <https://www.rfc-editor.org/info/rfc8022>. | 2013, <https://www.rfc-editor.org/info/rfc6860>. | |||
| [RFC6987] Retana, A., Nguyen, L., Zinin, A., White, R., and D. | ||||
| McPherson, "OSPF Stub Router Advertisement", RFC 6987, | ||||
| DOI 10.17487/RFC6987, September 2013, | ||||
| <https://www.rfc-editor.org/info/rfc6987>. | ||||
| [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | ||||
| RFC 6991, DOI 10.17487/RFC6991, July 2013, | ||||
| <https://www.rfc-editor.org/info/rfc6991>. | ||||
| [RFC7166] Bhatia, M., Manral, V., and A. Lindem, "Supporting | ||||
| Authentication Trailer for OSPFv3", RFC 7166, | ||||
| DOI 10.17487/RFC7166, March 2014, | ||||
| <https://www.rfc-editor.org/info/rfc7166>. | ||||
| [RFC7474] Bhatia, M., Hartman, S., Zhang, D., and A. Lindem, Ed., | ||||
| "Security Extension for OSPFv2 When Using Manual Key | ||||
| Management", RFC 7474, DOI 10.17487/RFC7474, April 2015, | ||||
| <https://www.rfc-editor.org/info/rfc7474>. | ||||
| [RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N. | ||||
| So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)", | ||||
| RFC 7490, DOI 10.17487/RFC7490, April 2015, | ||||
| <https://www.rfc-editor.org/info/rfc7490>. | ||||
| [RFC7684] Psenak, P., Gredler, H., Shakir, R., Henderickx, W., | ||||
| Tantsura, J., and A. Lindem, "OSPFv2 Prefix/Link Attribute | ||||
| Advertisement", RFC 7684, DOI 10.17487/RFC7684, November | ||||
| 2015, <https://www.rfc-editor.org/info/rfc7684>. | ||||
| [RFC7770] Lindem, A., Ed., Shen, N., Vasseur, JP., Aggarwal, R., and | ||||
| S. Shaffer, "Extensions to OSPF for Advertising Optional | ||||
| Router Capabilities", RFC 7770, DOI 10.17487/RFC7770, | ||||
| February 2016, <https://www.rfc-editor.org/info/rfc7770>. | ||||
| [RFC7777] Hegde, S., Shakir, R., Smirnov, A., Li, Z., and B. | ||||
| Decraene, "Advertising Node Administrative Tags in OSPF", | ||||
| RFC 7777, DOI 10.17487/RFC7777, March 2016, | ||||
| <https://www.rfc-editor.org/info/rfc7777>. | ||||
| [RFC7884] Pignataro, C., Bhatia, M., Aldrin, S., and T. Ranganath, | ||||
| "OSPF Extensions to Advertise Seamless Bidirectional | ||||
| Forwarding Detection (S-BFD) Target Discriminators", | ||||
| RFC 7884, DOI 10.17487/RFC7884, July 2016, | ||||
| <https://www.rfc-editor.org/info/rfc7884>. | ||||
| [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | ||||
| RFC 7950, DOI 10.17487/RFC7950, August 2016, | ||||
| <https://www.rfc-editor.org/info/rfc7950>. | ||||
| [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
| Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
| <https://www.rfc-editor.org/info/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
| [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. | [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. | |||
| Zhang, "YANG Data Model for Key Chains", RFC 8177, | Zhang, "YANG Data Model for Key Chains", RFC 8177, | |||
| DOI 10.17487/RFC8177, June 2017, | DOI 10.17487/RFC8177, June 2017, | |||
| <https://www.rfc-editor.org/info/rfc8177>. | <https://www.rfc-editor.org/info/rfc8177>. | |||
| 6.2. Informative References | [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, | |||
| "Common YANG Data Types for the Routing Area", RFC 8294, | ||||
| DOI 10.17487/RFC8294, December 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8294>. | ||||
| [I-D.ietf-netmod-revised-datastores] | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
| Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
| and R. Wilton, "Network Management Datastore | <https://www.rfc-editor.org/info/rfc8340>. | |||
| Architecture", draft-ietf-netmod-revised-datastores-02 | ||||
| (work in progress), May 2017. | ||||
| Appendix A. Contributors' Addreses | [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | |||
| Access Control Model", STD 91, RFC 8341, | ||||
| DOI 10.17487/RFC8341, March 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8341>. | ||||
| [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | ||||
| and R. Wilton, "Network Management Datastore Architecture | ||||
| (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8342>. | ||||
| [RFC8343] Bjorklund, M., "A YANG Data Model for Interface | ||||
| Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8343>. | ||||
| [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for | ||||
| Routing Management (NMDA Version)", RFC 8349, | ||||
| DOI 10.17487/RFC8349, March 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8349>. | ||||
| [RFC8405] Decraene, B., Litkowski, S., Gredler, H., Lindem, A., | ||||
| Francois, P., and C. Bowers, "Shortest Path First (SPF) | ||||
| Back-Off Delay Algorithm for Link-State IGPs", RFC 8405, | ||||
| DOI 10.17487/RFC8405, June 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8405>. | ||||
| [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | ||||
| Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8446>. | ||||
| [RFC8476] Tantsura, J., Chunduri, U., Aldrin, S., and P. Psenak, | ||||
| "Signaling Maximum SID Depth (MSD) Using OSPF", RFC 8476, | ||||
| DOI 10.17487/RFC8476, December 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8476>. | ||||
| 7.2. Informative References | ||||
| [RFC0905] "ISO Transport Protocol specification ISO DP 8073", | ||||
| RFC 905, DOI 10.17487/RFC0905, April 1984, | ||||
| <https://www.rfc-editor.org/info/rfc905>. | ||||
| [RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed., | ||||
| Coltun, R., and F. Baker, "OSPF Version 2 Management | ||||
| Information Base", RFC 4750, DOI 10.17487/RFC4750, | ||||
| December 2006, <https://www.rfc-editor.org/info/rfc4750>. | ||||
| [RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP | ||||
| Synchronization", RFC 5443, DOI 10.17487/RFC5443, March | ||||
| 2009, <https://www.rfc-editor.org/info/rfc5443>. | ||||
| [RFC5643] Joyal, D., Ed. and V. Manral, Ed., "Management Information | ||||
| Base for OSPFv3", RFC 5643, DOI 10.17487/RFC5643, August | ||||
| 2009, <https://www.rfc-editor.org/info/rfc5643>. | ||||
| [RFC5649] Housley, R. and M. Dworkin, "Advanced Encryption Standard | ||||
| (AES) Key Wrap with Padding Algorithm", RFC 5649, | ||||
| DOI 10.17487/RFC5649, September 2009, | ||||
| <https://www.rfc-editor.org/info/rfc5649>. | ||||
| [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | ||||
| (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | ||||
| <https://www.rfc-editor.org/info/rfc5880>. | ||||
| [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | ||||
| (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, | ||||
| DOI 10.17487/RFC5881, June 2010, | ||||
| <https://www.rfc-editor.org/info/rfc5881>. | ||||
| Appendix A. Contributors' Addresses | ||||
| Dean Bogdanovic | Dean Bogdanovic | |||
| Volta Networks, Inc. | Volta Networks, Inc. | |||
| EMail: dean@voltanet.io | EMail: dean@voltanet.io | |||
| Kiran Koushik Agrahara Sreenivasa | Kiran Koushik Agrahara Sreenivasa | |||
| Cisco Systems | Verizon | |||
| 12515 Research Blvd, Bldg 4 | 500 W Dove Rd | |||
| Austin, TX 78681 | Southlake, TX 76092 | |||
| USA | USA | |||
| EMail: kkoushik@cisco.com | EMail: kk@employees.org | |||
| Authors' Addresses | Authors' Addresses | |||
| Derek Yeung | Derek Yeung | |||
| Arrcus | Arrcus | |||
| EMail: derek@arrcus.com | EMail: derek@arrcus.com | |||
| Yingzhen Qu | Yingzhen Qu | |||
| Huawei | Futurewei | |||
| 2330 Central Expressway | 2330 Central Expressway | |||
| Santa Clara, CA 95050 | Santa Clara, CA 95050 | |||
| USA | USA | |||
| EMail: yingzhen.qu@huawei.com | EMail: yingzhen.qu@futurewei.com | |||
| Jeffrey Zhang | Jeffrey Zhang | |||
| Juniper Networks | Juniper Networks | |||
| 10 Technology Park Drive | 10 Technology Park Drive | |||
| Westford, MA 01886 | Westford, MA 01886 | |||
| USA | USA | |||
| EMail: zzhang@juniper.net | EMail: zzhang@juniper.net | |||
| Ing-Wher Chen | Ing-Wher Chen | |||
| Jabil | The MITRE Corporation | |||
| EMail: ing-wher_chen@jabil.com | EMail: ingwherchen@mitre.org | |||
| Acee Lindem | Acee Lindem | |||
| Cisco Systems | Cisco Systems | |||
| 301 Midenhall Way | 301 Midenhall Way | |||
| Cary, NC 27513 | Cary, NC 27513 | |||
| EMail: acee@cisco.com | EMail: acee@cisco.com | |||
| End of changes. 583 change blocks. | ||||
| 1770 lines changed or deleted | 3041 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||