| < draft-ietf-ospf-yang-23.txt | draft-ietf-ospf-yang-29.txt > | |||
|---|---|---|---|---|
| Internet D. Yeung | Internet D. Yeung | |||
| Internet-Draft Arrcus | Internet-Draft Arrcus | |||
| Intended status: Standards Track Y. Qu | Intended status: Standards Track Y. Qu | |||
| Expires: January 2, 2020 Huawei | Expires: April 19, 2020 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 | |||
| July 1, 2019 | October 17, 2019 | |||
| YANG Data Model for OSPF Protocol | YANG Data Model for OSPF Protocol | |||
| draft-ietf-ospf-yang-23 | 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 | |||
| (NDMA) 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 Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on January 2, 2020. | This Internet-Draft will expire on April 19, 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 24 ¶ | skipping to change at page 2, line 24 ¶ | |||
| 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | |||
| 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 | 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Design of Data Model . . . . . . . . . . . . . . . . . . . . 3 | 2. Design of Data Model . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. OSPF Operational State . . . . . . . . . . . . . . . . . 3 | 2.1. OSPF Operational State . . . . . . . . . . . . . . . . . 3 | |||
| 2.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.3. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 5 | 2.3. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.4. Optional Features . . . . . . . . . . . . . . . . . . . . 5 | 2.4. Optional Features . . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.5. OSPF Router Configuration/Operational State . . . . . . . 7 | 2.5. OSPF Router Configuration/Operational State . . . . . . . 7 | |||
| 2.6. OSPF Area Configuration/Operational State . . . . . . . . 10 | 2.6. OSPF Area Configuration/Operational State . . . . . . . . 10 | |||
| 2.7. OSPF Interface Configuration/Operational State . . . . . 16 | 2.7. OSPF Interface Configuration/Operational State . . . . . 16 | |||
| 2.8. OSPF notification . . . . . . . . . . . . . . . . . . . . 19 | 2.8. OSPF Notifications . . . . . . . . . . . . . . . . . . . 19 | |||
| 2.9. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 23 | 2.9. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 23 | |||
| 3. OSPF YANG Module . . . . . . . . . . . . . . . . . . . . . . 23 | 3. OSPF YANG Module . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 116 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 120 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 117 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 123 | |||
| 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 117 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 123 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 118 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 124 | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 118 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 124 | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 123 | 7.2. Informative References . . . . . . . . . . . . . . . . . 129 | |||
| Appendix A. Contributors' Addresses . . . . . . . . . . . . . . 125 | Appendix A. Contributors' Addresses . . . . . . . . . . . . . . 131 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 125 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 131 | |||
| 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 data store that allows networked devices | |||
| to be managed using NETCONF [RFC6241]. YANG is proving relevant | to be managed using NETCONF [RFC6241], RESTCONF [RFC8040], and other | |||
| beyond its initial confines, as bindings to other interfaces (e.g., | Network Management protocols. Furthermore, YANG data models can be | |||
| ReST) and encodings other than XML (e.g., JSON) are being defined. | used as the basis for implementation of other interfaces, such as CLI | |||
| Furthermore, YANG data models can be used as the basis for | and programmatic APIs. | |||
| implementation of other interfaces, such as CLI and programmatic | ||||
| APIs. | ||||
| This document defines a YANG data model that can be used to configure | This document defines a YANG data model that can be used to configure | |||
| and manage OSPF and it is an augmentation to the core routing data | and manage OSPF and it is an augmentation to the core routing data | |||
| model. It fully conforms to the Network Management Datastore | model. It fully conforms to the Network Management Datastore | |||
| Architecture (NDMA) [RFC8342]. A core routing data model is defined | Architecture (NMDA) [RFC8342]. A core routing data model is defined | |||
| in [RFC8349], and it provides the basis for the development of data | in [RFC8349], and it provides the basis for the development of data | |||
| models for routing protocols. The interface data model is defined in | models for routing protocols. The interface data model is defined in | |||
| [RFC8343] and is used for referencing interfaces from the routing | [RFC8343] and is used for referencing interfaces from the routing | |||
| protocol. The key-chain data model used for OSPF authentication is | protocol. The key-chain data model used for OSPF authentication is | |||
| defined in [RFC8177] and provides both a reference to configured key- | defined in [RFC8177] and provides both a reference to configured key- | |||
| chains and an enumeration of cryptographic algorithms. | chains and an enumeration of cryptographic algorithms. | |||
| Both OSPFv2 [RFC2328] and OSPFv3 [RFC5340] are supported. In | Both OSPFv2 [RFC2328] and OSPFv3 [RFC5340] are supported. In | |||
| addition to the core OSPF protocol, features described in other OSPF | addition to the core OSPF protocol, features described in other OSPF | |||
| RFCs are also supported. These includes demand circuit [RFC1793], | RFCs are also supported. These includes demand circuit [RFC1793], | |||
| skipping to change at page 3, line 36 ¶ | skipping to change at page 3, line 34 ¶ | |||
| 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 | |||
| defined in [RFC8340]. | defined in [RFC8340]. | |||
| 2. Design of Data Model | 2. Design of Data Model | |||
| Although the basis of OSPF configuration elements like routers, | Although the basis of OSPF configuration elements like routers, | |||
| areas, and interfaces remains the same, the detailed configuration | areas, and interfaces remains the same, the detailed configuration | |||
| model varies among router vendors. Differences are observed in terms | model varies among router vendors. Differences are observed in terms | |||
| of how the protocol instance is tied to the routing domain, 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 be instantiated among others. | |||
| The goal of this document is to define a data model that provides a | The goal of this document is to define a data model that provides a | |||
| common user interface to the OSPFv2 and OSPFv3 protocols. There is | common user interface to the OSPFv2 and OSPFv3 protocols. There is | |||
| very little information that is designated as "mandatory", providing | very little information that is designated as "mandatory", providing | |||
| freedom for vendors to adapt this data model to their respective | freedom for vendors to adapt this data model to their respective | |||
| product implementations. | product implementations. | |||
| 2.1. OSPF Operational State | 2.1. OSPF Operational State | |||
| skipping to change at page 4, line 22 ¶ | skipping to change at page 4, line 22 ¶ | |||
| ietf-ospf model defines a single instance of OSPF which may be | ietf-ospf model defines a single instance of OSPF which 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 protocols instances. | |||
| module: ietf-ospf | module: ietf-ospf | |||
| augment /rt:routing/rt:control-plane-protocols/ | augment /rt:routing/rt:control-plane-protocols/ | |||
| rt:control-plane-protocol: | rt:control-plane-protocol: | |||
| +--rw ospf | +--rw ospf | |||
| . | . | |||
| . | . | |||
| +--rw operation-mode? identityref | ||||
| +--rw af? identityref | +--rw af? identityref | |||
| . | . | |||
| . | . | |||
| +--rw areas | +--rw areas | |||
| | +--rw area* [area-id] | | +--rw area* [area-id] | |||
| | +--rw area-id area-id-type | | +--rw area-id area-id-type | |||
| | . | | . | |||
| | . | | . | |||
| | +--rw virtual-links | | +--rw virtual-links | |||
| | | +--rw virtual-link* [transit-area-id router-id] | | | +--rw virtual-link* [transit-area-id router-id] | |||
| skipping to change at page 4, line 48 ¶ | skipping to change at page 4, line 47 ¶ | |||
| | | . | | | . | |||
| | +--rw interfaces | | +--rw interfaces | |||
| | +--rw interface* [name] | | +--rw interface* [name] | |||
| | . | | . | |||
| | . | | . | |||
| +--rw topologies {multi-topology}? | +--rw topologies {multi-topology}? | |||
| +--rw topology* [name] | +--rw topology* [name] | |||
| . | . | |||
| . | . | |||
| The ospf module is intended to match to the vendor specific OSPF | ||||
| configuration construct that is identified by the local identifier | ||||
| 'name'. | ||||
| The ospf container includes one OSPF protocol instance. The instance | The ospf container includes one OSPF protocol instance. The instance | |||
| includes OSPF router level configuration and operational state. | includes OSPF router level configuration and operational state. Each | |||
| OSPF instance maps to a control-plane-protcol instance as defined in | ||||
| [RFC8349]. | ||||
| The area and area/interface containers respectively define the OSPF | The area and area/interface containers define the OSPF configuration | |||
| configuration and operational state for OSPF areas and interfaces. | 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 feature | |||
| is supported. | is supported. | |||
| 2.3. OSPFv2 and OSPFv3 | 2.3. OSPFv2 and OSPFv3 | |||
| The data model defined herein supports both OSPFv2 and OSPFv3. | The data model defined herein supports both OSPFv2 and OSPFv3. | |||
| The field 'version' is used to indicate the OSPF version and is | The field 'version' is used to indicate the OSPF version and is | |||
| skipping to change at page 5, line 41 ¶ | skipping to change at page 5, line 38 ¶ | |||
| 1. multi-topology: Support Multi-Topology Routing (MTR) [RFC4915]. | 1. multi-topology: Support Multi-Topology Routing (MTR) [RFC4915]. | |||
| 2. multi-area-adj: Support OSPF multi-area adjacency [RFC5185]. | 2. multi-area-adj: Support OSPF multi-area adjacency [RFC5185]. | |||
| 3. explicit-router-id: Support explicit per-instance Router-ID | 3. explicit-router-id: Support explicit per-instance Router-ID | |||
| specification. | specification. | |||
| 4. demand-circuit: Support OSPF demand circuits [RFC1793]. | 4. demand-circuit: Support OSPF demand circuits [RFC1793]. | |||
| 5. mtu-ignore: Support disabling OSPF Database Description packet | 5. mtu-ignore: Support disabling OSPF Database Description packet | |||
| MTU mismatch checking. | MTU mismatch checking specified in section 10.6 of [RFC2328]. | |||
| 6. lls: Support OSPF link-local signaling (LLS) [RFC5613]. | 6. lls: Support OSPF link-local signaling (LLS) [RFC5613]. | |||
| 7. prefix-suppression: Support OSPF prefix advertisement | 7. prefix-suppression: Support OSPF prefix advertisement | |||
| suppression [RFC6860]. | suppression [RFC6860]. | |||
| 8. ttl-security: Support OSPF Time to Live (TTL) security check | 8. ttl-security: Support OSPF Time to Live (TTL) security check | |||
| support [RFC5082]. | support [RFC5082]. | |||
| 9. nsr: Support OSPF Non-Stop Routing (NSR). The OSPF NSR feature | 9. nsr: Support OSPF Non-Stop Routing (NSR). The OSPF NSR feature | |||
| skipping to change at page 7, line 16 ¶ | skipping to change at page 7, line 13 ¶ | |||
| [RFC6565]. | [RFC6565]. | |||
| 26. ietf-spf-delay: Support IETF SPF delay algorithm [RFC8405]. | 26. ietf-spf-delay: Support IETF SPF delay algorithm [RFC8405]. | |||
| 27. bfd: Support BFD detection of OSPF neighbor reachability | 27. bfd: Support BFD detection of OSPF neighbor reachability | |||
| [RFC5880], [RFC5881], and [I-D.ietf-bfd-yang]. | [RFC5880], [RFC5881], and [I-D.ietf-bfd-yang]. | |||
| 28. hybrid-interface: Support OSPF Hybrid Broadcast and Point-to- | 28. hybrid-interface: Support OSPF Hybrid Broadcast and Point-to- | |||
| Point Interfaces [RFC6845]. | Point Interfaces [RFC6845]. | |||
| 29. two-part-metric: Support OSPF Two-Part Metric [RFC8042]. | ||||
| 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. It | |||
| represents an OSPF protocol instance and contains the router level | 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 | the instance statistics, IETF SPF delay statistics, AS-Scoped Link | |||
| State Database, local RIB, SPF Log, and the LSA log. | State Database, local RIB, SPF Log, and the LSA log. | |||
| skipping to change at page 9, line 32 ¶ | skipping to change at page 9, line 27 ¶ | |||
| | +--ro route* [prefix] | | +--ro route* [prefix] | |||
| | +--ro prefix inet:ip-prefix | | +--ro prefix inet:ip-prefix | |||
| | +--ro next-hops | | +--ro next-hops | |||
| | | +--ro next-hop* [next-hop] | | | +--ro next-hop* [next-hop] | |||
| | | +--ro outgoing-interface? if:interface-ref | | | +--ro outgoing-interface? if:interface-ref | |||
| | | +--ro next-hop inet:ip-address | | | +--ro next-hop inet:ip-address | |||
| | +--ro metric? uint32 | | +--ro metric? uint32 | |||
| | +--ro route-type? route-type | | +--ro route-type? route-type | |||
| | +--ro route-tag? uint32 | | +--ro route-tag? uint32 | |||
| +--ro statistics | +--ro statistics | |||
| | +--ro discontinuity-time yang:date-and-time | ||||
| | +--ro originate-new-lsa-count? yang:counter32 | | +--ro originate-new-lsa-count? yang:counter32 | |||
| | +--ro rx-new-lsas-count? yang:counter32 | | +--ro rx-new-lsas-count? yang:counter32 | |||
| | +--ro as-scope-lsa-count? yang:gauge32 | | +--ro as-scope-lsa-count? yang:gauge32 | |||
| | +--ro as-scope-lsa-chksum-sum? uint32 | | +--ro as-scope-lsa-chksum-sum? uint32 | |||
| | +--ro database | | +--ro database | |||
| | +--ro as-scope-lsa-type* | | +--ro as-scope-lsa-type* | |||
| | +--ro lsa-type? uint16 | | +--ro lsa-type? uint16 | |||
| | +--ro lsa-count? yang:gauge32 | | +--ro lsa-count? yang:gauge32 | |||
| | +--ro lsa-cksum-sum? int32 | | +--ro lsa-cksum-sum? int32 | |||
| +--ro database | +--ro database | |||
| skipping to change at page 11, line 4 ¶ | skipping to change at page 10, line 48 ¶ | |||
| interface containers representing all the OSPF interfaces in the | interface containers representing all the OSPF interfaces in the | |||
| area. The area operational state includes the area statistics and | area. The area operational state includes the area statistics and | |||
| the Area Link State Database (LSDB). | the Area Link State Database (LSDB). | |||
| module: ietf-ospf | module: ietf-ospf | |||
| augment /rt:routing/rt:control-plane-protocols/ | augment /rt:routing/rt:control-plane-protocols/ | |||
| rt:control-plane-protocol: | rt:control-plane-protocol: | |||
| +--rw ospf | +--rw ospf | |||
| . | . | |||
| . | . | |||
| +--rw areas | +--rw areas | |||
| | +--rw area* [area-id] | | +--rw area* [area-id] | |||
| | +--rw area-id area-id-type | | +--rw area-id area-id-type | |||
| | +--rw area-type? identityref | | +--rw area-type? identityref | |||
| | +--rw summary? boolean | | +--rw summary? boolean | |||
| | +--rw default-cost? uint32 | | +--rw default-cost? uint32 | |||
| | +--rw ranges | | +--rw ranges | |||
| | | +--rw range* [prefix] | | | +--rw range* [prefix] | |||
| | | +--rw prefix inet:ip-prefix | | | +--rw prefix inet:ip-prefix | |||
| | | +--rw advertise? boolean | | | +--rw advertise? boolean | |||
| | | +--rw cost? uint24 | | | +--rw cost? uint24 | |||
| | +--rw topologies {ospf:multi-topology}? | ||||
| | | +--rw topology* [name] | ||||
| | | +--rw name -> ../../../../../../../../ | ||||
| | | ../../../rt:ribs/rib/name | ||||
| | | +--rw summary? boolean | ||||
| | | +--rw default-cost? ospf-metric | ||||
| | | +--rw ranges | ||||
| | | +--rw range* [prefix] | ||||
| | | +--rw prefix inet:ip-prefix | ||||
| | | +--rw advertise? boolean | ||||
| | | +--rw cost? ospf-metric | ||||
| | +--ro statistics | | +--ro statistics | |||
| | | +--ro discontinuity-time yang:date-and-time | ||||
| | | +--ro spf-runs-count? yang:counter32 | | | +--ro spf-runs-count? yang:counter32 | |||
| | | +--ro abr-count? yang:gauge32 | | | +--ro abr-count? yang:gauge32 | |||
| | | +--ro asbr-count? yang:gauge32 | | | +--ro asbr-count? yang:gauge32 | |||
| | | +--ro ar-nssa-translator-event-count? | | | +--ro ar-nssa-translator-event-count? | |||
| | | yang:counter32 | | | yang:counter32 | |||
| | | +--ro area-scope-lsa-count? yang:gauge32 | | | +--ro area-scope-lsa-count? yang:gauge32 | |||
| | | +--ro area-scope-lsa-cksum-sum? int32 | | | +--ro area-scope-lsa-cksum-sum? int32 | |||
| | | +--ro database | | | +--ro database | |||
| | | +--ro area-scope-lsa-type* | | | +--ro area-scope-lsa-type* | |||
| | | +--ro lsa-type? uint16 | | | +--ro lsa-type? uint16 | |||
| skipping to change at page 13, line 38 ¶ | skipping to change at page 13, line 46 ¶ | |||
| | | | | {ospfv3-authentication-trailer}? | | | | | {ospfv3-authentication-trailer}? | |||
| | | | +--rw (ospfv3-auth-specification)? | | | | +--rw (ospfv3-auth-specification)? | |||
| | | | +--:(auth-key-chain) {key-chain}? | | | | +--:(auth-key-chain) {key-chain}? | |||
| | | | | +--rw ospfv3-key-chain? | | | | | +--rw ospfv3-key-chain? | |||
| | | | | key-chain:key-chain-ref | | | | | key-chain:key-chain-ref | |||
| | | | +--:(auth-key-explicit) | | | | +--:(auth-key-explicit) | |||
| | | | +--rw ospfv3-sa-id? uint16 | | | | +--rw ospfv3-sa-id? uint16 | |||
| | | | +--rw ospfv3-key? string | | | | +--rw ospfv3-key? string | |||
| | | | +--rw ospfv3-crypto-algorithm? | | | | +--rw ospfv3-crypto-algorithm? | |||
| | | | identityref | | | | identityref | |||
| | | +--ro cost? uint16 | | | +--ro cost? uint16 | |||
| | | +--ro state? if-state-type | | | +--ro state? if-state-type | |||
| | | +--ro hello-timer? uint32 | | | +--ro hello-timer? rt-types: | |||
| | | +--ro wait-timer? uint32 | | | | rtimer-value-seconds16 | |||
| | | +--ro dr-router-id? rt-types:router-id | | | +--ro wait-timer? rt-types: | |||
| | | +--ro dr-ip-addr? inet:ip-address | | | | rtimer-value-seconds16 | |||
| | | +--ro bdr-router-id? rt-types:router-id | | | +--ro dr-router-id? rt-types:router-id | |||
| | | +--ro bdr-ip-addr? inet:ip-address | | | +--ro dr-ip-addr? inet:ip-address | |||
| | | +--ro bdr-router-id? rt-types:router-id | ||||
| | | +--ro bdr-ip-addr? inet:ip-address | ||||
| | | +--ro statistics | | | +--ro statistics | |||
| | | | +--ro discontinuity-time yang:date-and-time | ||||
| | | | +--ro if-event-count? yang:counter32 | | | | +--ro if-event-count? yang:counter32 | |||
| | | | +--ro link-scope-lsa-count? yang:gauge32 | | | | +--ro link-scope-lsa-count? yang:gauge32 | |||
| | | | +--ro link-scope-lsa-cksum-sum? | | | | +--ro link-scope-lsa-cksum-sum? | |||
| | | | uint32 | | | | uint32 | |||
| | | | +--ro database | | | | +--ro database | |||
| | | | +--ro link-scope-lsa-type* | | | | +--ro link-scope-lsa-type* | |||
| | | | +--ro lsa-type? uint16 | | | | +--ro lsa-type? uint16 | |||
| | | | +--ro lsa-count? yang:gauge32 | | | | +--ro lsa-count? yang:gauge32 | |||
| | | | +--ro lsa-cksum-sum? int32 | | | | +--ro lsa-cksum-sum? int32 | |||
| | | +--ro neighbors | | | +--ro neighbors | |||
| | | | +--ro neighbor* [neighbor-router-id] | | | | +--ro neighbor* [neighbor-router-id] | |||
| | | | +--ro neighbor-router-id | | | | +--ro neighbor-router-id | |||
| | | | rt-types:router-id | | | | rt-types:router-id | |||
| | | | +--ro address? inet:ip-address | | | | +--ro address? inet:ip-address | |||
| | | | +--ro dr-router-id? rt-types:router-id | | | | +--ro dr-router-id? rt-types:router-id | |||
| | | | +--ro dr-ip-addr? inet:ip-address | | | | +--ro dr-ip-addr? inet:ip-address | |||
| | | | +--ro bdr-router-id? rt-types:router-id | | | | +--ro bdr-router-id? rt-types:router-id | |||
| | | | +--ro bdr-ip-addr? inet:ip-address | | | | +--ro bdr-ip-addr? inet:ip-address | |||
| | | | +--ro state? nbr-state-type | | | | +--ro state? nbr-state-type | |||
| | | | +--ro dead-timer? uint32 | | | | +--ro dead-timer? rt-types: | |||
| | | | | rtimer-value-seconds16 | ||||
| | | | +--ro statistics | | | | +--ro statistics | |||
| | | | +--ro discontinuity-time | ||||
| | | | yang:date-and-time | ||||
| | | | +--ro nbr-event-count? | | | | +--ro nbr-event-count? | |||
| | | | 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 | |||
| . . | . . | |||
| . . | . . | |||
| skipping to change at page 15, line 29 ¶ | skipping to change at page 15, line 43 ¶ | |||
| | | | +--:(auth-key-explicit) | | | | +--:(auth-key-explicit) | |||
| | | | +--rw ospfv3-sa-id? uint16 | | | | +--rw ospfv3-sa-id? uint16 | |||
| | | | +--rw ospfv3-key? string | | | | +--rw ospfv3-key? string | |||
| | | | +--rw ospfv3-crypto-algorithm? | | | | +--rw ospfv3-crypto-algorithm? | |||
| | | | identityref | | | | identityref | |||
| | | +--rw cost? uint16 | | | +--rw cost? uint16 | |||
| | | +--rw mtu-ignore? boolean | | | +--rw mtu-ignore? boolean | |||
| | | {mtu-ignore}? | | | {mtu-ignore}? | |||
| | | +--rw prefix-suppression? boolean | | | +--rw prefix-suppression? boolean | |||
| | | {prefix-suppression}? | | | {prefix-suppression}? | |||
| | | +--rw two-part-metric? boolean | ||||
| | | {two-part-metric}? | ||||
| | | +--ro state? if-state-type | | | +--ro state? if-state-type | |||
| | | +--ro hello-timer? uint32 | | | +--ro hello-timer? rt-types: | |||
| | | +--ro wait-timer? uint32 | | | | rtimer-value-seconds16 | |||
| | | +--ro wait-timer? rt-types: | ||||
| | | | rtimer-value-seconds16 | ||||
| | | +--ro dr-router-id? rt-types:router-id | | | +--ro dr-router-id? rt-types:router-id | |||
| | | +--ro dr-ip-addr? inet:ip-address | | | +--ro dr-ip-addr? inet:ip-address | |||
| | | +--ro bdr-router-id? rt-types:router-id | | | +--ro bdr-router-id? rt-types:router-id | |||
| | | +--ro bdr-ip-addr? inet:ip-address | | | +--ro bdr-ip-addr? inet:ip-address | |||
| | | +--ro statistics | | | +--ro statistics | |||
| | | | +--ro discontinuity-time yang:date-and-time | ||||
| | | | +--ro if-event-count? yang:counter32 | | | | +--ro if-event-count? yang:counter32 | |||
| | | | +--ro link-scope-lsa-count? yang:gauge32 | | | | +--ro link-scope-lsa-count? yang:gauge32 | |||
| | | | +--ro link-scope-lsa-cksum-sum? | | | | +--ro link-scope-lsa-cksum-sum? | |||
| | | | uint32 | | | | uint32 | |||
| | | | +--ro database | | | | +--ro database | |||
| | | | +--ro link-scope-lsa-type* | | | | +--ro link-scope-lsa-type* | |||
| | | | +--ro lsa-type? uint16 | | | | +--ro lsa-type? uint16 | |||
| | | | +--ro lsa-count? yang:gauge32 | | | | +--ro lsa-count? yang:gauge32 | |||
| | | | +--ro lsa-cksum-sum? int32 | | | | +--ro lsa-cksum-sum? int32 | |||
| | | +--ro neighbors | | | +--ro neighbors | |||
| | | | +--ro neighbor* [neighbor-router-id] | | | | +--ro neighbor* [neighbor-router-id] | |||
| | | | +--ro neighbor-router-id | | | | +--ro neighbor-router-id | |||
| | | | rt-types:router-id | | | | rt-types:router-id | |||
| | | | +--ro address? inet:ip-address | | | | +--ro address? inet:ip-address | |||
| | | | +--ro dr-router-id? rt-types:router-id | | | | +--ro dr-router-id? rt-types:router-id | |||
| | | | +--ro dr-ip-addr? inet:ip-address | | | | +--ro dr-ip-addr? inet:ip-address | |||
| | | | +--ro bdr-router-id? rt-types:router-id | | | | +--ro bdr-router-id? rt-types:router-id | |||
| | | | +--ro bdr-ip-addr? inet:ip-address | | | | +--ro bdr-ip-addr? inet:ip-address | |||
| | | | +--ro state? nbr-state-type | | | | +--ro state? nbr-state-type | |||
| | | | +--ro cost? uint32 | | | | +--ro cost? uint32 | |||
| | | | +--ro dead-timer? uint32 | | | | +--ro dead-timer? rt-types: | |||
| | | | | rtimer-value-seconds16 | ||||
| | | | +--ro statistics | | | | +--ro statistics | |||
| | | | +--ro nbr-event-count? | | | | +--ro nbr-event-count? | |||
| | | | 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 | |||
| . . | . . | |||
| skipping to change at page 18, line 17 ¶ | skipping to change at page 18, line 33 ¶ | |||
| | | +--rw ospfv3-sa-id? uint16 | | | +--rw ospfv3-sa-id? uint16 | |||
| | | +--rw ospfv3-key? string | | | +--rw ospfv3-key? string | |||
| | | +--rw ospfv3-crypto-algorithm? | | | +--rw ospfv3-crypto-algorithm? | |||
| | | identityref | | | identityref | |||
| | +--rw cost? uint16 | | +--rw cost? uint16 | |||
| | +--rw mtu-ignore? boolean | | +--rw mtu-ignore? boolean | |||
| | | {mtu-ignore}? | | | {mtu-ignore}? | |||
| | +--rw prefix-suppression? boolean | | +--rw prefix-suppression? boolean | |||
| | | {prefix-suppression}? | | | {prefix-suppression}? | |||
| | +--ro state? if-state-type | | +--ro state? if-state-type | |||
| | +--ro hello-timer? uint32 | | +--ro hello-timer? rt-types: | |||
| | +--ro wait-timer? uint32 | | | rtimer-value-seconds16 | |||
| | +--ro wait-timer? rt-types: | ||||
| | | rtimer-value-seconds16 | ||||
| | +--ro dr-router-id? rt-types:router-id | | +--ro dr-router-id? rt-types:router-id | |||
| | +--ro dr-ip-addr? inet:ip-address | | +--ro dr-ip-addr? inet:ip-address | |||
| | +--ro bdr-router-id? rt-types:router-id | | +--ro bdr-router-id? rt-types:router-id | |||
| | +--ro bdr-ip-addr? inet:ip-address | | +--ro bdr-ip-addr? inet:ip-address | |||
| | +--ro statistics | | +--ro statistics | |||
| | | +--ro if-event-count? yang:counter32 | | | +--ro if-event-count? yang:counter32 | |||
| | | +--ro link-scope-lsa-count? yang:gauge32 | | | +--ro link-scope-lsa-count? yang:gauge32 | |||
| | | +--ro link-scope-lsa-cksum-sum? | | | +--ro link-scope-lsa-cksum-sum? | |||
| | | uint32 | | | uint32 | |||
| | | +--ro database | | | +--ro database | |||
| skipping to change at page 18, line 43 ¶ | skipping to change at page 19, line 13 ¶ | |||
| | +--ro neighbors | | +--ro neighbors | |||
| | | +--ro neighbor* [neighbor-router-id] | | | +--ro neighbor* [neighbor-router-id] | |||
| | | +--ro neighbor-router-id | | | +--ro neighbor-router-id | |||
| | | rt-types:router-id | | | rt-types:router-id | |||
| | | +--ro address? inet:ip-address | | | +--ro address? inet:ip-address | |||
| | | +--ro dr-router-id? rt-types:router-id | | | +--ro dr-router-id? rt-types:router-id | |||
| | | +--ro dr-ip-addr? inet:ip-address | | | +--ro dr-ip-addr? inet:ip-address | |||
| | | +--ro bdr-router-id? rt-types:router-id | | | +--ro bdr-router-id? rt-types:router-id | |||
| | | +--ro bdr-ip-addr? inet:ip-address | | | +--ro bdr-ip-addr? inet:ip-address | |||
| | | +--ro state? nbr-state-type | | | +--ro state? nbr-state-type | |||
| | | +--ro dead-timer? uint32 | | | +--ro dead-timer? rt-types: | |||
| | | | rtimer-value-seconds16 | ||||
| | | +--ro statistics | | | +--ro statistics | |||
| | | +--ro nbr-event-count? | | | +--ro nbr-event-count? | |||
| | | 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 | |||
| . . | . . | |||
| . . | . . | |||
| | +--rw topologies {ospf:multi-topology}? | | +--rw topologies {ospf:multi-topology}? | |||
| | | +--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 notification | 2.8. OSPF Notifications | |||
| This YANG model defines a list of notifications that inform YANG | This YANG model defines a list of notifications that inform YANG | |||
| clients of important events detected during protocol operation. The | clients of important events detected during protocol operation. The | |||
| defined notifications cover the common set of traps from the OSPFv2 | defined notifications cover the common set of traps from the OSPFv2 | |||
| MIB [RFC4750] and OSPFv3 MIB [RFC5643]. | MIB [RFC4750] and OSPFv3 MIB [RFC5643]. | |||
| notifications: | notifications: | |||
| +---n if-state-change | +---n if-state-change | |||
| | +--ro routing-protocol-name? | | +--ro routing-protocol-name? | |||
| | + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| skipping to change at page 23, line 33 ¶ | skipping to change at page 23, line 47 ¶ | |||
| +---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 and drafts are not referenced in the document text | |||
| but are referenced in the ietf-ospf.yang module: [RFC0905], | but are referenced in the ietf-ospf.yang module: [RFC0905], | |||
| [RFC4576], [RFC4973], [RFC5250], [RFC5309], [RFC5642], [RFC5881], | [RFC4576], [RFC4973], [RFC5250], [RFC5309], [RFC5642], [RFC5881], | |||
| [RFC6991], [RFC7770], [RFC8294], and [RFC8476]. | [RFC6991], [RFC7770], [RFC7884], [RFC8294], and [RFC8476]. | |||
| <CODE BEGINS> file "ietf-ospf@2019-07-01.yang" | <CODE BEGINS> file "ietf-ospf@2019-10-17.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 "RFC 8343: A YANG Data Model for Interface | |||
| Management (NDMA Version)"; | Management (NMDA Version)"; | |||
| } | } | |||
| import ietf-routing-types { | import ietf-routing-types { | |||
| prefix "rt-types"; | prefix "rt-types"; | |||
| reference "RFC 8294 - Common YANG Data Types for the | reference "RFC 8294: Common YANG Data Types for the | |||
| Routing Area"; | 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 "RFC 8294: Common YANG Data Types for the | |||
| Routing Area"; | Routing Area"; | |||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| reference "RFC 8349 - A YANG Data Model for Routing | reference "RFC 8349: A YANG Data Model for Routing | |||
| Management (NMDA Version)"; | 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 "RFC YYYY: YANG Data Model for Bidirectional | |||
| Forwarding Detection (BFD). Please replace YYYY with | Forwarding Detection (BFD). Please replace YYYY with | |||
| published RFC number for draft-ietf-bfd-yang-17."; | published RFC number for draft-ietf-bfd-yang."; | |||
| } | } | |||
| organization | organization | |||
| "IETF LSR - Link State Routing Working Group"; | "IETF LSR - Link State Routing Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://datatracker.ietf.org/group/lsr/> | "WG Web: <https://datatracker.ietf.org/group/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@huawei.com> | <mailto:yingzhen.qu@futurewei.com> | |||
| Author: Salih K A | ||||
| Author: Jeffrey Zhang | <mailto:salih@juniper.net> | |||
| <mailto:zzhang@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 model conforms to the Network Management | |||
| Datastore Architecture (NDMA) as described in RFC 8242. | Datastore Architecture (NMDA) as described in RFC 8242. | |||
| Copyright (c) 2018 IETF Trust and the persons identified as | Copyright (c) 2018 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). | |||
| skipping to change at page 25, line 44 ¶ | skipping to change at page 26, line 10 ¶ | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here. | they appear in all capitals, as shown here. | |||
| This version of this YANG module is part of RFC XXXX; | This version of this YANG module is part of RFC XXXX; | |||
| see the RFC itself for full legal notices."; | see the RFC itself for full legal notices."; | |||
| revision 2019-07-01 { | revision 2019-10-17 { | |||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Data Model for OSPF."; | "RFC XXXX: A YANG Data Model for OSPF."; | |||
| } | } | |||
| feature multi-topology { | feature multi-topology { | |||
| description | description | |||
| "Support Multiple-Topology Routing (MTR)."; | "Support Multiple-Topology Routing (MTR)."; | |||
| reference "RFC 4915 - Multi-Topology Routing"; | reference "RFC 4915: Multi-Topology Routing"; | |||
| } | } | |||
| feature multi-area-adj { | feature multi-area-adj { | |||
| description | description | |||
| "OSPF multi-area adjacency support as in RFC 5185."; | "OSPF multi-area adjacency support as in RFC 5185."; | |||
| reference "RFC 5185 - Multi-Area Adjacency"; | reference "RFC 5185: Multi-Area Adjacency"; | |||
| } | } | |||
| feature explicit-router-id { | feature explicit-router-id { | |||
| description | description | |||
| "Set Router-ID per instance explicitly."; | "Set Router-ID per instance explicitly."; | |||
| } | } | |||
| feature demand-circuit { | feature demand-circuit { | |||
| description | description | |||
| "OSPF demand circuit support as in RFC 1793."; | "OSPF demand circuit support as in RFC 1793."; | |||
| reference "RFC 1793 - OSPF Demand Circuits"; | reference "RFC 1793: OSPF Demand Circuits"; | |||
| } | } | |||
| feature mtu-ignore { | feature mtu-ignore { | |||
| description | description | |||
| "Disable OSPF Database Description packet MTU | "Disable OSPF Database Description packet MTU | |||
| mismatch checking."; | mismatch checking specified in the OSPF | |||
| protocol specification."; | ||||
| reference "RFC 2328: OSPF Version 2, section 10.6"; | ||||
| } | } | |||
| feature lls { | feature lls { | |||
| description | description | |||
| "OSPF link-local signaling (LLS) as in RFC 5613."; | "OSPF link-local signaling (LLS) as in RFC 5613."; | |||
| reference "RFC 5613 - OSPF Link-Local Signaling"; | reference "RFC 5613: OSPF Link-Local Signaling"; | |||
| } | } | |||
| feature prefix-suppression { | feature prefix-suppression { | |||
| description | description | |||
| "OSPF prefix suppression support as in RFC 6860."; | "OSPF prefix suppression support as in RFC 6860."; | |||
| reference "RFC 6860 - Hide Transit-Only Networks in OSPF"; | reference "RFC 6860: Hide Transit-Only Networks in OSPF"; | |||
| } | ||||
| feature two-part-metric { | ||||
| description | ||||
| "OSPF 2-part metric support as described in RFC 8042."; | ||||
| reference "RFC 8042 - OSPF Two-Part Metric"; | ||||
| } | } | |||
| feature ttl-security { | feature ttl-security { | |||
| description | description | |||
| "OSPF Time to Live (TTL) security check support."; | "OSPF Time to Live (TTL) security check support."; | |||
| reference "RFC 5082 - The Generalized TTL Security | reference "RFC 5082: The Generalized TTL Security | |||
| Mechanism (GTSM)"; | 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 RFC 3623 and | |||
| RFC 5187."; | RFC 5187."; | |||
| reference "RFC 3623 - Graceful OSPF Restart | reference "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 | "Calculate 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."; | "Setting maximum number of ECMP paths."; | |||
| } | } | |||
| feature max-lsa { | feature max-lsa { | |||
| description | description | |||
| "Setting the maximum number of LSAs the OSPF instance | "Setting the maximum number of LSAs the OSPF instance | |||
| will accept."; | will accept."; | |||
| reference "RFC 1765 - OSPF Database Overload"; | reference "RFC 1765: OSPF Database Overload"; | |||
| } | } | |||
| feature te-rid { | feature te-rid { | |||
| description | description | |||
| "Support configuration of the Traffic Engineering (TE) | "Support configuration of the Traffic Engineering (TE) | |||
| Router-ID, i.e., the Router Address described in Section | Router-ID, i.e., the Router Address described in Section | |||
| 2.4.1 of RFC3630 or the Router IPv6 Address TLV described | 2.4.1 of RFC3630 or the Router IPv6 Address TLV described | |||
| in Section 3 of RFC5329."; | in Section 3 of RFC5329."; | |||
| reference "RFC 3630: Traffic Engineering (TE) Extensions | ||||
| reference "RFC 3630 - Traffic Engineering (TE) Extensions | ||||
| to OSPF Version 2 | to OSPF Version 2 | |||
| RFC 5329 - Traffic Engineering (TE) Extensions | RFC 5329: Traffic Engineering (TE) Extensions | |||
| to OSPF Version 3"; | to OSPF Version 3"; | |||
| } | } | |||
| feature ldp-igp-sync { | feature ldp-igp-sync { | |||
| description | description | |||
| "LDP IGP synchronization."; | "LDP IGP synchronization."; | |||
| reference "RFC 5443 - LDP IGP Synchronization"; | reference "RFC 5443: LDP IGP Synchronization"; | |||
| } | } | |||
| feature ospfv2-authentication-trailer { | feature ospfv2-authentication-trailer { | |||
| description | description | |||
| "Use OSPFv2 authentication trailer for OSPFv2 | "Support OSPFv2 authentication trailer for OSPFv2 | |||
| authentication."; | authentication."; | |||
| reference "RFC 5709 - Supporting Authentication | reference "RFC 5709: Supporting Authentication | |||
| Trailer for OSPFv2 | Trailer for OSPFv2 | |||
| 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 | |||
| "Use IPsec for OSPFv3 authentication."; | "Support IPsec for OSPFv3 authentication."; | |||
| reference "RFC 4552 - Authentication/Confidentiality | reference "RFC 4552: Authentication/Confidentiality | |||
| for OSPFv3"; | for OSPFv3"; | |||
| } | } | |||
| feature ospfv3-authentication-trailer { | feature ospfv3-authentication-trailer { | |||
| description | description | |||
| "Use OSPFv3 authentication trailer for OSPFv3 | "Support OSPFv3 authentication trailer for OSPFv3 | |||
| authentication."; | authentication."; | |||
| reference "RFC 7166 - Supporting Authentication | reference "RFC 7166: Supporting Authentication | |||
| Trailer for OSPFv3"; | 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 keychain for authentication."; | |||
| reference "RFC8177 - YANG Data Model for Key Chains"; | reference "RFC8177: YANG Data Model for Key Chains"; | |||
| } | } | |||
| feature node-flag { | feature node-flag { | |||
| description | description | |||
| "Support for node-flag for OSPF prefixes."; | "Support for node-flag for OSPF prefixes."; | |||
| reference "RFC 7684 - OSPFv2 Prefix/Link Advertisement"; | reference "RFC 7684: OSPFv2 Prefix/Link Advertisement"; | |||
| } | } | |||
| feature node-tag { | feature node-tag { | |||
| description | description | |||
| "Support for node admin tag for OSPF routing instances."; | "Support for node admin tag for OSPF routing instances."; | |||
| reference "RFC 7777 - Advertising Node Administrative | reference "RFC 7777: Advertising Node Administrative | |||
| Tags in OSPF"; | 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 "RFC 5286: Basic Specification for IP Fast | |||
| Reroute: Loop-Free Alternates"; | Reroute: Loop-Free Alternates"; | |||
| } | } | |||
| feature remote-lfa { | feature remote-lfa { | |||
| description | description | |||
| "Support for Remote Loop-Free Alternates (R-LFA)."; | "Support for Remote Loop-Free Alternates (R-LFA)."; | |||
| reference "RFC 7490 - Remote Loop-Free Alternate (LFA) | reference "RFC 7490: Remote Loop-Free Alternate (LFA) | |||
| Fast Reroute (FRR)"; | Fast Reroute (FRR)"; | |||
| } | } | |||
| feature stub-router { | feature stub-router { | |||
| description | description | |||
| "Support for RFC 6987 OSPF Stub Router Advertisement."; | "Support for RFC 6987 OSPF Stub Router Advertisement."; | |||
| reference "RFC 6987 - OSPF Stub Router Advertisement"; | 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 PE-CE protocol"; | |||
| reference "RFC 4577 - OSPF as the Provider/Customer Edge | reference "RFC 4577: OSPF as the Provider/Customer Edge | |||
| Protocol for BGP/MPLS IP Virtual Private | Protocol for BGP/MPLS IP Virtual Private | |||
| Networks (VPNs) | Networks (VPNs) | |||
| RFC 6565 - OSPFv3 as a Provider Edge to Customer | RFC 6565: OSPFv3 as a Provider Edge to Customer | |||
| Edge (PE-CE) Routing Protocol"; | Edge (PE-CE) Routing Protocol"; | |||
| } | } | |||
| feature ietf-spf-delay { | feature ietf-spf-delay { | |||
| description | description | |||
| "Support for IETF SPF delay algorithm."; | "Support for IETF SPF delay algorithm."; | |||
| reference "RFC 8405 - SPF Back-off algorithm for link | reference "RFC 8405: SPF Back-off algorithm for link | |||
| state IGPs"; | state IGPs"; | |||
| } | } | |||
| feature bfd { | feature bfd { | |||
| description | description | |||
| "Support for BFD detection of OSPF neighbor reachability."; | "Support for BFD detection of OSPF neighbor reachability."; | |||
| reference "RFC 5880 - Bidirectional Forwarding Detection (BFD) | reference "RFC 5880: Bidirectional Forwarding Detection (BFD) | |||
| RFC 5881 - Bidirectional Forwarding Detection | RFC 5881: Bidirectional Forwarding Detection | |||
| (BFD) for IPv4 and IPv6 (Single Hop)"; | (BFD) for IPv4 and IPv6 (Single Hop)"; | |||
| } | } | |||
| feature hybrid-interface { | feature hybrid-interface { | |||
| description | description | |||
| "Support for OSPF Hybrid interface type."; | "Support for OSPF Hybrid interface type."; | |||
| reference "RFC 6845 - OSPF Hybrid Broadcast and | reference "RFC 6845: OSPF Hybrid Broadcast and | |||
| Point-to-Multipoint Interface Type"; | 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 operation-mode { | ||||
| description | ||||
| "OSPF operation mode."; | ||||
| } | ||||
| identity area-type { | identity area-type { | |||
| description "Base identity for OSPF area type."; | description "Base identity for 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 { | |||
| skipping to change at page 31, line 15 ¶ | skipping to change at page 31, line 21 ¶ | |||
| } | } | |||
| 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 "OSPF Not-So-Stubby Area (NSSA)."; | |||
| reference "RFC 3101 - The OSPF Not-So-Stubby Area | reference "RFC 3101: The OSPF Not-So-Stubby Area | |||
| (NSSA) Option"; | (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 { | |||
| skipping to change at page 35, line 23 ¶ | skipping to change at page 35, line 29 ¶ | |||
| of the LSA."; | of the LSA."; | |||
| } | } | |||
| identity lsa-purge { | identity lsa-purge { | |||
| base lsa-log-reason; | base lsa-log-reason; | |||
| description | description | |||
| "Identity used when the LSA is logged | "Identity used when the LSA is logged | |||
| as a result of being purged."; | as a result of being purged."; | |||
| } | } | |||
| identity informational-capability { | ||||
| description | ||||
| "Base identity for router informational capabilities."; | ||||
| } | ||||
| identity graceful-restart { | ||||
| base informational-capability; | ||||
| description | ||||
| "When set, the router is capable of restarting | ||||
| gracefully."; | ||||
| reference "RFC 3623: Graceful OSPF Restart | ||||
| RFC 5187: OSPFv3 Graceful Restart"; | ||||
| } | ||||
| identity graceful-restart-helper { | ||||
| base informational-capability; | ||||
| description | ||||
| "When set, the router is capable of acting as | ||||
| a graceful restart helper."; | ||||
| reference "RFC 3623: Graceful OSPF Restart | ||||
| RFC 5187: OSPFv3 Graceful Restart"; | ||||
| } | ||||
| identity stub-router { | ||||
| base informational-capability; | ||||
| description | ||||
| "When set, the router is capable of acting as | ||||
| an OSPF Stub Router."; | ||||
| reference "RFC 6987: OSPF Stub Router Advertisement"; | ||||
| } | ||||
| identity traffic-engineering { | ||||
| base informational-capability; | ||||
| description | ||||
| "When set, the router is capable of OSPF traffic | ||||
| engineering."; | ||||
| reference "RFC 3630: Traffic Engineering (TE) Extensions | ||||
| to OSPF Version 2 | ||||
| RFC 5329: Traffic Engineering (TE) Extensions | ||||
| to OSPF Version 3"; | ||||
| } | ||||
| identity p2p-over-lan { | ||||
| base informational-capability; | ||||
| description | ||||
| "When set, the router is capable of OSPF Point-to-Point | ||||
| over LAN."; | ||||
| reference "RFC 5309: Point-to-Point Operation over LAN | ||||
| in Link State Routing Protocols"; | ||||
| } | ||||
| identity experimental-te { | ||||
| base informational-capability; | ||||
| description | ||||
| "When set, the router is capable of OSPF experimental | ||||
| traffic engineering."; | ||||
| reference | ||||
| "RFC 4973: OSPF-xTE OSPF Experimental Traffic | ||||
| Engineering"; | ||||
| } | ||||
| identity router-lsa-bit { | ||||
| description | ||||
| "Base identity for Router-LSA bits."; | ||||
| } | ||||
| identity vlink-end-bit { | ||||
| base router-lsa-bit; | ||||
| description | ||||
| "V bit, when set, the router is an endpoint of one or | ||||
| more virtual links."; | ||||
| } | ||||
| identity asbr-bit { | ||||
| base router-lsa-bit; | ||||
| description | ||||
| "E bit, when set, the router is an AS Boundary | ||||
| Router (ASBR)."; | ||||
| } | ||||
| identity abr-bit { | ||||
| base router-lsa-bit; | ||||
| description | ||||
| "B bit, when set, the router is an Area Border | ||||
| Router (ABR)."; | ||||
| } | ||||
| identity nssa-bit { | ||||
| base router-lsa-bit; | ||||
| description | ||||
| "Nt bit, when set, the router is an NSSA border router | ||||
| that is unconditionally translating NSSA LSAs into | ||||
| AS-external LSAs."; | ||||
| } | ||||
| identity ospfv3-lsa-option { | ||||
| description | ||||
| "Base identity for OSPF LSA options flags."; | ||||
| } | ||||
| identity af-bit { | ||||
| base ospfv3-lsa-option; | ||||
| description | ||||
| "AF bit, when set, the router supports OSPFv3 Address | ||||
| Families as in RFC5838."; | ||||
| } | ||||
| identity dc-bit { | ||||
| base ospfv3-lsa-option; | ||||
| description | ||||
| "DC bit, when set, the router supports demand circuits."; | ||||
| } | ||||
| identity r-bit { | ||||
| base ospfv3-lsa-option; | ||||
| description | ||||
| "R bit, when set, the originator is an active router."; | ||||
| } | ||||
| identity n-bit { | ||||
| base ospfv3-lsa-option; | ||||
| description | ||||
| "N bit, when set, the router is attached to an NSSA"; | ||||
| } | ||||
| identity e-bit { | ||||
| base ospfv3-lsa-option; | ||||
| description | ||||
| "E bit, this bit describes the way AS-external LSAs | ||||
| are flooded"; | ||||
| } | ||||
| identity v6-bit { | ||||
| base ospfv3-lsa-option; | ||||
| description | ||||
| "V6 bit, if clear, the router/link should be excluded | ||||
| from IPv6 routing calculation"; | ||||
| } | ||||
| identity ospfv3-prefix-option { | ||||
| description | ||||
| "Base identity for OSPFv3 Prefix Options."; | ||||
| } | ||||
| identity nu-bit { | ||||
| base ospfv3-prefix-option; | ||||
| description | ||||
| "NU Bit, when set, the prefix should be excluded | ||||
| from IPv6 unicast calculations."; | ||||
| } | ||||
| identity la-bit { | ||||
| base ospfv3-prefix-option; | ||||
| description | ||||
| "LA bit, when set, the prefix is actually an IPv6 | ||||
| interface address of the Advertising Router."; | ||||
| } | ||||
| identity p-bit { | ||||
| base ospfv3-prefix-option; | ||||
| description | ||||
| "P bit, when set, the NSSA area prefix should be | ||||
| translated to an AS External LSA and advertised | ||||
| by the translating NSSA Border Router."; | ||||
| } | ||||
| identity dn-bit { | ||||
| base ospfv3-prefix-option; | ||||
| description | ||||
| "DN bit, when set, the inter-area-prefix LSA or | ||||
| AS-external LSA prefix has been advertised as an | ||||
| L3VPN prefix."; | ||||
| } | ||||
| identity ospfv2-lsa-option { | ||||
| description | ||||
| "Base identity for OSPFv2 LSA option flags."; | ||||
| } | ||||
| identity mt-bit { | ||||
| base ospfv2-lsa-option; | ||||
| description | ||||
| "MT bit, When set, the router supports multi-topology as | ||||
| in RFC 4915."; | ||||
| } | ||||
| identity v2-dc-bit { | ||||
| base ospfv2-lsa-option; | ||||
| description | ||||
| "DC bit, When set, the router supports demand circuits."; | ||||
| } | ||||
| identity v2-p-bit { | ||||
| base ospfv2-lsa-option; | ||||
| description | ||||
| "P bit, wnly used in type-7 LSA. When set, an NSSA | ||||
| border router should translate the type-7 LSA | ||||
| to a type-5 LSA."; | ||||
| } | ||||
| identity mc-flag { | ||||
| base ospfv2-lsa-option; | ||||
| description | ||||
| "MC Bit, when set, the router supports MOSPF."; | ||||
| } | ||||
| identity v2-e-flag { | ||||
| base ospfv2-lsa-option; | ||||
| description | ||||
| "E Bit, this bit describes the way AS-external LSAs | ||||
| are flooded."; | ||||
| } | ||||
| identity o-bit { | ||||
| base ospfv2-lsa-option; | ||||
| description | ||||
| "O bit, when set, the router is opaque-capable as in | ||||
| RFC 5250."; | ||||
| } | ||||
| identity v2-dn-bit { | ||||
| base ospfv2-lsa-option; | ||||
| description | ||||
| "DN bit, when a type 3, 5 or 7 LSA is sent from a PE | ||||
| to a CE, the DN bit must be set. See RFC 4576."; | ||||
| } | ||||
| identity ospfv2-extended-prefix-flag { | ||||
| description | ||||
| "Base identity for extended prefix TLV flag."; | ||||
| } | ||||
| identity a-flag { | ||||
| base ospfv2-extended-prefix-flag; | ||||
| description | ||||
| "Attach flag, when set it indicates that the prefix | ||||
| corresponds and a route what is directly connected to | ||||
| the advertising router.."; | ||||
| } | ||||
| identity node-flag { | ||||
| base ospfv2-extended-prefix-flag; | ||||
| description | ||||
| "Node flag, when set, it indicates that the prefix is | ||||
| used to represent the advertising node, e.g., a loopback | ||||
| address."; | ||||
| } | ||||
| typedef ospf-metric { | 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 { | ||||
| type uint16 { | ||||
| range "0 .. 65535"; | ||||
| } | ||||
| description | ||||
| "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; | |||
| skipping to change at page 40, line 37 ¶ | skipping to change at page 46, line 10 ¶ | |||
| } | } | |||
| typedef nssa-translator-state-type { | typedef nssa-translator-state-type { | |||
| type enumeration { | type enumeration { | |||
| enum enabled { | enum enabled { | |||
| value "1"; | value "1"; | |||
| description | description | |||
| "NSSA translator enabled state."; | "NSSA translator enabled state."; | |||
| } | } | |||
| enum elected { | enum elected { | |||
| value "2"; | ||||
| description | description | |||
| "NSSA translator elected state."; | "NSSA translator elected state."; | |||
| } | } | |||
| enum disabled { | enum disabled { | |||
| value "3"; | value "3"; | |||
| description | description | |||
| "NSSA translator disabled state."; | "NSSA translator disabled state."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| skipping to change at page 41, line 10 ¶ | skipping to change at page 46, line 32 ¶ | |||
| } | } | |||
| typedef restart-status-type { | typedef restart-status-type { | |||
| type enumeration { | type enumeration { | |||
| enum not-restarting { | enum not-restarting { | |||
| value "1"; | value "1"; | |||
| description | description | |||
| "Router is not restarting."; | "Router is not restarting."; | |||
| } | } | |||
| enum planned-restart { | enum planned-restart { | |||
| value "2"; | ||||
| description | description | |||
| "Router is going through planned restart."; | "Router is going through planned restart."; | |||
| } | } | |||
| enum unplanned-restart { | enum unplanned-restart { | |||
| value "3"; | value "3"; | |||
| description | description | |||
| "Router is going through unplanned restart."; | "Router is going through unplanned restart."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "OSPF graceful restart status type."; | "OSPF graceful restart status type."; | |||
| } | } | |||
| typedef 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 "RFC 905 - ISO Transport Protocol specification | ||||
| reference "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 OSPF Authentication Trailer as | |||
| described in RFC 5709"; | described in RFC 5709"; | |||
| reference "RFC 5709 - OSPFv2 HMAC-SHA Cryptographic | reference "RFC 5709: OSPFv2 HMAC-SHA Cryptographic | |||
| Authentication"; | Authentication"; | |||
| } | } | |||
| enum rfc7474 { | enum rfc7474 { | |||
| description | description | |||
| "Support OSPF Authentication Trailer as | "Support 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 Authentication"; | |||
| } | } | |||
| } | } | |||
| 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; | |||
| skipping to change at page 43, line 4 ¶ | skipping to change at page 48, line 26 ¶ | |||
| list node-tag { | list node-tag { | |||
| leaf tag { | leaf tag { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Node admin tag value."; | "Node admin tag value."; | |||
| } | } | |||
| description | description | |||
| "List of tags."; | "List of tags."; | |||
| } | } | |||
| } | } | |||
| grouping router-capabilities-tlv { | grouping router-capabilities-tlv { | |||
| description "OSPF Router Capabilities TLV grouping."; | description "OSPF Router Capabilities TLV grouping."; | |||
| reference "RFC 7770 - OSPF Router Capabilities"; | reference "RFC 7770: OSPF Router Capabilities"; | |||
| leaf informational-flags { | container router-informational-capabilities { | |||
| type bits { | leaf-list informational-capabilities { | |||
| bit graceful-restart-capability { | type identityref { | |||
| description | base informational-capability; | |||
| "When set, the router is capable of restarting | ||||
| gracefully."; | ||||
| reference "RFC 3623 - Graceful OSPF Restart | ||||
| RFC 5187 - OSPFv3 Graceful Restart"; | ||||
| } | ||||
| bit graceful-restart-helper { | ||||
| description | ||||
| "When set, the router is capable of acting as | ||||
| a graceful restart helper."; | ||||
| reference "RFC 3623 - Graceful OSPF Restart | ||||
| RFC 5187 - OSPFv3 Graceful Restart"; | ||||
| } | ||||
| bit stub-router { | ||||
| description | ||||
| "When set, the router is capable of acting as | ||||
| an OSPF Stub Router."; | ||||
| reference "RFC 6987 - OSPF Stub Router Advertisement"; | ||||
| } | ||||
| bit traffic-engineering { | ||||
| description | ||||
| "When set, the router is capable of OSPF traffic | ||||
| engineering."; | ||||
| reference "RFC 3630 - Traffic Engineering (TE) Extensions | ||||
| to OSPF Version 2 | ||||
| RFC 5329 - Traffic Engineering (TE) Extensions | ||||
| to OSPF Version 3"; | ||||
| } | ||||
| bit p2p-over-lan { | ||||
| description | ||||
| "When set, the router is capable of OSPF Point-to-Point | ||||
| over LAN."; | ||||
| reference "RFC 5309 - Point-to-Point Operation over LAN | ||||
| in Link State Routing Protocols"; | ||||
| } | ||||
| bit experimental-te { | ||||
| description | ||||
| "When set, the router is capable of OSPF experimental | ||||
| traffic engineering."; | ||||
| reference | ||||
| "RFC 4973 - OSPF-xTE OSPF Experimental Traffic | ||||
| Engineering"; | ||||
| } | ||||
| bit two-part-metric { | ||||
| description | ||||
| "When set, the router is capable of supporting OSPF | ||||
| 2-part metrics."; | ||||
| reference | ||||
| "RFC 8042 - OSPF Two-Part Metric"; | ||||
| } | } | |||
| description | ||||
| "Informational capability list. This list will | ||||
| contains the identities for the informational | ||||
| capabilities supported by router."; | ||||
| } | } | |||
| description | description | |||
| "OSPF Router Informational Flag Definitions."; | "OSPF Router Informational Flag Definitions."; | |||
| } | } | |||
| list informational-capabilities { | list informational-capabilities-flags { | |||
| leaf informational-flag { | leaf informational-flag { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Informational flag."; | "Individual informational capability flag."; | |||
| } | } | |||
| description | description | |||
| "List of capabilities."; | "List of informational capability flags. This will | |||
| return all the 32-bit informational flags irrespective | ||||
| of whether or not they are known to the device."; | ||||
| } | } | |||
| list functional-capabilities { | list functional-capabilities { | |||
| leaf informational-flag { | leaf functional-flag { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Functional flag."; | "Individual functional capability flag."; | |||
| } | } | |||
| description | description | |||
| "List of functional capabilities."; | "List of functional capability flags. This will | |||
| return all the 32-bit functional flags irrespective | ||||
| of whether or not they are known to the device."; | ||||
| } | } | |||
| } | } | |||
| grouping dynamic-hostname-tlv { | grouping dynamic-hostname-tlv { | |||
| description "Dynamic Hostname TLV"; | description "Dynamic Hostname TLV"; | |||
| reference "RFC 5642 - Dynamic Hostnames for OSPF"; | reference "RFC 5642: Dynamic Hostnames 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 "Seamless BFD Discriminator TLV"; | |||
| reference "RFC 7884 - S-BFD Discriminators in OSPF"; | reference "RFC 7884: S-BFD Discriminators in OSPF"; | |||
| 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 "Maximum SID Depth (MSD) TLV"; | |||
| reference | reference | |||
| "RFC 8476 - Signaling Maximum Segment Depth (MSD) | "RFC 8476: Signaling Maximum Segment 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 Segment Depth (MSD) type"; | |||
| } | } | |||
| leaf msd-value { | leaf msd-value { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Maximum Segment Depth (MSD) value for the type"; | "Maximum Segment Depth (MSD) value for the type"; | |||
| } | } | |||
| description | description | |||
| "List of Maximum Segment Depth (MSD) tuples"; | "List of Maximum Segment Depth (MSD) tuples"; | |||
| } | } | |||
| } | } | |||
| grouping network-to-router-metric-tlv { | grouping ospf-router-lsa-bits { | |||
| description "Network to Router Metric TLV"; | container router-bits { | |||
| reference | leaf-list rtr-lsa-bits { | |||
| "RFC 8042 - OSPF Two-Part Metric"; | type identityref { | |||
| leaf mt-id { | base router-lsa-bit; | |||
| type uint8; | ||||
| description | ||||
| "The MT-ID for the topology enabled on | ||||
| the link."; | ||||
| } | ||||
| leaf metric { | ||||
| type uint16; | ||||
| description "Metric for the topology."; | ||||
| } | ||||
| } | ||||
| grouping ospf-router-lsa-flags { | ||||
| leaf flags { | ||||
| type bits { | ||||
| bit V { | ||||
| description | ||||
| "When set, the router is an endpoint of one or | ||||
| more virtual links."; | ||||
| } | ||||
| bit E { | ||||
| description | ||||
| "When set, the router is an AS Boundary Router | ||||
| (ASBR)."; | ||||
| } | ||||
| bit B { | ||||
| description | ||||
| "When set, the router is an Area Border | ||||
| Router (ABR)."; | ||||
| } | ||||
| bit Nt { | ||||
| description | ||||
| "When set, the router is an NSSA border router | ||||
| that is unconditionally translating NSSA LSAs | ||||
| into AS-external LSAs."; | ||||
| } | } | |||
| description | ||||
| "Router LSA bits list. This list will contain | ||||
| identities for the bits which are set in the | ||||
| Router-LSA bits."; | ||||
| } | } | |||
| description "Router LSA Flags."; | description "Router LSA Bits."; | |||
| } | } | |||
| description | description | |||
| "Router LSA Flags - Currently common for OSPFv2 and | "Router LSA Bits - Currently common for OSPFv2 and | |||
| OSPFv3 but it may diverge with future augmentations."; | OSPFv3 but it may diverge with future augmentations."; | |||
| } | } | |||
| grouping ospfv2-router-link { | grouping ospfv2-router-link { | |||
| description "OSPFv2 router link."; | description "OSPFv2 router link."; | |||
| leaf link-id { | leaf link-id { | |||
| type union { | type union { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| type yang:dotted-quad; | type yang:dotted-quad; | |||
| } | } | |||
| skipping to change at page 46, line 51 ¶ | skipping to change at page 51, line 4 ¶ | |||
| 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, " | |||
| + "'ospf: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-flags; | 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 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 { | |||
| skipping to change at page 47, line 52 ¶ | skipping to change at page 52, line 4 ¶ | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| 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 inet:ipv4-address; | type yang:dotted-quad; | |||
| description | description | |||
| "The IP address mask for the network."; | "The IP address mask for the network."; | |||
| } | } | |||
| container attached-routers { | container attached-routers { | |||
| description "All attached routers."; | description "All attached routers."; | |||
| leaf-list attached-router { | leaf-list attached-router { | |||
| type yang:dotted-quad; | type inet:ipv4-address; | |||
| description | description | |||
| "List of the routers attached to the network."; | "List of the routers attached to the network."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container summary { | container summary { | |||
| when "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."; | |||
| skipping to change at page 49, line 51 ¶ | skipping to change at page 54, line 4 ¶ | |||
| leaf forwarding-address { | leaf forwarding-address { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "Forwarding address."; | "Forwarding address."; | |||
| } | } | |||
| leaf external-route-tag { | leaf external-route-tag { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Route tag for the topology."; | "Route tag for the topology."; | |||
| } | } | |||
| } | ||||
| } | ||||
| } | } | |||
| } | } | |||
| container opaque { | container opaque { | |||
| when "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."; | |||
| uses unknown-tlvs; | container ri-opaque { | |||
| description "OSPF Router Information (RI) opaque LSA."; | ||||
| reference "RFC 7770: OSPF 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 | ||||
| "All node tag TLVs."; | ||||
| list node-tag-tlv { | ||||
| description | description | |||
| "Node tag TLV."; | "All node tag TLVs."; | |||
| uses node-tag-tlv; | list node-tag-tlv { | |||
| description | ||||
| "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 Maximum SID Depth (MSD) values"; | |||
| uses maximum-sid-depth-tlv; | uses maximum-sid-depth-tlv; | |||
| } | ||||
| uses unknown-tlvs; | ||||
| } | } | |||
| container te-opaque { | ||||
| description "OSPFv2 Traffic Engineering (TE) opaque LSA."; | ||||
| reference "RFC 3630: Traffic Engineering (TE) | ||||
| Extensions to OSPFv2"; | ||||
| container router-address-tlv { | container router-address-tlv { | |||
| description | ||||
| "Router address TLV."; | ||||
| leaf router-address { | ||||
| type inet:ipv4-address; | ||||
| description | description | |||
| "Router address."; | "Router address TLV."; | |||
| leaf router-address { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "Router address."; | ||||
| } | ||||
| } | } | |||
| } | ||||
| container link-tlvs { | container link-tlv { | |||
| description "All link TLVs in the LSA."; | description "Describes a single link, and it is constructed | |||
| list link-tlv { | of a set of Sub-TLVs."; | |||
| description "Link TLV."; | ||||
| 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; | |||
| } | } | |||
| skipping to change at page 52, line 30 ¶ | skipping to change at page 56, line 38 ¶ | |||
| 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."; | |||
| } | } | |||
| leaf network-to-router-te-metric { | ||||
| type uint32; | ||||
| description "Network to Router TE metric."; | ||||
| reference | ||||
| "RFC 8042 - OSPF Two-Part Metric"; | ||||
| } | ||||
| uses unknown-tlvs; | uses unknown-tlvs; | |||
| } | } | |||
| } | } | |||
| container extended-prefix-tlvs { | container extended-prefix-opaque { | |||
| description "All extended prefix TLVs in the LSA."; | description "All extended prefix TLVs in the LSA."; | |||
| list extended-prefix-tlv { | list extended-prefix-tlv { | |||
| description "Extended prefix TLV."; | description "Extended prefix TLV."; | |||
| leaf route-type { | leaf route-type { | |||
| type enumeration { | type enumeration { | |||
| enum unspecified { | enum unspecified { | |||
| value "0"; | value "0"; | |||
| description "Unspecified."; | description "Unspecified."; | |||
| } | } | |||
| enum intra-area { | enum intra-area { | |||
| skipping to change at page 53, line 21 ¶ | skipping to change at page 57, line 23 ¶ | |||
| value "5"; | value "5"; | |||
| description "OSPF External route."; | description "OSPF External route."; | |||
| } | } | |||
| enum nssa { | enum nssa { | |||
| value "7"; | value "7"; | |||
| description "OSPF NSSA external route."; | description "OSPF NSSA external route."; | |||
| } | } | |||
| } | } | |||
| description "Route type."; | description "Route type."; | |||
| } | } | |||
| leaf flags { | container flags { | |||
| type bits { | leaf-list extended-prefix-flags { | |||
| bit A { | type identityref { | |||
| description | base ospfv2-extended-prefix-flag; | |||
| "Attach flag."; | ||||
| } | ||||
| bit N { | ||||
| description | ||||
| "Node flag."; | ||||
| } | } | |||
| description | ||||
| "Extended prefix TLV flags list. This list will | ||||
| contain identities for the prefix flags that | ||||
| are set in the extended prefix flags."; | ||||
| } | } | |||
| description "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-tlvs { | container extended-link-opaque { | |||
| description "All extended link TLVs in the LSA."; | description "All extended link TLVs in the LSA."; | |||
| list extended-link-tlv { | container extended-link-tlv { | |||
| description "Extended link TLV."; | description "Extended link TLV."; | |||
| uses ospfv2-router-link; | uses ospfv2-router-link; | |||
| container maximum-sid-depth-tlv { | container maximum-sid-depth-tlv { | |||
| description "OSPF Maximum SID Depth (MSD) values"; | description "OSPF Maximum SID Depth (MSD) values"; | |||
| uses maximum-sid-depth-tlv; | uses maximum-sid-depth-tlv; | |||
| } | } | |||
| container network-to-router-metric-tlv { | ||||
| description | ||||
| "OSPF two-part metric network-to-router metric"; | ||||
| uses network-to-router-metric-tlv; | ||||
| } | ||||
| uses unknown-tlvs; | uses unknown-tlvs; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping ospfv3-lsa-options { | grouping ospfv3-lsa-options { | |||
| description "OSPFv3 LSA options"; | description "OSPFv3 LSA options"; | |||
| leaf options { | container lsa-options { | |||
| type bits { | leaf-list lsa-options { | |||
| bit AF { | type identityref { | |||
| description | base ospfv3-lsa-option; | |||
| "When set, the router supports OSPFv3 Address | ||||
| Families as in RFC5838."; | ||||
| } | ||||
| bit DC { | ||||
| description | ||||
| "When set, the router supports demand circuits."; | ||||
| } | ||||
| bit R { | ||||
| description | ||||
| "When set, the originator is an active router."; | ||||
| } | ||||
| bit N { | ||||
| description | ||||
| "If set, the router is attached to an NSSA"; | ||||
| } | ||||
| bit E { | ||||
| description | ||||
| "This bit describes the way AS-external LSAs | ||||
| are flooded"; | ||||
| } | ||||
| bit V6 { | ||||
| description | ||||
| "If clear, the router/link should be excluded | ||||
| from IPv6 routing calculation"; | ||||
| } | } | |||
| description | ||||
| "OSPFv3 LSA Option flags list. This list will contain | ||||
| the identities for the OSPFv3 LSA options that are | ||||
| set for the LSA."; | ||||
| } | } | |||
| mandatory true; | ||||
| description "OSPFv3 LSA options."; | description "OSPFv3 LSA options."; | |||
| } | } | |||
| } | } | |||
| grouping ospfv3-lsa-prefix { | grouping ospfv3-lsa-prefix { | |||
| description | description | |||
| "OSPFv3 LSA prefix."; | "OSPFv3 LSA prefix."; | |||
| leaf prefix { | leaf prefix { | |||
| type inet:ip-prefix; | type inet:ip-prefix; | |||
| description | description | |||
| "LSA Prefix."; | "LSA Prefix."; | |||
| } | } | |||
| leaf prefix-options { | container prefix-options { | |||
| type bits { | leaf-list prefix-options { | |||
| bit NU { | type identityref { | |||
| description | base ospfv3-prefix-option; | |||
| "When set, the prefix should be excluded | ||||
| from IPv6 unicast calculations."; | ||||
| } | ||||
| bit LA { | ||||
| description | ||||
| "When set, the prefix is actually an IPv6 interface | ||||
| address of the Advertising Router."; | ||||
| } | ||||
| bit P { | ||||
| description | ||||
| "When set, the NSSA area prefix should be | ||||
| translated to an AS External LSA and advertised | ||||
| by the translating NSSA Border Router."; | ||||
| } | ||||
| bit DN { | ||||
| description | ||||
| "When set, the inter-area-prefix LSA or | ||||
| AS-external LSA prefix has been advertised as an | ||||
| L3VPN prefix."; | ||||
| } | } | |||
| description | ||||
| "OSPFv3 prefix option flag list. This list will | ||||
| contain the identities for the OSPFv3 options | ||||
| that are set for the OSPFv3 prefix."; | ||||
| } | } | |||
| mandatory true; | ||||
| description "Prefix options."; | description "Prefix options."; | |||
| } | } | |||
| } | } | |||
| grouping ospfv3-lsa-external { | grouping ospfv3-lsa-external { | |||
| description | description | |||
| "AS-External and NSSA LSA."; | "AS-External and NSSA LSA."; | |||
| leaf metric { | leaf metric { | |||
| type 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 | |||
| skipping to change at page 56, line 25 ¶ | skipping to change at page 59, line 32 ¶ | |||
| 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 ospf: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; | |||
| skipping to change at page 56, line 49 ¶ | skipping to change at page 60, line 7 ¶ | |||
| description | description | |||
| "Forwarding address."; | "Forwarding address."; | |||
| } | } | |||
| 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 yang:dotted-quad; | type uint32; | |||
| description | description | |||
| "Referenced Link State ID."; | "Referenced Link State ID."; | |||
| } | } | |||
| } | } | |||
| grouping ospfv3-lsa-body { | grouping ospfv3-lsa-body { | |||
| description "OSPFv3 LSA body."; | description "OSPFv3 LSA body."; | |||
| container router { | container router { | |||
| when "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-flags; | uses ospf-router-lsa-bits; | |||
| uses ospfv3-lsa-options; | uses ospfv3-lsa-options; | |||
| container links { | container links { | |||
| description "All router link."; | description "All router link."; | |||
| list link { | list link { | |||
| description "Router LSA link."; | description "Router LSA link."; | |||
| leaf interface-id { | leaf interface-id { | |||
| type uint32; | type uint32; | |||
| description "Interface ID for link."; | description "Interface ID for link."; | |||
| } | } | |||
| skipping to change at page 57, line 47 ¶ | skipping to change at page 61, line 4 ¶ | |||
| type router-link-type; | type router-link-type; | |||
| description "Link type: 1 - Point-to-Point Link | description "Link type: 1 - Point-to-Point Link | |||
| 2 - Transit Network Link | 2 - Transit Network Link | |||
| 3 - Stub Network Link | 3 - Stub Network Link | |||
| 4 - Virtual 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 yang:dotted-quad; | type rt-types:router-id; | |||
| description | description | |||
| "List of the routers attached to the network."; | "List of the routers attached to the network."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container inter-area-prefix { | container inter-area-prefix { | |||
| when "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."; | |||
| skipping to change at page 59, line 32 ¶ | skipping to change at page 62, line 38 ¶ | |||
| 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 "Router Priority for the interface."; | description | |||
| "Router priority for DR election. A router with a | ||||
| higher priority will be preferred in the election | ||||
| and a value of 0 indicates the router is not | ||||
| eligible to become Designated Router or Backup | ||||
| Designated Router (BDR)."; | ||||
| } | } | |||
| uses ospfv3-lsa-options; | uses ospfv3-lsa-options; | |||
| leaf link-local-interface-address { | leaf link-local-interface-address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "The originating router's link-local | "The originating router's link-local | |||
| interface address for the link."; | interface address for the link."; | |||
| } | } | |||
| leaf num-of-prefixes { | leaf num-of-prefixes { | |||
| type uint32; | type uint32; | |||
| description "Number of prefixes."; | description "Number of prefixes."; | |||
| } | } | |||
| container prefixes { | container prefixes { | |||
| description "All prefixes for the link."; | description "All prefixes for the link."; | |||
| list prefix { | list prefix { | |||
| skipping to change at page 60, line 20 ¶ | skipping to change at page 63, line 32 ¶ | |||
| 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 ospf: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 yang:dotted-quad; | 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."; | |||
| } | } | |||
| leaf num-of-prefixes { | leaf num-of-prefixes { | |||
| skipping to change at page 61, line 38 ¶ | skipping to change at page 64, line 48 ¶ | |||
| } | } | |||
| 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 "Router Information LSA."; | |||
| reference "RFC 7770 -Extensions for Advertising Router | reference "RFC 7770: Extensions for Advertising Router | |||
| Capabilities"; | 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 { | |||
| skipping to change at page 62, line 49 ¶ | skipping to change at page 66, line 11 ¶ | |||
| + "'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."; | "Opaque type and ID only apply to Opaque LSAs."; | |||
| } | } | |||
| description | description | |||
| "Decoded OSPFv2 LSA header data."; | "Decoded OSPFv2 LSA header data."; | |||
| leaf option { | ||||
| type bits { | container lsa-options { | |||
| bit MT { | leaf-list lsa-options { | |||
| description | type identityref { | |||
| "When set, the router supports multi-topology as | base ospfv2-lsa-option; | |||
| in RFC 4915."; | ||||
| } | ||||
| bit DC { | ||||
| description | ||||
| "When set, the router supports demand circuits."; | ||||
| } | ||||
| bit P { | ||||
| description | ||||
| "Only used in type-7 LSA. When set, an NSSA | ||||
| border router should translate the type-7 LSA | ||||
| to a type-5 LSA."; | ||||
| } | ||||
| bit MC { | ||||
| description | ||||
| "When set, the router supports MOSPF."; | ||||
| } | ||||
| bit E { | ||||
| description | ||||
| "This bit describes the way AS-external LSAs | ||||
| are flooded."; | ||||
| } | ||||
| bit O { | ||||
| description | ||||
| "When set, the router is opaque-capable as in | ||||
| RFC 5250."; | ||||
| } | ||||
| bit DN { | ||||
| description | ||||
| "When a type 3, 5 or 7 LSA is sent from a PE to a CE, | ||||
| the DN bit must be set. See RFC 4576."; | ||||
| } | } | |||
| description | ||||
| "LSA option flags list. This list will contain | ||||
| the identities for the identities for the OSPFv2 | ||||
| LSA options that are set."; | ||||
| } | } | |||
| mandatory true; | description | |||
| description "LSA options."; | "LSA options."; | |||
| } | } | |||
| leaf lsa-id { | leaf lsa-id { | |||
| type yang:dotted-quad; | type yang:dotted-quad; | |||
| mandatory true; | mandatory true; | |||
| description "Link-State ID."; | description "Link-State ID."; | |||
| } | } | |||
| leaf opaque-type { | leaf opaque-type { | |||
| type uint8; | type uint8; | |||
| description "Opaque type."; | description "Opaque type."; | |||
| } | } | |||
| skipping to change at page 64, line 46 ¶ | skipping to change at page 67, line 31 ¶ | |||
| } | } | |||
| 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 LSAs 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 are | malformed LSAs are generally not accepted and will | |||
| not be in the Link State Database."; | not be in the Link State Database."; | |||
| } | } | |||
| leaf raw-data { | leaf raw-data { | |||
| type yang:hex-string; | type yang:hex-string; | |||
| description | description | |||
| "The complete LSA in network byte | "The complete LSA in network byte | |||
| order hexadecimal as received or originated."; | order hexadecimal as received or originated."; | |||
| } | } | |||
| } | } | |||
| skipping to change at page 65, line 19 ¶ | skipping to change at page 68, line 4 ¶ | |||
| grouping lsa { | grouping lsa { | |||
| description | description | |||
| "OSPF LSA."; | "OSPF LSA."; | |||
| uses lsa-common; | uses lsa-common; | |||
| choice version { | choice version { | |||
| description | description | |||
| "OSPFv2 or OSPFv3 LSA body."; | "OSPFv2 or OSPFv3 LSA body."; | |||
| container ospfv2 { | container ospfv2 { | |||
| description "OSPFv2 LSA"; | description "OSPFv2 LSA"; | |||
| uses ospfv2-lsa; | uses ospfv2-lsa; | |||
| } | } | |||
| container ospfv3 { | container ospfv3 { | |||
| description "OSPFv3 LSA"; | description "OSPFv3 LSA"; | |||
| uses ospfv3-lsa; | uses ospfv3-lsa; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping lsa-key { | grouping lsa-key { | |||
| description | description | |||
| "OSPF LSA key."; | "OSPF LSA key - the database key for each LSA of a given | |||
| type in the Link State DataBase (LSDB)."; | ||||
| leaf lsa-id { | leaf lsa-id { | |||
| type union { | type union { | |||
| type yang:dotted-quad; | type yang:dotted-quad; | |||
| type uint32; | type uint32; | |||
| } | } | |||
| description | description | |||
| "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 { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "The time on the most recent occasion at which any one or | ||||
| more of this OSPF instance's counters suffered a | ||||
| discontinuity. If no such discontinuities have occurred | ||||
| since the OSPF instance was last re-initialized, then | ||||
| this node contains the time the OSPF instance was | ||||
| re-initialized which normally occurs when it was | ||||
| created."; | ||||
| } | ||||
| leaf originate-new-lsa-count { | leaf originate-new-lsa-count { | |||
| type yang:counter32; | type yang:counter32; | |||
| description "The number of new LSAs originated."; | description | |||
| "The number of new LSAs originated. Discontinuities in the | ||||
| value of this counter can occur when the OSPF instance is | ||||
| re-initialized."; | ||||
| } | } | |||
| leaf rx-new-lsas-count { | leaf rx-new-lsas-count { | |||
| type yang:counter32; | type yang:counter32; | |||
| description "The number of LSAs received."; | description | |||
| "The number of new LSAs received. Discontinuities in the | ||||
| value of this counter can occur when the OSPF instance is | ||||
| re-initialized."; | ||||
| } | } | |||
| leaf as-scope-lsa-count { | leaf as-scope-lsa-count { | |||
| type yang:gauge32; | type yang:gauge32; | |||
| description "The number of AS-scope LSAs."; | description "The number of AS-scope LSAs."; | |||
| } | } | |||
| leaf as-scope-lsa-chksum-sum { | leaf as-scope-lsa-chksum-sum { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The sum of the LSA checksums for AS-scope LSAs."; | "The module 2**32 sum of the LSA checksums | |||
| for AS-scope LSAs. The value should be treated as | ||||
| unsigned when comparing two sums of checksums. While | ||||
| differing checksums indicate a different combination | ||||
| of LSAs, equivalent checksums don't guarantee that the | ||||
| LSAs are the same given that multiple combinations of | ||||
| LSAs can result in the same checksum."; | ||||
| } | } | |||
| container database { | container database { | |||
| description "Container for per AS-scope LSA statistics."; | description "Container for per AS-scope LSA statistics."; | |||
| list as-scope-lsa-type { | list as-scope-lsa-type { | |||
| description "List of AS-scope LSA statistics"; | description "List of AS-scope LSA statistics"; | |||
| leaf lsa-type { | leaf lsa-type { | |||
| type uint16; | type uint16; | |||
| description "AS-Scope LSA type."; | description "AS-Scope LSA type."; | |||
| } | } | |||
| leaf lsa-count { | leaf lsa-count { | |||
| type yang:gauge32; | type yang:gauge32; | |||
| description "The number of LSAs of the LSA type."; | description "The number of LSAs of the LSA type."; | |||
| } | } | |||
| leaf lsa-cksum-sum { | leaf lsa-cksum-sum { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The sum of the LSA checksums of the LSA type."; | "The module 2**32 sum of the LSA checksums | |||
| for the LSAs of this type. The value should be | ||||
| treated as unsigned when comparing two sums of | ||||
| checksums. While differing checksums indicate a | ||||
| different combination of LSAs, equivalent checksums | ||||
| don't guarantee that the LSAs are the same given that | ||||
| multiple combinations of LSAs can result in the same | ||||
| checksum."; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| uses instance-fast-reroute-state; | uses instance-fast-reroute-state; | |||
| } | } | |||
| grouping area-stat { | grouping area-stat { | |||
| description "Per-area statistics."; | description "Per-area statistics."; | |||
| leaf discontinuity-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "The time on the most recent occasion at which any one or | ||||
| more of this OSPF area's counters suffered a | ||||
| discontinuity. If no such discontinuities have occurred | ||||
| since the OSPF area was last re-initialized, then | ||||
| this node contains the time the OSPF area was | ||||
| re-initialized which normally occurs when it was | ||||
| created."; | ||||
| } | ||||
| leaf spf-runs-count { | leaf spf-runs-count { | |||
| type yang:counter32; | type yang:counter32; | |||
| description | description | |||
| "The number of times the intra-area SPF has run."; | "The number of times the intra-area SPF has run. | |||
| Discontinuities in the value of this counter can occur | ||||
| when the OSPF area is re-initialized."; | ||||
| } | } | |||
| leaf abr-count { | leaf abr-count { | |||
| type yang:gauge32; | type yang:gauge32; | |||
| description | description | |||
| "The total number of Area Border Routers (ABRs) | "The total number of Area Border Routers (ABRs) | |||
| reachable within this area."; | reachable within this area."; | |||
| } | } | |||
| leaf asbr-count { | leaf asbr-count { | |||
| type yang:gauge32; | type yang:gauge32; | |||
| description | description | |||
| "The total number of AS Boundary Routers (ASBRs)."; | "The total number of AS Boundary Routers (ASBRs)."; | |||
| } | } | |||
| leaf ar-nssa-translator-event-count { | leaf ar-nssa-translator-event-count { | |||
| type yang:counter32; | type yang:counter32; | |||
| description | description | |||
| "The number of NSSA translator-state changes."; | "The number of NSSA translator-state changes. | |||
| Discontinuities in the value of this counter can occur | ||||
| when the OSPF area is re-initialized."; | ||||
| } | } | |||
| leaf area-scope-lsa-count { | leaf area-scope-lsa-count { | |||
| type yang:gauge32; | type yang:gauge32; | |||
| description | description | |||
| "The number of area-scope LSAs in the area."; | "The number of area-scope LSAs in the area."; | |||
| } | } | |||
| leaf area-scope-lsa-cksum-sum { | leaf area-scope-lsa-cksum-sum { | |||
| type uint32; | type uint32; | |||
| description "The sum of the area-scope LSAs checksums."; | description | |||
| "The module 2**32 sum of the LSA checksums | ||||
| for area-scope LSAs. The value should be treated as | ||||
| unsigned when comparing two sums of checksums. While | ||||
| differing checksums indicate a different combination | ||||
| of LSAs, equivalent checksums don't guarantee that the | ||||
| LSAs are the same given that multiple combinations of | ||||
| LSAs can result in the same checksum."; | ||||
| } | } | |||
| container database { | container database { | |||
| description "Container for area-scope LSA type statistics."; | description "Container for area-scope LSA type statistics."; | |||
| list area-scope-lsa-type { | list area-scope-lsa-type { | |||
| description "List of area-scope LSA statistics"; | description "List of area-scope LSA statistics"; | |||
| leaf lsa-type { | leaf lsa-type { | |||
| type uint16; | type uint16; | |||
| description "Area-scope LSA type."; | description "Area-scope LSA type."; | |||
| } | } | |||
| leaf lsa-count { | leaf lsa-count { | |||
| type yang:gauge32; | type yang:gauge32; | |||
| description "The number of LSAs of the LSA type."; | description "The number of LSAs of the LSA type."; | |||
| } | } | |||
| leaf lsa-cksum-sum { | leaf lsa-cksum-sum { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The sum of the LSA checksums of the LSA type."; | "The module 2**32 sum of the LSA checksums | |||
| for the LSAs of this type. The value should be | ||||
| treated as unsigned when comparing two sums of | ||||
| checksums. While differing checksums indicate a | ||||
| different combination of LSAs, equivalent checksums | ||||
| don't guarantee that the LSAs are the same given that | ||||
| multiple combinations of LSAs can result in the same | ||||
| checksum."; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping interface-stat { | grouping interface-stat { | |||
| description "Per-interface statistics"; | description "Per-interface statistics"; | |||
| leaf discontinuity-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "The time on the most recent occasion at which any one or | ||||
| more of this OSPF interface's counters suffered a | ||||
| discontinuity. If no such discontinuities have occurred | ||||
| since the OSPF interface was last re-initialized, then | ||||
| this node contains the time the OSPF interface was | ||||
| re-initialized which normally occurs when it was | ||||
| created."; | ||||
| } | ||||
| leaf if-event-count { | leaf if-event-count { | |||
| type yang:counter32; | type yang:counter32; | |||
| description | description | |||
| "The number of times this interface has changed its | "The number of times this interface has changed its | |||
| state or an error has occurred."; | state or an error has occurred. Discontinuities in the | |||
| value of this counter can occur when the OSPF interface | ||||
| is re-initialized."; | ||||
| } | } | |||
| leaf link-scope-lsa-count { | leaf link-scope-lsa-count { | |||
| type yang:gauge32; | type yang:gauge32; | |||
| description "The number of link-scope LSAs."; | description "The number of link-scope LSAs."; | |||
| } | } | |||
| leaf link-scope-lsa-cksum-sum { | leaf link-scope-lsa-cksum-sum { | |||
| type uint32; | type uint32; | |||
| description "The sum of link-scope LSA checksums."; | description | |||
| "The module 2**32 sum of the LSA checksums | ||||
| for link-scope LSAs. The value should be treated as | ||||
| unsigned when comparing two sums of checksums. While | ||||
| differing checksums indicate a different combination | ||||
| of LSAs, equivalent checksums don't guarantee that the | ||||
| LSAs are the same given that multiple combinations of | ||||
| LSAs can result in the same checksum."; | ||||
| } | } | |||
| container database { | container database { | |||
| description "Container for link-scope LSA type statistics."; | description "Container for link-scope LSA type statistics."; | |||
| list link-scope-lsa-type { | list link-scope-lsa-type { | |||
| description "List of link-scope LSA statistics"; | description "List of link-scope LSA statistics"; | |||
| leaf lsa-type { | leaf lsa-type { | |||
| type uint16; | type uint16; | |||
| description "Link scope LSA type."; | description "Link scope LSA type."; | |||
| } | } | |||
| leaf lsa-count { | leaf lsa-count { | |||
| type yang:gauge32; | type yang:gauge32; | |||
| description "The number of LSAs of the LSA type."; | description "The number of LSAs of the LSA type."; | |||
| } | } | |||
| leaf lsa-cksum-sum { | leaf lsa-cksum-sum { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The sum of the LSA checksums of the LSA type."; | "The module 2**32 sum of the LSA checksums | |||
| for the LSAs of this type. The value should be | ||||
| treated as unsigned when comparing two sums of | ||||
| checksums. While differing checksums indicate a | ||||
| different combination of LSAs, equivalent checksums | ||||
| don't guarantee that the LSAs are the same given that | ||||
| multiple combinations of LSAs can result in the same | ||||
| checksum."; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping neighbor-stat { | grouping neighbor-stat { | |||
| description "Per-neighbor statistics."; | description "Per-neighbor statistics."; | |||
| leaf discontinuity-time { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "The time on the most recent occasion at which any one or | ||||
| more of this OSPF neighbor's counters suffered a | ||||
| discontinuity. If no such discontinuities have occurred | ||||
| since the OSPF neighbor was last re-initialized, then | ||||
| this node contains the time the OSPF neighbor was | ||||
| re-initialized which normally occurs when the neighbor | ||||
| is dynamically discovered andcreated."; | ||||
| } | ||||
| leaf nbr-event-count { | leaf nbr-event-count { | |||
| type yang:counter32; | type yang:counter32; | |||
| description | description | |||
| "The number of times this neighbor has changed | "The number of times this neighbor has changed | |||
| state or an error has occurred."; | state or an error has occurred. Discontinuities in the | |||
| value of this counter can occur when the OSPF neighbor | ||||
| is re-initialized."; | ||||
| } | } | |||
| leaf nbr-retrans-qlen { | leaf nbr-retrans-qlen { | |||
| type yang:gauge32; | type yang:gauge32; | |||
| description | description | |||
| "The current length of the retransmission queue."; | "The current length of the retransmission queue."; | |||
| } | } | |||
| } | } | |||
| grouping instance-fast-reroute-config { | grouping instance-fast-reroute-config { | |||
| description | description | |||
| skipping to change at page 70, line 36 ¶ | skipping to change at page 75, line 25 ¶ | |||
| 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 if the alternate is the 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 to describe why the alternate | |||
| is not best."; | is not best."; | |||
| } | } | |||
| leaf protection-available { | leaf protection-available { | |||
| skipping to change at page 74, line 13 ¶ | skipping to change at page 78, line 51 ¶ | |||
| description | description | |||
| "Interface IP Fast-reroute configuration."; | "Interface IP Fast-reroute configuration."; | |||
| } | } | |||
| } | } | |||
| grouping interface-physical-link-config { | grouping interface-physical-link-config { | |||
| description | description | |||
| "Interface cost configuration that only applies to | "Interface cost configuration that only applies to | |||
| physical interfaces (non-virtual) and sham links."; | physical interfaces (non-virtual) and sham links."; | |||
| leaf cost { | leaf cost { | |||
| type uint16 { | type ospf-link-metric; | |||
| range "1..65535"; | ||||
| } | ||||
| description | description | |||
| "Interface cost."; | "Interface cost."; | |||
| } | } | |||
| leaf mtu-ignore { | leaf mtu-ignore { | |||
| if-feature mtu-ignore; | if-feature mtu-ignore; | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable bypassing the MTU mismatch check in | "Enable/Disable bypassing the MTU mismatch check in | |||
| Database Description packets."; | Database Description packets specified in RFC 2328, | |||
| section 10.6."; | ||||
| } | } | |||
| leaf prefix-suppression { | leaf prefix-suppression { | |||
| if-feature prefix-suppression; | if-feature prefix-suppression; | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Suppress advertisement of the prefixes associated | "Suppress advertisement of the prefixes associated | |||
| with the interface."; | with the interface."; | |||
| } | } | |||
| leaf two-part-metric { | ||||
| if-feature two-part-metric; | ||||
| type boolean; | ||||
| description | ||||
| "Support advertisement and computation of the 2-part | ||||
| metric."; | ||||
| } | ||||
| } | } | |||
| 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"; | ||||
| } | } | |||
| 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 'hello-interval'."; | "The value must be greater than the '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. A typical | |||
| value for LAN networks is 40 seconds."; | value for LAN networks is 40 seconds."; | |||
| reference "RFC 2328: OSPF Version 2, Appendix C.3"; | ||||
| } | } | |||
| leaf retransmit-interval { | leaf retransmit-interval { | |||
| type uint16 { | type uint16 { | |||
| range "1..3600"; | range "1..3600"; | |||
| } | } | |||
| units seconds; | units seconds; | |||
| description | description | |||
| "Interval between retransmitting unacknowledged Link | "Interval between retransmitting unacknowledged Link | |||
| State Advertisements (LSAs) (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"; | ||||
| } | } | |||
| 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 on 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"; | ||||
| } | } | |||
| leaf lls { | leaf lls { | |||
| if-feature lls; | if-feature lls; | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable link-local signaling (LLS) support."; | "Enable/Disable link-local signaling (LLS) support."; | |||
| } | } | |||
| container ttl-security { | container ttl-security { | |||
| skipping to change at page 76, line 19 ¶ | skipping to change at page 81, line 4 ¶ | |||
| if-feature ttl-security; | if-feature ttl-security; | |||
| description "Time to Live (TTL) security check."; | description "Time to Live (TTL) security check."; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable TTL security check."; | "Enable/Disable TTL security check."; | |||
| } | } | |||
| leaf hops { | leaf hops { | |||
| type uint8 { | type uint8 { | |||
| range "1..254"; | range "1..254"; | |||
| } | } | |||
| default 1; | ||||
| description | description | |||
| "Maximum number of hops that an OSPF packet may | "Maximum number of hops that an OSPF packet may | |||
| have traversed before reception."; | have traversed before reception."; | |||
| } | } | |||
| } | } | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| default true; | default true; | |||
| description | description | |||
| "Enable/disable OSPF protocol on the interface."; | "Enable/disable OSPF protocol on the interface."; | |||
| } | } | |||
| container authentication { | container authentication { | |||
| description "Authentication configuration."; | description "Authentication configuration."; | |||
| choice auth-type-selection { | choice auth-type-selection { | |||
| description | description | |||
| "Options for 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, " | |||
| + "'ospf: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 OSFPv2 authentication trailer support - | |||
| RFC 5709 or RFC 7474"; | RFC 5709 or RFC 7474"; | |||
| } | } | |||
| choice ospfv2-auth-specification { | choice ospfv2-auth-specification { | |||
| skipping to change at page 77, line 18 ¶ | skipping to change at page 82, line 4 ¶ | |||
| type key-chain:key-chain-ref; | type key-chain:key-chain-ref; | |||
| description | description | |||
| "key-chain name."; | "key-chain name."; | |||
| } | } | |||
| } | } | |||
| 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 key."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| case ospfv3-auth-ipsec { | case ospfv3-auth-ipsec { | |||
| when "derived-from-or-self(../../../../../../rt:type, " | when "derived-from-or-self(../../../../../../rt:type, " | |||
| + "'ospf: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."; | "Security Association (SA) name."; | |||
| } | } | |||
| } | } | |||
| case ospfv3-auth-trailer { | case ospfv3-auth-trailer { | |||
| when "derived-from-or-self(../../../../../../rt:type, " | when "derived-from-or-self(../../../../../../rt:type, " | |||
| + "'ospf: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 | |||
| skipping to change at page 79, line 49 ¶ | skipping to change at page 84, line 34 ¶ | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable demand circuit."; | "Enable/Disable demand circuit."; | |||
| } | } | |||
| leaf priority { | leaf priority { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Configure OSPF router priority. On multi-access network | "Configure OSPF router priority. On multi-access network | |||
| this value is for Designated Router (DR) election. The | this value is for Designated Router (DR) election. The | |||
| priority is ignored on other interface types. A value | priority is ignored on other interface types. A router | |||
| of 0 indicates the router is not eligible to become | with a higher priority will be preferred in the election | |||
| Designated Router or Backup Designated Router (BDR)."; | and a value of 0 indicates the router is not eligible to | |||
| become Designated Router or Backup Designated Router | ||||
| (BDR)."; | ||||
| } | } | |||
| container multi-areas { | container multi-areas { | |||
| if-feature multi-area-adj; | if-feature multi-area-adj; | |||
| description "Container for multi-area config."; | description "Container for multi-area config."; | |||
| list multi-area { | list multi-area { | |||
| key multi-area-id; | key multi-area-id; | |||
| description | description | |||
| "Configure OSPF multi-area adjacency."; | "Configure OSPF multi-area adjacency."; | |||
| leaf multi-area-id { | leaf multi-area-id { | |||
| type area-id-type; | type area-id-type; | |||
| description | description | |||
| skipping to change at page 80, line 15 ¶ | skipping to change at page 85, line 4 ¶ | |||
| if-feature multi-area-adj; | if-feature multi-area-adj; | |||
| description "Container for multi-area config."; | description "Container for multi-area config."; | |||
| list multi-area { | list multi-area { | |||
| key multi-area-id; | key multi-area-id; | |||
| description | description | |||
| "Configure OSPF multi-area adjacency."; | "Configure OSPF multi-area adjacency."; | |||
| leaf multi-area-id { | leaf multi-area-id { | |||
| type area-id-type; | type area-id-type; | |||
| description | description | |||
| "Multi-area adjacency area ID."; | "Multi-area adjacency area ID."; | |||
| } | } | |||
| leaf cost { | leaf cost { | |||
| type uint16; | type ospf-link-metric; | |||
| description | description | |||
| "Interface cost for multi-area adjacency."; | "Interface cost for multi-area adjacency."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container static-neighbors { | container static-neighbors { | |||
| description "Statically configured neighbors."; | description "Statically configured neighbors."; | |||
| list neighbor { | list neighbor { | |||
| skipping to change at page 80, line 39 ¶ | skipping to change at page 85, line 29 ¶ | |||
| description | description | |||
| "Specify a static OSPF neighbor."; | "Specify a static OSPF neighbor."; | |||
| leaf identifier { | leaf identifier { | |||
| type inet:ip-address; | type inet:ip-address; | |||
| description | description | |||
| "Neighbor Router ID, IPv4 address, or IPv6 address."; | "Neighbor Router ID, IPv4 address, or IPv6 address."; | |||
| } | } | |||
| leaf cost { | leaf cost { | |||
| type uint16 { | type ospf-link-metric; | |||
| range "1..65535"; | ||||
| } | ||||
| description | description | |||
| "Neighbor cost. Different implementations have different | "Neighbor cost. Different implementations have different | |||
| default costs with some defaulting to a cost inversely | default costs with some defaulting to a cost inversely | |||
| proportional to the interface speed. Others will | proportional to the interface speed. Others will | |||
| default to 1 equating the cost to a hop count." ; | 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 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 2 minutes | discovery of new neighbors. A sample would be | |||
| for a legacy Packet Data Network (PDN) X.25 network."; | 120 seconds (2 minutes) for a legacy Packet Data | |||
| Network (PDN) X.25 network."; | ||||
| reference "RFC 2328: OSPF Version 2, Appendix C.5"; | ||||
| } | } | |||
| leaf priority { | leaf priority { | |||
| type uint8; | type uint8; | |||
| description "Neighbor priority for DR election."; | description | |||
| "Neighbor priority for DR election. A router with a | ||||
| higher priority will be preferred in the election | ||||
| and a value of 0 indicates the router is not | ||||
| eligible to become Designated Router or Backup | ||||
| Designated Router (BDR)."; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| 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."; | "Set prefix as identifying the advertising router."; | |||
| reference "RFC 7684 - OSPFv2 Prefix/Link Attribute | reference "RFC 7684: OSPFv2 Prefix/Link Attribute | |||
| Advertisement"; | 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 "draft-ietf-bfd-yang-xx.txt: | reference "RFC YYYY: YANG Data Model for Bidirectional | |||
| YANG Data Model for Bidirectional Forwarding | Forwarding Detection (BFD). Please replace YYYY with | |||
| Detection (BFD)"; | published RFC number for draft-ietf-bfd-yang."; | |||
| } | } | |||
| 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."; | |||
| skipping to change at page 82, line 35 ¶ | skipping to change at page 87, line 29 ¶ | |||
| description | description | |||
| "Neighbor's Backup Designated Router (BDR) IP Address."; | "Neighbor's Backup Designated Router (BDR) IP Address."; | |||
| } | } | |||
| leaf state { | leaf state { | |||
| type nbr-state-type; | type nbr-state-type; | |||
| config false; | config false; | |||
| description | description | |||
| "OSPF neighbor state."; | "OSPF neighbor state."; | |||
| } | } | |||
| leaf cost { | leaf cost { | |||
| type uint32; | type ospf-link-metric; | |||
| config false; | config false; | |||
| description "Cost to reach neighbor for Point-to-Multipoint | description "Cost to reach neighbor for Point-to-Multipoint | |||
| and Hybrid networks"; | 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 "This timer tracks the remaining time before | |||
| the neighbor is declared dead."; | the neighbor is declared dead."; | |||
| } | } | |||
| skipping to change at page 83, line 4 ¶ | skipping to change at page 87, line 46 ¶ | |||
| config false; | config false; | |||
| description "This timer tracks the remaining time before | description "This timer tracks the remaining time before | |||
| the neighbor is declared dead."; | the neighbor is declared dead."; | |||
| } | } | |||
| container statistics { | container statistics { | |||
| config false; | config false; | |||
| description "Per-neighbor statistics"; | description "Per-neighbor statistics"; | |||
| uses neighbor-stat; | uses neighbor-stat; | |||
| } | } | |||
| } | } | |||
| grouping interface-common-state { | grouping interface-common-state { | |||
| description | description | |||
| "OSPF interface common operational state."; | "OSPF interface common operational state."; | |||
| reference "RFC2328 Section 9"; | reference "RFC2328 Section 9: OSPF Version2 - | |||
| The Interface Data Structure"; | ||||
| leaf state { | leaf state { | |||
| type if-state-type; | type if-state-type; | |||
| config false; | config false; | |||
| description "Interface state."; | description "Interface state."; | |||
| } | } | |||
| leaf hello-timer { | leaf hello-timer { | |||
| type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
| config false; | config false; | |||
| description "This timer tracks the remaining time before | description "This timer tracks the remaining time before | |||
| the next hello packet is sent on the | the next hello packet is sent on the | |||
| interface."; | interface."; | |||
| } | } | |||
| leaf wait-timer { | leaf wait-timer { | |||
| type rt-types:timer-value-seconds32; | type rt-types:timer-value-seconds16; | |||
| config false; | config false; | |||
| description "This timer tracks the remaining time before | description "This timer tracks the remaining time before | |||
| the interface exits the Waiting state."; | the interface exits the Waiting state."; | |||
| } | } | |||
| leaf dr-router-id { | leaf dr-router-id { | |||
| type rt-types:router-id; | type rt-types:router-id; | |||
| config false; | config false; | |||
| description "Designated Router (DR) Router ID."; | description "Designated Router (DR) Router ID."; | |||
| } | } | |||
| skipping to change at page 84, line 50 ¶ | skipping to change at page 89, line 44 ¶ | |||
| 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, 'ospf: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, 'ospf:ospfv3')" { | + "rt:type, 'ospfv3')" { | |||
| description "OSPFv3 LSA."; | description "OSPFv3 LSA."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping interface-state { | grouping interface-state { | |||
| description | description | |||
| "OSPF interface operational state."; | "OSPF interface operational state."; | |||
| reference "RFC2328 Section 9"; | reference "RFC2328 Section 9: OSPF Version2 - | |||
| The Interface Data Structure"; | ||||
| uses interface-common-state; | uses interface-common-state; | |||
| } | } | |||
| grouping virtual-link-config { | grouping virtual-link-config { | |||
| description | description | |||
| "OSPF virtual link configuration state."; | "OSPF virtual link configuration state."; | |||
| uses interface-common-config; | uses interface-common-config; | |||
| } | } | |||
| grouping virtual-link-state { | grouping virtual-link-state { | |||
| description | description | |||
| "OSPF virtual link operational state."; | "OSPF virtual link operational state."; | |||
| leaf cost { | leaf cost { | |||
| type uint16 { | type ospf-link-metric; | |||
| range "1..65535"; | ||||
| } | ||||
| config false; | config false; | |||
| description | description | |||
| "Virtual link interface cost."; | "Virtual link interface cost."; | |||
| } | } | |||
| uses interface-common-state; | uses interface-common-state; | |||
| } | } | |||
| grouping sham-link-config { | grouping sham-link-config { | |||
| description | description | |||
| "OSPF sham link configuration state."; | "OSPF sham link configuration state."; | |||
| skipping to change at page 86, line 38 ¶ | skipping to change at page 91, line 32 ¶ | |||
| 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; | |||
| range "0..16777214"; | ||||
| } | ||||
| description | description | |||
| "Advertised cost of summary route."; | "Advertised cost of summary route."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping area-common-config { | grouping area-common-config { | |||
| description | description | |||
| "OSPF area common configuration state."; | "OSPF area common configuration state."; | |||
| leaf summary { | leaf summary { | |||
| when "derived-from(../area-type,'ospf: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/NSSA area."; | |||
| } | } | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable summary advertisement into the stub or | "Enable/Disable summary advertisement into the stub or | |||
| NSSA area."; | NSSA area."; | |||
| } | } | |||
| leaf default-cost { | leaf default-cost { | |||
| when "derived-from(../area-type,'ospf:stub-nssa-area')" { | when "derived-from(../area-type,'stub-nssa-area')" { | |||
| description | description | |||
| "Cost for LSA default route advertised into the | "Cost for LSA default route advertised into the | |||
| stub or NSSA area."; | stub or NSSA area."; | |||
| } | } | |||
| type ospf-metric; | type ospf-metric; | |||
| description | description | |||
| "Set the summary default route cost for a | "Set the summary default route cost for a | |||
| stub or NSSA area."; | stub or NSSA area."; | |||
| } | } | |||
| } | } | |||
| skipping to change at page 88, line 26 ¶ | skipping to change at page 93, line 20 ¶ | |||
| "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, 'ospf: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, 'ospf:ospfv3')" { | + "rt:type, 'ospfv3')" { | |||
| description "OSPFv3 LSA."; | description "OSPFv3 LSA."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| skipping to change at page 92, line 11 ¶ | skipping to change at page 97, line 4 ¶ | |||
| grouping instance-config { | grouping instance-config { | |||
| description | description | |||
| "OSPF instance config state."; | "OSPF instance config state."; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| default true; | default true; | |||
| description | description | |||
| "Enable/Disable the protocol."; | "Enable/Disable the protocol."; | |||
| } | } | |||
| leaf explicit-router-id { | leaf explicit-router-id { | |||
| if-feature explicit-router-id; | if-feature explicit-router-id; | |||
| type rt-types:router-id; | type rt-types:router-id; | |||
| description | description | |||
| "Defined in RFC 2328. A 32-bit number | "Defined in RFC 2328. A 32-bit number | |||
| that uniquely identifies the router."; | that uniquely identifies the router."; | |||
| } | } | |||
| container preference { | container preference { | |||
| description | 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 { | |||
| leaf all { | leaf all { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Preference for intra-area, inter-area, and | "Preference for intra-area, inter-area, and | |||
| skipping to change at page 93, line 41 ¶ | skipping to change at page 98, line 34 ¶ | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable NSR."; | "Enable/Disable NSR."; | |||
| } | } | |||
| } | } | |||
| container graceful-restart { | container graceful-restart { | |||
| if-feature graceful-restart; | if-feature graceful-restart; | |||
| description | description | |||
| "Graceful restart config state."; | "Graceful restart config state."; | |||
| reference "RFC 3623 - OSPF Graceful Restart | reference "RFC 3623: OSPF Graceful Restart | |||
| RFC 5187 - OSPFv3 Graceful Restart"; | RFC 5187: OSPFv3 Graceful Restart"; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable graceful restart as defined in RFC 3623 | "Enable/Disable graceful restart as defined in RFC 3623 | |||
| for OSPFv2 and RFC 5187 for OSPFv3."; | for OSPFv2 and RFC 5187 for OSPFv3."; | |||
| } | } | |||
| leaf helper-enable { | leaf helper-enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable graceful restart helper support for restarting | "Enable graceful restart helper support for restarting | |||
| skipping to change at page 95, line 6 ¶ | skipping to change at page 99, line 47 ¶ | |||
| determine interface cost (Mbits). The cost is the | determine interface cost (Mbits). The cost is the | |||
| reference bandwidth divided by the interface speed | reference bandwidth divided by the interface speed | |||
| with 1 being the minimum cost."; | with 1 being the minimum cost."; | |||
| } | } | |||
| } | } | |||
| container spf-control { | container spf-control { | |||
| leaf paths { | leaf paths { | |||
| if-feature max-ecmp; | if-feature max-ecmp; | |||
| type uint16 { | type uint16 { | |||
| range "1..32"; | range "1..65535"; | |||
| } | } | |||
| description | description | |||
| "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; | "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; | |||
| } | } | |||
| container ietf-spf-delay { | container ietf-spf-delay { | |||
| if-feature ietf-spf-delay; | if-feature ietf-spf-delay; | |||
| uses ietf-spf-delay; | uses ietf-spf-delay; | |||
| description | description | |||
| "IETF SPF delay algorithm configuration."; | "IETF SPF delay algorithm configuration."; | |||
| } | } | |||
| skipping to change at page 95, line 46 ¶ | skipping to change at page 100, line 39 ¶ | |||
| choice trigger { | choice trigger { | |||
| description | description | |||
| "Specific triggers which will enable stub | "Specific triggers which will enable stub | |||
| router state."; | router state."; | |||
| container always { | container always { | |||
| presence | presence | |||
| "Enables unconditional stub router support"; | "Enables unconditional stub router support"; | |||
| description | description | |||
| "Unconditional stub router state (advertise | "Unconditional stub router state (advertise | |||
| transit links with MaxLinkMetric"; | transit links with MaxLinkMetric"; | |||
| reference "RFC 6987 - OSPF Stub Router | reference "RFC 6987: OSPF Stub Router | |||
| Advertisement"; | Advertisement"; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container mpls { | container mpls { | |||
| description | description | |||
| "OSPF MPLS config state."; | "OSPF MPLS config state."; | |||
| container te-rid { | container te-rid { | |||
| if-feature te-rid; | if-feature te-rid; | |||
| description | description | |||
| "Stable OSPF Router IP Address used for Traffic | "Stable OSPF Router IP Address used for Traffic | |||
| Engineering (TE)"; | Engineering (TE)"; | |||
| leaf ipv4-router-id { | leaf ipv4-router-id { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| skipping to change at page 97, line 30 ¶ | skipping to change at page 102, line 23 ¶ | |||
| container as-scope-lsas { | container as-scope-lsas { | |||
| description "All AS-scope of LSA of this LSA type."; | description "All AS-scope of LSA of this LSA type."; | |||
| list as-scope-lsa { | list as-scope-lsa { | |||
| key "lsa-id adv-router"; | key "lsa-id adv-router"; | |||
| description "List of OSPF 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, 'ospf: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, 'ospf:ospfv3')" { | + "rt:type, 'ospfv3')" { | |||
| description "OSPFv3 LSA."; | description "OSPFv3 LSA."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| uses spf-log; | uses spf-log; | |||
| uses lsa-log; | uses lsa-log; | |||
| } | } | |||
| grouping ospf-config { | ||||
| description | ||||
| "OSPF top configuration state - currently empty."; | ||||
| } | ||||
| grouping ospf-state { | ||||
| description | ||||
| "OSPF top operational state - currently empty."; | ||||
| } | ||||
| 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(" | when "derived-from(../../../area-type, 'stub-nssa-area')" { | |||
| + "../../../../../areas/area[area-id=current()/../area-id]/" | ||||
| + "area-type, 'stub-nssa-area')" { | ||||
| description | description | |||
| "Summary advertisement into the stub/NSSA area."; | "Summary advertisement into the stub/NSSA area."; | |||
| } | } | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/Disable summary advertisement into the | "Enable/Disable summary advertisement into the | |||
| topology in the stub or NSSA area."; | topology in the stub or NSSA area."; | |||
| } | } | |||
| leaf default-cost { | leaf default-cost { | |||
| when "derived-from(" | when "derived-from(../../../area-type, 'stub-nssa-area')" { | |||
| + "../../../../../areas/area[area-id=current()/../area-id]/" | ||||
| + "area-type, 'stub-nssa-area')" { | ||||
| description | description | |||
| "Cost for LSA default route advertised into the | "Cost for LSA default route advertised into the | |||
| topology into the stub or NSSA area."; | topology into the stub or NSSA area."; | |||
| } | } | |||
| type ospf-metric; | type ospf-metric; | |||
| description | description | |||
| "Set the summary default route cost for a | "Set the summary default route cost for a | |||
| stub or NSSA area."; | stub or NSSA area."; | |||
| } | } | |||
| } | } | |||
| grouping multi-topology-area-config { | grouping multi-topology-area-config { | |||
| description | description | |||
| "OSPF multi-topology area configuration state."; | "OSPF multi-topology area configuration state."; | |||
| uses multi-topology-area-common-config; | uses multi-topology-area-common-config; | |||
| uses address-family-area-config; | uses address-family-area-config; | |||
| } | } | |||
| grouping multi-topology-area-state { | ||||
| description | ||||
| "OSPF multi-topology area operational state."; | ||||
| } | ||||
| grouping multi-topology-config { | ||||
| description | ||||
| "OSPF multi-topology configuration state."; | ||||
| } | ||||
| grouping multi-topology-state { | grouping multi-topology-state { | |||
| description | description | |||
| "OSPF multi-topology operational state."; | "OSPF multi-topology operational state."; | |||
| uses local-rib; | uses local-rib; | |||
| } | } | |||
| grouping multi-topology-interface-config { | grouping multi-topology-interface-config { | |||
| description | description | |||
| "OSPF multi-topology configuration state."; | "OSPF multi-topology configuration state."; | |||
| leaf cost { | leaf cost { | |||
| type uint32; | type ospf-link-metric; | |||
| description | description | |||
| "Interface cost for this topology."; | "Interface cost for this topology."; | |||
| } | } | |||
| } | } | |||
| grouping multi-topology-interface-state { | ||||
| description | ||||
| "OSPF multi-topology operational state."; | ||||
| } | ||||
| grouping ospfv3-interface-config { | grouping ospfv3-interface-config { | |||
| description | description | |||
| "OSPFv3 interface specific configuration state."; | "OSPFv3 interface specific configuration state."; | |||
| leaf instance-id { | leaf instance-id { | |||
| type uint8 { | type uint8 { | |||
| range "0 .. 31"; | range "0 .. 31"; | |||
| } | } | |||
| description | description | |||
| "OSPFv3 instance ID."; | "OSPFv3 instance ID."; | |||
| skipping to change at page 100, line 27 ¶ | skipping to change at page 104, line 38 ¶ | |||
| 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 yang:dotted-quad; | type union { | |||
| type inet:ipv4-address; | ||||
| 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 | |||
| skipping to change at page 101, line 4 ¶ | skipping to change at page 105, line 19 ¶ | |||
| description | description | |||
| "Grouping for SPF log."; | "Grouping for SPF log."; | |||
| container spf-log { | container spf-log { | |||
| config false; | config false; | |||
| description | description | |||
| "This container lists the SPF log."; | "This container lists the SPF log."; | |||
| list event { | list event { | |||
| key id; | key id; | |||
| description | description | |||
| "List of SPF log entries represented | "List of SPF log entries represented | |||
| as a wrapping buffer."; | as a wrapping buffer in chronological | |||
| order with the oldest entry returned | ||||
| first."; | ||||
| leaf id { | leaf id { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Event identifier - Purely internal value."; | "Event identifier - 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."; | "SPF computation was a Full SPF."; | |||
| skipping to change at page 102, line 25 ¶ | skipping to change at page 106, line 42 ¶ | |||
| container lsa-log { | container lsa-log { | |||
| config false; | config false; | |||
| description | description | |||
| "This container lists the LSA log. | "This container lists the LSA log. | |||
| Local LSA modifications are also included | Local LSA modifications are also included | |||
| in the list."; | in the list."; | |||
| list event { | list event { | |||
| key id; | key id; | |||
| description | description | |||
| "List of LSA log entries represented | "List of LSA log entries represented | |||
| as a wrapping buffer."; | as a wrapping buffer in chronological order | |||
| with the oldest entries returned first."; | ||||
| leaf id { | leaf id { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Event identifier - purely internal value."; | "Event identifier - purely internal value."; | |||
| } | } | |||
| container lsa { | container lsa { | |||
| description | description | |||
| "This container describes the logged LSA."; | "This container describes the logged LSA."; | |||
| uses lsa-identifiers; | uses lsa-identifiers; | |||
| } | } | |||
| leaf received-timestamp { | leaf received-timestamp { | |||
| type yang:timestamp; | type yang:timestamp; | |||
| description | description | |||
| "This 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 case of local LSA update, the timestamp refers | |||
| to the LSA origination time."; | to the LSA origination time."; | |||
| } | } | |||
| leaf reason { | leaf reason { | |||
| skipping to change at page 103, line 4 ¶ | skipping to change at page 107, line 23 ¶ | |||
| } | } | |||
| 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."; | "This 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:ospf-protocol')" { | 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 "OSPF protocol ietf-routing module | |||
| control-plane-protocol augmentation."; | control-plane-protocol augmentation."; | |||
| container ospf { | container ospf { | |||
| description | description | |||
| "OSPF protocol Instance"; | "OSPF protocol Instance"; | |||
| uses ospf-config; | ||||
| uses ospf-state; | ||||
| 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 { | |||
| skipping to change at page 105, line 32 ¶ | skipping to change at page 109, line 48 ¶ | |||
| uses interface-config; | uses interface-config; | |||
| uses interface-state; | uses interface-state; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/ospf:ospf" { | + "rt:control-plane-protocol/ospf" { | |||
| when "derived-from(../rt:type, 'ospf:ospf-protocol')" { | 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 | |||
| skipping to change at page 106, line 10 ¶ | skipping to change at page 110, line 26 ¶ | |||
| must coincide with the routing-instance | must coincide with the routing-instance | |||
| 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 "RIB name corresponding to the OSPF | |||
| topology."; | topology."; | |||
| } | } | |||
| uses multi-topology-config; | ||||
| uses multi-topology-state; | uses multi-topology-state; | |||
| } | ||||
| } | ||||
| } | ||||
| container areas { | augment "/rt:routing/rt:control-plane-protocols/" | |||
| description "All areas in the topology."; | + "rt:control-plane-protocol/ospf/" | |||
| list area { | + "areas/area" { | |||
| key "area-id"; | when "derived-from-or-self(../../../rt:type, " | |||
| description | + "'ospfv2')" { | |||
| "List of OSPF areas"; | description | |||
| leaf area-id { | "This augmentation is only valid for OSPFv2."; | |||
| type area-id-type; | } | |||
| description | if-feature multi-topology; | |||
| "Area ID."; | description | |||
| } | "OSPF multi-topology area configuration state | |||
| uses multi-topology-area-config; | augmentation."; | |||
| uses multi-topology-area-state; | container topologies { | |||
| description "All topologies for the area."; | ||||
| list topology { | ||||
| key "name"; | ||||
| description "OSPF area topology."; | ||||
| leaf name { | ||||
| type leafref { | ||||
| path "../../../../../../../../" | ||||
| + "rt:ribs/rt:rib/rt:name"; | ||||
| } | } | |||
| description | ||||
| "Single topology enabled for this area."; | ||||
| } | } | |||
| uses multi-topology-area-config; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/ospf:ospf/" | + "rt:control-plane-protocol/ospf/" | |||
| + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { | + "areas/area/interfaces/interface" { | |||
| when "derived-from-or-self(../../../../../rt:type, " | when "derived-from-or-self(../../../../../rt:type, " | |||
| + "'ospf:ospfv2')" { | + "'ospfv2')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
| } | } | |||
| if-feature ospf:multi-topology; | if-feature multi-topology; | |||
| description | description | |||
| "OSPF multi-topology interface configuration state | "OSPF multi-topology interface configuration state | |||
| augmentation."; | augmentation."; | |||
| container topologies { | container topologies { | |||
| description "All topologies for the interface."; | description "All topologies for the interface."; | |||
| list topology { | list topology { | |||
| key "name"; | key "name"; | |||
| description "OSPF interface topology."; | description "OSPF interface topology."; | |||
| leaf name { | leaf name { | |||
| type leafref { | type leafref { | |||
| path "../../../../../../../../../../" | path "../../../../../../../../../../" | |||
| + "rt:ribs/rt:rib/rt:name"; | + "rt:ribs/rt:rib/rt:name"; | |||
| } | } | |||
| description | description | |||
| "Single topology enabled on this interface."; | "Single topology enabled on this interface."; | |||
| } | } | |||
| uses multi-topology-interface-config; | uses multi-topology-interface-config; | |||
| uses multi-topology-interface-state; | ||||
| } | } | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/ospf:ospf/" | + "rt:control-plane-protocol/ospf/" | |||
| + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { | + "areas/area/interfaces/interface" { | |||
| when "derived-from-or-self(../../../../../rt:type, " | when "derived-from-or-self(../../../../../rt:type, " | |||
| + "'ospf: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; | |||
| } | } | |||
| skipping to change at page 107, line 50 ¶ | skipping to change at page 112, line 30 ¶ | |||
| 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:ospf-protocol')" { | 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 | |||
| "OSPF-specific route attributes."; | "OSPF-specific route attributes."; | |||
| uses route-content; | uses route-content; | |||
| } | } | |||
| /* | /* | |||
| skipping to change at page 109, line 46 ¶ | skipping to change at page 114, line 27 ¶ | |||
| 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:ospf-protocol')"; | + "rt:type, 'ospf')"; | |||
| description | description | |||
| "OSPF routing protocol instance name."; | "OSPF routing protocol instance name."; | |||
| } | } | |||
| 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: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 the OSPF interface specific notification."; | |||
| skipping to change at page 111, line 22 ¶ | skipping to change at page 115, line 52 ¶ | |||
| 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 Router ID."; | |||
| } | } | |||
| leaf neighbor-ip-addr { | leaf neighbor-ip-addr { | |||
| type yang:dotted-quad; | type inet:ip-address; | |||
| description "Neighbor address."; | description "Neighbor address."; | |||
| } | } | |||
| } | } | |||
| notification if-state-change { | notification if-state-change { | |||
| uses notification-instance-hdr; | uses notification-instance-hdr; | |||
| uses notification-interface; | uses notification-interface; | |||
| leaf state { | leaf state { | |||
| type if-state-type; | type if-state-type; | |||
| skipping to change at page 111, line 45 ¶ | skipping to change at page 116, line 26 ¶ | |||
| description | description | |||
| "This notification is sent when an interface | "This notification is sent when an interface | |||
| state change is detected."; | state change is detected."; | |||
| } | } | |||
| notification if-config-error { | notification if-config-error { | |||
| uses notification-instance-hdr; | uses notification-instance-hdr; | |||
| uses notification-interface; | uses notification-interface; | |||
| leaf packet-source { | leaf packet-source { | |||
| type yang:dotted-quad; | type inet:ip-address; | |||
| description "Source address."; | description "Source address."; | |||
| } | } | |||
| leaf packet-type { | leaf packet-type { | |||
| type packet-type; | type packet-type; | |||
| description "OSPF packet type."; | description "OSPF packet type."; | |||
| } | } | |||
| leaf error { | leaf error { | |||
| type enumeration { | type enumeration { | |||
| enum "bad-version" { | enum "bad-version" { | |||
| description "Bad version."; | description "Bad version."; | |||
| } | } | |||
| enum "area-mismatch" { | enum "area-mismatch" { | |||
| description "Area mismatch."; | description "Area mismatch."; | |||
| } | } | |||
| skipping to change at page 113, line 18 ¶ | skipping to change at page 117, line 47 ¶ | |||
| 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 aa 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; | |||
| skipping to change at page 114, line 7 ¶ | skipping to change at page 118, line 36 ¶ | |||
| description | description | |||
| "This notification is sent when a neighbor restart | "This notification is sent when a neighbor restart | |||
| helper status change is detected."; | helper status change is detected."; | |||
| } | } | |||
| notification if-rx-bad-packet { | notification if-rx-bad-packet { | |||
| uses notification-instance-hdr; | uses notification-instance-hdr; | |||
| uses notification-interface; | uses notification-interface; | |||
| leaf packet-source { | leaf packet-source { | |||
| type yang:dotted-quad; | type inet:ip-address; | |||
| description "Source address."; | description "Source address."; | |||
| } | } | |||
| leaf packet-type { | leaf packet-type { | |||
| type packet-type; | type packet-type; | |||
| description "OSPF packet type."; | description "OSPF packet type."; | |||
| } | } | |||
| description | description | |||
| "This notification is sent when an OSPF packet that | "This notification is sent when an OSPF packet that | |||
| skipping to change at page 116, line 4 ¶ | skipping to change at page 120, line 32 ¶ | |||
| leaf exit-reason { | leaf exit-reason { | |||
| type restart-exit-reason-type; | type restart-exit-reason-type; | |||
| description | description | |||
| "Restart exit reason."; | "Restart exit reason."; | |||
| } | } | |||
| 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 modules specified in this document define 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 [RFC8341] provides the means to | The NETCONF Access Control Model (NACM) [RFC8341] provides the means | |||
| restrict access for particular NETCONF or RESTCONF users to a pre- | to restrict access for particular NETCONF or RESTCONF users to a pre- | |||
| configured subset of all available NETCONF or RESTCONF protocol | configured subset of all available NETCONF or RESTCONF protocol | |||
| operations and content. | operations and content. | |||
| There are a number of data nodes defined in ietf-ospf.yang module | There are a number of data nodes defined in ietf-ospf.yang module | |||
| that are writable/creatable/deletable (i.e., config true, which is | that are writable/creatable/deletable (i.e., config true, which is | |||
| the default). These data nodes may be considered sensitive or | the default). These data nodes may be considered sensitive or | |||
| vulnerable in some network environments. Write operations (e.g., | vulnerable in some network environments. Write operations (e.g., | |||
| edit-config) to these data nodes without proper protection can have a | edit-config) to these data nodes without proper protection can have a | |||
| negative effect on network operations. For OSPF, the ability to | negative effect on network operations. Writable data node represent | |||
| modify OSPF configuration will allow the entire OSPF domain to be | configuration of each instance, area, virtual link, sham-link, and | |||
| compromised including peering with unauthorized routers to misroute | interface. These correspond to the following schema nodes: | |||
| traffic or mount a massive Denial-of-Service (DoS) attack. | ||||
| /ospf | ||||
| /ospf/areas/ | ||||
| /ospf/areas/area[area-id] | ||||
| /ospf/virtual-links/ | ||||
| /ospf/virtual-links/virtual-link[transit-area-id router-id] | ||||
| /ospf/areas/area[area-id]/interfaces | ||||
| /ospf/areas/area[area-id]/interfaces/interface[name] | ||||
| /ospf/area/area[area-id]/sham-links | ||||
| /ospf/area/area[area-id]/sham-links/sham-link[local-id remote-id] | ||||
| For OSPF, the ability to modify OSPF configuration will allow the | ||||
| entire OSPF domain to be compromised including peering with | ||||
| unauthorized routers to misroute traffic or mount a massive Denial- | ||||
| of-Service (DoS) attack. For example, adding OSPF on any unprotected | ||||
| interface could allow an OSPF adjacency to be formed with an | ||||
| unauthorized and malicious neighbor. Once an adjacency is formed, | ||||
| traffic could be hijacked. As a simpler example, a Denial-of-Service | ||||
| attack could be mounted by changing the cost of an OSPF interface to | ||||
| be asymmetric such that a hard routing loop ensues. In general, | ||||
| unauthorized modification of most OSPF features will pose there own | ||||
| set of security risks and the "Security Considerations" in the | ||||
| respective reference RFCs should be consulted. | ||||
| Some of the readable data nodes in the ietf-ospf.yang module may be | Some of the readable data nodes in the ietf-ospf.yang module may be | |||
| considered sensitive or vulnerable in some network environments. It | considered sensitive or vulnerable in some network environments. It | |||
| is thus important to control read access (e.g., via get, get-config, | is thus important to control read access (e.g., via get, get-config, | |||
| or notification) to these data nodes. The exposure of the Link State | or notification) to these data nodes. The exposure of the Link State | |||
| Database (LSDB) will expose the detailed topology of the network. | Database (LSDB) will expose the detailed topology of the network. | |||
| This may be undesirable since both due to the fact that exposure may | There is a separate Link State Database for each instance, area, | |||
| facilitate other attacks. Additionally, network operators may | virtual link, sham-link, and interface. These correspond to the | |||
| consider their topologies to be sensitive confidential data. | following schema nodes: | |||
| /ospf/database | ||||
| /ospf/areas/area[area-id]/database | ||||
| /ospf/virtual-links/virtual-link[transit-area-id router- | ||||
| id]/database | ||||
| /ospf/areas/area[area-id]/interfaces/interface[name]/database | ||||
| /ospf/area/area[area-id]/sham-links/sham-link[local-id remote- | ||||
| id]/database | ||||
| Exposure of the Link State Database includes information beyond the | ||||
| scope of the OSPF router and this may be undesirable since exposure | ||||
| may facilitate other attacks. Additionally, in the case of an area | ||||
| LSDB, the complete IP network topology and, if deployed, the traffic | ||||
| engineering topology of the OSPF area can be reconstucted. Network | ||||
| operators may consider their topologies to be sensitive confidential | ||||
| data. | ||||
| For OSPF authentication, configuration is supported via the | For OSPF authentication, configuration is supported via the | |||
| specification of key-chains [RFC8177] or the direct specification of | specification of key-chains [RFC8177] or the direct specification of | |||
| key and authentication algorithm. Hence, authentication | key and authentication algorithm. Hence, authentication | |||
| configuration using the "auth-table-trailer" case in the | configuration using the "auth-table-trailer" case in the | |||
| "authentication" container inherits the security considerations of | "authentication" container inherits the security considerations of | |||
| [RFC8177]. This includes the considerations with respect to the | [RFC8177]. This includes the considerations with respect to the | |||
| local storage and handling of authentication keys. | local storage and handling of authentication keys. | |||
| Additionally, local specificationn of OSPF authentication keys and | Additionally, local specification of OSPF authentication keys and the | |||
| the associated authentication algorithm is supported for legacy | associated authentication algorithm is supported for legacy | |||
| implementations that do not support key-chains [RFC8177] for legacy | implementations that do not support key-chains [RFC8177] It is | |||
| implementations that do not support key-chains. It is RECOMMENDED | RECOMMENDED that implementations migrate to key-chains due the | |||
| that implementations migrate to key-chains due the seamless support | seamless support of key and algorithm rollover, as well as, the | |||
| of key and algorithm rollover, as well as, the encryption of key | hexadecimal key specification affording more key entropy, and | |||
| using the Advanced Encryption Standard (AES) Key Wrap Padding | encryption of keys using the Advanced Encryption Standard (AES) Key | |||
| Algorithm [RFC5649]. | Wrap Padding Algorithm [RFC5649]. | |||
| Some of the RPC operations in this YANG module may be considered | Some of the RPC operations in this YANG module may be considered | |||
| sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
| important to control access to these operations. The OSPF YANG | important to control access to these operations. The OSPF YANG | |||
| module support the "clear-neighbor" and "clear-database" RPCs. If | module supports the "clear-neighbor" and "clear-database" RPCs. If | |||
| access to either of these is compromised, they can result in | access to either of these is compromised, they can result in | |||
| temporary network outages be employed to mount DoS attacks. | temporary network outages be employed to mount DoS attacks. | |||
| The actual authentication key data (whether locally specified or part | ||||
| of a key-chain) is sensitive and needs to be kept secret from | ||||
| unauthorized parties; compromise of the key data would allow an | ||||
| attacker to forge OSPF traffic that would be accepted as authentic, | ||||
| potentially compromising the entirety OSPF domain. | ||||
| 5. IANA Considerations | 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 is | |||
| requested to be made: | requested to be 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. | |||
| skipping to change at page 117, line 39 ¶ | skipping to change at page 123, line 28 ¶ | |||
| 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 XXXX | |||
| 6. Acknowledgements | 6. Acknowledgements | |||
| The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, | The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, | |||
| Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and | Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta, | |||
| Alan Davey for their thorough reviews and helpful comments. | Michael Darwish, and Alan Davey for their thorough reviews and | |||
| helpful comments. | ||||
| Thanks to Tom Petch for last call review and improvement of the | Thanks to Tom Petch for last call review and improvement of the | |||
| document organization. | document organization. | |||
| Thanks to Alvaro Retana for AD comments. | Thanks to Alvaro Retana for AD comments. | |||
| Thanks to Benjamin Kaduk, Suresh Krishnan, and Roman Dannyliw for | ||||
| IESG review comments. | ||||
| This document was produced using Marshall Rose's xml2rfc tool. | This document was produced using Marshall Rose's xml2rfc tool. | |||
| Author affiliation with The MITRE Corporation is provided for | Author affiliation with The MITRE Corporation is provided for | |||
| identification purposes only, and is not intended to convey or imply | identification purposes only, and is not intended to convey or imply | |||
| MITRE's concurrence with, or support for, the positions, opinions or | MITRE's concurrence with, or support for, the positions, opinions or | |||
| viewpoints expressed. MITRE has approved this document for Public | viewpoints expressed. MITRE has approved this document for Public | |||
| Release, Distribution Unlimited, with Public Release Case Number | Release, Distribution Unlimited, with Public Release Case Number | |||
| 18-3194. | 18-3194. | |||
| 7. References | 7. References | |||
| skipping to change at page 122, line 15 ¶ | skipping to change at page 128, line 10 ¶ | |||
| [RFC7770] Lindem, A., Ed., Shen, N., Vasseur, JP., Aggarwal, R., and | [RFC7770] Lindem, A., Ed., Shen, N., Vasseur, JP., Aggarwal, R., and | |||
| S. Shaffer, "Extensions to OSPF for Advertising Optional | S. Shaffer, "Extensions to OSPF for Advertising Optional | |||
| Router Capabilities", RFC 7770, DOI 10.17487/RFC7770, | Router Capabilities", RFC 7770, DOI 10.17487/RFC7770, | |||
| February 2016, <https://www.rfc-editor.org/info/rfc7770>. | February 2016, <https://www.rfc-editor.org/info/rfc7770>. | |||
| [RFC7777] Hegde, S., Shakir, R., Smirnov, A., Li, Z., and B. | [RFC7777] Hegde, S., Shakir, R., Smirnov, A., Li, Z., and B. | |||
| Decraene, "Advertising Node Administrative Tags in OSPF", | Decraene, "Advertising Node Administrative Tags in OSPF", | |||
| RFC 7777, DOI 10.17487/RFC7777, March 2016, | RFC 7777, DOI 10.17487/RFC7777, March 2016, | |||
| <https://www.rfc-editor.org/info/rfc7777>. | <https://www.rfc-editor.org/info/rfc7777>. | |||
| [RFC7884] Pignataro, C., Bhatia, M., Aldrin, S., and T. Ranganath, | ||||
| "OSPF Extensions to Advertise Seamless Bidirectional | ||||
| Forwarding Detection (S-BFD) Target Discriminators", | ||||
| RFC 7884, DOI 10.17487/RFC7884, July 2016, | ||||
| <https://www.rfc-editor.org/info/rfc7884>. | ||||
| [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
| RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
| <https://www.rfc-editor.org/info/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
| [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
| Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
| <https://www.rfc-editor.org/info/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
| [RFC8042] Zhang, Z., Wang, L., and A. Lindem, "OSPF Two-Part | ||||
| Metric", RFC 8042, DOI 10.17487/RFC8042, December 2016, | ||||
| <https://www.rfc-editor.org/info/rfc8042>. | ||||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. | [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. | |||
| Zhang, "YANG Data Model for Key Chains", RFC 8177, | Zhang, "YANG Data Model for Key Chains", RFC 8177, | |||
| DOI 10.17487/RFC8177, June 2017, | DOI 10.17487/RFC8177, June 2017, | |||
| <https://www.rfc-editor.org/info/rfc8177>. | <https://www.rfc-editor.org/info/rfc8177>. | |||
| [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, | [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, | |||
| skipping to change at page 125, line 28 ¶ | skipping to change at page 131, line 28 ¶ | |||
| 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 | |||
| Huawei | Futurewei | |||
| 2330 Central Expressway | 2330 Central Expressway | |||
| Santa Clara, CA 95050 | Santa Clara, CA 95050 | |||
| USA | USA | |||
| EMail: yingzhen.qu@huawei.com | EMail: yingzhen.qu@futurewei.com | |||
| Jeffrey Zhang | Jeffrey Zhang | |||
| Juniper Networks | Juniper Networks | |||
| 10 Technology Park Drive | 10 Technology Park Drive | |||
| Westford, MA 01886 | Westford, MA 01886 | |||
| USA | USA | |||
| EMail: zzhang@juniper.net | EMail: zzhang@juniper.net | |||
| Ing-Wher Chen | Ing-Wher Chen | |||
| End of changes. 279 change blocks. | ||||
| 569 lines changed or deleted | 857 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/ | ||||