rfc9129xml2.original.xml | rfc9129.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
<!ENTITY RFC905 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.0905.xml'> | ||||
<!ENTITY RFC1765 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.1765.xml'> | ||||
<!ENTITY RFC1793 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.1793.xml'> | ||||
<!ENTITY RFC2119 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'> | ||||
<!ENTITY RFC2328 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2328.xml'> | ||||
<!ENTITY RFC3623 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3623.xml'> | ||||
<!ENTITY RFC3630 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3630.xml'> | ||||
<!ENTITY RFC3688 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3688.xml'> | ||||
<!ENTITY RFC4552 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4552.xml'> | ||||
<!ENTITY RFC4915 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4915.xml'> | ||||
<!ENTITY RFC5185 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5185.xml'> | ||||
<!ENTITY RFC5187 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5187.xml'> | ||||
<!ENTITY RFC5309 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5309.xml'> | ||||
<!ENTITY RFC3101 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3101.xml'> | ||||
<!ENTITY RFC4576 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4576.xml'> | ||||
<!ENTITY RFC4577 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4577.xml'> | ||||
<!ENTITY RFC4750 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4750.xml'> | ||||
<!ENTITY RFC4973 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4973.xml'> | ||||
<!ENTITY RFC5082 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5082.xml'> | ||||
<!ENTITY RFC5250 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5250.xml'> | ||||
<!ENTITY RFC5286 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5286.xml'> | ||||
<!ENTITY RFC5329 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5329.xml'> | ||||
<!ENTITY RFC5340 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5340.xml'> | ||||
<!ENTITY RFC5443 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5443.xml'> | ||||
<!ENTITY RFC5613 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5613.xml'> | ||||
<!ENTITY RFC5642 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5642.xml'> | ||||
<!ENTITY RFC5643 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5643.xml'> | ||||
<!ENTITY RFC5649 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5649.xml'> | ||||
<!ENTITY RFC5709 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5709.xml'> | ||||
<!ENTITY RFC5714 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5714.xml'> | ||||
<!ENTITY RFC5838 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5838.xml'> | ||||
<!ENTITY RFC5880 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5880.xml'> | ||||
<!ENTITY RFC5881 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5881.xml'> | ||||
<!ENTITY RFC6020 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6020.xml'> | ||||
<!ENTITY RFC6241 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6241.xml'> | ||||
<!ENTITY RFC6242 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6242.xml'> | ||||
<!ENTITY RFC6565 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6565.xml'> | ||||
<!ENTITY RFC6860 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6860.xml'> | ||||
<!ENTITY RFC6845 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6845.xml'> | ||||
<!ENTITY RFC6987 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6987.xml'> | ||||
<!ENTITY RFC6991 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6991.xml'> | ||||
<!ENTITY RFC7166 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7166.xml'> | ||||
<!ENTITY RFC7474 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7474.xml'> | ||||
<!ENTITY RFC7490 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7490.xml'> | ||||
<!ENTITY RFC7684 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7684.xml'> | ||||
<!ENTITY RFC7770 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7770.xml'> | ||||
<!ENTITY RFC7777 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7777.xml'> | ||||
<!ENTITY RFC7884 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7884.xml'> | ||||
<!ENTITY RFC7950 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7950.xml'> | ||||
<!ENTITY RFC8040 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8040.xml'> | ||||
<!ENTITY RFC8174 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml'> | ||||
<!ENTITY RFC8177 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8177.xml'> | ||||
<!ENTITY RFC8294 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8294.xml'> | ||||
<!ENTITY RFC8340 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8340.xml'> | ||||
<!ENTITY RFC8341 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8341.xml'> | ||||
<!ENTITY RFC8342 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8342.xml'> | ||||
<!ENTITY RFC8343 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8343.xml'> | ||||
<!ENTITY RFC8349 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8349.xml'> | ||||
<!ENTITY RFC8405 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8405.xml'> | ||||
<!ENTITY RFC8446 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8446.xml'> | ||||
<!ENTITY RFC8476 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8476.xml'> | ||||
<!ENTITY I-D.ietf-bfd-yang PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml-ids/reference.I-D.draft-ietf-bf | ||||
d-yang-17.xml'> | ||||
]> | ||||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
<?rfc strict="no" ?> | ||||
<?rfc toc="yes" ?> | ||||
<?rfc symrefs="yes" ?> | ||||
<?rfc sortrefs="yes"?> | ||||
<?rfc rfcedstyle="yes" ?> | ||||
<?rfc subcompact="no" ?> | ||||
<rfc category="std" docName="draft-ietf-ospf-yang-29" ipr="trust200902"> | ||||
<!-- category values: std, bcp, info, exp, and historic | ||||
ipr values: full3667, noModification3667, noDerivatives3667 | ||||
you can add the attributes updates="NNNN" and obsoletes="NNNN" | ||||
they will automatically be output with "(if approved)" --> | ||||
<!-- ***** FRONT MATTER ***** --> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" | |||
docName="draft-ietf-ospf-yang-29" number="9129" ipr="trust200902" | ||||
obsoletes="" updates="" submissionType="IETF" consensus="true" xml:lang="en | ||||
" tocInclude="true" symRefs="true" sortRefs="true" version="3"> | ||||
<!-- xml2rfc v2v3 conversion 2.47.0 --> | ||||
<front> | <front> | |||
<!-- The abbreviated title is used in the page header - it is only necessary | <title abbrev="OSPF YANG Data Model">YANG Data Model for the OSPF Protocol | |||
if the | ||||
full title is longer than 39 characters --> | ||||
<title abbrev="OSPF YANG Data Model">YANG Data Model for OSPF Protocol | ||||
</title> | </title> | |||
<!-- add 'role="editor"' below for the editors if appropriate --> | <!-- [rfced] Document title: We changed "for OSPF Protocol" to | |||
"for the OSPF Protocol". Please let us know any objections. | ||||
<!-- Another author who claims to be an editor --> | Original: | |||
YANG Data Model for OSPF Protocol | ||||
Currently: | ||||
YANG Data Model for the OSPF Protocol --> | ||||
<seriesInfo name="RFC" value="9129"/> | ||||
<author fullname="Derek Yeung" initials="D" surname="Yeung"> | <author fullname="Derek Yeung" initials="D" surname="Yeung"> | |||
<organization>Arrcus</organization> | <organization>Arrcus</organization> | |||
<address> | <address> | |||
<phone></phone> | ||||
<email>derek@arrcus.com</email> | <email>derek@arrcus.com</email> | |||
<!-- uri and facsimile elements may also be added --> | ||||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Yingzhen Qu" initials="Y" surname="Qu"> | <author fullname="Yingzhen Qu" initials="Y" surname="Qu"> | |||
<organization>Futurewei</organization> | <organization>Futurewei</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>2330 Central Expressway</street> | <street>2330 Central Expressway</street> | |||
<!-- Reorder these if your country does things differently --> | ||||
<city>Santa Clara</city> | <city>Santa Clara</city> | |||
<region>CA</region> | <region>CA</region> | |||
<code>95050</code> | <code>95050</code> | |||
<country>United States of America</country> | ||||
<country>USA</country> | ||||
</postal> | </postal> | |||
<phone></phone> | ||||
<email>yingzhen.qu@futurewei.com</email> | <email>yingzhen.qu@futurewei.com</email> | |||
<!-- uri and facsimile elements may also be added --> | ||||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Jeffrey Zhang" initials="J" surname="Zhang"> | <author fullname="Jeffrey Zhang" initials="J" surname="Zhang"> | |||
<organization>Juniper Networks</organization> | <organization>Juniper Networks</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>10 Technology Park Drive</street> | <street>10 Technology Park Drive</street> | |||
<!-- Reorder these if your country does things differently --> | ||||
<city>Westford</city> | <city>Westford</city> | |||
<region>MA</region> | <region>MA</region> | |||
<code>01886</code> | <code>01886</code> | |||
<country>United States of America</country> | ||||
<country>USA</country> | ||||
</postal> | </postal> | |||
<phone></phone> | ||||
<email>zzhang@juniper.net</email> | <email>zzhang@juniper.net</email> | |||
<!-- uri and facsimile elements may also be added --> | ||||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Ing-Wher Chen" initials="I." surname="Chen"> | <author fullname="Ing-Wher Chen" initials="I." surname="Chen"> | |||
<organization>The MITRE Corporation</organization> | <organization>The MITRE Corporation</organization> | |||
<address> | <address> | |||
<email>ingwherchen@mitre.org</email> | <email>ingwherchen@mitre.org</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Acee Lindem" initials="A." surname="Lindem"> | <author fullname="Acee Lindem" initials="A." surname="Lindem"> | |||
<organization>Cisco Systems</organization> | <organization>Cisco Systems</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>301 Midenhall Way</street> | <street>301 Midenhall Way</street> | |||
<city>Cary, NC 27513</city> | <city>Cary</city> | |||
<region>NC</region> | ||||
<code>27513</code> | ||||
<country>United States of America</country> | ||||
</postal> | </postal> | |||
<email>acee@cisco.com</email> | <email>acee@cisco.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date/> | <date month="September" year="2021"/> | |||
<!-- If the month and year are both specified and are the current ones, xml2 | ||||
rfc will fill | ||||
in the current day for you. If only the current year is specified, xml2 | ||||
rfc will fill | ||||
in the current day and month for you. If the year is not the current one, it | ||||
is | ||||
necessary to specify at least a month (xml2rfc assumes day="1" if not specifi | ||||
ed for the | ||||
purpose of calculating the expiry date). With drafts it is normally sufficie | ||||
nt to | ||||
specify just the year. --> | ||||
<!-- Meta-data Declarations --> | ||||
<area>General</area> | ||||
<workgroup>Internet</workgroup> | ||||
<!-- WG name at the upperleft corner of the doc, | ||||
IETF is fine for individual submissions. | ||||
If this element is not present, the default is "Network Working Group", | ||||
which is used by the RFC Editor as a nod to the history of the IETF. -- | ||||
> | ||||
<!-- Keywords will be incorporated into HTML output | <!-- [rfced] Please insert any keywords (beyond those that appear in the | |||
files in a meta tag but they have no effect on text or nroff | title) for use on https://www.rfc-editor.org/search --> | |||
output. If you submit your draft to the RFC Editor, the | ||||
keywords will be used for the search engine. --> | ||||
<abstract> | <abstract> | |||
<t>This document defines a YANG data model that can be | <t>This document defines a YANG data model that can be | |||
used to configure and manage OSPF. The model is based on | used to configure and manage OSPF. The model is based on | |||
YANG 1.1 as defined in RFC 7950 and conforms to the | YANG 1.1 as defined in RFC 7950 and conforms to the | |||
Network Management Datastore Architecture (NMDA) as described | Network Management Datastore Architecture (NMDA) as described | |||
in RFC 8342.</t> | in RFC 8342.</t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section title="Overview"> | <section numbered="true" toc="default"> | |||
<t>YANG <xref target="RFC6020"></xref><xref target="RFC7950"/> is a data | <name>Overview</name> | |||
definition language used to define the contents of a conceptual data store | ||||
that allows networked devices to be managed using NETCONF | <!-- [rfced] Section 1: Because Section 2.2 also has the title | |||
<xref target="RFC6241"></xref>, RESTCONF <xref target="RFC8040"/>, and oth | "Overview", may we change the title of Section 1 to "Introduction"? | |||
er | ||||
Network Management protocols. Furthermore, | Original: | |||
1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | ||||
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | ||||
1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 | ||||
2. Design of Data Model . . . . . . . . . . . . . . . . . . . . 3 | ||||
2.1. OSPF Operational State . . . . . . . . . . . . . . . . . 3 | ||||
2.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 | ||||
Suggested: | ||||
1. Introduction --> | ||||
<t>YANG <xref target="RFC6020" format="default"/> <xref target="RFC7950" f | ||||
ormat="default"/> is a data | ||||
definition language used to define the contents of a conceptual datastore | ||||
that allows networked devices to be managed using the Network | ||||
Configuration Protocol (NETCONF) | ||||
<xref target="RFC6241" format="default"/>, RESTCONF <xref target="RFC8040" | ||||
format="default"/>, and other | ||||
network management protocols. Furthermore, | ||||
YANG data models can be used as the basis for implementation of other | YANG data models can be used as the basis for implementation of other | |||
interfaces, such as CLI and programmatic APIs.</t> | interfaces, such as CLIs and programmatic APIs. | |||
<t>This document defines a YANG data model that can be used to configure | <!-- [rfced] Section 1: Does "CLI" stand for "Command-Line Interface" | |||
and manage OSPF and it is an augmentation to the core routing data model. | or "Call Level Interface" in this document? | |||
It fully conforms to the Network Management Datastore Architecture (NMDA) | ||||
<xref target="RFC8342"/>. | ||||
A core routing data model is defined in | ||||
<xref target="RFC8349"></xref>, | ||||
and it provides the basis for the development of data models for routing | ||||
protocols. The interface data model is defined in | ||||
<xref target="RFC8343"></xref> and is used for referencing | ||||
interfaces from the routing protocol. The key-chain data model used for | ||||
OSPF authentication is defined in <xref target="RFC8177"></xref> | ||||
and provides both a reference to configured key-chains and an | ||||
enumeration of cryptographic algorithms.</t> | ||||
<t>Both OSPFv2 <xref target="RFC2328"></xref> and OSPFv3 | Original: | |||
<xref target="RFC5340"></xref> are supported. In addition to | Furthermore, YANG data models can be | |||
used as the basis for implementation of other interfaces, such as CLI | ||||
and programmatic APIs. --> | ||||
</t> | ||||
<t>This document defines a YANG data model that can be used to configure | ||||
and manage OSPF. It is an augmentation to the core routing data model, | ||||
which is defined in <xref target="RFC8349" format="default"/> and | ||||
provides the basis for the development of data models for routing | ||||
protocols. This document fully conforms to the Network Management Datastore | ||||
Architecture (NMDA) | ||||
<xref target="RFC8342" format="default"/>. The interface data model is defin | ||||
ed in | ||||
<xref target="RFC8343" format="default"/> and is used for referencing | ||||
interfaces from the routing protocol. The data model for key chains | ||||
<xref target="RFC8177" format="default"/> is used for | ||||
OSPF authentication and provides both a reference to configured key chains a | ||||
nd an | ||||
enumeration of cryptographic algorithms.</t> | ||||
<t>Both OSPFv2 <xref target="RFC2328" format="default"/> and OSPFv3 | ||||
<xref target="RFC5340" format="default"/> are supported. In addition to | ||||
the core OSPF protocol, features described in other | the core OSPF protocol, features described in other | |||
OSPF RFCs are also supported. These includes demand circuit | OSPF RFCs are also supported. These include demand circuits | |||
<xref target="RFC1793"></xref>, traffic engineering <xref target="RFC3630">< | <xref target="RFC1793" format="default"/>, Traffic Engineering (TE) <xref ta | |||
/xref>, | rget="RFC3630" format="default"/>, | |||
multiple address family <xref target="RFC5838"></xref>, graceful restart | multiple address families <xref target="RFC5838" format="default"/>, gracefu | |||
<xref target="RFC3623"></xref> <xref target="RFC5187"></xref>, | l restart | |||
NSSA <xref target="RFC3101"></xref>, and OSPFv2 or OSPFv3 as a PE-CE Protoco | <xref target="RFC3623" format="default"/> <xref target="RFC5187" format="def | |||
l | ault"/>, | |||
<xref target="RFC4577"></xref>, <xref target="RFC6565"></xref>. | the Not-So-Stubby Area (NSSA) option <xref target="RFC3101" | |||
format="default"/>, and OSPFv2 or OSPFv3 as a Provider Edge to Customer | ||||
Edge (PE-CE) protocol | ||||
<xref target="RFC4577" format="default"/> <xref target="RFC6565" format="def | ||||
ault"/>. | ||||
These non-core features are optional in the OSPF data model.</t> | These non-core features are optional in the OSPF data model.</t> | |||
<section numbered="true" toc="default"> | ||||
<section title="Requirements Language"> | <name>Requirements Language</name> | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", | |||
"MAY", and "OPTIONAL" in this document are to be interpreted as | "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", | |||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | "<bcp14>SHOULD NOT</bcp14>", | |||
when, and only when, they appear in all capitals, as shown here.</t> | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
</section> | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document | |||
<section title="Tree Diagrams"> | are to be interpreted as described in BCP 14 | |||
<t>This document uses the graphical representation of data models | <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only | |||
defined in <xref target="RFC8340"/>.</t> | when, they appear in all capitals, as shown here.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<name>Tree Diagrams</name> | ||||
<t>This document uses the graphical representation of data models | ||||
per <xref target="RFC8340" format="default"/>.</t> | ||||
</section> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Design of Data Model"> | <name>Design of Data Model</name> | |||
<t>Although the basis of OSPF configuration elements like routers, | <t>Although the basis of OSPF configuration elements like routers, | |||
areas, and interfaces remains the same, the detailed configuration | areas, and interfaces remains the same, the detailed configuration | |||
model varies among router vendors. Differences are observed in terms | model varies among router vendors. Differences are observed in terms | |||
of how the protocol instance is tied to the routing domain and how multiple | of how the protocol instance is tied to the routing domain and how multiple | |||
protocol instances are be instantiated among others.</t> | protocol instances are to be instantiated among others. | |||
<t>The goal of this document is to define a data model that provides a commo | ||||
n user | <!-- [rfced] Section 2: Does "instantiated among others" mean | |||
interface to the OSPFv2 and OSPFv3 protocols. There is very little informati | "instantiated, among other things", "instantiated among other | |||
on that is | protocol instances", or something else? | |||
Original ("are be" has been fixed): | ||||
Differences are observed in terms | ||||
of how the protocol instance is tied to the routing domain and how | ||||
multiple protocol instances are be instantiated among others. | ||||
Perhaps: | ||||
Differences are observed in various aspects, including in terms | ||||
of how the protocol instance is tied to the routing domain and how | ||||
multiple protocol instances are instantiated. | ||||
--> | ||||
</t> | ||||
<t>The goal of this document is to define a data model that provides a us | ||||
er interface that is common to both OSPFv2 and OSPFv3. | ||||
<!-- [rfced] Section 2: As it appears that "common" here indicates | ||||
that OSPFv2 and OSPFv3 have the user interface in common (as opposed | ||||
"often seen"), we updated this sentence accordingly. Please let us | ||||
know if this is incorrect. | ||||
Original: | ||||
The goal of this document is to define a data model that provides a | ||||
common user interface to the OSPFv2 and OSPFv3 protocols. | ||||
Currently: | ||||
The goal of this document is to define a data model that provides a | ||||
user interface that is common to both OSPFv2 and OSPFv3. --> | ||||
There is very little information that is | ||||
designated as "mandatory", providing freedom for vendors to adapt this data model to their | designated as "mandatory", providing freedom for vendors to adapt this data model to their | |||
respective product implementations.</t> | respective product implementations.</t> | |||
<section title="OSPF Operational State"> | <section numbered="true" toc="default"> | |||
<t>The OSPF operational state is included in the same tree as OSPF configura | <name>OSPF Operational State</name> | |||
tion | <t>The OSPF operational state is included in the same tree as OSPF confi | |||
guration, | ||||
consistent with the Network Management Datastore Architecture | consistent with the Network Management Datastore Architecture | |||
<xref target="RFC8342"></xref>. Consequently, only the routing container | <xref target="RFC8342" format="default"/>. Consequently, only the "routing" | |||
in the ietf-routing model <xref target="RFC8349"/> is augmented. The routing | container | |||
-state container | in the "ietf-routing" model <xref target="RFC8349" format="default"/> is aug | |||
mented; the "routing-state" container | ||||
is not augmented.</t> | is not augmented.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Overview"> | <name>Overview</name> | |||
<t>The OSPF YANG module defined in this document has all the common building | <t>The OSPF YANG module defined in this document has all the common buil | |||
ding | ||||
blocks for the OSPF protocol.</t> | blocks for the OSPF protocol.</t> | |||
<t>The OSPF YANG module augments the /routing/control-plane-protocols/contro | <t>The OSPF YANG module augments the "/routing/control-plane-protocols/c | |||
l-plane-protocol | ontrol-plane-protocol" | |||
path defined in the ietf-routing module. The ietf-ospf model defines a singl | path defined in the "ietf-routing" module. The "ietf-ospf" model defines a s | |||
e instance of | ingle instance of | |||
OSPF which may be instantiated as an OSPFv2 or OSPFv3 instance. Multiple ins | OSPF that may be instantiated as an OSPFv2 or OSPFv3 instance. Multiple inst | |||
tances are | ances are | |||
instantiated as multiple control-plane protocols instances.</t> | instantiated as multiple control-plane protocol instances.</t> | |||
<sourcecode name="" type="yangtree"><![CDATA[ | ||||
<figure align="center"> | ||||
<artwork align="left"> | ||||
module: ietf-ospf | module: ietf-ospf | |||
augment /rt:routing/rt:control-plane-protocols/ | augment /rt:routing/rt:control-plane-protocols/ | |||
rt:control-plane-protocol: | rt:control-plane-protocol: | |||
+--rw ospf | +--rw ospf | |||
. | . | |||
. | . | |||
+--rw af? identityref | +--rw af? identityref | |||
. | . | |||
. | . | |||
+--rw areas | +--rw areas | |||
skipping to change at line 376 ¶ | skipping to change at line 252 ¶ | |||
| | +--rw sham-link* [local-id remote-id] | | | +--rw sham-link* [local-id remote-id] | |||
| | . | | | . | |||
| | . | | | . | |||
| +--rw interfaces | | +--rw interfaces | |||
| +--rw interface* [name] | | +--rw interface* [name] | |||
| . | | . | |||
| . | | . | |||
+--rw topologies {multi-topology}? | +--rw topologies {multi-topology}? | |||
+--rw topology* [name] | +--rw topology* [name] | |||
. | . | |||
. | .]]></sourcecode> | |||
</artwork> | ||||
</figure> | ||||
<t>The ospf container includes one OSPF protocol instance. | ||||
The instance includes OSPF router level configuration and operational | ||||
state. Each OSPF instance maps to a control-plane-protcol instance as | ||||
defined in <xref target="RFC8349"/>.</t> | ||||
<t>The area and area/interface containers | <t>The "ospf" container includes one OSPF protocol instance. | |||
The instance includes OSPF router-level configuration and operational | ||||
state. Each OSPF instance maps to a control-plane protocol instance as | ||||
defined in <xref target="RFC8349" format="default"/>.</t> | ||||
<t>The "area" and "area/interface" containers | ||||
define the OSPF configuration and operational state for OSPF areas | define the OSPF configuration and operational state for OSPF areas | |||
and interfaces respectively.</t> | and interfaces, respectively. | |||
<t>The topologies container defines the OSPF configuration and operational | <!-- [rfced] Section 2.2: We do not see a "container area" or | |||
state for OSPF topologies when the multi-topology feature is supported.</t> | "container interface", but we do see "container areas" and | |||
"container interfaces" (which appears to be a subcontainer of | ||||
"container areas", as opposed to the "container interface" that | ||||
appears under "grouping notification-interface"). Please let us | ||||
know if this sentence should be updated. | ||||
</section> | Original: | |||
The area and area/interface containers define the OSPF configuration | ||||
and operational state for OSPF areas and interfaces respectively. --> | ||||
<section title="OSPFv2 and OSPFv3"> | </t> | |||
<t>The data model defined herein supports both OSPFv2 and OSPFv3.</t> | <t>The "topologies" container defines the OSPF configuration and operati | |||
<t>The field 'version' is used to indicate the OSPF version and is | onal | |||
state for OSPF topologies when the "multi-topology" feature is supported.</t | ||||
> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>OSPFv2 and OSPFv3</name> | ||||
<t>The data model defined herein supports both OSPFv2 and OSPFv3.</t> | ||||
<t>The "version" field is used to indicate the OSPF version and is | ||||
mandatory. Based on the configured version, the data model varies | mandatory. Based on the configured version, the data model varies | |||
to accommodate the differences between OSPFv2 and OSPFv3.</t> | to accommodate the differences between OSPFv2 and OSPFv3.</t> | |||
</section> | </section> | |||
<section title="Optional Features"> | <section numbered="true" toc="default"> | |||
<t>Optional features are beyond the basic OSPF configuration and | <name>Optional Features</name> | |||
it is the responsibility of each vendor to decide whether to | <t>Optional features go beyond the basic OSPF configuration. | |||
<!-- [rfced] Section 2.4: We changed "are beyond" to "go beyond" | ||||
in this sentence. If this is incorrect, please clarify the | ||||
meaning of "are beyond" here. | ||||
Original: | ||||
Optional features are beyond the basic OSPF configuration and it is | ||||
the responsibility of each vendor to decide whether to support a | ||||
given feature on a particular device. | ||||
Currently: | ||||
Optional features go beyond the basic OSPF configuration. It is the | ||||
responsibility of each vendor to decide whether to support a given | ||||
feature on a particular device. --> | ||||
It is the responsibility of each vendor to decide whether to | ||||
support a given feature on a particular device.</t> | support a given feature on a particular device.</t> | |||
<t>This model defines the following optional features: | <t>This model defines the following optional features: | |||
<list style="numbers"> | </t> | |||
<t>multi-topology: Support Multi-Topology Routing (MTR) | <dl newline="false" spacing="normal"> | |||
<xref target="RFC4915"/>.</t> | <dt>multi-topology:</dt><dd>Support for Multi-Topology (MT) routing | |||
<t>multi-area-adj: Support OSPF multi-area adjacency | <xref target="RFC4915" format="default"/>.</dd> | |||
<xref target="RFC5185"/>.</t> | <dt>multi-area-adj:</dt><dd>Support for OSPF multi-area adjacencies | |||
<t>explicit-router-id: Support explicit per-instance Router-ID | <xref target="RFC5185" format="default"/>.</dd> | |||
specification.</t> | <dt>explicit-router-id:</dt><dd>Support for the specification of an ex | |||
<t>demand-circuit: Support OSPF demand circuits | plicit per-instance Router ID.</dd> | |||
<xref target="RFC1793"/>.</t> | <dt>demand-circuit:</dt><dd>Support for OSPF demand circuits | |||
<t>mtu-ignore: Support disabling OSPF Database Description | <xref target="RFC1793" format="default"/>.</dd> | |||
packet MTU mismatch checking specified in section 10.6 of | <dt>mtu-ignore:</dt><dd>Support for the disabling of OSPF Database Des | |||
<xref target="RFC2328"/>.</t> | cription | |||
<t>lls: Support OSPF link-local signaling (LLS) | packet MTU mismatch checking as specified in <xref target="RFC2328" | |||
<xref target="RFC5613"/>.</t> | sectionFormat="of" section="10.6"/>.</dd> | |||
<t>prefix-suppression: Support OSPF prefix advertisement | <dt>lls:</dt><dd>Support for OSPF link-local signaling (LLS) | |||
suppression <xref target="RFC6860"/>.</t> | <xref target="RFC5613" format="default"/>.</dd> | |||
<t>ttl-security: Support OSPF Time to Live (TTL) security check | <dt>prefix-suppression:</dt><dd>Support for OSPF prefix advertisement | |||
support <xref target="RFC5082"/>.</t> | suppression <xref target="RFC6860" format="default"/>.</dd> | |||
<t>nsr: Support OSPF Non-Stop Routing (NSR). The OSPF NSR feature allows | <dt>ttl-security:</dt><dd>Support for OSPF Time to Live (TTL) security | |||
a router with redundant control-plane capability (e.g., dual Route-Proc | checking | |||
essor (RP) | <xref target="RFC5082" format="default"/>.</dd> | |||
<dt>nsr:</dt><dd>Support for OSPF Non-Stop Routing (NSR). The OSPF NSR | ||||
feature allows a router with redundant control-plane capability (e.g., dual Rou | ||||
te Processor (RP) | ||||
cards) to maintain its state and adjacencies during planned and unplann ed | cards) to maintain its state and adjacencies during planned and unplann ed | |||
control-plane processing restarts. It differs from graceful-restart or Non-Stop | control-plane processing restarts. It differs from graceful restart or Non-Stop | |||
Forwarding (NSF) in that no protocol signaling or assistance from adjac ent OSPF | Forwarding (NSF) in that no protocol signaling or assistance from adjac ent OSPF | |||
neighbors is required to recover control-plane state.</t> | neighbors is required to recover control-plane state.</dd> | |||
<t>graceful-restart: Support Graceful OSPF Restart | <dt>graceful-restart:</dt><dd>Support for graceful OSPF restart | |||
<xref target="RFC3623"/>, <xref target="RFC5187"/>.</t> | <xref target="RFC3623" format="default"/> <xref target="RFC5187" forma | |||
<t>auto-cost: Support OSPF interface cost calculation according to | t="default"/>.</dd> | |||
reference bandwidth <xref target="RFC2328"/>.</t> | <dt>auto-cost:</dt><dd>Support for OSPF interface cost calculations ac | |||
<t>max-ecmp: Support configuration of the maximum number of | cording to | |||
Equal-Cost Multi-Path (ECMP) paths.</t> | reference bandwidth <xref target="RFC2328" format="default"/>.</dd> | |||
<t>max-lsa: Support configuration of the maximum number of LSAs | <dt>max-ecmp:</dt><dd>Support for configuration of the maximum number | |||
the OSPF instance will accept <xref target="RFC1765"/>.</t> | of | |||
<t>te-rid: Support configuration of the Traffic Engineering (TE) | Equal-Cost Multi-Path (ECMP) paths.</dd> | |||
Router-ID, i.e., the Router Address described in Section 2.4.1 | <dt>max-lsa:</dt><dd>Support for configuration of the maximum number | |||
of <xref target="RFC3630"/> or the Router IPv6 Address TLV | of Link State Advertisements (LSAs) | |||
described in Section 3 of <xref target="RFC5329"/>.</t> | the OSPF instance will accept <xref target="RFC1765" format="default"/ | |||
<t>ldp-igp-sync: Support LDP IGP synchronization | >.</dd> | |||
<xref target="RFC5443"/>.</t> | <dt>te-rid:</dt><dd>Support for configuration of the Traffic Engineeri | |||
<t>ospfv2-authentication-trailer: Support OSPFv2 Authentication | ng (TE) | |||
trailer as specified in <xref target="RFC5709"/> or | Router ID, i.e., the Router Address TLV as described in <xref | |||
<xref target="RFC7474"/>.</t> | target="RFC3630" sectionFormat="of" section="2.4.1"/> or the Router | |||
<t>ospfv3-authentication-ipsec: Support IPsec for OSPFv3 | IPv6 Address TLV as | |||
authentication <xref target="RFC4552"/>.</t> | described in <xref target="RFC5329" sectionFormat="of" section="3"/>.< | |||
<t>ospfv3-authentication-trailer: Support OSPFv3 Authentication | /dd> | |||
trailer as specified in <xref target="RFC7166"/>.</t> | <dt>ldp-igp-sync:</dt><dd>Support for LDP IGP synchronization | |||
<t>fast-reroute: Support IP Fast Reroute (IP-FRR) | <xref target="RFC5443" format="default"/>.</dd> | |||
<xref target="RFC5714"/>.</t> | <dt>ospfv2-authentication-trailer:</dt><dd>Support for the OSPFv2 Auth | |||
<t>node-flag: Support node-flag for OSPF prefixes. | entication | |||
<xref target="RFC7684"/>.</t> | Trailer as specified in <xref target="RFC5709" format="default"/> and | |||
<t>node-tag: Support node admin tag for OSPF instances | <xref target="RFC7474" format="default"/>.</dd> | |||
<xref target="RFC7777"/>.</t> | <dt>ospfv3-authentication-ipsec:</dt><dd>Support for IPsec for OSPFv3 | |||
<t>lfa: Support Loop-Free Alternates (LFAs) | authentication <xref target="RFC4552" format="default"/>.</dd> | |||
<xref target="RFC5286"/>.</t> | <dt>ospfv3-authentication-trailer:</dt><dd>Support for the OSPFv3 Auth | |||
<t>remote-lfa: Support Remote Loop-Free Alternates (R-LFA) | entication | |||
<xref target="RFC7490"/>.</t> | Trailer as specified in <xref target="RFC7166" format="default"/>.</dd | |||
<t>stub-router: Support RFC 6987 OSPF Stub Router | > | |||
advertisement <xref target="RFC6987"/>.</t> | <dt>fast-reroute:</dt><dd>Support for IP Fast Reroute (IP-FRR) | |||
<t>pe-ce-protocol: Support OSPF as a PE-CE protocol | <xref target="RFC5714" format="default"/>.</dd> | |||
<xref target="RFC4577"/>, <xref target="RFC6565"/>.</t> | <dt>node-flag:</dt><dd>Support for node flags for OSPF prefixes | |||
<t>ietf-spf-delay: Support IETF SPF delay algorithm | <xref target="RFC7684" format="default"/>.</dd> | |||
<xref target="RFC8405"/>.</t> | <dt>node-tag:</dt><dd>Support for node administrative tags for OSPF in | |||
<t>bfd: Support BFD detection of OSPF neighbor reachability | stances | |||
<xref target="RFC5880"/>, <xref target="RFC5881"/>, | <xref target="RFC7777" format="default"/>.</dd> | |||
and <xref target="I-D.ietf-bfd-yang"/>.</t> | <dt>lfa:</dt><dd>Support for Loop-Free Alternates (LFAs) | |||
<t>hybrid-interface: Support OSPF Hybrid Broadcast and Point-to-Point | <xref target="RFC5286" format="default"/>.</dd> | |||
Interfaces <xref target="RFC6845"/>.</t> | <dt>remote-lfa:</dt><dd>Support for Remote LFAs (R-LFAs) | |||
</list></t> | <xref target="RFC7490" format="default"/>.</dd> | |||
<t>It is expected that vendors will support additional | <dt>stub-router:</dt><dd>Support for OSPF stub router | |||
advertisements as defined in <xref target="RFC6987" format="default"/> | ||||
.</dd> | ||||
<dt>pe-ce-protocol:</dt><dd>Support for OSPF as a PE-CE protocol | ||||
<xref target="RFC4577" format="default"/> <xref target="RFC6565" forma | ||||
t="default"/>.</dd> | ||||
<dt>ietf-spf-delay:</dt><dd>Support for the IETF Shortest Path First ( | ||||
SPF) delay algorithm | ||||
<xref target="RFC8405" format="default"/>.</dd> | ||||
<dt>bfd:</dt><dd>Support for Bidirectional Forwarding Detection | ||||
(BFD) to detect OSPF neighbor reachability | ||||
<xref target="RFC5880" format="default"/> <xref target="RFC5881" | ||||
format="default"/> <xref target="RFC9127"/>.</dd> | ||||
<dt>hybrid-interface:</dt><dd>Support for OSPF Hybrid Broadcast and po | ||||
int-to-point | ||||
interfaces <xref target="RFC6845" format="default"/>.</dd> | ||||
<!-- [rfced] Section 2.4: Should "Point-to-Point Interfaces" be | ||||
"point-to-multipoint interfaces" or "a collection of point-to-point | ||||
interfaces" here, per RFC 6845? | ||||
Original: | ||||
28. hybrid-interface: Support OSPF Hybrid Broadcast and Point-to- | ||||
Point Interfaces [RFC6845]. --> | ||||
</dl> | ||||
<t>It is expected that vendors will support additional | ||||
features through vendor-specific augmentations.</t> | features through vendor-specific augmentations.</t> | |||
</section> | </section> | |||
<section title="OSPF Router Configuration/Operational State"> | <section numbered="true" toc="default"> | |||
<t>The ospf container is the top-level container in this data model. | <name>OSPF Router Configuration / Operational State</name> | |||
It represents an OSPF protocol instance and contains the router level | <t>The "ospf" container is the top-level container in this data model. | |||
It represents an OSPF protocol instance and contains the router-level | ||||
configuration and operational state. | configuration and operational state. | |||
The operational state includes the instance statistics, IETF SPF delay stati | The operational state includes instance statistics, IETF SPF delay statistic | |||
stics, | s, | |||
AS-Scoped Link State Database, local RIB, SPF Log, and the LSA log.</t> | the AS-Scoped Link State Database (LSDB), the local RIB, the SPF log, and th | |||
e LSA log. ("AS" stands for "Autonomous System".)</t> | ||||
<figure align="center"> | <sourcecode name="" type="yangtree"><![CDATA[ | |||
<artwork align="left"> | ||||
module: ietf-ospf | module: ietf-ospf | |||
augment /rt:routing/rt:control-plane-protocols/ | augment /rt:routing/rt:control-plane-protocols/ | |||
rt:control-plane-protocol: | rt:control-plane-protocol: | |||
+--rw ospf | +--rw ospf | |||
. | . | |||
. | . | |||
+--rw af iana-rt-types:address-family | +--rw af iana-rt-types:address-family | |||
+--rw enable? boolean | +--rw enable? boolean | |||
+--rw explicit-router-id? rt-types:router-id | +--rw explicit-router-id? rt-types:router-id | |||
| {explicit-router-id}? | | {explicit-router-id}? | |||
skipping to change at line 637 ¶ | skipping to change at line 548 ¶ | |||
| +--ro lsa | | +--ro lsa | |||
| | +--ro area-id? area-id-type | | | +--ro area-id? area-id-type | |||
| | +--ro link-id? union | | | +--ro link-id? union | |||
| | +--ro type? uint16 | | | +--ro type? uint16 | |||
| | +--ro lsa-id? yang:dotted-quad | | | +--ro lsa-id? yang:dotted-quad | |||
| | +--ro adv-router? yang:dotted-quad | | | +--ro adv-router? yang:dotted-quad | |||
| | +--ro seq-num? uint32 | | | +--ro seq-num? uint32 | |||
| +--ro received-timestamp? yang:timestamp | | +--ro received-timestamp? yang:timestamp | |||
| +--ro reason? identityref | | +--ro reason? identityref | |||
. | . | |||
. | .]]></sourcecode> | |||
</artwork> | ||||
</figure> | <!-- [rfced] Sections 2.5, 2.6, and 2.7: Please confirm that the | |||
</section> | instances of the "rw enable?" and "leaf enable {" booleans should | |||
<section title="OSPF Area Configuration/Operational State"> | not be "rw enabled?" and "leaf enabled {". We ask because we see | |||
<t>The area container contains OSPF area configuration and the list | the "enabled" form used more often for such booleans in | |||
published RFCs. --> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>OSPF Area Configuration / Operational State</name> | ||||
<t>The "area" container contains OSPF area configuration and the list | ||||
of interface containers representing all the OSPF interfaces | of interface containers representing all the OSPF interfaces | |||
in the area. | in the area. | |||
The area operational state includes the area statistics and the Area | The area operational state includes area statistics and the area | |||
Link State Database (LSDB).</t> | LSDB.</t> | |||
<sourcecode name="" type="yangtree"><![CDATA[ | ||||
<figure align="center"> | ||||
<artwork align="left"> | ||||
module: ietf-ospf | module: ietf-ospf | |||
augment /rt:routing/rt:control-plane-protocols/ | augment /rt:routing/rt:control-plane-protocols/ | |||
rt:control-plane-protocol: | rt:control-plane-protocol: | |||
+--rw ospf | +--rw ospf | |||
. | . | |||
. | . | |||
+--rw areas | +--rw areas | |||
| +--rw area* [area-id] | | +--rw area* [area-id] | |||
| +--rw area-id area-id-type | | +--rw area-id area-id-type | |||
| +--rw area-type? identityref | | +--rw area-type? identityref | |||
skipping to change at line 934 ¶ | skipping to change at line 849 ¶ | |||
| | | +--ro statistics | | | | +--ro statistics | |||
| | | +--ro nbr-event-count? | | | | +--ro nbr-event-count? | |||
| | | yang:counter32 | | | | yang:counter32 | |||
| | | +--ro nbr-retrans-qlen? | | | | +--ro nbr-retrans-qlen? | |||
| | | yang:gauge32 | | | | yang:gauge32 | |||
| | +--ro database | | | +--ro database | |||
| | +--ro link-scope-lsa-type* [lsa-type] | | | +--ro link-scope-lsa-type* [lsa-type] | |||
| | +--ro lsa-type uint16 | | | +--ro lsa-type uint16 | |||
| | +--ro link-scope-lsas | | | +--ro link-scope-lsas | |||
. . | . . | |||
. . | . .]]></sourcecode> | |||
</artwork> | ||||
</figure> | </section> | |||
</section> | <section numbered="true" toc="default"> | |||
<section title="OSPF Interface Configuration/Operational State"> | <name>OSPF Interface Configuration / Operational State</name> | |||
<t>The interface container contains OSPF interface configuration | <t>The "interface" container contains OSPF interface configuration | |||
and operational state. | and operational state. | |||
The interface operational state includes the statistics, list of | The interface operational state includes the statistics, the list of | |||
neighbors, and Link-Local Link State Database (LSDB).</t> | neighbors, and the link-local LSDB. | |||
<figure align="left"> | ||||
<artwork align="left"> | <!-- [rfced] Section 2.7: What type or types of statistics are | |||
discussed here (e.g., interface statistics, operational statistics, | ||||
or something else?). | ||||
Original: | ||||
The interface operational state includes the | ||||
statistics, list of neighbors, and Link-Local Link State Database | ||||
(LSDB). --> | ||||
</t> | ||||
<sourcecode name="" type="yangtree"><![CDATA[ | ||||
module: ietf-ospf | module: ietf-ospf | |||
augment /rt:routing/rt:control-plane-protocols/ | augment /rt:routing/rt:control-plane-protocols/ | |||
rt:control-plane-protocol: | rt:control-plane-protocol: | |||
+--rw ospf | +--rw ospf | |||
. | . | |||
. | . | |||
+--rw areas | +--rw areas | |||
| +--rw area* [area-id] | | +--rw area* [area-id] | |||
| . | | . | |||
| . | | . | |||
skipping to change at line 1075 ¶ | skipping to change at line 1000 ¶ | |||
| . +--ro link-scope-lsas | | . +--ro link-scope-lsas | |||
. . | . . | |||
. . | . . | |||
| +--rw topologies {ospf:multi-topology}? | | +--rw topologies {ospf:multi-topology}? | |||
| | +--rw topology* [name] | | | +--rw topology* [name] | |||
| | +--rw name -> ../../../../../../../../ | | | +--rw name -> ../../../../../../../../ | |||
| | ../../../rt:ribs/rib/name | | | ../../../rt:ribs/rib/name | |||
| | +--rw cost? uint32 | | | +--rw cost? uint32 | |||
| +--rw instance-id? uint8 | | +--rw instance-id? uint8 | |||
. | . | |||
. | .]]></sourcecode> | |||
</artwork> | ||||
</figure> | </section> | |||
</section> | <section numbered="true" toc="default"> | |||
<section title="OSPF Notifications"> | <name>OSPF Notifications</name> | |||
<t>This YANG model defines a list of notifications that inform YANG | <t>This YANG data model defines a list of notifications that inform YANG | |||
clients of important events detected during protocol operation. The | clients of important events detected during protocol operation. | |||
<!-- [rfced] Sections 2.8 and 3: We have received guidance from | ||||
Benoit Claise and the YANG Doctors that "YANG module" and "YANG | ||||
data model" are preferred. We have updated this document accordingly. | ||||
Please let us know any concerns. | ||||
Original (note that "8242" has been corrected): | ||||
This YANG model defines a list of notifications that inform YANG | ||||
clients of important events detected during protocol operation. | ||||
... | ||||
This YANG model conforms to the Network Management | ||||
Datastore Architecture (NMDA) as described in RFC 8242. | ||||
Currently: | ||||
This YANG data model defines a list of notifications that inform YANG | ||||
clients of important events detected during protocol operation. | ||||
... | ||||
This YANG data model conforms to the Network Management | ||||
Datastore Architecture (NMDA) as described in RFC 8342. --> | ||||
The | ||||
defined notifications cover the common set of traps from the OSPFv2 MIB | defined notifications cover the common set of traps from the OSPFv2 MIB | |||
<xref target="RFC4750"></xref> and OSPFv3 MIB <xref target="RFC5643"></xref> | <xref target="RFC4750" format="default"/> and OSPFv3 MIB <xref target="RFC56 | |||
.</t> | 43" format="default"/>.</t> | |||
<figure align="left"> | <sourcecode name="" type="yangtree"><![CDATA[ | |||
<artwork align="left"> | ||||
notifications: | notifications: | |||
+---n if-state-change | +---n if-state-change | |||
| +--ro routing-protocol-name? | | +--ro routing-protocol-name? | |||
| + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| + control-plane-protocol/name | | + control-plane-protocol/name | |||
| +--ro af? | | +--ro af? | |||
| + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| + control-plane-protocol | | + control-plane-protocol | |||
| + [rt:name=current()/../routing-protocol-name]/ | | + [rt:name=current()/../routing-protocol-name]/ | |||
| + ospf:ospf/af | | + ospf:ospf/af | |||
skipping to change at line 1253 ¶ | skipping to change at line 1198 ¶ | |||
+--ro routing-protocol-name? | +--ro routing-protocol-name? | |||
+ -> /rt:routing/control-plane-protocols/ | + -> /rt:routing/control-plane-protocols/ | |||
+ control-plane-protocol/name | + control-plane-protocol/name | |||
+--ro af? | +--ro af? | |||
+ -> /rt:routing/control-plane-protocols/ | + -> /rt:routing/control-plane-protocols/ | |||
+ control-plane-protocol | + control-plane-protocol | |||
+ [rt:name=current()/../routing-protocol-name]/ | + [rt:name=current()/../routing-protocol-name]/ | |||
+ ospf:ospf/af | + ospf:ospf/af | |||
+--ro status? restart-status-type | +--ro status? restart-status-type | |||
+--ro restart-interval? uint16 | +--ro restart-interval? uint16 | |||
+--ro exit-reason? restart-exit-reason-type | +--ro exit-reason? restart-exit-reason-type]]></sourcecode> | |||
</artwork> | ||||
</figure> | </section> | |||
</section> | <section numbered="true" toc="default"> | |||
<section title="OSPF RPC Operations"> | <name>OSPF RPC Operations</name> | |||
<t>The "ietf-ospf" module defines two RPC operations: | <t>The "ietf-ospf" module defines two RPC operations: | |||
<list style="symbols"> | </t> | |||
<t>clear-database: reset the content of a particular OSPF | <dl newline="false" spacing="normal"> | |||
Link State Database.</t> | <dt>clear-database:</dt><dd>Resets the contents of a particular OSPF | |||
<t>clear-neighbor: Reset a particular OSPF neighbor or group of neighbors | LSDB.</dd> | |||
associated | <dt>clear-neighbor:</dt><dd>Resets a particular OSPF neighbor or group | |||
with an OSPF interface.</t> | of neighbors associated | |||
</list></t> | with an OSPF interface.</dd> | |||
<figure align="left"> | </dl> | |||
<artwork align="left"> | <sourcecode name="" type="yangtree"><![CDATA[ | |||
rpcs: | rpcs: | |||
+---x clear-neighbor | +---x clear-neighbor | |||
| +---w input | | +---w input | |||
| +---w routing-protocol-name | | +---w routing-protocol-name | |||
| + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| + control-plane-protocol/name | | + control-plane-protocol/name | |||
| +---w interface? if:interface-ref | | +---w interface? if:interface-ref | |||
+---x clear-database | +---x clear-database | |||
+---w input | +---w input | |||
+---w routing-protocol-name | +---w routing-protocol-name | |||
-> /rt:routing/control-plane-protocols/ | -> /rt:routing/control-plane-protocols/ | |||
control-plane-protocol/name | control-plane-protocol/name]]></sourcecode> | |||
</artwork> | ||||
</figure> | </section> | |||
</section> | </section> | |||
</section> | <section numbered="true" toc="default"> | |||
<name>OSPF YANG Module</name> | ||||
<t>The following RFCs are referenced in the "ietf-ospf" YANG module: | ||||
<xref target="RFC0905" format="default"/>, | ||||
<xref target="RFC1765"/>, <xref target="RFC1793"/>, | ||||
<xref target="RFC2328"/>, <xref target="RFC3101"/>, | ||||
<xref target="RFC3623"/>, <xref target="RFC3630"/>, | ||||
<xref target="RFC4552"/>, <xref target="RFC4576" format="default"/>, | ||||
<xref target="RFC4577"/>, <xref target="RFC4915"/>, | ||||
<xref target="RFC4973" format="default"/>, | ||||
<xref target="RFC5082"/>, <xref target="RFC5185"/>, | ||||
<xref target="RFC5187"/>, <xref target="RFC5250" format="default"/>, | ||||
<xref target="RFC5286"/>, | ||||
<xref target="RFC5309" format="default"/>, <xref target="RFC5329"/>, | ||||
<xref target="RFC5340"/>, | ||||
<xref target="RFC5443"/>, <xref target="RFC5613"/>, | ||||
<xref target="RFC5642" format="default"/>, | ||||
<xref target="RFC5709"/>, <xref target="RFC5714"/>, | ||||
<xref target="RFC5838"/>, | ||||
<xref target="RFC5880"/>, <xref target="RFC5881" format="default"/>, | ||||
<xref target="RFC6565"/>, <xref target="RFC6845"/>, | ||||
<xref target="RFC6860"/>, | ||||
<xref target="RFC6987"/>, <xref target="RFC6991" format="default"/>, | ||||
<xref target="RFC7166"/>, <xref target="RFC7474"/>, | ||||
<xref target="RFC7490"/>, <xref target="RFC7684"/>, | ||||
<xref target="RFC7770" format="default"/>, | ||||
<xref target="RFC7777"/>, <xref target="RFC7884" format="default"/>, | ||||
<xref target="RFC8177"/>, <xref target="RFC8294" format="default"/>, | ||||
<xref target="RFC8343"/>, <xref target="RFC8349"/>, | ||||
<xref target="RFC8405"/>, <xref target="RFC8476" format="default"/>, | ||||
and <xref target="RFC9127"/>. | ||||
<section title="OSPF YANG Module"> | <!-- [rfced] Section 3: For ease of the reader, we updated this | |||
<t>The following RFCs and drafts are not referenced in the document text but | paragraph to include all references cited in the YANG module. | |||
are referenced in the ietf-ospf.yang module: <xref target="RFC0905"/>, | ||||
<xref target="RFC4576"/>, <xref target="RFC4973"/>, <xref target="RFC5250"/ | Additionally, to make the YANG module self-contained (i.e., when the | |||
>, | module is stripped from the RFC, the module can stand alone without | |||
<xref target="RFC5309"/>, <xref target="RFC5642"/>, <xref target="RFC5881"/ | relying on other parts of the RFC), we added reference entries in | |||
>, | certain instances. | |||
<xref target="RFC6991"/>, <xref target="RFC7770"/>, <xref target="RFC7884"/ | ||||
>, | Please review, and let us know any concerns. | |||
<xref target="RFC8294"/>, and <xref target="RFC8476"/>. | ||||
</t> | Original: | |||
<t> | The following RFCs and drafts are not referenced in the document text | |||
<figure> | but are referenced in the ietf-ospf.yang module: [RFC0905], | |||
<artwork><![CDATA[ | [RFC4576], [RFC4973], [RFC5250], [RFC5309], [RFC5642], [RFC5881], | |||
<CODE BEGINS> file "ietf-ospf@2019-10-17.yang" | [RFC6991], [RFC7770], [RFC7884], [RFC8294], and [RFC8476]. | |||
Currently: | ||||
The following RFCs are referenced in the "ietf-ospf" YANG module: | ||||
[RFC0905], [RFC1765], [RFC1793], [RFC2328], [RFC3101], [RFC3623], | ||||
[RFC3630], [RFC4552], [RFC4576], [RFC4577], [RFC4915], [RFC4973], | ||||
[RFC5082], [RFC5185], [RFC5187], [RFC5250], [RFC5286], [RFC5309], | ||||
[RFC5329], [RFC5340], [RFC5443], [RFC5613], [RFC5642], [RFC5709], | ||||
[RFC5714], [RFC5838], [RFC5880], [RFC5881], [RFC6565], [RFC6845], | ||||
[RFC6860], [RFC6987], [RFC6991], [RFC7166], [RFC7474], [RFC7490], | ||||
[RFC7684], [RFC7770], [RFC7777], [RFC7884], [RFC8177], [RFC8294], | ||||
[RFC8343], [RFC8349], [RFC8405], [RFC8476], and [RFC9127]. --> | ||||
</t> | ||||
<!-- Lynne: If authors don't agree to the new doc. title, | ||||
fix the "RFC 9129:" entry. --> | ||||
<!--[rfced] Section 3: May we update the YANG module as shown in | ||||
this diff file? | ||||
https://www.rfc-editor.org/authors/ietf-ospf-rfcdiff.html | ||||
The diff compares the current module to the output of the formatting | ||||
tool. Per guidance from Martin Bjorklund, this is using pyang to format the | ||||
module (as described on https://trac.ietf.org/trac/ops/wiki/yang-review-tools). | ||||
To be clear, with or without the formatting updates, the YANG module parses. | ||||
--> | ||||
<sourcecode name="ietf-ospf@2021-09-03.yang" type="yang" markers="true"><! | ||||
[CDATA[ | ||||
module ietf-ospf { | module ietf-ospf { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-ospf"; | namespace "urn:ietf:params:xml:ns:yang:ietf-ospf"; | |||
prefix ospf; | prefix ospf; | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix "inet"; | prefix "inet"; | |||
reference "RFC 6991: Common YANG Data Types"; | reference | |||
"RFC 6991: Common YANG Data Types"; | ||||
} | } | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix "yang"; | prefix "yang"; | |||
reference "RFC 6991: Common YANG Data Types"; | reference | |||
"RFC 6991: Common YANG Data Types"; | ||||
} | } | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix "if"; | prefix "if"; | |||
reference "RFC 8343: A YANG Data Model for Interface | reference | |||
Management (NMDA Version)"; | "RFC 8343: A YANG Data Model for Interface Management"; | |||
} | } | |||
import ietf-routing-types { | import ietf-routing-types { | |||
prefix "rt-types"; | prefix "rt-types"; | |||
reference "RFC 8294: Common YANG Data Types for the | reference | |||
Routing Area"; | "RFC 8294: Common YANG Data Types for the Routing Area"; | |||
} | } | |||
import iana-routing-types { | import iana-routing-types { | |||
prefix "iana-rt-types"; | prefix "iana-rt-types"; | |||
reference "RFC 8294: Common YANG Data Types for the | reference | |||
Routing Area"; | "RFC 8294: Common YANG Data Types for the Routing Area"; | |||
} | } | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix "rt"; | |||
reference "RFC 8349: A YANG Data Model for Routing | reference | |||
Management (NMDA Version)"; | "RFC 8349: A YANG Data Model for Routing Management | |||
(NMDA Version)"; | ||||
} | } | |||
import ietf-key-chain { | import ietf-key-chain { | |||
prefix "key-chain"; | prefix "key-chain"; | |||
reference "RFC 8177: YANG Data Model for Key Chains"; | reference | |||
"RFC 8177: YANG Data Model for Key Chains"; | ||||
} | } | |||
import ietf-bfd-types { | import ietf-bfd-types { | |||
prefix "bfd-types"; | prefix "bfd-types"; | |||
reference "RFC YYYY: YANG Data Model for Bidirectional | reference | |||
Forwarding Detection (BFD). Please replace YYYY with | "RFC 9127: YANG Data Model for Bidirectional Forwarding | |||
published RFC number for draft-ietf-bfd-yang."; | Detection (BFD)"; | |||
} | } | |||
organization | organization | |||
"IETF LSR - Link State Routing Working Group"; | "IETF Link State Routing (lsr) Working Group"; | |||
contact | contact | |||
"WG Web: <https://datatracker.ietf.org/group/lsr/> | "WG Web: <https://datatracker.ietf.org/wg/lsr/> | |||
WG List: <mailto:lsr@ietf.org> | WG List: <mailto:lsr@ietf.org> | |||
Editor: Derek Yeung | Editor: Derek Yeung | |||
<mailto:derek@arrcus.com> | <mailto:derek@arrcus.com> | |||
Author: Acee Lindem | Author: Acee Lindem | |||
<mailto:acee@cisco.com> | <mailto:acee@cisco.com> | |||
Author: Yingzhen Qu | Author: Yingzhen Qu | |||
<mailto:yingzhen.qu@futurewei.com> | <mailto:yingzhen.qu@futurewei.com> | |||
Author: Salih K A | Author: Salih K A | |||
<mailto:salih@juniper.net> | <mailto:salih@juniper.net> | |||
Author: Ing-Wher Chen | Author: Ing-Wher Chen | |||
<mailto:ingwherchen@mitre.org>"; | <mailto:ingwherchen@mitre.org>"; | |||
description | description | |||
"This YANG module defines the generic configuration and | "This YANG module defines the generic configuration and | |||
operational state for the OSPF protocol common to all | operational state for the OSPF protocol common to all | |||
vendor implementations. It is intended that the module | vendor implementations. It is intended that the module | |||
will be extended by vendors to define vendor-specific | will be extended by vendors to define vendor-specific | |||
OSPF configuration parameters and policies, | OSPF configuration parameters and policies -- | |||
for example, route maps or route policies. | for example, route maps or route policies. | |||
This YANG model conforms to the Network Management | This YANG data model conforms to the Network Management | |||
Datastore Architecture (NMDA) as described in RFC 8242. | Datastore Architecture (NMDA) as described in RFC 8342. | |||
Copyright (c) 2018 IETF Trust and the persons identified as | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | ||||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
they appear in all capitals, as shown here. | ||||
Copyright (c) 2021 IETF Trust and the persons identified as | ||||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC 9129; see the | |||
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | RFC itself for full legal notices."; | |||
for full legal notices. | ||||
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | ||||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | ||||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
they appear in all capitals, as shown here. | ||||
This version of this YANG module is part of RFC XXXX; | ||||
see the RFC itself for full legal notices."; | ||||
revision 2019-10-17 { | revision 2021-09-03 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for OSPF."; | "RFC 9129: YANG Data Model for the OSPF Protocol"; | |||
} | } | |||
feature multi-topology { | feature multi-topology { | |||
description | description | |||
"Support Multiple-Topology Routing (MTR)."; | "Support for Multi-Topology (MT) routing."; | |||
reference "RFC 4915: Multi-Topology Routing"; | reference | |||
"RFC 4915: Multi-Topology (MT) Routing in OSPF"; | ||||
} | } | |||
feature multi-area-adj { | feature multi-area-adj { | |||
description | description | |||
"OSPF multi-area adjacency support as in RFC 5185."; | "Support for OSPF multi-area adjacencies as described in | |||
reference "RFC 5185: Multi-Area Adjacency"; | RFC 5185."; | |||
reference | ||||
"RFC 5185: OSPF Multi-Area Adjacency"; | ||||
} | } | |||
feature explicit-router-id { | feature explicit-router-id { | |||
description | description | |||
"Set Router-ID per instance explicitly."; | "Sets the Router ID per instance explicitly."; | |||
} | } | |||
feature demand-circuit { | feature demand-circuit { | |||
description | description | |||
"OSPF demand circuit support as in RFC 1793."; | "Support for OSPF demand circuits as defined in RFC 1793."; | |||
reference "RFC 1793: OSPF Demand Circuits"; | reference | |||
"RFC 1793: Extending OSPF to Support Demand Circuits"; | ||||
} | } | |||
feature mtu-ignore { | feature mtu-ignore { | |||
description | description | |||
"Disable OSPF Database Description packet MTU | "Disable OSPF Database Description packet MTU | |||
mismatch checking specified in the OSPF | mismatch checking as specified in the OSPFv2 | |||
protocol specification."; | protocol specification (RFC 2328)."; | |||
reference "RFC 2328: OSPF Version 2, section 10.6"; | reference | |||
"RFC 2328: OSPF Version 2, Section 10.6"; | ||||
} | } | |||
feature lls { | feature lls { | |||
description | description | |||
"OSPF link-local signaling (LLS) as in RFC 5613."; | "OSPF link-local signaling (LLS) as defined in RFC 5613."; | |||
reference "RFC 5613: OSPF Link-Local Signaling"; | reference | |||
"RFC 5613: OSPF Link-Local Signaling"; | ||||
} | } | |||
feature prefix-suppression { | feature prefix-suppression { | |||
description | description | |||
"OSPF prefix suppression support as in RFC 6860."; | "OSPF prefix suppression support as described in RFC 6860."; | |||
reference "RFC 6860: Hide Transit-Only Networks in OSPF"; | reference | |||
"RFC 6860: Hiding Transit-Only Networks in OSPF"; | ||||
} | } | |||
feature ttl-security { | feature ttl-security { | |||
description | description | |||
"OSPF Time to Live (TTL) security check support."; | "Support for OSPF Time to Live (TTL) security checking."; | |||
reference "RFC 5082: The Generalized TTL Security | reference | |||
Mechanism (GTSM)"; | "RFC 5082: The Generalized TTL Security Mechanism (GTSM)"; | |||
} | } | |||
feature nsr { | feature nsr { | |||
description | description | |||
"Non-Stop-Routing (NSR) support. The OSPF NSR feature | "Non-Stop-Routing (NSR) support. The OSPF NSR feature | |||
allows a router with redundant control-plane capability | allows a router with redundant control-plane capability | |||
(e.g., dual Route-Processor (RP) cards) to maintain its | (e.g., dual Route Processor (RP) cards) to maintain its | |||
state and adjacencies during planned and unplanned | state and adjacencies during planned and unplanned | |||
OSPF instance restarts. It differs from graceful-restart | OSPF instance restarts. It differs from graceful restart | |||
or Non-Stop Forwarding (NSF) in that no protocol signaling | or Non-Stop Forwarding (NSF) in that no protocol signaling | |||
or assistance from adjacent OSPF neighbors is required to | or assistance from adjacent OSPF neighbors is required to | |||
recover control-plane state."; | recover control-plane state."; | |||
} | } | |||
feature graceful-restart { | feature graceful-restart { | |||
description | description | |||
"Graceful OSPF Restart as defined in RFC 3623 and | "Graceful OSPF restart as defined in RFCs 3623 and 5187."; | |||
RFC 5187."; | reference | |||
reference "RFC 3623: Graceful OSPF Restart | "RFC 3623: Graceful OSPF Restart | |||
RFC 5187: OSPFv3 Graceful Restart"; | RFC 5187: OSPFv3 Graceful Restart"; | |||
} | } | |||
feature auto-cost { | feature auto-cost { | |||
description | description | |||
"Calculate OSPF interface cost according to | "Calculates the OSPF interface cost according to | |||
reference bandwidth."; | reference bandwidth."; | |||
reference "RFC 2328: OSPF Version 2"; | reference | |||
"RFC 2328: OSPF Version 2"; | ||||
} | } | |||
feature max-ecmp { | feature max-ecmp { | |||
description | description | |||
"Setting maximum number of ECMP paths."; | "Sets the maximum number of ECMP paths."; | |||
} | } | |||
feature max-lsa { | feature max-lsa { | |||
description | description | |||
"Setting the maximum number of LSAs the OSPF instance | "Sets the maximum number of Link State Advertisements (LSAs) | |||
will accept."; | the OSPF instance will accept."; | |||
reference "RFC 1765: OSPF Database Overload"; | reference | |||
"RFC 1765: OSPF Database Overflow"; | ||||
} | } | |||
feature te-rid { | feature te-rid { | |||
description | description | |||
"Support configuration of the Traffic Engineering (TE) | "Support for configuration of the Traffic Engineering (TE) | |||
Router-ID, i.e., the Router Address described in Section | Router ID, i.e., the Router Address TLV as described in | |||
2.4.1 of RFC3630 or the Router IPv6 Address TLV described | Section 2.4.1 of RFC 3630 or the Router IPv6 Address TLV | |||
in Section 3 of RFC5329."; | as described in Section 3 of RFC 5329."; | |||
reference "RFC 3630: Traffic Engineering (TE) Extensions | reference | |||
to OSPF Version 2 | "RFC 3630: Traffic Engineering (TE) Extensions to | |||
RFC 5329: Traffic Engineering (TE) Extensions | OSPF Version 2, Section 2.4.1 | |||
to OSPF Version 3"; | RFC 5329: Traffic Engineering Extensions to OSPF Version 3, | |||
Section 3"; | ||||
} | } | |||
feature ldp-igp-sync { | feature ldp-igp-sync { | |||
description | description | |||
"LDP IGP synchronization."; | "LDP IGP synchronization."; | |||
reference "RFC 5443: LDP IGP Synchronization"; | reference | |||
"RFC 5443: LDP IGP Synchronization"; | ||||
} | } | |||
feature ospfv2-authentication-trailer { | feature ospfv2-authentication-trailer { | |||
description | description | |||
"Support OSPFv2 authentication trailer for OSPFv2 | "Support for the OSPFv2 Authentication Trailer for OSPFv2 | |||
authentication."; | authentication."; | |||
reference "RFC 5709: Supporting Authentication | reference | |||
Trailer for OSPFv2 | "RFC 5709: OSPFv2 HMAC-SHA Cryptographic Authentication | |||
RFC 7474: Security Extension for OSPFv2 When | RFC 7474: Security Extension for OSPFv2 When | |||
Using Manual Key Management"; | Using Manual Key Management"; | |||
} | } | |||
feature ospfv3-authentication-ipsec { | feature ospfv3-authentication-ipsec { | |||
description | description | |||
"Support IPsec for OSPFv3 authentication."; | "Support for IPsec for OSPFv3 authentication."; | |||
reference "RFC 4552: Authentication/Confidentiality | reference | |||
for OSPFv3"; | "RFC 4552: Authentication/Confidentiality for OSPFv3"; | |||
} | } | |||
feature ospfv3-authentication-trailer { | feature ospfv3-authentication-trailer { | |||
description | description | |||
"Support OSPFv3 authentication trailer for OSPFv3 | "Support for the OSPFv3 Authentication Trailer for OSPFv3 | |||
authentication."; | authentication."; | |||
reference "RFC 7166: Supporting Authentication | reference | |||
Trailer for OSPFv3"; | "RFC 7166: Supporting Authentication Trailer for OSPFv3"; | |||
} | } | |||
feature fast-reroute { | feature fast-reroute { | |||
description | description | |||
"Support for IP Fast Reroute (IP-FRR)."; | "Support for IP Fast Reroute (IP-FRR)."; | |||
reference "RFC 5714: IP Fast Reroute Framework"; | reference | |||
"RFC 5714: IP Fast Reroute Framework"; | ||||
} | } | |||
feature key-chain { | feature key-chain { | |||
description | description | |||
"Support of keychain for authentication."; | "Support of key chains for authentication."; | |||
reference "RFC8177: YANG Data Model for Key Chains"; | reference | |||
"RFC 8177: YANG Data Model for Key Chains"; | ||||
} | } | |||
feature node-flag { | feature node-flag { | |||
description | description | |||
"Support for node-flag for OSPF prefixes."; | "Support for node flags for OSPF prefixes."; | |||
reference "RFC 7684: OSPFv2 Prefix/Link Advertisement"; | reference | |||
"RFC 7684: OSPFv2 Prefix/Link Attribute Advertisement"; | ||||
} | } | |||
feature node-tag { | feature node-tag { | |||
description | description | |||
"Support for node admin tag for OSPF routing instances."; | "Support for node administrative tags for OSPF routing | |||
reference "RFC 7777: Advertising Node Administrative | instances."; | |||
Tags in OSPF"; | reference | |||
"RFC 7777: Advertising Node Administrative Tags in OSPF"; | ||||
} | } | |||
feature lfa { | feature lfa { | |||
description | description | |||
"Support for Loop-Free Alternates (LFAs)."; | "Support for Loop-Free Alternates (LFAs)."; | |||
reference "RFC 5286: Basic Specification for IP Fast | reference | |||
Reroute: Loop-Free Alternates"; | "RFC 5286: Basic Specification for IP Fast Reroute: | |||
Loop-Free Alternates"; | ||||
} | } | |||
feature remote-lfa { | feature remote-lfa { | |||
description | description | |||
"Support for Remote Loop-Free Alternates (R-LFA)."; | "Support for Remote LFAs (R-LFAs)."; | |||
reference "RFC 7490: Remote Loop-Free Alternate (LFA) | reference | |||
Fast Reroute (FRR)"; | "RFC 7490: Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)"; | |||
} | } | |||
feature stub-router { | feature stub-router { | |||
description | description | |||
"Support for RFC 6987 OSPF Stub Router Advertisement."; | "Support for OSPF stub router advertisements as defined in | |||
reference "RFC 6987: OSPF Stub Router Advertisement"; | RFC 6987."; | |||
reference | ||||
"RFC 6987: OSPF Stub Router Advertisement"; | ||||
} | } | |||
feature pe-ce-protocol { | feature pe-ce-protocol { | |||
description | description | |||
"Support for OSPF as a PE-CE protocol"; | "Support for OSPF as a Provider Edge to Customer Edge (PE-CE) | |||
reference "RFC 4577: OSPF as the Provider/Customer Edge | protocol."; | |||
Protocol for BGP/MPLS IP Virtual Private | reference | |||
Networks (VPNs) | "RFC 4577: OSPF as the Provider/Customer Edge Protocol | |||
RFC 6565: OSPFv3 as a Provider Edge to Customer | for BGP/MPLS IP Virtual Private Networks (VPNs) | |||
Edge (PE-CE) Routing Protocol"; | RFC 6565: OSPFv3 as a Provider Edge to Customer Edge (PE-CE) | |||
Routing Protocol"; | ||||
} | } | |||
feature ietf-spf-delay { | feature ietf-spf-delay { | |||
description | description | |||
"Support for IETF SPF delay algorithm."; | "Support for the IETF Shortest Path First (SPF) delay | |||
reference "RFC 8405: SPF Back-off algorithm for link | algorithm."; | |||
state IGPs"; | reference | |||
"RFC 8405: Shortest Path First (SPF) Back-Off Delay Algorithm | ||||
for Link-State IGPs"; | ||||
} | } | |||
feature bfd { | feature bfd { | |||
description | description | |||
"Support for BFD detection of OSPF neighbor reachability."; | "Support for BFD to detect OSPF neighbor reachability."; | |||
reference "RFC 5880: Bidirectional Forwarding Detection (BFD) | reference | |||
RFC 5881: Bidirectional Forwarding Detection | "RFC 5880: Bidirectional Forwarding Detection (BFD) | |||
(BFD) for IPv4 and IPv6 (Single Hop)"; | RFC 5881: Bidirectional Forwarding Detection | |||
(BFD) for IPv4 and IPv6 (Single Hop)"; | ||||
} | } | |||
feature hybrid-interface { | feature hybrid-interface { | |||
description | description | |||
"Support for OSPF Hybrid interface type."; | "Support for the OSPF Hybrid interface type."; | |||
reference "RFC 6845: OSPF Hybrid Broadcast and | reference | |||
Point-to-Multipoint Interface Type"; | "RFC 6845: OSPF Hybrid Broadcast and | |||
Point-to-Multipoint Interface Type"; | ||||
} | } | |||
identity ospf { | identity ospf { | |||
base "rt:routing-protocol"; | base "rt:routing-protocol"; | |||
description "Any OSPF protocol version"; | description | |||
"Any OSPF protocol version."; | ||||
} | } | |||
identity ospfv2 { | identity ospfv2 { | |||
base "ospf"; | base "ospf"; | |||
description "OSPFv2 protocol"; | description | |||
"OSPFv2 protocol."; | ||||
} | } | |||
identity ospfv3 { | identity ospfv3 { | |||
base "ospf"; | base "ospf"; | |||
description "OSPFv3 protocol"; | description | |||
"OSPFv3 protocol."; | ||||
} | } | |||
identity area-type { | identity area-type { | |||
description "Base identity for OSPF area type."; | description | |||
"Base identity for an OSPF area type."; | ||||
} | } | |||
identity normal-area { | identity normal-area { | |||
base area-type; | base area-type; | |||
description "OSPF normal area."; | description | |||
"OSPF normal area."; | ||||
} | } | |||
identity stub-nssa-area { | identity stub-nssa-area { | |||
base area-type; | base area-type; | |||
description "OSPF stub or NSSA area."; | description | |||
"OSPF stub area or Not-So-Stubby Area (NSSA)."; | ||||
} | } | |||
identity stub-area { | identity stub-area { | |||
base stub-nssa-area; | base stub-nssa-area; | |||
description "OSPF stub area."; | description | |||
"OSPF stub area."; | ||||
} | } | |||
identity nssa-area { | identity nssa-area { | |||
base stub-nssa-area; | base stub-nssa-area; | |||
description "OSPF Not-So-Stubby Area (NSSA)."; | description | |||
reference "RFC 3101: The OSPF Not-So-Stubby Area | "OSPF NSSA."; | |||
(NSSA) Option"; | reference | |||
"RFC 3101: The OSPF Not-So-Stubby Area (NSSA) Option"; | ||||
} | } | |||
identity ospf-lsa-type { | identity ospf-lsa-type { | |||
description | description | |||
"Base identity for OSPFv2 and OSPFv3 | "Base identity for OSPFv2 and OSPFv3 | |||
Link State Advertisement (LSA) types"; | Link State Advertisement (LSA) types."; | |||
} | } | |||
identity ospfv2-lsa-type { | identity ospfv2-lsa-type { | |||
base ospf-lsa-type; | base ospf-lsa-type; | |||
description | description | |||
"OSPFv2 LSA types"; | "OSPFv2 LSA types."; | |||
} | } | |||
identity ospfv2-router-lsa { | identity ospfv2-router-lsa { | |||
base ospfv2-lsa-type; | base ospfv2-lsa-type; | |||
description | description | |||
"OSPFv2 Router LSA - Type 1"; | "OSPFv2 Router LSA - Type 1."; | |||
} | } | |||
identity ospfv2-network-lsa { | identity ospfv2-network-lsa { | |||
base ospfv2-lsa-type; | base ospfv2-lsa-type; | |||
description | description | |||
"OSPFv2 Network LSA - Type 2"; | "OSPFv2 Network LSA - Type 2."; | |||
} | } | |||
identity ospfv2-summary-lsa-type { | identity ospfv2-summary-lsa-type { | |||
base ospfv2-lsa-type; | base ospfv2-lsa-type; | |||
description | description | |||
"OSPFv2 Summary LSA types"; | "OSPFv2 Summary LSA types."; | |||
} | } | |||
identity ospfv2-network-summary-lsa { | identity ospfv2-network-summary-lsa { | |||
base ospfv2-summary-lsa-type; | base ospfv2-summary-lsa-type; | |||
description | description | |||
"OSPFv2 Network Summary LSA - Type 3"; | "OSPFv2 Network Summary LSA - Type 3."; | |||
} | } | |||
identity ospfv2-asbr-summary-lsa { | identity ospfv2-asbr-summary-lsa { | |||
base ospfv2-summary-lsa-type; | base ospfv2-summary-lsa-type; | |||
description | description | |||
"OSPFv2 AS Boundary Router (ASBR) Summary LSA - Type 4"; | "OSPFv2 Autonomous System Boundary Router (ASBR) Summary LSA - | |||
Type 4."; | ||||
} | } | |||
identity ospfv2-external-lsa-type { | identity ospfv2-external-lsa-type { | |||
base ospfv2-lsa-type; | base ospfv2-lsa-type; | |||
description | description | |||
"OSPFv2 External LSA types"; | "OSPFv2 External LSA types."; | |||
} | } | |||
identity ospfv2-as-external-lsa { | identity ospfv2-as-external-lsa { | |||
base ospfv2-external-lsa-type; | base ospfv2-external-lsa-type; | |||
description | description | |||
"OSPFv2 AS External LSA - Type 5"; | "OSPFv2 AS External LSA - Type 5."; | |||
} | } | |||
identity ospfv2-nssa-lsa { | identity ospfv2-nssa-lsa { | |||
base ospfv2-external-lsa-type; | base ospfv2-external-lsa-type; | |||
description | description | |||
"OSPFv2 Not-So-Stubby-Area (NSSA) LSA - Type 7"; | "OSPFv2 NSSA LSA - Type 7."; | |||
} | } | |||
identity ospfv2-opaque-lsa-type { | identity ospfv2-opaque-lsa-type { | |||
base ospfv2-lsa-type; | base ospfv2-lsa-type; | |||
description | description | |||
"OSPFv2 Opaque LSA types"; | "OSPFv2 Opaque LSA types."; | |||
reference | ||||
"RFC 5250: The OSPF Opaque LSA Option"; | ||||
} | } | |||
identity ospfv2-link-scope-opaque-lsa { | identity ospfv2-link-scope-opaque-lsa { | |||
base ospfv2-opaque-lsa-type; | base ospfv2-opaque-lsa-type; | |||
description | description | |||
"OSPFv2 Link-Scoped Opaque LSA - Type 9"; | "OSPFv2 Link-Scoped Opaque LSA - Type 9."; | |||
} | } | |||
identity ospfv2-area-scope-opaque-lsa { | identity ospfv2-area-scope-opaque-lsa { | |||
base ospfv2-opaque-lsa-type; | base ospfv2-opaque-lsa-type; | |||
description | description | |||
"OSPFv2 Area-Scoped Opaque LSA - Type 10"; | "OSPFv2 Area-Scoped Opaque LSA - Type 10."; | |||
} | } | |||
identity ospfv2-as-scope-opaque-lsa { | identity ospfv2-as-scope-opaque-lsa { | |||
base ospfv2-opaque-lsa-type; | base ospfv2-opaque-lsa-type; | |||
description | description | |||
"OSPFv2 AS-Scoped Opaque LSA - Type 11"; | "OSPFv2 AS-Scoped Opaque LSA - Type 11."; | |||
} | } | |||
identity ospfv2-unknown-lsa-type { | identity ospfv2-unknown-lsa-type { | |||
base ospfv2-lsa-type; | base ospfv2-lsa-type; | |||
description | description | |||
"OSPFv2 Unknown LSA type"; | "OSPFv2 unknown LSA type."; | |||
} | } | |||
identity ospfv3-lsa-type { | identity ospfv3-lsa-type { | |||
base ospf-lsa-type; | base ospf-lsa-type; | |||
description | description | |||
"OSPFv3 LSA types."; | "OSPFv3 LSA types."; | |||
reference | ||||
"RFC 5340: OSPF for IPv6"; | ||||
} | } | |||
identity ospfv3-router-lsa { | identity ospfv3-router-lsa { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
description | description | |||
"OSPFv3 Router LSA - Type 0x2001"; | "OSPFv3 Router LSA - Type 0x2001."; | |||
} | } | |||
identity ospfv3-network-lsa { | identity ospfv3-network-lsa { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
description | description | |||
"OSPFv3 Network LSA - Type 0x2002"; | "OSPFv3 Network LSA - Type 0x2002."; | |||
} | } | |||
identity ospfv3-summary-lsa-type { | identity ospfv3-summary-lsa-type { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
description | description | |||
"OSPFv3 Summary LSA types"; | "OSPFv3 Summary LSA types."; | |||
} | } | |||
identity ospfv3-inter-area-prefix-lsa { | identity ospfv3-inter-area-prefix-lsa { | |||
base ospfv3-summary-lsa-type; | base ospfv3-summary-lsa-type; | |||
description | description | |||
"OSPFv3 Inter-area Prefix LSA - Type 0x2003"; | "OSPFv3 Inter-area Prefix LSA - Type 0x2003."; | |||
} | } | |||
identity ospfv3-inter-area-router-lsa { | identity ospfv3-inter-area-router-lsa { | |||
base ospfv3-summary-lsa-type; | base ospfv3-summary-lsa-type; | |||
description | description | |||
"OSPFv3 Inter-area Router LSA - Type 0x2004"; | "OSPFv3 Inter-area Router LSA - Type 0x2004."; | |||
} | } | |||
identity ospfv3-external-lsa-type { | identity ospfv3-external-lsa-type { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
description | description | |||
"OSPFv3 External LSA types"; | "OSPFv3 External LSA types."; | |||
} | } | |||
identity ospfv3-as-external-lsa { | identity ospfv3-as-external-lsa { | |||
base ospfv3-external-lsa-type; | base ospfv3-external-lsa-type; | |||
description | description | |||
"OSPFv3 AS-External LSA - Type 0x4005"; | "OSPFv3 AS-External LSA - Type 0x4005."; | |||
} | } | |||
identity ospfv3-nssa-lsa { | identity ospfv3-nssa-lsa { | |||
base ospfv3-external-lsa-type; | base ospfv3-external-lsa-type; | |||
description | description | |||
"OSPFv3 Not-So-Stubby-Area (NSSA) LSA - Type 0x2007"; | "OSPFv3 NSSA LSA - Type 0x2007."; | |||
} | } | |||
identity ospfv3-link-lsa { | identity ospfv3-link-lsa { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
description | description | |||
"OSPFv3 Link LSA - Type 0x0008"; | "OSPFv3 link LSA - Type 0x0008."; | |||
} | } | |||
identity ospfv3-intra-area-prefix-lsa { | identity ospfv3-intra-area-prefix-lsa { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
description | description | |||
"OSPFv3 Intra-area Prefix LSA - Type 0x2009"; | "OSPFv3 Intra-area Prefix LSA - Type 0x2009."; | |||
} | } | |||
identity ospfv3-router-information-lsa { | identity ospfv3-router-information-lsa { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
description | description | |||
"OSPFv3 Router Information LSA - Types 0x800C, | "OSPFv3 Router Information LSA - Types 0x800C, | |||
0xA00C, and 0xC00C"; | 0xA00C, and 0xC00C."; | |||
} | } | |||
identity ospfv3-unknown-lsa-type { | identity ospfv3-unknown-lsa-type { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
description | description | |||
"OSPFv3 Unknown LSA type"; | "OSPFv3 unknown LSA type."; | |||
} | } | |||
identity lsa-log-reason { | identity lsa-log-reason { | |||
description | description | |||
"Base identity for an LSA log reason."; | "Base identity for an LSA log reason."; | |||
} | } | |||
identity lsa-refresh { | identity lsa-refresh { | |||
base lsa-log-reason; | base lsa-log-reason; | |||
description | description | |||
"Identity used when the LSA is logged | "Identity used when the LSA is logged | |||
as a result of receiving a refresh LSA."; | as a result of receiving a refresh LSA."; | |||
} | } | |||
identity lsa-content-change { | identity lsa-content-change { | |||
base lsa-log-reason; | base lsa-log-reason; | |||
description | description | |||
"Identity used when the LSA is logged | "Identity used when the LSA is logged | |||
as a result of a change in the content | as a result of a change in the contents | |||
of the LSA."; | of the LSA."; | |||
} | } | |||
identity lsa-purge { | identity lsa-purge { | |||
base lsa-log-reason; | base lsa-log-reason; | |||
description | description | |||
"Identity used when the LSA is logged | "Identity used when the LSA is logged | |||
as a result of being purged."; | as a result of being purged."; | |||
} | } | |||
identity informational-capability { | identity informational-capability { | |||
description | description | |||
"Base identity for router informational capabilities."; | "Base identity for router informational capabilities."; | |||
} | } | |||
identity graceful-restart { | identity graceful-restart { | |||
base informational-capability; | base informational-capability; | |||
description | description | |||
"When set, the router is capable of restarting | "When set, the router is capable of restarting | |||
gracefully."; | gracefully."; | |||
reference "RFC 3623: Graceful OSPF Restart | reference | |||
RFC 5187: OSPFv3 Graceful Restart"; | "RFC 3623: Graceful OSPF Restart | |||
RFC 5187: OSPFv3 Graceful Restart"; | ||||
} | } | |||
identity graceful-restart-helper { | identity graceful-restart-helper { | |||
base informational-capability; | base informational-capability; | |||
description | description | |||
"When set, the router is capable of acting as | "When set, the router is capable of acting as | |||
a graceful restart helper."; | a graceful restart helper."; | |||
reference "RFC 3623: Graceful OSPF Restart | reference | |||
RFC 5187: OSPFv3 Graceful Restart"; | "RFC 3623: Graceful OSPF Restart | |||
RFC 5187: OSPFv3 Graceful Restart"; | ||||
} | } | |||
identity stub-router { | identity stub-router { | |||
base informational-capability; | base informational-capability; | |||
description | description | |||
"When set, the router is capable of acting as | "When set, the router is capable of acting as | |||
an OSPF Stub Router."; | an OSPF stub router."; | |||
reference "RFC 6987: OSPF Stub Router Advertisement"; | reference | |||
"RFC 6987: OSPF Stub Router Advertisement"; | ||||
} | } | |||
identity traffic-engineering { | identity traffic-engineering { | |||
base informational-capability; | base informational-capability; | |||
description | description | |||
"When set, the router is capable of OSPF traffic | "When set, the router is capable of OSPF TE."; | |||
engineering."; | reference | |||
reference "RFC 3630: Traffic Engineering (TE) Extensions | "RFC 3630: Traffic Engineering (TE) Extensions to | |||
to OSPF Version 2 | OSPF Version 2 | |||
RFC 5329: Traffic Engineering (TE) Extensions | RFC 5329: Traffic Engineering Extensions to OSPF Version 3"; | |||
to OSPF Version 3"; | ||||
} | } | |||
identity p2p-over-lan { | identity p2p-over-lan { | |||
base informational-capability; | base informational-capability; | |||
description | description | |||
"When set, the router is capable of OSPF Point-to-Point | "When set, the router is capable of OSPF point-to-point | |||
over LAN."; | over a LAN."; | |||
reference "RFC 5309: Point-to-Point Operation over LAN | reference | |||
in Link State Routing Protocols"; | "RFC 5309: Point-to-Point Operation over LAN in Link State | |||
Routing Protocols"; | ||||
} | } | |||
identity experimental-te { | identity experimental-te { | |||
base informational-capability; | base informational-capability; | |||
description | description | |||
"When set, the router is capable of OSPF experimental | "When set, the router is capable of OSPF experimental TE."; | |||
traffic engineering."; | ||||
reference | reference | |||
"RFC 4973: OSPF-xTE OSPF Experimental Traffic | "RFC 4973: OSPF-xTE: Experimental Extension to OSPF for | |||
Engineering"; | Traffic Engineering"; | |||
} | } | |||
identity router-lsa-bit { | identity router-lsa-bit { | |||
description | description | |||
"Base identity for Router-LSA bits."; | "Base identity for Router-LSA bits."; | |||
} | } | |||
identity vlink-end-bit { | identity vlink-end-bit { | |||
base router-lsa-bit; | base router-lsa-bit; | |||
description | description | |||
"V bit, when set, the router is an endpoint of one or | "V-bit. When set, the router is an endpoint of one or | |||
more virtual links."; | more virtual links."; | |||
} | } | |||
identity asbr-bit { | identity asbr-bit { | |||
base router-lsa-bit; | base router-lsa-bit; | |||
description | description | |||
"E bit, when set, the router is an AS Boundary | "E-bit. When set, the router is an Autonomous System | |||
Router (ASBR)."; | Boundary Router (ASBR)."; | |||
} | } | |||
identity abr-bit { | identity abr-bit { | |||
base router-lsa-bit; | base router-lsa-bit; | |||
description | description | |||
"B bit, when set, the router is an Area Border | "B-bit. When set, the router is an Area Border | |||
Router (ABR)."; | Router (ABR)."; | |||
} | } | |||
identity nssa-bit { | identity nssa-bit { | |||
base router-lsa-bit; | base router-lsa-bit; | |||
description | description | |||
"Nt bit, when set, the router is an NSSA border router | "Nt-bit. When set, the router is an NSSA border router | |||
that is unconditionally translating NSSA LSAs into | that is unconditionally translating NSSA LSAs into | |||
AS-external LSAs."; | AS-external LSAs."; | |||
} | } | |||
identity ospfv3-lsa-option { | identity ospfv3-lsa-option { | |||
description | description | |||
"Base identity for OSPF LSA options flags."; | "Base identity for OSPF LSA options flags."; | |||
} | } | |||
identity af-bit { | identity af-bit { | |||
base ospfv3-lsa-option; | base ospfv3-lsa-option; | |||
description | description | |||
"AF bit, when set, the router supports OSPFv3 Address | "AF-bit. When set, the router supports OSPFv3 Address | |||
Families as in RFC5838."; | Families (AFs) as described in RFC 5838."; | |||
reference | ||||
"RFC 5838: Support of Address Families in OSPFv3"; | ||||
} | } | |||
identity dc-bit { | identity dc-bit { | |||
base ospfv3-lsa-option; | base ospfv3-lsa-option; | |||
description | description | |||
"DC bit, when set, the router supports demand circuits."; | "DC-bit. When set, the router supports demand circuits."; | |||
} | } | |||
identity r-bit { | identity r-bit { | |||
base ospfv3-lsa-option; | base ospfv3-lsa-option; | |||
description | description | |||
"R bit, when set, the originator is an active router."; | "R-bit. When set, the originator is an active router."; | |||
} | } | |||
identity n-bit { | identity n-bit { | |||
base ospfv3-lsa-option; | base ospfv3-lsa-option; | |||
description | description | |||
"N bit, when set, the router is attached to an NSSA"; | "N-bit. When set, the router is attached to an NSSA."; | |||
} | } | |||
identity e-bit { | identity e-bit { | |||
base ospfv3-lsa-option; | base ospfv3-lsa-option; | |||
description | description | |||
"E bit, this bit describes the way AS-external LSAs | "E-bit. This bit describes the way AS-external LSAs | |||
are flooded"; | are flooded."; | |||
} | } | |||
identity v6-bit { | identity v6-bit { | |||
base ospfv3-lsa-option; | base ospfv3-lsa-option; | |||
description | description | |||
"V6 bit, if clear, the router/link should be excluded | "V6-bit. If clear, the router/link should be excluded | |||
from IPv6 routing calculation"; | from IPv6 routing calculations."; | |||
} | } | |||
identity ospfv3-prefix-option { | identity ospfv3-prefix-option { | |||
description | description | |||
"Base identity for OSPFv3 Prefix Options."; | "Base identity for OSPFv3 prefix options."; | |||
} | } | |||
identity nu-bit { | identity nu-bit { | |||
base ospfv3-prefix-option; | base ospfv3-prefix-option; | |||
description | description | |||
"NU Bit, when set, the prefix should be excluded | "NU-bit. When set, the prefix should be excluded | |||
from IPv6 unicast calculations."; | from IPv6 unicast calculations."; | |||
} | } | |||
identity la-bit { | identity la-bit { | |||
base ospfv3-prefix-option; | base ospfv3-prefix-option; | |||
description | description | |||
"LA bit, when set, the prefix is actually an IPv6 | "LA-bit. When set, the prefix is actually an IPv6 | |||
interface address of the Advertising Router."; | interface address of the advertising router."; | |||
} | } | |||
identity p-bit { | identity p-bit { | |||
base ospfv3-prefix-option; | base ospfv3-prefix-option; | |||
description | description | |||
"P bit, when set, the NSSA area prefix should be | "P-bit. When set, the NSSA prefix should be | |||
translated to an AS External LSA and advertised | translated to an AS External LSA and advertised | |||
by the translating NSSA Border Router."; | by the translating NSSA border router."; | |||
} | } | |||
identity dn-bit { | identity dn-bit { | |||
base ospfv3-prefix-option; | base ospfv3-prefix-option; | |||
description | description | |||
"DN bit, when set, the inter-area-prefix LSA or | "DN-bit. When set, the inter-area-prefix LSA or | |||
AS-external LSA prefix has been advertised as an | AS-external LSA prefix has been advertised as an | |||
L3VPN prefix."; | L3VPN prefix."; | |||
} | } | |||
identity ospfv2-lsa-option { | identity ospfv2-lsa-option { | |||
description | description | |||
"Base identity for OSPFv2 LSA option flags."; | "Base identity for OSPFv2 LSA option flags."; | |||
} | } | |||
identity mt-bit { | identity mt-bit { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"MT bit, When set, the router supports multi-topology as | "MT-bit. When set, the router supports multi-topology as | |||
in RFC 4915."; | described in RFC 4915."; | |||
reference | ||||
"RFC 4915: Multi-Topology (MT) Routing in OSPF"; | ||||
} | } | |||
identity v2-dc-bit { | identity v2-dc-bit { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"DC bit, When set, the router supports demand circuits."; | "DC-bit. When set, the router supports demand circuits."; | |||
} | } | |||
identity v2-p-bit { | identity v2-p-bit { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"P bit, wnly used in type-7 LSA. When set, an NSSA | "P-bit, when used in a type-7 LSA. When set, an NSSA | |||
border router should translate the type-7 LSA | border router should translate the type-7 LSA | |||
to a type-5 LSA."; | to a type-5 LSA."; | |||
} | } | |||
identity mc-flag { | identity mc-flag { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"MC Bit, when set, the router supports MOSPF."; | "MC-bit. When set, the router supports | |||
Multicast Extensions to OSPF (MOSPF)."; | ||||
} | } | |||
identity v2-e-flag { | identity v2-e-flag { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"E Bit, this bit describes the way AS-external LSAs | "E-bit. This bit describes the way AS-external LSAs | |||
are flooded."; | are flooded."; | |||
} | } | |||
identity o-bit { | identity o-bit { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"O bit, when set, the router is opaque-capable as in | "O-bit. When set, the router is opaque capable as described | |||
RFC 5250."; | in RFC 5250."; | |||
reference | ||||
"RFC 5250: The OSPF Opaque LSA Option"; | ||||
} | } | |||
identity v2-dn-bit { | identity v2-dn-bit { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
description | description | |||
"DN bit, when a type 3, 5 or 7 LSA is sent from a PE | "DN bit. When a type 3, type 5, or type 7 LSA is sent from a | |||
to a CE, the DN bit must be set. See RFC 4576."; | PE to a CE, the DN bit must be set. See RFC 4576."; | |||
reference | ||||
"RFC 4576: Using a Link State Advertisement (LSA) Options Bit | ||||
to Prevent Looping in BGP/MPLS IP Virtual Private Networks | ||||
(VPNs)"; | ||||
} | } | |||
identity ospfv2-extended-prefix-flag { | identity ospfv2-extended-prefix-flag { | |||
description | description | |||
"Base identity for extended prefix TLV flag."; | "Base identity for the Extended Prefix TLV flag."; | |||
} | } | |||
identity a-flag { | identity a-flag { | |||
base ospfv2-extended-prefix-flag; | base ospfv2-extended-prefix-flag; | |||
description | description | |||
"Attach flag, when set it indicates that the prefix | "Attach flag. When set, it indicates that the prefix | |||
corresponds and a route what is directly connected to | corresponds and a route what is directly connected to | |||
the advertising router.."; | the advertising router."; | |||
} | } | |||
identity node-flag { | identity node-flag { | |||
base ospfv2-extended-prefix-flag; | base ospfv2-extended-prefix-flag; | |||
description | description | |||
"Node flag, when set, it indicates that the prefix is | "Node flag. When set, it indicates that the prefix is | |||
used to represent the advertising node, e.g., a loopback | used to represent the advertising node, e.g., a loopback | |||
address."; | address."; | |||
} | } | |||
typedef ospf-metric { | typedef ospf-metric { | |||
type uint32 { | type uint32 { | |||
range "0 .. 16777215"; | range "0 .. 16777215"; | |||
} | } | |||
description | description | |||
"OSPF Metric - 24-bit unsigned integer."; | "OSPF metric. 24-bit unsigned integer."; | |||
} | } | |||
typedef ospf-link-metric { | typedef ospf-link-metric { | |||
type uint16 { | type uint16 { | |||
range "0 .. 65535"; | range "0 .. 65535"; | |||
} | } | |||
description | description | |||
"OSPF Link Metric - 16-bit unsigned integer."; | "OSPF link metric. 16-bit unsigned integer."; | |||
} | } | |||
typedef opaque-id { | typedef opaque-id { | |||
type uint32 { | type uint32 { | |||
range "0 .. 16777215"; | range "0 .. 16777215"; | |||
} | } | |||
description | description | |||
"Opaque ID - 24-bit unsigned integer."; | "Opaque ID. 24-bit unsigned integer."; | |||
} | } | |||
typedef area-id-type { | typedef area-id-type { | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
description | description | |||
"Area ID type."; | "Area ID type."; | |||
} | } | |||
typedef route-type { | typedef route-type { | |||
type enumeration { | type enumeration { | |||
enum intra-area { | enum intra-area { | |||
description "OSPF intra-area route."; | description | |||
"OSPF intra-area route."; | ||||
} | } | |||
enum inter-area { | enum inter-area { | |||
description "OSPF inter-area route."; | description | |||
"OSPF inter-area route."; | ||||
} | } | |||
enum external-1 { | enum external-1 { | |||
description "OSPF type 1 external route."; | description | |||
"OSPF type 1 external route."; | ||||
} | } | |||
enum external-2 { | enum external-2 { | |||
description "OSPF type 2 external route."; | description | |||
"OSPF type 2 external route."; | ||||
} | } | |||
enum nssa-1 { | enum nssa-1 { | |||
description "OSPF type 1 NSSA route."; | description | |||
"OSPF type 1 NSSA route."; | ||||
} | } | |||
enum nssa-2 { | enum nssa-2 { | |||
description "OSPF type 2 NSSA route."; | description | |||
"OSPF type 2 NSSA route."; | ||||
} | } | |||
} | } | |||
description "OSPF route type."; | description | |||
"OSPF route type."; | ||||
} | } | |||
typedef if-state-type { | typedef if-state-type { | |||
type enumeration { | type enumeration { | |||
enum down { | enum down { | |||
value "1"; | value "1"; | |||
description | description | |||
"Interface down state."; | "Interface is in the 'Down' state."; | |||
} | } | |||
enum loopback { | enum loopback { | |||
value "2"; | value "2"; | |||
description | description | |||
"Interface loopback state."; | "Interface is in the 'Loopback' state."; | |||
} | } | |||
enum waiting { | enum waiting { | |||
value "3"; | value "3"; | |||
description | description | |||
"Interface waiting state."; | "Interface is in the 'Waiting' state."; | |||
} | } | |||
enum point-to-point { | enum point-to-point { | |||
value "4"; | value "4"; | |||
description | description | |||
"Interface point-to-point state."; | "Interface is in the 'Point-to-point' state."; | |||
} | } | |||
enum dr { | enum dr { | |||
value "5"; | value "5"; | |||
description | description | |||
"Interface Designated Router (DR) state."; | "Interface is in the 'DR' (Designated Router) state."; | |||
} | } | |||
enum bdr { | enum bdr { | |||
value "6"; | value "6"; | |||
description | description | |||
"Interface Backup Designated Router (BDR) state."; | "Interface is in the 'Backup' (Backup Designated Router | |||
(BDR)) state."; | ||||
} | } | |||
enum dr-other { | enum dr-other { | |||
value "7"; | value "7"; | |||
description | description | |||
"Interface Other Designated Router state."; | "Interface is in the 'DR Other' state."; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPF interface state type."; | "OSPF interface state type."; | |||
reference | ||||
"RFC 2328: OSPF Version 2"; | ||||
} | } | |||
typedef router-link-type { | typedef router-link-type { | |||
type enumeration { | type enumeration { | |||
enum point-to-point-link { | enum point-to-point-link { | |||
value "1"; | value "1"; | |||
description | description | |||
"Point-to-Point link to Router"; | "Point-to-point link to the router."; | |||
} | } | |||
enum transit-network-link { | enum transit-network-link { | |||
value "2"; | value "2"; | |||
description | description | |||
"Link to transit network identified by | "Link to the transit network, identified by the DR."; | |||
Designated-Router (DR)"; | ||||
} | } | |||
enum stub-network-link { | enum stub-network-link { | |||
value "3"; | value "3"; | |||
description | description | |||
"Link to stub network identified by subnet"; | "Link to the stub network, identified by the subnet."; | |||
} | } | |||
enum virtual-link { | enum virtual-link { | |||
value "4"; | value "4"; | |||
description | description | |||
"Virtual link across transit area"; | "Virtual link across a transit area."; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPF Router Link Type."; | "OSPF router link type."; | |||
} | } | |||
typedef nbr-state-type { | typedef nbr-state-type { | |||
type enumeration { | type enumeration { | |||
enum down { | enum down { | |||
value "1"; | value "1"; | |||
description | description | |||
"Neighbor down state."; | "Neighbor is in the 'Down' state."; | |||
} | } | |||
enum attempt { | enum attempt { | |||
value "2"; | value "2"; | |||
description | description | |||
"Neighbor attempt state."; | "Neighbor is in the 'Attempt' state."; | |||
} | } | |||
enum init { | enum init { | |||
value "3"; | value "3"; | |||
description | description | |||
"Neighbor init state."; | "Neighbor is in the 'Init' state."; | |||
} | } | |||
enum 2-way { | enum 2-way { | |||
value "4"; | value "4"; | |||
description | description | |||
"Neighbor 2-Way state."; | "Neighbor is in the '2-Way' state."; | |||
} | } | |||
enum exstart { | enum exstart { | |||
value "5"; | value "5"; | |||
description | description | |||
"Neighbor exchange start state."; | "Neighbor is in the 'ExStart' (exchange start) state."; | |||
} | } | |||
enum exchange { | enum exchange { | |||
value "6"; | value "6"; | |||
description | description | |||
"Neighbor exchange state."; | "Neighbor is in the 'Exchange' state."; | |||
} | } | |||
enum loading { | enum loading { | |||
value "7"; | value "7"; | |||
description | description | |||
"Neighbor loading state."; | "Neighbor is in the 'Loading' state."; | |||
} | } | |||
enum full { | enum full { | |||
value "8"; | value "8"; | |||
description | description | |||
"Neighbor full state."; | "Neighbor is in the 'Full' state."; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPF neighbor state type."; | "OSPF neighbor state type."; | |||
reference | ||||
"RFC 2328: OSPF Version 2"; | ||||
} | } | |||
typedef restart-helper-status-type { | typedef restart-helper-status-type { | |||
type enumeration { | type enumeration { | |||
enum not-helping { | enum not-helping { | |||
value "1"; | value "1"; | |||
description | description | |||
"Restart helper status not helping."; | "Restart helper status of 'not-helping'."; | |||
} | } | |||
enum helping { | enum helping { | |||
value "2"; | value "2"; | |||
description | description | |||
"Restart helper status helping."; | "Restart helper status of 'helping'."; | |||
} | } | |||
} | } | |||
description | description | |||
"Restart helper status type."; | "Restart helper status type."; | |||
} | } | |||
typedef restart-exit-reason-type { | typedef restart-exit-reason-type { | |||
type enumeration { | type enumeration { | |||
enum none { | enum none { | |||
value "1"; | value "1"; | |||
skipping to change at line 2313 ¶ | skipping to change at line 2379 ¶ | |||
"Restart successfully completed."; | "Restart successfully completed."; | |||
} | } | |||
enum timed-out { | enum timed-out { | |||
value "4"; | value "4"; | |||
description | description | |||
"Restart timed out."; | "Restart timed out."; | |||
} | } | |||
enum topology-changed { | enum topology-changed { | |||
value "5"; | value "5"; | |||
description | description | |||
"Restart aborted due to topology change."; | "Restart aborted due to a topology change."; | |||
} | } | |||
} | } | |||
description | description | |||
"Describes the outcome of the last attempt at a | "Describes the outcome of the last attempt at a | |||
graceful restart, either by itself or acting | graceful restart, either by itself or acting | |||
as a helper."; | as a helper."; | |||
} | } | |||
typedef packet-type { | typedef packet-type { | |||
type enumeration { | type enumeration { | |||
skipping to change at line 2347 ¶ | skipping to change at line 2413 ¶ | |||
"OSPF Link State Request packet."; | "OSPF Link State Request packet."; | |||
} | } | |||
enum link-state-update { | enum link-state-update { | |||
value "4"; | value "4"; | |||
description | description | |||
"OSPF Link State Update packet."; | "OSPF Link State Update packet."; | |||
} | } | |||
enum link-state-ack { | enum link-state-ack { | |||
value "5"; | value "5"; | |||
description | description | |||
"OSPF Link State Acknowledgement packet."; | "OSPF Link State Acknowledgment packet."; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPF packet type."; | "OSPF packet type."; | |||
} | } | |||
typedef nssa-translator-state-type { | typedef nssa-translator-state-type { | |||
type enumeration { | type enumeration { | |||
enum enabled { | enum enabled { | |||
value "1"; | value "1"; | |||
skipping to change at line 2381 ¶ | skipping to change at line 2447 ¶ | |||
} | } | |||
description | description | |||
"OSPF NSSA translator state type."; | "OSPF NSSA translator state type."; | |||
} | } | |||
typedef restart-status-type { | typedef restart-status-type { | |||
type enumeration { | type enumeration { | |||
enum not-restarting { | enum not-restarting { | |||
value "1"; | value "1"; | |||
description | description | |||
"Router is not restarting."; | "The router is not restarting."; | |||
} | } | |||
enum planned-restart { | enum planned-restart { | |||
value "2"; | value "2"; | |||
description | description | |||
"Router is going through planned restart."; | "The router is going through a planned restart."; | |||
} | } | |||
enum unplanned-restart { | enum unplanned-restart { | |||
value "3"; | value "3"; | |||
description | description | |||
"Router is going through unplanned restart."; | "The router is going through an unplanned restart."; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPF graceful restart status type."; | "OSPF graceful restart status type."; | |||
} | } | |||
typedef fletcher-checksum16-type { | typedef fletcher-checksum16-type { | |||
type string { | type string { | |||
pattern '(0x)?[0-9a-fA-F]{4}'; | pattern '(0x)?[0-9a-fA-F]{4}'; | |||
} | } | |||
description | description | |||
"Fletcher 16-bit checksum in hex-string format 0xXXXX."; | "Fletcher 16-bit checksum in hex-string format 0xXXXX."; | |||
reference "RFC 905: ISO Transport Protocol specification | reference | |||
ISO DP 8073"; | "RFC 905: ISO Transport Protocol Specification ISO DP 8073"; | |||
} | } | |||
typedef ospfv2-auth-trailer-rfc-version { | typedef ospfv2-auth-trailer-rfc-version { | |||
type enumeration { | type enumeration { | |||
enum rfc5709 { | enum rfc5709 { | |||
description | description | |||
"Support OSPF Authentication Trailer as | "Support for the OSPF Authentication Trailer as | |||
described in RFC 5709"; | described in RFC 5709."; | |||
reference "RFC 5709: OSPFv2 HMAC-SHA Cryptographic | reference | |||
Authentication"; | "RFC 5709: OSPFv2 HMAC-SHA Cryptographic Authentication"; | |||
} | } | |||
enum rfc7474 { | enum rfc7474 { | |||
description | description | |||
"Support OSPF Authentication Trailer as | "Support for the OSPF Authentication Trailer as | |||
described in RFC 7474"; | described in RFC 7474."; | |||
reference | reference | |||
"RFC 7474: Security Extension for OSPFv2 | "RFC 7474: Security Extension for OSPFv2 | |||
When Using Manual Key Management Authentication"; | When Using Manual Key Management"; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPFv2 Authentication Trailer Support"; | "OSPFv2 Authentication Trailer support."; | |||
} | } | |||
grouping tlv { | grouping tlv { | |||
description | description | |||
"Type-Length-Value (TLV)"; | "Type-Length-Value (TLV)."; | |||
leaf type { | leaf type { | |||
type uint16; | type uint16; | |||
description "TLV type."; | description | |||
"TLV type."; | ||||
} | } | |||
leaf length { | leaf length { | |||
type uint16; | type uint16; | |||
description "TLV length (octets)."; | description | |||
"TLV length (octets)."; | ||||
} | } | |||
leaf value { | leaf value { | |||
type yang:hex-string; | type yang:hex-string; | |||
description "TLV value."; | description | |||
"TLV value."; | ||||
} | } | |||
} | } | |||
grouping unknown-tlvs { | grouping unknown-tlvs { | |||
description | description | |||
"Unknown TLVs grouping - Used for unknown TLVs or | "Grouping used for unknown TLVs or unknown sub-TLVs."; | |||
unknown sub-TLVs."; | ||||
container unknown-tlvs { | container unknown-tlvs { | |||
description "All unknown TLVs."; | description | |||
"All unknown TLVs."; | ||||
list unknown-tlv { | list unknown-tlv { | |||
description "Unknown TLV."; | description | |||
"Unknown TLV."; | ||||
uses tlv; | uses tlv; | |||
} | } | |||
} | } | |||
} | } | |||
grouping node-tag-tlv { | grouping node-tag-tlv { | |||
description "OSPF Node Admin Tag TLV grouping."; | description | |||
"OSPF Node Admin Tag TLV grouping."; | ||||
list node-tag { | list node-tag { | |||
leaf tag { | leaf tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Node admin tag value."; | "Value of the node administrative tag."; | |||
} | } | |||
description | description | |||
"List of tags."; | "List of tags."; | |||
} | } | |||
} | } | |||
grouping router-capabilities-tlv { | grouping router-capabilities-tlv { | |||
description "OSPF Router Capabilities TLV grouping."; | description | |||
reference "RFC 7770: OSPF Router Capabilities"; | "Grouping for OSPF router capabilities TLV types."; | |||
reference | ||||
"RFC 7770: Extensions to OSPF for Advertising Optional | ||||
Router Capabilities"; | ||||
container router-informational-capabilities { | container router-informational-capabilities { | |||
leaf-list informational-capabilities { | leaf-list informational-capabilities { | |||
type identityref { | type identityref { | |||
base informational-capability; | base informational-capability; | |||
} | } | |||
description | description | |||
"Informational capability list. This list will | "List of informational capabilities. This list will | |||
contains the identities for the informational | contain the identities for the informational | |||
capabilities supported by router."; | capabilities supported by the router."; | |||
} | } | |||
description | description | |||
"OSPF Router Informational Flag Definitions."; | "OSPF Router Informational Flag definitions."; | |||
} | } | |||
list informational-capabilities-flags { | list informational-capabilities-flags { | |||
leaf informational-flag { | leaf informational-flag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Individual informational capability flag."; | "Individual informational capability flag."; | |||
} | } | |||
description | description | |||
"List of informational capability flags. This will | "List of informational capability flags. This will | |||
return all the 32-bit informational flags irrespective | return all the 32-bit informational flags, irrespective | |||
of whether or not they are known to the device."; | of whether or not they are known to the device."; | |||
} | } | |||
list functional-capabilities { | list functional-capabilities { | |||
leaf functional-flag { | leaf functional-flag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Individual functional capability flag."; | "Individual functional capability flag."; | |||
} | } | |||
description | description | |||
"List of functional capability flags. This will | "List of functional capability flags. This will | |||
return all the 32-bit functional flags irrespective | return all the 32-bit functional flags, irrespective | |||
of whether or not they are known to the device."; | of whether or not they are known to the device."; | |||
} | } | |||
} | } | |||
grouping dynamic-hostname-tlv { | grouping dynamic-hostname-tlv { | |||
description "Dynamic Hostname TLV"; | description | |||
reference "RFC 5642: Dynamic Hostnames for OSPF"; | "Dynamic Hostname TLV."; | |||
reference | ||||
"RFC 5642: Dynamic Hostname Exchange Mechanism for OSPF"; | ||||
leaf hostname { | leaf hostname { | |||
type string { | type string { | |||
length "1..255"; | length "1..255"; | |||
} | } | |||
description "Dynamic Hostname"; | description | |||
"Dynamic hostname."; | ||||
} | } | |||
} | } | |||
grouping sbfd-discriminator-tlv { | grouping sbfd-discriminator-tlv { | |||
description "Seamless BFD Discriminator TLV"; | description | |||
reference "RFC 7884: S-BFD Discriminators in OSPF"; | "S-BFD Discriminator TLV."; | |||
reference | ||||
"RFC 7884: OSPF Extensions to Advertise Seamless Bidirectional | ||||
Forwarding Detection (S-BFD) Target Discriminators"; | ||||
list sbfd-discriminators { | list sbfd-discriminators { | |||
leaf sbfd-discriminator { | leaf sbfd-discriminator { | |||
type uint32; | type uint32; | |||
description "Individual S-BFD Discriminator."; | description | |||
"Individual S-BFD Discriminator."; | ||||
} | } | |||
description | description | |||
"List of S-BFD Discriminators"; | "List of S-BFD Discriminators."; | |||
} | } | |||
} | } | |||
grouping maximum-sid-depth-tlv { | grouping maximum-sid-depth-tlv { | |||
description "Maximum SID Depth (MSD) TLV"; | description | |||
"Node MSD TLV (TLV for Maximum SID Depth)."; | ||||
reference | reference | |||
"RFC 8476: Signaling Maximum Segment Depth (MSD) | "RFC 8476: Signaling Maximum SID Depth (MSD) Using OSPF"; | |||
using OSPF"; | ||||
list msd-type { | list msd-type { | |||
leaf msd-type { | leaf msd-type { | |||
type uint8; | type uint8; | |||
description "Maximum Segment Depth (MSD) type"; | description | |||
"Maximum SID Depth (MSD) type."; | ||||
} | } | |||
leaf msd-value { | leaf msd-value { | |||
type uint8; | type uint8; | |||
description | description | |||
"Maximum Segment Depth (MSD) value for the type"; | "MSD value for the type."; | |||
} | } | |||
description | description | |||
"List of Maximum Segment Depth (MSD) tuples"; | "List of MSD tuples."; | |||
} | } | |||
} | } | |||
grouping ospf-router-lsa-bits { | grouping ospf-router-lsa-bits { | |||
container router-bits { | container router-bits { | |||
leaf-list rtr-lsa-bits { | leaf-list rtr-lsa-bits { | |||
type identityref { | type identityref { | |||
base router-lsa-bit; | base router-lsa-bit; | |||
} | } | |||
description | description | |||
"Router LSA bits list. This list will contain | "List of Router LSA bits. This list will contain | |||
identities for the bits which are set in the | identities for the bits; these identities are set | |||
Router-LSA bits."; | in the Router-LSA bits."; | |||
} | } | |||
description "Router LSA Bits."; | description | |||
"Router LSA bits."; | ||||
} | } | |||
description | description | |||
"Router LSA Bits - Currently common for OSPFv2 and | "Router LSA bits. Currently common to both OSPFv2 and | |||
OSPFv3 but it may diverge with future augmentations."; | OSPFv3 but may diverge with future augmentations."; | |||
} | } | |||
grouping ospfv2-router-link { | grouping ospfv2-router-link { | |||
description "OSPFv2 router link."; | description | |||
"OSPFv2 router link."; | ||||
leaf link-id { | leaf link-id { | |||
type union { | type union { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
} | } | |||
description "Router-LSA Link ID"; | description | |||
"Router-LSA Link ID."; | ||||
} | } | |||
leaf link-data { | leaf link-data { | |||
type union { | type union { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
type uint32; | type uint32; | |||
} | } | |||
description "Router-LSA Link data."; | description | |||
"Router-LSA link data."; | ||||
} | } | |||
leaf type { | leaf type { | |||
type router-link-type; | type router-link-type; | |||
description "Router-LSA Link type."; | description | |||
"Router-LSA link type."; | ||||
} | } | |||
} | } | |||
grouping ospfv2-lsa-body { | grouping ospfv2-lsa-body { | |||
description "OSPFv2 LSA body."; | description | |||
"OSPFv2 LSA body."; | ||||
container router { | container router { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv2-router-lsa')" { | + "'ospfv2-router-lsa')" { | |||
description | description | |||
"Only applies to Router-LSAs."; | "Only applies to Router-LSAs."; | |||
} | } | |||
description | description | |||
"Router LSA."; | "Router LSA."; | |||
uses ospf-router-lsa-bits; | uses ospf-router-lsa-bits; | |||
leaf num-of-links { | leaf num-of-links { | |||
type uint16; | type uint16; | |||
description "Number of links in Router LSA."; | description | |||
"Number of links in the Router LSA."; | ||||
} | } | |||
container links { | container links { | |||
description "All router Links."; | description | |||
"All router links."; | ||||
list link { | list link { | |||
description "Router LSA link."; | description | |||
"Router LSA link."; | ||||
uses ospfv2-router-link; | uses ospfv2-router-link; | |||
container topologies { | container topologies { | |||
description "All topologies for the link."; | description | |||
"All topologies for the link."; | ||||
list topology { | list topology { | |||
description | description | |||
"Topology specific information."; | "Topology-specific information."; | |||
leaf mt-id { | leaf mt-id { | |||
type uint8; | type uint8; | |||
description | description | |||
"The MT-ID for the topology enabled on | "The MT-ID for the topology enabled on the link."; | |||
the link."; | ||||
} | } | |||
leaf metric { | leaf metric { | |||
type uint16; | type uint16; | |||
description "Metric for the topology."; | description | |||
"Metric for the topology."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container network { | container network { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv2-network-lsa')" { | + "'ospfv2-network-lsa')" { | |||
description | description | |||
"Only applies to Network LSAs."; | "Only applies to Network LSAs."; | |||
} | } | |||
description | description | |||
"Network LSA."; | "Network LSA."; | |||
leaf network-mask { | leaf network-mask { | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
description | description | |||
"The IP address mask for the network."; | "The IP address mask for the network."; | |||
} | } | |||
container attached-routers { | container attached-routers { | |||
description "All attached routers."; | description | |||
"All attached routers."; | ||||
leaf-list attached-router { | leaf-list attached-router { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"List of the routers attached to the network."; | "List of the routers attached to the network."; | |||
} | } | |||
} | } | |||
} | } | |||
container summary { | container summary { | |||
when "derived-from(../../header/type, " | when "derived-from(../../header/type, " | |||
+ "'ospfv2-summary-lsa-type')" { | + "'ospfv2-summary-lsa-type')" { | |||
description | description | |||
"Only applies to Summary LSAs."; | "Only applies to Summary LSAs."; | |||
} | } | |||
description | description | |||
"Summary LSA."; | "Summary LSA."; | |||
leaf network-mask { | leaf network-mask { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"The IP address mask for the network"; | "The IP address mask for the network."; | |||
} | } | |||
container topologies { | container topologies { | |||
description "All topologies for the summary LSA."; | description | |||
"All topologies for the summary LSA."; | ||||
list topology { | list topology { | |||
description | description | |||
"Topology specific information."; | "Topology-specific information."; | |||
leaf mt-id { | leaf mt-id { | |||
type uint8; | type uint8; | |||
description | description | |||
"The MT-ID for the topology enabled for | "The MT-ID for the topology enabled for the summary."; | |||
the summary."; | ||||
} | } | |||
leaf metric { | leaf metric { | |||
type ospf-metric; | type ospf-metric; | |||
description "Metric for the topology."; | description | |||
"Metric for the topology."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container external { | container external { | |||
when "derived-from(../../header/type, " | when "derived-from(../../header/type, " | |||
+ "'ospfv2-external-lsa-type')" { | + "'ospfv2-external-lsa-type')" { | |||
description | description | |||
"Only applies to AS-external LSAs and NSSA LSAs."; | "Only applies to AS-external LSAs and NSSA LSAs."; | |||
} | } | |||
description | description | |||
"External LSA."; | "External LSA."; | |||
leaf network-mask { | leaf network-mask { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"The IP address mask for the network"; | "The IP address mask for the network."; | |||
} | } | |||
container topologies { | container topologies { | |||
description "All topologies for the external."; | description | |||
"All topologies for the external."; | ||||
list topology { | list topology { | |||
description | description | |||
"Topology specific information."; | "Topology-specific information."; | |||
leaf mt-id { | leaf mt-id { | |||
type uint8; | type uint8; | |||
description | description | |||
"The MT-ID for the topology enabled for the | "The MT-ID for the topology enabled for the | |||
external or NSSA prefix."; | external or NSSA prefix."; | |||
} | } | |||
leaf flags { | leaf flags { | |||
type bits { | type bits { | |||
bit E { | bit E { | |||
description | description | |||
"When set, the metric specified is a Type 2 | "When set, the metric specified is a Type 2 | |||
external metric."; | external metric."; | |||
} | } | |||
} | } | |||
description "Flags."; | description | |||
"Flags."; | ||||
} | } | |||
leaf metric { | leaf metric { | |||
type ospf-metric; | type ospf-metric; | |||
description "Metric for the topology."; | description | |||
"Metric for the topology."; | ||||
} | } | |||
leaf forwarding-address { | leaf forwarding-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Forwarding address."; | "Forwarding address."; | |||
} | } | |||
leaf external-route-tag { | leaf external-route-tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Route tag for the topology."; | "Route tag for the topology."; | |||
skipping to change at line 2753 ¶ | skipping to change at line 2848 ¶ | |||
container opaque { | container opaque { | |||
when "derived-from(../../header/type, " | when "derived-from(../../header/type, " | |||
+ "'ospfv2-opaque-lsa-type')" { | + "'ospfv2-opaque-lsa-type')" { | |||
description | description | |||
"Only applies to Opaque LSAs."; | "Only applies to Opaque LSAs."; | |||
} | } | |||
description | description | |||
"Opaque LSA."; | "Opaque LSA."; | |||
container ri-opaque { | container ri-opaque { | |||
description "OSPF Router Information (RI) opaque LSA."; | description | |||
reference "RFC 7770: OSPF Router Capabilities"; | "OSPF Router Information (RI) Opaque LSA."; | |||
reference | ||||
"RFC 7770: Extensions to OSPF for Advertising Optional | ||||
Router Capabilities"; | ||||
container router-capabilities-tlv { | container router-capabilities-tlv { | |||
description | description | |||
"Informational and functional router capabilities"; | "Informational and functional router capabilities."; | |||
uses router-capabilities-tlv; | uses router-capabilities-tlv; | |||
} | } | |||
container node-tag-tlvs { | container node-tag-tlvs { | |||
description | description | |||
"All node tag TLVs."; | "All node tag TLVs."; | |||
list node-tag-tlv { | list node-tag-tlv { | |||
description | description | |||
"Node tag TLV."; | "Node tag TLV."; | |||
uses node-tag-tlv; | uses node-tag-tlv; | |||
} | } | |||
} | } | |||
container dynamic-hostname-tlv { | container dynamic-hostname-tlv { | |||
description "OSPF Dynamic Hostname"; | description | |||
"OSPF dynamic hostname."; | ||||
uses dynamic-hostname-tlv; | uses dynamic-hostname-tlv; | |||
} | } | |||
container sbfd-discriminator-tlv { | container sbfd-discriminator-tlv { | |||
description "OSPF S-BFD Discriminators"; | description | |||
"OSPF S-BFD Discriminators."; | ||||
uses sbfd-discriminator-tlv; | uses sbfd-discriminator-tlv; | |||
} | } | |||
container maximum-sid-depth-tlv { | container maximum-sid-depth-tlv { | |||
description "OSPF Maximum SID Depth (MSD) values"; | description | |||
"OSPF MSD values."; | ||||
uses maximum-sid-depth-tlv; | uses maximum-sid-depth-tlv; | |||
} | } | |||
uses unknown-tlvs; | uses unknown-tlvs; | |||
} | } | |||
container te-opaque { | container te-opaque { | |||
description "OSPFv2 Traffic Engineering (TE) opaque LSA."; | description | |||
reference "RFC 3630: Traffic Engineering (TE) | "OSPFv2 TE Opaque LSA."; | |||
Extensions to OSPFv2"; | reference | |||
"RFC 3630: Traffic Engineering (TE) Extensions to | ||||
OSPF Version 2"; | ||||
container router-address-tlv { | container router-address-tlv { | |||
description | description | |||
"Router address TLV."; | "Router address TLV."; | |||
leaf router-address { | leaf router-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Router address."; | "Router address."; | |||
} | } | |||
} | } | |||
container link-tlv { | container link-tlv { | |||
description "Describes a single link, and it is constructed | description | |||
of a set of Sub-TLVs."; | "Describes a single link. It is constructed | |||
from a set of sub-TLVs."; | ||||
leaf link-type { | leaf link-type { | |||
type router-link-type; | type router-link-type; | |||
mandatory true; | mandatory true; | |||
description "Link type."; | description | |||
"Link type."; | ||||
} | } | |||
leaf link-id { | leaf link-id { | |||
type union { | type union { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
} | } | |||
mandatory true; | mandatory true; | |||
description "Link ID."; | description | |||
"Link ID."; | ||||
} | } | |||
container local-if-ipv4-addrs { | container local-if-ipv4-addrs { | |||
description "All local interface IPv4 addresses."; | description | |||
"All local interface IPv4 addresses."; | ||||
leaf-list local-if-ipv4-addr { | leaf-list local-if-ipv4-addr { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"List of local interface IPv4 addresses."; | "List of local interface IPv4 addresses."; | |||
} | } | |||
} | } | |||
container remote-if-ipv4-addrs { | container remote-if-ipv4-addrs { | |||
description "All remote interface IPv4 addresses."; | description | |||
"All remote interface IPv4 addresses."; | ||||
leaf-list remote-if-ipv4-addr { | leaf-list remote-if-ipv4-addr { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"List of remote interface IPv4 addresses."; | "List of remote interface IPv4 addresses."; | |||
} | } | |||
} | } | |||
leaf te-metric { | leaf te-metric { | |||
type uint32; | type uint32; | |||
description "TE metric."; | description | |||
"TE metric."; | ||||
} | } | |||
leaf max-bandwidth { | leaf max-bandwidth { | |||
type rt-types:bandwidth-ieee-float32; | type rt-types:bandwidth-ieee-float32; | |||
description "Maximum bandwidth."; | description | |||
"Maximum bandwidth."; | ||||
} | } | |||
leaf max-reservable-bandwidth { | leaf max-reservable-bandwidth { | |||
type rt-types:bandwidth-ieee-float32; | type rt-types:bandwidth-ieee-float32; | |||
description "Maximum reservable bandwidth."; | description | |||
"Maximum reservable bandwidth."; | ||||
} | } | |||
container unreserved-bandwidths { | container unreserved-bandwidths { | |||
description "All unreserved bandwidths."; | description | |||
"All unreserved bandwidths."; | ||||
list unreserved-bandwidth { | list unreserved-bandwidth { | |||
leaf priority { | leaf priority { | |||
type uint8 { | type uint8 { | |||
range "0 .. 7"; | range "0 .. 7"; | |||
} | } | |||
description "Priority from 0 to 7."; | description | |||
"Priority from 0 to 7."; | ||||
} | } | |||
leaf unreserved-bandwidth { | leaf unreserved-bandwidth { | |||
type rt-types:bandwidth-ieee-float32; | type rt-types:bandwidth-ieee-float32; | |||
description "Unreserved bandwidth."; | description | |||
"Unreserved bandwidth."; | ||||
} | } | |||
description | description | |||
"List of unreserved bandwidths for different | "List of unreserved bandwidths for different | |||
priorities."; | priorities."; | |||
} | } | |||
} | } | |||
leaf admin-group { | leaf admin-group { | |||
type uint32; | type uint32; | |||
description | description | |||
"Administrative group/Resource Class/Color."; | "Administrative Group / Resource Class/Color."; | |||
} | } | |||
uses unknown-tlvs; | uses unknown-tlvs; | |||
} | } | |||
} | } | |||
container extended-prefix-opaque { | container extended-prefix-opaque { | |||
description "All extended prefix TLVs in the LSA."; | description | |||
"All Extended Prefix TLVs in the LSA."; | ||||
list extended-prefix-tlv { | list extended-prefix-tlv { | |||
description "Extended prefix TLV."; | description | |||
"Extended Prefix TLV."; | ||||
leaf route-type { | leaf route-type { | |||
type enumeration { | type enumeration { | |||
enum unspecified { | enum unspecified { | |||
value "0"; | value "0"; | |||
description "Unspecified."; | description | |||
"Unspecified."; | ||||
} | } | |||
enum intra-area { | enum intra-area { | |||
value "1"; | value "1"; | |||
description "OSPF intra-area route."; | description | |||
"OSPF intra-area route."; | ||||
} | } | |||
enum inter-area { | enum inter-area { | |||
value "3"; | value "3"; | |||
description "OSPF inter-area route."; | description | |||
"OSPF inter-area route."; | ||||
} | } | |||
enum external { | enum external { | |||
value "5"; | value "5"; | |||
description "OSPF External route."; | description | |||
"OSPF external route."; | ||||
} | } | |||
enum nssa { | enum nssa { | |||
value "7"; | value "7"; | |||
description "OSPF NSSA external route."; | description | |||
"OSPF NSSA external route."; | ||||
} | } | |||
} | } | |||
description "Route type."; | description | |||
"Route type."; | ||||
} | } | |||
container flags { | container flags { | |||
leaf-list extended-prefix-flags { | leaf-list extended-prefix-flags { | |||
type identityref { | type identityref { | |||
base ospfv2-extended-prefix-flag; | base ospfv2-extended-prefix-flag; | |||
} | } | |||
description | description | |||
"Extended prefix TLV flags list. This list will | "List of Extended Prefix TLV flags. This list will | |||
contain identities for the prefix flags that | contain identities for the prefix flags; these | |||
are set in the extended prefix flags."; | identities are set in the extended prefix flags."; | |||
} | } | |||
description "Prefix Flags."; | description | |||
"Prefix flags."; | ||||
} | } | |||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description "Address prefix."; | description | |||
"Address prefix."; | ||||
} | } | |||
uses unknown-tlvs; | uses unknown-tlvs; | |||
} | } | |||
} | } | |||
container extended-link-opaque { | container extended-link-opaque { | |||
description "All extended link TLVs in the LSA."; | description | |||
"All Extended Link TLVs in the LSA."; | ||||
reference | ||||
"RFC 7684: OSPFv2 Prefix/Link Attribute Advertisement"; | ||||
container extended-link-tlv { | container extended-link-tlv { | |||
description "Extended link TLV."; | description | |||
"Extended Link TLV."; | ||||
uses ospfv2-router-link; | uses ospfv2-router-link; | |||
container maximum-sid-depth-tlv { | container maximum-sid-depth-tlv { | |||
description "OSPF Maximum SID Depth (MSD) values"; | description | |||
"OSPF MSD values."; | ||||
uses maximum-sid-depth-tlv; | uses maximum-sid-depth-tlv; | |||
} | } | |||
uses unknown-tlvs; | uses unknown-tlvs; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping ospfv3-lsa-options { | grouping ospfv3-lsa-options { | |||
description "OSPFv3 LSA options"; | description | |||
"OSPFv3 LSA options."; | ||||
container lsa-options { | container lsa-options { | |||
leaf-list lsa-options { | leaf-list lsa-options { | |||
type identityref { | type identityref { | |||
base ospfv3-lsa-option; | base ospfv3-lsa-option; | |||
} | } | |||
description | description | |||
"OSPFv3 LSA Option flags list. This list will contain | "List of OSPFv3 LSA Option flags. This list will contain | |||
the identities for the OSPFv3 LSA options that are | the identities for the OSPFv3 LSA options that are | |||
set for the LSA."; | set for the LSA."; | |||
} | } | |||
description "OSPFv3 LSA options."; | description | |||
"OSPFv3 LSA options."; | ||||
} | } | |||
} | } | |||
grouping ospfv3-lsa-prefix { | grouping ospfv3-lsa-prefix { | |||
description | description | |||
"OSPFv3 LSA prefix."; | "OSPFv3 LSA prefix."; | |||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"LSA Prefix."; | "LSA prefix."; | |||
} | } | |||
container prefix-options { | container prefix-options { | |||
leaf-list prefix-options { | leaf-list prefix-options { | |||
type identityref { | type identityref { | |||
base ospfv3-prefix-option; | base ospfv3-prefix-option; | |||
} | } | |||
description | description | |||
"OSPFv3 prefix option flag list. This list will | "List of OSPFv3 prefix option flags. This list will | |||
contain the identities for the OSPFv3 options | contain the identities for the OSPFv3 options | |||
that are set for the OSPFv3 prefix."; | that are set for the OSPFv3 prefix."; | |||
} | } | |||
description "Prefix options."; | description | |||
"Prefix options."; | ||||
} | } | |||
} | } | |||
grouping ospfv3-lsa-external { | grouping ospfv3-lsa-external { | |||
description | description | |||
"AS-External and NSSA LSA."; | "AS-External and NSSA LSA."; | |||
leaf metric { | leaf metric { | |||
type ospf-metric; | type ospf-metric; | |||
description "Metric"; | description | |||
"Metric."; | ||||
} | } | |||
leaf flags { | leaf flags { | |||
type bits { | type bits { | |||
bit E { | bit E { | |||
description | description | |||
"When set, the metric specified is a Type 2 | "When set, the metric specified is a Type 2 | |||
external metric."; | external metric."; | |||
} | } | |||
bit F { | bit F { | |||
description | description | |||
"When set, a Forwarding Address is included | "When set, a forwarding address is included | |||
in the LSA."; | in the LSA."; | |||
} | } | |||
bit T { | bit T { | |||
description | description | |||
"When set, an External Route Tag is included | "When set, an external route tag is included | |||
in the LSA."; | in the LSA."; | |||
} | } | |||
} | } | |||
description "Flags."; | description | |||
"Flags."; | ||||
} | } | |||
leaf referenced-ls-type { | leaf referenced-ls-type { | |||
type identityref { | type identityref { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
} | } | |||
description "Referenced Link State type."; | description | |||
"Referenced Link State type."; | ||||
} | } | |||
leaf unknown-referenced-ls-type { | leaf unknown-referenced-ls-type { | |||
type uint16; | type uint16; | |||
description | description | |||
"Value for an unknown Referenced Link State type."; | "Value for an unknown Referenced Link State type."; | |||
} | } | |||
uses ospfv3-lsa-prefix; | uses ospfv3-lsa-prefix; | |||
leaf forwarding-address { | leaf forwarding-address { | |||
skipping to change at line 3035 ¶ | skipping to change at line 3170 ¶ | |||
leaf external-route-tag { | leaf external-route-tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Route tag."; | "Route tag."; | |||
} | } | |||
leaf referenced-link-state-id { | leaf referenced-link-state-id { | |||
type uint32; | type uint32; | |||
description | description | |||
"Referenced Link State ID."; | "Referenced Link State ID."; | |||
reference | ||||
"RFC 5340: OSPF for IPv6"; | ||||
} | } | |||
} | } | |||
grouping ospfv3-lsa-body { | grouping ospfv3-lsa-body { | |||
description "OSPFv3 LSA body."; | description | |||
"OSPFv3 LSA body."; | ||||
container router { | container router { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-router-lsa')" { | + "'ospfv3-router-lsa')" { | |||
description | description | |||
"Only applies to Router LSAs."; | "Only applies to Router LSAs."; | |||
} | } | |||
description "Router LSA."; | description | |||
"Router LSA."; | ||||
uses ospf-router-lsa-bits; | uses ospf-router-lsa-bits; | |||
uses ospfv3-lsa-options; | uses ospfv3-lsa-options; | |||
container links { | container links { | |||
description "All router link."; | description | |||
"All router links."; | ||||
list link { | list link { | |||
description "Router LSA link."; | description | |||
"Router LSA link."; | ||||
leaf interface-id { | leaf interface-id { | |||
type uint32; | type uint32; | |||
description "Interface ID for link."; | description | |||
"Interface ID for the link."; | ||||
} | } | |||
leaf neighbor-interface-id { | leaf neighbor-interface-id { | |||
type uint32; | type uint32; | |||
description "Neighbor's Interface ID for link."; | description | |||
"Neighbor's Interface ID for the link."; | ||||
} | } | |||
leaf neighbor-router-id { | leaf neighbor-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description "Neighbor's Router ID for link."; | description | |||
"Neighbor's Router ID for the link."; | ||||
} | } | |||
leaf type { | leaf type { | |||
type router-link-type; | type router-link-type; | |||
description "Link type: 1 - Point-to-Point Link | description | |||
2 - Transit Network Link | "Link type: 1 - Point-to-Point Link | |||
3 - Stub Network Link | 2 - Transit Network Link | |||
4 - Virtual Link"; | 3 - Stub Network Link | |||
4 - Virtual Link."; | ||||
} | } | |||
leaf metric { | leaf metric { | |||
type uint16; | type uint16; | |||
description "Link Metric."; | description | |||
"Link metric."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container network { | container network { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-network-lsa')" { | + "'ospfv3-network-lsa')" { | |||
description | description | |||
"Only applies to Network LSAs."; | "Only applies to Network LSAs."; | |||
} | } | |||
description "Network LSA."; | description | |||
"Network LSA."; | ||||
uses ospfv3-lsa-options; | uses ospfv3-lsa-options; | |||
container attached-routers { | container attached-routers { | |||
description "All attached routers."; | description | |||
"All attached routers."; | ||||
leaf-list attached-router { | leaf-list attached-router { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"List of the routers attached to the network."; | "List of the routers attached to the network."; | |||
} | } | |||
} | } | |||
} | } | |||
container inter-area-prefix { | container inter-area-prefix { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-inter-area-prefix-lsa')" { | + "'ospfv3-inter-area-prefix-lsa')" { | |||
description | description | |||
"Only applies to Inter-Area-Prefix LSAs."; | "Only applies to Inter-Area-Prefix LSAs."; | |||
} | } | |||
leaf metric { | leaf metric { | |||
type ospf-metric; | type ospf-metric; | |||
description "Inter-Area Prefix Metric"; | description | |||
"Inter-Area Prefix metric."; | ||||
} | } | |||
uses ospfv3-lsa-prefix; | uses ospfv3-lsa-prefix; | |||
description "Prefix LSA."; | description | |||
"Prefix LSA."; | ||||
} | } | |||
container inter-area-router { | container inter-area-router { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-inter-area-router-lsa')" { | + "'ospfv3-inter-area-router-lsa')" { | |||
description | description | |||
"Only applies to Inter-Area-Router LSAs."; | "Only applies to Inter-Area-Router LSAs."; | |||
} | } | |||
uses ospfv3-lsa-options; | uses ospfv3-lsa-options; | |||
leaf metric { | leaf metric { | |||
type ospf-metric; | type ospf-metric; | |||
description "AS Boundary Router (ASBR) Metric."; | description | |||
"Autonomous System Boundary Router (ASBR) metric."; | ||||
} | } | |||
leaf destination-router-id { | leaf destination-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"The Router ID of the ASBR described by the LSA."; | "The Router ID of the ASBR described by the LSA."; | |||
} | } | |||
description "Inter-Area-Router LSA."; | description | |||
"Inter-Area-Router LSA."; | ||||
} | } | |||
container as-external { | container as-external { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-as-external-lsa')" { | + "'ospfv3-as-external-lsa')" { | |||
description | description | |||
"Only applies to AS-external LSAs."; | "Only applies to AS-external LSAs."; | |||
} | } | |||
uses ospfv3-lsa-external; | uses ospfv3-lsa-external; | |||
description "AS-External LSA."; | description | |||
"AS-External LSA."; | ||||
} | } | |||
container nssa { | container nssa { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-nssa-lsa')" { | + "'ospfv3-nssa-lsa')" { | |||
description | description | |||
"Only applies to NSSA LSAs."; | "Only applies to NSSA LSAs."; | |||
} | } | |||
uses ospfv3-lsa-external; | uses ospfv3-lsa-external; | |||
description "NSSA LSA."; | description | |||
"NSSA LSA."; | ||||
} | } | |||
container link { | container link { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-link-lsa')" { | + "'ospfv3-link-lsa')" { | |||
description | description | |||
"Only applies to Link LSAs."; | "Only applies to link LSAs."; | |||
} | } | |||
leaf rtr-priority { | leaf rtr-priority { | |||
type uint8; | type uint8; | |||
description | description | |||
"Router priority for DR election. A router with a | "Router priority for DR election. A router with a | |||
higher priority will be preferred in the election | higher priority will be preferred in the election. | |||
and a value of 0 indicates the router is not | A value of 0 indicates that the router is not eligible | |||
eligible to become Designated Router or Backup | to become the DR or BDR."; | |||
Designated Router (BDR)."; | ||||
} | } | |||
uses ospfv3-lsa-options; | uses ospfv3-lsa-options; | |||
leaf link-local-interface-address { | leaf link-local-interface-address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"The originating router's link-local | "The originating router's link-local | |||
interface address for the link."; | interface address for the link."; | |||
} | } | |||
leaf num-of-prefixes { | leaf num-of-prefixes { | |||
type uint32; | type uint32; | |||
description "Number of prefixes."; | description | |||
"Number of prefixes."; | ||||
} | } | |||
container prefixes { | container prefixes { | |||
description "All prefixes for the link."; | description | |||
"All prefixes for the link."; | ||||
list prefix { | list prefix { | |||
description | description | |||
"List of prefixes associated with the link."; | "List of prefixes associated with the link."; | |||
uses ospfv3-lsa-prefix; | uses ospfv3-lsa-prefix; | |||
} | } | |||
} | } | |||
description "Link LSA."; | description | |||
"Link LSA."; | ||||
} | } | |||
container intra-area-prefix { | container intra-area-prefix { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-intra-area-prefix-lsa')" { | + "'ospfv3-intra-area-prefix-lsa')" { | |||
description | description | |||
"Only applies to Intra-Area-Prefix LSAs."; | "Only applies to Intra-Area-Prefix LSAs."; | |||
} | } | |||
description "Intra-Area-Prefix LSA."; | description | |||
"Intra-Area-Prefix LSA."; | ||||
leaf referenced-ls-type { | leaf referenced-ls-type { | |||
type identityref { | type identityref { | |||
base ospfv3-lsa-type; | base ospfv3-lsa-type; | |||
} | } | |||
description "Referenced Link State type."; | description | |||
"Referenced Link State type."; | ||||
} | } | |||
leaf unknown-referenced-ls-type { | leaf unknown-referenced-ls-type { | |||
type uint16; | type uint16; | |||
description | description | |||
"Value for an unknown Referenced Link State type."; | "Value for an unknown Referenced Link State type."; | |||
} | } | |||
leaf referenced-link-state-id { | leaf referenced-link-state-id { | |||
type uint32; | type uint32; | |||
description | description | |||
"Referenced Link State ID."; | "Referenced Link State ID."; | |||
} | } | |||
leaf referenced-adv-router { | leaf referenced-adv-router { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"Referenced Advertising Router."; | "Referenced Advertising Router."; | |||
reference | ||||
"RFC 5340: OSPF for IPv6"; | ||||
} | } | |||
leaf num-of-prefixes { | leaf num-of-prefixes { | |||
type uint16; | type uint16; | |||
description "Number of prefixes."; | description | |||
"Number of prefixes."; | ||||
} | } | |||
container prefixes { | container prefixes { | |||
description "All prefixes in this LSA."; | description | |||
"All prefixes in this LSA."; | ||||
list prefix { | list prefix { | |||
description "List of prefixes in this LSA."; | description | |||
"List of prefixes in this LSA."; | ||||
uses ospfv3-lsa-prefix; | uses ospfv3-lsa-prefix; | |||
leaf metric { | leaf metric { | |||
type ospf-metric; | type ospf-metric; | |||
description "Prefix Metric."; | description | |||
"Prefix metric."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container router-information { | container router-information { | |||
when "derived-from-or-self(../../header/type, " | when "derived-from-or-self(../../header/type, " | |||
+ "'ospfv3-router-information-lsa')" { | + "'ospfv3-router-information-lsa')" { | |||
description | description | |||
"Only applies to Router Information LSAs (RFC7770)."; | "Only applies to Router Information LSAs (RFC 7770)."; | |||
reference | ||||
"RFC 7770: Extensions to OSPF for Advertising Optional | ||||
Router Capabilities"; | ||||
} | } | |||
container router-capabilities-tlv { | container router-capabilities-tlv { | |||
description | description | |||
"Informational and functional router capabilities"; | "Informational and functional router capabilities."; | |||
uses router-capabilities-tlv; | uses router-capabilities-tlv; | |||
} | } | |||
container node-tag-tlvs { | container node-tag-tlvs { | |||
description | description | |||
"All node tag tlvs."; | "All node tag TLVs."; | |||
list node-tag-tlv { | list node-tag-tlv { | |||
description | description | |||
"Node tag tlv."; | "Node tag TLV."; | |||
uses node-tag-tlv; | uses node-tag-tlv; | |||
} | } | |||
} | } | |||
container dynamic-hostname-tlv { | container dynamic-hostname-tlv { | |||
description "OSPF Dynamic Hostname"; | description | |||
"OSPF dynamic hostname."; | ||||
uses dynamic-hostname-tlv; | uses dynamic-hostname-tlv; | |||
} | } | |||
container sbfd-discriminator-tlv { | container sbfd-discriminator-tlv { | |||
description "OSPF S-BFD Discriminators"; | description | |||
"OSPF S-BFD Discriminators."; | ||||
uses sbfd-discriminator-tlv; | uses sbfd-discriminator-tlv; | |||
} | } | |||
description "Router Information LSA."; | description | |||
reference "RFC 7770: Extensions for Advertising Router | "Router Information LSA."; | |||
Capabilities"; | reference | |||
"RFC 7770: Extensions to OSPF for Advertising Optional | ||||
Router Capabilities"; | ||||
} | } | |||
} | } | |||
grouping lsa-header { | grouping lsa-header { | |||
description | description | |||
"Common LSA for OSPFv2 and OSPFv3"; | "Common LSA for OSPFv2 and OSPFv3."; | |||
leaf age { | leaf age { | |||
type uint16; | type uint16; | |||
mandatory true; | mandatory true; | |||
description "LSA age."; | description | |||
"LSA age."; | ||||
} | } | |||
leaf type { | leaf type { | |||
type identityref { | type identityref { | |||
base ospf-lsa-type; | base ospf-lsa-type; | |||
} | } | |||
mandatory true; | mandatory true; | |||
description "LSA type"; | description | |||
"LSA type."; | ||||
} | } | |||
leaf adv-router { | leaf adv-router { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
mandatory true; | mandatory true; | |||
description "LSA advertising router."; | description | |||
"LSA advertising router."; | ||||
} | } | |||
leaf seq-num { | leaf seq-num { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "LSA sequence number."; | description | |||
"LSA sequence number."; | ||||
} | } | |||
leaf checksum { | leaf checksum { | |||
type fletcher-checksum16-type; | type fletcher-checksum16-type; | |||
mandatory true; | mandatory true; | |||
description "LSA checksum."; | description | |||
"LSA checksum."; | ||||
} | } | |||
leaf length { | leaf length { | |||
type uint16; | type uint16; | |||
mandatory true; | mandatory true; | |||
description "LSA length including the header."; | description | |||
"LSA length, including the header."; | ||||
} | } | |||
} | } | |||
grouping ospfv2-lsa { | grouping ospfv2-lsa { | |||
description | description | |||
"OSPFv2 LSA - LSAs are uniquely identified by | "OSPFv2 LSA. LSAs are uniquely identified by | |||
the <LSA Type, Link-State ID, Advertising Router> | the <LSA Type, Link State ID, Advertising Router> | |||
tuple with the sequence number differentiating | tuple, with the sequence number differentiating the | |||
LSA instances."; | LSA instances."; | |||
container header { | container header { | |||
must "(derived-from(type, " | must "(derived-from(type, " | |||
+ "'ospfv2-opaque-lsa-type') and " | + "'ospfv2-opaque-lsa-type') and " | |||
+ "opaque-id and opaque-type) or " | + "opaque-id and opaque-type) or " | |||
+ "(not(derived-from(type, " | + "(not(derived-from(type, " | |||
+ "'ospfv2-opaque-lsa-type')) " | + "'ospfv2-opaque-lsa-type')) " | |||
+ "and not(opaque-id) and not(opaque-type))" { | + "and not(opaque-id) and not(opaque-type))" { | |||
description | description | |||
"Opaque type and ID only apply to Opaque LSAs."; | "The Opaque type and the Opaque ID only apply to | |||
Opaque LSAs."; | ||||
} | } | |||
description | description | |||
"Decoded OSPFv2 LSA header data."; | "Decoded OSPFv2 LSA header data."; | |||
container lsa-options { | container lsa-options { | |||
leaf-list lsa-options { | leaf-list lsa-options { | |||
type identityref { | type identityref { | |||
base ospfv2-lsa-option; | base ospfv2-lsa-option; | |||
} | } | |||
description | description | |||
"LSA option flags list. This list will contain | "List of LSA option flags. This list will contain the | |||
the identities for the identities for the OSPFv2 | identities for the OSPFv2 LSA options that are set."; | |||
LSA options that are set."; | ||||
} | } | |||
description | description | |||
"LSA options."; | "LSA options."; | |||
} | } | |||
leaf lsa-id { | leaf lsa-id { | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
mandatory true; | mandatory true; | |||
description "Link-State ID."; | description | |||
"Link State ID."; | ||||
} | } | |||
leaf opaque-type { | leaf opaque-type { | |||
type uint8; | type uint8; | |||
description "Opaque type."; | description | |||
"Opaque type."; | ||||
} | } | |||
leaf opaque-id { | leaf opaque-id { | |||
type opaque-id; | type opaque-id; | |||
description "Opaque ID."; | description | |||
"Opaque ID."; | ||||
} | } | |||
uses lsa-header; | uses lsa-header; | |||
} | } | |||
container body { | container body { | |||
description | description | |||
"Decoded OSPFv2 LSA body data."; | "Decoded OSPFv2 LSA body data."; | |||
uses ospfv2-lsa-body; | uses ospfv2-lsa-body; | |||
} | } | |||
} | } | |||
grouping ospfv3-lsa { | grouping ospfv3-lsa { | |||
description | description | |||
"Decoded OSPFv3 LSA."; | "Decoded OSPFv3 LSA."; | |||
container header { | container header { | |||
description | description | |||
"Decoded OSPFv3 LSA header data."; | "Decoded OSPFv3 LSA header data."; | |||
leaf lsa-id { | leaf lsa-id { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description "OSPFv3 LSA ID."; | description | |||
"OSPFv3 LSA ID."; | ||||
} | } | |||
uses lsa-header; | uses lsa-header; | |||
} | } | |||
container body { | container body { | |||
description | description | |||
"Decoded OSPF LSA body data."; | "Decoded OSPF LSA body data."; | |||
uses ospfv3-lsa-body; | uses ospfv3-lsa-body; | |||
} | } | |||
} | } | |||
grouping lsa-common { | grouping lsa-common { | |||
description | description | |||
"Common fields for OSPF LSA representation."; | "Common fields for OSPF LSA representation."; | |||
leaf decode-completed { | leaf decode-completed { | |||
type boolean; | type boolean; | |||
description | description | |||
"The OSPF LSA body was successfully decoded other than | "The OSPF LSA body was successfully decoded other than | |||
unknown TLVs. Unknown LSAs types and OSPFv2 unknown | unknown TLVs. Unknown LSA types and OSPFv2 unknown | |||
opaque LSA types are not decoded. Additionally, | Opaque LSA types are not decoded. Additionally, | |||
malformed LSAs are generally not accepted and will | malformed LSAs are generally not accepted and will | |||
not be in the Link State Database."; | not be in the Link State Database (LSDB)."; | |||
} | } | |||
leaf raw-data { | leaf raw-data { | |||
type yang:hex-string; | type yang:hex-string; | |||
description | description | |||
"The complete LSA in network byte | "The hexadecimal representation of the complete LSA as | |||
order hexadecimal as received or originated."; | received or originated, in network byte order."; | |||
} | } | |||
} | } | |||
grouping lsa { | grouping lsa { | |||
description | description | |||
"OSPF LSA."; | "OSPF LSA."; | |||
uses lsa-common; | uses lsa-common; | |||
choice version { | choice version { | |||
description | description | |||
"OSPFv2 or OSPFv3 LSA body."; | "OSPFv2 or OSPFv3 LSA body."; | |||
container ospfv2 { | container ospfv2 { | |||
description "OSPFv2 LSA"; | description | |||
"OSPFv2 LSA."; | ||||
uses ospfv2-lsa; | uses ospfv2-lsa; | |||
} | } | |||
container ospfv3 { | container ospfv3 { | |||
description "OSPFv3 LSA"; | description | |||
"OSPFv3 LSA."; | ||||
uses ospfv3-lsa; | uses ospfv3-lsa; | |||
} | } | |||
} | } | |||
} | } | |||
grouping lsa-key { | grouping lsa-key { | |||
description | description | |||
"OSPF LSA key - the database key for each LSA of a given | "OSPF LSA key. The database key for each LSA of a given | |||
type in the Link State DataBase (LSDB)."; | type in the LSDB."; | |||
leaf lsa-id { | leaf lsa-id { | |||
type union { | type union { | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
type uint32; | type uint32; | |||
} | } | |||
description | description | |||
"Link-State ID."; | "Link State ID."; | |||
} | } | |||
leaf adv-router { | leaf adv-router { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"Advertising router."; | "Advertising router."; | |||
} | } | |||
} | } | |||
grouping instance-stat { | grouping instance-stat { | |||
description "Per-instance statistics"; | description | |||
"Per-instance statistics."; | ||||
leaf discontinuity-time { | leaf discontinuity-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time on the most recent occasion at which any one or | "The time of the most recent occasion at which any one or | |||
more of this OSPF instance's counters suffered a | more of this OSPF instance's counters suffered a | |||
discontinuity. If no such discontinuities have occurred | discontinuity. If no such discontinuities have occurred | |||
since the OSPF instance was last re-initialized, then | since the OSPF instance was last reinitialized, then | |||
this node contains the time the OSPF instance was | this node contains the time the OSPF instance was | |||
re-initialized which normally occurs when it was | reinitialized, which normally occurs when it was | |||
created."; | created."; | |||
} | } | |||
leaf originate-new-lsa-count { | leaf originate-new-lsa-count { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of new LSAs originated. Discontinuities in the | "The number of new LSAs originated. Discontinuities in the | |||
value of this counter can occur when the OSPF instance is | value of this counter can occur when the OSPF instance is | |||
re-initialized."; | reinitialized."; | |||
} | } | |||
leaf rx-new-lsas-count { | leaf rx-new-lsas-count { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of new LSAs received. Discontinuities in the | "The number of new LSAs received. Discontinuities in the | |||
value of this counter can occur when the OSPF instance is | value of this counter can occur when the OSPF instance is | |||
re-initialized."; | reinitialized."; | |||
} | } | |||
leaf as-scope-lsa-count { | leaf as-scope-lsa-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description "The number of AS-scope LSAs."; | description | |||
"The number of AS-scope LSAs."; | ||||
} | } | |||
leaf as-scope-lsa-chksum-sum { | leaf as-scope-lsa-chksum-sum { | |||
type uint32; | type uint32; | |||
description | description | |||
"The module 2**32 sum of the LSA checksums | "The module 2**32 sum of the LSA checksums | |||
for AS-scope LSAs. The value should be treated as | for AS-scope LSAs. The value should be treated as | |||
unsigned when comparing two sums of checksums. While | unsigned when comparing two sums of checksums. While | |||
differing checksums indicate a different combination | differing checksums indicate a different combination | |||
of LSAs, equivalent checksums don't guarantee that the | of LSAs, equivalent checksums don't guarantee that the | |||
LSAs are the same given that multiple combinations of | LSAs are the same, given that multiple combinations of | |||
LSAs can result in the same checksum."; | LSAs can result in the same checksum."; | |||
} | } | |||
container database { | container database { | |||
description "Container for per AS-scope LSA statistics."; | description | |||
"Container for per-AS-scope LSA statistics."; | ||||
list as-scope-lsa-type { | list as-scope-lsa-type { | |||
description "List of AS-scope LSA statistics"; | description | |||
"List of AS-scope LSA statistics."; | ||||
leaf lsa-type { | leaf lsa-type { | |||
type uint16; | type uint16; | |||
description "AS-Scope LSA type."; | description | |||
"AS-Scope LSA type."; | ||||
} | } | |||
leaf lsa-count { | leaf lsa-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description "The number of LSAs of the LSA type."; | description | |||
"The number of LSAs of this LSA type."; | ||||
} | } | |||
leaf lsa-cksum-sum { | leaf lsa-cksum-sum { | |||
type uint32; | type uint32; | |||
description | description | |||
"The module 2**32 sum of the LSA checksums | "The module 2**32 sum of the LSA checksums | |||
for the LSAs of this type. The value should be | for LSAs of this type. The value should be | |||
treated as unsigned when comparing two sums of | treated as unsigned when comparing two sums of | |||
checksums. While differing checksums indicate a | checksums. While differing checksums indicate a | |||
different combination of LSAs, equivalent checksums | different combination of LSAs, equivalent checksums | |||
don't guarantee that the LSAs are the same given that | don't guarantee that the LSAs are the same, given that | |||
multiple combinations of LSAs can result in the same | multiple combinations of LSAs can result in the same | |||
checksum."; | checksum."; | |||
} | } | |||
} | } | |||
} | } | |||
uses instance-fast-reroute-state; | uses instance-fast-reroute-state; | |||
} | } | |||
grouping area-stat { | grouping area-stat { | |||
description "Per-area statistics."; | description | |||
"Per-area statistics."; | ||||
leaf discontinuity-time { | leaf discontinuity-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time on the most recent occasion at which any one or | "The time of the most recent occasion at which any one or | |||
more of this OSPF area's counters suffered a | more of this OSPF area's counters suffered a | |||
discontinuity. If no such discontinuities have occurred | discontinuity. If no such discontinuities have occurred | |||
since the OSPF area was last re-initialized, then | since the OSPF area was last reinitialized, then | |||
this node contains the time the OSPF area was | this node contains the time the OSPF area was | |||
re-initialized which normally occurs when it was | reinitialized, which normally occurs when it was | |||
created."; | created."; | |||
} | } | |||
leaf spf-runs-count { | leaf spf-runs-count { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of times the intra-area SPF has run. | "The number of times the intra-area SPF has run. | |||
Discontinuities in the value of this counter can occur | Discontinuities in the value of this counter can occur | |||
when the OSPF area is re-initialized."; | when the OSPF area is reinitialized."; | |||
} | } | |||
leaf abr-count { | leaf abr-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description | description | |||
"The total number of Area Border Routers (ABRs) | "The total number of Area Border Routers (ABRs) | |||
reachable within this area."; | reachable within this area."; | |||
} | } | |||
leaf asbr-count { | leaf asbr-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description | description | |||
"The total number of AS Boundary Routers (ASBRs)."; | "The total number of ASBRs."; | |||
} | } | |||
leaf ar-nssa-translator-event-count { | leaf ar-nssa-translator-event-count { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of NSSA translator-state changes. | "The number of NSSA translator-state changes. | |||
Discontinuities in the value of this counter can occur | Discontinuities in the value of this counter can occur | |||
when the OSPF area is re-initialized."; | when the OSPF area is reinitialized."; | |||
} | } | |||
leaf area-scope-lsa-count { | leaf area-scope-lsa-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description | description | |||
"The number of area-scope LSAs in the area."; | "The number of area-scope LSAs in the area."; | |||
} | } | |||
leaf area-scope-lsa-cksum-sum { | leaf area-scope-lsa-cksum-sum { | |||
type uint32; | type uint32; | |||
description | description | |||
"The module 2**32 sum of the LSA checksums | "The module 2**32 sum of the LSA checksums | |||
for area-scope LSAs. The value should be treated as | for area-scope LSAs. The value should be treated as | |||
unsigned when comparing two sums of checksums. While | unsigned when comparing two sums of checksums. While | |||
differing checksums indicate a different combination | differing checksums indicate a different combination | |||
of LSAs, equivalent checksums don't guarantee that the | of LSAs, equivalent checksums don't guarantee that the | |||
LSAs are the same given that multiple combinations of | LSAs are the same, given that multiple combinations of | |||
LSAs can result in the same checksum."; | LSAs can result in the same checksum."; | |||
} | } | |||
container database { | container database { | |||
description "Container for area-scope LSA type statistics."; | description | |||
"Container for area-scope LSA type statistics."; | ||||
list area-scope-lsa-type { | list area-scope-lsa-type { | |||
description "List of area-scope LSA statistics"; | description | |||
"List of area-scope LSA statistics."; | ||||
leaf lsa-type { | leaf lsa-type { | |||
type uint16; | type uint16; | |||
description "Area-scope LSA type."; | description | |||
"Area-scope LSA type."; | ||||
} | } | |||
leaf lsa-count { | leaf lsa-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description "The number of LSAs of the LSA type."; | description | |||
"The number of LSAs of this LSA type."; | ||||
} | } | |||
leaf lsa-cksum-sum { | leaf lsa-cksum-sum { | |||
type uint32; | type uint32; | |||
description | description | |||
"The module 2**32 sum of the LSA checksums | "The module 2**32 sum of the LSA checksums | |||
for the LSAs of this type. The value should be | for LSAs of this type. The value should be | |||
treated as unsigned when comparing two sums of | treated as unsigned when comparing two sums of | |||
checksums. While differing checksums indicate a | checksums. While differing checksums indicate a | |||
different combination of LSAs, equivalent checksums | different combination of LSAs, equivalent checksums | |||
don't guarantee that the LSAs are the same given that | don't guarantee that the LSAs are the same, given that | |||
multiple combinations of LSAs can result in the same | multiple combinations of LSAs can result in the same | |||
checksum."; | checksum."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping interface-stat { | grouping interface-stat { | |||
description "Per-interface statistics"; | description | |||
"Per-interface statistics."; | ||||
leaf discontinuity-time { | leaf discontinuity-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time on the most recent occasion at which any one or | "The time of the most recent occasion at which any one or | |||
more of this OSPF interface's counters suffered a | more of this OSPF interface's counters suffered a | |||
discontinuity. If no such discontinuities have occurred | discontinuity. If no such discontinuities have occurred | |||
since the OSPF interface was last re-initialized, then | since the OSPF interface was last reinitialized, then | |||
this node contains the time the OSPF interface was | this node contains the time the OSPF interface was | |||
re-initialized which normally occurs when it was | reinitialized, which normally occurs when it was | |||
created."; | created."; | |||
} | } | |||
leaf if-event-count { | leaf if-event-count { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of times this interface has changed its | "The number of times this interface has changed its | |||
state or an error has occurred. Discontinuities in the | state or an error has occurred. Discontinuities in the | |||
value of this counter can occur when the OSPF interface | value of this counter can occur when the OSPF interface | |||
is re-initialized."; | is reinitialized."; | |||
} | } | |||
leaf link-scope-lsa-count { | leaf link-scope-lsa-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description "The number of link-scope LSAs."; | description | |||
"The number of link-scope LSAs."; | ||||
} | } | |||
leaf link-scope-lsa-cksum-sum { | leaf link-scope-lsa-cksum-sum { | |||
type uint32; | type uint32; | |||
description | description | |||
"The module 2**32 sum of the LSA checksums | "The module 2**32 sum of the LSA checksums | |||
for link-scope LSAs. The value should be treated as | for link-scope LSAs. The value should be treated as | |||
unsigned when comparing two sums of checksums. While | unsigned when comparing two sums of checksums. While | |||
differing checksums indicate a different combination | differing checksums indicate a different combination | |||
of LSAs, equivalent checksums don't guarantee that the | of LSAs, equivalent checksums don't guarantee that the | |||
LSAs are the same given that multiple combinations of | LSAs are the same, given that multiple combinations of | |||
LSAs can result in the same checksum."; | LSAs can result in the same checksum."; | |||
} | } | |||
container database { | container database { | |||
description "Container for link-scope LSA type statistics."; | description | |||
"Container for link-scope LSA type statistics."; | ||||
list link-scope-lsa-type { | list link-scope-lsa-type { | |||
description "List of link-scope LSA statistics"; | description | |||
"List of link-scope LSA statistics."; | ||||
leaf lsa-type { | leaf lsa-type { | |||
type uint16; | type uint16; | |||
description "Link scope LSA type."; | description | |||
"Link-scope LSA type."; | ||||
} | } | |||
leaf lsa-count { | leaf lsa-count { | |||
type yang:gauge32; | type yang:gauge32; | |||
description "The number of LSAs of the LSA type."; | description | |||
"The number of LSAs of this LSA type."; | ||||
} | } | |||
leaf lsa-cksum-sum { | leaf lsa-cksum-sum { | |||
type uint32; | type uint32; | |||
description | description | |||
"The module 2**32 sum of the LSA checksums | "The module 2**32 sum of the LSA checksums | |||
for the LSAs of this type. The value should be | for LSAs of this type. The value should be | |||
treated as unsigned when comparing two sums of | treated as unsigned when comparing two sums of | |||
checksums. While differing checksums indicate a | checksums. While differing checksums indicate a | |||
different combination of LSAs, equivalent checksums | different combination of LSAs, equivalent checksums | |||
don't guarantee that the LSAs are the same given that | don't guarantee that the LSAs are the same, given that | |||
multiple combinations of LSAs can result in the same | multiple combinations of LSAs can result in the same | |||
checksum."; | checksum."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping neighbor-stat { | grouping neighbor-stat { | |||
description "Per-neighbor statistics."; | description | |||
"Per-neighbor statistics."; | ||||
leaf discontinuity-time { | leaf discontinuity-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time on the most recent occasion at which any one or | "The time of the most recent occasion at which any one or | |||
more of this OSPF neighbor's counters suffered a | more of this OSPF neighbor's counters suffered a | |||
discontinuity. If no such discontinuities have occurred | discontinuity. If no such discontinuities have occurred | |||
since the OSPF neighbor was last re-initialized, then | since the OSPF neighbor was last reinitialized, then | |||
this node contains the time the OSPF neighbor was | this node contains the time the OSPF neighbor was | |||
re-initialized which normally occurs when the neighbor | reinitialized, which normally occurs when the neighbor | |||
is dynamically discovered andcreated."; | is dynamically discovered and created."; | |||
} | } | |||
leaf nbr-event-count { | leaf nbr-event-count { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of times this neighbor has changed | "The number of times this neighbor has changed | |||
state or an error has occurred. Discontinuities in the | state or an error has occurred. Discontinuities in the | |||
value of this counter can occur when the OSPF neighbor | value of this counter can occur when the OSPF neighbor | |||
is re-initialized."; | is reinitialized."; | |||
} | } | |||
leaf nbr-retrans-qlen { | leaf nbr-retrans-qlen { | |||
type yang:gauge32; | type yang:gauge32; | |||
description | description | |||
"The current length of the retransmission queue."; | "The current length of the retransmission queue."; | |||
} | } | |||
} | } | |||
grouping instance-fast-reroute-config { | grouping instance-fast-reroute-config { | |||
description | description | |||
"This group defines global configuration of IP | "This group defines the global configuration of | |||
Fast ReRoute (FRR)."; | IP Fast Reroute (IP-FRR)."; | |||
container fast-reroute { | container fast-reroute { | |||
if-feature fast-reroute; | if-feature fast-reroute; | |||
description | description | |||
"This container may be augmented with global | "This container may be augmented with global | |||
parameters for IP-FRR."; | parameters for IP-FRR."; | |||
container lfa { | container lfa { | |||
if-feature lfa; | if-feature lfa; | |||
description | description | |||
"This container may be augmented with | "This container may be augmented with | |||
global parameters for Loop-Free Alternatives (LFA). | global parameters for Loop-Free Alternates (LFAs). | |||
Container creation has no effect on LFA activation."; | Container creation has no effect on LFA activation."; | |||
} | } | |||
} | } | |||
} | } | |||
grouping instance-fast-reroute-state { | grouping instance-fast-reroute-state { | |||
description "IP-FRR state data grouping"; | description | |||
"IP-FRR state data grouping."; | ||||
container protected-routes { | container protected-routes { | |||
if-feature fast-reroute; | if-feature fast-reroute; | |||
config false; | config false; | |||
description "Instance protection statistics"; | description | |||
"Instance protection statistics."; | ||||
list address-family-stats { | list address-family-stats { | |||
key "address-family prefix alternate"; | key "address-family prefix alternate"; | |||
description | description | |||
"Per Address Family protected prefix information"; | "Per-Address-Family (AF) protected prefix information."; | |||
leaf address-family { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description | description | |||
"Address-family"; | "Address family."; | |||
} | } | |||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"Protected prefix."; | "Protected prefix."; | |||
} | } | |||
leaf alternate { | leaf alternate { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Alternate next hop for the prefix."; | "Alternate next hop for the prefix."; | |||
} | } | |||
leaf alternate-type { | leaf alternate-type { | |||
type enumeration { | type enumeration { | |||
enum equal-cost { | enum equal-cost { | |||
description | description | |||
"ECMP alternate."; | "ECMP-based alternate."; | |||
} | } | |||
enum lfa { | enum lfa { | |||
description | description | |||
"LFA alternate."; | "LFA-based alternate."; | |||
} | } | |||
enum remote-lfa { | enum remote-lfa { | |||
description | description | |||
"Remote LFA alternate."; | "Remote-LFA-based alternate."; | |||
} | } | |||
enum tunnel { | enum tunnel { | |||
description | description | |||
"Tunnel based alternate | "Tunnel-based alternate (like RSVP-TE or GRE)."; | |||
(like RSVP-TE or GRE)."; | ||||
} | } | |||
enum ti-lfa { | enum ti-lfa { | |||
description | description | |||
"TI-LFA alternate."; | "TI-LFA-based alternate."; | |||
} | } | |||
enum mrt { | enum mrt { | |||
description | description | |||
"MRT alternate."; | "MRT-based alternate."; | |||
} | } | |||
enum other { | enum other { | |||
description | description | |||
"Unknown alternate type."; | "Unknown alternate type."; | |||
} | } | |||
} | } | |||
description | description | |||
"Type of alternate."; | "Type of alternate."; | |||
} | } | |||
leaf best { | leaf best { | |||
type boolean; | type boolean; | |||
description | description | |||
"Indicates that this alternate is preferred."; | "Indicates that this alternate is preferred."; | |||
} | } | |||
leaf non-best-reason { | leaf non-best-reason { | |||
type string { | type string { | |||
length "1..255"; | length "1..255"; | |||
} | } | |||
description | description | |||
"Information field to describe why the alternate | "Information field used to describe why the alternate | |||
is not best."; | is not the best choice."; | |||
} | } | |||
leaf protection-available { | leaf protection-available { | |||
type bits { | type bits { | |||
bit node-protect { | bit node-protect { | |||
position 0; | position 0; | |||
description | description | |||
"Node protection available."; | "Node protection available."; | |||
} | } | |||
bit link-protect { | bit link-protect { | |||
position 1; | position 1; | |||
description | description | |||
"Link protection available."; | "Link protection available."; | |||
} | } | |||
bit srlg-protect { | bit srlg-protect { | |||
position 2; | position 2; | |||
description | description | |||
"SRLG protection available."; | "Shared Risk Link Group (SRLG) protection | |||
available."; | ||||
} | } | |||
bit downstream-protect { | bit downstream-protect { | |||
position 3; | position 3; | |||
description | description | |||
"Downstream protection available."; | "Downstream protection available."; | |||
} | } | |||
bit other { | bit other { | |||
position 4; | position 4; | |||
description | description | |||
"Other protection available."; | "Other protection available."; | |||
} | } | |||
} | } | |||
description "Protection provided by the alternate."; | description | |||
"Protection provided by the alternate."; | ||||
} | } | |||
leaf alternate-metric1 { | leaf alternate-metric1 { | |||
type uint32; | type uint32; | |||
description | description | |||
"Metric from Point of Local Repair (PLR) to | "Metric from the Point of Local Repair (PLR) to | |||
destination through the alternate path."; | the destination through the alternate path."; | |||
} | } | |||
leaf alternate-metric2 { | leaf alternate-metric2 { | |||
type uint32; | type uint32; | |||
description | description | |||
"Metric from PLR to the alternate node"; | "Metric from the PLR to the alternate node."; | |||
} | } | |||
leaf alternate-metric3 { | leaf alternate-metric3 { | |||
type uint32; | type uint32; | |||
description | description | |||
"Metric from alternate node to the destination"; | "Metric from the alternate node to the destination."; | |||
} | } | |||
} | } | |||
} | } | |||
container unprotected-routes { | container unprotected-routes { | |||
if-feature fast-reroute; | if-feature fast-reroute; | |||
config false; | config false; | |||
description "List of prefixes that are not protected"; | description | |||
"List of prefixes that are not protected."; | ||||
list address-family-stats { | list address-family-stats { | |||
key "address-family prefix"; | key "address-family prefix"; | |||
description | description | |||
"Per Address Family (AF) unprotected prefix statistics."; | "Per-AF unprotected prefix statistics."; | |||
leaf address-family { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description "Address-family"; | description | |||
"Address family."; | ||||
} | } | |||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description "Unprotected prefix."; | description | |||
"Unprotected prefix."; | ||||
} | } | |||
} | } | |||
} | } | |||
list protection-statistics { | list protection-statistics { | |||
key frr-protection-method; | key frr-protection-method; | |||
config false; | config false; | |||
description "List protection method statistics"; | description | |||
"List of protection method statistics."; | ||||
leaf frr-protection-method { | leaf frr-protection-method { | |||
type string; | type string; | |||
description "Protection method used."; | description | |||
"Protection method used."; | ||||
} | } | |||
list address-family-stats { | list address-family-stats { | |||
key address-family; | key address-family; | |||
description "Per Address Family protection statistics."; | description | |||
"Per-AF protection statistics."; | ||||
leaf address-family { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description "Address-family"; | description | |||
"Address family."; | ||||
} | } | |||
leaf total-routes { | leaf total-routes { | |||
type uint32; | type uint32; | |||
description "Total prefixes."; | description | |||
"Total prefixes."; | ||||
} | } | |||
leaf unprotected-routes { | leaf unprotected-routes { | |||
type uint32; | type uint32; | |||
description | description | |||
"Total prefixes that are not protected."; | "Total prefixes that are not protected."; | |||
} | } | |||
leaf protected-routes { | leaf protected-routes { | |||
type uint32; | type uint32; | |||
description | description | |||
"Total prefixes that are protected."; | "Total prefixes that are protected."; | |||
skipping to change at line 3907 ¶ | skipping to change at line 4119 ¶ | |||
description | description | |||
"This group defines interface configuration of IP-FRR."; | "This group defines interface configuration of IP-FRR."; | |||
container fast-reroute { | container fast-reroute { | |||
if-feature fast-reroute; | if-feature fast-reroute; | |||
container lfa { | container lfa { | |||
if-feature lfa; | if-feature lfa; | |||
leaf candidate-enable { | leaf candidate-enable { | |||
type boolean; | type boolean; | |||
default true; | default true; | |||
description | description | |||
"Enable the interface to be used as backup."; | "Enables the interface to be used as a backup."; | |||
} | } | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
default false; | default false; | |||
description | description | |||
"Activates LFA - Per-prefix LFA computation | "Activates an LFA. Per-prefix LFA computation | |||
is assumed."; | is assumed."; | |||
} | } | |||
container remote-lfa { | container remote-lfa { | |||
if-feature remote-lfa; | if-feature remote-lfa; | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
default false; | default false; | |||
description | description | |||
"Activates Remote LFA (R-LFA)."; | "Activates a Remote LFA (R-LFA)."; | |||
} | } | |||
description | description | |||
"Remote LFA configuration."; | "R-LFA configuration."; | |||
} | } | |||
description | description | |||
"LFA configuration."; | "LFA configuration."; | |||
} | } | |||
description | description | |||
"Interface IP Fast-reroute configuration."; | "Interface IP-FRR configuration."; | |||
} | } | |||
} | } | |||
grouping interface-physical-link-config { | grouping interface-physical-link-config { | |||
description | description | |||
"Interface cost configuration that only applies to | "Interface cost configuration that only applies to | |||
physical interfaces (non-virtual) and sham links."; | physical interfaces (non-virtual) and sham links."; | |||
leaf cost { | leaf cost { | |||
type ospf-link-metric; | type ospf-link-metric; | |||
description | description | |||
"Interface cost."; | "Interface's cost."; | |||
} | } | |||
leaf mtu-ignore { | leaf mtu-ignore { | |||
if-feature mtu-ignore; | if-feature mtu-ignore; | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable bypassing the MTU mismatch check in | "Enables/disables bypassing the MTU mismatch check in | |||
Database Description packets specified in RFC 2328, | Database Description packets as specified in Section 10.6 | |||
section 10.6."; | of RFC 2328."; | |||
reference | ||||
"RFC 2328: OSPF Version 2, Section 10.6"; | ||||
} | } | |||
leaf prefix-suppression { | leaf prefix-suppression { | |||
if-feature prefix-suppression; | if-feature prefix-suppression; | |||
type boolean; | type boolean; | |||
description | description | |||
"Suppress advertisement of the prefixes associated | "Suppresses advertisement of the prefixes associated | |||
with the interface."; | with the interface."; | |||
} | } | |||
} | } | |||
grouping interface-common-config { | grouping interface-common-config { | |||
description | description | |||
"Common configuration for all types of interfaces, | "Common configuration for all types of interfaces, | |||
including virtual links and sham links."; | including virtual links and sham links."; | |||
leaf hello-interval { | leaf hello-interval { | |||
type uint16; | type uint16; | |||
units seconds; | units seconds; | |||
description | description | |||
"Interval between hello packets (seconds). It must | "Interval between Hello packets (seconds). It must | |||
be the same for all routers on the same network. | be the same for all routers on the same network. | |||
Different networks, implementations, and deployments | Different networks, implementations, and deployments | |||
will use different hello-intervals. A sample value | will use different Hello intervals. A sample value | |||
for a LAN network would be 10 seconds."; | for a LAN network would be 10 seconds."; | |||
reference "RFC 2328: OSPF Version 2, Appendix C.3"; | reference | |||
"RFC 2328: OSPF Version 2, Appendix C.3"; | ||||
} | } | |||
leaf dead-interval { | leaf dead-interval { | |||
type uint16; | type uint16; | |||
units seconds; | units seconds; | |||
must "../dead-interval > ../hello-interval" { | must "../dead-interval > ../hello-interval" { | |||
error-message "The dead interval must be " | error-message "The dead interval must be " | |||
+ "larger than the hello interval"; | + "larger than the Hello interval"; | |||
description | description | |||
"The value must be greater than the 'hello-interval'."; | "The value must be greater than 'hello-interval'."; | |||
} | } | |||
description | description | |||
"Interval after which a neighbor is declared down | "Interval after which a neighbor is declared down | |||
(seconds) if hello packets are not received. It is | (seconds) if Hello packets are not received. It is | |||
typically 3 or 4 times the hello-interval. A typical | typically 3 or 4 times the 'hello-interval' period. | |||
value for LAN networks is 40 seconds."; | A typical value for LAN networks is 40 seconds."; | |||
reference "RFC 2328: OSPF Version 2, Appendix C.3"; | reference | |||
"RFC 2328: OSPF Version 2, Appendix C.3"; | ||||
} | } | |||
leaf retransmit-interval { | leaf retransmit-interval { | |||
type uint16 { | type uint16 { | |||
range "1..3600"; | range "1..3600"; | |||
} | } | |||
units seconds; | units seconds; | |||
description | description | |||
"Interval between retransmitting unacknowledged Link | "Interval between retransmitting unacknowledged Link | |||
State Advertisements (LSAs) (seconds). This should | State Advertisements (LSAs) (seconds). This should | |||
be well over the round-trip transmit delay for | be well over the round-trip transmit delay for | |||
any two routers on the network. A sample value | any two routers on the network. A sample value | |||
would be 5 seconds."; | would be 5 seconds."; | |||
reference "RFC 2328: OSPF Version 2, Appendix C.3"; | reference | |||
"RFC 2328: OSPF Version 2, Appendix C.3"; | ||||
} | } | |||
leaf transmit-delay { | leaf transmit-delay { | |||
type uint16; | type uint16; | |||
units seconds; | units seconds; | |||
description | description | |||
"Estimated time needed to transmit Link State Update | "Estimated time needed to transmit Link State Update | |||
(LSU) packets on the interface (seconds). LSAs have | (LSU) packets on the interface (seconds). LSAs have | |||
their age incremented by this amount when advertised | their age incremented by this amount when advertised | |||
on the interface. A sample value would be 1 second."; | on the interface. A sample value would be 1 second."; | |||
reference "RFC 2328: OSPF Version 2, Appendix C.3"; | reference | |||
"RFC 2328: OSPF Version 2, Appendix C.3"; | ||||
} | } | |||
leaf lls { | leaf lls { | |||
if-feature lls; | if-feature lls; | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable link-local signaling (LLS) support."; | "Enables/disables link-local signaling (LLS) support."; | |||
} | } | |||
container ttl-security { | container ttl-security { | |||
if-feature ttl-security; | if-feature ttl-security; | |||
description "Time to Live (TTL) security check."; | description | |||
"Time to Live (TTL) security checking."; | ||||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable TTL security check."; | "Enables/disables TTL security checking."; | |||
} | } | |||
leaf hops { | leaf hops { | |||
type uint8 { | type uint8 { | |||
range "1..254"; | range "1..254"; | |||
} | } | |||
default 1; | default 1; | |||
description | description | |||
"Maximum number of hops that an OSPF packet may | "Maximum number of hops that an OSPF packet may | |||
have traversed before reception."; | have traversed before reception."; | |||
} | } | |||
} | } | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
default true; | default true; | |||
description | description | |||
"Enable/disable OSPF protocol on the interface."; | "Enables/disables the OSPF protocol on the interface."; | |||
} | } | |||
container authentication { | container authentication { | |||
description "Authentication configuration."; | description | |||
"Authentication configuration."; | ||||
choice auth-type-selection { | choice auth-type-selection { | |||
description | description | |||
"Options for OSPFv2/OSPFv3 authentication | "Options for OSPFv2/OSPFv3 authentication | |||
configuration."; | configuration."; | |||
case ospfv2-auth { | case ospfv2-auth { | |||
when "derived-from-or-self(../../../../../../rt:type, " | when "derived-from-or-self(../../../../../../rt:type, " | |||
+ "'ospfv2')" { | + "'ospfv2')" { | |||
description "Applied to OSPFv2 only."; | description | |||
"Applied to OSPFv2 only."; | ||||
} | } | |||
leaf ospfv2-auth-trailer-rfc { | leaf ospfv2-auth-trailer-rfc { | |||
if-feature ospfv2-authentication-trailer; | if-feature ospfv2-authentication-trailer; | |||
type ospfv2-auth-trailer-rfc-version; | type ospfv2-auth-trailer-rfc-version; | |||
description | description | |||
"Version of OSFPv2 authentication trailer support - | "Version of OSPFv2 Authentication Trailer support. | |||
RFC 5709 or RFC 7474"; | See RFCs 5709 and 7474."; | |||
reference | ||||
"RFC 5709: OSPFv2 HMAC-SHA Cryptographic Authentication | ||||
RFC 7474: Security Extension for OSPFv2 When Using | ||||
Manual Key Management"; | ||||
} | } | |||
choice ospfv2-auth-specification { | choice ospfv2-auth-specification { | |||
description | description | |||
"Key chain or explicit key parameter specification"; | "Key chain or explicit key parameter specification."; | |||
case auth-key-chain { | case auth-key-chain { | |||
if-feature key-chain; | if-feature key-chain; | |||
leaf ospfv2-key-chain { | leaf ospfv2-key-chain { | |||
type key-chain:key-chain-ref; | type key-chain:key-chain-ref; | |||
description | description | |||
"key-chain name."; | "Name of the key chain."; | |||
} | } | |||
} | } | |||
case auth-key-explicit { | case auth-key-explicit { | |||
leaf ospfv2-key-id { | leaf ospfv2-key-id { | |||
type uint32; | type uint32; | |||
description | description | |||
"Key Identifier"; | "Key identifier."; | |||
} | } | |||
leaf ospfv2-key { | leaf ospfv2-key { | |||
type string; | type string; | |||
description | description | |||
"OSPFv2 authentication key. The | "OSPFv2 authentication key. The | |||
length of the key may be dependent on the | length of the key may be dependent on the | |||
cryptographic algorithm."; | cryptographic algorithm."; | |||
} | } | |||
leaf ospfv2-crypto-algorithm { | leaf ospfv2-crypto-algorithm { | |||
type identityref { | type identityref { | |||
base key-chain:crypto-algorithm; | base key-chain:crypto-algorithm; | |||
} | } | |||
description | description | |||
"Cryptographic algorithm associated with key."; | "Cryptographic algorithm associated with the key."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
case ospfv3-auth-ipsec { | case ospfv3-auth-ipsec { | |||
when "derived-from-or-self(../../../../../../rt:type, " | when "derived-from-or-self(../../../../../../rt:type, " | |||
+ "'ospfv3')" { | + "'ospfv3')" { | |||
description "Applied to OSPFv3 only."; | description | |||
"Applied to OSPFv3 only."; | ||||
} | } | |||
if-feature ospfv3-authentication-ipsec; | if-feature ospfv3-authentication-ipsec; | |||
leaf sa { | leaf sa { | |||
type string; | type string; | |||
description | description | |||
"Security Association (SA) name."; | "Name of the Security Association (SA)."; | |||
} | } | |||
} | } | |||
case ospfv3-auth-trailer { | case ospfv3-auth-trailer { | |||
when "derived-from-or-self(../../../../../../rt:type, " | when "derived-from-or-self(../../../../../../rt:type, " | |||
+ "'ospfv3')" { | + "'ospfv3')" { | |||
description "Applied to OSPFv3 only."; | description | |||
"Applied to OSPFv3 only."; | ||||
} | } | |||
if-feature ospfv3-authentication-trailer; | if-feature ospfv3-authentication-trailer; | |||
choice ospfv3-auth-specification { | choice ospfv3-auth-specification { | |||
description | description | |||
"Key chain or explicit key parameter specification"; | "Key chain or explicit key parameter specification."; | |||
case auth-key-chain { | case auth-key-chain { | |||
if-feature key-chain; | if-feature key-chain; | |||
leaf ospfv3-key-chain { | leaf ospfv3-key-chain { | |||
type key-chain:key-chain-ref; | type key-chain:key-chain-ref; | |||
description | description | |||
"key-chain name."; | "Name of the key chain."; | |||
} | } | |||
} | } | |||
case auth-key-explicit { | case auth-key-explicit { | |||
leaf ospfv3-sa-id { | leaf ospfv3-sa-id { | |||
type uint16; | type uint16; | |||
description | description | |||
"Security Association (SA) Identifier"; | "SA identifier."; | |||
} | } | |||
leaf ospfv3-key { | leaf ospfv3-key { | |||
type string; | type string; | |||
description | description | |||
"OSPFv3 authentication key. The | "OSPFv3 authentication key. The | |||
length of the key may be dependent on the | length of the key may be dependent on the | |||
cryptographic algorithm."; | cryptographic algorithm."; | |||
} | } | |||
leaf ospfv3-crypto-algorithm { | leaf ospfv3-crypto-algorithm { | |||
type identityref { | type identityref { | |||
base key-chain:crypto-algorithm; | base key-chain:crypto-algorithm; | |||
} | } | |||
description | description | |||
"Cryptographic algorithm associated with key."; | "Cryptographic algorithm associated with the key."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping interface-config { | grouping interface-config { | |||
description "Configuration for real interfaces."; | description | |||
"Configuration for real interfaces."; | ||||
leaf interface-type { | leaf interface-type { | |||
type enumeration { | type enumeration { | |||
enum "broadcast" { | enum "broadcast" { | |||
description | description | |||
"Specify OSPF broadcast multi-access network."; | "Specifies an OSPF broadcast multi-access network."; | |||
} | } | |||
enum "non-broadcast" { | enum "non-broadcast" { | |||
description | description | |||
"Specify OSPF Non-Broadcast Multi-Access | "Specifies an OSPF Non-Broadcast Multi-Access | |||
(NBMA) network."; | (NBMA) network."; | |||
} | } | |||
enum "point-to-multipoint" { | enum "point-to-multipoint" { | |||
description | description | |||
"Specify OSPF point-to-multipoint network."; | "Specifies an OSPF point-to-multipoint network."; | |||
} | } | |||
enum "point-to-point" { | enum "point-to-point" { | |||
description | description | |||
"Specify OSPF point-to-point network."; | "Specifies an OSPF point-to-point network."; | |||
} | } | |||
enum "hybrid" { | enum "hybrid" { | |||
if-feature hybrid-interface; | if-feature hybrid-interface; | |||
description | description | |||
"Specify OSPF hybrid broadcast/P2MP network."; | "Specifies an OSPF Hybrid Broadcast / | |||
point-to-multipoint network."; | ||||
} | } | |||
} | } | |||
description | description | |||
"Interface type."; | "Interface type."; | |||
} | } | |||
leaf passive { | leaf passive { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable passive interface - a passive interface's | "Enables/disables a passive interface. A passive | |||
prefix will be advertised but no neighbor adjacencies | interface's prefix will be advertised, but no neighbor | |||
will be formed on the interface."; | adjacencies will be formed on the interface."; | |||
} | } | |||
leaf demand-circuit { | leaf demand-circuit { | |||
if-feature demand-circuit; | if-feature demand-circuit; | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable demand circuit."; | "Enables/disables a demand circuit."; | |||
} | } | |||
leaf priority { | leaf priority { | |||
type uint8; | type uint8; | |||
description | description | |||
"Configure OSPF router priority. On multi-access network | "Configures OSPF router priority. In a multi-access | |||
this value is for Designated Router (DR) election. The | network, this value is for Designated Router (DR) election. | |||
priority is ignored on other interface types. A router | The priority is ignored on other interface types. A router | |||
with a higher priority will be preferred in the election | with a higher priority will be preferred in the election. | |||
and a value of 0 indicates the router is not eligible to | A value of 0 indicates that the router is not eligible to | |||
become Designated Router or Backup Designated Router | become the DR or Backup DR (BDR)."; | |||
(BDR)."; | ||||
} | } | |||
container multi-areas { | container multi-areas { | |||
if-feature multi-area-adj; | if-feature multi-area-adj; | |||
description "Container for multi-area config."; | description | |||
"Container for multi-area configuration."; | ||||
list multi-area { | list multi-area { | |||
key multi-area-id; | key multi-area-id; | |||
description | description | |||
"Configure OSPF multi-area adjacency."; | "Configures an OSPF multi-area adjacency."; | |||
leaf multi-area-id { | leaf multi-area-id { | |||
type area-id-type; | type area-id-type; | |||
description | description | |||
"Multi-area adjacency area ID."; | "Multi-area adjacency area ID."; | |||
} | } | |||
leaf cost { | leaf cost { | |||
type ospf-link-metric; | type ospf-link-metric; | |||
description | description | |||
"Interface cost for multi-area adjacency."; | "Interface cost for a multi-area adjacency."; | |||
} | } | |||
} | } | |||
} | } | |||
container static-neighbors { | container static-neighbors { | |||
description "Statically configured neighbors."; | description | |||
"Statically configured neighbors."; | ||||
list neighbor { | list neighbor { | |||
key "identifier"; | key "identifier"; | |||
description | description | |||
"Specify a static OSPF neighbor."; | "Specifies a static OSPF neighbor."; | |||
leaf identifier { | leaf identifier { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Neighbor Router ID, IPv4 address, or IPv6 address."; | "Neighbor's Router ID, IPv4 address, or IPv6 address."; | |||
} | } | |||
leaf cost { | leaf cost { | |||
type ospf-link-metric; | type ospf-link-metric; | |||
description | description | |||
"Neighbor cost. Different implementations have different | "Neighbor's cost. Different implementations have | |||
default costs with some defaulting to a cost inversely | different default costs, with some defaulting to a | |||
proportional to the interface speed. Others will | cost inversely proportional to the interface speed. | |||
default to 1 equating the cost to a hop count." ; | Others will default to 1, equating the cost to a | |||
hop count."; | ||||
} | } | |||
leaf poll-interval { | leaf poll-interval { | |||
type uint16; | type uint16; | |||
units seconds; | units seconds; | |||
description | description | |||
"Neighbor poll interval (seconds) for sending OSPF | "Neighbor's poll interval (seconds) for sending OSPF | |||
hello packets to discover the neighbor on NBMA | Hello packets to discover the neighbor on NBMA | |||
networks. This interval dictates the granularity for | networks. This interval dictates the granularity for | |||
discovery of new neighbors. A sample would be | discovery of new neighbors. A sample would be | |||
120 seconds (2 minutes) for a legacy Packet Data | 120 seconds (2 minutes) for a legacy Packet Data | |||
Network (PDN) X.25 network."; | Network (PDN) X.25 network."; | |||
reference "RFC 2328: OSPF Version 2, Appendix C.5"; | reference | |||
"RFC 2328: OSPF Version 2, Appendix C.5"; | ||||
} | } | |||
leaf priority { | leaf priority { | |||
type uint8; | type uint8; | |||
description | description | |||
"Neighbor priority for DR election. A router with a | "Neighbor's priority for DR election. A router with a | |||
higher priority will be preferred in the election | higher priority will be preferred in the election. | |||
and a value of 0 indicates the router is not | A value of 0 indicates that the router is not | |||
eligible to become Designated Router or Backup | eligible to become the DR or BDR."; | |||
Designated Router (BDR)."; | ||||
} | } | |||
} | } | |||
} | } | |||
leaf node-flag { | leaf node-flag { | |||
if-feature node-flag; | if-feature node-flag; | |||
type boolean; | type boolean; | |||
default false; | default false; | |||
description | description | |||
"Set prefix as identifying the advertising router."; | "Sets the prefix as identifying the advertising router."; | |||
reference "RFC 7684: OSPFv2 Prefix/Link Attribute | reference | |||
Advertisement"; | "RFC 7684: OSPFv2 Prefix/Link Attribute Advertisement"; | |||
} | } | |||
container bfd { | container bfd { | |||
if-feature bfd; | if-feature bfd; | |||
description "BFD Client Configuration."; | description | |||
"BFD client configuration."; | ||||
uses bfd-types:client-cfg-parms; | uses bfd-types:client-cfg-parms; | |||
reference "RFC YYYY: YANG Data Model for Bidirectional | reference | |||
Forwarding Detection (BFD). Please replace YYYY with | "RFC 9127: YANG Data Model for Bidirectional Forwarding | |||
published RFC number for draft-ietf-bfd-yang."; | Detection (BFD)"; | |||
} | } | |||
uses interface-fast-reroute-config; | uses interface-fast-reroute-config; | |||
uses interface-common-config; | uses interface-common-config; | |||
uses interface-physical-link-config; | uses interface-physical-link-config; | |||
} | } | |||
grouping neighbor-state { | grouping neighbor-state { | |||
description | description | |||
"OSPF neighbor operational state."; | "OSPF neighbor operational state."; | |||
leaf address { | leaf address { | |||
type inet:ip-address; | type inet:ip-address; | |||
config false; | config false; | |||
description | description | |||
"Neighbor address."; | "Neighbor's address."; | |||
} | } | |||
leaf dr-router-id { | leaf dr-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
config false; | config false; | |||
description "Neighbor's Designated Router (DR) Router ID."; | description | |||
"Neighbor's DR Router ID."; | ||||
} | } | |||
leaf dr-ip-addr { | leaf dr-ip-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
config false; | config false; | |||
description "Neighbor's Designated Router (DR) IP address."; | description | |||
"Neighbor's DR IP address."; | ||||
} | } | |||
leaf bdr-router-id { | leaf bdr-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
config false; | config false; | |||
description | description | |||
"Neighbor's Backup Designated Router (BDR) Router ID."; | "Neighbor's BDR Router ID."; | |||
} | } | |||
leaf bdr-ip-addr { | leaf bdr-ip-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
config false; | config false; | |||
description | description | |||
"Neighbor's Backup Designated Router (BDR) IP Address."; | "Neighbor's BDR IP address."; | |||
} | } | |||
leaf state { | leaf state { | |||
type nbr-state-type; | type nbr-state-type; | |||
config false; | config false; | |||
description | description | |||
"OSPF neighbor state."; | "OSPF neighbor state."; | |||
} | } | |||
leaf cost { | leaf cost { | |||
type ospf-link-metric; | type ospf-link-metric; | |||
config false; | config false; | |||
description "Cost to reach neighbor for Point-to-Multipoint | description | |||
and Hybrid networks"; | "Cost to reach the neighbor for point-to-multipoint | |||
and Hybrid networks."; | ||||
} | } | |||
leaf dead-timer { | leaf dead-timer { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
config false; | config false; | |||
description "This timer tracks the remaining time before | description | |||
the neighbor is declared dead."; | "This timer tracks the remaining time before | |||
the neighbor is declared dead."; | ||||
} | } | |||
container statistics { | container statistics { | |||
config false; | config false; | |||
description "Per-neighbor statistics"; | description | |||
"Per-neighbor statistics."; | ||||
uses neighbor-stat; | uses neighbor-stat; | |||
} | } | |||
} | } | |||
grouping interface-common-state { | grouping interface-common-state { | |||
description | description | |||
"OSPF interface common operational state."; | "OSPF interface common operational state."; | |||
reference "RFC2328 Section 9: OSPF Version2 - | reference | |||
The Interface Data Structure"; | "RFC 2328: OSPF Version 2, Section 9"; | |||
leaf state { | leaf state { | |||
type if-state-type; | type if-state-type; | |||
config false; | config false; | |||
description "Interface state."; | description | |||
"Interface state."; | ||||
} | } | |||
leaf hello-timer { | leaf hello-timer { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
config false; | config false; | |||
description "This timer tracks the remaining time before | description | |||
the next hello packet is sent on the | "This timer tracks the remaining time before the | |||
interface."; | next Hello packet is sent on the interface."; | |||
} | } | |||
leaf wait-timer { | leaf wait-timer { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
config false; | config false; | |||
description "This timer tracks the remaining time before | description | |||
the interface exits the Waiting state."; | "This timer tracks the remaining time before | |||
the interface exits the 'Waiting' state."; | ||||
} | } | |||
leaf dr-router-id { | leaf dr-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
config false; | config false; | |||
description "Designated Router (DR) Router ID."; | description | |||
"DR Router ID."; | ||||
} | } | |||
leaf dr-ip-addr { | leaf dr-ip-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
config false; | config false; | |||
description "Designated Router (DR) IP address."; | description | |||
"DR IP address."; | ||||
} | } | |||
leaf bdr-router-id { | leaf bdr-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
config false; | config false; | |||
description "Backup Designated Router (BDR) Router ID."; | description | |||
"BDR Router ID."; | ||||
} | } | |||
leaf bdr-ip-addr { | leaf bdr-ip-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
config false; | config false; | |||
description "Backup Designated Router (BDR) IP Address."; | description | |||
"BDR IP address."; | ||||
} | } | |||
container statistics { | container statistics { | |||
config false; | config false; | |||
description "Per-interface statistics"; | description | |||
"Per-interface statistics."; | ||||
uses interface-stat; | uses interface-stat; | |||
} | } | |||
container neighbors { | container neighbors { | |||
config false; | config false; | |||
description "All neighbors for the interface."; | description | |||
"All neighbors for the interface."; | ||||
list neighbor { | list neighbor { | |||
key "neighbor-router-id"; | key "neighbor-router-id"; | |||
description | description | |||
"List of interface OSPF neighbors."; | "List of interface OSPF neighbors."; | |||
leaf neighbor-router-id { | leaf neighbor-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"Neighbor Router ID."; | "Neighbor's Router ID."; | |||
} | } | |||
uses neighbor-state; | uses neighbor-state; | |||
} | } | |||
} | } | |||
container database { | container database { | |||
config false; | config false; | |||
description "Link-scope Link State Database."; | description | |||
"Link-scope LSDB."; | ||||
list link-scope-lsa-type { | list link-scope-lsa-type { | |||
key "lsa-type"; | key "lsa-type"; | |||
description | description | |||
"List OSPF link-scope LSAs."; | "List of OSPF link-scope LSAs."; | |||
leaf lsa-type { | leaf lsa-type { | |||
type uint16; | type uint16; | |||
description "OSPF link-scope LSA type."; | description | |||
"OSPF link-scope LSA type."; | ||||
} | } | |||
container link-scope-lsas { | container link-scope-lsas { | |||
description | description | |||
"All link-scope LSAs of this LSA type."; | "All link-scope LSAs of this LSA type."; | |||
list link-scope-lsa { | list link-scope-lsa { | |||
key "lsa-id adv-router"; | key "lsa-id adv-router"; | |||
description "List of OSPF link-scope LSAs"; | description | |||
"List of OSPF link-scope LSAs."; | ||||
uses lsa-key; | uses lsa-key; | |||
uses lsa { | uses lsa { | |||
refine "version/ospfv2/ospfv2" { | refine "version/ospfv2/ospfv2" { | |||
must "derived-from-or-self( " | must "derived-from-or-self( " | |||
+ "../../../../../../../../../../" | + "../../../../../../../../../../" | |||
+ "rt:type, 'ospfv2')" { | + "rt:type, 'ospfv2')" { | |||
description "OSPFv2 LSA."; | description | |||
"OSPFv2 LSA."; | ||||
} | } | |||
} | } | |||
refine "version/ospfv3/ospfv3" { | refine "version/ospfv3/ospfv3" { | |||
must "derived-from-or-self( " | must "derived-from-or-self( " | |||
+ "../../../../../../../../../../" | + "../../../../../../../../../../" | |||
+ "rt:type, 'ospfv3')" { | + "rt:type, 'ospfv3')" { | |||
description "OSPFv3 LSA."; | description | |||
"OSPFv3 LSA."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping interface-state { | grouping interface-state { | |||
description | description | |||
"OSPF interface operational state."; | "OSPF interface operational state."; | |||
reference "RFC2328 Section 9: OSPF Version2 - | reference | |||
The Interface Data Structure"; | "RFC 2328: OSPF Version 2, Section 9"; | |||
uses interface-common-state; | uses interface-common-state; | |||
} | } | |||
grouping virtual-link-config { | grouping virtual-link-config { | |||
description | description | |||
"OSPF virtual link configuration state."; | "OSPF virtual link configuration state."; | |||
uses interface-common-config; | uses interface-common-config; | |||
} | } | |||
grouping virtual-link-state { | grouping virtual-link-state { | |||
description | description | |||
"OSPF virtual link operational state."; | "OSPF virtual link operational state."; | |||
leaf cost { | leaf cost { | |||
type ospf-link-metric; | type ospf-link-metric; | |||
config false; | config false; | |||
description | description | |||
"Virtual link interface cost."; | "Virtual link interface's cost."; | |||
} | } | |||
uses interface-common-state; | uses interface-common-state; | |||
} | } | |||
grouping sham-link-config { | grouping sham-link-config { | |||
description | description | |||
"OSPF sham link configuration state."; | "OSPF sham link configuration state."; | |||
uses interface-common-config; | uses interface-common-config; | |||
uses interface-physical-link-config; | uses interface-physical-link-config; | |||
} | } | |||
grouping sham-link-state { | grouping sham-link-state { | |||
description | description | |||
"OSPF sham link operational state."; | "OSPF sham link operational state."; | |||
uses interface-common-state; | uses interface-common-state; | |||
} | } | |||
grouping address-family-area-config { | grouping address-family-area-config { | |||
description | description | |||
"OSPF address-family specific area config state."; | "OSPF address-family-specific area configuration state."; | |||
container ranges { | container ranges { | |||
description "Container for summary ranges"; | description | |||
"Container for summary ranges."; | ||||
list range { | list range { | |||
key "prefix"; | key "prefix"; | |||
description | description | |||
"Summarize routes matching address/mask - | "Summarizes routes matching the address/mask. | |||
Applicable to Area Border Routers (ABRs) only."; | Applicable to Area Border Routers (ABRs) only."; | |||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"IPv4 or IPv6 prefix"; | "IPv4 or IPv6 prefix."; | |||
} | } | |||
leaf advertise { | leaf advertise { | |||
type boolean; | type boolean; | |||
description | description | |||
"Advertise or hide."; | "Advertise or hide."; | |||
} | } | |||
leaf cost { | leaf cost { | |||
type ospf-metric; | type ospf-metric; | |||
description | description | |||
"Advertised cost of summary route."; | "Advertised cost of a summary route."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping area-common-config { | grouping area-common-config { | |||
description | description | |||
"OSPF area common configuration state."; | "OSPF area common configuration state."; | |||
leaf summary { | leaf summary { | |||
when "derived-from(../area-type,'stub-nssa-area')" { | when "derived-from(../area-type,'stub-nssa-area')" { | |||
description | description | |||
"Summary advertisement into the stub/NSSA area."; | "Summary advertisement into the stub area / NSSA."; | |||
} | } | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable summary advertisement into the stub or | "Enables/disables a summary advertisement into the stub | |||
NSSA area."; | area or NSSA."; | |||
} | } | |||
leaf default-cost { | leaf default-cost { | |||
when "derived-from(../area-type,'stub-nssa-area')" { | when "derived-from(../area-type,'stub-nssa-area')" { | |||
description | description | |||
"Cost for LSA default route advertised into the | "Cost for the LSA default route advertised into the | |||
stub or NSSA area."; | stub area or NSSA."; | |||
} | } | |||
type ospf-metric; | type ospf-metric; | |||
description | description | |||
"Set the summary default route cost for a | "Sets the summary default route cost for a stub area | |||
stub or NSSA area."; | or NSSA."; | |||
} | } | |||
} | } | |||
grouping area-config { | grouping area-config { | |||
description | description | |||
"OSPF area configuration state."; | "OSPF area configuration state."; | |||
leaf area-type { | leaf area-type { | |||
type identityref { | type identityref { | |||
base area-type; | base area-type; | |||
skipping to change at line 4605 ¶ | skipping to change at line 4856 ¶ | |||
uses area-common-config; | uses area-common-config; | |||
uses address-family-area-config; | uses address-family-area-config; | |||
} | } | |||
grouping area-state { | grouping area-state { | |||
description | description | |||
"OSPF area operational state."; | "OSPF area operational state."; | |||
container statistics { | container statistics { | |||
config false; | config false; | |||
description "Per-area statistics"; | description | |||
"Per-area statistics."; | ||||
uses area-stat; | uses area-stat; | |||
} | } | |||
container database { | container database { | |||
config false; | config false; | |||
description "Area-scope Link State Database."; | description | |||
"Area-scope LSDB."; | ||||
list area-scope-lsa-type { | list area-scope-lsa-type { | |||
key "lsa-type"; | key "lsa-type"; | |||
description "List OSPF area-scope LSAs."; | description | |||
"List of OSPF area-scope LSAs."; | ||||
leaf lsa-type { | leaf lsa-type { | |||
type uint16; | type uint16; | |||
description "OSPF area-scope LSA type."; | description | |||
"OSPF area-scope LSA type."; | ||||
} | } | |||
container area-scope-lsas { | container area-scope-lsas { | |||
description | description | |||
"All area-scope LSAs of an area-scope | "All area-scope LSAs of an area-scope | |||
LSA type."; | LSA type."; | |||
list area-scope-lsa { | list area-scope-lsa { | |||
key "lsa-id adv-router"; | key "lsa-id adv-router"; | |||
description "List of OSPF area-scope LSAs"; | description | |||
"List of OSPF area-scope LSAs."; | ||||
uses lsa-key; | uses lsa-key; | |||
uses lsa { | uses lsa { | |||
refine "version/ospfv2/ospfv2" { | refine "version/ospfv2/ospfv2" { | |||
must "derived-from-or-self( " | must "derived-from-or-self( " | |||
+ "../../../../../../../../" | + "../../../../../../../../" | |||
+ "rt:type, 'ospfv2')" { | + "rt:type, 'ospfv2')" { | |||
description "OSPFv2 LSA."; | description | |||
"OSPFv2 LSA."; | ||||
} | } | |||
} | } | |||
refine "version/ospfv3/ospfv3" { | refine "version/ospfv3/ospfv3" { | |||
must "derived-from-or-self( " | must "derived-from-or-self( " | |||
+ "../../../../../../../../" | + "../../../../../../../../" | |||
+ "rt:type, 'ospfv3')" { | + "rt:type, 'ospfv3')" { | |||
description "OSPFv3 LSA."; | description | |||
"OSPFv3 LSA."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping local-rib { | grouping local-rib { | |||
description "Local-rib - RIB for Routes computed by the local | description | |||
OSPF routing instance."; | "Local RIB. RIB for routes computed by the local | |||
OSPF routing instance."; | ||||
container local-rib { | container local-rib { | |||
config false; | config false; | |||
description "Local-rib."; | description | |||
"Local RIB."; | ||||
list route { | list route { | |||
key "prefix"; | key "prefix"; | |||
description "Routes"; | description | |||
"Routes."; | ||||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description "Destination prefix."; | description | |||
"Destination prefix."; | ||||
} | } | |||
container next-hops { | container next-hops { | |||
description "Next hops for the route."; | description | |||
"Next hops for the route."; | ||||
list next-hop { | list next-hop { | |||
key "next-hop"; | key "next-hop"; | |||
description "List of next hops for the route"; | description | |||
"List of next hops for the route."; | ||||
leaf outgoing-interface { | leaf outgoing-interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Name of the outgoing interface."; | "Name of the outgoing interface."; | |||
} | } | |||
leaf next-hop { | leaf next-hop { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "Next hop address."; | description | |||
"Address of the next hop."; | ||||
} | } | |||
} | } | |||
} | } | |||
leaf metric { | leaf metric { | |||
type uint32; | type uint32; | |||
description "Metric for this route."; | description | |||
"Metric for this route."; | ||||
} | } | |||
leaf route-type { | leaf route-type { | |||
type route-type; | type route-type; | |||
description "Route type for this route."; | description | |||
"Route type for this route."; | ||||
} | } | |||
leaf route-tag { | leaf route-tag { | |||
type uint32; | type uint32; | |||
description "Route tag for this route."; | description | |||
"Route tag for this route."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping ietf-spf-delay { | grouping ietf-spf-delay { | |||
leaf initial-delay { | leaf initial-delay { | |||
type uint32; | type uint32; | |||
units milliseconds; | units milliseconds; | |||
description | description | |||
"Delay used while in QUIET state (milliseconds)."; | "Delay used while in the 'QUIET' state (milliseconds)."; | |||
} | } | |||
leaf short-delay { | leaf short-delay { | |||
type uint32; | type uint32; | |||
units milliseconds; | units milliseconds; | |||
description | description | |||
"Delay used while in SHORT_WAIT state (milliseconds)."; | "Delay used while in the 'SHORT_WAIT' state (milliseconds)."; | |||
} | } | |||
leaf long-delay { | leaf long-delay { | |||
type uint32; | type uint32; | |||
units milliseconds; | units milliseconds; | |||
description | description | |||
"Delay used while in LONG_WAIT state (milliseconds)."; | "Delay used while in the 'LONG_WAIT' state (milliseconds)."; | |||
} | } | |||
leaf hold-down { | leaf hold-down { | |||
type uint32; | type uint32; | |||
units milliseconds; | units milliseconds; | |||
description | description | |||
"Timer used to consider an IGP stability period | "This timer value defines the period without any changes | |||
(milliseconds)."; | for the IGP to be considered stable (milliseconds)."; | |||
} | } | |||
leaf time-to-learn { | leaf time-to-learn { | |||
type uint32; | type uint32; | |||
units milliseconds; | units milliseconds; | |||
description | description | |||
"Duration used to learn all the IGP events | "Duration used to learn all the IGP events | |||
related to a single component failure (milliseconds)."; | related to a single component failure (milliseconds)."; | |||
} | } | |||
leaf current-state { | leaf current-state { | |||
type enumeration { | type enumeration { | |||
enum "quiet" { | enum "quiet" { | |||
description "QUIET state"; | description | |||
"'QUIET' state."; | ||||
} | } | |||
enum "short-wait" { | enum "short-wait" { | |||
description "SHORT_WAIT state"; | description | |||
"'SHORT_WAIT' state."; | ||||
} | } | |||
enum "long-wait" { | enum "long-wait" { | |||
description "LONG_WAIT state"; | description | |||
"'LONG_WAIT' state."; | ||||
} | } | |||
} | } | |||
config false; | config false; | |||
description | description | |||
"Current SPF back-off algorithm state."; | "Current SPF back-off algorithm state."; | |||
} | } | |||
leaf remaining-time-to-learn { | leaf remaining-time-to-learn { | |||
type rt-types:timer-value-milliseconds; | type rt-types:timer-value-milliseconds; | |||
config false; | config false; | |||
description | description | |||
"Remaining time until time-to-learn timer fires."; | "Remaining time until the time-to-learn timer fires."; | |||
} | } | |||
leaf remaining-hold-down { | leaf remaining-hold-down { | |||
type rt-types:timer-value-milliseconds; | type rt-types:timer-value-milliseconds; | |||
config false; | config false; | |||
description | description | |||
"Remaining time until hold-down timer fires."; | "Remaining time until the hold-down timer fires."; | |||
} | } | |||
leaf last-event-received { | leaf last-event-received { | |||
type yang:timestamp; | type yang:timestamp; | |||
config false; | config false; | |||
description | description | |||
"Time of last SPF triggering event."; | "Time of the last SPF triggering event."; | |||
} | } | |||
leaf next-spf-time { | leaf next-spf-time { | |||
type yang:timestamp; | type yang:timestamp; | |||
config false; | config false; | |||
description | description | |||
"Time when next SPF has been scheduled."; | "Time when the next SPF has been scheduled."; | |||
} | } | |||
leaf last-spf-time { | leaf last-spf-time { | |||
type yang:timestamp; | type yang:timestamp; | |||
config false; | config false; | |||
description | description | |||
"Time of last SPF computation."; | "Time of the last SPF computation."; | |||
} | } | |||
description | description | |||
"Grouping for IETF SPF delay configuration and state"; | "Grouping for IETF SPF delay configuration and state."; | |||
} | } | |||
grouping node-tag-config { | grouping node-tag-config { | |||
description | description | |||
"OSPF node tag config state."; | "OSPF node tag configuration state."; | |||
container node-tags { | container node-tags { | |||
if-feature node-tag; | if-feature node-tag; | |||
list node-tag { | list node-tag { | |||
key tag; | key tag; | |||
leaf tag { | leaf tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Node tag value."; | "Node tag value."; | |||
} | } | |||
description | description | |||
"List of tags."; | "List of tags."; | |||
} | } | |||
description | description | |||
"Container for node admin tags."; | "Container for node administrative tags."; | |||
} | } | |||
} | } | |||
grouping instance-config { | grouping instance-config { | |||
description | description | |||
"OSPF instance config state."; | "OSPF instance configuration state."; | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
default true; | default true; | |||
description | description | |||
"Enable/Disable the protocol."; | "Enables/disables the protocol."; | |||
} | } | |||
leaf explicit-router-id { | leaf explicit-router-id { | |||
if-feature explicit-router-id; | if-feature explicit-router-id; | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"Defined in RFC 2328. A 32-bit number | "Defined in RFC 2328. A 32-bit number | |||
that uniquely identifies the router."; | that uniquely identifies the router."; | |||
reference | ||||
"RFC 2328: OSPF Version 2"; | ||||
} | } | |||
container preference { | container preference { | |||
description | description | |||
"Route preference configuration. In many | "Route preference configuration. In many | |||
implementations, preference is referred to as | implementations, preference is referred to as | |||
administrative distance."; | administrative distance."; | |||
reference | reference | |||
"RFC 8349: A YANG Data Model for Routing Management | "RFC 8349: A YANG Data Model for Routing Management | |||
(NMDA Version)"; | (NMDA Version)"; | |||
choice scope { | choice scope { | |||
description | description | |||
"Options for expressing preference | "Options for expressing preference | |||
as single or multiple values."; | as single or multiple values."; | |||
case single-value { | case single-value { | |||
skipping to change at line 4874 ¶ | skipping to change at line 5147 ¶ | |||
description | description | |||
"Preference for AS external routes."; | "Preference for AS external routes."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container nsr { | container nsr { | |||
if-feature nsr; | if-feature nsr; | |||
description | description | |||
"Non-Stop Routing (NSR) config state."; | "Non-Stop Routing (NSR) configuration state."; | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable NSR."; | "Enables/disables NSR."; | |||
} | } | |||
} | } | |||
container graceful-restart { | container graceful-restart { | |||
if-feature graceful-restart; | if-feature graceful-restart; | |||
description | description | |||
"Graceful restart config state."; | "Graceful restart configuration state."; | |||
reference "RFC 3623: OSPF Graceful Restart | reference | |||
RFC 5187: OSPFv3 Graceful Restart"; | "RFC 3623: Graceful OSPF Restart | |||
RFC 5187: OSPFv3 Graceful Restart"; | ||||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable graceful restart as defined in RFC 3623 | "Enables/disables graceful restart as defined in RFC 3623 | |||
for OSPFv2 and RFC 5187 for OSPFv3."; | for OSPFv2 and RFC 5187 for OSPFv3."; | |||
} | } | |||
leaf helper-enable { | leaf helper-enable { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable graceful restart helper support for restarting | "Enables graceful restart helper support for restarting | |||
routers (RFC 3623 Section 3)."; | routers (Section 3 of RFC 3623)."; | |||
reference | ||||
"RFC 3623: Graceful OSPF Restart, Section 3"; | ||||
} | } | |||
leaf restart-interval { | leaf restart-interval { | |||
type uint16 { | type uint16 { | |||
range "1..1800"; | range "1..1800"; | |||
} | } | |||
units seconds; | units seconds; | |||
default "120"; | default "120"; | |||
description | description | |||
"Interval to attempt graceful restart prior | "Interval during which to attempt graceful restart prior | |||
to failing (RFC 3623 Section B.1) (seconds)"; | to failing (seconds) (Appendix B.1 of RFC 3623)."; | |||
reference | ||||
"RFC 3623: Graceful OSPF Restart, Appendix B.1"; | ||||
} | } | |||
leaf helper-strict-lsa-checking { | leaf helper-strict-lsa-checking { | |||
type boolean; | type boolean; | |||
description | description | |||
"Terminate graceful restart when an LSA topology change | "Terminates graceful restart when an LSA topology change | |||
is detected (RFC 3623 Section B.2)."; | is detected (Appendix B.2 of RFC 3623)."; | |||
reference | ||||
"RFC 3623: Graceful OSPF Restart, Appendix B.2"; | ||||
} | } | |||
} | } | |||
container auto-cost { | container auto-cost { | |||
if-feature auto-cost; | if-feature auto-cost; | |||
description | description | |||
"Interface Auto-cost configuration state."; | "Interface auto-cost configuration state."; | |||
leaf enable { | leaf enable { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable interface auto-cost."; | "Enables/disables interface auto-cost."; | |||
} | } | |||
leaf reference-bandwidth { | leaf reference-bandwidth { | |||
when "../enable = 'true'" { | when "../enable = 'true'" { | |||
description "Only when auto cost is enabled"; | description | |||
"Only when auto-cost is enabled."; | ||||
} | } | |||
type uint32 { | type uint32 { | |||
range "1..4294967"; | range "1..4294967"; | |||
} | } | |||
units Mbits; | units Mbits; | |||
description | description | |||
"Configure reference bandwidth used to automatically | "Configures reference bandwidth used to automatically | |||
determine interface cost (Mbits). The cost is the | determine interface cost (Mbits). The cost is the | |||
reference bandwidth divided by the interface speed | reference bandwidth divided by the interface speed, | |||
with 1 being the minimum cost."; | with 1 being the minimum cost."; | |||
} | } | |||
} | } | |||
container spf-control { | container spf-control { | |||
leaf paths { | leaf paths { | |||
if-feature max-ecmp; | if-feature max-ecmp; | |||
type uint16 { | type uint16 { | |||
range "1..65535"; | range "1..65535"; | |||
} | } | |||
description | description | |||
"Maximum number of Equal-Cost Multi-Path (ECMP) paths."; | "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; | |||
} | } | |||
container ietf-spf-delay { | container ietf-spf-delay { | |||
if-feature ietf-spf-delay; | if-feature ietf-spf-delay; | |||
uses ietf-spf-delay; | uses ietf-spf-delay; | |||
description | description | |||
"IETF SPF delay algorithm configuration."; | "IETF SPF delay algorithm configuration."; | |||
} | } | |||
description "SPF calculation control."; | description | |||
"SPF calculation control."; | ||||
} | } | |||
container database-control { | container database-control { | |||
leaf max-lsa { | leaf max-lsa { | |||
if-feature max-lsa; | if-feature max-lsa; | |||
type uint32 { | type uint32 { | |||
range "1..4294967294"; | range "1..4294967294"; | |||
} | } | |||
description | description | |||
"Maximum number of LSAs OSPF the router will accept."; | "Maximum number of OSPF LSAs the router will accept."; | |||
} | } | |||
description "Database maintenance control."; | description | |||
"Database maintenance control."; | ||||
} | } | |||
container stub-router { | container stub-router { | |||
if-feature stub-router; | if-feature stub-router; | |||
description "Set maximum metric configuration"; | description | |||
"Sets the maximum metric configuration."; | ||||
choice trigger { | choice trigger { | |||
description | description | |||
"Specific triggers which will enable stub | "Specific triggers that will enable stub router state."; | |||
router state."; | ||||
container always { | container always { | |||
presence | presence | |||
"Enables unconditional stub router support"; | "Enables unconditional stub router support"; | |||
description | description | |||
"Unconditional stub router state (advertise | "Unconditional stub router state (advertises | |||
transit links with MaxLinkMetric"; | transit links with 'MaxLinkMetric')."; | |||
reference "RFC 6987: OSPF Stub Router | reference | |||
Advertisement"; | "RFC 6987: OSPF Stub Router Advertisement"; | |||
} | } | |||
} | } | |||
} | } | |||
container mpls { | container mpls { | |||
description | description | |||
"OSPF MPLS config state."; | "OSPF MPLS configuration state."; | |||
container te-rid { | container te-rid { | |||
if-feature te-rid; | if-feature te-rid; | |||
description | description | |||
"Stable OSPF Router IP Address used for Traffic | "Stable OSPF Router IP address used for TE."; | |||
Engineering (TE)"; | ||||
leaf ipv4-router-id { | leaf ipv4-router-id { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Explicitly configure the TE IPv4 Router ID."; | "Explicitly configures the TE IPv4 Router ID."; | |||
} | } | |||
leaf ipv6-router-id { | leaf ipv6-router-id { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"Explicitly configure the TE IPv6 Router ID."; | "Explicitly configures the TE IPv6 Router ID."; | |||
} | } | |||
} | } | |||
container ldp { | container ldp { | |||
description | description | |||
"OSPF MPLS LDP config state."; | "OSPF MPLS LDP configuration state."; | |||
leaf igp-sync { | leaf igp-sync { | |||
if-feature ldp-igp-sync; | if-feature ldp-igp-sync; | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable LDP IGP synchronization."; | "Enables LDP IGP synchronization."; | |||
} | } | |||
} | } | |||
} | } | |||
uses instance-fast-reroute-config; | uses instance-fast-reroute-config; | |||
uses node-tag-config; | uses node-tag-config; | |||
} | } | |||
grouping instance-state { | grouping instance-state { | |||
description | description | |||
"OSPF instance operational state."; | "OSPF instance operational state."; | |||
leaf router-id { | leaf router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
config false; | config false; | |||
description | description | |||
"Defined in RFC 2328. A 32-bit number | "Defined in RFC 2328. A 32-bit number | |||
that uniquely identifies the router."; | that uniquely identifies the router."; | |||
reference | ||||
"RFC 2328: OSPF Version 2"; | ||||
} | } | |||
uses local-rib; | uses local-rib; | |||
container statistics { | container statistics { | |||
config false; | config false; | |||
description "Per-instance statistics"; | description | |||
"Per-instance statistics."; | ||||
uses instance-stat; | uses instance-stat; | |||
} | } | |||
container database { | container database { | |||
config false; | config false; | |||
description "AS-scope Link State Database."; | description | |||
"AS-scope LSDB."; | ||||
list as-scope-lsa-type { | list as-scope-lsa-type { | |||
key "lsa-type"; | key "lsa-type"; | |||
description "List OSPF AS-scope LSAs."; | description | |||
"List of OSPF AS-scope LSAs."; | ||||
leaf lsa-type { | leaf lsa-type { | |||
type uint16; | type uint16; | |||
description "OSPF AS scope LSA type."; | description | |||
"OSPF AS-scope LSA type."; | ||||
} | } | |||
container as-scope-lsas { | container as-scope-lsas { | |||
description "All AS-scope of LSA of this LSA type."; | description | |||
"All AS-scope LSAs of this LSA type."; | ||||
list as-scope-lsa { | list as-scope-lsa { | |||
key "lsa-id adv-router"; | key "lsa-id adv-router"; | |||
description "List of OSPF AS-scope LSAs"; | description | |||
"List of OSPF AS-scope LSAs."; | ||||
uses lsa-key; | uses lsa-key; | |||
uses lsa { | uses lsa { | |||
refine "version/ospfv2/ospfv2" { | refine "version/ospfv2/ospfv2" { | |||
must "derived-from-or-self( " | must "derived-from-or-self( " | |||
+ "../../../../../../" | + "../../../../../../" | |||
+ "rt:type, 'ospfv2')" { | + "rt:type, 'ospfv2')" { | |||
description "OSPFv2 LSA."; | description | |||
"OSPFv2 LSA."; | ||||
} | } | |||
} | } | |||
refine "version/ospfv3/ospfv3" { | refine "version/ospfv3/ospfv3" { | |||
must "derived-from-or-self( " | must "derived-from-or-self( " | |||
+ "../../../../../../" | + "../../../../../../" | |||
+ "rt:type, 'ospfv3')" { | + "rt:type, 'ospfv3')" { | |||
description "OSPFv3 LSA."; | description | |||
"OSPFv3 LSA."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
uses spf-log; | uses spf-log; | |||
uses lsa-log; | uses lsa-log; | |||
} | } | |||
grouping multi-topology-area-common-config { | grouping multi-topology-area-common-config { | |||
description | description | |||
"OSPF multi-topology area common configuration state."; | "OSPF multi-topology area common configuration state."; | |||
leaf summary { | leaf summary { | |||
when "derived-from(../../../area-type, 'stub-nssa-area')" { | when "derived-from(../../../area-type, 'stub-nssa-area')" { | |||
description | description | |||
"Summary advertisement into the stub/NSSA area."; | "Summary advertisement into the stub area / NSSA."; | |||
} | } | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable summary advertisement into the | "Enables/disables a summary advertisement into the | |||
topology in the stub or NSSA area."; | topology in the stub area or NSSA."; | |||
} | } | |||
leaf default-cost { | leaf default-cost { | |||
when "derived-from(../../../area-type, 'stub-nssa-area')" { | when "derived-from(../../../area-type, 'stub-nssa-area')" { | |||
description | description | |||
"Cost for LSA default route advertised into the | "Cost for the LSA default route advertised into the | |||
topology into the stub or NSSA area."; | topology in the stub area or NSSA."; | |||
} | } | |||
type ospf-metric; | type ospf-metric; | |||
description | description | |||
"Set the summary default route cost for a | "Sets the summary default route cost for a | |||
stub or NSSA area."; | stub area or NSSA."; | |||
} | } | |||
} | } | |||
grouping multi-topology-area-config { | grouping multi-topology-area-config { | |||
description | description | |||
"OSPF multi-topology area configuration state."; | "OSPF multi-topology area configuration state."; | |||
uses multi-topology-area-common-config; | uses multi-topology-area-common-config; | |||
uses address-family-area-config; | uses address-family-area-config; | |||
} | } | |||
skipping to change at line 5141 ¶ | skipping to change at line 5433 ¶ | |||
leaf cost { | leaf cost { | |||
type ospf-link-metric; | type ospf-link-metric; | |||
description | description | |||
"Interface cost for this topology."; | "Interface cost for this topology."; | |||
} | } | |||
} | } | |||
grouping ospfv3-interface-config { | grouping ospfv3-interface-config { | |||
description | description | |||
"OSPFv3 interface specific configuration state."; | "OSPFv3 interface-specific configuration state."; | |||
leaf instance-id { | leaf instance-id { | |||
type uint8 { | type uint8 { | |||
range "0 .. 31"; | range "0 .. 31"; | |||
} | } | |||
description | description | |||
"OSPFv3 instance ID."; | "OSPFv3 instance ID."; | |||
} | } | |||
} | } | |||
grouping ospfv3-interface-state { | grouping ospfv3-interface-state { | |||
description | description | |||
"OSPFv3 interface specific operational state."; | "OSPFv3 interface-specific operational state."; | |||
leaf interface-id { | leaf interface-id { | |||
type uint16; | type uint16; | |||
config false; | config false; | |||
description | description | |||
"OSPFv3 interface ID."; | "OSPFv3 interface ID."; | |||
} | } | |||
} | } | |||
grouping lsa-identifiers { | grouping lsa-identifiers { | |||
description | description | |||
"The parameters that uniquely identify an LSA."; | "The parameters that uniquely identify an LSA."; | |||
leaf area-id { | leaf area-id { | |||
type area-id-type; | type area-id-type; | |||
description | description | |||
"Area ID"; | "Area ID."; | |||
} | } | |||
leaf type { | leaf type { | |||
type uint16; | type uint16; | |||
description | description | |||
"LSA type."; | "LSA type."; | |||
} | } | |||
leaf lsa-id { | leaf lsa-id { | |||
type union { | type union { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
type yang:dotted-quad; | type yang:dotted-quad; | |||
} | } | |||
description "Link-State ID."; | description | |||
"Link State ID."; | ||||
} | } | |||
leaf adv-router { | leaf adv-router { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"LSA advertising router."; | "LSA advertising router."; | |||
} | } | |||
leaf seq-num { | leaf seq-num { | |||
type uint32; | type uint32; | |||
description | description | |||
"LSA sequence number."; | "LSA sequence number."; | |||
} | } | |||
} | } | |||
grouping spf-log { | grouping spf-log { | |||
description | description | |||
"Grouping for SPF log."; | "Grouping for the SPF log."; | |||
container spf-log { | container spf-log { | |||
config false; | config false; | |||
description | description | |||
"This container lists the SPF log."; | "This container lists the SPF log entries."; | |||
list event { | list event { | |||
key id; | key id; | |||
description | description | |||
"List of SPF log entries represented | "List of SPF log entries represented | |||
as a wrapping buffer in chronological | as a wrapping buffer in chronological | |||
order with the oldest entry returned | order, with the oldest entry returned | |||
first."; | first."; | |||
leaf id { | leaf id { | |||
type uint32; | type uint32; | |||
description | description | |||
"Event identifier - Purely internal value."; | "Event identifier. A purely internal value."; | |||
} | } | |||
leaf spf-type { | leaf spf-type { | |||
type enumeration { | type enumeration { | |||
enum full { | enum full { | |||
description | description | |||
"SPF computation was a Full SPF."; | "The SPF computation was for a full SPF."; | |||
} | } | |||
enum intra { | enum intra { | |||
description | description | |||
"SPF computation was only for intra-area routes."; | "The SPF computation was only for intra-area | |||
routes."; | ||||
} | } | |||
enum inter { | enum inter { | |||
description | description | |||
"SPF computation was only for inter-area | "The SPF computation was only for inter-area | |||
summary routes."; | summary routes."; | |||
} | } | |||
enum external { | enum external { | |||
description | description | |||
"SPF computation was only for AS external routes."; | "The SPF computation was only for AS external | |||
routes."; | ||||
} | } | |||
} | } | |||
description | description | |||
"The SPF computation type for the SPF log entry."; | "The SPF computation type for the SPF log entry."; | |||
} | } | |||
leaf schedule-timestamp { | leaf schedule-timestamp { | |||
type yang:timestamp; | type yang:timestamp; | |||
description | description | |||
"This is the timestamp when the computation was | "This is the timestamp when the computation was | |||
scheduled."; | scheduled."; | |||
} | } | |||
leaf start-timestamp { | leaf start-timestamp { | |||
type yang:timestamp; | type yang:timestamp; | |||
description | description | |||
"This is the timestamp when the computation was | "This is the timestamp when the computation was | |||
started."; | started."; | |||
} | } | |||
leaf end-timestamp { | leaf end-timestamp { | |||
type yang:timestamp; | type yang:timestamp; | |||
description | description | |||
"This the timestamp when the computation was | "This is the timestamp when the computation was | |||
completed."; | completed."; | |||
} | } | |||
list trigger-lsa { | list trigger-lsa { | |||
description | description | |||
"The list of LSAs that triggered the computation."; | "The list of LSAs that triggered the computation."; | |||
uses lsa-identifiers; | uses lsa-identifiers; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping lsa-log { | grouping lsa-log { | |||
description | description | |||
"Grouping for the LSA log."; | "Grouping for the LSA log."; | |||
container lsa-log { | container lsa-log { | |||
config false; | config false; | |||
description | description | |||
"This container lists the LSA log. | "This container lists the LSA log entries. | |||
Local LSA modifications are also included | Local LSA modifications are also included | |||
in the list."; | in the list."; | |||
list event { | list event { | |||
key id; | key id; | |||
description | description | |||
"List of LSA log entries represented | "List of LSA log entries represented | |||
as a wrapping buffer in chronological order | as a wrapping buffer in chronological order, | |||
with the oldest entries returned first."; | with the oldest entry returned first."; | |||
leaf id { | leaf id { | |||
type uint32; | type uint32; | |||
description | description | |||
"Event identifier - purely internal value."; | "Event identifier. A purely internal value."; | |||
} | } | |||
container lsa { | container lsa { | |||
description | description | |||
"This container describes the logged LSA."; | "This container describes the LSA that was logged."; | |||
uses lsa-identifiers; | uses lsa-identifiers; | |||
} | } | |||
leaf received-timestamp { | leaf received-timestamp { | |||
type yang:timestamp; | type yang:timestamp; | |||
description | description | |||
"This is the timestamp when the LSA was received. | "This is the timestamp when the LSA was received. | |||
In case of local LSA update, the timestamp refers | In the case of a local LSA update, the timestamp | |||
to the LSA origination time."; | refers to the LSA origination time."; | |||
} | } | |||
leaf reason { | leaf reason { | |||
type identityref { | type identityref { | |||
base lsa-log-reason; | base lsa-log-reason; | |||
} | } | |||
description | description | |||
"This reason for the LSA log entry."; | "Reason for the LSA log entry."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol" { | + "rt:control-plane-protocol" { | |||
when "derived-from(rt:type, 'ospf')" { | when "derived-from(rt:type, 'ospf')" { | |||
description | description | |||
"This augmentation is only valid for a routing protocol | "This augmentation is only valid for a routing protocol | |||
instance of OSPF (type 'ospfv2' or 'ospfv3')."; | instance of OSPF (type 'ospfv2' or 'ospfv3')."; | |||
} | } | |||
description "OSPF protocol ietf-routing module | description | |||
control-plane-protocol augmentation."; | "OSPF protocol 'ietf-routing' module 'control-plane-protocol' | |||
augmentation."; | ||||
container ospf { | container ospf { | |||
description | description | |||
"OSPF protocol Instance"; | "OSPF protocol instance."; | |||
leaf address-family { | leaf address-family { | |||
type iana-rt-types:address-family; | type iana-rt-types:address-family; | |||
description | description | |||
"Address-family of the instance."; | "Address family of the instance."; | |||
} | } | |||
uses instance-config; | uses instance-config; | |||
uses instance-state; | uses instance-state; | |||
container areas { | container areas { | |||
description "All areas."; | description | |||
"All areas."; | ||||
list area { | list area { | |||
key "area-id"; | key "area-id"; | |||
description | description | |||
"List of OSPF areas"; | "List of OSPF areas."; | |||
leaf area-id { | leaf area-id { | |||
type area-id-type; | type area-id-type; | |||
description | description | |||
"Area ID"; | "Area ID."; | |||
} | } | |||
uses area-config; | uses area-config; | |||
uses area-state; | uses area-state; | |||
container virtual-links { | container virtual-links { | |||
when "derived-from-or-self(../area-type, 'normal-area') " | when "derived-from-or-self(../area-type, 'normal-area') " | |||
+ "and ../area-id = '0.0.0.0'" { | + "and ../area-id = '0.0.0.0'" { | |||
description | description | |||
"Virtual links must be in backbone area."; | "Virtual links must be in a backbone area."; | |||
} | } | |||
description "All virtual links."; | description | |||
"All virtual links."; | ||||
list virtual-link { | list virtual-link { | |||
key "transit-area-id router-id"; | key "transit-area-id router-id"; | |||
description | description | |||
"OSPF virtual link"; | "OSPF virtual link."; | |||
leaf transit-area-id { | leaf transit-area-id { | |||
type leafref { | type leafref { | |||
path "../../../../area/area-id"; | path "../../../../area/area-id"; | |||
} | } | |||
must "derived-from-or-self(" | must "derived-from-or-self(" | |||
+ "../../../../area[area-id=current()]/area-type, " | + "../../../../area[area-id=current()]/area-type, " | |||
+ "'normal-area') and " | + "'normal-area') and " | |||
+ "../../../../area[area-id=current()]/area-id != " | + "../../../../area[area-id=current()]/area-id != " | |||
+ "'0.0.0.0'" { | + "'0.0.0.0'" { | |||
error-message "Virtual link transit area must " | error-message "The virtual link transit area must " | |||
+ "be non-zero."; | + "be non-zero."; | |||
description | description | |||
"Virtual-link transit area must be | "The virtual link transit area must be a | |||
non-zero area."; | non-zero area."; | |||
} | } | |||
description | description | |||
"Virtual link transit area ID."; | "Virtual link transit area ID."; | |||
} | } | |||
leaf router-id { | leaf router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description | description | |||
"Virtual Link remote endpoint Router ID."; | "Virtual link remote endpoint Router ID."; | |||
} | } | |||
uses virtual-link-config; | uses virtual-link-config; | |||
uses virtual-link-state; | uses virtual-link-state; | |||
} | } | |||
} | } | |||
container sham-links { | container sham-links { | |||
if-feature pe-ce-protocol; | if-feature pe-ce-protocol; | |||
description "All sham links."; | description | |||
"All sham links."; | ||||
list sham-link { | list sham-link { | |||
key "local-id remote-id"; | key "local-id remote-id"; | |||
description | description | |||
"OSPF sham link"; | "OSPF sham link."; | |||
leaf local-id { | leaf local-id { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Address of the local sham Link endpoint."; | "Address of the local sham link endpoint."; | |||
} | } | |||
leaf remote-id { | leaf remote-id { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Address of the remote sham Link endpoint."; | "Address of the remote sham link endpoint."; | |||
} | } | |||
uses sham-link-config; | uses sham-link-config; | |||
uses sham-link-state; | uses sham-link-state; | |||
} | } | |||
} | } | |||
container interfaces { | container interfaces { | |||
description "All interfaces."; | description | |||
"All interfaces."; | ||||
list interface { | list interface { | |||
key "name"; | key "name"; | |||
description | description | |||
"List of OSPF interfaces."; | "List of OSPF interfaces."; | |||
leaf name { | leaf name { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Interface name reference."; | "Interface name reference."; | |||
} | } | |||
uses interface-config; | uses interface-config; | |||
skipping to change at line 5438 ¶ | skipping to change at line 5738 ¶ | |||
when "derived-from(../rt:type, 'ospf')" { | when "derived-from(../rt:type, 'ospf')" { | |||
description | description | |||
"This augmentation is only valid for OSPF | "This augmentation is only valid for OSPF | |||
(type 'ospfv2' or 'ospfv3')."; | (type 'ospfv2' or 'ospfv3')."; | |||
} | } | |||
if-feature multi-topology; | if-feature multi-topology; | |||
description | description | |||
"OSPF multi-topology instance configuration | "OSPF multi-topology instance configuration | |||
state augmentation."; | state augmentation."; | |||
container topologies { | container topologies { | |||
description "All topologies."; | description | |||
"All topologies."; | ||||
list topology { | list topology { | |||
key "name"; | key "name"; | |||
description | description | |||
"OSPF topology - The OSPF topology address-family | "OSPF topology. The OSPF topology address family | |||
must coincide with the routing-instance | must coincide with the routing instance's | |||
address-family."; | address family."; | |||
leaf name { | leaf name { | |||
type leafref { | type leafref { | |||
path "../../../../../../rt:ribs/rt:rib/rt:name"; | path "../../../../../../rt:ribs/rt:rib/rt:name"; | |||
} | } | |||
description "RIB name corresponding to the OSPF | description | |||
topology."; | "RIB name corresponding to the OSPF topology."; | |||
} | } | |||
uses multi-topology-state; | uses multi-topology-state; | |||
} | } | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/ospf/" | + "rt:control-plane-protocol/ospf/" | |||
+ "areas/area" { | + "areas/area" { | |||
when "derived-from-or-self(../../../rt:type, " | when "derived-from-or-self(../../../rt:type, " | |||
+ "'ospfv2')" { | + "'ospfv2')" { | |||
description | description | |||
"This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
} | } | |||
if-feature multi-topology; | if-feature multi-topology; | |||
description | description | |||
"OSPF multi-topology area configuration state | "OSPF multi-topology area configuration state | |||
augmentation."; | augmentation."; | |||
container topologies { | container topologies { | |||
description "All topologies for the area."; | description | |||
"All topologies for the area."; | ||||
list topology { | list topology { | |||
key "name"; | key "name"; | |||
description "OSPF area topology."; | description | |||
"OSPF area topology."; | ||||
leaf name { | leaf name { | |||
type leafref { | type leafref { | |||
path "../../../../../../../../" | path "../../../../../../../../" | |||
+ "rt:ribs/rt:rib/rt:name"; | + "rt:ribs/rt:rib/rt:name"; | |||
} | } | |||
description | description | |||
"Single topology enabled for this area."; | "Single topology enabled for this area."; | |||
} | } | |||
uses multi-topology-area-config; | uses multi-topology-area-config; | |||
skipping to change at line 5502 ¶ | skipping to change at line 5805 ¶ | |||
when "derived-from-or-self(../../../../../rt:type, " | when "derived-from-or-self(../../../../../rt:type, " | |||
+ "'ospfv2')" { | + "'ospfv2')" { | |||
description | description | |||
"This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
} | } | |||
if-feature multi-topology; | if-feature multi-topology; | |||
description | description | |||
"OSPF multi-topology interface configuration state | "OSPF multi-topology interface configuration state | |||
augmentation."; | augmentation."; | |||
container topologies { | container topologies { | |||
description "All topologies for the interface."; | description | |||
"All topologies for the interface."; | ||||
list topology { | list topology { | |||
key "name"; | key "name"; | |||
description "OSPF interface topology."; | description | |||
"OSPF interface topology."; | ||||
leaf name { | leaf name { | |||
type leafref { | type leafref { | |||
path "../../../../../../../../../../" | path "../../../../../../../../../../" | |||
+ "rt:ribs/rt:rib/rt:name"; | + "rt:ribs/rt:rib/rt:name"; | |||
} | } | |||
description | description | |||
"Single topology enabled on this interface."; | "Single topology enabled on this interface."; | |||
} | } | |||
uses multi-topology-interface-config; | uses multi-topology-interface-config; | |||
skipping to change at line 5529 ¶ | skipping to change at line 5834 ¶ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/ospf/" | + "rt:control-plane-protocol/ospf/" | |||
+ "areas/area/interfaces/interface" { | + "areas/area/interfaces/interface" { | |||
when "derived-from-or-self(../../../../../rt:type, " | when "derived-from-or-self(../../../../../rt:type, " | |||
+ "'ospfv3')" { | + "'ospfv3')" { | |||
description | description | |||
"This augmentation is only valid for OSPFv3."; | "This augmentation is only valid for OSPFv3."; | |||
} | } | |||
description | description | |||
"OSPFv3 interface specific configuration state | "OSPFv3 interface-specific configuration state | |||
augmentation."; | augmentation."; | |||
uses ospfv3-interface-config; | uses ospfv3-interface-config; | |||
uses ospfv3-interface-state; | uses ospfv3-interface-state; | |||
} | } | |||
grouping route-content { | grouping route-content { | |||
description | description | |||
"This grouping defines OSPF-specific route attributes."; | "This grouping defines OSPF-specific route attributes."; | |||
leaf metric { | leaf metric { | |||
type uint32; | type uint32; | |||
description "OSPF route metric."; | description | |||
"OSPF route metric."; | ||||
} | } | |||
leaf tag { | leaf tag { | |||
type uint32; | type uint32; | |||
default "0"; | default "0"; | |||
description "OSPF route tag."; | description | |||
"OSPF route tag."; | ||||
} | } | |||
leaf route-type { | leaf route-type { | |||
type route-type; | type route-type; | |||
description "OSPF route type"; | description | |||
"OSPF route type."; | ||||
} | } | |||
} | } | |||
augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" { | augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" { | |||
when "derived-from(rt:source-protocol, 'ospf')" { | when "derived-from(rt:source-protocol, 'ospf')" { | |||
description | description | |||
"This augmentation is only valid for routes whose | "This augmentation is only valid for routes whose | |||
source protocol is OSPF."; | source protocol is OSPF."; | |||
} | } | |||
description | description | |||
skipping to change at line 5571 ¶ | skipping to change at line 5879 ¶ | |||
uses route-content; | uses route-content; | |||
} | } | |||
/* | /* | |||
* RPCs | * RPCs | |||
*/ | */ | |||
rpc clear-neighbor { | rpc clear-neighbor { | |||
description | description | |||
"This RPC request clears a particular set of OSPF neighbors. | "This RPC request clears a particular set of OSPF neighbors. | |||
If the operation fails for OSPF internal reason, then | If the operation fails for an OSPF-internal reason, then | |||
error-tag and error-app-tag should be set to a meaningful | 'error-tag' and 'error-app-tag' should be set to meaningful | |||
value."; | values."; | |||
input { | input { | |||
leaf routing-protocol-name { | leaf routing-protocol-name { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
mandatory "true"; | mandatory "true"; | |||
description | description | |||
"OSPF protocol instance which information for neighbors | "OSPF protocol instance for which information for neighbors | |||
are to be cleared. | is to be cleared. | |||
If the referenced OSPF instance doesn't exist, then | If the referenced OSPF instance doesn't exist, then | |||
this operation SHALL fail with error-tag 'data-missing' | this operation SHALL fail with an 'error-tag' setting of | |||
and error-app-tag | 'data-missing' and an 'error-app-tag' setting of | |||
'routing-protocol-instance-not-found'."; | 'routing-protocol-instance-not-found'."; | |||
} | } | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Name of the OSPF interface for which neighbors are to | "Name of the OSPF interface for which neighbors are to | |||
be cleared. | be cleared. | |||
If the referenced OSPF interface doesn't exist, then | If the referenced OSPF interface doesn't exist, then | |||
this operation SHALL fail with error-tag | this operation SHALL fail with an 'error-tag' setting | |||
'data-missing' and error-app-tag | of 'data-missing' and an 'error-app-tag' setting of | |||
'ospf-interface-not-found'."; | 'ospf-interface-not-found'."; | |||
} | } | |||
} | } | |||
} | } | |||
rpc clear-database { | rpc clear-database { | |||
description | description | |||
"This RPC request clears a particular OSPF Link State | "This RPC request clears a particular OSPF LSDB. | |||
Database. If the operation fails for OSPF internal reason, | If the operation fails for an OSPF-internal reason, | |||
then error-tag and error-app-tag should be set to a | then 'error-tag' and 'error-app-tag' should be set to | |||
meaningful value."; | meaningful values."; | |||
input { | input { | |||
leaf routing-protocol-name { | leaf routing-protocol-name { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
mandatory "true"; | mandatory "true"; | |||
description | description | |||
"OSPF protocol instance whose Link State Database is to | "OSPF protocol instance whose LSDB is to be cleared. | |||
be cleared. | ||||
If the referenced OSPF instance doesn't exist, then | If the referenced OSPF instance doesn't exist, then | |||
this operation SHALL fail with error-tag 'data-missing' | this operation SHALL fail with an 'error-tag' setting of | |||
and error-app-tag | 'data-missing' and an 'error-app-tag' setting of | |||
'routing-protocol-instance-not-found'."; | 'routing-protocol-instance-not-found'."; | |||
} | } | |||
} | } | |||
} | } | |||
/* | /* | |||
* Notifications | * Notifications | |||
*/ | */ | |||
grouping notification-instance-hdr { | grouping notification-instance-hdr { | |||
description | description | |||
"This grouping describes common instance specific | "This grouping describes common instance-specific | |||
data for OSPF notifications."; | data for OSPF notifications."; | |||
leaf routing-protocol-name { | leaf routing-protocol-name { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
must "derived-from( " | must "derived-from( " | |||
+ "/rt:routing/rt:control-plane-protocols/" | + "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol[rt:name=current()]/" | + "rt:control-plane-protocol[rt:name=current()]/" | |||
+ "rt:type, 'ospf')"; | + "rt:type, 'ospf')"; | |||
description | description | |||
"OSPF routing protocol instance name."; | "Name of the OSPF routing protocol instance."; | |||
} | } | |||
leaf address-family { | leaf address-family { | |||
type leafref { | type leafref { | |||
path "/rt:routing/" | path "/rt:routing/" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
+ "[rt:name=current()/../routing-protocol-name]/" | + "[rt:name=current()/../routing-protocol-name]/" | |||
+ "ospf/address-family"; | + "ospf/address-family"; | |||
} | } | |||
description | description | |||
"Address family of the OSPF instance."; | "Address family of the OSPF instance."; | |||
} | } | |||
} | } | |||
grouping notification-interface { | grouping notification-interface { | |||
description | description | |||
"This grouping provides interface information | "This grouping provides interface information | |||
for the OSPF interface specific notification."; | for OSPF interface-specific notifications."; | |||
choice if-link-type-selection { | choice if-link-type-selection { | |||
description | description | |||
"Options for link type."; | "Options for link types."; | |||
container interface { | container interface { | |||
description "Normal interface."; | description | |||
"Normal interface."; | ||||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description "Interface."; | description | |||
"Interface."; | ||||
} | } | |||
} | } | |||
container virtual-link { | container virtual-link { | |||
description "virtual-link."; | description | |||
"Virtual link."; | ||||
leaf transit-area-id { | leaf transit-area-id { | |||
type area-id-type; | type area-id-type; | |||
description "Area ID."; | description | |||
"Area ID."; | ||||
} | } | |||
leaf neighbor-router-id { | leaf neighbor-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description "Neighbor Router ID."; | description | |||
"Neighbor's Router ID."; | ||||
} | } | |||
} | } | |||
container sham-link { | container sham-link { | |||
description "sham link."; | description | |||
"Sham link."; | ||||
leaf area-id { | leaf area-id { | |||
type area-id-type; | type area-id-type; | |||
description "Area ID."; | description | |||
"Area ID."; | ||||
} | } | |||
leaf local-ip-addr { | leaf local-ip-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "Sham link local address."; | description | |||
"Sham link's local address."; | ||||
} | } | |||
leaf remote-ip-addr { | leaf remote-ip-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "Sham link remote address."; | description | |||
"Sham link's remote address."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping notification-neighbor { | grouping notification-neighbor { | |||
description | description | |||
"This grouping provides the neighbor information | "This grouping provides the neighbor information | |||
for neighbor specific notifications."; | for neighbor-specific notifications."; | |||
leaf neighbor-router-id { | leaf neighbor-router-id { | |||
type rt-types:router-id; | type rt-types:router-id; | |||
description "Neighbor Router ID."; | description | |||
"Neighbor's Router ID."; | ||||
} | } | |||
leaf neighbor-ip-addr { | leaf neighbor-ip-addr { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "Neighbor address."; | description | |||
"Neighbor's address."; | ||||
} | } | |||
} | } | |||
notification if-state-change { | notification if-state-change { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface; | uses notification-interface; | |||
leaf state { | leaf state { | |||
type if-state-type; | type if-state-type; | |||
description "Interface state."; | description | |||
"Interface state."; | ||||
} | } | |||
description | description | |||
"This notification is sent when an interface | "This notification is sent when an interface | |||
state change is detected."; | state change is detected."; | |||
} | } | |||
notification if-config-error { | notification if-config-error { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface; | uses notification-interface; | |||
leaf packet-source { | leaf packet-source { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "Source address."; | description | |||
"Source address."; | ||||
} | } | |||
leaf packet-type { | leaf packet-type { | |||
type packet-type; | type packet-type; | |||
description "OSPF packet type."; | description | |||
"OSPF packet type."; | ||||
} | } | |||
leaf error { | leaf error { | |||
type enumeration { | type enumeration { | |||
enum "bad-version" { | enum "bad-version" { | |||
description "Bad version."; | description | |||
"Bad version."; | ||||
} | } | |||
enum "area-mismatch" { | enum "area-mismatch" { | |||
description "Area mismatch."; | description | |||
"Area mismatch."; | ||||
} | } | |||
enum "unknown-nbma-nbr" { | enum "unknown-nbma-nbr" { | |||
description "Unknown NBMA neighbor."; | description | |||
"Unknown NBMA neighbor."; | ||||
} | } | |||
enum "unknown-virtual-nbr" { | enum "unknown-virtual-nbr" { | |||
description "Unknown virtual link neighbor."; | description | |||
"Unknown virtual link neighbor."; | ||||
} | } | |||
enum "auth-type-mismatch" { | enum "auth-type-mismatch" { | |||
description "Auth type mismatch."; | description | |||
"Authentication type mismatch."; | ||||
} | } | |||
enum "auth-failure" { | enum "auth-failure" { | |||
description "Auth failure."; | description | |||
"Authentication failure."; | ||||
} | } | |||
enum "net-mask-mismatch" { | enum "net-mask-mismatch" { | |||
description "Network mask mismatch."; | description | |||
"Network mask mismatch."; | ||||
} | } | |||
enum "hello-interval-mismatch" { | enum "hello-interval-mismatch" { | |||
description "Hello interval mismatch."; | description | |||
"Hello interval mismatch."; | ||||
} | } | |||
enum "dead-interval-mismatch" { | enum "dead-interval-mismatch" { | |||
description "Dead interval mismatch."; | description | |||
"Dead interval mismatch."; | ||||
} | } | |||
enum "option-mismatch" { | enum "option-mismatch" { | |||
description "Option mismatch."; | description | |||
"Option mismatch."; | ||||
} | } | |||
enum "mtu-mismatch" { | enum "mtu-mismatch" { | |||
description "MTU mismatch."; | description | |||
"MTU mismatch."; | ||||
} | } | |||
enum "duplicate-router-id" { | enum "duplicate-router-id" { | |||
description "Duplicate Router ID."; | description | |||
"Duplicate Router ID."; | ||||
} | } | |||
enum "no-error" { | enum "no-error" { | |||
description "No error."; | description | |||
"No error."; | ||||
} | } | |||
} | } | |||
description "Error code."; | description | |||
"Error codes."; | ||||
} | } | |||
description | description | |||
"This notification is sent when an interface | "This notification is sent when an interface | |||
config error is detected."; | configuration error is detected."; | |||
} | } | |||
notification nbr-state-change { | notification nbr-state-change { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface; | uses notification-interface; | |||
uses notification-neighbor; | uses notification-neighbor; | |||
leaf state { | leaf state { | |||
type nbr-state-type; | type nbr-state-type; | |||
description "Neighbor state."; | description | |||
"Neighbor state."; | ||||
} | } | |||
description | description | |||
"This notification is sent when a neighbor | "This notification is sent when a neighbor | |||
state change is detected."; | state change is detected."; | |||
} | } | |||
notification nbr-restart-helper-status-change { | notification nbr-restart-helper-status-change { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface; | uses notification-interface; | |||
uses notification-neighbor; | uses notification-neighbor; | |||
leaf status { | leaf status { | |||
type restart-helper-status-type; | type restart-helper-status-type; | |||
description "Restart helper status."; | description | |||
"Restart helper status."; | ||||
} | } | |||
leaf age { | leaf age { | |||
type rt-types:timer-value-seconds16; | type rt-types:timer-value-seconds16; | |||
description | description | |||
"Remaining time in current OSPF graceful restart | "Remaining time in the current OSPF graceful restart | |||
interval when the router is acting as a restart | interval when the router is acting as a restart | |||
helper for the neighbor."; | helper for the neighbor."; | |||
} | } | |||
leaf exit-reason { | leaf exit-reason { | |||
type restart-exit-reason-type; | type restart-exit-reason-type; | |||
description | description | |||
"Restart helper exit reason."; | "Restart helper exit reason."; | |||
} | } | |||
description | description | |||
"This notification is sent when a neighbor restart | "This notification is sent when a neighbor restart | |||
helper status change is detected."; | helper status change is detected."; | |||
} | } | |||
notification if-rx-bad-packet { | notification if-rx-bad-packet { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
uses notification-interface; | uses notification-interface; | |||
leaf packet-source { | leaf packet-source { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "Source address."; | description | |||
"Source address."; | ||||
} | } | |||
leaf packet-type { | leaf packet-type { | |||
type packet-type; | type packet-type; | |||
description "OSPF packet type."; | description | |||
"OSPF packet type."; | ||||
} | } | |||
description | description | |||
"This notification is sent when an OSPF packet that | "This notification is sent when an OSPF packet that | |||
cannot be parsed is received on an OSPF interface."; | cannot be parsed is received on an OSPF interface."; | |||
} | } | |||
notification lsdb-approaching-overflow { | notification lsdb-approaching-overflow { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
leaf ext-lsdb-limit { | leaf ext-lsdb-limit { | |||
type uint32; | type uint32; | |||
description | description | |||
"The maximum number of non-default AS-external LSAs | "The maximum number of non-default AS-external LSA | |||
entries that can be stored in the Link State Database."; | entries that can be stored in the LSDB."; | |||
} | } | |||
description | description | |||
"This notification is sent when the number of LSAs | "This notification is sent when the number of LSAs | |||
in the router's Link State Database has exceeded | in the router's LSDB has exceeded ninety percent of the | |||
ninety percent of the AS-external limit (ext-lsdb-limit)."; | AS-external limit ('ext-lsdb-limit')."; | |||
} | } | |||
notification lsdb-overflow { | notification lsdb-overflow { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
leaf ext-lsdb-limit { | leaf ext-lsdb-limit { | |||
type uint32; | type uint32; | |||
description | description | |||
"The maximum number of non-default AS-external LSAs | "The maximum number of non-default AS-external LSA | |||
entries that can be stored in the Link State Database."; | entries that can be stored in the LSDB."; | |||
} | } | |||
description | description | |||
"This notification is sent when the number of LSAs | "This notification is sent when the number of LSAs | |||
in the router's Link State Database has exceeded the | in the router's LSDB has exceeded the AS-external limit | |||
AS-external limit (ext-lsdb-limit)."; | ('ext-lsdb-limit')."; | |||
} | } | |||
notification nssa-translator-status-change { | notification nssa-translator-status-change { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
leaf area-id { | leaf area-id { | |||
type area-id-type; | type area-id-type; | |||
description "Area ID."; | description | |||
"Area ID."; | ||||
} | } | |||
leaf status { | leaf status { | |||
type nssa-translator-state-type; | type nssa-translator-state-type; | |||
description | description | |||
"NSSA translator status."; | "NSSA translator status."; | |||
} | } | |||
description | description | |||
"This notification is sent when there is a change | "This notification is sent when there is a change | |||
skipping to change at line 5944 ¶ | skipping to change at line 6284 ¶ | |||
type restart-exit-reason-type; | type restart-exit-reason-type; | |||
description | description | |||
"Restart exit reason."; | "Restart exit reason."; | |||
} | } | |||
description | description | |||
"This notification is sent when the graceful restart | "This notification is sent when the graceful restart | |||
state for the router has changed."; | state for the router has changed."; | |||
} | } | |||
} | } | |||
<CODE ENDS> | ]]></sourcecode> | |||
]]></artwork> | ||||
</figure> | ||||
</t> | ||||
</section> | ||||
<!-- Possibly a 'Contributors' section ... --> | <!-- [rfced] Section 3: Please review the following, and let us | |||
know how/if we should update the text. | ||||
<section anchor="Security" title="Security Considerations"> | a) This text was difficult to follow. We updated as noted below. | |||
Please let us know if this is incorrect. | ||||
<t>The YANG modules specified in this document define a schema for | Original: | |||
data that is designed to be accessed via network | leaf raw-data { | |||
management protocols such as NETCONF <xref target="RFC6241"/> or | type yang:hex-string; | |||
RESTCONF <xref target="RFC8040"/>. The lowest NETCONF layer is the secure | description | |||
transport | "The complete LSA in network byte | |||
layer, and the mandatory-to-implement secure transport is Secure Shell (S | order hexadecimal as received or originated."; | |||
SH) | ||||
<xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the | ||||
mandatory-to-implement secure transport is TLS <xref target="RFC8446"/>.< | ||||
/t> | ||||
<t>The NETCONF Access Control Model (NACM) <xref target="RFC8341"/> provides | Currently: | |||
the | leaf raw-data { | |||
means to restrict access for particular NETCONF or RESTCONF users to a | type yang:hex-string; | |||
pre-configured subset of all available NETCONF or RESTCONF protocol | description | |||
operations and content.</t> | "The hexadecimal representation of the complete LSA as | |||
received or originated, in network byte order."; | ||||
<t>There are a number of data nodes defined in ietf-ospf.yang module that are | b) This list of authors does not match the current list of | |||
writable/creatable/deletable (i.e., config true, which is the default). | authors for this document; Jeffrey Zhang is not included, and | |||
These data nodes may be considered sensitive or vulnerable in some network | Salih K A is not otherwise listed as an author of this document. | |||
environments. Write operations (e.g., edit-config) to these data nodes wit | Please confirm that this list is as intended. | |||
hout | ||||
proper protection can have a negative effect on network operations. | Original: | |||
Writable data node represent configuration of each instance, area, virtual | Editor: Derek Yeung | |||
link, | <mailto:derek@arrcus.com> | |||
sham-link, and interface. These correspond to the following schema nodes: | Author: Acee Lindem | |||
<list style="empty"> | <mailto:acee@cisco.com> | |||
<t>/ospf</t> | Author: Yingzhen Qu | |||
<t>/ospf/areas/</t> | <mailto:yingzhen.qu@futurewei.com> | |||
<t>/ospf/areas/area[area-id]</t> | Author: Salih K A | |||
<t>/ospf/virtual-links/</t> | <mailto:salih@juniper.net> | |||
<t>/ospf/virtual-links/virtual-link[transit-area-id router-id]</t> | Author: Ing-Wher Chen | |||
<t>/ospf/areas/area[area-id]/interfaces</t> | <mailto:ingwherchen@mitre.org>"; | |||
<t>/ospf/areas/area[area-id]/interfaces/interface[name]</t> | ||||
<t>/ospf/area/area[area-id]/sham-links</t> | c) Because "NSSA" stands for "Not-So-Stubby Area", we changed the | |||
<t>/ospf/area/area[area-id]/sham-links/sham-link[local-id remote-id]</t> | instances of "NSSA area" to "NSSA". Please review the updates | |||
</list></t> | carefully, and let us know if any of the instances of "stub area" | |||
<t>For OSPF, | should be "stub". | |||
the ability to modify OSPF configuration will allow the entire OSPF domain | ||||
to be compromised including peering with unauthorized routers to | d) This description clause does not parse. Please clarify the | |||
text. | ||||
Original: | ||||
identity a-flag { | ||||
base ospfv2-extended-prefix-flag; | ||||
description | ||||
"Attach flag, when set it indicates that the prefix | ||||
corresponds and a route what is directly connected to | ||||
the advertising router.."; | ||||
e) Some words are missing here after "the external." Please clarify. | ||||
Original: | ||||
container topologies { | ||||
description "All topologies for the external."; | ||||
f) There was a title-mismatch issue here. We updated to use the | ||||
title of RFC 5709, as the topic is OSPFv2 and there is no document | ||||
with the title "Supporting Authentication Trailer for OSPFv2". | ||||
Please let us know any concerns. | ||||
Original: | ||||
feature ospfv2-authentication-trailer { | ||||
description | ||||
"Support OSPFv2 authentication trailer for OSPFv2 | ||||
authentication."; | ||||
reference "RFC 5709: Supporting Authentication | ||||
Trailer for OSPFv2 | ||||
Currently: | ||||
feature ospfv2-authentication-trailer { | ||||
description | ||||
"Support for the OSPFv2 Authentication Trailer for OSPFv2 | ||||
authentication."; | ||||
reference | ||||
"RFC 5709: OSPFv2 HMAC-SHA Cryptographic Authentication --> | ||||
<!-- [rfced] Section 3: Please review the following, and let us | ||||
know how/if we should update the text. | ||||
a) To avoid possible confusion with OSPFv3, we clarified this | ||||
description clause as noted below. Please let us know if this is | ||||
incorrect (i.e., should text be added to indicate that this | ||||
information applies to OSPFv3 as well?). | ||||
Original: | ||||
feature mtu-ignore { | ||||
description | ||||
"Disable OSPF Database Description packet MTU | ||||
mismatch checking specified in the OSPF | ||||
protocol specification."; | ||||
reference "RFC 2328: OSPF Version 2, section 10.6"; | ||||
Currently: | ||||
feature mtu-ignore { | ||||
description | ||||
"Disable OSPF Database Description packet MTU | ||||
mismatch checking as specified in the OSPFv2 | ||||
protocol specification (RFC 2328)."; | ||||
reference | ||||
"RFC 2328: OSPF Version 2, Section 10.6"; | ||||
b) Will the values in this description clause be clear to readers, | ||||
or is more information needed? | ||||
We searched for information on (OSPFv3) "Router Information LSA" in | ||||
RFCs and only found the following, in RFC 7770: "For OSPFv3, the S1 | ||||
and S2 bits in the LSA type determine the flooding scope." | ||||
The only RFC that lists "800C" is RFC 4171, which does not appear to | ||||
be related to this document. We could not find any RFCs that list | ||||
"800c", or the uppercase or lowercase forms of "A00C" or "C00C" (with | ||||
or without the "0x"), as discrete values. | ||||
<https://www.wireshark.org/lists/wireshark-bugs/201611/msg00214.html> | ||||
mentions the values in question (in lowercase) but seems to indicate | ||||
limited support. | ||||
Please advise. | ||||
Original: | ||||
identity ospfv3-router-information-lsa { | ||||
base ospfv3-lsa-type; | ||||
description | ||||
"OSPFv3 Router Information LSA - Types 0x800C, | ||||
0xA00C, and 0xC00C"; | ||||
c) This sentence does not parse. Please clarify the text. | ||||
Original (we changed "wnly" to "when" for now; should it be "only"?): | ||||
identity v2-p-bit { | ||||
base ospfv2-lsa-option; | ||||
description | ||||
"P bit, wnly used in type-7 LSA. When set, an NSSA | ||||
border router should translate the type-7 LSA | ||||
to a type-5 LSA."; | ||||
d) Should the instances of "Referenced Link State type" be | ||||
"Referenced LS Type" per RFC 5340? We could not find | ||||
"Referenced Link State type" or "Referenced Link State Type" in | ||||
any published RFC. | ||||
e) Please clarify the meaning of "successfully decoded other than". | ||||
Does it mean "successfully decoded, except for"? | ||||
Original: | ||||
description | ||||
"The OSPF LSA body was successfully decoded other than | ||||
unknown TLVs. Unknown LSAs types and OSPFv2 unknown | ||||
opaque LSA types are not decoded. Additionally, | ||||
malformed LSAs are generally not accepted and will | ||||
not be in the Link State Database."; | ||||
f) As it appears that "common for" means "common to" (as in "having | ||||
both in common"), we updated this description clause accordingly. | ||||
Please let us know if this is incorrect. | ||||
Original: | ||||
description | ||||
"Router LSA Bits - Currently common for OSPFv2 and | ||||
OSPFv3 but it may diverge with future augmentations."; | ||||
Currently: | ||||
description | ||||
"Router LSA bits. Currently common to both OSPFv2 and | ||||
OSPFv3 but may diverge with future augmentations."; --> | ||||
<!-- [rfced] Section 3: Please review the following, and let us | ||||
know how/if we should update the text. | ||||
a) Should the instances of "module 2**32 sum" be "modulo 2**32 sum"? | ||||
We ask because we see instances of (for example) "modulo 2^32" | ||||
in RFCs but could not find any instances of "module" followed by an | ||||
exponential value. | ||||
Original: | ||||
description | ||||
"The module 2**32 sum of the LSA checksums | ||||
for AS-scope LSAs. ... | ||||
b) Along the lines of an author reply for RFC-to-be 9130 | ||||
(draft-ietf-isis-yang-isis-cfg-42) regarding this description clause, | ||||
we updated as follows, to clarify the meaning of "to consider an IGP | ||||
stability period". Please let us know any objections. | ||||
Original: | ||||
leaf hold-down { | ||||
type uint32; | ||||
units milliseconds; | ||||
description | ||||
"Timer used to consider an IGP stability period | ||||
(milliseconds)."; | ||||
Currently: | ||||
leaf hold-down { | ||||
type uint32; | ||||
units milliseconds; | ||||
description | ||||
"This timer value defines the period without any changes | ||||
for the IGP to be considered stable (milliseconds)." | ||||
c) We updated the state names in the description clauses under | ||||
"typedef if-state-type" and "typedef nbr-state-type" per RFC 2328. | ||||
Please review, and let us know if anything is incorrect. | ||||
d) Please confirm that "1..4294967" and "1..4294967294" are correct. | ||||
We ask because we only see "4294967" in RFC 6295, and we only see | ||||
"4294967294" used in a few RFCs. | ||||
Original: | ||||
leaf reference-bandwidth { | ||||
when "../enable = 'true'" { | ||||
description "Only when auto cost is enabled"; | ||||
} | ||||
type uint32 { | ||||
range "1..4294967"; | ||||
... | ||||
leaf max-lsa { | ||||
if-feature max-lsa; | ||||
type uint32 { | ||||
range "1..4294967294"; | ||||
e) Per (mostly) usage in the RFCs cited in the YANG module, we | ||||
hyphenated most of the bit names. Please let us know any objections. | ||||
Examples: | ||||
MT-bit, DC-bit, P-bit (per RFC 4915) | ||||
O-bit (per RFC 5250) | ||||
AF-bit, V6-bit (per RFC 5838) | ||||
Nt-bit (per RFC 5340)* | ||||
* Please let us know if we should remove the hyphen per RFC 3101. | ||||
DN-bit (per RFC 5340) but DN bit (per RFC 4576) | ||||
f) For ease of the reader, may we update these description clauses as | ||||
follows? | ||||
Original: | ||||
typedef nssa-translator-state-type { | ||||
type enumeration { | ||||
enum enabled { | ||||
value "1"; | ||||
description | ||||
"NSSA translator enabled state."; | ||||
} | ||||
enum elected { | ||||
value "2"; | ||||
description | ||||
"NSSA translator elected state."; | ||||
} | ||||
enum disabled { | ||||
value "3"; | ||||
description | ||||
"NSSA translator disabled state."; | ||||
} | ||||
} | ||||
description | ||||
"OSPF NSSA translator state type."; | ||||
} | ||||
Suggested: | ||||
typedef nssa-translator-state-type { | ||||
type enumeration { | ||||
enum enabled { | ||||
value "1"; | ||||
description | ||||
"NSSATranslatorState is 'enabled'."; | ||||
} | ||||
enum elected { | ||||
value "2"; | ||||
description | ||||
"NSSATranslatorState is 'elected'."; | ||||
} | ||||
enum disabled { | ||||
value "3"; | ||||
description | ||||
"NSSATranslatorState is 'disabled'."; | ||||
} | ||||
} | ||||
description | ||||
"OSPF NSSA translator state type."; | ||||
reference | ||||
"RFC 3101: The OSPF Not-So-Stubby Area (NSSA) Option"; | ||||
} --> | ||||
<!-- [rfced] *[AD]: Section 3: draft-ietf-ospf-yang-28 was the | ||||
version approved by the IESG in August 2019. A version -29 was | ||||
uploaded in October 2019. Please see | ||||
<https://www.ietf.org/rfcdiff?url1=draft-ietf-ospf-yang-28&url2=draft-ietf-ospf- | ||||
yang-29>, | ||||
and let us know if you approve the change from range "1..32"; to | ||||
range "1..65535"; for container spf-control and the four changes | ||||
from 'ospf-protocol' to 'ospf'. --> | ||||
<!--[rfced] Section 3: In the descriptions for enum ti-lfa and enum mrt, | ||||
"TI-LFA" and "MRT" are not written out. Would you like to expand | ||||
them somewhere for the reader, or leave them as they are? | ||||
Current: | ||||
"TI-LFA-based alternate."; | ||||
[...] | ||||
"MRT-based alternate."; | ||||
Perhaps: | ||||
"An alternate based on Topology-Independent Loop-Free | ||||
Alternate (TI-LFA)."; | ||||
[...] | ||||
"An alternate based on Maximally Redundant Trees (MRTs)."; | ||||
--> | ||||
<!--[rfced] Section 3: Should these descriptions be updated to match | ||||
the TLV names an registered by IANA (on | ||||
https://www.iana.org/assignments/ospf-parameters/ospf-parameters.xhtml#ri-tlv)? | ||||
In other words, changing to "Node Admin Tag TLV" and "Node MSD TLV". For | ||||
the last three, should they be singular or plural? | ||||
Original: | ||||
container node-tag-tlvs { | ||||
description | ||||
"All node tag TLVs."; | ||||
list node-tag-tlv { | ||||
description | ||||
"Node tag TLV."; | ||||
uses node-tag-tlv; | ||||
} | ||||
} | ||||
container dynamic-hostname-tlv { | ||||
description "OSPF Dynamic Hostname"; | ||||
uses dynamic-hostname-tlv; | ||||
} | ||||
container sbfd-discriminator-tlv { | ||||
description "OSPF S-BFD Discriminators"; | ||||
uses sbfd-discriminator-tlv; | ||||
} | ||||
container maximum-sid-depth-tlv { | ||||
description "OSPF Maximum SID Depth (MSD) values"; | ||||
uses maximum-sid-depth-tlv; | ||||
} | ||||
Perhaps (assuming plural for the last three): | ||||
container node-tag-tlvs { | ||||
description | ||||
"All Node Admin Tag TLVs."; | ||||
list node-tag-tlv { | ||||
description | ||||
"Node Admin Tag TLV."; | ||||
uses node-tag-tlv; | ||||
} | ||||
} | ||||
container dynamic-hostname-tlv { | ||||
description "OSPF Dynamic Hostname TLVs"; | ||||
uses dynamic-hostname-tlv; | ||||
} | ||||
container sbfd-discriminator-tlv { | ||||
description "OSPF S-BFD Discriminator TLVs"; | ||||
uses sbfd-discriminator-tlv; | ||||
} | ||||
container maximum-sid-depth-tlv { | ||||
description "OSPF Node MSD TLVs"; | ||||
uses maximum-sid-depth-tlv; | ||||
} | ||||
--> | ||||
</section> | ||||
<section anchor="Security" numbered="true" toc="default"> | ||||
<name>Security Considerations</name> | ||||
<!-- Begin YANG security DNE text Para. 1 (fixed per boilerplate) --> | ||||
<t>The YANG module specified in this document defines a schema for data | ||||
that is designed to be accessed via network management protocols such | ||||
as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. | ||||
The lowest NETCONF layer is the secure transport layer, and the | ||||
mandatory-to-implement secure transport is Secure Shell (SSH) | ||||
<xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the | ||||
mandatory-to-implement secure transport is TLS <xref target="RFC8446"/>.</t> | ||||
<!-- End YANG security DNE text Para. 1 --> | ||||
<!-- Begin YANG security DNE text Para. 2 (fixed per boilerplate) --> | ||||
<t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/ | ||||
> | ||||
provides the means to restrict access for particular NETCONF or RESTCONF users | ||||
to a preconfigured subset of all available NETCONF or RESTCONF protocol | ||||
operations and content.</t> | ||||
<!-- End YANG security DNE text Para. 2 --> | ||||
<!-- Begin YANG security DNE text Para. 3 (fixed per boilerplate) --> | ||||
<t>There are a number of data nodes defined in this YANG module that are | ||||
writable/creatable/deletable (i.e., config true, which is the default). These | ||||
data nodes may be considered sensitive or vulnerable in some network | ||||
environments. Write operations (e.g., edit-config) to these data nodes without | ||||
proper protection can have a negative effect on network operations. These are | ||||
the subtrees and data nodes and their sensitivity/vulnerability:</t> | ||||
<!-- End YANG security DNE text Para. 3 --> | ||||
<ul empty="true" spacing="normal"> | ||||
<li>/ospf</li> | ||||
<li>/ospf/areas/</li> | ||||
<li>/ospf/areas/area[area-id]</li> | ||||
<li>/ospf/virtual-links/</li> | ||||
<li>/ospf/virtual-links/virtual-link[transit-area-id router-id]</li> | ||||
<li>/ospf/areas/area[area-id]/interfaces</li> | ||||
<li>/ospf/areas/area[area-id]/interfaces/interface[name]</li> | ||||
<li>/ospf/area/area[area-id]/sham-links</li> | ||||
<li>/ospf/area/area[area-id]/sham-links/sham-link[local-id remote-id]</l | ||||
i> | ||||
</ul> | ||||
<t>Writable data nodes represent the configuration of each instance, area, | ||||
virtual link, sham link, and interface, and they correspond to the schema nodes | ||||
listed above.</t> | ||||
<t>For OSPF, the ability to modify OSPF configuration will allow the entir | ||||
e OSPF domain | ||||
to be compromised, including peering with unauthorized routers to | ||||
misroute traffic or mount a massive Denial-of-Service (DoS) attack. For ex ample, | misroute traffic or mount a massive Denial-of-Service (DoS) attack. For ex ample, | |||
adding OSPF on any unprotected interface could allow an OSPF adjacency to be | adding OSPF on any unprotected interface could allow an OSPF adjacency to be | |||
formed with an unauthorized and malicious neighbor. Once an adjacency is f ormed, | formed with an unauthorized and malicious neighbor. Once an adjacency is f ormed, | |||
traffic could be hijacked. As a simpler example, a Denial-of-Service attac k could | traffic could be hijacked. As a simpler example, a DoS attack could | |||
be mounted by changing the cost of an OSPF interface to be asymmetric such that a | be mounted by changing the cost of an OSPF interface to be asymmetric such that a | |||
hard routing loop ensues. In general, unauthorized modification of most OS PF features | hard routing loop ensues. In general, unauthorized modification of most OS PF features | |||
will pose there own set of security risks and the "Security Consideration s" in the | will pose their own set of security risks. The Security Considerations s ections in the | |||
respective reference RFCs should be consulted.</t> | respective reference RFCs should be consulted.</t> | |||
<t>Some of the readable data nodes in the ietf-ospf.yang module may be consid | <!-- Begin YANG security DNE text Para. 4 (fixed per boilerplate) --> | |||
ered | <t>Some of the readable data nodes in this YANG module may be considered | |||
sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus important to | |||
important to control read access (e.g., via get, get-config, or notificati | control read access (e.g., via get, get-config, or notification) to these data | |||
on) | nodes. These are the subtrees and data nodes and their | |||
to these data nodes. The exposure of the Link State Database (LSDB) will | sensitivity/vulnerability:</t> | |||
expose the detailed topology of the network. There is a separate Link Stat | <!-- End YANG security DNE text Para. 4 --> | |||
e | ||||
Database for each instance, area, virtual link, sham-link, and interface. | <ul empty="true" spacing="normal"> | |||
These | <li>/ospf/database</li> | |||
correspond to the following schema nodes: | <li>/ospf/areas/area[area-id]/database</li> | |||
<list style="empty"> | <li>/ospf/virtual-links/virtual-link[transit-area-id router-id]/database | |||
<t>/ospf/database</t> | </li> | |||
<t>/ospf/areas/area[area-id]/database</t> | <li>/ospf/areas/area[area-id]/interfaces/interface[name]/database</li> | |||
<t>/ospf/virtual-links/virtual-link[transit-area-id router-id]/database</ | <li>/ospf/area/area[area-id]/sham-links/sham-link[local-id remote-id]/da | |||
t> | tabase</li> | |||
<t>/ospf/areas/area[area-id]/interfaces/interface[name]/database</t> | </ul> | |||
<t>/ospf/area/area[area-id]/sham-links/sham-link[local-id remote-id]/data | <t>Exposure of the Link State Database (LSDB) will in turn | |||
base</t> | expose the detailed topology of the network. There is a separate LSDB for | |||
</list></t> | each instance, area, virtual link, sham link, and interface. These | |||
<t>Exposure of the Link State Database includes information beyond the scope | correspond to the schema nodes listed above.</t> | |||
of the | <t>Exposure of the LSDB includes information beyond the scope of the | |||
OSPF router and this may be undesirable since exposure may facilitate othe | OSPF router. This may be undesirable, since exposure may facilitate other | |||
r attacks. | attacks. | |||
Additionally, in the case of an area LSDB, the complete IP network topolog y and, | Additionally, in the case of an area LSDB, the complete IP network topolog y and, | |||
if deployed, the traffic engineering topology of the OSPF area can be | if deployed, the TE topology of the OSPF area can be | |||
reconstucted. Network operators may consider their topologies to be sensit | reconstructed. Network operators may consider their topologies to be sensi | |||
ive | tive | |||
confidential data.</t> | confidential data.</t> | |||
<t>For OSPF authentication, configuration is supported via the specificati | ||||
on | ||||
of key chains <xref target="RFC8177" format="default"/> or the direct spe | ||||
cification of a | ||||
key and an authentication algorithm. Hence, authentication configuration | ||||
using the "key-chain" case in the "authentication-type" container | ||||
<xref target="RFC9130"/> inherits the security considerations of <xref ta | ||||
rget="RFC8177" format="default"/>. | ||||
<t>For OSPF authentication, configuration is supported via the specification | <!-- [rfced] Section 4: RFC 8177 does not mention | |||
of key-chains <xref target="RFC8177"/> or the direct specification of | "auth-table-trailer" or anything similar, nor does any other | |||
key and authentication algorithm. Hence, authentication configuration | published RFC, as far as we can determine. This question also | |||
using the "auth-table-trailer" case in the "authentication" container | came up for RFC-to-be 9130 (draft-ietf-isis-yang-isis-cfg). Per | |||
inherits the security considerations of <xref target="RFC8177"/>. This | an author's reply regarding that document, we updated this document | |||
includes the considerations with respect to the local storage and | accordingly. | |||
Also, because the only documents that mention a YANG item called | ||||
"authentication-type" are RFC 7317, RFC 8916, and | ||||
draft-ietf-isis-yang-isis-cfg, we have cited | ||||
draft-ietf-isis-yang-isis-cfg here and added it to the list of | ||||
Informative References. Please review carefully, and let us know if | ||||
any corrections are needed. | ||||
Original: | ||||
Hence, authentication | ||||
configuration using the "auth-table-trailer" case in the | ||||
"authentication" container inherits the security considerations of | ||||
[RFC8177]. | ||||
Currently (we have asked the authors if we can change "for IS-IS | ||||
Protocol" to "for the IS-IS Protocol"): | ||||
Hence, authentication | ||||
configuration using the "key-chain" case in the "authentication-type" | ||||
container [RFC9130] inherits the security considerations of | ||||
[RFC8177]. | ||||
... | ||||
[RFC9130] Litkowski, S., Yeung, D., Lindem, A., Zhang, J., and L. | ||||
Lhotka, "YANG Data Model for IS-IS Protocol", RFC 9130, | ||||
DOI 10.17487/RFC9130, September 2021, | ||||
<https://www.rfc-editor.org/info/rfc9130>. --> | ||||
This | ||||
includes considerations with respect to the local storage and | ||||
handling of authentication keys.</t> | handling of authentication keys.</t> | |||
<t>Additionally, local specification of OSPF authentication keys and | <t>Additionally, local specification of OSPF authentication keys and | |||
the associated authentication algorithm is supported for legacy | the associated authentication algorithm is supported for legacy | |||
implementations that do not support key-chains <xref target="RFC8177"/> | implementations that do not support key chains <xref target="RFC8177" for | |||
It is RECOMMENDED that implementations migrate to key-chains due | mat="default"/>. | |||
the seamless support of key and algorithm rollover, as well as, the | It is <bcp14>RECOMMENDED</bcp14> that implementations migrate to key | |||
hexadecimal key specification affording more key entropy, and | chains because of (1) seamless support of key and algorithm rollover | |||
encryption of keys using the Advanced Encryption Standard (AES) Key Wrap | , (2) specification of a hexadecimal key, which affords more key entropy, a | |||
Padding Algorithm <xref target="RFC5649"/>.</t> | nd (3) encryption of keys using the Advanced Encryption Standard (AES) Key | |||
Wrap | ||||
with Padding algorithm <xref target="RFC5649" format="default"/>. | ||||
<t>Some of the RPC operations in this YANG module may be considered sensitive | <!-- [rfced] Section 4: This sentence was difficult to follow. | |||
or | We updated it as shown below. Please let us know if this is | |||
vulnerable in some network environments. It is thus important to control | incorrect. | |||
access to these operations. The OSPF YANG module supports the "clear-neigh | ||||
bor" | Original: | |||
and "clear-database" RPCs. If access to either of these is compromised, th | It is | |||
ey | RECOMMENDED that implementations migrate to key-chains due the | |||
can result in temporary network outages be employed to mount DoS attacks.< | seamless support of key and algorithm rollover, as well as, the | |||
/t> | hexadecimal key specification affording more key entropy, and | |||
<t>The actual authentication key data (whether locally specified or part of a | encryption of keys using the Advanced Encryption Standard (AES) Key | |||
key-chain) is sensitive and needs to be kept secret from unauthorized | Wrap Padding Algorithm [RFC5649]. | |||
Currently: | ||||
It is | ||||
RECOMMENDED that implementations migrate to key chains because of | ||||
(1) seamless support of key and algorithm rollover, (2) specification | ||||
of a hexadecimal key, which affords more key entropy, and | ||||
(3) encryption of keys using the Advanced Encryption Standard (AES) | ||||
Key Wrap with Padding algorithm [RFC5649]. --> | ||||
</t> | ||||
<!-- Begin YANG security DNE text Para. 5 (fixed per boilerplate) --> | ||||
<t>Some of the RPC operations in this YANG module may be considered sensitive or | ||||
vulnerable in some network environments. It is thus important to control | ||||
access to these operations. These are the operations and their | ||||
sensitivity/vulnerability:</t> | ||||
<!-- End YANG security DNE text Para. 5 --> | ||||
<ul spacing="normal"> | ||||
<li>The OSPF YANG module supports the "clear-neighbor" | ||||
and "clear-database" RPCs. If access to either of these RPCs is compromise | ||||
d, temporary network outages can be employed to mount DoS attacks as a result.</ | ||||
li> | ||||
</ul> | ||||
<!-- [rfced] *[AD]: Security Considerations: We have updated | ||||
several paragraphs in this section per | ||||
<https://trac.ietf.org/trac/ops/wiki/yang-security-guidelines>. | ||||
Additionally, we moved two lists in order to accommodate the | ||||
boilerplate text while still preserving text that is specific to | ||||
this document. | ||||
Please review our updates carefully, and let us know if further | ||||
updates are needed (e.g., regarding the placement of text). --> | ||||
<t>The actual authentication key data (whether locally specified or part o | ||||
f a | ||||
key chain) is sensitive and needs to be kept secret from unauthorized | ||||
parties; compromise of the key data would allow an attacker to forge OSPF | parties; compromise of the key data would allow an attacker to forge OSPF | |||
traffic that would be accepted as authentic, potentially compromising the | traffic that would be accepted as authentic, potentially compromising the | |||
entirety OSPF domain.</t> | entire OSPF domain.</t> | |||
</section> | ||||
<section title="IANA Considerations"> | ||||
<t>This document registers a URI in the IETF XML registry | ||||
<xref target="RFC3688"/>. Following the format in <xref target="RFC3688"/> | ||||
, | ||||
the following registration is requested to be made: | ||||
<figure> | ||||
<artwork> | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-ospf | ||||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
</artwork> | ||||
</figure></t> | ||||
<t>This document registers a YANG module in the YANG Module Names | ||||
registry <xref target="RFC6020"/>. | ||||
<figure> | ||||
<artwork> | ||||
name: ietf-ospf | ||||
namespace: urn:ietf:params:xml:ns:yang:ietf-ospf | ||||
prefix: ospf | ||||
reference: RFC XXXX | ||||
</artwork> | ||||
</figure></t> | ||||
</section> | </section> | |||
<section anchor="Acknowledgements" title="Acknowledgements"> | <section numbered="true" toc="default"> | |||
<t>The authors wish to thank Yi Yang, Alexander Clemm, | <name>IANA Considerations</name> | |||
Gaurav Gupta, Ladislav Lhotka, Stephane Litkowski, | <t>This document registers a URI in the "IETF XML Registry" | |||
Greg Hankins, Manish Gupta, Michael Darwish, and Alan Davey for their thor | <xref target="RFC3688" format="default"/>. Following the format in <xref t | |||
ough reviews | arget="RFC3688" format="default"/>, | |||
the following registration has been made: | ||||
</t> | ||||
<dl newline="false" spacing="compact"> | ||||
<dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-ospf</dd> | ||||
<dt>Registrant Contact:</dt><dd>The IESG.</dd> | ||||
<dt>XML:</dt><dd>N/A; the requested URI is an XML namespace.</dd> | ||||
</dl> | ||||
<t>This document registers a YANG module in the "YANG Module Names" | ||||
registry <xref target="RFC6020" format="default"/>. | ||||
</t> | ||||
<dl newline="false" spacing="compact"> | ||||
<dt>Name:</dt><dd>ietf-ospf</dd> | ||||
<dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-ospf</dd> | ||||
<dt>Prefix:</dt><dd>ospf</dd> | ||||
<dt>Reference:</dt><dd>RFC 9129</dd> | ||||
</dl> | ||||
</section> | ||||
</middle> | ||||
<back> | ||||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC | ||||
.1765.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.1793.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.2119.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.2328.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3101.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3630.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3623.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3688.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4552.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4576.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4577.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4915.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4973.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5082.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5185.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5187.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5250.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5286.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5309.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5329.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5340.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5613.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5642.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5709.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5714.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5838.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6020.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6241.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6242.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6565.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6845.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6860.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6987.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6991.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7166.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7474.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7490.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7684.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7770.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7777.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7884.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7950.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8040.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8174.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8177.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8294.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8340.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8341.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8342.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8343.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8349.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8405.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8446.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8476.xml"/> | ||||
<!-- draft-ietf-bfd-yang (RFC 9127) --> | ||||
<reference anchor='RFC9127' target="https://www.rfc-editor.org/info/rfc9127"> | ||||
<front> | ||||
<title>YANG Data Model for Bidirectional Forwarding Detection (BFD)</title> | ||||
<author initials='R' surname='Rahman' fullname='Reshad Rahman' role="editor"> | ||||
<organization /> | ||||
</author> | ||||
<author initials='L' surname='Zheng' fullname='Lianshu Zheng' role="editor"> | ||||
<organization /> | ||||
</author> | ||||
<author initials='M' surname='Jethanandani' fullname='Mahesh Jethanandani' role= | ||||
"editor"> | ||||
<organization /> | ||||
</author> | ||||
<author initials='S' surname='Pallagatti' fullname='Santosh Pallagatti'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='G' surname='Mirsky' fullname='Greg Mirsky'> | ||||
<organization /> | ||||
</author> | ||||
<date month='September' year='2021' /> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9127"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9127"/> | ||||
</reference> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.0905.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4750.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5443.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5643.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5649.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5880.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5881.xml"/> | ||||
<!-- draft-ietf-isis-yang-isis-cfg (RFC 9130) --> | ||||
<!-- Note (please save this for Lynne): If authors approve the title | ||||
change, change "for IS-IS Protocol" to "for the IS-IS Protocol" --> | ||||
<reference anchor='RFC9130' target="https://www.rfc-editor.org/info/rfc9130"> | ||||
<front> | ||||
<title>YANG Data Model for IS-IS Protocol</title> | ||||
<author initials='S' surname='Litkowski' fullname='Stephane Litkowski'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='D' surname='Yeung' fullname='Derek Yeung'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='A' surname='Lindem' fullname='Acee Lindem'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='J' surname='Zhang' fullname='Jeffrey Zhang'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='L' surname='Lhotka' fullname='Ladislav Lhotka'> | ||||
<organization /> | ||||
</author> | ||||
<date month='September' year='2021' /> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9130"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9130"/> | ||||
</reference> | ||||
</references> | ||||
</references> | ||||
<section anchor="Acknowledgments" numbered="false" toc="default"> | ||||
<name>Acknowledgments</name> | ||||
<t>The authors wish to thank <contact fullname="Yi Yang"/>, <contact fulln | ||||
ame="Alexander Clemm"/>, | ||||
<contact fullname="Gaurav Gupta"/>, <contact fullname="Ladislav Lhotka"/>, | ||||
<contact fullname="Stephane Litkowski"/>, | ||||
<contact fullname="Greg Hankins"/>, <contact fullname="Manish Gupta"/>, <c | ||||
ontact fullname="Michael Darwish"/>, and <contact fullname="Alan Davey"/> for th | ||||
eir thorough reviews | ||||
and helpful comments.</t> | and helpful comments.</t> | |||
<t>Thanks to Tom Petch for last call review and improvement of the | <t>Thanks to <contact fullname="Tom Petch"/> for Last Call review and | |||
document organization.</t> | improvements to the organization of the document.</t> | |||
<t>Thanks to Alvaro Retana for AD comments.</t> | <t>Thanks to <contact fullname="Alvaro Retana"/> for AD comments.</t> | |||
<t>Thanks to Benjamin Kaduk, Suresh Krishnan, and Roman Dannyliw for | <t>Thanks to <contact fullname="Benjamin Kaduk"/>, <contact fullname="Sure | |||
sh Krishnan"/>, and <contact fullname="Roman Danyliw"/> for | ||||
IESG review comments.</t> | IESG review comments.</t> | |||
<t>This document was produced using Marshall Rose's xml2rfc tool.</t> | ||||
<t>Author affiliation with The MITRE Corporation is provided for | <t>Author affiliation with The MITRE Corporation is provided for | |||
identification purposes only, and is not intended to convey or imply | identification purposes only and is not intended to convey or imply | |||
MITRE's concurrence with, or support for, the positions, opinions or | MITRE's concurrence with, or support for, the positions, opinions, or | |||
viewpoints expressed. MITRE has approved this document for Public | viewpoints expressed. MITRE has approved this document for Public | |||
Release, Distribution Unlimited, with Public Release Case Number | Release, Distribution Unlimited, with Public Release Case Number | |||
18-3194.</t> | 18-3194.</t> | |||
</section> | </section> | |||
</middle> | <section numbered="false" toc="default"> | |||
<name>Contributors</name> | ||||
<contact fullname="Dean Bogdanovic"> | ||||
<organization>Volta Networks, Inc.</organization> | ||||
<address> | ||||
<postal> | ||||
<street></street> | ||||
<city></city> | ||||
<region></region><code></code> | ||||
<country></country> | ||||
</postal> | ||||
<email>dean@voltanet.io</email> | ||||
</address> | ||||
</contact> | ||||
<contact fullname="Kiran Koushik Agrahara Sreenivasa"> | ||||
<organization>Verizon</organization> | ||||
<address> | ||||
<postal> | ||||
<street>500 W Dove Rd</street> | ||||
<city>Southlake</city> | ||||
<region>TX</region> | ||||
<code>76092</code> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>kk@employees.org</email> | ||||
</address> | ||||
</contact> | ||||
</section> | ||||
<!-- *****BACK MATTER ***** --> | <!-- [rfced] Please review the "Inclusive Language" portion of the | |||
online Style Guide | ||||
<https://www.rfc-editor.org/styleguide/part2/#inclusive_language> | ||||
and let us know if any changes are needed. --> | ||||
<back> | </back> | |||
<!-- References split into informative and normative --> | ||||
<!-- There are 2 ways to insert reference entries from the citation librarie | <!-- [rfced] Please let us know if any changes are needed for the | |||
s: | following: | |||
1. define an ENTITY at the top, and use "ampersand character"RFC2629; here | ||||
(as shown) | ||||
2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xm | ||||
l"?> here | ||||
(for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis. | ||||
xml") | ||||
Both are cited textually in the same manner: by using xref elements. | a) The following terms were used inconsistently in this document. | |||
If you use the PI option, xml2rfc will, by default, try to find included fi | We chose to use the latter forms. Please let us know any objections. | |||
les in the same | ||||
directory as the including file. You can also define the XML_LIBRARY enviro | ||||
nment variable | ||||
with a value containing a set of directories to search. These can be eithe | ||||
r in the local | ||||
filing system or remote ones accessed by http (http://domain/dir/... ).--> | ||||
<references title="Normative References"> | Authentication trailer / authentication trailer / | |||
<!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC. | Authentication Trailer (per RFCs 5709, 7474, and 7166) | |||
2119.xml"?--> | ||||
&RFC1765; | ||||
&RFC1793; | ||||
&RFC2119; | ||||
&RFC2328; | ||||
&RFC3101; | ||||
&RFC3630; | ||||
&RFC3623; | ||||
&RFC3688; | ||||
&RFC4552; | ||||
&RFC4576; | ||||
&RFC4577; | ||||
&RFC4915; | ||||
&RFC4973; | ||||
&RFC5082; | ||||
&RFC5185; | ||||
&RFC5187; | ||||
&RFC5250; | ||||
&RFC5286; | ||||
&RFC5309; | ||||
&RFC5329; | ||||
&RFC5340; | ||||
&RFC5613; | ||||
&RFC5642; | ||||
&RFC5709; | ||||
&RFC5714; | ||||
&RFC5838; | ||||
&RFC6020; | ||||
&RFC6241; | ||||
&RFC6242; | ||||
&RFC6565; | ||||
&RFC6845; | ||||
&RFC6860; | ||||
&RFC6987; | ||||
&RFC6991; | ||||
&RFC7166; | ||||
&RFC7474; | ||||
&RFC7490; | ||||
&RFC7684; | ||||
&RFC7770; | ||||
&RFC7777; | ||||
&RFC7884; | ||||
&RFC7950; | ||||
&RFC8040; | ||||
&RFC8174; | ||||
&RFC8177; | ||||
&RFC8294; | ||||
&RFC8340; | ||||
&RFC8341; | ||||
&RFC8342; | ||||
&RFC8343; | ||||
&RFC8349; | ||||
&RFC8405; | ||||
&RFC8446; | ||||
&RFC8476; | ||||
&I-D.ietf-bfd-yang; | ||||
</references> | ||||
<references title="Informative References"> | ||||
&RFC905; | ||||
&RFC4750; | ||||
&RFC5443; | ||||
&RFC5643; | ||||
&RFC5649; | ||||
&RFC5880; | ||||
&RFC5881; | ||||
</references> | ||||
<section title="Contributors' Addresses"> | ||||
<figure> | ||||
<artwork> | ||||
Dean Bogdanovic | opaque LSA / Opaque LSA (RFCs 3630 and 7770 use "Opaque") | |||
Volta Networks, Inc. | ||||
EMail: dean@voltanet.io | Maximum Segment Depth (MSD) / Maximum SID Depth (MSD) | |||
(RFC 8476 uses the latter.) | ||||
Kiran Koushik Agrahara Sreenivasa | b) The following terms appear to be used inconsistently in this | |||
Verizon | document. Please let us know which form is preferred. | |||
500 W Dove Rd | ||||
Southlake, TX 76092 | ||||
USA | ||||
EMail: kk@employees.org | AS-Scoped / AS-Scope / AS-scope | |||
AS-External LSA / AS-external LSA / AS External LSA* | ||||
Router-LSA / Router LSA* | ||||
LSA options flag / LSA option flag / LSA Option flag | ||||
inter-area-prefix LSA / Inter-area Prefix LSA / | ||||
Inter-Area-Prefix LSA* | ||||
Inter-area Router LSA / Inter-Area-Router LSA* | ||||
Intra-area Prefix LSA / Intra-Area-Prefix LSA* | ||||
* We see that usage in RFC 5340 is mixed, but it lists the | ||||
hyphenated and uppercase forms in Appendix A.4.2.1 when listing their values. | ||||
We also see "0x2007 NSSA-LSA" and "0x0008 Link-LSA" in RFC 5340. | ||||
Please let us know which form you prefer to use for this document. | ||||
summary LSA / Summary LSA | ||||
(usage in RFCs is mixed) | ||||
c) Quoting of module names, field names, etc.: Please note that | ||||
(1) to make usage consistent in this document and (2) per the rest of | ||||
Cluster 336, we used double quotes instead of single quotes or no | ||||
quotes. Please let us know any concerns. | ||||
Examples from original: | ||||
the ietf-routing module | ||||
The ietf-ospf model | ||||
The field 'version' | ||||
Currently: | ||||
the "ietf-routing" module | ||||
The "ietf-ospf" model | ||||
The "version" field | ||||
--> | ||||
</artwork> | ||||
</figure> | ||||
</section> | ||||
</back> | ||||
</rfc> | </rfc> | |||
End of changes. 767 change blocks. | ||||
1577 lines changed or deleted | 2561 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |