draft-ietf-ospf-yang-23.txt | draft-ietf-ospf-yang-24.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: January 30, 2020 Huawei | |||
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 | July 29, 2019 | |||
YANG Data Model for OSPF Protocol | YANG Data Model for OSPF Protocol | |||
draft-ietf-ospf-yang-23 | draft-ietf-ospf-yang-24 | |||
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. | (NDMA) as described in RFC 8342. | |||
Status of This Memo | Status of This Memo | |||
skipping to change at page 1, line 40 ¶ | skipping to change at page 1, line 40 ¶ | |||
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 January 30, 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 . . . . . . . . . . . . . . . . . . . 115 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 117 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 117 | |||
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 117 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 117 | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 118 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 117 | |||
7.1. Normative References . . . . . . . . . . . . . . . . . . 118 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 117 | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 123 | 7.2. Informative References . . . . . . . . . . . . . . . . . 123 | |||
Appendix A. Contributors' Addresses . . . . . . . . . . . . . . 125 | Appendix A. Contributors' Addresses . . . . . . . . . . . . . . 125 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 125 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 125 | |||
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]. YANG is proving relevant | |||
beyond its initial confines, as bindings to other interfaces (e.g., | beyond its initial confines, as bindings to other interfaces (e.g., | |||
skipping to change at page 7, line 16 ¶ | skipping to change at page 7, line 16 ¶ | |||
[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 11, line 16 ¶ | skipping to change at page 11, line 13 ¶ | |||
| +--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 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* | |||
skipping to change at page 15, line 29 ¶ | skipping to change at page 15, line 38 ¶ | |||
| | | +--:(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? uint32 | |||
| | +--ro wait-timer? uint32 | | | +--ro wait-timer? uint32 | |||
| | +--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 | |||
skipping to change at page 19, line 16 ¶ | skipping to change at page 19, line 23 ¶ | |||
. . | . . | |||
| +--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 35 ¶ | |||
+---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-07-29.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 (NDMA 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: <http://datatracker.ietf.org/group/lsr/> | |||
WG List: <mailto:lsr@ietf.org> | WG List: <mailto:lsr@ietf.org> | |||
Editor: Derek Yeung | Editor: Derek Yeung | |||
skipping to change at page 25, line 44 ¶ | skipping to change at page 25, line 46 ¶ | |||
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-07-29 { | |||
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."; | |||
} | } | |||
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 | "Use 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."; | "Use 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 | "Use 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"; | |||
skipping to change at page 31, line 6 ¶ | skipping to change at page 31, line 4 ¶ | |||
identity normal-area { | identity normal-area { | |||
base area-type; | base area-type; | |||
description "OSPF normal area."; | description "OSPF normal area."; | |||
} | } | |||
identity stub-nssa-area { | identity stub-nssa-area { | |||
base area-type; | base area-type; | |||
description "OSPF stub or NSSA area."; | description "OSPF stub or NSSA area."; | |||
} | } | |||
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 31 ¶ | skipping to change at page 35, line 27 ¶ | |||
} | } | |||
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 40, line 41 ¶ | |||
} | } | |||
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 41, line 15 ¶ | |||
} | } | |||
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 42, line 47 ¶ | skipping to change at page 43, line 4 ¶ | |||
} | } | |||
} | } | |||
grouping node-tag-tlv { | grouping node-tag-tlv { | |||
description "OSPF Node Admin Tag TLV grouping."; | description "OSPF Node Admin Tag TLV grouping."; | |||
list node-tag { | list node-tag { | |||
leaf tag { | leaf tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Node admin tag value."; | "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 { | leaf informational-flags { | |||
type bits { | type bits { | |||
bit graceful-restart-capability { | bit graceful-restart-capability { | |||
description | description | |||
"When set, the router is capable of restarting | "When set, the router is capable of restarting | |||
gracefully."; | gracefully."; | |||
reference "RFC 3623 - Graceful OSPF Restart | reference "RFC 3623: Graceful OSPF Restart | |||
RFC 5187 - OSPFv3 Graceful Restart"; | RFC 5187: OSPFv3 Graceful Restart"; | |||
} | } | |||
bit graceful-restart-helper { | bit graceful-restart-helper { | |||
description | description | |||
"When set, the router is capable of acting as | "When set, the router is capable of acting as | |||
a graceful restart helper."; | a graceful restart helper."; | |||
reference "RFC 3623 - Graceful OSPF Restart | reference "RFC 3623: Graceful OSPF Restart | |||
RFC 5187 - OSPFv3 Graceful Restart"; | RFC 5187: OSPFv3 Graceful Restart"; | |||
} | } | |||
bit stub-router { | bit stub-router { | |||
description | description | |||
"When set, the router is capable of acting as | "When set, the router is capable of acting as | |||
an OSPF Stub Router."; | an OSPF Stub Router."; | |||
reference "RFC 6987 - OSPF Stub Router Advertisement"; | reference "RFC 6987: OSPF Stub Router Advertisement"; | |||
} | } | |||
bit traffic-engineering { | bit traffic-engineering { | |||
description | description | |||
"When set, the router is capable of OSPF traffic | "When set, the router is capable of OSPF traffic | |||
engineering."; | engineering."; | |||
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"; | |||
} | } | |||
bit p2p-over-lan { | bit p2p-over-lan { | |||
description | description | |||
"When set, the router is capable of OSPF Point-to-Point | "When set, the router is capable of OSPF Point-to-Point | |||
over LAN."; | over LAN."; | |||
reference "RFC 5309 - Point-to-Point Operation over LAN | reference "RFC 5309: Point-to-Point Operation over LAN | |||
in Link State Routing Protocols"; | in Link State Routing Protocols"; | |||
} | } | |||
bit experimental-te { | bit experimental-te { | |||
description | description | |||
"When set, the router is capable of OSPF experimental | "When set, the router is capable of OSPF experimental | |||
traffic engineering."; | traffic engineering."; | |||
reference | reference | |||
"RFC 4973 - OSPF-xTE OSPF Experimental Traffic | "RFC 4973: OSPF-xTE OSPF Experimental Traffic | |||
Engineering"; | 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 | description | |||
"OSPF Router Informational Flag Definitions."; | "OSPF Router Informational Flag Definitions."; | |||
} | } | |||
list informational-capabilities { | list informational-capabilities { | |||
leaf informational-flag { | leaf informational-flag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Informational flag."; | "Informational flag."; | |||
skipping to change at page 44, line 39 ¶ | skipping to change at page 44, line 37 ¶ | |||
description | description | |||
"Functional flag."; | "Functional flag."; | |||
} | } | |||
description | description | |||
"List of functional capabilities."; | "List of functional capabilities."; | |||
} | } | |||
} | } | |||
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 { | ||||
description "Network to Router Metric TLV"; | ||||
reference | ||||
"RFC 8042 - OSPF Two-Part Metric"; | ||||
leaf mt-id { | ||||
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 { | grouping ospf-router-lsa-flags { | |||
leaf flags { | leaf flags { | |||
type bits { | type bits { | |||
bit V { | bit V { | |||
description | description | |||
"When set, the router is an endpoint of one or | "When set, the router is an endpoint of one or | |||
more virtual links."; | more virtual links."; | |||
} | } | |||
bit E { | bit E { | |||
description | description | |||
skipping to change at page 47, line 4 ¶ | skipping to change at page 46, line 35 ¶ | |||
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-flags; | |||
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."; | |||
} | } | |||
skipping to change at page 50, line 16 ¶ | skipping to change at page 49, line 47 ¶ | |||
} | } | |||
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 router-address-tlv { | container te-opaque { | |||
description | description "OSPFv2 Traffic Engineering (TE) opaque LSA."; | |||
"Router address TLV."; | reference "RFC 3630: Traffic Engineering (TE) | |||
leaf router-address { | Extensions to OSPFv2"; | |||
type inet:ipv4-address; | ||||
container router-address-tlv { | ||||
description | description | |||
"Router address."; | "Router address TLV."; | |||
leaf router-address { | ||||
type inet:ipv4-address; | ||||
description | ||||
"Router address."; | ||||
} | ||||
} | } | |||
} | ||||
container link-tlvs { | container link-tlvs { | |||
description "All link TLVs in the LSA."; | description "All link TLVs in the LSA."; | |||
list link-tlv { | list link-tlv { | |||
description "Link TLV."; | 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 { | ||||
type union { | ||||
type inet:ipv4-address; | ||||
type yang:dotted-quad; | ||||
} | } | |||
mandatory true; | leaf link-id { | |||
description "Link ID."; | type union { | |||
} | type inet:ipv4-address; | |||
container local-if-ipv4-addrs { | type yang:dotted-quad; | |||
description "All local interface IPv4 addresses."; | } | |||
leaf-list local-if-ipv4-addr { | mandatory true; | |||
type inet:ipv4-address; | description "Link ID."; | |||
description | ||||
"List of local interface IPv4 addresses."; | ||||
} | } | |||
} | container local-if-ipv4-addrs { | |||
container remote-if-ipv4-addrs { | description "All local interface IPv4 addresses."; | |||
description "All remote interface IPv4 addresses."; | leaf-list local-if-ipv4-addr { | |||
leaf-list remote-if-ipv4-addr { | type inet:ipv4-address; | |||
type inet:ipv4-address; | description | |||
description | "List of local interface IPv4 addresses."; | |||
"List of remote interface IPv4 addresses."; | } | |||
} | } | |||
} | container remote-if-ipv4-addrs { | |||
leaf te-metric { | description "All remote interface IPv4 addresses."; | |||
type uint32; | leaf-list remote-if-ipv4-addr { | |||
description "TE metric."; | type inet:ipv4-address; | |||
} | description | |||
leaf max-bandwidth { | "List of remote interface IPv4 addresses."; | |||
type rt-types:bandwidth-ieee-float32; | ||||
description "Maximum bandwidth."; | ||||
} | ||||
leaf max-reservable-bandwidth { | ||||
type rt-types:bandwidth-ieee-float32; | ||||
description "Maximum reservable bandwidth."; | ||||
} | ||||
container unreserved-bandwidths { | ||||
description "All unreserved bandwidths."; | ||||
list unreserved-bandwidth { | ||||
leaf priority { | ||||
type uint8 { | ||||
range "0 .. 7"; | ||||
} | ||||
description "Priority from 0 to 7."; | ||||
} | } | |||
leaf unreserved-bandwidth { | } | |||
type rt-types:bandwidth-ieee-float32; | leaf te-metric { | |||
description "Unreserved bandwidth."; | type uint32; | |||
description "TE metric."; | ||||
} | ||||
leaf max-bandwidth { | ||||
type rt-types:bandwidth-ieee-float32; | ||||
description "Maximum bandwidth."; | ||||
} | ||||
leaf max-reservable-bandwidth { | ||||
type rt-types:bandwidth-ieee-float32; | ||||
description "Maximum reservable bandwidth."; | ||||
} | ||||
container unreserved-bandwidths { | ||||
description "All unreserved bandwidths."; | ||||
list unreserved-bandwidth { | ||||
leaf priority { | ||||
type uint8 { | ||||
range "0 .. 7"; | ||||
} | ||||
description "Priority from 0 to 7."; | ||||
} | ||||
leaf unreserved-bandwidth { | ||||
type rt-types:bandwidth-ieee-float32; | ||||
description "Unreserved bandwidth."; | ||||
} | ||||
description | ||||
"List of unreserved bandwidths for different | ||||
priorities."; | ||||
} | } | |||
} | ||||
leaf admin-group { | ||||
type uint32; | ||||
description | description | |||
"List of unreserved bandwidths for different | "Administrative group/Resource Class/Color."; | |||
priorities."; | ||||
} | } | |||
uses unknown-tlvs; | ||||
} | } | |||
leaf admin-group { | ||||
type uint32; | ||||
description | ||||
"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 42 ¶ | skipping to change at page 53, line 30 ¶ | |||
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 { | leaf options { | |||
type bits { | type bits { | |||
skipping to change at page 56, line 21 ¶ | skipping to change at page 56, line 4 ¶ | |||
"When set, a Forwarding Address is included | "When set, a Forwarding Address is included | |||
in the LSA."; | in the LSA."; | |||
} | } | |||
bit T { | bit T { | |||
description | description | |||
"When set, an External Route Tag is included | "When set, an External Route Tag is included | |||
in the LSA."; | in the LSA."; | |||
} | } | |||
} | } | |||
description "Flags."; | description "Flags."; | |||
} | } | |||
leaf referenced-ls-type { | leaf referenced-ls-type { | |||
type identityref { | type identityref { | |||
base 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 59, line 32 ¶ | skipping to change at page 59, line 14 ¶ | |||
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."; | |||
} | } | |||
skipping to change at page 60, line 17 ¶ | skipping to change at page 60, line 4 ¶ | |||
} | } | |||
description "Link LSA."; | description "Link LSA."; | |||
} | } | |||
container intra-area-prefix { | container intra-area-prefix { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-intra-area-prefix-lsa')" { | + "'ospfv3-intra-area-prefix-lsa')" { | |||
description | description | |||
"Only applies to Intra-Area-Prefix LSAs."; | "Only applies to Intra-Area-Prefix LSAs."; | |||
} | } | |||
description "Intra-Area-Prefix LSA."; | description "Intra-Area-Prefix LSA."; | |||
leaf referenced-ls-type { | leaf referenced-ls-type { | |||
type identityref { | type identityref { | |||
base 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 yang:dotted-quad; | |||
skipping to change at page 61, line 38 ¶ | skipping to change at page 61, line 24 ¶ | |||
} | } | |||
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; | |||
skipping to change at page 70, line 36 ¶ | skipping to change at page 70, line 22 ¶ | |||
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 73, line 47 ¶ | |||
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."; | |||
} | } | |||
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; | |||
skipping to change at page 76, line 40 ¶ | skipping to change at page 76, line 17 ¶ | |||
} | } | |||
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 38 ¶ | skipping to change at page 77, line 15 ¶ | |||
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 79, line 24 ¶ | |||
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 17 ¶ | skipping to change at page 79, line 44 ¶ | |||
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 80, line 18 ¶ | |||
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 2 minutes | |||
for a legacy Packet Data Network (PDN) X.25 network."; | for a legacy Packet Data Network (PDN) X.25 network."; | |||
} | } | |||
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 82, line 17 ¶ | |||
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 82, line 34 ¶ | |||
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; | |||
skipping to change at page 84, line 50 ¶ | skipping to change at page 84, line 33 ¶ | |||
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 86, line 20 ¶ | |||
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."; | |||
} | } | |||
} | } | |||
grouping area-config { | grouping area-config { | |||
description | description | |||
"OSPF area configuration state."; | "OSPF area configuration state."; | |||
leaf area-type { | leaf area-type { | |||
type identityref { | type identityref { | |||
base area-type; | base area-type; | |||
skipping to change at page 88, line 26 ¶ | skipping to change at page 88, line 8 ¶ | |||
"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 26 ¶ | skipping to change at page 92, line 7 ¶ | |||
"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 93, line 24 ¶ | |||
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 46 ¶ | skipping to change at page 95, line 28 ¶ | |||
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 97, line 12 ¶ | |||
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; | |||
skipping to change at page 98, line 16 ¶ | skipping to change at page 97, line 46 ¶ | |||
grouping ospf-state { | grouping ospf-state { | |||
description | description | |||
"OSPF top operational state - currently empty."; | "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 { | grouping multi-topology-config { | |||
description | description | |||
"OSPF multi-topology configuration state."; | "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 { | grouping multi-topology-interface-state { | |||
description | description | |||
"OSPF multi-topology operational state."; | "OSPF multi-topology operational state."; | |||
} | } | |||
grouping ospfv3-interface-config { | grouping ospfv3-interface-config { | |||
description | description | |||
skipping to change at page 103, line 4 ¶ | skipping to change at page 102, line 25 ¶ | |||
} | } | |||
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-protocol')" { | |||
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"; | |||
skipping to change at page 105, line 32 ¶ | skipping to change at page 105, line 4 ¶ | |||
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-protocol')" { | |||
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."; | |||
skipping to change at page 106, line 12 ¶ | skipping to change at page 105, line 32 ¶ | |||
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-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 { | |||
skipping to change at page 107, line 17 ¶ | skipping to change at page 107, line 4 ¶ | |||
"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; | 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 107, line 37 ¶ | |||
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-protocol')" { | |||
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 109, line 34 ¶ | |||
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-protocol')"; | |||
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 122, line 15 ¶ | skipping to change at page 122, 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, | |||
End of changes. 168 change blocks. | ||||
315 lines changed or deleted | 310 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |