draft-ietf-ospf-yang-10.txt | draft-ietf-ospf-yang-11.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: September 4, 2018 Huawei | Expires: October 5, 2018 Huawei | |||
J. Zhang | J. Zhang | |||
Juniper Networks | Juniper Networks | |||
I. Chen | I. Chen | |||
Jabil | Jabil | |||
A. Lindem | A. Lindem | |||
Cisco Systems | Cisco Systems | |||
March 3, 2018 | April 3, 2018 | |||
Yang Data Model for OSPF Protocol | Yang Data Model for OSPF Protocol | |||
draft-ietf-ospf-yang-10 | draft-ietf-ospf-yang-11 | |||
Abstract | Abstract | |||
This document defines a YANG data model that can be used to configure | This document defines a YANG data model that can be used to configure | |||
and manage OSPF. | and manage OSPF. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at http://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 September 4, 2018. | This Internet-Draft will expire on October 5, 2018. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 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 | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
skipping to change at page 2, line 26 ¶ | skipping to change at page 2, line 26 ¶ | |||
2.3. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 5 | 2.3. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 5 | |||
2.4. Optional Features . . . . . . . . . . . . . . . . . . . . 5 | 2.4. Optional Features . . . . . . . . . . . . . . . . . . . . 5 | |||
2.5. OSPF Router Configuration/Operational State . . . . . . . 5 | 2.5. OSPF Router Configuration/Operational State . . . . . . . 5 | |||
2.6. OSPF Area Configuration/Operational State . . . . . . . . 8 | 2.6. OSPF Area Configuration/Operational State . . . . . . . . 8 | |||
2.7. OSPF Interface Configuration/Operational State . . . . . 13 | 2.7. OSPF Interface Configuration/Operational State . . . . . 13 | |||
2.8. OSPF notification . . . . . . . . . . . . . . . . . . . . 15 | 2.8. OSPF notification . . . . . . . . . . . . . . . . . . . . 15 | |||
2.9. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 19 | 2.9. OSPF RPC Operations . . . . . . . . . . . . . . . . . . . 19 | |||
3. OSPF Yang Module . . . . . . . . . . . . . . . . . . . . . . 19 | 3. OSPF Yang Module . . . . . . . . . . . . . . . . . . . . . . 19 | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 100 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 100 | |||
5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 101 | 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 101 | |||
6. References . . . . . . . . . . . . . . . . . . . . . . . . . 102 | 6. Normative References . . . . . . . . . . . . . . . . . . . . 101 | |||
6.1. Normative References . . . . . . . . . . . . . . . . . . 102 | Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 107 | |||
6.2. Informative References . . . . . . . . . . . . . . . . . 104 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 107 | |||
Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 105 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 105 | ||||
1. Overview | 1. Overview | |||
YANG [RFC6020] is a data definition language used to define the | YANG [RFC6020] is a data definition language used to define the | |||
contents of a conceptual data store that allows networked devices to | contents of a conceptual data store that allows networked devices to | |||
be managed using NETCONF [RFC6241]. YANG is proving relevant beyond | be managed using NETCONF [RFC6241]. YANG is proving relevant beyond | |||
its initial confines, as bindings to other interfaces (e.g., ReST) | its initial confines, as bindings to other interfaces (e.g., ReST) | |||
and encodings other than XML (e.g., JSON) are being defined. | and encodings other than XML (e.g., JSON) are being defined. | |||
Furthermore, YANG data models can be used as the basis for | Furthermore, YANG data models can be used as the basis for | |||
implementation of other interfaces, such as CLI and programmatic | implementation of other interfaces, such as CLI and programmatic | |||
APIs. | APIs. | |||
This document defines a YANG data model that can be used to configure | This document defines a YANG data model that can be used to configure | |||
and manage OSPF and it is an augmentation to the core routing data | and manage OSPF and it is an augmentation to the core routing data | |||
model. A core routing data model is defined in [RFC8022], and it | model. A core routing data model is defined in [RFC8349], and it | |||
provides the basis for the development of data models for routing | provides the basis for the development of data models for routing | |||
protocols. The interface data model is defined in [RFC7223] and is | protocols. The interface data model is defined in [RFC8343] and is | |||
used for referencing interfaces from the routing protocol. The key- | used for referencing interfaces from the routing protocol. The key- | |||
chain data model used for OSPF authentication is defined in [RFC8177] | chain data model used for OSPF authentication is defined in [RFC8177] | |||
and provides both a reference to configured key-chains and an | and provides both a reference to configured key-chains and an | |||
enumeration of cryptographic algorithms. | enumeration of cryptographic algorithms. | |||
Both OSPFv2 [RFC2328] and OSPFv3 [RFC5340] are supported. In | Both OSPFv2 [RFC2328] and OSPFv3 [RFC5340] are supported. In | |||
addition to the core OSPF protocol, features described in other OSPF | addition to the core OSPF protocol, features described in other OSPF | |||
RFCs are also supported. These includes demand circuit [RFC1793], | RFCs are also supported. These includes demand circuit [RFC1793], | |||
traffic engineering [RFC3630], multiple address family [RFC5838], | traffic engineering [RFC3630], multiple address family [RFC5838], | |||
graceful restart [RFC3623] [RFC5187], NSSA [RFC3101], and OSPF(v3) as | graceful restart [RFC3623] [RFC5187], NSSA [RFC3101], and OSPF(v3) as | |||
a PE-CE Protocol [RFC4577], [RFC6565]. These non-core features are | a PE-CE Protocol [RFC4577], [RFC6565]. These non-core features are | |||
optional in the OSPF data model. | optional in the OSPF data model. | |||
1.1. Requirements Language | 1.1. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
document are to be interpreted as described in [RFC2119]. | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
capitals, as shown here. | ||||
2. Design of Data Model | 2. Design of Data Model | |||
Although the basis of OSPF configuration elements like routers, | Although the basis of OSPF configuration elements like routers, | |||
areas, and interfaces remains the same, the detailed configuration | areas, and interfaces remains the same, the detailed configuration | |||
model varies among router vendors. Differences are observed in terms | model varies among router vendors. Differences are observed in terms | |||
of how the protocol engine is tied to the routing domain, how | of how the protocol engine is tied to the routing domain, how | |||
multiple protocol engines are be instantiated among others. | multiple protocol engines are be instantiated among others. | |||
The goal of this document is to define a data model that provides a | The goal of this document is to define a data model that provides a | |||
common user interface to the OSPFv2 and OSPFv3 protocols. There is | common user interface to the OSPFv2 and OSPFv3 protocols. There is | |||
very little information that is designated as "mandatory", providing | very little information that is designated as "mandatory", providing | |||
freedom for vendors to adapt this data model to their respective | freedom for vendors to adapt this data model to their respective | |||
product implementations. | product implementations. | |||
2.1. OSPF Operational State | 2.1. OSPF Operational State | |||
The OSPF operational state is included in the same tree as OSPF | The OSPF operational state is included in the same tree as OSPF | |||
configuration consistent with Network Management Datastore | configuration consistent with Network Management Datastore | |||
Architecture [I-D.ietf-netmod-revised-datastores]. Consequently, | Architecture [RFC8342]. Consequently, only the routing container in | |||
only the routing container in the ietf-routing model [RFC8022] is | the ietf-routing model [RFC8349] is augmented. The routing-state | |||
augmented. The routing-state container is not augmented. | container is not augmented. | |||
2.2. Overview | 2.2. Overview | |||
The OSPF YANG module defined in this document has all the common | The OSPF YANG module defined in this document has all the common | |||
building blocks for the OSPF protocol. | building blocks for the OSPF protocol. | |||
The OSPF YANG module augments the /routing/control-plane-protocols/ | The OSPF YANG module augments the /routing/control-plane-protocols/ | |||
control-plane-protocol path defined in the ietf-routing module. | control-plane-protocol path defined in the ietf-routing module. | |||
module: ietf-ospf | module: ietf-ospf | |||
skipping to change at page 19, line 48 ¶ | skipping to change at page 19, line 48 ¶ | |||
| + control-plane-protocol/name | | + control-plane-protocol/name | |||
| +---w interface? if:interface-ref | | +---w interface? if:interface-ref | |||
+---x clear-database | +---x clear-database | |||
+---w input | +---w input | |||
+---w routing-protocol-name | +---w routing-protocol-name | |||
-> /rt:routing/control-plane-protocols/ | -> /rt:routing/control-plane-protocols/ | |||
control-plane-protocol/name | control-plane-protocol/name | |||
3. OSPF Yang Module | 3. OSPF Yang Module | |||
<CODE BEGINS> file "ietf-ospf@2018-03-03.yang" | The following RFCs and drafts are not referenced in the document text | |||
but are referenced in the ietf-ospf.yang module: [RFC0905], | ||||
[RFC1765], [RFC4552], [RFC4576], [RFC4915], [RFC5082], [RFC5185], | ||||
[RFC5250], [RFC5286], [RFC5329], [RFC5443], [RFC5613], [RFC5714], | ||||
[RFC5880], [RFC5881], [RFC6021], [RFC6860], [RFC6987], [RFC7490], | ||||
[RFC7684], [RFC7770], [RFC7777], [RFC8291], [RFC8343], [RFC8349], | ||||
[I-D.ietf-bfd-yang], and [I-D.ietf-rtgwg-backoff-algo]. | ||||
<CODE BEGINS> file "ietf-ospf@2018-04-03.yang" | ||||
module ietf-ospf { | module ietf-ospf { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-ospf"; | namespace "urn:ietf:params:xml:ns:yang:ietf-ospf"; | |||
prefix ospf; | prefix ospf; | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix "inet"; | prefix "inet"; | |||
reference "RFC 6021 - Common YANG Data Types"; | reference "RFC 6021 - Common YANG Data Types"; | |||
} | } | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix "yang"; | prefix "yang"; | |||
reference "RFC 6021 - Common YANG Data Types"; | reference "RFC 6021 - Common YANG Data Types"; | |||
skipping to change at page 20, line 18 ¶ | skipping to change at page 20, line 28 ¶ | |||
reference "RFC 6021 - Common YANG Data Types"; | reference "RFC 6021 - Common YANG Data Types"; | |||
} | } | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix "yang"; | prefix "yang"; | |||
reference "RFC 6021 - Common YANG Data Types"; | reference "RFC 6021 - Common YANG Data Types"; | |||
} | } | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix "if"; | prefix "if"; | |||
reference "RFC XXXX - 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 8291 - Common YANG Data Types for the | reference "RFC 8291 - 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 8291 - Common YANG Data Types for the | reference "RFC 8291 - Common YANG Data Types for the | |||
Routing Area"; | Routing Area"; | |||
} | } | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix "rt"; | |||
reference "RFC XXXX - 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 XXXX - YANG Data Model for Bidirectional | reference "RFC XXXX - YANG Data Model for Bidirectional | |||
Forwarding Detection (BFD)"; | Forwarding Detection (BFD)"; | |||
} | } | |||
organization | organization | |||
"IETF OSPF - OSPF Working Group"; | "IETF OSPF - OSPF Working Group"; | |||
skipping to change at page 21, line 34 ¶ | skipping to change at page 21, line 44 ¶ | |||
description | description | |||
"This YANG module defines the generic configuration and | "This YANG module defines the generic configuration and | |||
operational state for the OSPF protocol common to all | operational state for the OSPF protocol common to all | |||
vendor implementations. It is intended that the module | vendor implementations. It is intended that the module | |||
will be extended by vendors to define vendor-specific | will be extended by vendors to define vendor-specific | |||
OSPF configuration parameters and policies, | OSPF configuration parameters and policies, | |||
for example route maps or route policies. | for example route maps or route policies. | |||
This YANG model conforms to the Network Management | This YANG model conforms to the Network Management | |||
Datastore Architecture (NDMA) as described in RFC XXXX. | Datastore Architecture (NDMA) as described in RFC 8242. | |||
Copyright (c) 2017 IETF Trust and the persons identified as | Copyright (c) 2018 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; | This version of this YANG module is part of RFC XXXX; | |||
see the RFC itself for full legal notices."; | see the RFC itself for full legal notices."; | |||
reference "RFC XXXX"; | revision 2018-04-03 { | |||
revision 2018-03-03 { | ||||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for OSPF."; | "RFC XXXX: A YANG Data Model for OSPF."; | |||
} | } | |||
feature multi-topology { | feature multi-topology { | |||
description | description | |||
"Support Multiple-Topolgy Routing (MTR)."; | "Support Multiple-Topolgy Routing (MTR)."; | |||
reference "RFC 4915 - Multi-Topology Routing"; | reference "RFC 4915 - Multi-Topology Routing"; | |||
skipping to change at page 23, line 4 ¶ | skipping to change at page 23, line 11 ¶ | |||
} | } | |||
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 ttl-security { | feature ttl-security { | |||
description | description | |||
"OSPF TTL security check."; | "OSPF Time to Live (TTL) security check support."; | |||
reference "RFC 5082 - The Generalized TTL Security | reference "RFC 5082 - The Generalized TTL Security | |||
Mechanism (GTSM)"; | Mechanism (GTSM)"; | |||
} | } | |||
feature nsr { | feature nsr { | |||
description | description | |||
"Non-Stop-Routing (NSR)."; | "Non-Stop-Routing (NSR) support."; | |||
} | } | |||
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 3630 - Graceful OSPF Restart | reference "RFC 3630 - Graceful OSPF Restart | |||
RFC 5187 - OSPFv3 Graceful Restart"; | RFC 5187 - OSPFv3 Graceful Restart"; | |||
} | } | |||
skipping to change at page 23, line 41 ¶ | skipping to change at page 23, line 48 ¶ | |||
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 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 | |||
"TE Router-ID."; | "TE Router-ID."; | |||
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 { | |||
skipping to change at page 24, line 22 ¶ | skipping to change at page 24, line 28 ¶ | |||
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 fast-reroute { | feature fast-reroute { | |||
description | description | |||
"Support of IP Fast Reroute (IP-FRR)."; | "Support for IP Fast Reroute (IP-FRR)."; | |||
reference "RFC 5714 - IP Fast Rereoute Framework"; | reference "RFC 5714 - IP Fast Rereoute Framework"; | |||
} | } | |||
feature node-flag { | feature node-flag { | |||
description | description | |||
"Support of node flag."; | "Support for node-flag for OSPF prefixes."; | |||
reference "RFC 7684 - OSPFv2 Prefix/Link Advertisement"; | reference "RFC 7684 - OSPFv2 Prefix/Link Advertisement"; | |||
} | } | |||
feature node-tag { | feature node-tag { | |||
description | description | |||
"Support of node tag."; | "Support for node admin tag for OSPF routing instances."; | |||
reference "RFC 7777 - Advertising Node Administrative | reference "RFC 7777 - Advertising Node Administrative | |||
Tags in OSPF"; | Tags in OSPF"; | |||
} | } | |||
feature lfa { | feature lfa { | |||
description | description | |||
"Support of Loop Free Alternates (LFAs)."; | "Support for Loop-Free Alternates (LFAs)."; | |||
reference "RFC 5286 - Basic Specification for IP Fast | 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 of 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 of 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 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 of IETF SPF delay algorithm."; | "Support for IETF SPF delay algorithm."; | |||
reference "RFC XXXX - SPF Back-off algorithm for link | reference "RFC XXXX - SPF Back-off algorithm for link | |||
state IGPs"; | state IGPs"; | |||
} | } | |||
feature bfd { | feature bfd { | |||
description | description | |||
"Support of BFD."; | "Support for BFD detection of OSPF neighbor reachability."; | |||
reference "RFC 5880 - Bidirectional Forwarding Detection | reference "RFC 5880 - Bidirectional Forwarding Detection (BFD) | |||
(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)"; | |||
} | } | |||
identity ospf-protocol { | identity ospf-protocol { | |||
base "rt:routing-protocol"; | base "rt:routing-protocol"; | |||
description "Any version the OSPF protocol"; | description "Any OSPF protocol version"; | |||
} | } | |||
identity ospfv2 { | identity ospfv2 { | |||
base "ospf-protocol"; | base "ospf-protocol"; | |||
description "OSPFv2 protocol"; | description "OSPFv2 protocol"; | |||
} | } | |||
identity ospfv3 { | identity ospfv3 { | |||
base "ospf-protocol"; | base "ospf-protocol"; | |||
description "OSPFv3 protocol"; | description "OSPFv3 protocol"; | |||
} | } | |||
identity operation-mode { | identity operation-mode { | |||
description | description | |||
"OSPF operation mode."; | "OSPF operation mode."; | |||
} | } | |||
skipping to change at page 26, line 8 ¶ | skipping to change at page 26, line 14 ¶ | |||
identity ospfv3 { | identity ospfv3 { | |||
base "ospf-protocol"; | base "ospf-protocol"; | |||
description "OSPFv3 protocol"; | description "OSPFv3 protocol"; | |||
} | } | |||
identity operation-mode { | identity operation-mode { | |||
description | description | |||
"OSPF operation mode."; | "OSPF operation mode."; | |||
} | } | |||
identity ships-in-the-night { | ||||
base operation-mode; | ||||
description | ||||
"Ships-in-the-night operation mode in which | ||||
each OSPF instance carries only one address family"; | ||||
} | ||||
identity area-type { | identity area-type { | |||
description "Base identity for OSPF area type."; | description "Base identity for OSPF area type."; | |||
} | } | |||
identity normal-area { | identity normal-area { | |||
base area-type; | base area-type; | |||
description "OSPF normal area."; | description "OSPF normal area."; | |||
} | } | |||
identity stub-nssa-area { | identity stub-nssa-area { | |||
skipping to change at page 26, line 36 ¶ | skipping to change at page 26, line 35 ¶ | |||
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 NSSA area."; | 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 OSPFv3 and OSPFv3 LSA types"; | "Base identity for OSPFv3 and OSPFv3 | |||
Link State Advertisement (LSA) types"; | ||||
} | } | |||
identity ospfv2-lsa-type { | identity ospfv2-lsa-type { | |||
base ospf-lsa-type; | base ospf-lsa-type; | |||
description | description | |||
"OSPFv2 LSA types"; | "OSPFv2 LSA types"; | |||
} | } | |||
identity ospfv2-router-lsa { | identity ospfv2-router-lsa { | |||
base ospfv2-lsa-type; | base ospfv2-lsa-type; | |||
description | description | |||
skipping to change at page 34, line 14 ¶ | skipping to change at page 34, line 14 ¶ | |||
} | } | |||
enum topology-changed { | enum topology-changed { | |||
value "5"; | value "5"; | |||
description | description | |||
"Restart aborted due to topology change."; | "Restart aborted due to topology change."; | |||
} | } | |||
} | } | |||
description | description | |||
"Describes the outcome of the last attempt at a | "Describes the outcome of the last attempt at a | |||
graceful restart, either by itself or acting | graceful restart, either by itself or acting | |||
as a helper."; | as a helper."; | |||
} | } | |||
typedef packet-type { | typedef packet-type { | |||
type enumeration { | type enumeration { | |||
enum hello { | enum hello { | |||
value "1"; | value "1"; | |||
description | description | |||
"OSPF hello packet."; | "OSPF hello packet."; | |||
} | } | |||
enum database-descripton { | enum database-descripton { | |||
skipping to change at page 36, line 40 ¶ | skipping to change at page 36, line 40 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
grouping node-tag-tlv { | grouping node-tag-tlv { | |||
description "OSPF Node Admin Tag TLV grouping."; | description "OSPF Node Admin Tag TLV grouping."; | |||
list node-tag { | list node-tag { | |||
leaf tag { | leaf tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Node tag value."; | "Node admin tag value."; | |||
} | } | |||
description | description | |||
"List of tags."; | "List of tags."; | |||
} | } | |||
} | } | |||
grouping ospfv2-router-link { | grouping ospfv2-router-link { | |||
description "OSPFv2 router link."; | description "OSPFv2 router link."; | |||
leaf link-id { | leaf link-id { | |||
type union { | type union { | |||
skipping to change at page 37, line 27 ¶ | skipping to change at page 37, line 27 ¶ | |||
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')" { | + "'ospf:ospfv2-router-lsa')" { | |||
description | description | |||
"Only applies to Router LSAs."; | "Only applies to Router-LSAs."; | |||
} | } | |||
description | description | |||
"Router LSA."; | "Router LSA."; | |||
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."; | |||
} | } | |||
skipping to change at page 38, line 11 ¶ | skipping to change at page 38, line 11 ¶ | |||
description | description | |||
"When set, the router is an NSSA border router | "When set, the router is an NSSA border router | |||
that is unconditionally translating NSSA LSAs | that is unconditionally translating NSSA LSAs | |||
into AS-external LSAs."; | into AS-external LSAs."; | |||
} | } | |||
} | } | |||
description "Flags."; | description "Flags."; | |||
} | } | |||
leaf num-of-links { | leaf num-of-links { | |||
type uint16; | type uint16; | |||
description "Number of links."; | description "Number of links in Router LSA."; | |||
} | } | |||
container links { | container links { | |||
description "All router Links."; | description "All router Links."; | |||
list link { | list link { | |||
description "Router LSA link."; | description "Router LSA link."; | |||
uses ospfv2-router-link; | uses ospfv2-router-link; | |||
container topologies { | container topologies { | |||
description "All topologies for the link."; | description "All topologies for the link."; | |||
list topology { | list topology { | |||
description | description | |||
skipping to change at page 41, line 11 ¶ | skipping to change at page 41, line 11 ¶ | |||
description | description | |||
"Only applies to Opaque LSAs."; | "Only applies to Opaque LSAs."; | |||
} | } | |||
description | description | |||
"Opaque LSA."; | "Opaque LSA."; | |||
uses unknown-tlvs; | uses unknown-tlvs; | |||
container node-tag-tlvs { | container node-tag-tlvs { | |||
description | description | |||
"All node tag tlvs."; | "All node tag TLVs."; | |||
list node-tag-tlv { | list node-tag-tlv { | |||
description | description | |||
"Node tag tlv."; | "Node tag TLV."; | |||
uses node-tag-tlv; | uses node-tag-tlv; | |||
} | } | |||
} | } | |||
container router-address-tlv { | container router-address-tlv { | |||
description | description | |||
"Router address TLV."; | "Router address TLV."; | |||
leaf router-address { | leaf router-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
skipping to change at page 43, line 44 ¶ | skipping to change at page 43, line 44 ¶ | |||
type bits { | type bits { | |||
bit A { | bit A { | |||
description | description | |||
"Attach flag."; | "Attach flag."; | |||
} | } | |||
bit N { | bit N { | |||
description | description | |||
"Node flag."; | "Node flag."; | |||
} | } | |||
} | } | |||
description "Flags."; | description "Prefix Flags."; | |||
} | } | |||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description "Address prefix."; | description "Address prefix."; | |||
} | } | |||
uses unknown-tlvs; | uses unknown-tlvs; | |||
} | } | |||
} | } | |||
skipping to change at page 45, line 11 ¶ | skipping to change at page 45, line 11 ¶ | |||
description "OSPFv3 LSA options."; | description "OSPFv3 LSA options."; | |||
} | } | |||
} | } | |||
grouping ospfv3-lsa-prefix { | grouping ospfv3-lsa-prefix { | |||
description | description | |||
"OSPFv3 LSA prefix."; | "OSPFv3 LSA prefix."; | |||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"Prefix."; | "LSA Prefix."; | |||
} | } | |||
leaf prefix-options { | leaf prefix-options { | |||
type bits { | type bits { | |||
bit NU { | bit NU { | |||
description | description | |||
"When set, the prefix should be excluded | "When set, the prefix should be excluded | |||
from IPv6 unicast calculations."; | from IPv6 unicast calculations."; | |||
} | } | |||
bit LA { | bit LA { | |||
description | description | |||
skipping to change at page 47, line 46 ¶ | skipping to change at page 47, line 46 ¶ | |||
} | } | |||
uses ospfv3-lsa-options; | uses ospfv3-lsa-options; | |||
container links { | container links { | |||
description "All router link."; | description "All router link."; | |||
list link { | list link { | |||
description "Router LSA link."; | description "Router LSA link."; | |||
leaf interface-id { | leaf interface-id { | |||
type uint32; | type uint32; | |||
description "Interface ID."; | description "Interface ID for link."; | |||
} | } | |||
leaf neighbor-interface-id { | leaf neighbor-interface-id { | |||
type uint32; | type uint32; | |||
description "Neighbor Interface ID."; | description "Neighbor's Interface ID for link."; | |||
} | } | |||
leaf neighbor-router-id { | leaf neighbor-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description "Neighbor Router ID."; | description "Neighbor's Router ID for link."; | |||
} | } | |||
leaf type { | leaf type { | |||
type uint8; | type uint8; | |||
description "Link type."; | description "Link type: 1 - Point-to-Point Link | |||
2 - Transit Network Link | ||||
3 - Stub Network Link Link | ||||
4 - Virtual Link"; | ||||
} | } | |||
leaf metric { | leaf metric { | |||
type uint16; | type uint16; | |||
description "Metric."; | description "Link Metric."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container network { | container network { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-network-lsa')" { | + "'ospfv3-network-lsa')" { | |||
description | description | |||
"Only applies to Network LSA."; | "Only applies to Network LSAs."; | |||
} | } | |||
description "Network LSA."; | description "Network LSA."; | |||
uses ospfv3-lsa-options; | uses ospfv3-lsa-options; | |||
container attached-routers { | container attached-routers { | |||
description "All attached routers."; | description "All attached routers."; | |||
leaf-list attached-router { | leaf-list attached-router { | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
description | description | |||
skipping to change at page 48, line 46 ¶ | skipping to change at page 48, line 49 ¶ | |||
} | } | |||
} | } | |||
container inter-area-prefix { | container inter-area-prefix { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-inter-area-prefix-lsa')" { | + "'ospfv3-inter-area-prefix-lsa')" { | |||
description | description | |||
"Only applies to Inter-Area-Prefix LSAs."; | "Only applies to Inter-Area-Prefix LSAs."; | |||
} | } | |||
leaf metric { | leaf metric { | |||
type uint24; | type uint24; | |||
description "Metric"; | description "Inter-Area Prefix Metric"; | |||
} | } | |||
uses ospfv3-lsa-prefix; | uses ospfv3-lsa-prefix; | |||
description "Inter-Area-Prefix LSA."; | description "Prefix LSA."; | |||
} | } | |||
container inter-area-router { | container inter-area-router { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-inter-area-router-lsa')" { | + "'ospfv3-inter-area-router-lsa')" { | |||
description | description | |||
"Only applies to Inter-Area-Router LSAs."; | "Only applies to Inter-Area-Router LSAs."; | |||
} | } | |||
uses ospfv3-lsa-options; | uses ospfv3-lsa-options; | |||
leaf metric { | leaf metric { | |||
type uint24; | type uint24; | |||
description "Metric."; | description "AS Boundary Router (ASBR) Metric."; | |||
} | } | |||
leaf destination-router-id { | leaf destination-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"The Router ID of the router being described by the LSA."; | "The Router ID of the ASBR described by the LSA."; | |||
} | } | |||
description "Inter-Area-Router LSA."; | description "Inter-Area-Router LSA."; | |||
} | } | |||
container as-external { | container as-external { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-as-external-lsa')" { | + "'ospfv3-as-external-lsa')" { | |||
description | description | |||
"Only applies to AS-external LSAs."; | "Only applies to AS-external LSAs."; | |||
} | } | |||
skipping to change at page 50, line 32 ¶ | skipping to change at page 50, line 35 ¶ | |||
"List of prefixes associated with the link."; | "List of prefixes associated with the link."; | |||
uses ospfv3-lsa-prefix; | uses ospfv3-lsa-prefix; | |||
} | } | |||
} | } | |||
description "Link LSA."; | description "Link LSA."; | |||
} | } | |||
container intra-area-prefix { | container intra-area-prefix { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-intra-area-prefix-lsa')" { | + "'ospfv3-intra-area-prefix-lsa')" { | |||
description | description | |||
"Only applies to Intra-Area-Prefix LSA."; | "Only applies to Intra-Area-Prefix LSAs."; | |||
} | } | |||
description "Intra-Area-Prefix LSA."; | description "Intra-Area-Prefix LSA."; | |||
leaf referenced-ls-type { | leaf referenced-ls-type { | |||
type uint16; | type uint16; | |||
description "Referenced Link State type."; | description "Referenced Link State type."; | |||
} | } | |||
leaf referenced-link-state-id { | leaf referenced-link-state-id { | |||
type uint32; | type uint32; | |||
description | description | |||
skipping to change at page 51, line 35 ¶ | skipping to change at page 51, line 39 ¶ | |||
container node-tag-tlvs { | container node-tag-tlvs { | |||
description | description | |||
"All node tag tlvs."; | "All node tag tlvs."; | |||
list node-tag-tlv { | list node-tag-tlv { | |||
description | description | |||
"Node tag tlv."; | "Node tag tlv."; | |||
uses node-tag-tlv; | uses node-tag-tlv; | |||
} | } | |||
} | } | |||
description "Router Information LSA."; | description "Router Information LSA."; | |||
reference "RFC 7770 -Extensions for Advertising Router | ||||
Capabilities"; | ||||
} | } | |||
} | } | |||
grouping lsa-header { | grouping lsa-header { | |||
description | description | |||
"Common LSA for OSPFv2 and OSPFv3"; | "Common LSA for OSPFv2 and OSPFv3"; | |||
leaf age { | leaf age { | |||
type uint16; | type uint16; | |||
mandatory true; | mandatory true; | |||
description "LSA age."; | description "LSA age."; | |||
} | } | |||
leaf type { | leaf type { | |||
type identityref { | type identityref { | |||
base ospf-lsa-type; | base ospf-lsa-type; | |||
} | } | |||
mandatory true; | mandatory true; | |||
description "LSA type."; | description "LSA type"; | |||
} | } | |||
leaf adv-router { | leaf adv-router { | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
mandatory true; | mandatory true; | |||
description "LSA advertising router."; | description "LSA advertising router."; | |||
} | } | |||
leaf seq-num { | leaf seq-num { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "LSA sequence number."; | description "LSA sequence number."; | |||
} | } | |||
leaf checksum { | leaf checksum { | |||
type fletcher-checksum16-type; | type fletcher-checksum16-type; | |||
mandatory true; | mandatory true; | |||
description "LSA checksum."; | description "LSA checksum."; | |||
} | } | |||
leaf length { | leaf length { | |||
type uint16; | type uint16; | |||
mandatory true; | mandatory true; | |||
description "LSA length."; | description "LSA length including the header."; | |||
} | } | |||
} | } | |||
grouping ospfv2-lsa { | grouping ospfv2-lsa { | |||
description | description | |||
"OSPFv2 LSA."; | "OSPFv2 LSA - LSAs are uniquely identified by | |||
the <LSA Type, Link-State ID, Advertising Router> | ||||
tuple with the sequence number differentiating | ||||
LSA instances."; | ||||
container header { | container header { | |||
must "(derived-from-or-self(type, " | must "(derived-from-or-self(type, " | |||
+ "'ospfv2-opaque-lsa-type') and " | + "'ospfv2-opaque-lsa-type') and " | |||
+ "opaque-id and opaque-type) or " | + "opaque-id and opaque-type) or " | |||
+ "(not(derived-from-or-self(type, " | + "(not(derived-from-or-self(type, " | |||
+ "'ospfv2-opaque-lsa-type')) " | + "'ospfv2-opaque-lsa-type')) " | |||
+ "and not(opaque-id) and not(opaque-type))" { | + "and not(opaque-id) and not(opaque-type))" { | |||
description | description | |||
"Opaque type and ID only apply to Opaque LSAs."; | "Opaque type and ID only apply to Opaque LSAs."; | |||
} | } | |||
skipping to change at page 53, line 38 ¶ | skipping to change at page 53, line 45 ¶ | |||
"When a type 3, 5 or 7 LSA is sent from a PE to a CE, | "When a type 3, 5 or 7 LSA is sent from a PE to a CE, | |||
the DN bit must be set. See RFC 4576."; | the DN bit must be set. See RFC 4576."; | |||
} | } | |||
} | } | |||
mandatory true; | mandatory true; | |||
description "LSA options."; | description "LSA options."; | |||
} | } | |||
leaf lsa-id { | leaf lsa-id { | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
mandatory true; | mandatory true; | |||
description "LSA ID."; | description "Link-State ID."; | |||
} | } | |||
leaf opaque-type { | leaf opaque-type { | |||
type uint8; | type uint8; | |||
description "Opaque type."; | description "Opaque type."; | |||
} | } | |||
leaf opaque-id { | leaf opaque-id { | |||
type uint24; | type uint24; | |||
description "Opaque ID."; | description "Opaque ID."; | |||
} | } | |||
uses lsa-header; | uses lsa-header; | |||
} | } | |||
container body { | container body { | |||
description | description | |||
"Decoded OSPFv2 LSA body data."; | "Decoded OSPFv2 LSA body data."; | |||
skipping to change at page 55, line 25 ¶ | skipping to change at page 55, line 31 ¶ | |||
grouping lsa-key { | grouping lsa-key { | |||
description | description | |||
"OSPF LSA key."; | "OSPF LSA key."; | |||
leaf lsa-id { | leaf lsa-id { | |||
type union { | type union { | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
type uint32; | type uint32; | |||
} | } | |||
description | description | |||
"LSA ID."; | "Link-State ID."; | |||
} | } | |||
leaf adv-router { | leaf adv-router { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Advertising router."; | "Advertising router."; | |||
} | } | |||
} | } | |||
grouping instance-stat { | grouping instance-stat { | |||
description "Per-instance statistics"; | description "Per-instance statistics"; | |||
leaf originate-new-lsa-count { | leaf originate-new-lsa-count { | |||
type yang:counter32; | type yang:counter32; | |||
description "The number of new LSAs originated."; | description "The number of new LSAs originated."; | |||
} | } | |||
leaf rx-new-lsas-count { | leaf rx-new-lsas-count { | |||
type yang:counter32; | type yang:counter32; | |||
description "The number of LSAs received."; | description "The number of LSAs received."; | |||
} | } | |||
leaf as-scope-lsa-count { | leaf as-scope-lsa-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description "The number of AS Scope LSAs."; | description "The number of AS-scope LSAs."; | |||
} | } | |||
leaf as-scope-lsa-chksum-sum { | leaf as-scope-lsa-chksum-sum { | |||
type uint32; | type uint32; | |||
description | description | |||
"The sum of the LSA checksums for AS Scope LSAs."; | "The sum of the LSA checksums for AS-scope LSAs."; | |||
} | } | |||
container database { | container database { | |||
description "Container for per AS-scope LSA statistics."; | description "Container for per AS-scope LSA statistics."; | |||
list as-scope-lsa-type { | list as-scope-lsa-type { | |||
description "List of AS-scope LSA statistics"; | description "List of AS-scope LSA statistics"; | |||
leaf lsa-type { | leaf lsa-type { | |||
type uint16; | type uint16; | |||
description "AS-scope LSA type."; | description "AS-Scope LSA type."; | |||
} | } | |||
leaf lsa-count { | leaf lsa-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description "The number of LSAs of the LSA type."; | description "The number of LSAs of the LSA type."; | |||
} | } | |||
leaf lsa-cksum-sum { | leaf lsa-cksum-sum { | |||
type int32; | type int32; | |||
description | description | |||
"The sum of the LSA checksums of the LSA type."; | "The sum of the LSA checksums of the LSA type."; | |||
} | } | |||
skipping to change at page 56, line 43 ¶ | skipping to change at page 56, line 48 ¶ | |||
} | } | |||
leaf abr-count { | leaf abr-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description | description | |||
"The total number of Area Border Routers (ABRs) | "The total number of Area Border Routers (ABRs) | |||
reachable within this area."; | reachable within this area."; | |||
} | } | |||
leaf asbr-count { | leaf asbr-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description | description | |||
"The total number of AS Border Routers (ASBRs)."; | "The total number of AS Boundary Routers (ASBRs)."; | |||
} | } | |||
leaf ar-nssa-translator-event-count { | leaf ar-nssa-translator-event-count { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of NSSA translator-state changes."; | "The number of NSSA translator-state changes."; | |||
} | } | |||
leaf area-scope-lsa-count { | leaf area-scope-lsa-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description | description | |||
"The number of area scope LSAs in the area."; | "The number of area-scope LSAs in the area."; | |||
} | } | |||
leaf area-scope-lsa-cksum-sum { | leaf area-scope-lsa-cksum-sum { | |||
type int32; | type int32; | |||
description "The sum of the area scope LSAs checksums."; | description "The sum of the area-scope LSAs checksums."; | |||
} | } | |||
container database { | container database { | |||
description "Container for area scope LSA type statistics."; | description "Container for area-scope LSA type statistics."; | |||
list area-scope-lsa-type { | list area-scope-lsa-type { | |||
description "List of area scope LSA statistics"; | description "List of area-scope LSA statistics"; | |||
leaf lsa-type { | leaf lsa-type { | |||
type uint16; | type uint16; | |||
description "Area scope LSA type."; | description "Area-scope LSA type."; | |||
} | } | |||
leaf lsa-count { | leaf lsa-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description "The number of LSAs of the LSA type."; | description "The number of LSAs of the LSA type."; | |||
} | } | |||
leaf lsa-cksum-sum { | leaf lsa-cksum-sum { | |||
type int32; | type int32; | |||
description | description | |||
"The sum of the LSA checksums of the LSA type."; | "The sum of the LSA checksums of the LSA type."; | |||
} | } | |||
skipping to change at page 57, line 41 ¶ | skipping to change at page 57, line 47 ¶ | |||
grouping interface-stat { | grouping interface-stat { | |||
description "Per-interface statistics"; | description "Per-interface statistics"; | |||
leaf if-event-count { | leaf if-event-count { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of times this interface has changed its | "The number of times this interface has changed its | |||
state or an error has occurred."; | state or an error has occurred."; | |||
} | } | |||
leaf link-scope-lsa-count { | leaf link-scope-lsa-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description "The number of link scope LSAs."; | description "The number of link-scope LSAs."; | |||
} | } | |||
leaf link-scope-lsa-cksum-sum { | leaf link-scope-lsa-cksum-sum { | |||
type uint32; | type uint32; | |||
description "The sum of link scope LSA checksums."; | description "The sum of link-scope LSA checksums."; | |||
} | } | |||
container database { | container database { | |||
description "Container for link scope LSA type statistics."; | description "Container for link-scope LSA type statistics."; | |||
list link-scope-lsa-type { | list link-scope-lsa-type { | |||
description "List of link scope LSA statistics"; | description "List of link-scope LSA statistics"; | |||
leaf lsa-type { | leaf lsa-type { | |||
type uint16; | type uint16; | |||
description "Link scope LSA type."; | description "Link scope LSA type."; | |||
} | } | |||
leaf lsa-count { | leaf lsa-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description "The number of LSAs of the LSA type."; | description "The number of LSAs of the LSA type."; | |||
} | } | |||
leaf lsa-cksum-sum { | leaf lsa-cksum-sum { | |||
type int32; | type int32; | |||
skipping to change at page 58, line 37 ¶ | skipping to change at page 58, line 44 ¶ | |||
} | } | |||
leaf nbr-retrans-qlen { | leaf nbr-retrans-qlen { | |||
type yang:gauge32; | type yang:gauge32; | |||
description | description | |||
"The current length of the retransmission queue."; | "The current length of the retransmission queue."; | |||
} | } | |||
} | } | |||
grouping instance-fast-reroute-config { | grouping instance-fast-reroute-config { | |||
description | description | |||
"This group defines global configuration of IP-FRR."; | "This group defines global configuration of IP | |||
Fast ReRoute (FRR)."; | ||||
container fast-reroute { | container fast-reroute { | |||
if-feature fast-reroute; | if-feature fast-reroute; | |||
description | description | |||
"This container may be augmented with global | "This container may be augmented with global | |||
parameters for IP-FRR."; | parameters for IP-FRR."; | |||
container lfa { | container lfa { | |||
if-feature lfa; | if-feature lfa; | |||
description | description | |||
"This container may be augmented with | "This container may be augmented with | |||
global parameters for LFA. Container creation | global parameters for Loop-Free Alternatives (LFA). | |||
has no effect on LFA activation."; | Container creation has no effect on LFA activation."; | |||
} | } | |||
} | } | |||
} | } | |||
grouping interface-fast-reroute-config { | grouping interface-fast-reroute-config { | |||
description | description | |||
"This group defines interface configuration of IP-FRR."; | "This group defines interface configuration of IP-FRR."; | |||
container fast-reroute { | container fast-reroute { | |||
if-feature fast-reroute; | if-feature fast-reroute; | |||
container lfa { | container lfa { | |||
if-feature lfa; | if-feature lfa; | |||
leaf candidate-enable { | leaf candidate-enable { | |||
type boolean; | type boolean; | |||
default true; | default true; | |||
skipping to change at page 59, line 39 ¶ | skipping to change at page 59, line 47 ¶ | |||
description | description | |||
"Activates Remote LFA (R-LFA)."; | "Activates Remote LFA (R-LFA)."; | |||
} | } | |||
description | description | |||
"Remote LFA configuration."; | "Remote LFA configuration."; | |||
} | } | |||
description | description | |||
"LFA configuration."; | "LFA configuration."; | |||
} | } | |||
description | description | |||
"IP Fast-reroute configuration."; | "Interface IP Fast-reroute configuration."; | |||
} | } | |||
} | } | |||
grouping interface-physical-link-config { | grouping interface-physical-link-config { | |||
description | description | |||
"Interface cost configuration that only applies to | "Interface cost configuration that only applies to | |||
physical interfaces and sham links."; | physical interfaces and sham links."; | |||
leaf cost { | leaf cost { | |||
type uint16 { | type uint16 { | |||
range "1..65535"; | range "1..65535"; | |||
skipping to change at page 60, line 44 ¶ | skipping to change at page 61, line 4 ¶ | |||
} | } | |||
leaf dead-interval { | leaf dead-interval { | |||
type uint32 { | type uint32 { | |||
range "1..2147483647"; | range "1..2147483647"; | |||
} | } | |||
units seconds; | units seconds; | |||
must "../dead-interval > ../hello-interval" { | must "../dead-interval > ../hello-interval" { | |||
error-message "The dead interval must be " | error-message "The dead interval must be " | |||
+ "larger than the hello interval"; | + "larger than the hello interval"; | |||
description | description | |||
"The value MUST be greater than 'hello-internval'."; | "The value MUST be greater than 'hello-internval'."; | |||
} | } | |||
description | description | |||
"Interval after which a neighbor is | "Interval after which a neighbor is declared down | |||
declared down (seconds)."; | (seconds) if hello packets are not received."; | |||
} | } | |||
leaf retransmit-interval { | leaf retransmit-interval { | |||
type uint16 { | type uint16 { | |||
range "1..3600"; | range "1..3600"; | |||
} | } | |||
units seconds; | units seconds; | |||
description | description | |||
"Interval between retransmitting unacknowledged Link | "Interval between retransmitting unacknowledged Link | |||
State Advertisements (LSAs) (seconds)."; | State Advertisements (LSAs) (seconds)."; | |||
} | } | |||
skipping to change at page 61, line 21 ¶ | skipping to change at page 61, line 30 ¶ | |||
State Advertisements (LSAs) (seconds)."; | State Advertisements (LSAs) (seconds)."; | |||
} | } | |||
leaf transmit-delay { | leaf transmit-delay { | |||
type uint16 { | type uint16 { | |||
range "1..3600"; | range "1..3600"; | |||
} | } | |||
units seconds; | units seconds; | |||
description | description | |||
"Estimated time needed to transmit Link State Update | "Estimated time needed to transmit Link State Update | |||
packets on the interface (seconds)."; | (LSU) packets on the interface (seconds)."; | |||
} | } | |||
leaf lls { | leaf lls { | |||
if-feature lls; | if-feature lls; | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable link-local signaling (LLS) support."; | "Enable/Disable link-local signaling (LLS) support."; | |||
} | } | |||
container ttl-security { | container ttl-security { | |||
if-feature ttl-security; | if-feature ttl-security; | |||
description "TTL security check."; | description "Time to Live (TTL) security check."; | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable TTL security check."; | "Enable/Disable TTL security check."; | |||
} | } | |||
leaf hops { | leaf hops { | |||
type uint8 { | type uint8 { | |||
range "1..254"; | range "1..254"; | |||
} | } | |||
description | description | |||
"Maximum number of hops that an OSPF packet may | "Maximum number of hops that an OSPF packet may | |||
have traversed before reception."; | have traversed before reception."; | |||
} | } | |||
} | } | |||
leaf enable { | leaf enable { | |||
if-feature admin-control; | if-feature admin-control; | |||
type boolean; | type boolean; | |||
default true; | default true; | |||
description | description | |||
"Enable/disable protocol on the interface."; | "Enable/disable OSPF protocol on the interface."; | |||
} | } | |||
container authentication { | container authentication { | |||
description "Authentication configuration."; | description "Authentication configuration."; | |||
choice auth-type-selection { | choice auth-type-selection { | |||
description | description | |||
"Options for expressing authentication setting."; | "Options for OSPFv3 authentication configuration."; | |||
case auth-ipsec { | case auth-ipsec { | |||
when "derived-from-or-self(../../../../../../rt:type, " | when "derived-from-or-self(../../../../../../rt:type, " | |||
+ "'ospf:ospfv3')" { | + "'ospf:ospfv3')" { | |||
description "Applied to OSPFv3 only."; | description "Applied to OSPFv3 only."; | |||
} | } | |||
if-feature ospfv3-authentication-ipsec; | if-feature ospfv3-authentication-ipsec; | |||
leaf sa { | leaf sa { | |||
type string; | type string; | |||
description | description | |||
"Security Association name."; | "Security Association (SA) name."; | |||
} | } | |||
} | } | |||
case auth-trailer-key-chain { | case auth-trailer-key-chain { | |||
leaf key-chain { | leaf key-chain { | |||
type key-chain:key-chain-ref; | type key-chain:key-chain-ref; | |||
description | description | |||
"key-chain name."; | "key-chain name."; | |||
} | } | |||
} | } | |||
case auth-trailer-key { | case auth-trailer-key { | |||
skipping to change at page 62, line 44 ¶ | skipping to change at page 63, line 4 ¶ | |||
type string; | type string; | |||
description | description | |||
"Key string in ASCII format."; | "Key string in ASCII format."; | |||
} | } | |||
leaf crypto-algorithm { | leaf crypto-algorithm { | |||
type identityref { | type identityref { | |||
base key-chain:crypto-algorithm; | base key-chain:crypto-algorithm; | |||
} | } | |||
description | description | |||
"Cryptographic algorithm associated with key."; | "Cryptographic algorithm associated with key."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} // interface-common-config | } | |||
grouping interface-config { | grouping interface-config { | |||
description "Configuration for real interfaces."; | description "Configuration for real interfaces."; | |||
leaf interface-type { | leaf interface-type { | |||
type enumeration { | type enumeration { | |||
enum "broadcast" { | enum "broadcast" { | |||
description | description | |||
"Specify OSPF broadcast multi-access network."; | "Specify OSPF broadcast multi-access network."; | |||
} | } | |||
enum "non-broadcast" { | enum "non-broadcast" { | |||
description | description | |||
"Specify OSPF Non-Broadcast Multi-Access | "Specify OSPF Non-Broadcast Multi-Access | |||
(NBMA) network."; | (NBMA) network."; | |||
skipping to change at page 64, line 32 ¶ | skipping to change at page 64, line 41 ¶ | |||
description "Statically configured neighbors."; | description "Statically configured neighbors."; | |||
list neighbor { | list neighbor { | |||
key "identifier"; | key "identifier"; | |||
description | description | |||
"Specify a static OSPF neighbor."; | "Specify a static OSPF neighbor."; | |||
leaf identifier { | leaf identifier { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Neighbor router ID, IPv4 address, or IPv6 address."; | "Neighbor Router ID, IPv4 address, or IPv6 address."; | |||
} | } | |||
leaf cost { | leaf cost { | |||
type uint16 { | type uint16 { | |||
range "1..65535"; | range "1..65535"; | |||
} | } | |||
description "Neighbor cost."; | description "Neighbor cost."; | |||
} | } | |||
leaf poll-interval { | leaf poll-interval { | |||
type uint16 { | type uint16 { | |||
range "1..65535"; | range "1..65535"; | |||
} | } | |||
units seconds; | units seconds; | |||
description "Neighbor poll interval (seconds)."; | description | |||
"Neighbor poll interval (seconds) for sending OSPF | ||||
hello packets to discover the neighbor on NBMA | ||||
networks."; | ||||
} | } | |||
leaf priority { | leaf priority { | |||
type uint8 { | type uint8 { | |||
range "1..255"; | range "1..255"; | |||
} | } | |||
description "Neighbor priority for DR election."; | description "Neighbor priority for DR election."; | |||
} | } | |||
} | } | |||
} | } | |||
leaf node-flag { | leaf node-flag { | |||
if-feature node-flag; | if-feature node-flag; | |||
type boolean; | type boolean; | |||
default false; | default false; | |||
description | description | |||
"Set prefix as a node representative prefix."; | "Set prefix as identifying the advertising router."; | |||
reference "RFC 7684 - OSPFv2 Prefix/Link Attribute | ||||
Advertisement"; | ||||
} | } | |||
container bfd { | container bfd { | |||
if-feature bfd; | if-feature bfd; | |||
description "BFD 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 "draft-ietf-bfd-yang-xx.txt: | |||
YANG Data Model for Bidirectional Forwarding | YANG Data Model for Bidirectional Forwarding | |||
Detection (BFD)"; | Detection (BFD)"; | |||
} | } | |||
uses interface-fast-reroute-config; | uses interface-fast-reroute-config; | |||
uses interface-common-config; | uses interface-common-config; | |||
uses interface-physical-link-config; | uses interface-physical-link-config; | |||
} // grouping interface-config | } | |||
grouping neighbor-state { | grouping neighbor-state { | |||
description | description | |||
"OSPF neighbor operational state."; | "OSPF neighbor operational state."; | |||
leaf address { | leaf address { | |||
type inet:ip-address; | type inet:ip-address; | |||
config false; | config false; | |||
description | description | |||
"Neighbor address."; | "Neighbor address."; | |||
} | } | |||
leaf dr-router-id { | leaf dr-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
config false; | config false; | |||
description "Neighbor's Designated Router (DR) router ID."; | description "Neighbor's Designated Router (DR) Router ID."; | |||
} | } | |||
leaf dr-ip-addr { | leaf dr-ip-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
config false; | config false; | |||
description "Neighbor's Designated Router (DR) IP address."; | description "Neighbor's Designated Router (DR) IP address."; | |||
} | } | |||
leaf bdr-router-id { | leaf bdr-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
config false; | config false; | |||
description | description | |||
"Neighbor's Backup Designated Router (BDR) router ID."; | "Neighbor's Backup Designated Router (BDR) Router ID."; | |||
} | } | |||
leaf bdr-ip-addr { | leaf bdr-ip-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
config false; | config false; | |||
description | description | |||
"Neighbor's Backup Designated Router (BDR) IP Address."; | "Neighbor's Backup Designated Router (BDR) IP Address."; | |||
} | } | |||
leaf state { | leaf state { | |||
type nbr-state-type; | type nbr-state-type; | |||
skipping to change at page 66, line 32 ¶ | skipping to change at page 66, line 47 ¶ | |||
} | } | |||
leaf dead-timer { | leaf dead-timer { | |||
type uint32; | type uint32; | |||
units "seconds"; | units "seconds"; | |||
config false; | config false; | |||
description "This timer tracks the remaining time before | description "This timer tracks the remaining time before | |||
the neighbor is declared dead."; | the neighbor is declared dead."; | |||
} | } | |||
container statistics { | container statistics { | |||
config false; | config false; | |||
description "Per neighbor statistics"; | description "Per-neighbor statistics"; | |||
uses neighbor-stat; | uses neighbor-stat; | |||
} | } | |||
} | } | |||
grouping interface-common-state { | grouping interface-common-state { | |||
description | description | |||
"OSPF interface common operational state."; | "OSPF interface common operational state."; | |||
reference "RFC2328 Section 9"; | reference "RFC2328 Section 9"; | |||
leaf state { | leaf state { | |||
type if-state-type; | type if-state-type; | |||
config false; | config false; | |||
description "Interface state."; | description "Interface state."; | |||
} | } | |||
skipping to change at page 67, line 5 ¶ | skipping to change at page 67, line 20 ¶ | |||
type if-state-type; | type if-state-type; | |||
config false; | config false; | |||
description "Interface state."; | description "Interface state."; | |||
} | } | |||
leaf hello-timer { | leaf hello-timer { | |||
type uint32; | type uint32; | |||
units "seconds"; | units "seconds"; | |||
config false; | config false; | |||
description "This timer tracks the remaining time before | description "This timer tracks the remaining time before | |||
the next hello packet is sent."; | the next hello packet is sent on the | |||
interface."; | ||||
} | } | |||
leaf wait-timer { | leaf wait-timer { | |||
type uint32; | type uint32; | |||
units "seconds"; | units "seconds"; | |||
config false; | config false; | |||
description "This timer tracks the remaining time before | description "This timer tracks the remaining time before | |||
the interface exits the Waiting state."; | the interface exits the Waiting state."; | |||
} | } | |||
leaf dr-router-id { | leaf dr-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
config false; | config false; | |||
description "Designated Router (DR) router ID."; | description "Designated Router (DR) Router ID."; | |||
} | } | |||
leaf dr-ip-addr { | leaf dr-ip-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
config false; | config false; | |||
description "Designated Router (DR) IP address."; | description "Designated Router (DR) IP address."; | |||
} | } | |||
leaf bdr-router-id { | leaf bdr-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
config false; | config false; | |||
description "Backup Designated Router (BDR) router ID."; | description "Backup Designated Router (BDR) Router ID."; | |||
} | } | |||
leaf bdr-ip-addr { | leaf bdr-ip-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
config false; | config false; | |||
description "Backup Designated Router (BDR) IP Address."; | description "Backup Designated Router (BDR) IP Address."; | |||
} | } | |||
container statistics { | container statistics { | |||
config false; | config false; | |||
description "Per interface statistics"; | description "Per-interface statistics"; | |||
uses interface-stat; | uses interface-stat; | |||
} | } | |||
container neighbors { | container neighbors { | |||
config false; | config false; | |||
description "All neighbors for the interface."; | description "All neighbors for the interface."; | |||
list neighbor { | list neighbor { | |||
key "neighbor-router-id"; | key "neighbor-router-id"; | |||
description | description | |||
"List of OSPF neighbors."; | "List of interface OSPF neighbors."; | |||
leaf neighbor-router-id { | leaf neighbor-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"Neighbor router ID."; | "Neighbor Router ID."; | |||
} | } | |||
uses neighbor-state; | uses neighbor-state; | |||
} // list of OSPF neighbors | } | |||
} | } | |||
container database { | container database { | |||
config false; | config false; | |||
description "Link scope LSA database."; | description "Link-scope LSA database."; | |||
list link-scope-lsa-type { | list link-scope-lsa-type { | |||
key "lsa-type"; | key "lsa-type"; | |||
description | description | |||
"List OSPF link scope LSA databases."; | "List OSPF link-scope LSA databases."; | |||
leaf lsa-type { | leaf lsa-type { | |||
type uint16; | type uint16; | |||
description "OSPF link scope LSA type."; | description "OSPF link-scope LSA type."; | |||
} | } | |||
container link-scope-lsas { | container link-scope-lsas { | |||
description | description | |||
"All link scope LSAs of this LSA type."; | "All link-scope LSAs of this LSA type."; | |||
list link-scope-lsa { | list link-scope-lsa { | |||
key "lsa-id adv-router"; | key "lsa-id adv-router"; | |||
description "List of OSPF link scope LSAs"; | description "List of OSPF link-scope LSAs"; | |||
uses lsa-key; | uses lsa-key; | |||
uses lsa { | uses lsa { | |||
refine "version/ospfv2/ospfv2" { | refine "version/ospfv2/ospfv2" { | |||
must "derived-from-or-self( " | must "derived-from-or-self( " | |||
+ "../../../../../../../../../../" | + "../../../../../../../../../../" | |||
+ "rt:type, 'ospf:ospfv2')" { | + "rt:type, 'ospf: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, 'ospf:ospfv3')" { | |||
description "OSPFv3 LSA."; | description "OSPFv3 LSA."; | |||
} | } | |||
} | } | |||
skipping to change at page 68, line 49 ¶ | skipping to change at page 69, line 18 ¶ | |||
refine "version/ospfv3/ospfv3" { | refine "version/ospfv3/ospfv3" { | |||
must "derived-from-or-self( " | must "derived-from-or-self( " | |||
+ "../../../../../../../../../../" | + "../../../../../../../../../../" | |||
+ "rt:type, 'ospf:ospfv3')" { | + "rt:type, 'ospf:ospfv3')" { | |||
description "OSPFv3 LSA."; | description "OSPFv3 LSA."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} // list link-scope-lsas | } | |||
} | } | |||
} // interface-common-state | } | |||
grouping interface-state { | grouping interface-state { | |||
description | description | |||
"OSPF interface operational state."; | "OSPF interface operational state."; | |||
reference "RFC2328 Section 9"; | reference "RFC2328 Section 9"; | |||
uses interface-common-state; | uses interface-common-state; | |||
} | } | |||
grouping virtual-link-config { | grouping virtual-link-config { | |||
description | description | |||
skipping to change at page 69, line 45 ¶ | skipping to change at page 70, line 14 ¶ | |||
description | description | |||
"OSPF sham link configuration state."; | "OSPF sham link configuration state."; | |||
uses interface-common-config; | uses interface-common-config; | |||
uses interface-physical-link-config; | uses interface-physical-link-config; | |||
} | } | |||
grouping sham-link-state { | grouping sham-link-state { | |||
description | description | |||
"OSPF sham link operational state."; | "OSPF sham link operational state."; | |||
/* All container/leaf should be config false. */ | ||||
uses interface-common-state; | uses interface-common-state; | |||
} | } | |||
grouping af-area-config { | grouping af-area-config { | |||
description | description | |||
"OSPF address-family specific area config state."; | "OSPF address-family specific area config state."; | |||
container ranges { | container ranges { | |||
description "Container for summary ranges"; | description "Container for summary ranges"; | |||
list range { | list range { | |||
key "prefix"; | key "prefix"; | |||
description | description | |||
"Summarize routes matching address/mask | "Summarize routes matching address/mask - | |||
(Area Border Routers (ABRs) only)"; | Applicable to Area Border Routers (ABRs) only."; | |||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"IPv4 or IPv6 prefix"; | "IPv4 or IPv6 prefix"; | |||
} | } | |||
leaf advertise { | leaf advertise { | |||
type boolean; | type boolean; | |||
description | description | |||
"Advertise or hide."; | "Advertise or hide."; | |||
} | } | |||
skipping to change at page 71, line 29 ¶ | skipping to change at page 71, line 45 ¶ | |||
leaf area-type { | leaf area-type { | |||
type identityref { | type identityref { | |||
base area-type; | base area-type; | |||
} | } | |||
default normal-area; | default normal-area; | |||
description | description | |||
"Area type."; | "Area type."; | |||
} | } | |||
uses area-common-config; | uses area-common-config; | |||
uses af-area-config; | ||||
uses af-area-config { | ||||
when "derived-from-or-self(../../operation-mode, " | ||||
+ "'ospf:ships-in-the-night')" { | ||||
description | ||||
"Ships in the night configuration."; | ||||
} | ||||
} | ||||
} | } | |||
grouping area-state { | grouping area-state { | |||
description | description | |||
"OSPF area operational state."; | "OSPF area operational state."; | |||
container statistics { | container statistics { | |||
config false; | config false; | |||
description "Per area statistics"; | description "Per-area statistics"; | |||
uses area-stat; | uses area-stat; | |||
} | } | |||
container database { | container database { | |||
config false; | config false; | |||
description "Area scope LSA database."; | description "Area-scope LSA database."; | |||
list area-scope-lsa-type { | list area-scope-lsa-type { | |||
key "lsa-type"; | key "lsa-type"; | |||
description "List OSPF area scope LSA databases."; | description "List OSPF area-scope LSA databases."; | |||
leaf lsa-type { | leaf lsa-type { | |||
type uint16; | type uint16; | |||
description "OSPF area scope LSA type."; | description "OSPF area-scope LSA type."; | |||
} | } | |||
container area-scope-lsas { | container area-scope-lsas { | |||
description | description | |||
"All area scope LSAs of an area scope | "All area-scope LSAs of an area-scope | |||
LSA type."; | LSA type."; | |||
list area-scope-lsa { | list area-scope-lsa { | |||
key "lsa-id adv-router"; | key "lsa-id adv-router"; | |||
description "List of OSPF area scope LSAs"; | description "List of OSPF area-scope LSAs"; | |||
uses lsa-key; | uses lsa-key; | |||
uses lsa { | uses lsa { | |||
refine "version/ospfv2/ospfv2" { | refine "version/ospfv2/ospfv2" { | |||
must "derived-from-or-self( " | must "derived-from-or-self( " | |||
+ "../../../../../../../../" | + "../../../../../../../../" | |||
+ "rt:type, 'ospf:ospfv2')" { | + "rt:type, 'ospf: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, 'ospf:ospfv3')" { | |||
description "OSPFv3 LSA."; | description "OSPFv3 LSA."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} // list area-scope-lsas | } | |||
} | } | |||
} | } | |||
grouping local-rib { | grouping local-rib { | |||
description "Local-rib grouping."; | description "Local-rib - RIB for Routes computed by the local | |||
OSPF routing instance."; | ||||
container local-rib { | container local-rib { | |||
config false; | config false; | |||
description "Local-rib."; | description "Local-rib."; | |||
list route { | list route { | |||
key "prefix"; | key "prefix"; | |||
description "Routes"; | description "Routes"; | |||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description "Destination prefix."; | description "Destination prefix."; | |||
} | } | |||
container next-hops { | container next-hops { | |||
description "All next hops for the route."; | description "Next hops for the route."; | |||
list next-hop { | list next-hop { | |||
key "next-hop"; | key "next-hop"; | |||
description "List of next hop for the route"; | description "List of next hops for the route"; | |||
leaf outgoing-interface { | leaf outgoing-interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Name of the outgoing interface."; | "Name of the outgoing interface."; | |||
} | } | |||
leaf next-hop { | leaf next-hop { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "Nexthop address."; | description "Nexthop address."; | |||
} | } | |||
} | } | |||
skipping to change at page 74, line 40 ¶ | skipping to change at page 74, line 51 ¶ | |||
} | } | |||
enum "short-wait" { | enum "short-wait" { | |||
description "SHORT_WAIT state"; | description "SHORT_WAIT state"; | |||
} | } | |||
enum "long-wait" { | enum "long-wait" { | |||
description "LONG_WAIT state"; | description "LONG_WAIT state"; | |||
} | } | |||
} | } | |||
config false; | config false; | |||
description | description | |||
"Current state of the algorithm."; | "Current SPF backoff algorithm state."; | |||
} | } | |||
leaf remaining-time-to-learn { | leaf remaining-time-to-learn { | |||
type uint16; | type uint16; | |||
units "seconds"; | units "seconds"; | |||
config false; | config false; | |||
description | description | |||
"Remaining time until time-to-learn timer fires."; | "Remaining time until time-to-learn timer fires."; | |||
} | } | |||
leaf remaining-hold-down { | leaf remaining-hold-down { | |||
type uint16; | type uint16; | |||
units "seconds"; | units "seconds"; | |||
config false; | config false; | |||
description | description | |||
"Remaining time until hold-down timer fires."; | "Remaining time until hold-down timer fires."; | |||
} | } | |||
leaf last-event-received { | leaf last-event-received { | |||
type yang:timestamp; | type yang:timestamp; | |||
config false; | config false; | |||
description | description | |||
"Time of last IGP event received"; | "Time of last SPF triggering event."; | |||
} | } | |||
leaf next-spf-time { | leaf next-spf-time { | |||
type yang:timestamp; | type yang:timestamp; | |||
config false; | config false; | |||
description | description | |||
"Time when next SPF has been scheduled."; | "Time when next SPF has been scheduled."; | |||
} | } | |||
leaf last-spf-time { | leaf last-spf-time { | |||
type yang:timestamp; | type yang:timestamp; | |||
config false; | config false; | |||
description | description | |||
"Time of last SPF computation."; | "Time of last SPF computation."; | |||
} | } | |||
description | description | |||
"Grouping for IETF SPF delay operational states."; | "Grouping for IETF SPF backoff operational states."; | |||
} | } | |||
grouping node-tag-config { | grouping node-tag-config { | |||
description | description | |||
"OSPF node tag config state."; | "OSPF node tag config state."; | |||
container node-tags { | container node-tags { | |||
if-feature node-tag; | if-feature node-tag; | |||
list node-tag { | list node-tag { | |||
key tag; | key tag; | |||
leaf tag { | leaf tag { | |||
skipping to change at page 75, line 41 ¶ | skipping to change at page 76, line 4 ¶ | |||
description | description | |||
"OSPF node tag config state."; | "OSPF node tag config state."; | |||
container node-tags { | container node-tags { | |||
if-feature node-tag; | if-feature node-tag; | |||
list node-tag { | list node-tag { | |||
key tag; | key tag; | |||
leaf tag { | leaf tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Node tag value."; | "Node tag value."; | |||
} | } | |||
description | description | |||
"List of tags."; | "List of tags."; | |||
} | } | |||
description | description | |||
"Container for node tags."; | "Container for node admin tags."; | |||
} | } | |||
} | } | |||
grouping instance-config { | grouping instance-config { | |||
description | description | |||
"OSPF instance config state."; | "OSPF instance config state."; | |||
leaf explicit-router-id { | leaf explicit-router-id { | |||
if-feature explicit-router-id; | if-feature explicit-router-id; | |||
type rt-types:router-id; | type rt-types:router-id; | |||
skipping to change at page 77, line 4 ¶ | skipping to change at page 77, line 15 ¶ | |||
"Preference for inter-area routes."; | "Preference for inter-area routes."; | |||
} | } | |||
} | } | |||
case coarse { | case coarse { | |||
leaf internal { | leaf internal { | |||
type uint8; | type uint8; | |||
description | description | |||
"Preference for both intra-area and | "Preference for both intra-area and | |||
inter-area routes."; | inter-area routes."; | |||
} | } | |||
} | } | |||
} | } | |||
leaf external { | leaf external { | |||
type uint8; | type uint8; | |||
description | description | |||
"Preference for external routes."; | "Preference for AS external routes."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container nsr { | container nsr { | |||
if-feature nsr; | if-feature nsr; | |||
description | description | |||
"Non-Stop Routing (NSR) config state."; | "Non-Stop Routing (NSR) config state."; | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable NSR."; | "Enable/Disable NSR."; | |||
} | } | |||
} | } | |||
container graceful-restart { | container graceful-restart { | |||
if-feature graceful-restart; | if-feature graceful-restart; | |||
description | description | |||
"Graceful restart config state."; | "Graceful restart config state."; | |||
reference "RFC3623 - OSPF Graceful Restart"; | reference "RFC 3623 - OSPF Graceful Restart | |||
RFC 5178 - OSPFv3 Graceful Restart"; | ||||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable graceful restart as defined in RFC 3623 | "Enable/Disable graceful restart as defined in RFC 3623 | |||
for OSPFv2 and RFC 5187 for OSPFv3."; | for OSPFv2 and RFC 5187 for OSPFv3."; | |||
} | } | |||
leaf helper-enable { | leaf helper-enable { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable graceful restart helper support for restarting | "Enable graceful restart helper support for restarting | |||
routers (RFC 3623 Section 3)."; | routers (RFC 3623 Section 3)."; | |||
} | } | |||
leaf restart-interval { | leaf restart-interval { | |||
type uint16 { | type uint16 { | |||
range "1..1800"; // Range is defined in RFC 3623. | range "1..1800"; | |||
} | } | |||
units seconds; | units seconds; | |||
default "120"; // Default is defined in RFC 3623. | default "120"; | |||
description | description | |||
"Interval to attempt graceful restart prior | "Interval to attempt graceful restart prior | |||
to failing (RFC 3623 Section B.1) (seconds)"; | to failing (RFC 3623 Section B.1) (seconds)"; | |||
} | } | |||
leaf helper-strict-lsa-checking { | leaf helper-strict-lsa-checking { | |||
type boolean; | type boolean; | |||
description | description | |||
"Terminate graceful restart when an LSA topology change | "Terminate graceful restart when an LSA topology change | |||
is detected (RFC 3623 Section B.2)."; | is detected (RFC 3623 Section B.2)."; | |||
} | } | |||
} | } | |||
leaf enable { | leaf enable { | |||
skipping to change at page 79, line 11 ¶ | skipping to change at page 79, line 23 ¶ | |||
type uint16 { | type uint16 { | |||
range "1..32"; | range "1..32"; | |||
} | } | |||
description | description | |||
"Maximum number of Equal-Cost Multi-Path (ECMP) paths."; | "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; | |||
} | } | |||
container ietf-spf-delay { | container ietf-spf-delay { | |||
if-feature ietf-spf-delay; | if-feature ietf-spf-delay; | |||
uses ietf-spf-delay-config; | uses ietf-spf-delay-config; | |||
description | description | |||
"IETF spf delay algorithm configuration."; | "IETF SPF delay algorithm configuration."; | |||
} | } | |||
description "SPF calculation control."; | description "SPF calculation control."; | |||
} | } | |||
container database-control { | container database-control { | |||
leaf max-lsa { | leaf max-lsa { | |||
if-feature max-lsa; | if-feature max-lsa; | |||
type uint32 { | type uint32 { | |||
range "1..4294967294"; | range "1..4294967294"; | |||
} | } | |||
skipping to change at page 80, line 9 ¶ | skipping to change at page 80, line 21 ¶ | |||
description | description | |||
"OSPF MPLS config state."; | "OSPF MPLS config state."; | |||
container te-rid { | container te-rid { | |||
if-feature te-rid; | if-feature te-rid; | |||
description | description | |||
"Stable OSPF Router IP Address used for Traffic | "Stable OSPF Router IP Address used for Traffic | |||
Engineering (TE)"; | Engineering (TE)"; | |||
leaf ipv4-router-id { | leaf ipv4-router-id { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Explicitly configure the TE IPv4 router ID."; | "Explicitly configure the TE IPv4 Router ID."; | |||
} | } | |||
leaf ipv6-router-id { | leaf ipv6-router-id { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"Explicitly configure the TE IPv6 router ID."; | "Explicitly configure the TE IPv6 Router ID."; | |||
} | } | |||
} | } | |||
container ldp { | container ldp { | |||
description | description | |||
"OSPF MPLS LDP config state."; | "OSPF MPLS LDP config state."; | |||
leaf igp-sync { | leaf igp-sync { | |||
if-feature ldp-igp-sync; | if-feature ldp-igp-sync; | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable LDP IGP synchronization."; | "Enable LDP IGP synchronization."; | |||
skipping to change at page 80, line 48 ¶ | skipping to change at page 81, line 12 ¶ | |||
config false; | config false; | |||
description | description | |||
"Defined in RFC 2328. A 32-bit number | "Defined in RFC 2328. A 32-bit number | |||
that uniquely identifies the router."; | that uniquely identifies the router."; | |||
} | } | |||
uses local-rib; | uses local-rib; | |||
container statistics { | container statistics { | |||
config false; | config false; | |||
description "Per instance statistics"; | description "Per-instance statistics"; | |||
uses instance-stat; | uses instance-stat; | |||
} | } | |||
container ietf-spf-delay { | container ietf-spf-delay { | |||
if-feature ietf-spf-delay; | if-feature ietf-spf-delay; | |||
config false; | config false; | |||
uses ietf-spf-delay-config; | ||||
uses ietf-spf-delay-state; | uses ietf-spf-delay-state; | |||
description | description | |||
"IETF SPF delay operational states."; | "IETF SPF delay state."; | |||
} | } | |||
container database { | container database { | |||
config false; | config false; | |||
description "AS scope LSA database."; | description "AS-scope LSA database."; | |||
list as-scope-lsa-type { | list as-scope-lsa-type { | |||
key "lsa-type"; | key "lsa-type"; | |||
description "List OSPF AS scope LSA databases."; | description "List OSPF AS-scope LSA databases."; | |||
leaf lsa-type { | leaf lsa-type { | |||
type uint16; | type uint16; | |||
description "OSPF AS scope LSA type."; | description "OSPF AS scope LSA type."; | |||
} | } | |||
container as-scope-lsas { | container as-scope-lsas { | |||
description "All AS scope of LSA of this LSA type."; | description "All AS-scope of LSA of this LSA type."; | |||
list as-scope-lsa { | list as-scope-lsa { | |||
key "lsa-id adv-router"; | key "lsa-id adv-router"; | |||
description "List of OSPF area scope LSAs"; | description "List of OSPF AS-scope LSAs"; | |||
uses lsa-key; | uses lsa-key; | |||
uses lsa { | uses lsa { | |||
refine "version/ospfv2/ospfv2" { | refine "version/ospfv2/ospfv2" { | |||
must "derived-from-or-self( " | must "derived-from-or-self( " | |||
+ "../../../../../../" | + "../../../../../../" | |||
+ "rt:type, 'ospf:ospfv2')" { | + "rt:type, 'ospf:ospfv2')" { | |||
description "OSPFv2 LSA."; | description "OSPFv2 LSA."; | |||
} | } | |||
} | } | |||
refine "version/ospfv3/ospfv3" { | refine "version/ospfv3/ospfv3" { | |||
skipping to change at page 81, line 41 ¶ | skipping to change at page 82, line 4 ¶ | |||
must "derived-from-or-self( " | must "derived-from-or-self( " | |||
+ "../../../../../../" | + "../../../../../../" | |||
+ "rt:type, 'ospf:ospfv2')" { | + "rt:type, 'ospf: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, 'ospf:ospfv3')" { | |||
description "OSPFv3 LSA."; | description "OSPFv3 LSA."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} // list as-scope-lsas | } | |||
} | } | |||
uses spf-log; | uses spf-log; | |||
uses lsa-log; | uses lsa-log; | |||
} | } | |||
grouping ospf-config { | grouping ospf-config { | |||
description | description | |||
"OSPF top configuration state."; | "OSPF top configuration state - currently empty."; | |||
leaf operation-mode { | ||||
type identityref { | ||||
base operation-mode; | ||||
} | ||||
default ospf:ships-in-the-night; | ||||
description | ||||
"OSPF operation mode."; | ||||
} | ||||
} | } | |||
grouping ospf-state { | grouping ospf-state { | |||
/* All leaf/container must be config false. */ | ||||
description | description | |||
"OSPF top operational state."; | "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(" | |||
+ "../../../../../areas/area[area-id=current()/../area-id]/" | + "../../../../../areas/area[area-id=current()/../area-id]/" | |||
+ "area-type, 'stub-nssa-area')" { | + "area-type, 'stub-nssa-area')" { | |||
description | description | |||
skipping to change at page 83, line 13 ¶ | skipping to change at page 83, line 15 ¶ | |||
"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 af-area-config; | ||||
uses af-area-config { | ||||
when "derived-from-or-self(../../../../operation-mode, " | ||||
+ "'ospf:ships-in-the-night')" { | ||||
description | ||||
"Ships in the night configuration."; | ||||
} | ||||
} | ||||
} | } | |||
grouping multi-topology-area-state { | grouping multi-topology-area-state { | |||
/* All leaf/container must be config false. */ | ||||
description | description | |||
"OSPF multi-topology area operational state."; | "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 { | |||
/* All leaf/container must be config false. */ | ||||
description | description | |||
"OSPF multi-topology operational state."; | "OSPF multi-topology operational state."; | |||
uses local-rib; | uses local-rib; | |||
} | } | |||
grouping multi-topology-interface-config { | grouping multi-topology-interface-config { | |||
description | description | |||
"OSPF multi-topology configuration state."; | "OSPF multi-topology configuration state."; | |||
skipping to change at page 84, line 4 ¶ | skipping to change at page 83, line 45 ¶ | |||
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 uint32; | |||
description | description | |||
"Interface cost for this topology."; | "Interface cost for this topology."; | |||
} | } | |||
} | } | |||
grouping multi-topology-interface-state { | grouping multi-topology-interface-state { | |||
/* All leaf/container must be config false. */ | ||||
description | description | |||
"OSPF multi-topology operational state."; | "OSPF multi-topology operational state."; | |||
} | } | |||
grouping ospfv3-interface-config { | grouping ospfv3-interface-config { | |||
description | description | |||
"OSPFv3 interface specific configuration state."; | "OSPFv3 interface specific configuration state."; | |||
leaf instance-id { | leaf instance-id { | |||
type uint8 { | type uint8 { | |||
skipping to change at page 84, line 43 ¶ | skipping to change at page 84, line 36 ¶ | |||
} | } | |||
grouping lsa-identifiers { | grouping lsa-identifiers { | |||
description | description | |||
"The parameters that uniquely identify an LSA."; | "The parameters that uniquely identify an LSA."; | |||
leaf area-id { | leaf area-id { | |||
type area-id-type; | type area-id-type; | |||
description | description | |||
"Area ID"; | "Area ID"; | |||
} | } | |||
leaf link-id { | ||||
type union { | ||||
type inet:ipv4-address; | ||||
type yang:dotted-quad; | ||||
} | ||||
description "Link ID."; | ||||
} | ||||
leaf type { | leaf type { | |||
type uint16; | type uint16; | |||
description | description | |||
"LSA type."; | "LSA type."; | |||
} | } | |||
leaf lsa-id { | leaf lsa-id { | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
description "LSA ID."; | description "Link-State ID."; | |||
} | } | |||
leaf adv-router { | leaf adv-router { | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
description | description | |||
"LSA advertising router."; | "LSA advertising router."; | |||
} | } | |||
leaf seq-num { | leaf seq-num { | |||
type uint32; | type uint32; | |||
description | description | |||
"LSA sequence number."; | "LSA sequence number."; | |||
skipping to change at page 85, line 33 ¶ | skipping to change at page 85, line 19 ¶ | |||
grouping spf-log { | grouping spf-log { | |||
description | description | |||
"Grouping for SPF log."; | "Grouping for SPF log."; | |||
container spf-log { | container spf-log { | |||
config false; | config false; | |||
description | description | |||
"This container lists the SPF log."; | "This container lists the SPF log."; | |||
list event { | list event { | |||
key id; | key id; | |||
description | description | |||
"List of SPF logs. | "List of SPF log entries represented | |||
It is used as a wrapping buffer."; | as a wrapping buffer."; | |||
leaf id { | leaf id { | |||
type uint32; | type uint32; | |||
description | description | |||
"This leaf defines the event identifier. | "Event identifier - Ppurely internal value."; | |||
This is a purely internal value."; | ||||
} | } | |||
leaf spf-type { | leaf spf-type { | |||
type enumeration { | type enumeration { | |||
enum full { | enum full { | |||
description | description | |||
"Computation done is a Full SPF."; | "SPF computation was a Full SPF."; | |||
} | } | |||
enum intra { | enum intra { | |||
description | description | |||
"Computation done is only for intra-area routes."; | "SPF computation was only for intra-area routes."; | |||
} | } | |||
enum inter { | enum inter { | |||
description | description | |||
"Computation done is only for inter-area | "SPF computation was only for inter-area | |||
summary routes."; | summary routes."; | |||
} | } | |||
enum external { | enum external { | |||
description | description | |||
"Computation done is only for AS external routes."; | "SPF computation was only for AS external routes."; | |||
} | } | |||
} | } | |||
description | description | |||
"The SPF computation type."; | "The SPF computation type for the SPF log entry."; | |||
} | } | |||
leaf schedule-timestamp { | leaf schedule-timestamp { | |||
type yang:timestamp; | type yang:timestamp; | |||
description | description | |||
"This leaf describes the timestamp | "This is the timestamp when the computation was | |||
when the computation was scheduled."; | scheduled."; | |||
} | } | |||
leaf start-timestamp { | leaf start-timestamp { | |||
type yang:timestamp; | type yang:timestamp; | |||
description | description | |||
"This leaf describes the timestamp | "This is the timestamp when the computation was | |||
when the computation was started."; | started."; | |||
} | } | |||
leaf end-timestamp { | leaf end-timestamp { | |||
type yang:timestamp; | type yang:timestamp; | |||
description | description | |||
"This leaf describes the timestamp | "This the timestamp when the computation was | |||
when the computation was completed."; | completed."; | |||
} | } | |||
list trigger-lsa { | list trigger-lsa { | |||
description | description | |||
"The list of LSAs that triggered the computation."; | "The list of LSAs that triggered the computation."; | |||
uses lsa-identifiers; | uses lsa-identifiers; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping lsa-log { | grouping lsa-log { | |||
description | description | |||
"Grouping for LSA log."; | "Grouping for the LSA log."; | |||
container lsa-log { | container lsa-log { | |||
config false; | config false; | |||
description | description | |||
"This conatiner lists the LSA log. | "This conatiner lists the LSA log. | |||
Local LSA modifications are also included | Local LSA modifications are also included | |||
in the list."; | in the list."; | |||
list event { | list event { | |||
key id; | key id; | |||
description | description | |||
"List of LSA logs. | "List of LSA log entries represented | |||
It is used as a wrapping buffer."; | as a wrapping buffer."; | |||
leaf id { | leaf id { | |||
type uint32; | type uint32; | |||
description | description | |||
"This leaf defines the event identifier. | "Event identifier - purely internal value."; | |||
This is a purely internal value."; | ||||
} | } | |||
container lsa { | container lsa { | |||
description | description | |||
"This container describes the logged LSA."; | "This container describes the logged LSA."; | |||
uses lsa-identifiers; | uses lsa-identifiers; | |||
} | } | |||
leaf received-timestamp { | leaf received-timestamp { | |||
type yang:timestamp; | type yang:timestamp; | |||
description | description | |||
"This leaf describes the timestamp | "This is the timestamp when the LSA was received. | |||
when the LSA was received. In case of | In case of local LSA update, the timestamp refers | |||
local LSA update, the timestamp refers | to the LSA origination time."; | |||
to the local LSA update time."; | ||||
} | } | |||
leaf reason { | leaf reason { | |||
type identityref { | type identityref { | |||
base lsa-log-reason; | base lsa-log-reason; | |||
} | } | |||
description | description | |||
"This leaf describes the reason | "This reason for the LSA log entry."; | |||
that resulted in this LSA log."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol" { | + "rt:control-plane-protocol" { | |||
when "derived-from(rt:type, 'ospf:ospf-protocol')" { | when "derived-from(rt:type, 'ospf: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 augmentation."; | description "OSPF protocol ietf-routing module | |||
control-plane-protocol augmentation."; | ||||
container ospf { | container ospf { | |||
description | description | |||
"OSPF protocol Instance"; | "OSPF protocol Instance"; | |||
uses ospf-config; | uses ospf-config; | |||
uses ospf-state; | uses ospf-state; | |||
leaf af { | leaf af { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
skipping to change at page 89, line 15 ¶ | skipping to change at page 88, line 47 ¶ | |||
description | description | |||
"Virtual-link trasit area must be | "Virtual-link trasit area must be | |||
non-zero area."; | non-zero area."; | |||
} | } | |||
description | description | |||
"Virtual link tranist area ID."; | "Virtual link tranist area ID."; | |||
} | } | |||
leaf router-id { | leaf router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"Virtual Link remote endpoint router ID."; | "Virtual Link remote endpoint Router ID."; | |||
} | } | |||
uses virtual-link-config; | uses virtual-link-config; | |||
uses virtual-link-state; | uses virtual-link-state; | |||
} | } | |||
} | } | |||
container sham-links { | container sham-links { | |||
if-feature pe-ce-protocol; | if-feature pe-ce-protocol; | |||
description "All sham links."; | description "All sham links."; | |||
list sham-link { | list sham-link { | |||
key "local-id remote-id"; | key "local-id remote-id"; | |||
description | description | |||
"OSPF sham link"; | "OSPF sham link"; | |||
leaf local-id { | leaf local-id { | |||
skipping to change at page 89, line 32 ¶ | skipping to change at page 89, line 17 ¶ | |||
container sham-links { | container sham-links { | |||
if-feature pe-ce-protocol; | if-feature pe-ce-protocol; | |||
description "All sham links."; | description "All sham links."; | |||
list sham-link { | list sham-link { | |||
key "local-id remote-id"; | key "local-id remote-id"; | |||
description | description | |||
"OSPF sham link"; | "OSPF sham link"; | |||
leaf local-id { | leaf local-id { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Address of the local Sham Link endpoint."; | "Address of the local sham Link endpoint."; | |||
} | } | |||
leaf remote-id { | leaf remote-id { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Address of the remote Sham Link endpoint."; | "Address of the remote sham Link endpoint."; | |||
} | } | |||
uses sham-link-config; | uses sham-link-config; | |||
uses sham-link-state; | uses sham-link-state; | |||
} | } | |||
} | } | |||
container interfaces { | container interfaces { | |||
description "All interfaces."; | description "All interfaces."; | |||
list interface { | list interface { | |||
key "name"; | key "name"; | |||
description | description | |||
"List of OSPF interfaces."; | "List of OSPF interfaces."; | |||
leaf name { | leaf name { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Interface name."; | "Interface name reference."; | |||
} | } | |||
uses interface-config; | uses interface-config; | |||
uses interface-state; | uses interface-state; | |||
} // list of interfaces | } | |||
} | } | |||
} // list of areas | } | |||
} | } | |||
} // OSPF instance | } | |||
} | } | |||
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" { | |||
when "derived-from(../rt:type, 'ospf:ospf-protocol')" { | when "derived-from(../rt:type, 'ospf: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."; | |||
list topology { | list topology { | |||
// Topology must be in the same routing-instance | ||||
// and of same AF as the container. | ||||
key "name"; | key "name"; | |||
description "OSPF topology."; | description | |||
"OSPF topology - The OSPF topology address-family | ||||
must coincide with the routing-instance | ||||
address-family."; | ||||
leaf name { | leaf name { | |||
type leafref { | type leafref { | |||
path "../../../../../../rt:ribs/rt:rib/rt:name"; | path "../../../../../../rt:ribs/rt:rib/rt:name"; | |||
} | } | |||
description "RIB"; | description "RIB name corresponding to the OSPF | |||
topology."; | ||||
} | } | |||
uses multi-topology-config; | uses multi-topology-config; | |||
uses multi-topology-state; | uses multi-topology-state; | |||
container areas { | container areas { | |||
description "All areas in the topology."; | description "All areas in the topology."; | |||
list area { | list area { | |||
key "area-id"; | key "area-id"; | |||
description | description | |||
skipping to change at page 91, line 37 ¶ | skipping to change at page 91, line 23 ¶ | |||
description "All topologies for the interface."; | description "All topologies for the interface."; | |||
list topology { | list topology { | |||
key "name"; | key "name"; | |||
description "OSPF interface topology."; | description "OSPF interface topology."; | |||
leaf name { | leaf name { | |||
type leafref { | type leafref { | |||
path "../../../../../../../../../../" | path "../../../../../../../../../../" | |||
+ "rt:ribs/rt:rib/rt:name"; | + "rt:ribs/rt:rib/rt:name"; | |||
} | } | |||
description | description | |||
"One of the topologies enabled on this interface."; | "Single topology enabled on this interface."; | |||
} | } | |||
uses multi-topology-interface-config; | uses multi-topology-interface-config; | |||
uses multi-topology-interface-state; | 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/" | |||
skipping to change at page 92, line 48 ¶ | skipping to change at page 92, line 34 ¶ | |||
"OSPF-specific route attributes."; | "OSPF-specific route attributes."; | |||
uses route-content; | uses route-content; | |||
} | } | |||
/* | /* | |||
* RPCs | * RPCs | |||
*/ | */ | |||
rpc clear-neighbor { | rpc clear-neighbor { | |||
description | description | |||
"This RPC request clears a particular | "This RPC request clears a particular set of OSPF neighbors. | |||
set of OSPF neighbors. If the operation | If the operation fails for OSPF internal reason, then | |||
fails for OSPF internal reason, then | error-tag and error-app-tag should be set to a meaningful | |||
error-tag and error-app-tag should be set | value."; | |||
to a meaningful value."; | ||||
input { | input { | |||
leaf routing-protocol-name { | leaf routing-protocol-name { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
mandatory "true"; | mandatory "true"; | |||
description | description | |||
"Name of the OSPF protocol instance which information | "OSPF protocol instance which information for neighbors | |||
is being queried. | are to be cleared. | |||
If the OSPF instance with name equal to the | If the referenced OSPF instance doesn't exist, then | |||
value of this parameter doesn't exist, then this | this operation SHALL fail with error-tag 'data-missing' | |||
operation SHALL fail with error-tag 'data-missing' | ||||
and error-app-tag | and error-app-tag | |||
'routing-protocol-instance-not-found'."; | 'routing-protocol-instance-not-found'."; | |||
} | } | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Name of the OSPF interface. | "Name of the OSPF interface for which neighbors are to | |||
be cleared. | ||||
If the OSPF interface with name equal to the | If the referenced OSPF interface doesn't exist, then | |||
value of this parameter doesn't exist, then this | this operation SHALL fail with error-tag | |||
operation SHALL fail with error-tag 'data-missing' | 'data-missing' and error-app-tag | |||
and error-app-tag | ||||
'ospf-interface-not-found'."; | 'ospf-interface-not-found'."; | |||
} | } | |||
} | } | |||
} | } | |||
rpc clear-database { | rpc clear-database { | |||
description | description | |||
"This RPC request clears a particular | "This RPC request clears a particular OSPF link-state | |||
OSPF database. If the operation | database. If the operation fails for OSPF internal reason, | |||
fails for OSPF internal reason, then | then error-tag and error-app-tag should be set to a | |||
error-tag and error-app-tag should be set | meaningful value."; | |||
to a meaningful value."; | ||||
input { | input { | |||
leaf routing-protocol-name { | leaf routing-protocol-name { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
mandatory "true"; | mandatory "true"; | |||
description | description | |||
"Name of the OSPF protocol instance whose | "OSPF protocol instance whose link-state database is to | |||
information is being queried. | be cleared. | |||
If the OSPF instance with name equal to the | If the referenced OSPF instance doesn't exist, then | |||
value of this parameter doesn't exist, then this | this operation SHALL fail with error-tag 'data-missing' | |||
operation SHALL fail with error-tag 'data-missing' | ||||
and error-app-tag | and error-app-tag | |||
'routing-protocol-instance-not-found'."; | 'routing-protocol-instance-not-found'."; | |||
} | } | |||
} | } | |||
} | } | |||
/* | /* | |||
* Notifications | * Notifications | |||
*/ | */ | |||
grouping notification-instance-hdr { | grouping notification-instance-hdr { | |||
description | description | |||
"This group describes common instance specific | "This grouping describes common instance specific | |||
data for notifications."; | data for OSPF notifications."; | |||
leaf routing-protocol-name { | leaf routing-protocol-name { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
must "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:ospf-protocol')"; | |||
skipping to change at page 95, line 4 ¶ | skipping to change at page 94, line 34 ¶ | |||
+ "[rt:name=current()/../routing-protocol-name]/" | + "[rt:name=current()/../routing-protocol-name]/" | |||
+ "ospf:ospf/af"; | + "ospf:ospf/af"; | |||
} | } | |||
description | description | |||
"Address family of the OSPF instance."; | "Address family of the OSPF instance."; | |||
} | } | |||
} | } | |||
grouping notification-interface { | grouping notification-interface { | |||
description | description | |||
"This grouping provides the interface information | "This grouping provides interface information | |||
for the notifications."; | for the OSPF interface specific notification."; | |||
choice if-link-type-selection { | choice if-link-type-selection { | |||
description | description | |||
"Options for link type."; | "Options for link type."; | |||
container interface { | container interface { | |||
description "Normal interface."; | description "Normal interface."; | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description "Interface."; | description "Interface."; | |||
} | } | |||
skipping to change at page 95, line 22 ¶ | skipping to change at page 95, line 4 ¶ | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description "Interface."; | description "Interface."; | |||
} | } | |||
} | } | |||
container virtual-link { | container virtual-link { | |||
description "virtual-link."; | description "virtual-link."; | |||
leaf transit-area-id { | leaf transit-area-id { | |||
type area-id-type; | type area-id-type; | |||
description "Area ID."; | description "Area ID."; | |||
} | } | |||
leaf neighbor-router-id { | leaf neighbor-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description "Neighbor Router ID."; | description "Neighbor Router ID."; | |||
} | } | |||
} | } | |||
container sham-link { | container sham-link { | |||
description "sham-link."; | description "sham link."; | |||
leaf area-id { | leaf area-id { | |||
type area-id-type; | type area-id-type; | |||
description "Area ID."; | description "Area ID."; | |||
} | } | |||
leaf local-ip-addr { | leaf local-ip-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "Sham link local address."; | description "Sham link local address."; | |||
} | } | |||
leaf remote-ip-addr { | leaf remote-ip-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "Sham link remote address."; | description "Sham link remote address."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping notification-neighbor { | grouping notification-neighbor { | |||
description | description | |||
"This grouping provides the neighbor information | "This grouping provides the neighbor information | |||
for the notifications."; | for neighbor specific notifications."; | |||
leaf neighbor-router-id { | leaf neighbor-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description "Neighbor Router ID."; | description "Neighbor Router ID."; | |||
} | } | |||
leaf neighbor-ip-addr { | leaf neighbor-ip-addr { | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
description "Neighbor address."; | description "Neighbor address."; | |||
} | } | |||
skipping to change at page 96, line 24 ¶ | skipping to change at page 96, line 6 ¶ | |||
notification if-state-change { | notification if-state-change { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface; | uses notification-interface; | |||
leaf state { | leaf state { | |||
type if-state-type; | type if-state-type; | |||
description "Interface state."; | description "Interface state."; | |||
} | } | |||
description | description | |||
"This notification is sent when an interface | "This notification is sent when an interface | |||
state change is detected."; | state change is detected."; | |||
} | } | |||
notification if-config-error { | notification if-config-error { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface; | uses notification-interface; | |||
leaf packet-source { | leaf packet-source { | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
description "Source address."; | description "Source address."; | |||
} | } | |||
skipping to change at page 97, line 29 ¶ | skipping to change at page 97, line 11 ¶ | |||
enum "dead-interval-mismatch" { | enum "dead-interval-mismatch" { | |||
description "Dead interval mismatch."; | description "Dead interval mismatch."; | |||
} | } | |||
enum "option-mismatch" { | enum "option-mismatch" { | |||
description "Option mismatch."; | description "Option mismatch."; | |||
} | } | |||
enum "mtu-mismatch" { | enum "mtu-mismatch" { | |||
description "MTU mismatch."; | description "MTU mismatch."; | |||
} | } | |||
enum "duplicate-router-id" { | enum "duplicate-router-id" { | |||
description "Duplicate router ID."; | description "Duplicate Router ID."; | |||
} | } | |||
enum "no-error" { | enum "no-error" { | |||
description "No error."; | description "No error."; | |||
} | } | |||
} | } | |||
description "Error code."; | description "Error code."; | |||
} | } | |||
description | description | |||
"This notification is sent when interface | "This notification is sent when an interface | |||
config error is detected."; | config error is detected."; | |||
} | } | |||
notification nbr-state-change { | notification nbr-state-change { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface; | uses notification-interface; | |||
uses notification-neighbor; | uses notification-neighbor; | |||
leaf state { | leaf state { | |||
type nbr-state-type; | type nbr-state-type; | |||
skipping to change at page 98, line 4 ¶ | skipping to change at page 97, line 33 ¶ | |||
notification nbr-state-change { | notification nbr-state-change { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface; | uses notification-interface; | |||
uses notification-neighbor; | uses notification-neighbor; | |||
leaf state { | leaf state { | |||
type nbr-state-type; | type nbr-state-type; | |||
description "Neighbor state."; | description "Neighbor state."; | |||
} | } | |||
description | description | |||
"This notification is sent when neighbor | "This notification is sent when aa neighbor | |||
state change is detected."; | state change is detected."; | |||
} | } | |||
notification nbr-restart-helper-status-change { | notification nbr-restart-helper-status-change { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface; | uses notification-interface; | |||
uses notification-neighbor; | uses notification-neighbor; | |||
leaf status { | leaf status { | |||
type restart-helper-status-type; | type restart-helper-status-type; | |||
description "Restart helper status."; | description "Restart helper status."; | |||
} | } | |||
leaf age { | leaf age { | |||
type uint32; | type uint32; | |||
units seconds; | units seconds; | |||
description | description | |||
"Remaining time in current OSPF graceful restart | "Remaining time in current OSPF graceful restart | |||
interval, if the router is acting as a restart | interval when the router is acting as a restart | |||
helper for the neighbor."; | helper for the neighbor."; | |||
} | } | |||
leaf exit-reason { | leaf exit-reason { | |||
type restart-exit-reason-type; | type restart-exit-reason-type; | |||
description | description | |||
"Restart helper exit reason."; | "Restart helper exit reason."; | |||
} | } | |||
description | description | |||
"This notification is sent when a neighbor restart | "This notification is sent when a neighbor restart | |||
skipping to change at page 99, line 22 ¶ | skipping to change at page 99, line 4 ¶ | |||
leaf ext-lsdb-limit { | leaf ext-lsdb-limit { | |||
type uint32; | type uint32; | |||
description | description | |||
"The maximum number of non-default AS-external LSAs | "The maximum number of non-default AS-external LSAs | |||
entries that can be stored in the link state database."; | entries that can be stored in the link state database."; | |||
} | } | |||
description | description | |||
"This notification is sent when the number of LSAs | "This notification is sent when the number of LSAs | |||
in the router's link state database has exceeded | in the router's link state database has exceeded | |||
ninety percent of the ext-lsdb-limit."; | ninety percent of the AS-external limit (ext-lsdb-limit)."; | |||
} | } | |||
notification lsdb-overflow { | notification lsdb-overflow { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
leaf ext-lsdb-limit { | leaf ext-lsdb-limit { | |||
type uint32; | type uint32; | |||
description | description | |||
"The maximum number of non-default AS-external LSAs | "The maximum number of non-default AS-external LSAs | |||
entries that can be stored in the link state database."; | entries that can be stored in the link state database."; | |||
} | } | |||
description | description | |||
"This notification is sent when the number of LSAs | "This notification is sent when the number of LSAs | |||
in the router's link state database has exceeded | in the router's link state database has exceeded the | |||
ext-lsdb-limit."; | AS-external limit (ext-lsdb-limit)."; | |||
} | } | |||
notification nssa-translator-status-change { | notification nssa-translator-status-change { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
leaf area-id { | leaf area-id { | |||
type area-id-type; | type area-id-type; | |||
description "Area ID."; | description "Area ID."; | |||
} | } | |||
skipping to change at page 100, line 47 ¶ | skipping to change at page 100, line 29 ¶ | |||
description | description | |||
"This notification is sent when the graceful restart | "This notification is sent when the graceful restart | |||
state for the router has changed."; | state for the router has changed."; | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
4. Security Considerations | 4. Security Considerations | |||
The YANG module defined in this document is designed to be accessed | The YANG modules specified in this document define a schema for data | |||
via network management protocols such as NETCONF [RFC6241] or | that is designed to be accessed via network management protocols such | |||
RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
layer, and the mandatory-to-implement secure transport is Secure | is the secure transport layer, and the mandatory-to-implement secure | |||
Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
mandatory-to-implement secure transport is TLS [RFC5246]. | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
[RFC5246]. | ||||
The NETCONF access control model [RFC6536] provides the means to | The NETCONF access control model [RFC6536] provides the means to | |||
restrict access for particular NETCONF or RESTCONF users to a pre- | restrict access for particular NETCONF or RESTCONF users to a pre- | |||
configured subset of all available NETCONF or RESTCONF protocol | configured subset of all available NETCONF or RESTCONF protocol | |||
operations and content. | operations and content. | |||
There are a number of data nodes defined in this YANG module that are | There are a number of data nodes defined in ietf-ospf.yang module | |||
writable/creatable/deletable (i.e., config true, which is the | that are writable/creatable/deletable (i.e., config true, which is | |||
default). These data nodes may be considered sensitive or vulnerable | the default). These data nodes may be considered sensitive or | |||
in some network environments. Write operations (e.g., edit-config) | vulnerable in some network environments. Write operations (e.g., | |||
to these data nodes without proper protection can have a negative | edit-config) to these data nodes without proper protection can have a | |||
effect on network operations. For OSPF, the ability to modify OSPF | negative effect on network operations. For OSPF, the ability to | |||
configuration will allow the entire OSPF domain to be compromised | modify OSPF configuration will allow the entire OSPF domain to be | |||
including peering with unauthorized routers to misroute traffic or | compromised including peering with unauthorized routers to misroute | |||
mount a massive Denial-of-Service (DoS) attack. The security | traffic or mount a massive Denial-of-Service (DoS) attack. The | |||
considerations of OSPFv2 [RFC2328] and [RFC5340]. | security considerations of OSPFv2 [RFC2328] and [RFC5340] apply to | |||
the ietf-ospf.yang module as well. | ||||
Some of the readable data nodes in this YANG module may be considered | Some of the readable data nodes in the ietf-ospf.yang module may be | |||
sensitive or vulnerable in some network environments. It is thus | considered sensitive or vulnerable in some network environments. It | |||
important to control read access (e.g., via get, get-config, or | is thus important to control read access (e.g., via get, get-config, | |||
notification) to these data nodes. The exposure of the Link State | or notification) to these data nodes. The exposure of the Link State | |||
Database (LSDB) will expose the detailed topology of the network. | Database (LSDB) will expose the detailed topology of the network. | |||
This may be undesirable since both due to the fact that exposure may | This may be undesirable since both due to the fact that exposure may | |||
facilitate other attacks. Additionally, network operators may | facilitate other attacks. Additionally, network operators may | |||
consider their topologies to be propritary. | consider their topologies to be sensitive confidential data. | |||
For OSPF authentication, configuration is supported via the | For OSPF authentication, configuration is supported via the | |||
specification of key-chains [RFC8177] or the direct specification of | specification of key-chains [RFC8177] or the direct specification of | |||
key and authentication algorithm. Hence, authentification | key and authentication algorithm. Hence, authentification | |||
configuration using the "auth-table-trailer" case in the | configuration using the "auth-table-trailer" case in the | |||
"authentication" container inherits the security considerations of | "authentication" container inherits the security considerations of | |||
[RFC8177]. This includes the considerations with respect to the | [RFC8177]. This includes the considerations with respect to the | |||
local storage and handling of authentication keys. | local storage and handling of authentication keys. | |||
Some of the RPC operations in this YANG module may be considered | Some of the RPC operations in this YANG module may be considered | |||
skipping to change at page 102, line 7 ¶ | skipping to change at page 101, line 39 ¶ | |||
temporary network outages be employed to mount DoS attacks. | temporary network outages be employed to mount DoS attacks. | |||
5. Acknowledgements | 5. Acknowledgements | |||
The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, | The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, | |||
Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and | Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and | |||
Alan Davey for their thorough reviews and helpful comments. | Alan Davey for their thorough reviews and helpful comments. | |||
This document was produced using Marshall Rose's xml2rfc tool. | This document was produced using Marshall Rose's xml2rfc tool. | |||
6. References | 6. Normative References | |||
6.1. Normative References | [I-D.ietf-bfd-yang] | |||
Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and | ||||
G. Mirsky, "YANG Data Model for Bidirectional Forwarding | ||||
Detection (BFD)", draft-ietf-bfd-yang-13 (work in | ||||
progress), March 2018. | ||||
[I-D.ietf-rtgwg-backoff-algo] | ||||
Decraene, B., Litkowski, S., Gredler, H., Lindem, A., | ||||
Francois, P., and C. Bowers, "SPF Back-off Delay algorithm | ||||
for link state IGPs", draft-ietf-rtgwg-backoff-algo-10 | ||||
(work in progress), March 2018. | ||||
[RFC0905] "ISO Transport Protocol specification ISO DP 8073", | ||||
RFC 905, DOI 10.17487/RFC0905, April 1984, | ||||
<https://www.rfc-editor.org/info/rfc905>. | ||||
[RFC1765] Moy, J., "OSPF Database Overflow", RFC 1765, | ||||
DOI 10.17487/RFC1765, March 1995, <https://www.rfc- | ||||
editor.org/info/rfc1765>. | ||||
[RFC1793] Moy, J., "Extending OSPF to Support Demand Circuits", | [RFC1793] Moy, J., "Extending OSPF to Support Demand Circuits", | |||
RFC 1793, DOI 10.17487/RFC1793, April 1995, | RFC 1793, DOI 10.17487/RFC1793, April 1995, | |||
<https://www.rfc-editor.org/info/rfc1793>. | <https://www.rfc-editor.org/info/rfc1793>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, <https://www.rfc- | |||
<https://www.rfc-editor.org/info/rfc2119>. | editor.org/info/rfc2119>. | |||
[RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, | [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, | |||
DOI 10.17487/RFC2328, April 1998, | DOI 10.17487/RFC2328, April 1998, <https://www.rfc- | |||
<https://www.rfc-editor.org/info/rfc2328>. | editor.org/info/rfc2328>. | |||
[RFC3101] Murphy, P., "The OSPF Not-So-Stubby Area (NSSA) Option", | [RFC3101] Murphy, P., "The OSPF Not-So-Stubby Area (NSSA) Option", | |||
RFC 3101, DOI 10.17487/RFC3101, January 2003, | RFC 3101, DOI 10.17487/RFC3101, January 2003, | |||
<https://www.rfc-editor.org/info/rfc3101>. | <https://www.rfc-editor.org/info/rfc3101>. | |||
[RFC3623] Moy, J., Pillay-Esnault, P., and A. Lindem, "Graceful OSPF | [RFC3623] Moy, J., Pillay-Esnault, P., and A. Lindem, "Graceful OSPF | |||
Restart", RFC 3623, DOI 10.17487/RFC3623, November 2003, | Restart", RFC 3623, DOI 10.17487/RFC3623, November 2003, | |||
<https://www.rfc-editor.org/info/rfc3623>. | <https://www.rfc-editor.org/info/rfc3623>. | |||
[RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering | [RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering | |||
(TE) Extensions to OSPF Version 2", RFC 3630, | (TE) Extensions to OSPF Version 2", RFC 3630, | |||
DOI 10.17487/RFC3630, September 2003, | DOI 10.17487/RFC3630, September 2003, <https://www.rfc- | |||
<https://www.rfc-editor.org/info/rfc3630>. | editor.org/info/rfc3630>. | |||
[RFC4552] Gupta, M. and N. Melam, "Authentication/Confidentiality | ||||
for OSPFv3", RFC 4552, DOI 10.17487/RFC4552, June 2006, | ||||
<https://www.rfc-editor.org/info/rfc4552>. | ||||
[RFC4576] Rosen, E., Psenak, P., and P. Pillay-Esnault, "Using a | ||||
Link State Advertisement (LSA) Options Bit to Prevent | ||||
Looping in BGP/MPLS IP Virtual Private Networks (VPNs)", | ||||
RFC 4576, DOI 10.17487/RFC4576, June 2006, | ||||
<https://www.rfc-editor.org/info/rfc4576>. | ||||
[RFC4577] Rosen, E., Psenak, P., and P. Pillay-Esnault, "OSPF as the | [RFC4577] Rosen, E., Psenak, P., and P. Pillay-Esnault, "OSPF as the | |||
Provider/Customer Edge Protocol for BGP/MPLS IP Virtual | Provider/Customer Edge Protocol for BGP/MPLS IP Virtual | |||
Private Networks (VPNs)", RFC 4577, DOI 10.17487/RFC4577, | Private Networks (VPNs)", RFC 4577, DOI 10.17487/RFC4577, | |||
June 2006, <https://www.rfc-editor.org/info/rfc4577>. | June 2006, <https://www.rfc-editor.org/info/rfc4577>. | |||
[RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed., | [RFC4750] Joyal, D., Ed., Galecki, P., Ed., Giacalone, S., Ed., | |||
Coltun, R., and F. Baker, "OSPF Version 2 Management | Coltun, R., and F. Baker, "OSPF Version 2 Management | |||
Information Base", RFC 4750, DOI 10.17487/RFC4750, | Information Base", RFC 4750, DOI 10.17487/RFC4750, | |||
December 2006, <https://www.rfc-editor.org/info/rfc4750>. | December 2006, <https://www.rfc-editor.org/info/rfc4750>. | |||
[RFC4915] Psenak, P., Mirtorabi, S., Roy, A., Nguyen, L., and P. | ||||
Pillay-Esnault, "Multi-Topology (MT) Routing in OSPF", | ||||
RFC 4915, DOI 10.17487/RFC4915, June 2007, | ||||
<https://www.rfc-editor.org/info/rfc4915>. | ||||
[RFC5082] Gill, V., Heasley, J., Meyer, D., Savola, P., Ed., and C. | ||||
Pignataro, "The Generalized TTL Security Mechanism | ||||
(GTSM)", RFC 5082, DOI 10.17487/RFC5082, October 2007, | ||||
<https://www.rfc-editor.org/info/rfc5082>. | ||||
[RFC5185] Mirtorabi, S., Psenak, P., Lindem, A., Ed., and A. Oswal, | ||||
"OSPF Multi-Area Adjacency", RFC 5185, | ||||
DOI 10.17487/RFC5185, May 2008, <https://www.rfc- | ||||
editor.org/info/rfc5185>. | ||||
[RFC5187] Pillay-Esnault, P. and A. Lindem, "OSPFv3 Graceful | [RFC5187] Pillay-Esnault, P. and A. Lindem, "OSPFv3 Graceful | |||
Restart", RFC 5187, DOI 10.17487/RFC5187, June 2008, | Restart", RFC 5187, DOI 10.17487/RFC5187, June 2008, | |||
<https://www.rfc-editor.org/info/rfc5187>. | <https://www.rfc-editor.org/info/rfc5187>. | |||
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
(TLS) Protocol Version 1.2", RFC 5246, | (TLS) Protocol Version 1.2", RFC 5246, | |||
DOI 10.17487/RFC5246, August 2008, | DOI 10.17487/RFC5246, August 2008, <https://www.rfc- | |||
<https://www.rfc-editor.org/info/rfc5246>. | editor.org/info/rfc5246>. | |||
[RFC5250] Berger, L., Bryskin, I., Zinin, A., and R. Coltun, "The | ||||
OSPF Opaque LSA Option", RFC 5250, DOI 10.17487/RFC5250, | ||||
July 2008, <https://www.rfc-editor.org/info/rfc5250>. | ||||
[RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for | ||||
IP Fast Reroute: Loop-Free Alternates", RFC 5286, | ||||
DOI 10.17487/RFC5286, September 2008, <https://www.rfc- | ||||
editor.org/info/rfc5286>. | ||||
[RFC5329] Ishiguro, K., Manral, V., Davey, A., and A. Lindem, Ed., | ||||
"Traffic Engineering Extensions to OSPF Version 3", | ||||
RFC 5329, DOI 10.17487/RFC5329, September 2008, | ||||
<https://www.rfc-editor.org/info/rfc5329>. | ||||
[RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF | [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF | |||
for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, | for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, | |||
<https://www.rfc-editor.org/info/rfc5340>. | <https://www.rfc-editor.org/info/rfc5340>. | |||
[RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP | ||||
Synchronization", RFC 5443, DOI 10.17487/RFC5443, March | ||||
2009, <https://www.rfc-editor.org/info/rfc5443>. | ||||
[RFC5613] Zinin, A., Roy, A., Nguyen, L., Friedman, B., and D. | ||||
Yeung, "OSPF Link-Local Signaling", RFC 5613, | ||||
DOI 10.17487/RFC5613, August 2009, <https://www.rfc- | ||||
editor.org/info/rfc5613>. | ||||
[RFC5643] Joyal, D., Ed. and V. Manral, Ed., "Management Information | [RFC5643] Joyal, D., Ed. and V. Manral, Ed., "Management Information | |||
Base for OSPFv3", RFC 5643, DOI 10.17487/RFC5643, August | Base for OSPFv3", RFC 5643, DOI 10.17487/RFC5643, August | |||
2009, <https://www.rfc-editor.org/info/rfc5643>. | 2009, <https://www.rfc-editor.org/info/rfc5643>. | |||
[RFC5714] Shand, M. and S. Bryant, "IP Fast Reroute Framework", | ||||
RFC 5714, DOI 10.17487/RFC5714, January 2010, | ||||
<https://www.rfc-editor.org/info/rfc5714>. | ||||
[RFC5838] Lindem, A., Ed., Mirtorabi, S., Roy, A., Barnes, M., and | [RFC5838] Lindem, A., Ed., Mirtorabi, S., Roy, A., Barnes, M., and | |||
R. Aggarwal, "Support of Address Families in OSPFv3", | R. Aggarwal, "Support of Address Families in OSPFv3", | |||
RFC 5838, DOI 10.17487/RFC5838, April 2010, | RFC 5838, DOI 10.17487/RFC5838, April 2010, | |||
<https://www.rfc-editor.org/info/rfc5838>. | <https://www.rfc-editor.org/info/rfc5838>. | |||
[RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | ||||
(BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | ||||
<https://www.rfc-editor.org/info/rfc5880>. | ||||
[RFC5881] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | ||||
(BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881, | ||||
DOI 10.17487/RFC5881, June 2010, <https://www.rfc- | ||||
editor.org/info/rfc5881>. | ||||
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
the Network Configuration Protocol (NETCONF)", RFC 6020, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
DOI 10.17487/RFC6020, October 2010, | DOI 10.17487/RFC6020, October 2010, <https://www.rfc- | |||
<https://www.rfc-editor.org/info/rfc6020>. | editor.org/info/rfc6020>. | |||
[RFC6021] Schoenwaelder, J., Ed., "Common YANG Data Types", | ||||
RFC 6021, DOI 10.17487/RFC6021, October 2010, | ||||
<https://www.rfc-editor.org/info/rfc6021>. | ||||
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6242>. | <https://www.rfc-editor.org/info/rfc6242>. | |||
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | |||
Protocol (NETCONF) Access Control Model", RFC 6536, | Protocol (NETCONF) Access Control Model", RFC 6536, | |||
DOI 10.17487/RFC6536, March 2012, | DOI 10.17487/RFC6536, March 2012, <https://www.rfc- | |||
<https://www.rfc-editor.org/info/rfc6536>. | editor.org/info/rfc6536>. | |||
[RFC6565] Pillay-Esnault, P., Moyer, P., Doyle, J., Ertekin, E., and | [RFC6565] Pillay-Esnault, P., Moyer, P., Doyle, J., Ertekin, E., and | |||
M. Lundberg, "OSPFv3 as a Provider Edge to Customer Edge | M. Lundberg, "OSPFv3 as a Provider Edge to Customer Edge | |||
(PE-CE) Routing Protocol", RFC 6565, DOI 10.17487/RFC6565, | (PE-CE) Routing Protocol", RFC 6565, DOI 10.17487/RFC6565, | |||
June 2012, <https://www.rfc-editor.org/info/rfc6565>. | June 2012, <https://www.rfc-editor.org/info/rfc6565>. | |||
[RFC7223] Bjorklund, M., "A YANG Data Model for Interface | [RFC6860] Yang, Y., Retana, A., and A. Roy, "Hiding Transit-Only | |||
Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, | Networks in OSPF", RFC 6860, DOI 10.17487/RFC6860, January | |||
<https://www.rfc-editor.org/info/rfc7223>. | 2013, <https://www.rfc-editor.org/info/rfc6860>. | |||
[RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing | [RFC6987] Retana, A., Nguyen, L., Zinin, A., White, R., and D. | |||
Management", RFC 8022, DOI 10.17487/RFC8022, November | McPherson, "OSPF Stub Router Advertisement", RFC 6987, | |||
2016, <https://www.rfc-editor.org/info/rfc8022>. | DOI 10.17487/RFC6987, September 2013, <https://www.rfc- | |||
editor.org/info/rfc6987>. | ||||
[RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N. | ||||
So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)", | ||||
RFC 7490, DOI 10.17487/RFC7490, April 2015, | ||||
<https://www.rfc-editor.org/info/rfc7490>. | ||||
[RFC7684] Psenak, P., Gredler, H., Shakir, R., Henderickx, W., | ||||
Tantsura, J., and A. Lindem, "OSPFv2 Prefix/Link Attribute | ||||
Advertisement", RFC 7684, DOI 10.17487/RFC7684, November | ||||
2015, <https://www.rfc-editor.org/info/rfc7684>. | ||||
[RFC7770] Lindem, A., Ed., Shen, N., Vasseur, JP., Aggarwal, R., and | ||||
S. Shaffer, "Extensions to OSPF for Advertising Optional | ||||
Router Capabilities", RFC 7770, DOI 10.17487/RFC7770, | ||||
February 2016, <https://www.rfc-editor.org/info/rfc7770>. | ||||
[RFC7777] Hegde, S., Shakir, R., Smirnov, A., Li, Z., and B. | ||||
Decraene, "Advertising Node Administrative Tags in OSPF", | ||||
RFC 7777, DOI 10.17487/RFC7777, March 2016, | ||||
<https://www.rfc-editor.org/info/rfc7777>. | ||||
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
<https://www.rfc-editor.org/info/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
[RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. | [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. | |||
Zhang, "YANG Data Model for Key Chains", RFC 8177, | Zhang, "YANG Data Model for Key Chains", RFC 8177, | |||
DOI 10.17487/RFC8177, June 2017, | DOI 10.17487/RFC8177, June 2017, <https://www.rfc- | |||
<https://www.rfc-editor.org/info/rfc8177>. | editor.org/info/rfc8177>. | |||
6.2. Informative References | [RFC8291] Thomson, M., "Message Encryption for Web Push", RFC 8291, | |||
DOI 10.17487/RFC8291, November 2017, <https://www.rfc- | ||||
editor.org/info/rfc8291>. | ||||
[I-D.ietf-netmod-revised-datastores] | [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | and R. Wilton, "Network Management Datastore Architecture | |||
and R. Wilton, "Network Management Datastore | (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | |||
Architecture", draft-ietf-netmod-revised-datastores-02 | <https://www.rfc-editor.org/info/rfc8342>. | |||
(work in progress), May 2017. | ||||
[RFC8343] Bjorklund, M., "A YANG Data Model for Interface | ||||
Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, | ||||
<https://www.rfc-editor.org/info/rfc8343>. | ||||
[RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for | ||||
Routing Management (NMDA Version)", RFC 8349, | ||||
DOI 10.17487/RFC8349, March 2018, <https://www.rfc- | ||||
editor.org/info/rfc8349>. | ||||
Appendix A. Contributors' Addreses | Appendix A. Contributors' Addreses | |||
Dean Bogdanovic | Dean Bogdanovic | |||
Volta Networks, Inc. | Volta Networks, Inc. | |||
EMail: dean@voltanet.io | EMail: dean@voltanet.io | |||
Kiran Koushik Agrahara Sreenivasa | Kiran Koushik Agrahara Sreenivasa | |||
Cisco Systems | Cisco Systems | |||
End of changes. 238 change blocks. | ||||
330 lines changed or deleted | 437 lines changed or added | |||
This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |