rfc9129.original | rfc9129.txt | |||
---|---|---|---|---|
Internet D. Yeung | Internet Engineering Task Force (IETF) D. Yeung | |||
Internet-Draft Arrcus | Request for Comments: 9129 Arrcus | |||
Intended status: Standards Track Y. Qu | Category: Standards Track Y. Qu | |||
Expires: April 19, 2020 Futurewei | ISSN: 2070-1721 Futurewei | |||
J. Zhang | J. Zhang | |||
Juniper Networks | Juniper Networks | |||
I. Chen | I. Chen | |||
The MITRE Corporation | The MITRE Corporation | |||
A. Lindem | A. Lindem | |||
Cisco Systems | Cisco Systems | |||
October 17, 2019 | September 2021 | |||
YANG Data Model for OSPF Protocol | YANG Data Model for the OSPF Protocol | |||
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. The model is based on YANG 1.1 as defined in RFC | and manage OSPF. The model is based on YANG 1.1 as defined in RFC | |||
7950 and conforms to the Network Management Datastore Architecture | 7950 and conforms to the Network Management Datastore Architecture | |||
(NMDA) as described in RFC 8342. | (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 is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on April 19, 2020. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9129. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2021 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 | |||
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements Language | |||
1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 | 1.2. Tree Diagrams | |||
2. Design of Data Model . . . . . . . . . . . . . . . . . . . . 3 | 2. Design of Data Model | |||
2.1. OSPF Operational State . . . . . . . . . . . . . . . . . 3 | 2.1. OSPF Operational State | |||
2.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.2. Overview | |||
2.3. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 5 | 2.3. OSPFv2 and OSPFv3 | |||
2.4. Optional Features . . . . . . . . . . . . . . . . . . . . 5 | 2.4. Optional Features | |||
2.5. OSPF Router Configuration/Operational State . . . . . . . 7 | 2.5. OSPF Router Configuration / Operational State | |||
2.6. OSPF Area Configuration/Operational State . . . . . . . . 10 | 2.6. OSPF Area Configuration / Operational State | |||
2.7. OSPF Interface Configuration/Operational State . . . . . 16 | 2.7. OSPF Interface Configuration / Operational State | |||
2.8. OSPF Notifications . . . . . . . . . . . . . . . . . . . 19 | 2.8. OSPF Notifications | |||
2.9. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 23 | 2.9. OSPF RPC Operations | |||
3. OSPF YANG Module . . . . . . . . . . . . . . . . . . . . . . 23 | 3. OSPF YANG Module | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 120 | 4. Security Considerations | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 123 | 5. IANA Considerations | |||
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 123 | 6. References | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 124 | 6.1. Normative References | |||
7.1. Normative References . . . . . . . . . . . . . . . . . . 124 | 6.2. Informative References | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 129 | Acknowledgments | |||
Appendix A. Contributors' Addresses . . . . . . . . . . . . . . 131 | Contributors | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 131 | Authors' Addresses | |||
1. Overview | 1. Overview | |||
YANG [RFC6020][RFC7950] is a data definition language used to define | YANG [RFC6020] [RFC7950] is a data definition language used to define | |||
the contents of a conceptual data store that allows networked devices | the contents of a conceptual datastore that allows networked devices | |||
to be managed using NETCONF [RFC6241], RESTCONF [RFC8040], and other | to be managed using the Network Configuration Protocol (NETCONF) | |||
Network Management protocols. Furthermore, YANG data models can be | [RFC6241], RESTCONF [RFC8040], and other network management | |||
used as the basis for implementation of other interfaces, such as CLI | protocols. Furthermore, YANG data models can be used as the basis | |||
and programmatic APIs. | for implementation of other interfaces, such as CLIs 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. It is an augmentation to the core routing data | |||
model. It fully conforms to the Network Management Datastore | model, which is defined in [RFC8349] and provides the basis for the | |||
Architecture (NMDA) [RFC8342]. A core routing data model is defined | development of data models for routing protocols. This document | |||
in [RFC8349], and it provides the basis for the development of data | fully conforms to the Network Management Datastore Architecture | |||
models for routing protocols. The interface data model is defined in | (NMDA) [RFC8342]. The interface data model is defined in [RFC8343] | |||
[RFC8343] and is used for referencing interfaces from the routing | and is used for referencing interfaces from the routing protocol. | |||
protocol. The key-chain data model used for OSPF authentication is | The data model for key chains [RFC8177] is used for OSPF | |||
defined in [RFC8177] and provides both a reference to configured key- | authentication and provides both a reference to configured key chains | |||
chains and an enumeration of cryptographic algorithms. | 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 include demand circuits [RFC1793], | |||
traffic engineering [RFC3630], multiple address family [RFC5838], | Traffic Engineering (TE) [RFC3630], multiple address families | |||
graceful restart [RFC3623] [RFC5187], NSSA [RFC3101], and OSPFv2 or | [RFC5838], graceful restart [RFC3623] [RFC5187], the Not-So-Stubby | |||
OSPFv3 as a PE-CE Protocol [RFC4577], [RFC6565]. These non-core | Area (NSSA) option [RFC3101], and OSPFv2 or OSPFv3 as a Provider Edge | |||
features are optional in the OSPF data model. | to Customer Edge (PE-CE) protocol [RFC4577] [RFC6565]. These non- | |||
core 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", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
1.2. Tree Diagrams | 1.2. Tree Diagrams | |||
This document uses the graphical representation of data models | This document uses the graphical representation of data models per | |||
defined in [RFC8340]. | [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 instance is tied to the routing domain and how | of how the protocol instance is tied to the routing domain and how | |||
multiple protocol instances are be instantiated among others. | multiple protocol instances are to 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 | user interface that is common to both OSPFv2 and OSPFv3. 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 the Network Management Datastore | configuration, consistent with the Network Management Datastore | |||
Architecture [RFC8342]. Consequently, only the routing container in | Architecture [RFC8342]. Consequently, only the "routing" container | |||
the ietf-routing model [RFC8349] is augmented. The routing-state | in the "ietf-routing" model [RFC8349] is augmented; the "routing- | |||
container is not augmented. | state" 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. The | control-plane-protocol" path defined in the "ietf-routing" module. | |||
ietf-ospf model defines a single instance of OSPF which may be | The "ietf-ospf" model defines a single instance of OSPF that may be | |||
instantiated as an OSPFv2 or OSPFv3 instance. Multiple instances are | instantiated as an OSPFv2 or OSPFv3 instance. Multiple instances are | |||
instantiated as multiple control-plane protocols instances. | instantiated as multiple control-plane protocol 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 af? identityref | +--rw af? identityref | |||
. | . | |||
. | . | |||
skipping to change at page 4, line 47 ¶ | skipping to change at line 184 ¶ | |||
| | . | | | . | |||
| +--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 container includes one OSPF protocol instance. The instance | The "ospf" container includes one OSPF protocol instance. The | |||
includes OSPF router level configuration and operational state. Each | instance includes OSPF router-level configuration and operational | |||
OSPF instance maps to a control-plane-protcol instance as defined in | state. Each OSPF instance maps to a control-plane protocol instance | |||
[RFC8349]. | as defined in [RFC8349]. | |||
The area and area/interface containers define the OSPF configuration | The "area" and "area/interface" containers define the OSPF | |||
and operational state for OSPF areas and interfaces respectively. | configuration and operational state for OSPF areas and interfaces, | |||
respectively. | ||||
The topologies 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" | |||
is supported. | feature 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 "version" field 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 go beyond the basic OSPF configuration. It is the | |||
the responsibility of each vendor to decide whether to support a | responsibility of each vendor to decide whether to support a given | |||
given feature on a particular device. | feature on a particular device. | |||
This model defines the following optional features: | This model defines the following optional features: | |||
1. multi-topology: Support Multi-Topology Routing (MTR) [RFC4915]. | multi-topology: Support for Multi-Topology (MT) routing [RFC4915]. | |||
2. multi-area-adj: Support OSPF multi-area adjacency [RFC5185]. | multi-area-adj: Support for OSPF multi-area adjacencies [RFC5185]. | |||
3. explicit-router-id: Support explicit per-instance Router-ID | explicit-router-id: Support for the specification of an explicit | |||
specification. | per-instance Router ID. | |||
4. demand-circuit: Support OSPF demand circuits [RFC1793]. | demand-circuit: Support for OSPF demand circuits [RFC1793]. | |||
5. mtu-ignore: Support disabling OSPF Database Description packet | mtu-ignore: Support for the disabling of OSPF Database Description | |||
MTU mismatch checking specified in section 10.6 of [RFC2328]. | packet MTU mismatch checking as specified in Section 10.6 of | |||
[RFC2328]. | ||||
6. lls: Support OSPF link-local signaling (LLS) [RFC5613]. | lls: Support for OSPF link-local signaling (LLS) [RFC5613]. | |||
7. prefix-suppression: Support OSPF prefix advertisement | prefix-suppression: Support for OSPF prefix advertisement | |||
suppression [RFC6860]. | suppression [RFC6860]. | |||
8. ttl-security: Support OSPF Time to Live (TTL) security check | ttl-security: Support for OSPF Time to Live (TTL) security checking | |||
support [RFC5082]. | [RFC5082]. | |||
9. nsr: Support OSPF Non-Stop Routing (NSR). The OSPF NSR feature | nsr: Support for OSPF Non-Stop Routing (NSR). The OSPF NSR feature | |||
allows a router with redundant control-plane capability (e.g., | allows a router with redundant control-plane capability (e.g., | |||
dual Route-Processor (RP) cards) to maintain its state and | dual Route Processor (RP) cards) to maintain its state and | |||
adjacencies during planned and unplanned control-plane | adjacencies during planned and unplanned control-plane processing | |||
processing restarts. It differs from graceful-restart or Non- | restarts. It differs from graceful restart or Non-Stop Forwarding | |||
Stop Forwarding (NSF) in that no protocol signaling or | (NSF) in that no protocol signaling or assistance from adjacent | |||
assistance from adjacent OSPF neighbors is required to recover | OSPF neighbors is required to recover control-plane state. | |||
control-plane state. | ||||
10. graceful-restart: Support Graceful OSPF Restart [RFC3623], | graceful-restart: Support for graceful OSPF restart [RFC3623] | |||
[RFC5187]. | [RFC5187]. | |||
11. auto-cost: Support OSPF interface cost calculation according to | auto-cost: Support for OSPF interface cost calculations according to | |||
reference bandwidth [RFC2328]. | reference bandwidth [RFC2328]. | |||
12. max-ecmp: Support configuration of the maximum number of Equal- | max-ecmp: Support for configuration of the maximum number of Equal- | |||
Cost Multi-Path (ECMP) paths. | Cost Multi-Path (ECMP) paths. | |||
13. max-lsa: Support configuration of the maximum number of LSAs the | max-lsa: Support for configuration of the maximum number of Link | |||
OSPF instance will accept [RFC1765]. | State Advertisements (LSAs) the OSPF instance will accept | |||
[RFC1765]. | ||||
14. te-rid: Support configuration of the Traffic Engineering (TE) | te-rid: Support for configuration of the Traffic Engineering (TE) | |||
Router-ID, i.e., the Router Address described in Section 2.4.1 | Router ID, i.e., the Router Address TLV as described in | |||
of [RFC3630] or the Router IPv6 Address TLV described in | Section 2.4.1 of [RFC3630] or the Router IPv6 Address TLV as | |||
Section 3 of [RFC5329]. | described in Section 3 of [RFC5329]. | |||
15. ldp-igp-sync: Support LDP IGP synchronization [RFC5443]. | ldp-igp-sync: Support for LDP IGP synchronization [RFC5443]. | |||
16. ospfv2-authentication-trailer: Support OSPFv2 Authentication | ospfv2-authentication-trailer: Support for the OSPFv2 Authentication | |||
trailer as specified in [RFC5709] or [RFC7474]. | Trailer as specified in [RFC5709] and [RFC7474]. | |||
17. ospfv3-authentication-ipsec: Support IPsec for OSPFv3 | ospfv3-authentication-ipsec: Support for IPsec for OSPFv3 | |||
authentication [RFC4552]. | authentication [RFC4552]. | |||
18. ospfv3-authentication-trailer: Support OSPFv3 Authentication | ospfv3-authentication-trailer: Support for the OSPFv3 Authentication | |||
trailer as specified in [RFC7166]. | Trailer as specified in [RFC7166]. | |||
19. fast-reroute: Support IP Fast Reroute (IP-FRR) [RFC5714]. | fast-reroute: Support for IP Fast Reroute (IP-FRR) [RFC5714]. | |||
20. node-flag: Support node-flag for OSPF prefixes. [RFC7684]. | node-flag: Support for node flags for OSPF prefixes [RFC7684]. | |||
21. node-tag: Support node admin tag for OSPF instances [RFC7777]. | node-tag: Support for node administrative tags for OSPF instances | |||
[RFC7777]. | ||||
22. lfa: Support Loop-Free Alternates (LFAs) [RFC5286]. | lfa: Support for Loop-Free Alternates (LFAs) [RFC5286]. | |||
23. remote-lfa: Support Remote Loop-Free Alternates (R-LFA) | remote-lfa: Support for Remote LFAs (R-LFAs) [RFC7490]. | |||
[RFC7490]. | ||||
24. stub-router: Support RFC 6987 OSPF Stub Router advertisement | stub-router: Support for OSPF stub router advertisements as defined | |||
[RFC6987]. | in [RFC6987]. | |||
25. pe-ce-protocol: Support OSPF as a PE-CE protocol [RFC4577], | pe-ce-protocol: Support for OSPF as a PE-CE protocol [RFC4577] | |||
[RFC6565]. | [RFC6565]. | |||
26. ietf-spf-delay: Support IETF SPF delay algorithm [RFC8405]. | ietf-spf-delay: Support for the IETF Shortest Path First (SPF) delay | |||
algorithm [RFC8405]. | ||||
27. bfd: Support BFD detection of OSPF neighbor reachability | bfd: Support for Bidirectional Forwarding Detection (BFD) to detect | |||
[RFC5880], [RFC5881], and [I-D.ietf-bfd-yang]. | OSPF neighbor reachability [RFC5880] [RFC5881] [RFC9127]. | |||
28. hybrid-interface: Support OSPF Hybrid Broadcast and Point-to- | hybrid-interface: Support for OSPF Hybrid Broadcast and point-to- | |||
Point Interfaces [RFC6845]. | point interfaces [RFC6845]. | |||
It is expected that vendors will support additional features through | It is expected that vendors will support additional features through | |||
vendor-specific augmentations. | vendor-specific augmentations. | |||
2.5. OSPF Router Configuration/Operational State | 2.5. OSPF Router Configuration / Operational State | |||
The ospf container is the top-level container in this data model. It | The "ospf" container is the top-level container in this data model. | |||
represents an OSPF protocol instance and contains the router level | It represents an OSPF protocol instance and contains the router-level | |||
configuration and operational state. The operational state includes | configuration and operational state. The operational state includes | |||
the instance statistics, IETF SPF delay statistics, AS-Scoped Link | instance statistics, IETF SPF delay statistics, the AS-Scoped Link | |||
State Database, local RIB, SPF Log, and the LSA log. | State Database (LSDB), the local RIB, the SPF log, and the LSA log. | |||
("AS" stands for "Autonomous System".) | ||||
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 af iana-rt-types:address-family | +--rw af iana-rt-types:address-family | |||
+--rw enable? boolean | +--rw enable? boolean | |||
+--rw explicit-router-id? rt-types:router-id | +--rw explicit-router-id? rt-types:router-id | |||
skipping to change at page 10, line 35 ¶ | skipping to change at line 465 ¶ | |||
| | +--ro link-id? union | | | +--ro link-id? union | |||
| | +--ro type? uint16 | | | +--ro type? uint16 | |||
| | +--ro lsa-id? yang:dotted-quad | | | +--ro lsa-id? yang:dotted-quad | |||
| | +--ro adv-router? yang:dotted-quad | | | +--ro adv-router? yang:dotted-quad | |||
| | +--ro seq-num? uint32 | | | +--ro seq-num? uint32 | |||
| +--ro received-timestamp? yang:timestamp | | +--ro received-timestamp? yang:timestamp | |||
| +--ro reason? identityref | | +--ro reason? identityref | |||
. | . | |||
. | . | |||
2.6. 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 area statistics and the | |||
the Area Link State Database (LSDB). | area 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 areas | |||
| +--rw area* [area-id] | | +--rw area* [area-id] | |||
| +--rw area-id area-id-type | | +--rw area-id area-id-type | |||
skipping to change at page 16, line 40 ¶ | skipping to change at line 758 ¶ | |||
| | | yang:counter32 | | | | yang:counter32 | |||
| | | +--ro nbr-retrans-qlen? | | | | +--ro nbr-retrans-qlen? | |||
| | | yang:gauge32 | | | | yang:gauge32 | |||
| | +--ro database | | | +--ro database | |||
| | +--ro link-scope-lsa-type* [lsa-type] | | | +--ro link-scope-lsa-type* [lsa-type] | |||
| | +--ro lsa-type uint16 | | | +--ro lsa-type uint16 | |||
| | +--ro link-scope-lsas | | | +--ro link-scope-lsas | |||
. . | . . | |||
. . | . . | |||
2.7. 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, the list of neighbors, and the link-local 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 areas | |||
| +--rw area* [area-id] | | +--rw area* [area-id] | |||
| . | | . | |||
| . | | . | |||
| +--rw interfaces | | +--rw interfaces | |||
| +--rw interface* [name] | | +--rw interface* [name] | |||
| +--rw name if:interface-ref | | +--rw name if:interface-ref | |||
| +--rw interface-type? enumeration | | +--rw interface-type? enumeration | |||
| +--rw passive? boolean | | +--rw passive? boolean | |||
skipping to change at page 19, line 37 ¶ | skipping to change at line 898 ¶ | |||
| | +--rw topology* [name] | | | +--rw topology* [name] | |||
| | +--rw name -> ../../../../../../../../ | | | +--rw name -> ../../../../../../../../ | |||
| | ../../../rt:ribs/rib/name | | | ../../../rt:ribs/rib/name | |||
| | +--rw cost? uint32 | | | +--rw cost? uint32 | |||
| +--rw instance-id? uint8 | | +--rw instance-id? uint8 | |||
. | . | |||
. | . | |||
2.8. OSPF Notifications | 2.8. OSPF Notifications | |||
This YANG model defines a list of notifications that inform YANG | This YANG data 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? | |||
skipping to change at page 23, line 23 ¶ | skipping to change at line 1076 ¶ | |||
+ [rt:name=current()/../routing-protocol-name]/ | + [rt:name=current()/../routing-protocol-name]/ | |||
+ ospf:ospf/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.9. 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 Link State | clear-database: Resets the contents of a particular OSPF LSDB. | |||
Database. | ||||
o clear-neighbor: Reset a particular OSPF neighbor or group of | clear-neighbor: Resets a particular OSPF neighbor or group of | |||
neighbors associated with an OSPF interface. | 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 | |||
The following RFCs and drafts are not referenced in the document text | The following RFCs are referenced in the "ietf-ospf" YANG module: | |||
but are referenced in the ietf-ospf.yang module: [RFC0905], | [RFC0905], [RFC1765], [RFC1793], [RFC2328], [RFC3101], [RFC3623], | |||
[RFC4576], [RFC4973], [RFC5250], [RFC5309], [RFC5642], [RFC5881], | [RFC3630], [RFC4552], [RFC4576], [RFC4577], [RFC4915], [RFC4973], | |||
[RFC6991], [RFC7770], [RFC7884], [RFC8294], and [RFC8476]. | [RFC5082], [RFC5185], [RFC5187], [RFC5250], [RFC5286], [RFC5309], | |||
[RFC5329], [RFC5340], [RFC5443], [RFC5613], [RFC5642], [RFC5709], | ||||
[RFC5714], [RFC5838], [RFC5880], [RFC5881], [RFC6565], [RFC6845], | ||||
[RFC6860], [RFC6987], [RFC6991], [RFC7166], [RFC7474], [RFC7490], | ||||
[RFC7684], [RFC7770], [RFC7777], [RFC7884], [RFC8177], [RFC8294], | ||||
[RFC8343], [RFC8349], [RFC8405], [RFC8476], and [RFC9127]. | ||||
<CODE BEGINS> file "ietf-ospf@2019-10-17.yang" | <CODE BEGINS> file "ietf-ospf@2021-09-03.yang" | |||
module ietf-ospf { | module ietf-ospf { | |||
yang-version 1.1; | 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"; | 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"; | 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 | reference | |||
Management (NMDA Version)"; | "RFC 8343: A YANG Data Model for Interface Management"; | |||
} | } | |||
import ietf-routing-types { | import ietf-routing-types { | |||
prefix "rt-types"; | prefix "rt-types"; | |||
reference "RFC 8294: Common YANG Data Types for the | reference | |||
Routing Area"; | "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 | reference | |||
Routing Area"; | "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 | reference | |||
Management (NMDA Version)"; | "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"; | reference | |||
"RFC 8177: YANG Data Model for Key Chains"; | ||||
} | } | |||
import ietf-bfd-types { | import ietf-bfd-types { | |||
prefix "bfd-types"; | prefix "bfd-types"; | |||
reference "RFC YYYY: YANG Data Model for Bidirectional | reference | |||
Forwarding Detection (BFD). Please replace YYYY with | "RFC 9127: YANG Data Model for Bidirectional Forwarding | |||
published RFC number for draft-ietf-bfd-yang."; | Detection (BFD)"; | |||
} | } | |||
organization | organization | |||
"IETF LSR - Link State Routing Working Group"; | "IETF Link State Routing (lsr) Working Group"; | |||
contact | contact | |||
"WG Web: <https://datatracker.ietf.org/group/lsr/> | "WG Web: <https://datatracker.ietf.org/wg/lsr/> | |||
WG List: <mailto:lsr@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@futurewei.com> | <mailto:yingzhen.qu@futurewei.com> | |||
Author: Salih K A | Author: Salih K A | |||
<mailto:salih@juniper.net> | <mailto:salih@juniper.net> | |||
Author: Ing-Wher Chen | Author: Ing-Wher Chen | |||
<mailto:ingwherchen@mitre.org>"; | <mailto:ingwherchen@mitre.org>"; | |||
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. | |||
This YANG model conforms to the Network Management | This YANG data model conforms to the Network Management | |||
Datastore Architecture (NMDA) as described in RFC 8242. | Datastore Architecture (NMDA) as described in RFC 8342. | |||
Copyright (c) 2018 IETF Trust and the persons identified as | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | ||||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
they appear in all capitals, as shown here. | ||||
Copyright (c) 2021 IETF Trust and the persons identified as | ||||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC 9129; see the | |||
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | RFC itself for full legal notices."; | |||
for full legal notices. | ||||
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | ||||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | ||||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
they appear in all capitals, as shown here. | ||||
This version of this YANG module is part of RFC XXXX; | ||||
see the RFC itself for full legal notices."; | ||||
revision 2019-10-17 { | revision 2021-09-03 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for OSPF."; | "RFC 9129: YANG Data Model for the OSPF Protocol"; | |||
} | } | |||
feature multi-topology { | feature multi-topology { | |||
description | description | |||
"Support Multiple-Topology Routing (MTR)."; | "Support for Multi-Topology (MT) routing."; | |||
reference "RFC 4915: Multi-Topology Routing"; | reference | |||
"RFC 4915: Multi-Topology (MT) Routing in OSPF"; | ||||
} | } | |||
feature multi-area-adj { | feature multi-area-adj { | |||
description | description | |||
"OSPF multi-area adjacency support as in RFC 5185."; | "Support for OSPF multi-area adjacencies as described in | |||
reference "RFC 5185: Multi-Area Adjacency"; | RFC 5185."; | |||
reference | ||||
"RFC 5185: OSPF Multi-Area Adjacency"; | ||||
} | } | |||
feature explicit-router-id { | feature explicit-router-id { | |||
description | description | |||
"Set Router-ID per instance explicitly."; | "Sets the Router ID per instance explicitly."; | |||
} | } | |||
feature demand-circuit { | feature demand-circuit { | |||
description | description | |||
"OSPF demand circuit support as in RFC 1793."; | "Support for OSPF demand circuits as defined in RFC 1793."; | |||
reference "RFC 1793: OSPF Demand Circuits"; | reference | |||
"RFC 1793: Extending OSPF to Support Demand Circuits"; | ||||
} | } | |||
feature mtu-ignore { | feature mtu-ignore { | |||
description | description | |||
"Disable OSPF Database Description packet MTU | "Disable OSPF Database Description packet MTU | |||
mismatch checking specified in the OSPF | mismatch checking as specified in the OSPFv2 | |||
protocol specification."; | protocol specification (RFC 2328)."; | |||
reference "RFC 2328: OSPF Version 2, section 10.6"; | 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 defined in RFC 5613."; | |||
reference "RFC 5613: OSPF Link-Local Signaling"; | 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 described in RFC 6860."; | |||
reference "RFC 6860: Hide Transit-Only Networks in OSPF"; | reference | |||
"RFC 6860: Hiding Transit-Only Networks in OSPF"; | ||||
} | } | |||
feature ttl-security { | feature ttl-security { | |||
description | description | |||
"OSPF Time to Live (TTL) security check support."; | "Support for OSPF Time to Live (TTL) security checking."; | |||
reference "RFC 5082: The Generalized TTL Security | reference | |||
Mechanism (GTSM)"; | "RFC 5082: The Generalized TTL Security Mechanism (GTSM)"; | |||
} | } | |||
feature nsr { | feature nsr { | |||
description | description | |||
"Non-Stop-Routing (NSR) support. The OSPF NSR feature | "Non-Stop-Routing (NSR) support. The OSPF NSR feature | |||
allows a router with redundant control-plane capability | allows a router with redundant control-plane capability | |||
(e.g., dual Route-Processor (RP) cards) to maintain its | (e.g., dual Route Processor (RP) cards) to maintain its | |||
state and adjacencies during planned and unplanned | state and adjacencies during planned and unplanned | |||
OSPF instance restarts. It differs from graceful-restart | OSPF instance restarts. It differs from graceful restart | |||
or Non-Stop Forwarding (NSF) in that no protocol signaling | or Non-Stop Forwarding (NSF) in that no protocol signaling | |||
or assistance from adjacent OSPF neighbors is required to | or assistance from adjacent OSPF neighbors is required to | |||
recover control-plane state."; | 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 RFCs 3623 and 5187."; | |||
RFC 5187."; | reference | |||
reference "RFC 3623: Graceful OSPF Restart | "RFC 3623: Graceful OSPF Restart | |||
RFC 5187: OSPFv3 Graceful Restart"; | RFC 5187: OSPFv3 Graceful Restart"; | |||
} | } | |||
feature auto-cost { | feature auto-cost { | |||
description | description | |||
"Calculate OSPF interface cost according to | "Calculates the OSPF interface cost according to | |||
reference bandwidth."; | reference bandwidth."; | |||
reference "RFC 2328: OSPF Version 2"; | reference | |||
"RFC 2328: OSPF Version 2"; | ||||
} | } | |||
feature max-ecmp { | feature max-ecmp { | |||
description | description | |||
"Setting maximum number of ECMP paths."; | "Sets the maximum number of ECMP paths."; | |||
} | } | |||
feature max-lsa { | feature max-lsa { | |||
description | description | |||
"Setting the maximum number of LSAs the OSPF instance | "Sets the maximum number of Link State Advertisements (LSAs) | |||
will accept."; | the OSPF instance will accept."; | |||
reference "RFC 1765: OSPF Database Overload"; | reference | |||
"RFC 1765: OSPF Database Overflow"; | ||||
} | } | |||
feature te-rid { | feature te-rid { | |||
description | description | |||
"Support configuration of the Traffic Engineering (TE) | "Support for configuration of the Traffic Engineering (TE) | |||
Router-ID, i.e., the Router Address described in Section | Router ID, i.e., the Router Address TLV as described in | |||
2.4.1 of RFC3630 or the Router IPv6 Address TLV described | Section 2.4.1 of RFC 3630 or the Router IPv6 Address TLV | |||
in Section 3 of RFC5329."; | as described in Section 3 of RFC 5329."; | |||
reference "RFC 3630: Traffic Engineering (TE) Extensions | reference | |||
to OSPF Version 2 | "RFC 3630: Traffic Engineering (TE) Extensions to | |||
RFC 5329: Traffic Engineering (TE) Extensions | OSPF Version 2, Section 2.4.1 | |||
to OSPF Version 3"; | RFC 5329: Traffic Engineering Extensions to OSPF Version 3, | |||
Section 3"; | ||||
} | } | |||
feature ldp-igp-sync { | feature ldp-igp-sync { | |||
description | description | |||
"LDP IGP synchronization."; | "LDP IGP synchronization."; | |||
reference "RFC 5443: LDP IGP Synchronization"; | reference | |||
"RFC 5443: LDP IGP Synchronization"; | ||||
} | } | |||
feature ospfv2-authentication-trailer { | feature ospfv2-authentication-trailer { | |||
description | description | |||
"Support OSPFv2 authentication trailer for OSPFv2 | "Support for the OSPFv2 Authentication Trailer for OSPFv2 | |||
authentication."; | authentication."; | |||
reference "RFC 5709: Supporting Authentication | reference | |||
Trailer for OSPFv2 | "RFC 5709: OSPFv2 HMAC-SHA Cryptographic Authentication | |||
RFC 7474: Security Extension for OSPFv2 When | RFC 7474: Security Extension for OSPFv2 When | |||
Using Manual Key Management"; | Using Manual Key Management"; | |||
} | } | |||
feature ospfv3-authentication-ipsec { | feature ospfv3-authentication-ipsec { | |||
description | description | |||
"Support IPsec for OSPFv3 authentication."; | "Support for IPsec for OSPFv3 authentication."; | |||
reference "RFC 4552: Authentication/Confidentiality | reference | |||
for OSPFv3"; | "RFC 4552: Authentication/Confidentiality for OSPFv3"; | |||
} | } | |||
feature ospfv3-authentication-trailer { | feature ospfv3-authentication-trailer { | |||
description | description | |||
"Support OSPFv3 authentication trailer for OSPFv3 | "Support for the OSPFv3 Authentication Trailer for OSPFv3 | |||
authentication."; | authentication."; | |||
reference "RFC 7166: Supporting Authentication | reference | |||
Trailer for OSPFv3"; | "RFC 7166: Supporting Authentication Trailer for OSPFv3"; | |||
} | } | |||
feature fast-reroute { | feature fast-reroute { | |||
description | description | |||
"Support for IP Fast Reroute (IP-FRR)."; | "Support for IP Fast Reroute (IP-FRR)."; | |||
reference "RFC 5714: IP Fast Reroute Framework"; | reference | |||
"RFC 5714: IP Fast Reroute Framework"; | ||||
} | } | |||
feature key-chain { | feature key-chain { | |||
description | description | |||
"Support of keychain for authentication."; | "Support of key chains for authentication."; | |||
reference "RFC8177: YANG Data Model for Key Chains"; | reference | |||
"RFC 8177: YANG Data Model for Key Chains"; | ||||
} | } | |||
feature node-flag { | feature node-flag { | |||
description | description | |||
"Support for node-flag for OSPF prefixes."; | "Support for node flags for OSPF prefixes."; | |||
reference "RFC 7684: OSPFv2 Prefix/Link Advertisement"; | reference | |||
"RFC 7684: OSPFv2 Prefix/Link Attribute Advertisement"; | ||||
} | } | |||
feature node-tag { | feature node-tag { | |||
description | description | |||
"Support for node admin tag for OSPF routing instances."; | "Support for node administrative tags for OSPF routing | |||
reference "RFC 7777: Advertising Node Administrative | instances."; | |||
Tags in OSPF"; | reference | |||
"RFC 7777: Advertising Node Administrative Tags in OSPF"; | ||||
} | } | |||
feature lfa { | feature lfa { | |||
description | description | |||
"Support for Loop-Free Alternates (LFAs)."; | "Support for Loop-Free Alternates (LFAs)."; | |||
reference "RFC 5286: Basic Specification for IP Fast | reference | |||
Reroute: Loop-Free Alternates"; | "RFC 5286: Basic Specification for IP Fast Reroute: | |||
Loop-Free Alternates"; | ||||
} | } | |||
feature remote-lfa { | feature remote-lfa { | |||
description | description | |||
"Support for Remote Loop-Free Alternates (R-LFA)."; | "Support for Remote LFAs (R-LFAs)."; | |||
reference "RFC 7490: Remote Loop-Free Alternate (LFA) | reference | |||
Fast Reroute (FRR)"; | "RFC 7490: Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)"; | |||
} | } | |||
feature stub-router { | feature stub-router { | |||
description | description | |||
"Support for RFC 6987 OSPF Stub Router Advertisement."; | "Support for OSPF stub router advertisements as defined in | |||
reference "RFC 6987: OSPF Stub Router Advertisement"; | RFC 6987."; | |||
reference | ||||
"RFC 6987: OSPF Stub Router Advertisement"; | ||||
} | } | |||
feature pe-ce-protocol { | feature pe-ce-protocol { | |||
description | description | |||
"Support for OSPF as a PE-CE protocol"; | "Support for OSPF as a Provider Edge to Customer Edge (PE-CE) | |||
reference "RFC 4577: OSPF as the Provider/Customer Edge | protocol."; | |||
Protocol for BGP/MPLS IP Virtual Private | reference | |||
Networks (VPNs) | "RFC 4577: OSPF as the Provider/Customer Edge Protocol | |||
RFC 6565: OSPFv3 as a Provider Edge to Customer | for BGP/MPLS IP Virtual Private Networks (VPNs) | |||
Edge (PE-CE) Routing Protocol"; | 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 for IETF SPF delay algorithm."; | "Support for the IETF Shortest Path First (SPF) delay | |||
reference "RFC 8405: SPF Back-off algorithm for link | algorithm."; | |||
state IGPs"; | reference | |||
"RFC 8405: Shortest Path First (SPF) Back-Off Delay Algorithm | ||||
for Link-State IGPs"; | ||||
} | } | |||
feature bfd { | feature bfd { | |||
description | description | |||
"Support for BFD detection of OSPF neighbor reachability."; | "Support for BFD to detect OSPF neighbor reachability."; | |||
reference "RFC 5880: Bidirectional Forwarding Detection (BFD) | reference | |||
RFC 5881: Bidirectional Forwarding Detection | "RFC 5880: Bidirectional Forwarding Detection (BFD) | |||
(BFD) for IPv4 and IPv6 (Single Hop)"; | RFC 5881: Bidirectional Forwarding Detection | |||
(BFD) for IPv4 and IPv6 (Single Hop)"; | ||||
} | } | |||
feature hybrid-interface { | feature hybrid-interface { | |||
description | description | |||
"Support for OSPF Hybrid interface type."; | "Support for the OSPF Hybrid interface type."; | |||
reference "RFC 6845: OSPF Hybrid Broadcast and | reference | |||
Point-to-Multipoint Interface Type"; | "RFC 6845: OSPF Hybrid Broadcast and | |||
Point-to-Multipoint Interface Type"; | ||||
} | } | |||
identity ospf { | identity ospf { | |||
base "rt:routing-protocol"; | base "rt:routing-protocol"; | |||
description "Any OSPF protocol version"; | description | |||
"Any OSPF protocol version."; | ||||
} | } | |||
identity ospfv2 { | identity ospfv2 { | |||
base "ospf"; | base "ospf"; | |||
description "OSPFv2 protocol"; | description | |||
"OSPFv2 protocol."; | ||||
} | } | |||
identity ospfv3 { | identity ospfv3 { | |||
base "ospf"; | base "ospf"; | |||
description "OSPFv3 protocol"; | description | |||
"OSPFv3 protocol."; | ||||
} | } | |||
identity area-type { | identity area-type { | |||
description "Base identity for OSPF area type."; | description | |||
"Base identity for an OSPF area type."; | ||||
} | } | |||
identity normal-area { | identity normal-area { | |||
base area-type; | base area-type; | |||
description "OSPF normal area."; | description | |||
"OSPF normal area."; | ||||
} | } | |||
identity stub-nssa-area { | identity stub-nssa-area { | |||
base area-type; | base area-type; | |||
description "OSPF stub or NSSA area."; | description | |||
"OSPF stub area or Not-So-Stubby Area (NSSA)."; | ||||
} | } | |||
identity stub-area { | identity stub-area { | |||
base stub-nssa-area; | base stub-nssa-area; | |||
description "OSPF stub area."; | description | |||
"OSPF stub area."; | ||||
} | } | |||
identity nssa-area { | identity nssa-area { | |||
base stub-nssa-area; | base stub-nssa-area; | |||
description "OSPF Not-So-Stubby Area (NSSA)."; | description | |||
reference "RFC 3101: The OSPF Not-So-Stubby Area | "OSPF NSSA."; | |||
(NSSA) Option"; | reference | |||
"RFC 3101: The OSPF Not-So-Stubby Area (NSSA) Option"; | ||||
} | } | |||
identity ospf-lsa-type { | identity ospf-lsa-type { | |||
description | description | |||
"Base identity for OSPFv2 and OSPFv3 | "Base identity for OSPFv2 and OSPFv3 | |||
Link State Advertisement (LSA) types"; | Link State Advertisement (LSA) types."; | |||
} | } | |||
identity ospfv2-lsa-type { | identity ospfv2-lsa-type { | |||
base ospf-lsa-type; | base ospf-lsa-type; | |||
description | description | |||
"OSPFv2 LSA types"; | "OSPFv2 LSA types."; | |||
} | } | |||
identity ospfv2-router-lsa { | identity ospfv2-router-lsa { | |||
base ospfv2-lsa-type; | base ospfv2-lsa-type; | |||
description | description | |||
"OSPFv2 Router LSA - Type 1"; | "OSPFv2 Router LSA - Type 1."; | |||
} | } | |||
identity ospfv2-network-lsa { | identity ospfv2-network-lsa { | |||
base ospfv2-lsa-type; | base ospfv2-lsa-type; | |||
description | description | |||
"OSPFv2 Network LSA - Type 2"; | "OSPFv2 Network LSA - Type 2."; | |||
} | } | |||
identity ospfv2-summary-lsa-type { | identity ospfv2-summary-lsa-type { | |||
base ospfv2-lsa-type; | base ospfv2-lsa-type; | |||
description | description | |||
"OSPFv2 Summary LSA types"; | "OSPFv2 Summary LSA types."; | |||
} | } | |||
identity ospfv2-network-summary-lsa { | identity ospfv2-network-summary-lsa { | |||
base ospfv2-summary-lsa-type; | base ospfv2-summary-lsa-type; | |||
description | description | |||
"OSPFv2 Network Summary LSA - Type 3"; | "OSPFv2 Network Summary LSA - Type 3."; | |||
} | } | |||
identity ospfv2-asbr-summary-lsa { | identity ospfv2-asbr-summary-lsa { | |||
base ospfv2-summary-lsa-type; | base ospfv2-summary-lsa-type; | |||
description | description | |||
"OSPFv2 AS Boundary Router (ASBR) Summary LSA - Type 4"; | "OSPFv2 Autonomous System Boundary Router (ASBR) Summary LSA - | |||
Type 4."; | ||||
} | } | |||
identity ospfv2-external-lsa-type { | identity ospfv2-external-lsa-type { | |||
base ospfv2-lsa-type; | base ospfv2-lsa-type; | |||
description | description | |||
"OSPFv2 External LSA types"; | "OSPFv2 External LSA types."; | |||
} | } | |||
identity ospfv2-as-external-lsa { | identity ospfv2-as-external-lsa { | |||
base ospfv2-external-lsa-type; | base ospfv2-external-lsa-type; | |||
description | description | |||
"OSPFv2 AS External LSA - Type 5"; | "OSPFv2 AS External LSA - Type 5."; | |||
} | } | |||
identity ospfv2-nssa-lsa { | identity ospfv2-nssa-lsa { | |||
base ospfv2-external-lsa-type; | base ospfv2-external-lsa-type; | |||
description | description | |||
"OSPFv2 Not-So-Stubby-Area (NSSA) LSA - Type 7"; | "OSPFv2 NSSA LSA - Type 7."; | |||
} | } | |||
identity ospfv2-opaque-lsa-type { | identity ospfv2-opaque-lsa-type { | |||
base ospfv2-lsa-type; | base ospfv2-lsa-type; | |||
description | description | |||
"OSPFv2 Opaque LSA types"; | "OSPFv2 Opaque LSA types."; | |||
reference | ||||
"RFC 5250: The OSPF Opaque LSA Option"; | ||||
} | } | |||
identity ospfv2-link-scope-opaque-lsa { | identity ospfv2-link-scope-opaque-lsa { | |||
base ospfv2-opaque-lsa-type; | base ospfv2-opaque-lsa-type; | |||
description | description | |||
"OSPFv2 Link-Scoped Opaque LSA - Type 9"; | "OSPFv2 Link-Scoped Opaque LSA - Type 9."; | |||
} | } | |||
identity ospfv2-area-scope-opaque-lsa { | identity ospfv2-area-scope-opaque-lsa { | |||
base ospfv2-opaque-lsa-type; | base ospfv2-opaque-lsa-type; | |||
description | description | |||
"OSPFv2 Area-Scoped Opaque LSA - Type 10"; | "OSPFv2 Area-Scoped Opaque LSA - Type 10."; | |||
} | } | |||
identity ospfv2-as-scope-opaque-lsa { | identity ospfv2-as-scope-opaque-lsa { | |||
base ospfv2-opaque-lsa-type; | base ospfv2-opaque-lsa-type; | |||
description | description | |||
"OSPFv2 AS-Scoped Opaque LSA - Type 11"; | "OSPFv2 AS-Scoped Opaque LSA - Type 11."; | |||
} | } | |||
identity ospfv2-unknown-lsa-type { | identity ospfv2-unknown-lsa-type { | |||
base ospfv2-lsa-type; | base ospfv2-lsa-type; | |||
description | description | |||
"OSPFv2 Unknown LSA type"; | "OSPFv2 unknown LSA type."; | |||
} | } | |||
identity ospfv3-lsa-type { | identity ospfv3-lsa-type { | |||
base ospf-lsa-type; | base ospf-lsa-type; | |||
description | description | |||
"OSPFv3 LSA types."; | "OSPFv3 LSA types."; | |||
reference | ||||
"RFC 5340: OSPF for IPv6"; | ||||
} | } | |||
identity ospfv3-router-lsa { | identity ospfv3-router-lsa { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
description | description | |||
"OSPFv3 Router LSA - Type 0x2001"; | "OSPFv3 Router LSA - Type 0x2001."; | |||
} | } | |||
identity ospfv3-network-lsa { | identity ospfv3-network-lsa { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
description | description | |||
"OSPFv3 Network LSA - Type 0x2002"; | "OSPFv3 Network LSA - Type 0x2002."; | |||
} | } | |||
identity ospfv3-summary-lsa-type { | identity ospfv3-summary-lsa-type { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
description | description | |||
"OSPFv3 Summary LSA types"; | "OSPFv3 Summary LSA types."; | |||
} | } | |||
identity ospfv3-inter-area-prefix-lsa { | identity ospfv3-inter-area-prefix-lsa { | |||
base ospfv3-summary-lsa-type; | base ospfv3-summary-lsa-type; | |||
description | description | |||
"OSPFv3 Inter-area Prefix LSA - Type 0x2003"; | "OSPFv3 Inter-area Prefix LSA - Type 0x2003."; | |||
} | } | |||
identity ospfv3-inter-area-router-lsa { | identity ospfv3-inter-area-router-lsa { | |||
base ospfv3-summary-lsa-type; | base ospfv3-summary-lsa-type; | |||
description | description | |||
"OSPFv3 Inter-area Router LSA - Type 0x2004"; | "OSPFv3 Inter-area Router LSA - Type 0x2004."; | |||
} | } | |||
identity ospfv3-external-lsa-type { | identity ospfv3-external-lsa-type { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
description | description | |||
"OSPFv3 External LSA types"; | "OSPFv3 External LSA types."; | |||
} | } | |||
identity ospfv3-as-external-lsa { | identity ospfv3-as-external-lsa { | |||
base ospfv3-external-lsa-type; | base ospfv3-external-lsa-type; | |||
description | description | |||
"OSPFv3 AS-External LSA - Type 0x4005"; | "OSPFv3 AS-External LSA - Type 0x4005."; | |||
} | } | |||
identity ospfv3-nssa-lsa { | identity ospfv3-nssa-lsa { | |||
base ospfv3-external-lsa-type; | base ospfv3-external-lsa-type; | |||
description | description | |||
"OSPFv3 Not-So-Stubby-Area (NSSA) LSA - Type 0x2007"; | "OSPFv3 NSSA LSA - Type 0x2007."; | |||
} | } | |||
identity ospfv3-link-lsa { | identity ospfv3-link-lsa { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
description | description | |||
"OSPFv3 Link LSA - Type 0x0008"; | "OSPFv3 link LSA - Type 0x0008."; | |||
} | } | |||
identity ospfv3-intra-area-prefix-lsa { | identity ospfv3-intra-area-prefix-lsa { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
description | description | |||
"OSPFv3 Intra-area Prefix LSA - Type 0x2009"; | "OSPFv3 Intra-area Prefix LSA - Type 0x2009."; | |||
} | } | |||
identity ospfv3-router-information-lsa { | identity ospfv3-router-information-lsa { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
description | description | |||
"OSPFv3 Router Information LSA - Types 0x800C, | "OSPFv3 Router Information LSA - Types 0x800C, | |||
0xA00C, and 0xC00C"; | 0xA00C, and 0xC00C."; | |||
} | } | |||
identity ospfv3-unknown-lsa-type { | identity ospfv3-unknown-lsa-type { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
description | description | |||
"OSPFv3 Unknown LSA type"; | "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 | |||
"Identity used when the LSA is logged | "Identity used when the LSA is logged | |||
as a result of receiving a refresh LSA."; | as a result of receiving a refresh LSA."; | |||
} | } | |||
identity lsa-content-change { | identity lsa-content-change { | |||
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 a change in the content | as a result of a change in the contents | |||
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."; | |||
} | } | |||
identity informational-capability { | identity informational-capability { | |||
description | description | |||
"Base identity for router informational capabilities."; | "Base identity for router informational capabilities."; | |||
} | } | |||
identity graceful-restart { | identity graceful-restart { | |||
base informational-capability; | base informational-capability; | |||
description | description | |||
"When set, the router is capable of restarting | "When set, the router is capable of restarting | |||
gracefully."; | gracefully."; | |||
reference "RFC 3623: Graceful OSPF Restart | reference | |||
RFC 5187: OSPFv3 Graceful Restart"; | "RFC 3623: Graceful OSPF Restart | |||
RFC 5187: OSPFv3 Graceful Restart"; | ||||
} | } | |||
identity graceful-restart-helper { | identity graceful-restart-helper { | |||
base informational-capability; | base informational-capability; | |||
description | description | |||
"When set, the router is capable of acting as | "When set, the router is capable of acting as | |||
a graceful restart helper."; | a graceful restart helper."; | |||
reference "RFC 3623: Graceful OSPF Restart | reference | |||
RFC 5187: OSPFv3 Graceful Restart"; | "RFC 3623: Graceful OSPF Restart | |||
RFC 5187: OSPFv3 Graceful Restart"; | ||||
} | } | |||
identity stub-router { | identity stub-router { | |||
base informational-capability; | base informational-capability; | |||
description | description | |||
"When set, the router is capable of acting as | "When set, the router is capable of acting as | |||
an OSPF Stub Router."; | an OSPF stub router."; | |||
reference "RFC 6987: OSPF Stub Router Advertisement"; | reference | |||
"RFC 6987: OSPF Stub Router Advertisement"; | ||||
} | } | |||
identity traffic-engineering { | identity traffic-engineering { | |||
base informational-capability; | base informational-capability; | |||
description | description | |||
"When set, the router is capable of OSPF traffic | "When set, the router is capable of OSPF TE."; | |||
engineering."; | reference | |||
reference "RFC 3630: Traffic Engineering (TE) Extensions | "RFC 3630: Traffic Engineering (TE) Extensions to | |||
to OSPF Version 2 | OSPF Version 2 | |||
RFC 5329: Traffic Engineering (TE) Extensions | RFC 5329: Traffic Engineering Extensions to OSPF Version 3"; | |||
to OSPF Version 3"; | ||||
} | } | |||
identity p2p-over-lan { | identity p2p-over-lan { | |||
base informational-capability; | base informational-capability; | |||
description | description | |||
"When set, the router is capable of OSPF Point-to-Point | "When set, the router is capable of OSPF point-to-point | |||
over LAN."; | over a LAN."; | |||
reference "RFC 5309: Point-to-Point Operation over LAN | reference | |||
in Link State Routing Protocols"; | "RFC 5309: Point-to-Point Operation over LAN in Link State | |||
Routing Protocols"; | ||||
} | } | |||
identity experimental-te { | identity experimental-te { | |||
base informational-capability; | base informational-capability; | |||
description | description | |||
"When set, the router is capable of OSPF experimental | "When set, the router is capable of OSPF experimental TE."; | |||
traffic engineering."; | ||||
reference | reference | |||
"RFC 4973: OSPF-xTE OSPF Experimental Traffic | "RFC 4973: OSPF-xTE: Experimental Extension to OSPF for | |||
Engineering"; | Traffic Engineering"; | |||
} | } | |||
identity router-lsa-bit { | identity router-lsa-bit { | |||
description | description | |||
"Base identity for Router-LSA bits."; | "Base identity for Router-LSA bits."; | |||
} | } | |||
identity vlink-end-bit { | identity vlink-end-bit { | |||
base router-lsa-bit; | base router-lsa-bit; | |||
description | description | |||
"V bit, when set, the router is an endpoint of one or | "V-bit. When set, the router is an endpoint of one or | |||
more virtual links."; | more virtual links."; | |||
} | } | |||
identity asbr-bit { | identity asbr-bit { | |||
base router-lsa-bit; | base router-lsa-bit; | |||
description | description | |||
"E bit, when set, the router is an AS Boundary | "E-bit. When set, the router is an Autonomous System | |||
Router (ASBR)."; | Boundary Router (ASBR)."; | |||
} | } | |||
identity abr-bit { | identity abr-bit { | |||
base router-lsa-bit; | base router-lsa-bit; | |||
description | description | |||
"B bit, when set, the router is an Area Border | "B-bit. When set, the router is an Area Border | |||
Router (ABR)."; | Router (ABR)."; | |||
} | } | |||
identity nssa-bit { | identity nssa-bit { | |||
base router-lsa-bit; | base router-lsa-bit; | |||
description | description | |||
"Nt bit, when set, the router is an NSSA border router | "Nt-bit. When set, the router is an NSSA border router | |||
that is unconditionally translating NSSA LSAs into | that is unconditionally translating NSSA LSAs into | |||
AS-external LSAs."; | AS-external LSAs."; | |||
} | } | |||
identity ospfv3-lsa-option { | identity ospfv3-lsa-option { | |||
description | description | |||
"Base identity for OSPF LSA options flags."; | "Base identity for OSPF LSA options flags."; | |||
} | } | |||
identity af-bit { | identity af-bit { | |||
base ospfv3-lsa-option; | base ospfv3-lsa-option; | |||
description | description | |||
"AF bit, when set, the router supports OSPFv3 Address | "AF-bit. When set, the router supports OSPFv3 Address | |||
Families as in RFC5838."; | Families (AFs) as described in RFC 5838."; | |||
reference | ||||
"RFC 5838: Support of Address Families in OSPFv3"; | ||||
} | } | |||
identity dc-bit { | identity dc-bit { | |||
base ospfv3-lsa-option; | base ospfv3-lsa-option; | |||
description | description | |||
"DC bit, when set, the router supports demand circuits."; | "DC-bit. When set, the router supports demand circuits."; | |||
} | } | |||
identity r-bit { | identity r-bit { | |||
base ospfv3-lsa-option; | base ospfv3-lsa-option; | |||
description | description | |||
"R bit, when set, the originator is an active router."; | "R-bit. When set, the originator is an active router."; | |||
} | } | |||
identity n-bit { | identity n-bit { | |||
base ospfv3-lsa-option; | base ospfv3-lsa-option; | |||
description | description | |||
"N bit, when set, the router is attached to an NSSA"; | "N-bit. When set, the router is attached to an NSSA."; | |||
} | } | |||
identity e-bit { | identity e-bit { | |||
base ospfv3-lsa-option; | base ospfv3-lsa-option; | |||
description | description | |||
"E bit, this bit describes the way AS-external LSAs | "E-bit. This bit describes the way AS-external LSAs | |||
are flooded"; | are flooded."; | |||
} | } | |||
identity v6-bit { | identity v6-bit { | |||
base ospfv3-lsa-option; | base ospfv3-lsa-option; | |||
description | description | |||
"V6 bit, if clear, the router/link should be excluded | "V6-bit. If clear, the router/link should be excluded | |||
from IPv6 routing calculation"; | from IPv6 routing calculations."; | |||
} | } | |||
identity ospfv3-prefix-option { | identity ospfv3-prefix-option { | |||
description | description | |||
"Base identity for OSPFv3 Prefix Options."; | "Base identity for OSPFv3 prefix options."; | |||
} | } | |||
identity nu-bit { | identity nu-bit { | |||
base ospfv3-prefix-option; | base ospfv3-prefix-option; | |||
description | description | |||
"NU Bit, when set, the prefix should be excluded | "NU-bit. When set, the prefix should be excluded | |||
from IPv6 unicast calculations."; | from IPv6 unicast calculations."; | |||
} | } | |||
identity la-bit { | identity la-bit { | |||
base ospfv3-prefix-option; | base ospfv3-prefix-option; | |||
description | description | |||
"LA bit, when set, the prefix is actually an IPv6 | "LA-bit. When set, the prefix is actually an IPv6 | |||
interface address of the Advertising Router."; | interface address of the advertising router."; | |||
} | } | |||
identity p-bit { | identity p-bit { | |||
base ospfv3-prefix-option; | base ospfv3-prefix-option; | |||
description | description | |||
"P bit, when set, the NSSA area prefix should be | "P-bit. When set, the NSSA prefix should be | |||
translated to an AS External LSA and advertised | translated to an AS External LSA and advertised | |||
by the translating NSSA Border Router."; | by the translating NSSA border router."; | |||
} | } | |||
identity dn-bit { | identity dn-bit { | |||
base ospfv3-prefix-option; | base ospfv3-prefix-option; | |||
description | description | |||
"DN bit, when set, the inter-area-prefix LSA or | "DN-bit. When set, the inter-area-prefix LSA or | |||
AS-external LSA prefix has been advertised as an | AS-external LSA prefix has been advertised as an | |||
L3VPN prefix."; | L3VPN prefix."; | |||
} | } | |||
identity ospfv2-lsa-option { | identity ospfv2-lsa-option { | |||
description | description | |||
"Base identity for OSPFv2 LSA option flags."; | "Base identity for OSPFv2 LSA option flags."; | |||
} | } | |||
identity mt-bit { | identity mt-bit { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"MT bit, When set, the router supports multi-topology as | "MT-bit. When set, the router supports multi-topology as | |||
in RFC 4915."; | described in RFC 4915."; | |||
reference | ||||
"RFC 4915: Multi-Topology (MT) Routing in OSPF"; | ||||
} | } | |||
identity v2-dc-bit { | identity v2-dc-bit { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"DC bit, When set, the router supports demand circuits."; | "DC-bit. When set, the router supports demand circuits."; | |||
} | } | |||
identity v2-p-bit { | identity v2-p-bit { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"P bit, wnly used in type-7 LSA. When set, an NSSA | "P-bit, when used in a type-7 LSA. When set, an NSSA | |||
border router should translate the type-7 LSA | border router should translate the type-7 LSA | |||
to a type-5 LSA."; | to a type-5 LSA."; | |||
} | } | |||
identity mc-flag { | identity mc-flag { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"MC Bit, when set, the router supports MOSPF."; | "MC-bit. When set, the router supports | |||
Multicast Extensions to OSPF (MOSPF)."; | ||||
} | } | |||
identity v2-e-flag { | identity v2-e-flag { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"E Bit, this bit describes the way AS-external LSAs | "E-bit. This bit describes the way AS-external LSAs | |||
are flooded."; | are flooded."; | |||
} | } | |||
identity o-bit { | identity o-bit { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"O bit, when set, the router is opaque-capable as in | "O-bit. When set, the router is opaque capable as described | |||
RFC 5250."; | in RFC 5250."; | |||
reference | ||||
"RFC 5250: The OSPF Opaque LSA Option"; | ||||
} | } | |||
identity v2-dn-bit { | identity v2-dn-bit { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"DN bit, when a type 3, 5 or 7 LSA is sent from a PE | "DN bit. When a type 3, type 5, or type 7 LSA is sent from a | |||
to a CE, the DN bit must be set. See RFC 4576."; | PE to a CE, the DN bit must be set. See RFC 4576."; | |||
reference | ||||
"RFC 4576: Using a Link State Advertisement (LSA) Options Bit | ||||
to Prevent Looping in BGP/MPLS IP Virtual Private Networks | ||||
(VPNs)"; | ||||
} | } | |||
identity ospfv2-extended-prefix-flag { | identity ospfv2-extended-prefix-flag { | |||
description | description | |||
"Base identity for extended prefix TLV flag."; | "Base identity for the Extended Prefix TLV flag."; | |||
} | } | |||
identity a-flag { | identity a-flag { | |||
base ospfv2-extended-prefix-flag; | base ospfv2-extended-prefix-flag; | |||
description | description | |||
"Attach flag, when set it indicates that the prefix | "Attach flag. When set, it indicates that the prefix | |||
corresponds and a route what is directly connected to | corresponds and a route what is directly connected to | |||
the advertising router.."; | the advertising router."; | |||
} | } | |||
identity node-flag { | identity node-flag { | |||
base ospfv2-extended-prefix-flag; | base ospfv2-extended-prefix-flag; | |||
description | description | |||
"Node flag, when set, it indicates that the prefix is | "Node flag. When set, it indicates that the prefix is | |||
used to represent the advertising node, e.g., a loopback | used to represent the advertising node, e.g., a loopback | |||
address."; | address."; | |||
} | } | |||
typedef ospf-metric { | typedef ospf-metric { | |||
type uint32 { | type uint32 { | |||
range "0 .. 16777215"; | range "0 .. 16777215"; | |||
} | } | |||
description | description | |||
"OSPF Metric - 24-bit unsigned integer."; | "OSPF metric. 24-bit unsigned integer."; | |||
} | } | |||
typedef ospf-link-metric { | typedef ospf-link-metric { | |||
type uint16 { | type uint16 { | |||
range "0 .. 65535"; | range "0 .. 65535"; | |||
} | } | |||
description | description | |||
"OSPF Link Metric - 16-bit unsigned integer."; | "OSPF link metric. 16-bit unsigned integer."; | |||
} | } | |||
typedef opaque-id { | typedef opaque-id { | |||
type uint32 { | type uint32 { | |||
range "0 .. 16777215"; | range "0 .. 16777215"; | |||
} | } | |||
description | description | |||
"Opaque ID - 24-bit unsigned integer."; | "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 { | |||
enum intra-area { | enum intra-area { | |||
description "OSPF intra-area route."; | description | |||
"OSPF intra-area route."; | ||||
} | } | |||
enum inter-area { | enum inter-area { | |||
description "OSPF inter-area route."; | description | |||
"OSPF inter-area route."; | ||||
} | } | |||
enum external-1 { | enum external-1 { | |||
description "OSPF type 1 external route."; | description | |||
"OSPF type 1 external route."; | ||||
} | } | |||
enum external-2 { | enum external-2 { | |||
description "OSPF type 2 external route."; | description | |||
"OSPF type 2 external route."; | ||||
} | } | |||
enum nssa-1 { | enum nssa-1 { | |||
description "OSPF type 1 NSSA route."; | description | |||
"OSPF type 1 NSSA route."; | ||||
} | } | |||
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 is in the 'Down' state."; | |||
} | } | |||
enum loopback { | enum loopback { | |||
value "2"; | value "2"; | |||
description | description | |||
"Interface loopback state."; | "Interface is in the 'Loopback' state."; | |||
} | } | |||
enum waiting { | enum waiting { | |||
value "3"; | value "3"; | |||
description | description | |||
"Interface waiting state."; | "Interface is in the 'Waiting' state."; | |||
} | } | |||
enum point-to-point { | enum point-to-point { | |||
value "4"; | value "4"; | |||
description | description | |||
"Interface point-to-point state."; | "Interface is in the 'Point-to-point' state."; | |||
} | } | |||
enum dr { | enum dr { | |||
value "5"; | value "5"; | |||
description | description | |||
"Interface Designated Router (DR) state."; | "Interface is in the 'DR' (Designated Router) state."; | |||
} | } | |||
enum bdr { | enum bdr { | |||
value "6"; | value "6"; | |||
description | description | |||
"Interface Backup Designated Router (BDR) state."; | "Interface is in the 'Backup' (Backup Designated Router | |||
(BDR)) state."; | ||||
} | } | |||
enum dr-other { | enum dr-other { | |||
value "7"; | value "7"; | |||
description | description | |||
"Interface Other Designated Router state."; | "Interface is in the 'DR Other' state."; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPF interface state type."; | "OSPF interface state type."; | |||
reference | ||||
"RFC 2328: OSPF Version 2"; | ||||
} | } | |||
typedef router-link-type { | typedef router-link-type { | |||
type enumeration { | type enumeration { | |||
enum point-to-point-link { | enum point-to-point-link { | |||
value "1"; | value "1"; | |||
description | description | |||
"Point-to-Point link to Router"; | "Point-to-point link to the router."; | |||
} | } | |||
enum transit-network-link { | enum transit-network-link { | |||
value "2"; | value "2"; | |||
description | description | |||
"Link to transit network identified by | "Link to the transit network, identified by the DR."; | |||
Designated-Router (DR)"; | ||||
} | } | |||
enum stub-network-link { | enum stub-network-link { | |||
value "3"; | value "3"; | |||
description | description | |||
"Link to stub network identified by subnet"; | "Link to the stub network, identified by the subnet."; | |||
} | } | |||
enum virtual-link { | enum virtual-link { | |||
value "4"; | value "4"; | |||
description | description | |||
"Virtual link across transit area"; | "Virtual link across a transit area."; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPF Router Link Type."; | "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 is in the 'Down' state."; | |||
} | } | |||
enum attempt { | enum attempt { | |||
value "2"; | value "2"; | |||
description | description | |||
"Neighbor attempt state."; | "Neighbor is in the 'Attempt' state."; | |||
} | } | |||
enum init { | enum init { | |||
value "3"; | value "3"; | |||
description | description | |||
"Neighbor init state."; | "Neighbor is in the 'Init' state."; | |||
} | } | |||
enum 2-way { | enum 2-way { | |||
value "4"; | value "4"; | |||
description | description | |||
"Neighbor 2-Way state."; | "Neighbor is in the '2-Way' state."; | |||
} | } | |||
enum exstart { | enum exstart { | |||
value "5"; | value "5"; | |||
description | description | |||
"Neighbor exchange start state."; | "Neighbor is in the 'ExStart' (exchange start) state."; | |||
} | } | |||
enum exchange { | enum exchange { | |||
value "6"; | value "6"; | |||
description | description | |||
"Neighbor exchange state."; | "Neighbor is in the 'Exchange' state."; | |||
} | } | |||
enum loading { | enum loading { | |||
value "7"; | value "7"; | |||
description | description | |||
"Neighbor loading state."; | "Neighbor is in the 'Loading' state."; | |||
} | } | |||
enum full { | enum full { | |||
value "8"; | value "8"; | |||
description | description | |||
"Neighbor full state."; | "Neighbor is in the 'Full' state."; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPF neighbor state type."; | "OSPF neighbor state type."; | |||
reference | ||||
"RFC 2328: OSPF Version 2"; | ||||
} | } | |||
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 of 'not-helping'."; | |||
} | } | |||
enum helping { | enum helping { | |||
value "2"; | value "2"; | |||
description | description | |||
"Restart helper status helping."; | "Restart helper status of '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"; | |||
skipping to change at page 45, line 9 ¶ | skipping to change at line 2184 ¶ | |||
"Restart successfully completed."; | "Restart successfully completed."; | |||
} | } | |||
enum timed-out { | enum timed-out { | |||
value "4"; | value "4"; | |||
description | description | |||
"Restart timed out."; | "Restart timed out."; | |||
} | } | |||
enum topology-changed { | enum topology-changed { | |||
value "5"; | value "5"; | |||
description | description | |||
"Restart aborted due to topology change."; | "Restart aborted due to a 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 { | |||
skipping to change at page 45, line 43 ¶ | skipping to change at line 2218 ¶ | |||
"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 Acknowledgement packet."; | "OSPF Link State Acknowledgment 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"; | |||
skipping to change at page 46, line 29 ¶ | skipping to change at line 2252 ¶ | |||
} | } | |||
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."; | "The router is not restarting."; | |||
} | } | |||
enum planned-restart { | enum planned-restart { | |||
value "2"; | value "2"; | |||
description | description | |||
"Router is going through planned restart."; | "The router is going through a planned restart."; | |||
} | } | |||
enum unplanned-restart { | enum unplanned-restart { | |||
value "3"; | value "3"; | |||
description | description | |||
"Router is going through unplanned restart."; | "The router is going through an unplanned restart."; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPF graceful restart status type."; | "OSPF graceful restart status type."; | |||
} | } | |||
typedef fletcher-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 | description | |||
"Fletcher 16-bit checksum in hex-string format 0xXXXX."; | "Fletcher 16-bit checksum in hex-string format 0xXXXX."; | |||
reference | ||||
reference "RFC 905: ISO Transport Protocol specification | "RFC 905: ISO Transport Protocol Specification ISO DP 8073"; | |||
ISO DP 8073"; | ||||
} | } | |||
typedef ospfv2-auth-trailer-rfc-version { | typedef ospfv2-auth-trailer-rfc-version { | |||
type enumeration { | type enumeration { | |||
enum rfc5709 { | enum rfc5709 { | |||
description | description | |||
"Support OSPF Authentication Trailer as | "Support for the OSPF Authentication Trailer as | |||
described in RFC 5709"; | described in RFC 5709."; | |||
reference "RFC 5709: OSPFv2 HMAC-SHA Cryptographic | reference | |||
Authentication"; | "RFC 5709: OSPFv2 HMAC-SHA Cryptographic Authentication"; | |||
} | } | |||
enum rfc7474 { | enum rfc7474 { | |||
description | description | |||
"Support OSPF Authentication Trailer as | "Support for the OSPF Authentication Trailer as | |||
described in RFC 7474"; | described in RFC 7474."; | |||
reference | reference | |||
"RFC 7474: Security Extension for OSPFv2 | "RFC 7474: Security Extension for OSPFv2 | |||
When Using Manual Key Management Authentication"; | When Using Manual Key Management"; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPFv2 Authentication Trailer Support"; | "OSPFv2 Authentication Trailer support."; | |||
} | } | |||
grouping tlv { | grouping tlv { | |||
description | description | |||
"Type-Length-Value (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 (octets)."; | 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 | "Grouping used for unknown TLVs or unknown sub-TLVs."; | |||
unknown sub-TLVs."; | ||||
container unknown-tlvs { | container unknown-tlvs { | |||
description "All unknown TLVs."; | description | |||
"All unknown TLVs."; | ||||
list unknown-tlv { | list unknown-tlv { | |||
description "Unknown TLV."; | description | |||
"Unknown TLV."; | ||||
uses tlv; | uses tlv; | |||
} | } | |||
} | } | |||
} | } | |||
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 admin tag value."; | "Value of the node administrative tag."; | |||
} | } | |||
description | description | |||
"List of tags."; | "List of tags."; | |||
} | } | |||
} | } | |||
grouping router-capabilities-tlv { | grouping router-capabilities-tlv { | |||
description "OSPF Router Capabilities TLV grouping."; | description | |||
reference "RFC 7770: OSPF Router Capabilities"; | "Grouping for OSPF router capabilities TLV types."; | |||
reference | ||||
"RFC 7770: Extensions to OSPF for Advertising Optional | ||||
Router Capabilities"; | ||||
container router-informational-capabilities { | container router-informational-capabilities { | |||
leaf-list informational-capabilities { | leaf-list informational-capabilities { | |||
type identityref { | type identityref { | |||
base informational-capability; | base informational-capability; | |||
} | } | |||
description | description | |||
"Informational capability list. This list will | "List of informational capabilities. This list will | |||
contains the identities for the informational | contain the identities for the informational | |||
capabilities supported by router."; | capabilities supported by the router."; | |||
} | } | |||
description | description | |||
"OSPF Router Informational Flag Definitions."; | "OSPF Router Informational Flag definitions."; | |||
} | } | |||
list informational-capabilities-flags { | list informational-capabilities-flags { | |||
leaf informational-flag { | leaf informational-flag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Individual informational capability flag."; | "Individual informational capability flag."; | |||
} | } | |||
description | description | |||
"List of informational capability flags. This will | "List of informational capability flags. This will | |||
return all the 32-bit informational flags irrespective | return all the 32-bit informational flags, irrespective | |||
of whether or not they are known to the device."; | of whether or not they are known to the device."; | |||
} | } | |||
list functional-capabilities { | list functional-capabilities { | |||
leaf functional-flag { | leaf functional-flag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Individual functional capability flag."; | "Individual functional capability flag."; | |||
} | } | |||
description | description | |||
"List of functional capability flags. This will | "List of functional capability flags. This will | |||
return all the 32-bit functional flags irrespective | return all the 32-bit functional flags, irrespective | |||
of whether or not they are known to the device."; | of whether or not they are known to the device."; | |||
} | } | |||
} | } | |||
grouping dynamic-hostname-tlv { | grouping dynamic-hostname-tlv { | |||
description "Dynamic Hostname TLV"; | description | |||
reference "RFC 5642: Dynamic Hostnames for OSPF"; | "Dynamic Hostname TLV."; | |||
reference | ||||
"RFC 5642: Dynamic Hostname Exchange Mechanism for OSPF"; | ||||
leaf hostname { | leaf hostname { | |||
type string { | type string { | |||
length "1..255"; | length "1..255"; | |||
} | } | |||
description "Dynamic Hostname"; | description | |||
"Dynamic hostname."; | ||||
} | } | |||
} | } | |||
grouping sbfd-discriminator-tlv { | grouping sbfd-discriminator-tlv { | |||
description "Seamless BFD Discriminator TLV"; | description | |||
reference "RFC 7884: S-BFD Discriminators in OSPF"; | "S-BFD Discriminator TLV."; | |||
reference | ||||
"RFC 7884: OSPF Extensions to Advertise Seamless Bidirectional | ||||
Forwarding Detection (S-BFD) Target Discriminators"; | ||||
list sbfd-discriminators { | list sbfd-discriminators { | |||
leaf sbfd-discriminator { | leaf sbfd-discriminator { | |||
type uint32; | type uint32; | |||
description "Individual S-BFD Discriminator."; | description | |||
"Individual S-BFD Discriminator."; | ||||
} | } | |||
description | description | |||
"List of S-BFD Discriminators"; | "List of S-BFD Discriminators."; | |||
} | } | |||
} | } | |||
grouping maximum-sid-depth-tlv { | grouping maximum-sid-depth-tlv { | |||
description "Maximum SID Depth (MSD) TLV"; | description | |||
"Node MSD TLV (TLV for Maximum SID Depth)."; | ||||
reference | reference | |||
"RFC 8476: Signaling Maximum Segment Depth (MSD) | "RFC 8476: Signaling Maximum SID Depth (MSD) Using OSPF"; | |||
using OSPF"; | ||||
list msd-type { | list msd-type { | |||
leaf msd-type { | leaf msd-type { | |||
type uint8; | type uint8; | |||
description "Maximum Segment Depth (MSD) type"; | description | |||
"Maximum SID Depth (MSD) type."; | ||||
} | } | |||
leaf msd-value { | leaf msd-value { | |||
type uint8; | type uint8; | |||
description | description | |||
"Maximum Segment Depth (MSD) value for the type"; | "MSD value for the type."; | |||
} | } | |||
description | description | |||
"List of Maximum Segment Depth (MSD) tuples"; | "List of MSD tuples."; | |||
} | } | |||
} | } | |||
grouping ospf-router-lsa-bits { | grouping ospf-router-lsa-bits { | |||
container router-bits { | container router-bits { | |||
leaf-list rtr-lsa-bits { | leaf-list rtr-lsa-bits { | |||
type identityref { | type identityref { | |||
base router-lsa-bit; | base router-lsa-bit; | |||
} | } | |||
description | description | |||
"Router LSA bits list. This list will contain | "List of Router LSA bits. This list will contain | |||
identities for the bits which are set in the | identities for the bits; these identities are set | |||
Router-LSA bits."; | in the Router-LSA bits."; | |||
} | } | |||
description "Router LSA Bits."; | description | |||
"Router LSA bits."; | ||||
} | } | |||
description | description | |||
"Router LSA Bits - Currently common for OSPFv2 and | "Router LSA bits. Currently common to both OSPFv2 and | |||
OSPFv3 but it may diverge with future augmentations."; | OSPFv3 but 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 "Router-LSA 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 "Router-LSA Link data."; | description | |||
"Router-LSA link data."; | ||||
} | } | |||
leaf type { | leaf type { | |||
type router-link-type; | type router-link-type; | |||
description "Router-LSA 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 "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv2-router-lsa')" { | + "'ospfv2-router-lsa')" { | |||
description | description | |||
"Only applies to Router-LSAs."; | "Only applies to Router-LSAs."; | |||
} | } | |||
description | description | |||
"Router LSA."; | "Router LSA."; | |||
uses ospf-router-lsa-bits; | uses ospf-router-lsa-bits; | |||
leaf num-of-links { | leaf num-of-links { | |||
type uint16; | type uint16; | |||
description "Number of links in Router LSA."; | description | |||
"Number of links in the 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 | |||
"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 "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv2-network-lsa')" { | + "'ospfv2-network-lsa')" { | |||
description | description | |||
skipping to change at page 52, line 4 ¶ | skipping to change at line 2539 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container network { | container network { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv2-network-lsa')" { | + "'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 yang:dotted-quad; | 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 inet:ipv4-address; | 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 "derived-from(../../header/type, " | when "derived-from(../../header/type, " | |||
+ "'ospfv2-summary-lsa-type')" { | + "'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."; | |||
} | } | |||
container topologies { | container topologies { | |||
description "All topologies for the summary LSA."; | description | |||
"All topologies for the summary LSA."; | ||||
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 ospf-metric; | type ospf-metric; | |||
description "Metric for the topology."; | description | |||
"Metric for the topology."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container external { | container external { | |||
when "derived-from(../../header/type, " | when "derived-from(../../header/type, " | |||
+ "'ospfv2-external-lsa-type')" { | + "'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."; | |||
} | } | |||
container topologies { | container topologies { | |||
description "All topologies for the external."; | description | |||
"All topologies for the external."; | ||||
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 | "The MT-ID for the topology enabled for the | |||
external or NSSA prefix."; | external or NSSA prefix."; | |||
} | } | |||
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."; | |||
} | } | |||
} | } | |||
description "Flags."; | description | |||
"Flags."; | ||||
} | } | |||
leaf metric { | leaf metric { | |||
type ospf-metric; | 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 | |||
"Route tag for the topology."; | "Route tag for the topology."; | |||
skipping to change at page 54, line 18 ¶ | skipping to change at line 2653 ¶ | |||
container opaque { | container opaque { | |||
when "derived-from(../../header/type, " | when "derived-from(../../header/type, " | |||
+ "'ospfv2-opaque-lsa-type')" { | + "'ospfv2-opaque-lsa-type')" { | |||
description | description | |||
"Only applies to Opaque LSAs."; | "Only applies to Opaque LSAs."; | |||
} | } | |||
description | description | |||
"Opaque LSA."; | "Opaque LSA."; | |||
container ri-opaque { | container ri-opaque { | |||
description "OSPF Router Information (RI) opaque LSA."; | description | |||
reference "RFC 7770: OSPF Router Capabilities"; | "OSPF Router Information (RI) Opaque LSA."; | |||
reference | ||||
"RFC 7770: Extensions to OSPF for Advertising Optional | ||||
Router Capabilities"; | ||||
container router-capabilities-tlv { | container router-capabilities-tlv { | |||
description | description | |||
"Informational and functional router capabilities"; | "Informational and functional router capabilities."; | |||
uses router-capabilities-tlv; | 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 { | container dynamic-hostname-tlv { | |||
description "OSPF Dynamic Hostname"; | description | |||
"OSPF dynamic hostname."; | ||||
uses dynamic-hostname-tlv; | uses dynamic-hostname-tlv; | |||
} | } | |||
container sbfd-discriminator-tlv { | container sbfd-discriminator-tlv { | |||
description "OSPF S-BFD Discriminators"; | description | |||
"OSPF S-BFD Discriminators."; | ||||
uses sbfd-discriminator-tlv; | uses sbfd-discriminator-tlv; | |||
} | } | |||
container maximum-sid-depth-tlv { | container maximum-sid-depth-tlv { | |||
description "OSPF Maximum SID Depth (MSD) values"; | description | |||
"OSPF MSD values."; | ||||
uses maximum-sid-depth-tlv; | uses maximum-sid-depth-tlv; | |||
} | } | |||
uses unknown-tlvs; | uses unknown-tlvs; | |||
} | } | |||
container te-opaque { | container te-opaque { | |||
description "OSPFv2 Traffic Engineering (TE) opaque LSA."; | description | |||
reference "RFC 3630: Traffic Engineering (TE) | "OSPFv2 TE Opaque LSA."; | |||
Extensions to OSPFv2"; | reference | |||
"RFC 3630: Traffic Engineering (TE) Extensions to | ||||
OSPF Version 2"; | ||||
container router-address-tlv { | container router-address-tlv { | |||
description | description | |||
"Router address TLV."; | "Router address TLV."; | |||
leaf router-address { | leaf router-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Router address."; | "Router address."; | |||
} | } | |||
} | } | |||
container link-tlv { | container link-tlv { | |||
description "Describes a single link, and it is constructed | description | |||
of a set of Sub-TLVs."; | "Describes a single link. It is constructed | |||
from a set of sub-TLVs."; | ||||
leaf link-type { | leaf link-type { | |||
type router-link-type; | 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."; | ||||
} | } | |||
container local-if-ipv4-addrs { | container local-if-ipv4-addrs { | |||
description "All local interface IPv4 addresses."; | description | |||
"All local interface IPv4 addresses."; | ||||
leaf-list local-if-ipv4-addr { | leaf-list local-if-ipv4-addr { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"List of local interface IPv4 addresses."; | "List of local interface IPv4 addresses."; | |||
} | } | |||
} | } | |||
container remote-if-ipv4-addrs { | container remote-if-ipv4-addrs { | |||
description "All remote interface IPv4 addresses."; | description | |||
"All remote interface IPv4 addresses."; | ||||
leaf-list remote-if-ipv4-addr { | leaf-list remote-if-ipv4-addr { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"List of remote interface IPv4 addresses."; | "List of remote interface IPv4 addresses."; | |||
} | } | |||
} | } | |||
leaf te-metric { | leaf te-metric { | |||
type uint32; | type uint32; | |||
description "TE metric."; | description | |||
"TE metric."; | ||||
} | } | |||
leaf max-bandwidth { | leaf max-bandwidth { | |||
type rt-types:bandwidth-ieee-float32; | type rt-types:bandwidth-ieee-float32; | |||
description "Maximum bandwidth."; | description | |||
"Maximum bandwidth."; | ||||
} | } | |||
leaf max-reservable-bandwidth { | leaf max-reservable-bandwidth { | |||
type rt-types:bandwidth-ieee-float32; | type rt-types:bandwidth-ieee-float32; | |||
description "Maximum reservable bandwidth."; | description | |||
"Maximum reservable bandwidth."; | ||||
} | } | |||
container unreserved-bandwidths { | container unreserved-bandwidths { | |||
description "All unreserved bandwidths."; | description | |||
"All unreserved bandwidths."; | ||||
list unreserved-bandwidth { | list unreserved-bandwidth { | |||
leaf priority { | leaf priority { | |||
type uint8 { | type uint8 { | |||
range "0 .. 7"; | range "0 .. 7"; | |||
} | } | |||
description "Priority from 0 to 7."; | description | |||
"Priority from 0 to 7."; | ||||
} | } | |||
leaf unreserved-bandwidth { | leaf unreserved-bandwidth { | |||
type rt-types:bandwidth-ieee-float32; | type rt-types:bandwidth-ieee-float32; | |||
description "Unreserved bandwidth."; | description | |||
"Unreserved bandwidth."; | ||||
} | } | |||
description | description | |||
"List of unreserved bandwidths for different | "List of unreserved bandwidths for different | |||
priorities."; | priorities."; | |||
} | } | |||
} | } | |||
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-opaque { | 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 { | |||
value "1"; | value "1"; | |||
description "OSPF intra-area route."; | description | |||
"OSPF intra-area route."; | ||||
} | } | |||
enum inter-area { | enum inter-area { | |||
value "3"; | value "3"; | |||
description "OSPF inter-area route."; | description | |||
"OSPF inter-area route."; | ||||
} | } | |||
enum external { | enum external { | |||
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."; | ||||
} | } | |||
container flags { | container flags { | |||
leaf-list extended-prefix-flags { | leaf-list extended-prefix-flags { | |||
type identityref { | type identityref { | |||
base ospfv2-extended-prefix-flag; | base ospfv2-extended-prefix-flag; | |||
} | } | |||
description | description | |||
"Extended prefix TLV flags list. This list will | "List of Extended Prefix TLV flags. This list will | |||
contain identities for the prefix flags that | contain identities for the prefix flags; these | |||
are set in the extended prefix flags."; | identities are set in the extended prefix flags."; | |||
} | } | |||
description "Prefix 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-opaque { | container extended-link-opaque { | |||
description "All extended link TLVs in the LSA."; | description | |||
"All Extended Link TLVs in the LSA."; | ||||
reference | ||||
"RFC 7684: OSPFv2 Prefix/Link Attribute Advertisement"; | ||||
container 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 { | container maximum-sid-depth-tlv { | |||
description "OSPF Maximum SID Depth (MSD) values"; | description | |||
"OSPF MSD values."; | ||||
uses maximum-sid-depth-tlv; | 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."; | ||||
container lsa-options { | container lsa-options { | |||
leaf-list lsa-options { | leaf-list lsa-options { | |||
type identityref { | type identityref { | |||
base ospfv3-lsa-option; | base ospfv3-lsa-option; | |||
} | } | |||
description | description | |||
"OSPFv3 LSA Option flags list. This list will contain | "List of OSPFv3 LSA Option flags. This list will contain | |||
the identities for the OSPFv3 LSA options that are | the identities for the OSPFv3 LSA options that are | |||
set for the LSA."; | set for the LSA."; | |||
} | } | |||
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 | |||
"LSA Prefix."; | "LSA prefix."; | |||
} | } | |||
container prefix-options { | container prefix-options { | |||
leaf-list prefix-options { | leaf-list prefix-options { | |||
type identityref { | type identityref { | |||
base ospfv3-prefix-option; | base ospfv3-prefix-option; | |||
} | } | |||
description | description | |||
"OSPFv3 prefix option flag list. This list will | "List of OSPFv3 prefix option flags. This list will | |||
contain the identities for the OSPFv3 options | contain the identities for the OSPFv3 options | |||
that are set for the OSPFv3 prefix."; | that are set for the OSPFv3 prefix."; | |||
} | } | |||
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 ospf-metric; | 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 | |||
in the LSA."; | in the LSA."; | |||
} | } | |||
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 identityref { | type identityref { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
} | } | |||
description "Referenced Link State type."; | description | |||
"Referenced Link State type."; | ||||
} | } | |||
leaf unknown-referenced-ls-type { | leaf unknown-referenced-ls-type { | |||
type uint16; | type uint16; | |||
description | description | |||
"Value for an unknown Referenced Link State type."; | "Value for an unknown Referenced Link State type."; | |||
} | } | |||
uses ospfv3-lsa-prefix; | uses ospfv3-lsa-prefix; | |||
leaf forwarding-address { | leaf forwarding-address { | |||
skipping to change at page 60, line 10 ¶ | skipping to change at line 2975 ¶ | |||
leaf external-route-tag { | leaf external-route-tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Route tag."; | "Route tag."; | |||
} | } | |||
leaf referenced-link-state-id { | leaf referenced-link-state-id { | |||
type uint32; | type uint32; | |||
description | description | |||
"Referenced Link State ID."; | "Referenced Link State ID."; | |||
reference | ||||
"RFC 5340: OSPF for IPv6"; | ||||
} | } | |||
} | } | |||
grouping ospfv3-lsa-body { | grouping ospfv3-lsa-body { | |||
description "OSPFv3 LSA body."; | description | |||
"OSPFv3 LSA body."; | ||||
container router { | container router { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-router-lsa')" { | + "'ospfv3-router-lsa')" { | |||
description | description | |||
"Only applies to Router LSAs."; | "Only applies to Router LSAs."; | |||
} | } | |||
description "Router LSA."; | description | |||
"Router LSA."; | ||||
uses ospf-router-lsa-bits; | uses ospf-router-lsa-bits; | |||
uses ospfv3-lsa-options; | uses ospfv3-lsa-options; | |||
container links { | container links { | |||
description "All router link."; | description | |||
"All router links."; | ||||
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 for link."; | description | |||
"Interface ID for the link."; | ||||
} | } | |||
leaf neighbor-interface-id { | leaf neighbor-interface-id { | |||
type uint32; | type uint32; | |||
description "Neighbor's Interface ID for link."; | description | |||
"Neighbor's Interface ID for the link."; | ||||
} | } | |||
leaf neighbor-router-id { | leaf neighbor-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description "Neighbor's Router ID for link."; | description | |||
"Neighbor's Router ID for the link."; | ||||
} | } | |||
leaf type { | leaf type { | |||
type router-link-type; | type router-link-type; | |||
description "Link type: 1 - Point-to-Point Link | description | |||
2 - Transit Network Link | "Link type: 1 - Point-to-Point Link | |||
3 - Stub Network Link | 2 - Transit Network Link | |||
4 - Virtual Link"; | 3 - Stub Network Link | |||
4 - Virtual Link."; | ||||
} | } | |||
leaf metric { | leaf metric { | |||
type uint16; | type uint16; | |||
description "Link Metric."; | description | |||
"Link metric."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container network { | container network { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-network-lsa')" { | + "'ospfv3-network-lsa')" { | |||
description | description | |||
"Only applies to Network LSAs."; | "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 rt-types:router-id; | 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 "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-inter-area-prefix-lsa')" { | + "'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 ospf-metric; | type ospf-metric; | |||
description "Inter-Area Prefix Metric"; | description | |||
"Inter-Area Prefix metric."; | ||||
} | } | |||
uses ospfv3-lsa-prefix; | uses ospfv3-lsa-prefix; | |||
description "Prefix LSA."; | description | |||
"Prefix LSA."; | ||||
} | } | |||
container inter-area-router { | container inter-area-router { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-inter-area-router-lsa')" { | + "'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 ospf-metric; | type ospf-metric; | |||
description "AS Boundary Router (ASBR) Metric."; | description | |||
"Autonomous System 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 ASBR 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 "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-as-external-lsa')" { | + "'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 "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-nssa-lsa')" { | + "'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 "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-link-lsa')" { | + "'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 | description | |||
"Router priority for DR election. A router with a | "Router priority for DR election. A router with a | |||
higher priority will be preferred in the election | higher priority will be preferred in the election. | |||
and a value of 0 indicates the router is not | A value of 0 indicates that the router is not eligible | |||
eligible to become Designated Router or Backup | to become the DR or BDR."; | |||
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 "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-intra-area-prefix-lsa')" { | + "'ospfv3-intra-area-prefix-lsa')" { | |||
description | description | |||
"Only applies to Intra-Area-Prefix LSAs."; | "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 identityref { | type identityref { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
} | } | |||
description "Referenced Link State type."; | description | |||
"Referenced Link State type."; | ||||
} | } | |||
leaf unknown-referenced-ls-type { | leaf unknown-referenced-ls-type { | |||
type uint16; | type uint16; | |||
description | description | |||
"Value for an unknown Referenced Link State type."; | "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 rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"Referenced Advertising Router."; | "Referenced Advertising Router."; | |||
reference | ||||
"RFC 5340: OSPF for IPv6"; | ||||
} | } | |||
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 ospf-metric; | type ospf-metric; | |||
description "Prefix Metric."; | description | |||
"Prefix metric."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container router-information { | container router-information { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-router-information-lsa')" { | + "'ospfv3-router-information-lsa')" { | |||
description | description | |||
"Only applies to Router Information LSAs (RFC7770)."; | "Only applies to Router Information LSAs (RFC 7770)."; | |||
reference | ||||
"RFC 7770: Extensions to OSPF for Advertising Optional | ||||
Router Capabilities"; | ||||
} | } | |||
container router-capabilities-tlv { | container router-capabilities-tlv { | |||
description | description | |||
"Informational and functional router capabilities"; | "Informational and functional router capabilities."; | |||
uses router-capabilities-tlv; | 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 { | container dynamic-hostname-tlv { | |||
description "OSPF Dynamic Hostname"; | description | |||
"OSPF dynamic hostname."; | ||||
uses dynamic-hostname-tlv; | uses dynamic-hostname-tlv; | |||
} | } | |||
container sbfd-discriminator-tlv { | container sbfd-discriminator-tlv { | |||
description "OSPF S-BFD Discriminators"; | description | |||
"OSPF S-BFD Discriminators."; | ||||
uses sbfd-discriminator-tlv; | uses sbfd-discriminator-tlv; | |||
} | } | |||
description "Router Information LSA."; | description | |||
reference "RFC 7770: Extensions for Advertising Router | "Router Information LSA."; | |||
Capabilities"; | reference | |||
"RFC 7770: Extensions to OSPF for Advertising Optional | ||||
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 identityref { | type identityref { | |||
base ospf-lsa-type; | base ospf-lsa-type; | |||
} | } | |||
mandatory true; | mandatory true; | |||
description "LSA type"; | description | |||
"LSA type."; | ||||
} | } | |||
leaf adv-router { | leaf adv-router { | |||
type rt-types:router-id; | 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 fletcher-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 including the header."; | description | |||
"LSA length, including the header."; | ||||
} | } | |||
} | } | |||
grouping ospfv2-lsa { | grouping ospfv2-lsa { | |||
description | description | |||
"OSPFv2 LSA - LSAs are uniquely identified by | "OSPFv2 LSA. LSAs are uniquely identified by | |||
the <LSA Type, Link-State ID, Advertising Router> | the <LSA Type, Link State ID, Advertising Router> | |||
tuple with the sequence number differentiating | tuple, with the sequence number differentiating the | |||
LSA instances."; | LSA instances."; | |||
container header { | container header { | |||
must "(derived-from(type, " | must "(derived-from(type, " | |||
+ "'ospfv2-opaque-lsa-type') and " | + "'ospfv2-opaque-lsa-type') and " | |||
+ "opaque-id and opaque-type) or " | + "opaque-id and opaque-type) or " | |||
+ "(not(derived-from(type, " | + "(not(derived-from(type, " | |||
+ "'ospfv2-opaque-lsa-type')) " | + "'ospfv2-opaque-lsa-type')) " | |||
+ "and not(opaque-id) and not(opaque-type))" { | + "and not(opaque-id) and not(opaque-type))" { | |||
description | description | |||
"Opaque type and ID only apply to Opaque LSAs."; | "The Opaque type and the Opaque ID only apply to | |||
Opaque LSAs."; | ||||
} | } | |||
description | description | |||
"Decoded OSPFv2 LSA header data."; | "Decoded OSPFv2 LSA header data."; | |||
container lsa-options { | container lsa-options { | |||
leaf-list lsa-options { | leaf-list lsa-options { | |||
type identityref { | type identityref { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
} | } | |||
description | description | |||
"LSA option flags list. This list will contain | "List of LSA option flags. This list will contain the | |||
the identities for the identities for the OSPFv2 | identities for the OSPFv2 LSA options that are set."; | |||
LSA options that are set."; | ||||
} | } | |||
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 "Link-State 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 opaque-id; | 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; | |||
} | } | |||
} | } | |||
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 "OSPFv3 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 fields for OSPF LSA representation."; | "Common fields for OSPF LSA representation."; | |||
leaf decode-completed { | leaf decode-completed { | |||
type boolean; | type boolean; | |||
description | description | |||
"The OSPF LSA body was successfully decoded other than | "The OSPF LSA body was successfully decoded other than | |||
unknown TLVs. Unknown LSAs types and OSPFv2 unknown | unknown TLVs. Unknown LSA types and OSPFv2 unknown | |||
opaque LSA types are not decoded. Additionally, | Opaque LSA types are not decoded. Additionally, | |||
malformed LSAs are generally not accepted and will | malformed LSAs are generally not accepted and will | |||
not be in the Link State Database."; | not be in the Link State Database (LSDB)."; | |||
} | } | |||
leaf raw-data { | leaf raw-data { | |||
type yang:hex-string; | type yang:hex-string; | |||
description | description | |||
"The complete LSA in network byte | "The hexadecimal representation of the complete LSA as | |||
order hexadecimal as received or originated."; | received or originated, in network byte order."; | |||
} | } | |||
} | } | |||
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 - the database key for each LSA of a given | "OSPF LSA key. The database key for each LSA of a given | |||
type in the Link State DataBase (LSDB)."; | type in the 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 | |||
"Link-State ID."; | "Link State ID."; | |||
} | } | |||
leaf adv-router { | leaf adv-router { | |||
type rt-types:router-id; | 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 { | leaf discontinuity-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time on the most recent occasion at which any one or | "The time of the most recent occasion at which any one or | |||
more of this OSPF instance's counters suffered a | more of this OSPF instance's counters suffered a | |||
discontinuity. If no such discontinuities have occurred | discontinuity. If no such discontinuities have occurred | |||
since the OSPF instance was last re-initialized, then | since the OSPF instance was last reinitialized, then | |||
this node contains the time the OSPF instance was | this node contains the time the OSPF instance was | |||
re-initialized which normally occurs when it was | reinitialized, which normally occurs when it was | |||
created."; | created."; | |||
} | } | |||
leaf originate-new-lsa-count { | leaf originate-new-lsa-count { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of new LSAs originated. Discontinuities in the | "The number of new LSAs originated. Discontinuities in the | |||
value of this counter can occur when the OSPF instance is | value of this counter can occur when the OSPF instance is | |||
re-initialized."; | reinitialized."; | |||
} | } | |||
leaf rx-new-lsas-count { | leaf rx-new-lsas-count { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of new LSAs received. Discontinuities in the | "The number of new LSAs received. Discontinuities in the | |||
value of this counter can occur when the OSPF instance is | value of this counter can occur when the OSPF instance is | |||
re-initialized."; | reinitialized."; | |||
} | } | |||
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 module 2**32 sum of the LSA checksums | "The module 2**32 sum of the LSA checksums | |||
for AS-scope LSAs. The value should be treated as | for AS-scope LSAs. The value should be treated as | |||
unsigned when comparing two sums of checksums. While | unsigned when comparing two sums of checksums. While | |||
differing checksums indicate a different combination | differing checksums indicate a different combination | |||
of LSAs, equivalent checksums don't guarantee that the | of LSAs, equivalent checksums don't guarantee that the | |||
LSAs are the same given that multiple combinations of | LSAs are the same, given that multiple combinations of | |||
LSAs can result in the same checksum."; | 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 this LSA type."; | ||||
} | } | |||
leaf lsa-cksum-sum { | leaf lsa-cksum-sum { | |||
type uint32; | type uint32; | |||
description | description | |||
"The module 2**32 sum of the LSA checksums | "The module 2**32 sum of the LSA checksums | |||
for the LSAs of this type. The value should be | for LSAs of this type. The value should be | |||
treated as unsigned when comparing two sums of | treated as unsigned when comparing two sums of | |||
checksums. While differing checksums indicate a | checksums. While differing checksums indicate a | |||
different combination of LSAs, equivalent checksums | different combination of LSAs, equivalent checksums | |||
don't guarantee that the LSAs are the same given that | don't guarantee that the LSAs are the same, given that | |||
multiple combinations of LSAs can result in the same | multiple combinations of LSAs can result in the same | |||
checksum."; | checksum."; | |||
} | } | |||
} | } | |||
} | } | |||
uses instance-fast-reroute-state; | uses instance-fast-reroute-state; | |||
} | } | |||
grouping area-stat { | grouping area-stat { | |||
description "Per-area statistics."; | description | |||
"Per-area statistics."; | ||||
leaf discontinuity-time { | leaf discontinuity-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time on the most recent occasion at which any one or | "The time of the most recent occasion at which any one or | |||
more of this OSPF area's counters suffered a | more of this OSPF area's counters suffered a | |||
discontinuity. If no such discontinuities have occurred | discontinuity. If no such discontinuities have occurred | |||
since the OSPF area was last re-initialized, then | since the OSPF area was last reinitialized, then | |||
this node contains the time the OSPF area was | this node contains the time the OSPF area was | |||
re-initialized which normally occurs when it was | reinitialized, which normally occurs when it was | |||
created."; | 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 | Discontinuities in the value of this counter can occur | |||
when the OSPF area is re-initialized."; | when the OSPF area is reinitialized."; | |||
} | } | |||
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 Boundary Routers (ASBRs)."; | "The total number of 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 | Discontinuities in the value of this counter can occur | |||
when the OSPF area is re-initialized."; | when the OSPF area is reinitialized."; | |||
} | } | |||
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 uint32; | type uint32; | |||
description | description | |||
"The module 2**32 sum of the LSA checksums | "The module 2**32 sum of the LSA checksums | |||
for area-scope LSAs. The value should be treated as | for area-scope LSAs. The value should be treated as | |||
unsigned when comparing two sums of checksums. While | unsigned when comparing two sums of checksums. While | |||
differing checksums indicate a different combination | differing checksums indicate a different combination | |||
of LSAs, equivalent checksums don't guarantee that the | of LSAs, equivalent checksums don't guarantee that the | |||
LSAs are the same given that multiple combinations of | LSAs are the same, given that multiple combinations of | |||
LSAs can result in the same checksum."; | 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 this LSA type."; | ||||
} | } | |||
leaf lsa-cksum-sum { | leaf lsa-cksum-sum { | |||
type uint32; | type uint32; | |||
description | description | |||
"The module 2**32 sum of the LSA checksums | "The module 2**32 sum of the LSA checksums | |||
for the LSAs of this type. The value should be | for LSAs of this type. The value should be | |||
treated as unsigned when comparing two sums of | treated as unsigned when comparing two sums of | |||
checksums. While differing checksums indicate a | checksums. While differing checksums indicate a | |||
different combination of LSAs, equivalent checksums | different combination of LSAs, equivalent checksums | |||
don't guarantee that the LSAs are the same given that | don't guarantee that the LSAs are the same, given that | |||
multiple combinations of LSAs can result in the same | multiple combinations of LSAs can result in the same | |||
checksum."; | checksum."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping interface-stat { | grouping interface-stat { | |||
description "Per-interface statistics"; | description | |||
"Per-interface statistics."; | ||||
leaf discontinuity-time { | leaf discontinuity-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time on the most recent occasion at which any one or | "The time of the most recent occasion at which any one or | |||
more of this OSPF interface's counters suffered a | more of this OSPF interface's counters suffered a | |||
discontinuity. If no such discontinuities have occurred | discontinuity. If no such discontinuities have occurred | |||
since the OSPF interface was last re-initialized, then | since the OSPF interface was last reinitialized, then | |||
this node contains the time the OSPF interface was | this node contains the time the OSPF interface was | |||
re-initialized which normally occurs when it was | reinitialized, which normally occurs when it was | |||
created."; | 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. Discontinuities in the | state or an error has occurred. Discontinuities in the | |||
value of this counter can occur when the OSPF interface | value of this counter can occur when the OSPF interface | |||
is re-initialized."; | is reinitialized."; | |||
} | } | |||
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 | description | |||
"The module 2**32 sum of the LSA checksums | "The module 2**32 sum of the LSA checksums | |||
for link-scope LSAs. The value should be treated as | for link-scope LSAs. The value should be treated as | |||
unsigned when comparing two sums of checksums. While | unsigned when comparing two sums of checksums. While | |||
differing checksums indicate a different combination | differing checksums indicate a different combination | |||
of LSAs, equivalent checksums don't guarantee that the | of LSAs, equivalent checksums don't guarantee that the | |||
LSAs are the same given that multiple combinations of | LSAs are the same, given that multiple combinations of | |||
LSAs can result in the same checksum."; | 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 this LSA type."; | ||||
} | } | |||
leaf lsa-cksum-sum { | leaf lsa-cksum-sum { | |||
type uint32; | type uint32; | |||
description | description | |||
"The module 2**32 sum of the LSA checksums | "The module 2**32 sum of the LSA checksums | |||
for the LSAs of this type. The value should be | for LSAs of this type. The value should be | |||
treated as unsigned when comparing two sums of | treated as unsigned when comparing two sums of | |||
checksums. While differing checksums indicate a | checksums. While differing checksums indicate a | |||
different combination of LSAs, equivalent checksums | different combination of LSAs, equivalent checksums | |||
don't guarantee that the LSAs are the same given that | don't guarantee that the LSAs are the same, given that | |||
multiple combinations of LSAs can result in the same | multiple combinations of LSAs can result in the same | |||
checksum."; | checksum."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping neighbor-stat { | grouping neighbor-stat { | |||
description "Per-neighbor statistics."; | description | |||
"Per-neighbor statistics."; | ||||
leaf discontinuity-time { | leaf discontinuity-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time on the most recent occasion at which any one or | "The time of the most recent occasion at which any one or | |||
more of this OSPF neighbor's counters suffered a | more of this OSPF neighbor's counters suffered a | |||
discontinuity. If no such discontinuities have occurred | discontinuity. If no such discontinuities have occurred | |||
since the OSPF neighbor was last re-initialized, then | since the OSPF neighbor was last reinitialized, then | |||
this node contains the time the OSPF neighbor was | this node contains the time the OSPF neighbor was | |||
re-initialized which normally occurs when the neighbor | reinitialized, which normally occurs when the neighbor | |||
is dynamically discovered andcreated."; | is dynamically discovered and created."; | |||
} | } | |||
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. Discontinuities in the | state or an error has occurred. Discontinuities in the | |||
value of this counter can occur when the OSPF neighbor | value of this counter can occur when the OSPF neighbor | |||
is re-initialized."; | is reinitialized."; | |||
} | } | |||
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 | "This group defines the global configuration of | |||
Fast ReRoute (FRR)."; | IP Fast Reroute (IP-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 Loop-Free Alternatives (LFA). | global parameters for Loop-Free Alternates (LFAs). | |||
Container creation has no effect on LFA activation."; | Container creation has no effect on LFA activation."; | |||
} | } | |||
} | } | |||
} | } | |||
grouping instance-fast-reroute-state { | grouping instance-fast-reroute-state { | |||
description "IP-FRR state data grouping"; | description | |||
"IP-FRR state data grouping."; | ||||
container protected-routes { | container protected-routes { | |||
if-feature fast-reroute; | if-feature fast-reroute; | |||
config false; | config false; | |||
description "Instance protection statistics"; | description | |||
"Instance protection statistics."; | ||||
list address-family-stats { | list address-family-stats { | |||
key "address-family prefix alternate"; | key "address-family prefix alternate"; | |||
description | description | |||
"Per Address Family protected prefix information"; | "Per-Address-Family (AF) protected prefix information."; | |||
leaf address-family { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description | description | |||
"Address-family"; | "Address family."; | |||
} | } | |||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"Protected prefix."; | "Protected prefix."; | |||
} | } | |||
leaf alternate { | leaf alternate { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Alternate next hop for the prefix."; | "Alternate next hop for the prefix."; | |||
} | } | |||
leaf alternate-type { | leaf alternate-type { | |||
type enumeration { | type enumeration { | |||
enum equal-cost { | enum equal-cost { | |||
description | description | |||
"ECMP alternate."; | "ECMP-based alternate."; | |||
} | } | |||
enum lfa { | enum lfa { | |||
description | description | |||
"LFA alternate."; | "LFA-based alternate."; | |||
} | } | |||
enum remote-lfa { | enum remote-lfa { | |||
description | description | |||
"Remote LFA alternate."; | "Remote-LFA-based alternate."; | |||
} | } | |||
enum tunnel { | enum tunnel { | |||
description | description | |||
"Tunnel based alternate | "Tunnel-based alternate (like RSVP-TE or GRE)."; | |||
(like RSVP-TE or GRE)."; | ||||
} | } | |||
enum ti-lfa { | enum ti-lfa { | |||
description | description | |||
"TI-LFA alternate."; | "TI-LFA-based alternate."; | |||
} | } | |||
enum mrt { | enum mrt { | |||
description | description | |||
"MRT alternate."; | "MRT-based alternate."; | |||
} | } | |||
enum other { | enum other { | |||
description | description | |||
"Unknown alternate type."; | "Unknown alternate type."; | |||
} | } | |||
} | } | |||
description | description | |||
"Type of alternate."; | "Type of alternate."; | |||
} | } | |||
leaf best { | leaf best { | |||
type boolean; | type boolean; | |||
description | description | |||
"Indicates that this alternate is preferred."; | "Indicates that this alternate is preferred."; | |||
} | } | |||
leaf non-best-reason { | leaf non-best-reason { | |||
type string { | type string { | |||
length "1..255"; | length "1..255"; | |||
} | } | |||
description | description | |||
"Information field to describe why the alternate | "Information field used to describe why the alternate | |||
is not best."; | is not the best choice."; | |||
} | } | |||
leaf protection-available { | leaf protection-available { | |||
type bits { | type bits { | |||
bit node-protect { | bit node-protect { | |||
position 0; | position 0; | |||
description | description | |||
"Node protection available."; | "Node protection available."; | |||
} | } | |||
bit link-protect { | bit link-protect { | |||
position 1; | position 1; | |||
description | description | |||
"Link protection available."; | "Link protection available."; | |||
} | } | |||
bit srlg-protect { | bit srlg-protect { | |||
position 2; | position 2; | |||
description | description | |||
"SRLG protection available."; | "Shared Risk Link Group (SRLG) protection | |||
available."; | ||||
} | } | |||
bit downstream-protect { | bit downstream-protect { | |||
position 3; | position 3; | |||
description | description | |||
"Downstream protection available."; | "Downstream protection available."; | |||
} | } | |||
bit other { | bit other { | |||
position 4; | position 4; | |||
description | description | |||
"Other protection available."; | "Other protection available."; | |||
} | } | |||
} | } | |||
description "Protection provided by the alternate."; | description | |||
"Protection provided by the alternate."; | ||||
} | } | |||
leaf alternate-metric1 { | leaf alternate-metric1 { | |||
type uint32; | type uint32; | |||
description | description | |||
"Metric from Point of Local Repair (PLR) to | "Metric from the Point of Local Repair (PLR) to | |||
destination through the alternate path."; | the destination through the alternate path."; | |||
} | } | |||
leaf alternate-metric2 { | leaf alternate-metric2 { | |||
type uint32; | type uint32; | |||
description | description | |||
"Metric from PLR to the alternate node"; | "Metric from the PLR to the alternate node."; | |||
} | } | |||
leaf alternate-metric3 { | leaf alternate-metric3 { | |||
type uint32; | type uint32; | |||
description | description | |||
"Metric from alternate node to the destination"; | "Metric from the alternate node to the destination."; | |||
} | } | |||
} | } | |||
} | } | |||
container unprotected-routes { | container unprotected-routes { | |||
if-feature fast-reroute; | if-feature fast-reroute; | |||
config false; | config false; | |||
description "List of prefixes that are not protected"; | description | |||
"List of prefixes that are not protected."; | ||||
list address-family-stats { | list address-family-stats { | |||
key "address-family prefix"; | key "address-family prefix"; | |||
description | description | |||
"Per Address Family (AF) unprotected prefix statistics."; | "Per-AF unprotected prefix statistics."; | |||
leaf address-family { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description "Address-family"; | description | |||
"Address family."; | ||||
} | } | |||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description "Unprotected prefix."; | description | |||
"Unprotected prefix."; | ||||
} | } | |||
} | } | |||
} | } | |||
list protection-statistics { | list protection-statistics { | |||
key frr-protection-method; | key frr-protection-method; | |||
config false; | config false; | |||
description "List protection method statistics"; | description | |||
"List of protection method statistics."; | ||||
leaf frr-protection-method { | leaf frr-protection-method { | |||
type string; | type string; | |||
description "Protection method used."; | description | |||
"Protection method used."; | ||||
} | } | |||
list address-family-stats { | list address-family-stats { | |||
key address-family; | key address-family; | |||
description "Per Address Family protection statistics."; | description | |||
"Per-AF protection statistics."; | ||||
leaf address-family { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description "Address-family"; | description | |||
"Address family."; | ||||
} | } | |||
leaf total-routes { | leaf total-routes { | |||
type uint32; | type uint32; | |||
description "Total prefixes."; | description | |||
"Total prefixes."; | ||||
} | } | |||
leaf unprotected-routes { | leaf unprotected-routes { | |||
type uint32; | type uint32; | |||
description | description | |||
"Total prefixes that are not protected."; | "Total prefixes that are not protected."; | |||
} | } | |||
leaf protected-routes { | leaf protected-routes { | |||
type uint32; | type uint32; | |||
description | description | |||
"Total prefixes that are protected."; | "Total prefixes that are protected."; | |||
skipping to change at page 78, line 18 ¶ | skipping to change at line 3924 ¶ | |||
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; | |||
description | description | |||
"Enable the interface to be used as backup."; | "Enables the interface to be used as a backup."; | |||
} | } | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
default false; | default false; | |||
description | description | |||
"Activates LFA - Per-prefix LFA computation | "Activates an LFA. Per-prefix LFA computation | |||
is assumed."; | is assumed."; | |||
} | } | |||
container remote-lfa { | container remote-lfa { | |||
if-feature remote-lfa; | if-feature remote-lfa; | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
default false; | default false; | |||
description | description | |||
"Activates Remote LFA (R-LFA)."; | "Activates a Remote LFA (R-LFA)."; | |||
} | } | |||
description | description | |||
"Remote LFA configuration."; | "R-LFA configuration."; | |||
} | } | |||
description | description | |||
"LFA configuration."; | "LFA configuration."; | |||
} | } | |||
description | description | |||
"Interface IP Fast-reroute configuration."; | "Interface IP-FRR 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 (non-virtual) and sham links."; | physical interfaces (non-virtual) and sham links."; | |||
leaf cost { | leaf cost { | |||
type ospf-link-metric; | type ospf-link-metric; | |||
description | description | |||
"Interface cost."; | "Interface's 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 | "Enables/disables bypassing the MTU mismatch check in | |||
Database Description packets specified in RFC 2328, | Database Description packets as specified in Section 10.6 | |||
section 10.6."; | of RFC 2328."; | |||
reference | ||||
"RFC 2328: OSPF Version 2, 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 | "Suppresses 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; | |||
units seconds; | units seconds; | |||
description | description | |||
"Interval between hello packets (seconds). It must | "Interval between Hello packets (seconds). It must | |||
be the same for all routers on the same network. | be the same for all routers on the same network. | |||
Different networks, implementations, and deployments | Different networks, implementations, and deployments | |||
will use different hello-intervals. A sample value | will use different Hello intervals. A sample value | |||
for a LAN network would be 10 seconds."; | for a LAN network would be 10 seconds."; | |||
reference "RFC 2328: OSPF Version 2, Appendix C.3"; | reference | |||
"RFC 2328: OSPF Version 2, Appendix C.3"; | ||||
} | } | |||
leaf dead-interval { | leaf dead-interval { | |||
type uint16; | type uint16; | |||
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 the 'hello-interval'."; | "The value must be greater than 'hello-interval'."; | |||
} | } | |||
description | description | |||
"Interval after which a neighbor is declared down | "Interval after which a neighbor is declared down | |||
(seconds) if hello packets are not received. It is | (seconds) if Hello packets are not received. It is | |||
typically 3 or 4 times the hello-interval. A typical | typically 3 or 4 times the 'hello-interval' period. | |||
value for LAN networks is 40 seconds."; | A typical value for LAN networks is 40 seconds."; | |||
reference "RFC 2328: OSPF Version 2, Appendix C.3"; | 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) (seconds). This should | State Advertisements (LSAs) (seconds). This should | |||
be well over the round-trip transmit delay for | be well over the round-trip transmit delay for | |||
any two routers on the network. A sample value | any two routers on the network. A sample value | |||
would be 5 seconds."; | would be 5 seconds."; | |||
reference "RFC 2328: OSPF Version 2, Appendix C.3"; | reference | |||
"RFC 2328: OSPF Version 2, Appendix C.3"; | ||||
} | } | |||
leaf transmit-delay { | leaf transmit-delay { | |||
type uint16; | type uint16; | |||
units seconds; | units seconds; | |||
description | description | |||
"Estimated time needed to transmit Link State Update | "Estimated time needed to transmit Link State Update | |||
(LSU) packets on the interface (seconds). LSAs have | (LSU) packets on the interface (seconds). LSAs have | |||
their age incremented by this amount when advertised | their age incremented by this amount when advertised | |||
on the interface. A sample value would be 1 second."; | on the interface. A sample value would be 1 second."; | |||
reference "RFC 2328: OSPF Version 2, Appendix C.3"; | 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."; | "Enables/disables link-local signaling (LLS) support."; | |||
} | } | |||
container ttl-security { | container ttl-security { | |||
if-feature ttl-security; | if-feature ttl-security; | |||
description "Time to Live (TTL) security check."; | description | |||
"Time to Live (TTL) security checking."; | ||||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable TTL security check."; | "Enables/disables TTL security checking."; | |||
} | } | |||
leaf hops { | leaf hops { | |||
type uint8 { | type uint8 { | |||
range "1..254"; | range "1..254"; | |||
} | } | |||
default 1; | 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 { | |||
type boolean; | type boolean; | |||
default true; | default true; | |||
skipping to change at page 81, line 16 ¶ | skipping to change at line 4073 ¶ | |||
default 1; | 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 { | |||
type boolean; | type boolean; | |||
default true; | default true; | |||
description | description | |||
"Enable/disable OSPF protocol on the interface."; | "Enables/disables the 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 OSPFv2/OSPFv3 authentication | "Options for OSPFv2/OSPFv3 authentication | |||
configuration."; | configuration."; | |||
case ospfv2-auth { | case ospfv2-auth { | |||
when "derived-from-or-self(../../../../../../rt:type, " | when "derived-from-or-self(../../../../../../rt:type, " | |||
+ "'ospfv2')" { | + "'ospfv2')" { | |||
description "Applied to OSPFv2 only."; | description | |||
"Applied to OSPFv2 only."; | ||||
} | } | |||
leaf ospfv2-auth-trailer-rfc { | leaf ospfv2-auth-trailer-rfc { | |||
if-feature ospfv2-authentication-trailer; | if-feature ospfv2-authentication-trailer; | |||
type ospfv2-auth-trailer-rfc-version; | type ospfv2-auth-trailer-rfc-version; | |||
description | description | |||
"Version of OSFPv2 authentication trailer support - | "Version of OSPFv2 Authentication Trailer support. | |||
RFC 5709 or RFC 7474"; | See RFCs 5709 and 7474."; | |||
reference | ||||
"RFC 5709: OSPFv2 HMAC-SHA Cryptographic Authentication | ||||
RFC 7474: Security Extension for OSPFv2 When Using | ||||
Manual Key Management"; | ||||
} | } | |||
choice ospfv2-auth-specification { | choice ospfv2-auth-specification { | |||
description | description | |||
"Key chain or explicit key parameter specification"; | "Key chain or explicit key parameter specification."; | |||
case auth-key-chain { | case auth-key-chain { | |||
if-feature key-chain; | if-feature key-chain; | |||
leaf ospfv2-key-chain { | leaf ospfv2-key-chain { | |||
type key-chain:key-chain-ref; | type key-chain:key-chain-ref; | |||
description | description | |||
"key-chain name."; | "Name of the key chain."; | |||
} | } | |||
} | } | |||
case auth-key-explicit { | case auth-key-explicit { | |||
leaf ospfv2-key-id { | leaf ospfv2-key-id { | |||
type uint32; | type uint32; | |||
description | description | |||
"Key Identifier"; | "Key identifier."; | |||
} | } | |||
leaf ospfv2-key { | leaf ospfv2-key { | |||
type string; | type string; | |||
description | description | |||
"OSPFv2 authentication key. The | "OSPFv2 authentication key. The | |||
length of the key may be dependent on the | length of the key may be dependent on the | |||
cryptographic algorithm."; | cryptographic algorithm."; | |||
} | } | |||
leaf ospfv2-crypto-algorithm { | leaf ospfv2-crypto-algorithm { | |||
type identityref { | type identityref { | |||
base key-chain:crypto-algorithm; | base key-chain:crypto-algorithm; | |||
} | } | |||
description | description | |||
"Cryptographic algorithm associated with key."; | "Cryptographic algorithm associated with the key."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
case ospfv3-auth-ipsec { | case ospfv3-auth-ipsec { | |||
when "derived-from-or-self(../../../../../../rt:type, " | when "derived-from-or-self(../../../../../../rt:type, " | |||
+ "'ospfv3')" { | + "'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 (SA) name."; | "Name of the Security Association (SA)."; | |||
} | } | |||
} | } | |||
case ospfv3-auth-trailer { | case ospfv3-auth-trailer { | |||
when "derived-from-or-self(../../../../../../rt:type, " | when "derived-from-or-self(../../../../../../rt:type, " | |||
+ "'ospfv3')" { | + "'ospfv3')" { | |||
description "Applied to OSPFv3 only."; | description | |||
"Applied to OSPFv3 only."; | ||||
} | } | |||
if-feature ospfv3-authentication-trailer; | if-feature ospfv3-authentication-trailer; | |||
choice ospfv3-auth-specification { | choice ospfv3-auth-specification { | |||
description | description | |||
"Key chain or explicit key parameter specification"; | "Key chain or explicit key parameter specification."; | |||
case auth-key-chain { | case auth-key-chain { | |||
if-feature key-chain; | if-feature key-chain; | |||
leaf ospfv3-key-chain { | leaf ospfv3-key-chain { | |||
type key-chain:key-chain-ref; | type key-chain:key-chain-ref; | |||
description | description | |||
"key-chain name."; | "Name of the key chain."; | |||
} | } | |||
} | } | |||
case auth-key-explicit { | case auth-key-explicit { | |||
leaf ospfv3-sa-id { | leaf ospfv3-sa-id { | |||
type uint16; | type uint16; | |||
description | description | |||
"Security Association (SA) Identifier"; | "SA identifier."; | |||
} | } | |||
leaf ospfv3-key { | leaf ospfv3-key { | |||
type string; | type string; | |||
description | description | |||
"OSPFv3 authentication key. The | "OSPFv3 authentication key. The | |||
length of the key may be dependent on the | length of the key may be dependent on the | |||
cryptographic algorithm."; | cryptographic algorithm."; | |||
} | } | |||
leaf ospfv3-crypto-algorithm { | leaf ospfv3-crypto-algorithm { | |||
type identityref { | type identityref { | |||
base key-chain:crypto-algorithm; | base key-chain:crypto-algorithm; | |||
} | } | |||
description | description | |||
"Cryptographic algorithm associated with key."; | "Cryptographic algorithm associated with the key."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
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."; | "Specifies an OSPF broadcast multi-access network."; | |||
} | } | |||
enum "non-broadcast" { | enum "non-broadcast" { | |||
description | description | |||
"Specify OSPF Non-Broadcast Multi-Access | "Specifies an OSPF Non-Broadcast Multi-Access | |||
(NBMA) network."; | (NBMA) network."; | |||
} | } | |||
enum "point-to-multipoint" { | enum "point-to-multipoint" { | |||
description | description | |||
"Specify OSPF point-to-multipoint network."; | "Specifies an OSPF point-to-multipoint network."; | |||
} | } | |||
enum "point-to-point" { | enum "point-to-point" { | |||
description | description | |||
"Specify OSPF point-to-point network."; | "Specifies an OSPF point-to-point network."; | |||
} | } | |||
enum "hybrid" { | enum "hybrid" { | |||
if-feature hybrid-interface; | if-feature hybrid-interface; | |||
description | description | |||
"Specify OSPF hybrid broadcast/P2MP network."; | "Specifies an OSPF Hybrid Broadcast / | |||
point-to-multipoint 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 | "Enables/disables a passive interface. A passive | |||
prefix will be advertised but no neighbor adjacencies | interface's prefix will be advertised, but no neighbor | |||
will be formed on the interface."; | adjacencies 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."; | "Enables/disables a demand circuit."; | |||
} | } | |||
leaf priority { | leaf priority { | |||
type uint8; | type uint8; | |||
description | description | |||
"Configure OSPF router priority. On multi-access network | "Configures OSPF router priority. In a multi-access | |||
this value is for Designated Router (DR) election. The | network, this value is for Designated Router (DR) election. | |||
priority is ignored on other interface types. A router | The priority is ignored on other interface types. A router | |||
with a higher priority will be preferred in the election | with a higher priority will be preferred in the election. | |||
and a value of 0 indicates the router is not eligible to | A value of 0 indicates that the router is not eligible to | |||
become Designated Router or Backup Designated Router | become the DR or Backup DR (BDR)."; | |||
(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 configuration."; | ||||
list multi-area { | list multi-area { | |||
key multi-area-id; | key multi-area-id; | |||
description | description | |||
"Configure OSPF multi-area adjacency."; | "Configures an 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 ospf-link-metric; | type ospf-link-metric; | |||
description | description | |||
"Interface cost for multi-area adjacency."; | "Interface cost for a 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."; | "Specifies 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's Router ID, IPv4 address, or IPv6 address."; | |||
} | } | |||
leaf cost { | leaf cost { | |||
type ospf-link-metric; | type ospf-link-metric; | |||
description | description | |||
"Neighbor cost. Different implementations have different | "Neighbor's cost. Different implementations have | |||
default costs with some defaulting to a cost inversely | different default costs, with some defaulting to a | |||
proportional to the interface speed. Others will | cost inversely proportional to the interface speed. | |||
default to 1 equating the cost to a hop count." ; | Others will default to 1, equating the cost to a | |||
hop count."; | ||||
} | } | |||
leaf poll-interval { | leaf poll-interval { | |||
type uint16; | type uint16; | |||
units seconds; | units seconds; | |||
description | description | |||
"Neighbor poll interval (seconds) for sending OSPF | "Neighbor's poll interval (seconds) for sending OSPF | |||
hello packets to discover the neighbor on NBMA | Hello packets to discover the neighbor on NBMA | |||
networks. This interval dictates the granularity for | networks. This interval dictates the granularity for | |||
discovery of new neighbors. A sample would be | discovery of new neighbors. A sample would be | |||
120 seconds (2 minutes) for a legacy Packet Data | 120 seconds (2 minutes) for a legacy Packet Data | |||
Network (PDN) X.25 network."; | Network (PDN) X.25 network."; | |||
reference "RFC 2328: OSPF Version 2, Appendix C.5"; | reference | |||
"RFC 2328: OSPF Version 2, Appendix C.5"; | ||||
} | } | |||
leaf priority { | leaf priority { | |||
type uint8; | type uint8; | |||
description | description | |||
"Neighbor priority for DR election. A router with a | "Neighbor's priority for DR election. A router with a | |||
higher priority will be preferred in the election | higher priority will be preferred in the election. | |||
and a value of 0 indicates the router is not | A value of 0 indicates that the router is not | |||
eligible to become Designated Router or Backup | eligible to become the DR or BDR."; | |||
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 identifying the advertising router."; | "Sets the prefix as identifying the advertising router."; | |||
reference "RFC 7684: OSPFv2 Prefix/Link Attribute | reference | |||
Advertisement"; | "RFC 7684: OSPFv2 Prefix/Link Attribute Advertisement"; | |||
} | } | |||
container bfd { | container bfd { | |||
if-feature bfd; | if-feature bfd; | |||
description "BFD Client Configuration."; | description | |||
"BFD client configuration."; | ||||
uses bfd-types:client-cfg-parms; | uses bfd-types:client-cfg-parms; | |||
reference "RFC YYYY: YANG Data Model for Bidirectional | reference | |||
Forwarding Detection (BFD). Please replace YYYY with | "RFC 9127: YANG Data Model for Bidirectional Forwarding | |||
published RFC number for draft-ietf-bfd-yang."; | Detection (BFD)"; | |||
} | } | |||
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 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's 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 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 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 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 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 { | leaf cost { | |||
type ospf-link-metric; | type ospf-link-metric; | |||
config false; | config false; | |||
description "Cost to reach neighbor for Point-to-Multipoint | description | |||
and Hybrid networks"; | "Cost to reach the neighbor for point-to-multipoint | |||
and Hybrid networks."; | ||||
} | } | |||
leaf dead-timer { | leaf dead-timer { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
config false; | config false; | |||
description "This timer tracks the remaining time before | description | |||
the neighbor is declared dead."; | "This timer tracks the remaining time before | |||
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: OSPF Version2 - | reference | |||
The Interface Data Structure"; | "RFC 2328: OSPF Version 2, Section 9"; | |||
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 rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
config false; | config false; | |||
description "This timer tracks the remaining time before | description | |||
the next hello packet is sent on the | "This timer tracks the remaining time before the | |||
interface."; | next Hello packet is sent on the interface."; | |||
} | } | |||
leaf wait-timer { | leaf wait-timer { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
config false; | config false; | |||
description "This timer tracks the remaining time before | description | |||
the interface exits the Waiting state."; | "This timer tracks the remaining time before | |||
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 | |||
"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 | |||
"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 | |||
"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 | |||
"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 interface 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's Router ID."; | |||
} | } | |||
uses neighbor-state; | uses neighbor-state; | |||
} | } | |||
} | } | |||
container database { | container database { | |||
config false; | config false; | |||
description "Link-scope Link State Database."; | description | |||
"Link-scope LSDB."; | ||||
list link-scope-lsa-type { | list link-scope-lsa-type { | |||
key "lsa-type"; | key "lsa-type"; | |||
description | description | |||
"List OSPF link-scope LSAs."; | "List of 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 "derived-from-or-self( " | must "derived-from-or-self( " | |||
+ "../../../../../../../../../../" | + "../../../../../../../../../../" | |||
+ "rt:type, 'ospfv2')" { | + "rt:type, 'ospfv2')" { | |||
description "OSPFv2 LSA."; | description | |||
"OSPFv2 LSA."; | ||||
} | } | |||
} | } | |||
refine "version/ospfv3/ospfv3" { | refine "version/ospfv3/ospfv3" { | |||
must "derived-from-or-self( " | must "derived-from-or-self( " | |||
+ "../../../../../../../../../../" | + "../../../../../../../../../../" | |||
+ "rt:type, 'ospfv3')" { | + "rt:type, 'ospfv3')" { | |||
description | ||||
description "OSPFv3 LSA."; | "OSPFv3 LSA."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping interface-state { | grouping interface-state { | |||
description | description | |||
"OSPF interface operational state."; | "OSPF interface operational state."; | |||
reference "RFC2328 Section 9: OSPF Version2 - | reference | |||
The Interface Data Structure"; | "RFC 2328: OSPF Version 2, Section 9"; | |||
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 ospf-link-metric; | type ospf-link-metric; | |||
config false; | config false; | |||
description | description | |||
"Virtual link interface cost."; | "Virtual link interface's 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."; | |||
uses interface-common-state; | uses interface-common-state; | |||
} | } | |||
grouping address-family-area-config { | grouping address-family-area-config { | |||
description | description | |||
"OSPF address-family specific area config state."; | "OSPF address-family-specific area configuration 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 - | "Summarizes routes matching the address/mask. | |||
Applicable to 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 ospf-metric; | type ospf-metric; | |||
description | description | |||
"Advertised cost of summary route."; | "Advertised cost of a 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 "derived-from(../area-type,'stub-nssa-area')" { | when "derived-from(../area-type,'stub-nssa-area')" { | |||
description | description | |||
"Summary advertisement into the stub/NSSA area."; | "Summary advertisement into the stub area / NSSA."; | |||
} | } | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable summary advertisement into the stub or | "Enables/disables a summary advertisement into the stub | |||
NSSA area."; | area or NSSA."; | |||
} | } | |||
leaf default-cost { | leaf default-cost { | |||
when "derived-from(../area-type,'stub-nssa-area')" { | when "derived-from(../area-type,'stub-nssa-area')" { | |||
description | description | |||
"Cost for LSA default route advertised into the | "Cost for the LSA default route advertised into the | |||
stub or NSSA area."; | stub area or NSSA."; | |||
} | } | |||
type ospf-metric; | type ospf-metric; | |||
description | description | |||
"Set the summary default route cost for a | "Sets the summary default route cost for a stub area | |||
stub or NSSA area."; | or NSSA."; | |||
} | } | |||
} | } | |||
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; | |||
skipping to change at page 92, line 42 ¶ | skipping to change at line 4661 ¶ | |||
uses area-common-config; | uses area-common-config; | |||
uses address-family-area-config; | uses address-family-area-config; | |||
} | } | |||
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 Link State Database."; | description | |||
"Area-scope LSDB."; | ||||
list area-scope-lsa-type { | list area-scope-lsa-type { | |||
key "lsa-type"; | key "lsa-type"; | |||
description "List OSPF area-scope LSAs."; | description | |||
"List of 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 "derived-from-or-self( " | must "derived-from-or-self( " | |||
+ "../../../../../../../../" | + "../../../../../../../../" | |||
+ "rt:type, 'ospfv2')" { | + "rt:type, 'ospfv2')" { | |||
description "OSPFv2 LSA."; | description | |||
"OSPFv2 LSA."; | ||||
} | } | |||
} | } | |||
refine "version/ospfv3/ospfv3" { | refine "version/ospfv3/ospfv3" { | |||
must "derived-from-or-self( " | must "derived-from-or-self( " | |||
+ "../../../../../../../../" | + "../../../../../../../../" | |||
+ "rt:type, 'ospfv3')" { | + "rt:type, 'ospfv3')" { | |||
description "OSPFv3 LSA."; | description | |||
"OSPFv3 LSA."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping local-rib { | grouping local-rib { | |||
description "Local-rib - RIB for Routes computed by the local | description | |||
OSPF routing instance."; | "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 "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 hops 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 "Next hop address."; | description | |||
"Address of the next hop."; | ||||
} | } | |||
} | } | |||
} | } | |||
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."; | ||||
} | } | |||
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 { | grouping ietf-spf-delay { | |||
leaf initial-delay { | leaf initial-delay { | |||
type uint32; | type uint32; | |||
units milliseconds; | units milliseconds; | |||
description | description | |||
"Delay used while in QUIET state (milliseconds)."; | "Delay used while in the 'QUIET' state (milliseconds)."; | |||
} | } | |||
leaf short-delay { | leaf short-delay { | |||
type uint32; | type uint32; | |||
units milliseconds; | units milliseconds; | |||
description | description | |||
"Delay used while in SHORT_WAIT state (milliseconds)."; | "Delay used while in the 'SHORT_WAIT' state (milliseconds)."; | |||
} | } | |||
leaf long-delay { | leaf long-delay { | |||
type uint32; | type uint32; | |||
units milliseconds; | units milliseconds; | |||
description | description | |||
"Delay used while in LONG_WAIT state (milliseconds)."; | "Delay used while in the 'LONG_WAIT' state (milliseconds)."; | |||
} | } | |||
leaf hold-down { | leaf hold-down { | |||
type uint32; | type uint32; | |||
units milliseconds; | units milliseconds; | |||
description | description | |||
"Timer used to consider an IGP stability period | "This timer value defines the period without any changes | |||
(milliseconds)."; | for the IGP to be considered stable (milliseconds)."; | |||
} | } | |||
leaf time-to-learn { | leaf time-to-learn { | |||
type uint32; | type uint32; | |||
units milliseconds; | 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 (milliseconds)."; | related to a single component failure (milliseconds)."; | |||
} | } | |||
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 SPF back-off algorithm state."; | "Current SPF back-off algorithm state."; | |||
} | } | |||
leaf remaining-time-to-learn { | leaf remaining-time-to-learn { | |||
type rt-types:timer-value-milliseconds; | type rt-types:timer-value-milliseconds; | |||
config false; | config false; | |||
description | description | |||
"Remaining time until time-to-learn timer fires."; | "Remaining time until the time-to-learn timer fires."; | |||
} | } | |||
leaf remaining-hold-down { | leaf remaining-hold-down { | |||
type rt-types:timer-value-milliseconds; | type rt-types:timer-value-milliseconds; | |||
config false; | config false; | |||
description | description | |||
"Remaining time until hold-down timer fires."; | "Remaining time until the 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 SPF triggering event."; | "Time of the 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 the 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 the last SPF computation."; | |||
} | } | |||
description | description | |||
"Grouping for IETF SPF delay configuration and state"; | "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 configuration 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 admin tags."; | "Container for node administrative tags."; | |||
} | } | |||
} | } | |||
grouping instance-config { | grouping instance-config { | |||
description | description | |||
"OSPF instance config state."; | "OSPF instance configuration state."; | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
default true; | default true; | |||
description | description | |||
"Enable/Disable the protocol."; | "Enables/disables 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."; | |||
reference | ||||
"RFC 2328: OSPF Version 2"; | ||||
} | } | |||
container preference { | container preference { | |||
description | description | |||
"Route preference configuration. In many | "Route preference configuration. In many | |||
implementations, preference is referred to as | implementations, preference is referred to as | |||
administrative distance."; | administrative distance."; | |||
reference | reference | |||
"RFC 8349: A YANG Data Model for Routing Management | "RFC 8349: A YANG Data Model for Routing Management | |||
(NMDA Version)"; | (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 { | |||
skipping to change at page 98, line 22 ¶ | skipping to change at line 4952 ¶ | |||
description | description | |||
"Preference for AS 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) configuration state."; | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable NSR."; | "Enables/disables NSR."; | |||
} | } | |||
} | } | |||
container graceful-restart { | container graceful-restart { | |||
if-feature graceful-restart; | if-feature graceful-restart; | |||
description | description | |||
"Graceful restart config state."; | "Graceful restart configuration state."; | |||
reference "RFC 3623: OSPF Graceful Restart | reference | |||
RFC 5187: OSPFv3 Graceful Restart"; | "RFC 3623: Graceful OSPF 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 | "Enables/disables 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 | "Enables graceful restart helper support for restarting | |||
routers (RFC 3623 Section 3)."; | routers (Section 3 of RFC 3623)."; | |||
reference | ||||
"RFC 3623: Graceful OSPF Restart, Section 3"; | ||||
} | } | |||
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 | |||
"Interval to attempt graceful restart prior | "Interval during which to attempt graceful restart prior | |||
to failing (RFC 3623 Section B.1) (seconds)"; | to failing (seconds) (Appendix B.1 of RFC 3623)."; | |||
reference | ||||
"RFC 3623: Graceful OSPF Restart, Appendix B.1"; | ||||
} | } | |||
leaf helper-strict-lsa-checking { | leaf helper-strict-lsa-checking { | |||
type boolean; | type boolean; | |||
description | description | |||
"Terminate graceful restart when an LSA topology change | "Terminates graceful restart when an LSA topology change | |||
is detected (RFC 3623 Section B.2)."; | is detected (Appendix B.2 of RFC 3623)."; | |||
reference | ||||
"RFC 3623: Graceful OSPF Restart, Appendix B.2"; | ||||
} | } | |||
} | } | |||
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."; | "Enables/disables 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 | "Configures 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..65535"; | 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; | 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"; | |||
} | } | |||
description | description | |||
"Maximum number of LSAs OSPF the router will accept."; | "Maximum number of OSPF LSAs the router will accept."; | |||
} | } | |||
description "Database maintenance control."; | description | |||
"Database maintenance control."; | ||||
} | } | |||
container stub-router { | container stub-router { | |||
if-feature stub-router; | if-feature stub-router; | |||
description "Set maximum metric configuration"; | description | |||
"Sets the maximum metric configuration."; | ||||
choice trigger { | choice trigger { | |||
description | description | |||
"Specific triggers which will enable stub | "Specific triggers that 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 (advertises | |||
transit links with MaxLinkMetric"; | transit links with 'MaxLinkMetric')."; | |||
reference "RFC 6987: OSPF Stub Router | reference | |||
Advertisement"; | "RFC 6987: OSPF Stub Router Advertisement"; | |||
} | } | |||
} | } | |||
} | } | |||
container mpls { | container mpls { | |||
description | description | |||
"OSPF MPLS config state."; | "OSPF MPLS configuration 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 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 configures 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 configures the TE IPv6 Router ID."; | |||
} | } | |||
} | } | |||
container ldp { | container ldp { | |||
description | description | |||
"OSPF MPLS LDP config state."; | "OSPF MPLS LDP configuration 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."; | "Enables LDP IGP synchronization."; | |||
} | } | |||
} | } | |||
} | } | |||
uses instance-fast-reroute-config; | uses instance-fast-reroute-config; | |||
uses node-tag-config; | uses node-tag-config; | |||
} | } | |||
grouping instance-state { | grouping instance-state { | |||
description | description | |||
"OSPF instance operational state."; | "OSPF instance operational state."; | |||
leaf router-id { | leaf router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
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."; | |||
reference | ||||
"RFC 2328: OSPF Version 2"; | ||||
} | } | |||
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 database { | container database { | |||
config false; | config false; | |||
description "AS-scope Link State Database."; | description | |||
"AS-scope LSDB."; | ||||
list as-scope-lsa-type { | list as-scope-lsa-type { | |||
key "lsa-type"; | key "lsa-type"; | |||
description "List OSPF AS-scope LSAs."; | description | |||
"List of 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 LSAs 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 AS-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 "derived-from-or-self( " | must "derived-from-or-self( " | |||
+ "../../../../../../" | + "../../../../../../" | |||
+ "rt:type, 'ospfv2')" { | + "rt:type, 'ospfv2')" { | |||
description "OSPFv2 LSA."; | description | |||
"OSPFv2 LSA."; | ||||
} | } | |||
} | } | |||
refine "version/ospfv3/ospfv3" { | refine "version/ospfv3/ospfv3" { | |||
must "derived-from-or-self( " | must "derived-from-or-self( " | |||
+ "../../../../../../" | + "../../../../../../" | |||
+ "rt:type, 'ospfv3')" { | + "rt:type, 'ospfv3')" { | |||
description "OSPFv3 LSA."; | description | |||
"OSPFv3 LSA."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
uses spf-log; | uses spf-log; | |||
uses lsa-log; | uses lsa-log; | |||
} | } | |||
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 "derived-from(../../../area-type, 'stub-nssa-area')" { | when "derived-from(../../../area-type, 'stub-nssa-area')" { | |||
description | description | |||
"Summary advertisement into the stub/NSSA area."; | "Summary advertisement into the stub area / NSSA."; | |||
} | } | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable summary advertisement into the | "Enables/disables a summary advertisement into the | |||
topology in the stub or NSSA area."; | topology in the stub area or NSSA."; | |||
} | } | |||
leaf default-cost { | leaf default-cost { | |||
when "derived-from(../../../area-type, 'stub-nssa-area')" { | when "derived-from(../../../area-type, 'stub-nssa-area')" { | |||
description | description | |||
"Cost for LSA default route advertised into the | "Cost for the LSA default route advertised into the | |||
topology into the stub or NSSA area."; | topology in the stub area or NSSA."; | |||
} | } | |||
type ospf-metric; | type ospf-metric; | |||
description | description | |||
"Set the summary default route cost for a | "Sets the summary default route cost for a | |||
stub or NSSA area."; | stub area or NSSA."; | |||
} | } | |||
} | } | |||
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 address-family-area-config; | |||
} | } | |||
skipping to change at page 103, line 49 ¶ | skipping to change at line 5238 ¶ | |||
leaf cost { | leaf cost { | |||
type ospf-link-metric; | type ospf-link-metric; | |||
description | description | |||
"Interface cost for this topology."; | "Interface cost for this topology."; | |||
} | } | |||
} | } | |||
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."; | |||
} | } | |||
} | } | |||
grouping ospfv3-interface-state { | grouping ospfv3-interface-state { | |||
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 type { | leaf type { | |||
type uint16; | type uint16; | |||
description | description | |||
"LSA type."; | "LSA type."; | |||
} | } | |||
leaf lsa-id { | leaf lsa-id { | |||
type union { | type union { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
} | } | |||
description "Link-State ID."; | description | |||
"Link State ID."; | ||||
} | } | |||
leaf adv-router { | leaf adv-router { | |||
type rt-types:router-id; | 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 the 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 entries."; | |||
list event { | list event { | |||
key id; | key id; | |||
description | description | |||
"List of SPF log entries represented | "List of SPF log entries represented | |||
as a wrapping buffer in chronological | as a wrapping buffer in chronological | |||
order with the oldest entry returned | order, with the oldest entry returned | |||
first."; | first."; | |||
leaf id { | leaf id { | |||
type uint32; | type uint32; | |||
description | description | |||
"Event identifier - Purely internal value."; | "Event identifier. A purely internal value."; | |||
} | } | |||
leaf spf-type { | leaf spf-type { | |||
type enumeration { | type enumeration { | |||
enum full { | enum full { | |||
description | description | |||
"SPF computation was a Full SPF."; | "The SPF computation was for a full SPF."; | |||
} | } | |||
enum intra { | enum intra { | |||
description | description | |||
"SPF computation was only for intra-area routes."; | "The SPF computation was only for intra-area | |||
routes."; | ||||
} | } | |||
enum inter { | enum inter { | |||
description | description | |||
"SPF computation was only for inter-area | "The SPF computation was only for inter-area | |||
summary routes."; | summary routes."; | |||
} | } | |||
enum external { | enum external { | |||
description | description | |||
"SPF computation was only for AS external routes."; | "The SPF computation was only for AS external | |||
routes."; | ||||
} | } | |||
} | } | |||
description | description | |||
"The SPF computation type for the SPF log entry."; | "The SPF computation type for the SPF log entry."; | |||
} | } | |||
leaf schedule-timestamp { | leaf schedule-timestamp { | |||
type yang:timestamp; | type yang:timestamp; | |||
description | description | |||
"This is the timestamp when the computation was | "This is the timestamp when the computation was | |||
scheduled."; | scheduled."; | |||
} | } | |||
leaf start-timestamp { | leaf start-timestamp { | |||
type yang:timestamp; | type yang:timestamp; | |||
description | description | |||
"This is the timestamp when the computation was | "This is the timestamp when the computation was | |||
started."; | started."; | |||
} | } | |||
leaf end-timestamp { | leaf end-timestamp { | |||
type yang:timestamp; | type yang:timestamp; | |||
description | description | |||
"This the timestamp when the computation was | "This is the timestamp 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 the LSA log."; | "Grouping for the LSA log."; | |||
container lsa-log { | container lsa-log { | |||
config false; | config false; | |||
description | description | |||
"This container lists the LSA log. | "This container lists the LSA log entries. | |||
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 log entries represented | "List of LSA log entries represented | |||
as a wrapping buffer in chronological order | as a wrapping buffer in chronological order, | |||
with the oldest entries returned first."; | with the oldest entry returned first."; | |||
leaf id { | leaf id { | |||
type uint32; | type uint32; | |||
description | description | |||
"Event identifier - purely internal value."; | "Event identifier. A purely internal value."; | |||
} | } | |||
container lsa { | container lsa { | |||
description | description | |||
"This container describes the logged LSA."; | "This container describes the LSA that was logged."; | |||
uses lsa-identifiers; | uses lsa-identifiers; | |||
} | } | |||
leaf received-timestamp { | leaf received-timestamp { | |||
type yang:timestamp; | type yang:timestamp; | |||
description | description | |||
"This is the timestamp when the LSA was received. | "This is the timestamp when the LSA was received. | |||
In case of local LSA update, the timestamp refers | In the case of a local LSA update, the timestamp | |||
to the LSA origination time."; | refers to the LSA origination time."; | |||
} | } | |||
leaf reason { | leaf reason { | |||
type identityref { | type identityref { | |||
base lsa-log-reason; | base lsa-log-reason; | |||
} | } | |||
description | description | |||
"This reason for the LSA log entry."; | "Reason for the LSA log entry."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol" { | + "rt:control-plane-protocol" { | |||
when "derived-from(rt:type, 'ospf')" { | 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 protocol ietf-routing module | description | |||
control-plane-protocol augmentation."; | "OSPF protocol 'ietf-routing' module 'control-plane-protocol' | |||
augmentation."; | ||||
container ospf { | container ospf { | |||
description | description | |||
"OSPF protocol Instance"; | "OSPF protocol instance."; | |||
leaf address-family { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description | description | |||
"Address-family of the instance."; | "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 | description | |||
"List of OSPF areas"; | "List of OSPF areas."; | |||
leaf area-id { | leaf area-id { | |||
type area-id-type; | type area-id-type; | |||
description | description | |||
"Area ID"; | "Area ID."; | |||
} | } | |||
uses area-config; | uses area-config; | |||
uses area-state; | uses area-state; | |||
container virtual-links { | container virtual-links { | |||
when "derived-from-or-self(../area-type, 'normal-area') " | when "derived-from-or-self(../area-type, 'normal-area') " | |||
+ "and ../area-id = '0.0.0.0'" { | + "and ../area-id = '0.0.0.0'" { | |||
description | description | |||
"Virtual links must be in backbone area."; | "Virtual links must be in a 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 "derived-from-or-self(" | must "derived-from-or-self(" | |||
+ "../../../../area[area-id=current()]/area-type, " | + "../../../../area[area-id=current()]/area-type, " | |||
+ "'normal-area') and " | + "'normal-area') and " | |||
+ "../../../../area[area-id=current()]/area-id != " | + "../../../../area[area-id=current()]/area-id != " | |||
+ "'0.0.0.0'" { | + "'0.0.0.0'" { | |||
error-message "Virtual link transit area must " | error-message "The virtual link transit area must " | |||
+ "be non-zero."; | + "be non-zero."; | |||
description | description | |||
"Virtual-link transit area must be | "The virtual link transit area must be a | |||
non-zero area."; | non-zero area."; | |||
} | } | |||
description | description | |||
"Virtual link transit area ID."; | "Virtual link transit area ID."; | |||
} | } | |||
leaf router-id { | leaf router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"Virtual Link remote endpoint Router ID."; | "Virtual link remote endpoint Router ID."; | |||
} | } | |||
uses virtual-link-config; | uses virtual-link-config; | |||
uses virtual-link-state; | uses virtual-link-state; | |||
} | } | |||
} | } | |||
container sham-links { | container sham-links { | |||
if-feature pe-ce-protocol; | if-feature pe-ce-protocol; | |||
description "All sham links."; | description | |||
"All sham links."; | ||||
list sham-link { | list sham-link { | |||
key "local-id remote-id"; | key "local-id remote-id"; | |||
description | description | |||
"OSPF sham link"; | "OSPF sham link."; | |||
leaf local-id { | leaf local-id { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Address of the local sham Link endpoint."; | "Address of the local sham link endpoint."; | |||
} | } | |||
leaf remote-id { | leaf remote-id { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Address of the remote sham Link endpoint."; | "Address of the remote sham link endpoint."; | |||
} | } | |||
uses sham-link-config; | uses sham-link-config; | |||
uses sham-link-state; | uses sham-link-state; | |||
} | } | |||
} | } | |||
container interfaces { | container interfaces { | |||
description "All interfaces."; | description | |||
"All interfaces."; | ||||
list interface { | list interface { | |||
key "name"; | key "name"; | |||
description | description | |||
"List of OSPF interfaces."; | "List of OSPF interfaces."; | |||
leaf name { | leaf name { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Interface name reference."; | "Interface name reference."; | |||
} | } | |||
uses interface-config; | uses interface-config; | |||
skipping to change at page 110, line 4 ¶ | skipping to change at line 5537 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/ospf" { | + "rt:control-plane-protocol/ospf" { | |||
when "derived-from(../rt:type, 'ospf')" { | when "derived-from(../rt:type, 'ospf')" { | |||
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 { | |||
key "name"; | key "name"; | |||
description | description | |||
"OSPF topology - The OSPF topology address-family | "OSPF topology. The OSPF topology address family | |||
must coincide with the routing-instance | must coincide with the routing instance's | |||
address-family."; | 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 name corresponding to the OSPF | description | |||
topology."; | "RIB name corresponding to the OSPF topology."; | |||
} | } | |||
uses multi-topology-state; | uses multi-topology-state; | |||
} | } | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/ospf/" | + "rt:control-plane-protocol/ospf/" | |||
+ "areas/area" { | + "areas/area" { | |||
when "derived-from-or-self(../../../rt:type, " | when "derived-from-or-self(../../../rt:type, " | |||
+ "'ospfv2')" { | + "'ospfv2')" { | |||
description | description | |||
"This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
} | } | |||
if-feature multi-topology; | if-feature multi-topology; | |||
description | description | |||
"OSPF multi-topology area configuration state | "OSPF multi-topology area configuration state | |||
augmentation."; | augmentation."; | |||
container topologies { | container topologies { | |||
description "All topologies for the area."; | description | |||
"All topologies for the area."; | ||||
list topology { | list topology { | |||
key "name"; | key "name"; | |||
description "OSPF area topology."; | description | |||
"OSPF area 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 | |||
"Single topology enabled for this area."; | "Single topology enabled for this area."; | |||
} | } | |||
uses multi-topology-area-config; | uses multi-topology-area-config; | |||
skipping to change at page 111, line 26 ¶ | skipping to change at line 5610 ¶ | |||
when "derived-from-or-self(../../../../../rt:type, " | when "derived-from-or-self(../../../../../rt:type, " | |||
+ "'ospfv2')" { | + "'ospfv2')" { | |||
description | description | |||
"This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
} | } | |||
if-feature 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 | |||
"Single topology enabled on this interface."; | "Single topology enabled on this interface."; | |||
} | } | |||
uses multi-topology-interface-config; | uses multi-topology-interface-config; | |||
skipping to change at page 112, line 5 ¶ | skipping to change at line 5639 ¶ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/ospf/" | + "rt:control-plane-protocol/ospf/" | |||
+ "areas/area/interfaces/interface" { | + "areas/area/interfaces/interface" { | |||
when "derived-from-or-self(../../../../../rt:type, " | when "derived-from-or-self(../../../../../rt:type, " | |||
+ "'ospfv3')" { | + "'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; | |||
} | } | |||
grouping route-content { | grouping route-content { | |||
description | description | |||
"This grouping defines OSPF-specific route attributes."; | "This grouping defines OSPF-specific route attributes."; | |||
leaf metric { | leaf metric { | |||
type uint32; | type uint32; | |||
description "OSPF route metric."; | description | |||
"OSPF route metric."; | ||||
} | } | |||
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 "derived-from(rt:source-protocol, 'ospf')" { | when "derived-from(rt:source-protocol, 'ospf')" { | |||
description | description | |||
"This augmentation is only valid for routes whose | "This augmentation is only valid for routes whose | |||
source protocol is OSPF."; | source protocol is OSPF."; | |||
} | } | |||
description | description | |||
skipping to change at page 112, line 47 ¶ | skipping to change at line 5684 ¶ | |||
uses route-content; | uses route-content; | |||
} | } | |||
/* | /* | |||
* RPCs | * RPCs | |||
*/ | */ | |||
rpc clear-neighbor { | rpc clear-neighbor { | |||
description | description | |||
"This RPC request clears a particular set of OSPF neighbors. | "This RPC request clears a particular set of OSPF neighbors. | |||
If the operation fails for OSPF internal reason, then | If the operation fails for an 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 to meaningful | |||
value."; | values."; | |||
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 | |||
"OSPF protocol instance which information for neighbors | "OSPF protocol instance for which information for neighbors | |||
are to be cleared. | is to be cleared. | |||
If the referenced OSPF instance doesn't exist, then | If the referenced OSPF instance doesn't exist, then | |||
this operation SHALL fail with error-tag 'data-missing' | this operation SHALL fail with an 'error-tag' setting of | |||
and error-app-tag | 'data-missing' and an 'error-app-tag' setting of | |||
'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 for which neighbors are to | "Name of the OSPF interface for which neighbors are to | |||
be cleared. | be cleared. | |||
If the referenced OSPF interface doesn't exist, then | If the referenced OSPF interface doesn't exist, then | |||
this operation SHALL fail with error-tag | this operation SHALL fail with an 'error-tag' setting | |||
'data-missing' and error-app-tag | of 'data-missing' and an 'error-app-tag' setting of | |||
'ospf-interface-not-found'."; | 'ospf-interface-not-found'."; | |||
} | } | |||
} | } | |||
} | } | |||
rpc clear-database { | rpc clear-database { | |||
description | description | |||
"This RPC request clears a particular OSPF Link State | "This RPC request clears a particular OSPF LSDB. | |||
Database. If the operation fails for OSPF internal reason, | If the operation fails for an OSPF-internal reason, | |||
then error-tag and error-app-tag should be set to a | then 'error-tag' and 'error-app-tag' should be set to | |||
meaningful value."; | meaningful values."; | |||
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 | |||
"OSPF protocol instance whose Link State Database is to | "OSPF protocol instance whose LSDB is to be cleared. | |||
be cleared. | ||||
If the referenced OSPF instance doesn't exist, then | If the referenced OSPF instance doesn't exist, then | |||
this operation SHALL fail with error-tag 'data-missing' | this operation SHALL fail with an 'error-tag' setting of | |||
and error-app-tag | 'data-missing' and an 'error-app-tag' setting of | |||
'routing-protocol-instance-not-found'."; | 'routing-protocol-instance-not-found'."; | |||
} | } | |||
} | } | |||
} | } | |||
/* | /* | |||
* Notifications | * Notifications | |||
*/ | */ | |||
grouping notification-instance-hdr { | grouping notification-instance-hdr { | |||
description | description | |||
"This grouping describes common instance specific | "This grouping describes common instance-specific | |||
data for OSPF 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 "derived-from( " | must "derived-from( " | |||
+ "/rt:routing/rt:control-plane-protocols/" | + "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol[rt:name=current()]/" | + "rt:control-plane-protocol[rt:name=current()]/" | |||
+ "rt:type, 'ospf')"; | + "rt:type, 'ospf')"; | |||
description | description | |||
"OSPF routing protocol instance name."; | "Name of the OSPF routing protocol instance."; | |||
} | } | |||
leaf address-family { | 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/address-family"; | + "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 interface information | "This grouping provides interface information | |||
for the OSPF interface specific notification."; | for OSPF interface-specific notifications."; | |||
choice if-link-type-selection { | choice if-link-type-selection { | |||
description | description | |||
"Options for link type."; | "Options for link types."; | |||
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's 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's 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's remote address."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping notification-neighbor { | grouping notification-neighbor { | |||
description | description | |||
"This grouping provides the neighbor information | "This grouping provides the neighbor information | |||
for neighbor specific 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's Router ID."; | ||||
} | } | |||
leaf neighbor-ip-addr { | leaf neighbor-ip-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "Neighbor address."; | description | |||
"Neighbor's 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 inet:ip-address; | 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 "bad-version" { | enum "bad-version" { | |||
description "Bad version."; | description | |||
"Bad version."; | ||||
} | } | |||
enum "area-mismatch" { | enum "area-mismatch" { | |||
description "Area mismatch."; | description | |||
"Area mismatch."; | ||||
} | } | |||
enum "unknown-nbma-nbr" { | enum "unknown-nbma-nbr" { | |||
description "Unknown NBMA neighbor."; | description | |||
"Unknown NBMA neighbor."; | ||||
} | } | |||
enum "unknown-virtual-nbr" { | enum "unknown-virtual-nbr" { | |||
description "Unknown virtual link neighbor."; | description | |||
"Unknown virtual link neighbor."; | ||||
} | } | |||
enum "auth-type-mismatch" { | enum "auth-type-mismatch" { | |||
description "Auth type mismatch."; | description | |||
"Authentication type mismatch."; | ||||
} | } | |||
enum "auth-failure" { | enum "auth-failure" { | |||
description "Auth failure."; | description | |||
"Authentication failure."; | ||||
} | } | |||
enum "net-mask-mismatch" { | enum "net-mask-mismatch" { | |||
description "Network mask mismatch."; | description | |||
"Network mask mismatch."; | ||||
} | } | |||
enum "hello-interval-mismatch" { | enum "hello-interval-mismatch" { | |||
description "Hello interval mismatch."; | description | |||
"Hello interval mismatch."; | ||||
} | } | |||
enum "dead-interval-mismatch" { | enum "dead-interval-mismatch" { | |||
description "Dead interval mismatch."; | description | |||
"Dead interval mismatch."; | ||||
} | } | |||
enum "option-mismatch" { | enum "option-mismatch" { | |||
description "Option mismatch."; | description | |||
"Option mismatch."; | ||||
} | } | |||
enum "mtu-mismatch" { | enum "mtu-mismatch" { | |||
description "MTU mismatch."; | description | |||
"MTU mismatch."; | ||||
} | } | |||
enum "duplicate-router-id" { | enum "duplicate-router-id" { | |||
description "Duplicate Router ID."; | description | |||
"Duplicate Router ID."; | ||||
} | } | |||
enum "no-error" { | enum "no-error" { | |||
description "No error."; | description | |||
"No error."; | ||||
} | } | |||
} | } | |||
description "Error code."; | description | |||
"Error codes."; | ||||
} | } | |||
description | description | |||
"This notification is sent when an interface | "This notification is sent when an interface | |||
config error is detected."; | configuration 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 a 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 rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
description | description | |||
"Remaining time in current OSPF graceful restart | "Remaining time in the current OSPF graceful restart | |||
interval when 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 inet:ip-address; | 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 | |||
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 LSA | |||
entries that can be stored in the Link State Database."; | entries that can be stored in the LSDB."; | |||
} | } | |||
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 LSDB has exceeded ninety percent of the | |||
ninety percent of the AS-external limit (ext-lsdb-limit)."; | 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 LSA | |||
entries that can be stored in the Link State Database."; | entries that can be stored in the LSDB."; | |||
} | } | |||
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 the | in the router's LSDB has exceeded the AS-external limit | |||
AS-external limit (ext-lsdb-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."; | ||||
} | } | |||
leaf status { | leaf status { | |||
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 | |||
skipping to change at page 120, line 38 ¶ | skipping to change at line 6093 ¶ | |||
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 modules specified in this document define a schema for data | The YANG module specified in this document defines a schema for data | |||
that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
is the secure transport layer, and the mandatory-to-implement secure | is the secure transport layer, and the mandatory-to-implement secure | |||
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
is HTTPS, and the mandatory-to-implement secure transport is TLS | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
[RFC8446]. | [RFC8446]. | |||
The NETCONF Access Control Model (NACM) [RFC8341] provides the means | The Network Configuration Access Control Model (NACM) [RFC8341] | |||
to restrict access for particular NETCONF or RESTCONF users to a pre- | provides the means to restrict access for particular NETCONF or | |||
configured subset of all available NETCONF or RESTCONF protocol | RESTCONF users to a preconfigured subset of all available NETCONF or | |||
operations and content. | RESTCONF protocol operations and content. | |||
There are a number of data nodes defined in ietf-ospf.yang module | There are a number of data nodes defined in this YANG module that are | |||
that are writable/creatable/deletable (i.e., config true, which is | writable/creatable/deletable (i.e., config true, which is the | |||
the default). These data nodes may be considered sensitive or | default). These data nodes may be considered sensitive or vulnerable | |||
vulnerable in some network environments. Write operations (e.g., | in some network environments. Write operations (e.g., edit-config) | |||
edit-config) to these data nodes without proper protection can have a | to these data nodes without proper protection can have a negative | |||
negative effect on network operations. Writable data node represent | effect on network operations. These are the subtrees and data nodes | |||
configuration of each instance, area, virtual link, sham-link, and | and their sensitivity/vulnerability: | |||
interface. These correspond to the following schema nodes: | ||||
/ospf | /ospf | |||
/ospf/areas/ | /ospf/areas/ | |||
/ospf/areas/area[area-id] | /ospf/areas/area[area-id] | |||
/ospf/virtual-links/ | /ospf/virtual-links/ | |||
/ospf/virtual-links/virtual-link[transit-area-id router-id] | /ospf/virtual-links/virtual-link[transit-area-id router-id] | |||
/ospf/areas/area[area-id]/interfaces | /ospf/areas/area[area-id]/interfaces | |||
/ospf/areas/area[area-id]/interfaces/interface[name] | /ospf/areas/area[area-id]/interfaces/interface[name] | |||
/ospf/area/area[area-id]/sham-links | /ospf/area/area[area-id]/sham-links | |||
/ospf/area/area[area-id]/sham-links/sham-link[local-id remote-id] | /ospf/area/area[area-id]/sham-links/sham-link[local-id remote-id] | |||
Writable data nodes represent the configuration of each instance, | ||||
area, virtual link, sham link, and interface, and they correspond to | ||||
the schema nodes listed above. | ||||
For OSPF, the ability to modify OSPF configuration will allow the | For OSPF, the ability to modify OSPF configuration will allow the | |||
entire OSPF domain to be compromised including peering with | entire OSPF domain to be compromised, including peering with | |||
unauthorized routers to misroute traffic or mount a massive Denial- | unauthorized routers to misroute traffic or mount a massive Denial- | |||
of-Service (DoS) attack. For example, adding OSPF on any unprotected | of-Service (DoS) attack. For example, adding OSPF on any unprotected | |||
interface could allow an OSPF adjacency to be formed with an | interface could allow an OSPF adjacency to be formed with an | |||
unauthorized and malicious neighbor. Once an adjacency is formed, | unauthorized and malicious neighbor. Once an adjacency is formed, | |||
traffic could be hijacked. As a simpler example, a Denial-of-Service | traffic could be hijacked. As a simpler example, a DoS attack could | |||
attack could be mounted by changing the cost of an OSPF interface to | be mounted by changing the cost of an OSPF interface to be asymmetric | |||
be asymmetric such that a hard routing loop ensues. In general, | such that a hard routing loop ensues. In general, unauthorized | |||
unauthorized modification of most OSPF features will pose there own | modification of most OSPF features will pose their own set of | |||
set of security risks and the "Security Considerations" in the | security risks. The Security Considerations sections in the | |||
respective reference RFCs should be consulted. | respective reference RFCs should be consulted. | |||
Some of the readable data nodes in the ietf-ospf.yang module may be | Some of the readable data nodes in this YANG module may be considered | |||
considered sensitive or vulnerable in some network environments. It | sensitive or vulnerable in some network environments. It is thus | |||
is thus important to control read access (e.g., via get, get-config, | important to control read access (e.g., via get, get-config, or | |||
or notification) to these data nodes. The exposure of the Link State | notification) to these data nodes. These are the subtrees and data | |||
Database (LSDB) will expose the detailed topology of the network. | nodes and their sensitivity/vulnerability: | |||
There is a separate Link State Database for each instance, area, | ||||
virtual link, sham-link, and interface. These correspond to the | ||||
following schema nodes: | ||||
/ospf/database | /ospf/database | |||
/ospf/areas/area[area-id]/database | /ospf/areas/area[area-id]/database | |||
/ospf/virtual-links/virtual-link[transit-area-id router- | /ospf/virtual-links/virtual-link[transit-area-id router- | |||
id]/database | id]/database | |||
/ospf/areas/area[area-id]/interfaces/interface[name]/database | /ospf/areas/area[area-id]/interfaces/interface[name]/database | |||
/ospf/area/area[area-id]/sham-links/sham-link[local-id remote- | /ospf/area/area[area-id]/sham-links/sham-link[local-id remote- | |||
id]/database | id]/database | |||
Exposure of the Link State Database includes information beyond the | Exposure of the Link State Database (LSDB) will in turn expose the | |||
scope of the OSPF router and this may be undesirable since exposure | detailed topology of the network. There is a separate LSDB for each | |||
may facilitate other attacks. Additionally, in the case of an area | instance, area, virtual link, sham link, and interface. These | |||
LSDB, the complete IP network topology and, if deployed, the traffic | correspond to the schema nodes listed above. | |||
engineering topology of the OSPF area can be reconstucted. Network | ||||
operators may consider their topologies to be sensitive confidential | Exposure of the LSDB includes information beyond the scope of the | |||
data. | OSPF router. 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 TE topology of the | ||||
OSPF area can be reconstructed. 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, authentication | a key and an authentication algorithm. Hence, authentication | |||
configuration using the "auth-table-trailer" case in the | configuration using the "key-chain" case in the "authentication-type" | |||
"authentication" container inherits the security considerations of | container [RFC9130] inherits the security considerations of | |||
[RFC8177]. This includes the considerations with respect to the | [RFC8177]. This includes considerations with respect to the local | |||
local storage and handling of authentication keys. | storage and handling of authentication keys. | |||
Additionally, local specification of OSPF authentication keys and the | Additionally, local specification of OSPF authentication keys and the | |||
associated authentication algorithm is supported for legacy | associated authentication algorithm is supported for legacy | |||
implementations that do not support key-chains [RFC8177] It is | implementations that do not support key chains [RFC8177]. It is | |||
RECOMMENDED that implementations migrate to key-chains due the | RECOMMENDED that implementations migrate to key chains because of | |||
seamless support of key and algorithm rollover, as well as, the | (1) seamless support of key and algorithm rollover, (2) specification | |||
hexadecimal key specification affording more key entropy, and | of a hexadecimal key, which affords more key entropy, and | |||
encryption of keys using the Advanced Encryption Standard (AES) Key | (3) encryption of keys using the Advanced Encryption Standard (AES) | |||
Wrap Padding Algorithm [RFC5649]. | Key Wrap with 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. These are the | |||
module supports the "clear-neighbor" and "clear-database" RPCs. If | operations and their sensitivity/vulnerability: | |||
access to either of these is compromised, they can result in | ||||
temporary network outages be employed to mount DoS attacks. | * The OSPF YANG module supports the "clear-neighbor" and "clear- | |||
database" RPCs. If access to either of these RPCs is compromised, | ||||
temporary network outages can be employed to mount DoS attacks as | ||||
a result. | ||||
The actual authentication key data (whether locally specified or part | The actual authentication key data (whether locally specified or part | |||
of a key-chain) is sensitive and needs to be kept secret from | of a key chain) is sensitive and needs to be kept secret from | |||
unauthorized parties; compromise of the key data would allow an | unauthorized parties; compromise of the key data would allow an | |||
attacker to forge OSPF traffic that would be accepted as authentic, | attacker to forge OSPF traffic that would be accepted as authentic, | |||
potentially compromising the entirety OSPF domain. | potentially compromising the entire OSPF domain. | |||
5. IANA Considerations | 5. IANA Considerations | |||
This document registers a URI in the IETF XML registry [RFC3688]. | This document registers a URI in the "IETF XML Registry" [RFC3688]. | |||
Following the format in [RFC3688], the following registration is | Following the format in [RFC3688], the following registration has | |||
requested to be made: | been made: | |||
URI: urn:ietf:params:xml:ns:yang:ietf-ospf | URI: urn:ietf:params:xml:ns:yang:ietf-ospf | |||
Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
XML: N/A, the requested URI is an XML namespace. | XML: N/A; the requested URI is an XML namespace. | |||
This document registers a YANG module in the YANG Module Names | This document registers a YANG module in the "YANG Module Names" | |||
registry [RFC6020]. | registry [RFC6020]. | |||
name: ietf-ospf | Name: ietf-ospf | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-ospf | Namespace: urn:ietf:params:xml:ns:yang:ietf-ospf | |||
prefix: ospf | Prefix: ospf | |||
reference: RFC XXXX | Reference: RFC 9129 | |||
6. Acknowledgements | ||||
The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, | ||||
Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta, | ||||
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. | ||||
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. | ||||
7. References | ||||
7.1. Normative References | 6. References | |||
[I-D.ietf-bfd-yang] | 6.1. Normative References | |||
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, | [RFC1765] Moy, J., "OSPF Database Overflow", RFC 1765, | |||
DOI 10.17487/RFC1765, March 1995, | DOI 10.17487/RFC1765, March 1995, | |||
<https://www.rfc-editor.org/info/rfc1765>. | <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 | |||
skipping to change at page 129, line 29 ¶ | skipping to change at line 6487 ¶ | |||
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
<https://www.rfc-editor.org/info/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
[RFC8476] Tantsura, J., Chunduri, U., Aldrin, S., and P. Psenak, | [RFC8476] Tantsura, J., Chunduri, U., Aldrin, S., and P. Psenak, | |||
"Signaling Maximum SID Depth (MSD) Using OSPF", RFC 8476, | "Signaling Maximum SID Depth (MSD) Using OSPF", RFC 8476, | |||
DOI 10.17487/RFC8476, December 2018, | DOI 10.17487/RFC8476, December 2018, | |||
<https://www.rfc-editor.org/info/rfc8476>. | <https://www.rfc-editor.org/info/rfc8476>. | |||
7.2. Informative References | [RFC9127] Rahman, R., Ed., Zheng, L., Ed., Jethanandani, M., Ed., | |||
Pallagatti, S., and G. Mirsky, "YANG Data Model for | ||||
Bidirectional Forwarding Detection (BFD)", RFC 9127, | ||||
DOI 10.17487/RFC9127, September 2021, | ||||
<https://www.rfc-editor.org/info/rfc9127>. | ||||
6.2. Informative References | ||||
[RFC0905] "ISO Transport Protocol specification ISO DP 8073", | [RFC0905] "ISO Transport Protocol specification ISO DP 8073", | |||
RFC 905, DOI 10.17487/RFC0905, April 1984, | RFC 905, DOI 10.17487/RFC0905, April 1984, | |||
<https://www.rfc-editor.org/info/rfc905>. | <https://www.rfc-editor.org/info/rfc905>. | |||
[RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed., | [RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed., | |||
Coltun, R., and F. Baker, "OSPF Version 2 Management | Coltun, R., and F. Baker, "OSPF Version 2 Management | |||
Information Base", RFC 4750, DOI 10.17487/RFC4750, | Information Base", RFC 4750, DOI 10.17487/RFC4750, | |||
December 2006, <https://www.rfc-editor.org/info/rfc4750>. | December 2006, <https://www.rfc-editor.org/info/rfc4750>. | |||
skipping to change at page 131, line 5 ¶ | skipping to change at line 6526 ¶ | |||
[RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | |||
(BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | |||
<https://www.rfc-editor.org/info/rfc5880>. | <https://www.rfc-editor.org/info/rfc5880>. | |||
[RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | [RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | |||
(BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, | (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, | |||
DOI 10.17487/RFC5881, June 2010, | DOI 10.17487/RFC5881, June 2010, | |||
<https://www.rfc-editor.org/info/rfc5881>. | <https://www.rfc-editor.org/info/rfc5881>. | |||
Appendix A. Contributors' Addresses | [RFC9130] Litkowski, S., Yeung, D., Lindem, A., Zhang, J., and L. | |||
Lhotka, "YANG Data Model for IS-IS Protocol", RFC 9130, | ||||
DOI 10.17487/RFC9130, September 2021, | ||||
<https://www.rfc-editor.org/info/rfc9130>. | ||||
Acknowledgments | ||||
The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, | ||||
Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta, | ||||
Michael Darwish, and Alan Davey for their thorough reviews and | ||||
helpful comments. | ||||
Thanks to Tom Petch for Last Call review and improvements to the | ||||
organization of the document. | ||||
Thanks to Alvaro Retana for AD comments. | ||||
Thanks to Benjamin Kaduk, Suresh Krishnan, and Roman Danyliw for IESG | ||||
review comments. | ||||
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. | ||||
Contributors | ||||
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 | |||
Verizon | Verizon | |||
500 W Dove Rd | 500 W Dove Rd | |||
Southlake, TX 76092 | Southlake, TX 76092 | |||
USA | United States of America | |||
EMail: kk@employees.org | 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 | |||
Futurewei | Futurewei | |||
2330 Central Expressway | 2330 Central Expressway | |||
Santa Clara, CA 95050 | Santa Clara, CA 95050 | |||
USA | United States of America | |||
EMail: yingzhen.qu@futurewei.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 | United States of America | |||
EMail: zzhang@juniper.net | Email: zzhang@juniper.net | |||
Ing-Wher Chen | Ing-Wher Chen | |||
The MITRE Corporation | The MITRE Corporation | |||
EMail: ingwherchen@mitre.org | Email: ingwherchen@mitre.org | |||
Acee Lindem | Acee Lindem | |||
Cisco Systems | Cisco Systems | |||
301 Midenhall Way | 301 Midenhall Way | |||
Cary, NC 27513 | Cary, NC 27513 | |||
United States of America | ||||
EMail: acee@cisco.com | Email: acee@cisco.com | |||
End of changes. 790 change blocks. | ||||
1185 lines changed or deleted | 1520 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/ |