rfc9129xml2.original.xml | rfc9129.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
<!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"> | <!DOCTYPE rfc [ | |||
<!-- category values: std, bcp, info, exp, and historic | <!ENTITY nbsp " "> | |||
ipr values: full3667, noModification3667, noDerivatives3667 | <!ENTITY zwsp "​"> | |||
you can add the attributes updates="NNNN" and obsoletes="NNNN" | <!ENTITY nbhy "‑"> | |||
they will automatically be output with "(if approved)" --> | <!ENTITY wj "⁠"> | |||
]> | ||||
<!-- ***** 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> | |||
<seriesInfo name="RFC" value="9129"/> | ||||
<!-- add 'role="editor"' below for the editors if appropriate --> | ||||
<!-- Another author who claims to be an editor --> | ||||
<author fullname="Derek Yeung" initials="D" surname="Yeung"> | <author fullname="Derek Yeung" initials="D" surname="Yeung"> | |||
<organization>Arrcus</organization> | <organization>Arrcus, Inc.</organization> | |||
<address> | <address> | |||
<phone></phone> | <postal> | |||
<street>2077 Gateway Place, Suite 400</street> | ||||
<email>derek@arrcus.com</email> | <city>San Jose</city> | |||
<region>CA</region> | ||||
<!-- uri and facsimile elements may also be added --> | <code>95110</code> | |||
<country>United States of America</country> | ||||
</postal> | ||||
<email>derek@arrcus.com</email> | ||||
</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="October" year="2022"/> | |||
<!-- 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 | ||||
files in a meta tag but they have no effect on text or nroff | ||||
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>Introduction</name> | |||
definition language used to define the contents of a conceptual data store | <t>YANG <xref target="RFC7950" format="default"/> is a data | |||
that allows networked devices to be managed using NETCONF | definition language used to define the contents of a conceptual datastore | |||
<xref target="RFC6241"></xref>, RESTCONF <xref target="RFC8040"/>, and oth | that allows networked devices to be managed using the Network | |||
er | Configuration Protocol (NETCONF) | |||
Network Management protocols. Furthermore, | <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 Command-Line Interfaces (CLIs) and programmatic APIs.< | |||
/t> | ||||
<t>This document defines a YANG data model that can be used to configure | <t>This document defines a YANG data model that can be used to configure | |||
and manage OSPF and it is an augmentation to the core routing data model. | and manage OSPF. It is an augmentation to the core routing data model, | |||
It fully conforms to the Network Management Datastore Architecture (NMDA) | which is defined in <xref target="RFC8349" format="default"/> and | |||
<xref target="RFC8342"/>. | provides the basis for the development of data models for routing | |||
A core routing data model is defined in | protocols. This document fully conforms to the Network Management Datastore | |||
<xref target="RFC8349"></xref>, | Architecture (NMDA) | |||
and it provides the basis for the development of data models for routing | <xref target="RFC8342" format="default"/>. The interface data model is defin | |||
protocols. The interface data model is defined in | ed in | |||
<xref target="RFC8343"></xref> and is used for referencing | <xref target="RFC8343" format="default"/> and is used for referencing | |||
interfaces from the routing protocol. The key-chain data model used for | interfaces from the routing protocol. The data model for key chains | |||
OSPF authentication is defined in <xref target="RFC8177"></xref> | <xref target="RFC8177" format="default"/> is used for | |||
and provides both a reference to configured key-chains and an | OSPF authentication and provides both a reference to configured key chains a | |||
nd an | ||||
enumeration of cryptographic algorithms.</t> | enumeration of cryptographic algorithms.</t> | |||
<t>Both OSPFv2 <xref target="RFC2328" format="default"/> and OSPFv3 | ||||
<t>Both OSPFv2 <xref target="RFC2328"></xref> and OSPFv3 | <xref target="RFC5340" format="default"/> are supported. In addition to | |||
<xref target="RFC5340"></xref> 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 various aspe | |||
of how the protocol instance is tied to the routing domain and how multiple | cts, including in terms of how the protocol instance is tied to the routing doma | |||
protocol instances are be instantiated among others.</t> | in and how | |||
<t>The goal of this document is to define a data model that provides a commo | multiple protocol instances are instantiated.</t> | |||
n user | <t>The goal of this document is to define a data model that provides a use | |||
interface to the OSPFv2 and OSPFv3 protocols. There is very little informati | r interface that is common to both OSPFv2 and OSPFv3. There is very little infor | |||
on that is | mation 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 address-family? iana-rt-types:address-family | |||
. | . | |||
. | . | |||
+--rw areas | +--rw areas | |||
| +--rw area* [area-id] | | +--rw area* [area-id] | |||
| +--rw area-id area-id-type | | +--rw area-id area-id-type | |||
| . | | . | |||
| . | | . | |||
| +--rw virtual-links | | +--rw virtual-links | |||
| | +--rw virtual-link* [transit-area-id router-id] | | | +--rw virtual-link* [transit-area-id router-id] | |||
| | . | | | . | |||
skipping to change at line 377 ¶ | skipping to change at line 195 ¶ | |||
| | . | | | . | |||
| | . | | | . | |||
| +--rw interfaces | | +--rw interfaces | |||
| +--rw interface* [name] | | +--rw interface* [name] | |||
| . | | . | |||
| . | | . | |||
+--rw topologies {multi-topology}? | +--rw topologies {multi-topology}? | |||
+--rw topology* [name] | +--rw topology* [name] | |||
. | . | |||
. | . | |||
</artwork> | ]]></sourcecode> | |||
</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 "areas" and "area/interfaces" 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> | |||
<t>The "topologies" container defines the OSPF configuration and operati | ||||
<t>The topologies container defines the OSPF configuration and operational | onal | |||
state for OSPF topologies when the multi-topology feature is supported.</t> | state for OSPF topologies when the "multi-topology" feature is supported.</t | |||
> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="OSPFv2 and OSPFv3"> | <name>OSPFv2 and OSPFv3</name> | |||
<t>The data model defined herein supports both OSPFv2 and OSPFv3.</t> | <t>The data model defined herein supports both OSPFv2 and OSPFv3.</t> | |||
<t>The field 'version' is used to indicate the OSPF version and is | <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. | |||
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 <xref target="RFC5709" format="default"/> | |||
<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 <xref target="RFC7166" format="default"/>.</dd> | |||
<t>stub-router: Support RFC 6987 OSPF Stub Router | <dt>fast-reroute:</dt><dd>Support for IP Fast Reroute (IP-FRR) | |||
advertisement <xref target="RFC6987"/>.</t> | <xref target="RFC5714" format="default"/>.</dd> | |||
<t>pe-ce-protocol: Support OSPF as a PE-CE protocol | <dt>node-flag:</dt><dd>Support for node flags for OSPF prefixes | |||
<xref target="RFC4577"/>, <xref target="RFC6565"/>.</t> | <xref target="RFC7684" format="default"/>.</dd> | |||
<t>ietf-spf-delay: Support IETF SPF delay algorithm | <dt>node-tag:</dt><dd>Support for node administrative tags for OSPF in | |||
<xref target="RFC8405"/>.</t> | stances | |||
<t>bfd: Support BFD detection of OSPF neighbor reachability | <xref target="RFC7777" format="default"/>.</dd> | |||
<xref target="RFC5880"/>, <xref target="RFC5881"/>, | <dt>lfa:</dt><dd>Support for Loop-Free Alternates (LFAs) | |||
and <xref target="I-D.ietf-bfd-yang"/>.</t> | <xref target="RFC5286" format="default"/>.</dd> | |||
<t>hybrid-interface: Support OSPF Hybrid Broadcast and Point-to-Point | <dt>remote-lfa:</dt><dd>Support for Remote LFAs (R-LFAs) | |||
Interfaces <xref target="RFC6845"/>.</t> | <xref target="RFC7490" format="default"/>.</dd> | |||
</list></t> | <dt>stub-router:</dt><dd>Support for OSPF stub router | |||
<t>It is expected that vendors will support additional | advertisements <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"/>.</dd> | ||||
<dt>hybrid-interface:</dt><dd>Support for OSPF hybrid broadcast and po | ||||
int-to-multipoint | ||||
interfaces <xref target="RFC6845" format="default"/>.</dd> | ||||
</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-Scope Link State Database (LSDB), the local RIB, the SPF log, and the | |||
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 address-family? iana-rt-types:address-family | |||
+--rw enable? boolean | +--rw enabled? boolean | |||
+--rw explicit-router-id? rt-types:router-id | +--rw explicit-router-id? rt-types:router-id | |||
| {explicit-router-id}? | | {explicit-router-id}? | |||
+--rw preference | +--rw preference | |||
| +--rw (scope)? | | +--rw (scope)? | |||
| +--:(single-value) | | +--:(single-value) | |||
| | +--rw all? uint8 | | | +--rw all? uint8 | |||
| +--:(multi-values) | | +--:(multi-values) | |||
| +--rw (granularity)? | | +--rw (granularity)? | |||
| | +--:(detail) | | | +--:(detail) | |||
| | | +--rw intra-area? uint8 | | | | +--rw intra-area? uint8 | |||
| | | +--rw inter-area? uint8 | | | | +--rw inter-area? uint8 | |||
| | +--:(coarse) | | | +--:(coarse) | |||
| | +--rw internal? uint8 | | | +--rw internal? uint8 | |||
| +--rw external? uint8 | | +--rw external? uint8 | |||
+--rw nsr {nsr}? | +--rw nsr {nsr}? | |||
| +--rw enable? boolean | | +--rw enabled? boolean | |||
+--rw graceful-restart {graceful-restart}? | +--rw graceful-restart {graceful-restart}? | |||
| +--rw enable? boolean | | +--rw enabled? boolean | |||
| +--rw helper-enable? boolean | | +--rw helper-enabled? boolean | |||
| +--rw restart-interval? uint16 | | +--rw restart-interval? uint16 | |||
| +--rw helper-strict-lsa-checking? boolean | | +--rw helper-strict-lsa-checking? boolean | |||
+--rw auto-cost {auto-cost}? | +--rw auto-cost {auto-cost}? | |||
| +--rw enable? boolean | | +--rw enabled? boolean | |||
| +--rw reference-bandwidth? uint32 | | +--rw reference-bandwidth? uint32 | |||
+--rw spf-control | +--rw spf-control | |||
| +--rw paths? uint16 {max-ecmp}? | | +--rw paths? uint16 {max-ecmp}? | |||
| +--rw ietf-spf-delay {ietf-spf-delay}? | | +--rw ietf-spf-delay {ietf-spf-delay}? | |||
| +--rw initial-delay? uint16 | | +--rw initial-delay? uint32 | |||
| +--rw short-delay? uint16 | | +--rw short-delay? uint32 | |||
| +--rw long-delay? uint16 | | +--rw long-delay? uint32 | |||
| +--rw hold-down? uint16 | | +--rw hold-down? uint32 | |||
| +--rw time-to-learn? uint16 | | +--rw time-to-learn? uint32 | |||
| +--ro current-state? enumeration | | +--ro current-state? enumeration | |||
| +--ro remaining-time-to-learn? uint16 | | +--ro remaining-time-to-learn? | |||
| +--ro remaining-hold-down? uint16 | | rt-types:timer-value-milliseconds | |||
| +--ro remaining-hold-down? | ||||
| rt-types:timer-value-milliseconds | ||||
| +--ro last-event-received? yang:timestamp | | +--ro last-event-received? yang:timestamp | |||
| +--ro next-spf-time? yang:timestamp | | +--ro next-spf-time? yang:timestamp | |||
| +--ro last-spf-time? yang:timestamp | | +--ro last-spf-time? yang:timestamp | |||
+--rw database-control | +--rw database-control | |||
| +--rw max-lsa? uint32 {max-lsa}? | | +--rw max-lsa? uint32 {max-lsa}? | |||
+--rw stub-router {stub-router}? | +--rw stub-router {stub-router}? | |||
| +--rw (trigger)? | | +--rw (trigger)? | |||
| +--:(always) | | +--:(always) | |||
| +--rw always! | | +--rw always! | |||
+--rw mpls | +--rw mpls | |||
| +--rw te-rid {te-rid}? | | +--rw te-rid {te-rid}? | |||
| | +--rw ipv4-router-id? inet:ipv4-address | | | +--rw ipv4-router-id? inet:ipv4-address | |||
| | +--rw ipv6-router-id? inet:ipv6-address | | | +--rw ipv6-router-id? inet:ipv6-address | |||
| +--rw ldp | | +--rw ldp | |||
| +--rw igp-sync? boolean {ldp-igp-sync}? | | +--rw igp-sync? boolean {ldp-igp-sync}? | |||
+--rw fast-reroute {fast-reroute}? | +--rw fast-reroute {fast-reroute}? | |||
| +--rw lfa {lfa}? | | +--rw lfa {lfa}? | |||
+--ro protected-routes | ||||
| +--ro af-stats* [af prefix alternate] | ||||
| +--ro af iana-rt-types:address-family | ||||
| +--ro prefix string | ||||
| +--ro alternate string | ||||
| +--ro alternate-type? enumeration | ||||
| +--ro best? boolean | ||||
| +--ro non-best-reason? string | ||||
| +--ro protection-available? bits | ||||
| +--ro alternate-metric1? uint32 | ||||
| +--ro alternate-metric2? uint32 | ||||
| +--ro alternate-metric3? uint32 | ||||
+--ro unprotected-routes | ||||
| +--ro af-stats* [af prefix] | ||||
| +--ro af iana-rt-types:address-family | ||||
| +--ro prefix string | ||||
+--ro protection-statistics* [frr-protection-method] | ||||
| +--ro frr-protection-method string | ||||
| +--ro af-stats* [af] | ||||
| +--ro af iana-rt-types:address-family | ||||
| +--ro total-routes? uint32 | ||||
| +--ro unprotected-routes? uint32 | ||||
| +--ro protected-routes? uint32 | ||||
| +--ro linkprotected-routes? uint32 | ||||
| +--ro nodeprotected-routes? uint32 | ||||
+--rw node-tags {node-tag}? | +--rw node-tags {node-tag}? | |||
| +--rw node-tag* [tag] | | +--rw node-tag* [tag] | |||
| +--rw tag uint32 | | +--rw tag uint32 | |||
+--ro router-id? | +--ro router-id? rt-types:router-id | |||
+--ro local-rib | +--ro local-rib | |||
| +--ro route* [prefix] | | +--ro route* [prefix] | |||
| +--ro prefix inet:ip-prefix | | +--ro prefix inet:ip-prefix | |||
| +--ro next-hops | | +--ro next-hops | |||
| | +--ro next-hop* [next-hop] | | | +--ro next-hop* [] | |||
| | +--ro outgoing-interface? if:interface-ref | | | +--ro outgoing-interface? if:interface-ref | |||
| | +--ro next-hop inet:ip-address | | | +--ro next-hop inet:ip-address | |||
| +--ro metric? uint32 | | +--ro metric? uint32 | |||
| +--ro route-type? route-type | | +--ro route-type? route-type | |||
| +--ro route-tag? uint32 | | +--ro route-tag? uint32 | |||
+--ro statistics | +--ro statistics | |||
| +--ro discontinuity-time yang:date-and-time | | +--ro discontinuity-time yang:date-and-time | |||
| +--ro originate-new-lsa-count? yang:counter32 | | +--ro originate-new-lsa-count? yang:counter32 | |||
| +--ro rx-new-lsas-count? yang:counter32 | | +--ro rx-new-lsas-count? yang:counter32 | |||
| +--ro as-scope-lsa-count? yang:gauge32 | | +--ro as-scope-lsa-count? yang:gauge32 | |||
| +--ro as-scope-lsa-chksum-sum? uint32 | | +--ro as-scope-lsa-chksum-sum? uint32 | |||
| +--ro database | | +--ro database | |||
| +--ro as-scope-lsa-type* | | | +--ro as-scope-lsa-type* | |||
| +--ro lsa-type? uint16 | | | +--ro lsa-type? uint16 | |||
| +--ro lsa-count? yang:gauge32 | | | +--ro lsa-count? yang:gauge32 | |||
| +--ro lsa-cksum-sum? int32 | | | +--ro lsa-cksum-sum? uint32 | |||
| +--ro protected-routes {fast-reroute}? | ||||
| | +--ro address-family-stats* | ||||
| | [address-family prefix alternate] | ||||
| | +--ro address-family | ||||
| | iana-rt-types:address-family | ||||
| | +--ro prefix inet:ip-prefix | ||||
| | +--ro alternate inet:ip-address | ||||
| | +--ro alternate-type? enumeration | ||||
| | +--ro best? boolean | ||||
| | +--ro non-best-reason? string | ||||
| | +--ro protection-available? bits | ||||
| | +--ro alternate-metric-1? uint32 | ||||
| | +--ro alternate-metric-2? uint32 | ||||
| | +--ro alternate-metric-3? uint32 | ||||
| +--ro unprotected-routes {fast-reroute}? | ||||
| | +--ro address-family-stats* [address-family prefix] | ||||
| | +--ro address-family iana-rt-types:address-family | ||||
| | +--ro prefix inet:ip-prefix | ||||
| +--ro protection-statistics* [frr-protection-method] | ||||
| +--ro frr-protection-method string | ||||
| +--ro address-family-stats* [address-family] | ||||
| +--ro address-family | ||||
| iana-rt-types:address-family | ||||
| +--ro total-routes? uint32 | ||||
| +--ro unprotected-routes? uint32 | ||||
| +--ro protected-routes? uint32 | ||||
| +--ro linkprotected-routes? uint32 | ||||
| +--ro nodeprotected-routes? uint32 | ||||
+--ro database | +--ro database | |||
| +--ro as-scope-lsa-type* [lsa-type] | | +--ro as-scope-lsa-type* [lsa-type] | |||
| +--ro as-scope-lsas | | +--ro as-scope-lsas | |||
| +--ro as-scope-lsa* [lsa-id adv-router] | | +--ro as-scope-lsa* [lsa-id adv-router] | |||
| +--ro lsa-id union | | +--ro lsa-id union | |||
| +--ro adv-router inet:ipv4-address | | +--ro adv-router inet:ipv4-address | |||
| +--ro decoded-completed? boolean | | +--ro decoded-completed? boolean | |||
| +--ro raw-data? yang:hex-string | | +--ro raw-data? yang:hex-string | |||
| +--ro (version)? | | +--ro (version)? | |||
| +--:(ospfv2) | | +--:(ospfv2) | |||
skipping to change at line 616 ¶ | skipping to change at line 439 ¶ | |||
| +--:(ospfv3) | | +--:(ospfv3) | |||
| +--ro ospfv3 | | +--ro ospfv3 | |||
. | . | |||
. | . | |||
+--ro spf-log | +--ro spf-log | |||
| +--ro event* [id] | | +--ro event* [id] | |||
| +--ro id uint32 | | +--ro id uint32 | |||
| +--ro spf-type? enumeration | | +--ro spf-type? enumeration | |||
| +--ro schedule-timestamp? yang:timestamp | | +--ro schedule-timestamp? yang:timestamp | |||
| +--ro start-timestamp? yang:timestamp | | +--ro start-timestamp? yang:timestamp | |||
+--ro end-timestamp? yang:timestamp | | +--ro end-timestamp? yang:timestamp | |||
| +--ro trigger-lsa* | | +--ro trigger-lsa* | |||
| +--ro area-id? area-id-type | | +--ro area-id? area-id-type | |||
| +--ro link-id? union | ||||
| +--ro type? uint16 | | +--ro type? uint16 | |||
| +--ro lsa-id? yang:dotted-quad | | +--ro lsa-id? union | |||
| +--ro adv-router? yang:dotted-quad | | +--ro adv-router? rt-types:router-id | |||
| +--ro seq-num? uint32 | | +--ro seq-num? uint32 | |||
+--ro lsa-log | +--ro lsa-log | |||
| +--ro event* [id] | | +--ro event* [id] | |||
| +--ro id uint32 | | +--ro id uint32 | |||
| +--ro lsa | | +--ro lsa | |||
| | +--ro area-id? area-id-type | | | +--ro area-id? area-id-type | |||
| | +--ro link-id? union | ||||
| | +--ro type? uint16 | | | +--ro type? uint16 | |||
| | +--ro lsa-id? yang:dotted-quad | | | +--ro lsa-id? union | |||
| | +--ro adv-router? yang:dotted-quad | | | +--ro adv-router? rt-types:router-id | |||
| | +--ro seq-num? uint32 | | | +--ro seq-num? uint32 | |||
| +--ro received-timestamp? yang:timestamp | | +--ro received-timestamp? yang:timestamp | |||
| +--ro reason? identityref | | +--ro reason? identityref | |||
. | . | |||
. | . | |||
</artwork> | ]]></sourcecode> | |||
</figure> | </section> | |||
</section> | <section numbered="true" toc="default"> | |||
<section title="OSPF Area Configuration/Operational State"> | <name>OSPF Area Configuration / Operational State</name> | |||
<t>The area container contains OSPF area configuration and the list | <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 | |||
| +--rw summary? boolean | | +--rw summary? boolean | |||
| +--rw default-cost? uint32 | | +--rw default-cost? ospf-metric | |||
| +--rw ranges | | +--rw ranges | |||
| | +--rw range* [prefix] | | | +--rw range* [prefix] | |||
| | +--rw prefix inet:ip-prefix | | | +--rw prefix inet:ip-prefix | |||
| | +--rw advertise? boolean | | | +--rw advertise? boolean | |||
| | +--rw cost? uint24 | | | +--rw cost? ospf-metric | |||
| +--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 summary? boolean | | | +--rw summary? boolean | |||
| | +--rw default-cost? ospf-metric | | | +--rw default-cost? ospf-metric | |||
| | +--rw ranges | | | +--rw ranges | |||
| | +--rw range* [prefix] | | | +--rw range* [prefix] | |||
| | +--rw prefix inet:ip-prefix | | | +--rw prefix inet:ip-prefix | |||
| | +--rw advertise? boolean | | | +--rw advertise? boolean | |||
| | +--rw cost? ospf-metric | | | +--rw cost? ospf-metric | |||
| +--ro statistics | | +--ro statistics | |||
| | +--ro discontinuity-time yang:date-and-time | | | +--ro discontinuity-time yang:date-and-time | |||
| | +--ro spf-runs-count? yang:counter32 | | | +--ro spf-runs-count? yang:counter32 | |||
| | +--ro abr-count? yang:gauge32 | | | +--ro abr-count? yang:gauge32 | |||
| | +--ro asbr-count? yang:gauge32 | | | +--ro asbr-count? yang:gauge32 | |||
| | +--ro ar-nssa-translator-event-count? | | | +--ro ar-nssa-translator-event-count? | |||
| | yang:counter32 | | | yang:counter32 | |||
| | +--ro area-scope-lsa-count? yang:gauge32 | | | +--ro area-scope-lsa-count? yang:gauge32 | |||
| | +--ro area-scope-lsa-cksum-sum? int32 | | | +--ro area-scope-lsa-cksum-sum? uint32 | |||
| | +--ro database | | | +--ro database | |||
| | +--ro area-scope-lsa-type* | | | +--ro area-scope-lsa-type* | |||
| | +--ro lsa-type? uint16 | | | +--ro lsa-type? uint16 | |||
| | +--ro lsa-count? yang:gauge32 | | | +--ro lsa-count? yang:gauge32 | |||
| | +--ro lsa-cksum-sum? int32 | | | +--ro lsa-cksum-sum? uint32 | |||
| +--ro database | | +--ro database | |||
| | +--ro area-scope-lsa-type* [lsa-type] | | | +--ro area-scope-lsa-type* [lsa-type] | |||
| | +--ro lsa-type uint16 | | | +--ro lsa-type uint16 | |||
| | +--ro area-scope-lsas | | | +--ro area-scope-lsas | |||
| | +--ro area-scope-lsa* [lsa-id adv-router] | | | +--ro area-scope-lsa* [lsa-id adv-router] | |||
| | +--ro lsa-id union | | | +--ro lsa-id union | |||
. . . | . . . | |||
. . . | . . . | |||
| | +--ro (version)? | | | +--ro (version)? | |||
| | +--:(ospfv2) | | | +--:(ospfv2) | |||
skipping to change at line 766 ¶ | skipping to change at line 585 ¶ | |||
| | +--rw virtual-link* [transit-area-id router-id] | | | +--rw virtual-link* [transit-area-id router-id] | |||
| | +--rw transit-area-id -> ../../../../ | | | +--rw transit-area-id -> ../../../../ | |||
| | area/area-id | | | area/area-id | |||
| | +--rw router-id rt-types:router-id | | | +--rw router-id rt-types:router-id | |||
| | +--rw hello-interval? uint16 | | | +--rw hello-interval? uint16 | |||
| | +--rw dead-interval? uint32 | | | +--rw dead-interval? uint32 | |||
| | +--rw retransmit-interval? uint16 | | | +--rw retransmit-interval? uint16 | |||
| | +--rw transmit-delay? uint16 | | | +--rw transmit-delay? uint16 | |||
| | +--rw lls? boolean {lls}? | | | +--rw lls? boolean {lls}? | |||
| | +--rw ttl-security {ttl-security}? | | | +--rw ttl-security {ttl-security}? | |||
| | | +--rw enable? boolean | | | | +--rw enabled? boolean | |||
| | | +--rw hops? uint8 | | | | +--rw hops? uint8 | |||
| | +--rw enable? boolean | | | +--rw enabled? boolean | |||
| | +--rw authentication | | | +--rw authentication | |||
| | | +--rw (auth-type-selection)? | | | | +--rw (auth-type-selection)? | |||
| | | +--:(ospfv2-auth) | | | | +--:(ospfv2-auth) | |||
| | | | +--rw ospfv2-auth-trailer-rfc? | | | | | +--rw ospfv2-auth-trailer-rfc? | |||
| | | | | ospfv2-auth-trailer-rfc-version | | | | | | ospfv2-auth-trailer-rfc-version | |||
| | | | | {ospfv2-authentication-trailer}? | | | | | | {ospfv2-authentication-trailer}? | |||
| | | | +--rw (ospfv2-auth-specification)? | | | | | +--rw (ospfv2-auth-specification)? | |||
| | | | +--:(auth-key-chain) {key-chain}? | | | | | +--:(auth-key-chain) {key-chain}? | |||
| | | | | +--rw ospfv2-key-chain? | | | | | | +--rw ospfv2-key-chain? | |||
| | | | | key-chain:key-chain-ref | | | | | | key-chain:key-chain-ref | |||
skipping to change at line 798 ¶ | skipping to change at line 617 ¶ | |||
| | | | {ospfv3-authentication-trailer}? | | | | | {ospfv3-authentication-trailer}? | |||
| | | +--rw (ospfv3-auth-specification)? | | | | +--rw (ospfv3-auth-specification)? | |||
| | | +--:(auth-key-chain) {key-chain}? | | | | +--:(auth-key-chain) {key-chain}? | |||
| | | | +--rw ospfv3-key-chain? | | | | | +--rw ospfv3-key-chain? | |||
| | | | key-chain:key-chain-ref | | | | | key-chain:key-chain-ref | |||
| | | +--:(auth-key-explicit) | | | | +--:(auth-key-explicit) | |||
| | | +--rw ospfv3-sa-id? uint16 | | | | +--rw ospfv3-sa-id? uint16 | |||
| | | +--rw ospfv3-key? string | | | | +--rw ospfv3-key? string | |||
| | | +--rw ospfv3-crypto-algorithm? | | | | +--rw ospfv3-crypto-algorithm? | |||
| | | identityref | | | | identityref | |||
| | +--ro cost? uint16 | | | +--ro cost? ospf-link-metric | |||
| | +--ro state? if-state-type | | | +--ro state? if-state-type | |||
| | +--ro hello-timer? rt-types: | | | +--ro hello-timer? rt-types: | |||
| | | rtimer-value-seconds16 | | | | rtimer-value-seconds16 | |||
| | +--ro wait-timer? rt-types: | | | +--ro wait-timer? rt-types: | |||
| | | rtimer-value-seconds16 | | | | rtimer-value-seconds16 | |||
| | +--ro dr-router-id? rt-types:router-id | | | +--ro dr-router-id? rt-types:router-id | |||
| | +--ro dr-ip-addr? inet:ip-address | | | +--ro dr-ip-addr? inet:ip-address | |||
| | +--ro bdr-router-id? rt-types:router-id | | | +--ro bdr-router-id? rt-types:router-id | |||
| | +--ro bdr-ip-addr? inet:ip-address | | | +--ro bdr-ip-addr? inet:ip-address | |||
| | +--ro statistics | | | +--ro statistics | |||
skipping to change at line 854 ¶ | skipping to change at line 673 ¶ | |||
| +--rw sham-links {pe-ce-protocol}? | | +--rw sham-links {pe-ce-protocol}? | |||
| | +--rw sham-link* [local-id remote-id] | | | +--rw sham-link* [local-id remote-id] | |||
| | +--rw local-id inet:ip-address | | | +--rw local-id inet:ip-address | |||
| | +--rw remote-id inet:ip-address | | | +--rw remote-id inet:ip-address | |||
| | +--rw hello-interval? uint16 | | | +--rw hello-interval? uint16 | |||
| | +--rw dead-interval? uint32 | | | +--rw dead-interval? uint32 | |||
| | +--rw retransmit-interval? uint16 | | | +--rw retransmit-interval? uint16 | |||
| | +--rw transmit-delay? uint16 | | | +--rw transmit-delay? uint16 | |||
| | +--rw lls? boolean {lls}? | | | +--rw lls? boolean {lls}? | |||
| | +--rw ttl-security {ttl-security}? | | | +--rw ttl-security {ttl-security}? | |||
| | | +--rw enable? boolean | | | | +--rw enabled? boolean | |||
| | | +--rw hops? uint8 | | | | +--rw hops? uint8 | |||
| | +--rw enable? boolean | | | +--rw enabled? boolean | |||
| | +--rw authentication | | | +--rw authentication | |||
| | | +--rw (auth-type-selection)? | | | | +--rw (auth-type-selection)? | |||
| | | +--:(ospfv2-auth) | | | | +--:(ospfv2-auth) | |||
| | | | +--rw ospfv2-auth-trailer-rfc? | | | | | +--rw ospfv2-auth-trailer-rfc? | |||
| | | | | ospfv2-auth-trailer-rfc-version | | | | | | ospfv2-auth-trailer-rfc-version | |||
| | | | | {ospfv2-authentication-trailer}? | | | | | | {ospfv2-authentication-trailer}? | |||
| | | | +--rw (ospfv2-auth-specification)? | | | | | +--rw (ospfv2-auth-specification)? | |||
| | | | +--:(auth-key-chain) {key-chain}? | | | | | +--:(auth-key-chain) {key-chain}? | |||
| | | | | +--rw ospfv2-key-chain? | | | | | | +--rw ospfv2-key-chain? | |||
| | | | | key-chain:key-chain-ref | | | | | | key-chain:key-chain-ref | |||
skipping to change at line 886 ¶ | skipping to change at line 705 ¶ | |||
| | | | {ospfv3-authentication-trailer}? | | | | | {ospfv3-authentication-trailer}? | |||
| | | +--rw (ospfv3-auth-specification)? | | | | +--rw (ospfv3-auth-specification)? | |||
| | | +--:(auth-key-chain) {key-chain}? | | | | +--:(auth-key-chain) {key-chain}? | |||
| | | | +--rw ospfv3-key-chain? | | | | | +--rw ospfv3-key-chain? | |||
| | | | key-chain:key-chain-ref | | | | | key-chain:key-chain-ref | |||
| | | +--:(auth-key-explicit) | | | | +--:(auth-key-explicit) | |||
| | | +--rw ospfv3-sa-id? uint16 | | | | +--rw ospfv3-sa-id? uint16 | |||
| | | +--rw ospfv3-key? string | | | | +--rw ospfv3-key? string | |||
| | | +--rw ospfv3-crypto-algorithm? | | | | +--rw ospfv3-crypto-algorithm? | |||
| | | identityref | | | | identityref | |||
| | +--rw cost? uint16 | | | +--rw cost? ospf-link-metric | |||
| | +--rw mtu-ignore? boolean | | | +--rw mtu-ignore? boolean | |||
| | {mtu-ignore}? | | | {mtu-ignore}? | |||
| | +--rw prefix-suppression? boolean | | | +--rw prefix-suppression? boolean | |||
| | {prefix-suppression}? | | | {prefix-suppression}? | |||
| | +--ro state? if-state-type | | | +--ro state? if-state-type | |||
| | +--ro hello-timer? rt-types: | | | +--ro hello-timer? rt-types: | |||
| | | rtimer-value-seconds16 | | | | rtimer-value-seconds16 | |||
| | +--ro wait-timer? rt-types: | | | +--ro wait-timer? rt-types: | |||
| | | rtimer-value-seconds16 | | | | rtimer-value-seconds16 | |||
| | +--ro dr-router-id? rt-types:router-id | | | +--ro dr-router-id? rt-types:router-id | |||
skipping to change at line 910 ¶ | skipping to change at line 729 ¶ | |||
| | +--ro statistics | | | +--ro statistics | |||
| | | +--ro discontinuity-time yang:date-and-time | | | | +--ro discontinuity-time yang:date-and-time | |||
| | | +--ro if-event-count? yang:counter32 | | | | +--ro if-event-count? yang:counter32 | |||
| | | +--ro link-scope-lsa-count? yang:gauge32 | | | | +--ro link-scope-lsa-count? yang:gauge32 | |||
| | | +--ro link-scope-lsa-cksum-sum? | | | | +--ro link-scope-lsa-cksum-sum? | |||
| | | uint32 | | | | uint32 | |||
| | | +--ro database | | | | +--ro database | |||
| | | +--ro link-scope-lsa-type* | | | | +--ro link-scope-lsa-type* | |||
| | | +--ro lsa-type? uint16 | | | | +--ro lsa-type? uint16 | |||
| | | +--ro lsa-count? yang:gauge32 | | | | +--ro lsa-count? yang:gauge32 | |||
| | | +--ro lsa-cksum-sum? int32 | | | | +--ro lsa-cksum-sum? uint32 | |||
| | +--ro neighbors | | | +--ro neighbors | |||
| | | +--ro neighbor* [neighbor-router-id] | | | | +--ro neighbor* [neighbor-router-id] | |||
| | | +--ro neighbor-router-id | | | | +--ro neighbor-router-id | |||
| | | rt-types:router-id | | | | rt-types:router-id | |||
| | | +--ro address? inet:ip-address | | | | +--ro address? inet:ip-address | |||
| | | +--ro dr-router-id? rt-types:router-id | | | | +--ro dr-router-id? rt-types:router-id | |||
| | | +--ro dr-ip-addr? inet:ip-address | | | | +--ro dr-ip-addr? inet:ip-address | |||
| | | +--ro bdr-router-id? rt-types:router-id | | | | +--ro bdr-router-id? rt-types:router-id | |||
| | | +--ro bdr-ip-addr? inet:ip-address | | | | +--ro bdr-ip-addr? inet:ip-address | |||
| | | +--ro state? nbr-state-type | | | | +--ro state? nbr-state-type | |||
| | | +--ro cost? uint32 | | | | +--ro cost? ospf-link-metric | |||
| | | +--ro dead-timer? rt-types: | | | | +--ro dead-timer? rt-types: | |||
| | | | rtimer-value-seconds16 | | | | | rtimer-value-seconds16 | |||
| | | +--ro statistics | | | | +--ro statistics | |||
| | | +--ro discontinuity-time? | ||||
| | | yang:date-and-time | ||||
| | | +--ro nbr-event-count? | | | | +--ro nbr-event-count? | |||
| | | yang:counter32 | | | | yang:counter32 | |||
| | | +--ro nbr-retrans-qlen? | | | | +--ro nbr-retrans-qlen? | |||
| | | yang:gauge32 | | | | yang:gauge32 | |||
| | +--ro database | | | +--ro database | |||
| | +--ro link-scope-lsa-type* [lsa-type] | | | +--ro link-scope-lsa-type* [lsa-type] | |||
| | +--ro lsa-type uint16 | | | +--ro lsa-type uint16 | |||
| | +--ro link-scope-lsas | | | +--ro link-scope-lsas | |||
. . | . . | |||
. . | . . | |||
</artwork> | ]]></sourcecode> | |||
</figure> | ||||
</section> | </section> | |||
<section title="OSPF Interface Configuration/Operational State"> | <section numbered="true" toc="default"> | |||
<t>The interface container contains OSPF interface configuration | <name>OSPF Interface Configuration / Operational State</name> | |||
<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 interface statistics, the li | |||
neighbors, and Link-Local Link State Database (LSDB).</t> | st of | |||
<figure align="left"> | neighbors, and the link-local LSDB.</t> | |||
<artwork align="left"> | <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 966 ¶ | skipping to change at line 787 ¶ | |||
| +--rw interface* [name] | | +--rw interface* [name] | |||
| +--rw name if:interface-ref | | +--rw name if:interface-ref | |||
| +--rw interface-type? enumeration | | +--rw interface-type? enumeration | |||
| +--rw passive? boolean | | +--rw passive? boolean | |||
| +--rw demand-circuit? boolean | | +--rw demand-circuit? boolean | |||
| {demand-circuit}? | | {demand-circuit}? | |||
| +--rw priority? uint8 | | +--rw priority? uint8 | |||
| +--rw multi-areas {multi-area-adj}? | | +--rw multi-areas {multi-area-adj}? | |||
| | +--rw multi-area* [multi-area-id] | | | +--rw multi-area* [multi-area-id] | |||
| | +--rw multi-area-id area-id-type | | | +--rw multi-area-id area-id-type | |||
| | +--rw cost? uint16 | | | +--rw cost? ospf-link-metric | |||
| +--rw static-neighbors | | +--rw static-neighbors | |||
| | +--rw neighbor* [identifier] | | | +--rw neighbor* [identifier] | |||
| | +--rw identifier inet:ip-address | | | +--rw identifier inet:ip-address | |||
| | +--rw cost? uint16 | | | +--rw cost? ospf-link-metric | |||
| | +--rw poll-interval? uint16 | | | +--rw poll-interval? uint16 | |||
| | +--rw priority? uint8 | | | +--rw priority? uint8 | |||
| +--rw node-flag? boolean | | +--rw node-flag? boolean | |||
| {node-flag}? | | {node-flag}? | |||
| +--rw bfd {bfd}? | | +--rw bfd {bfd}? | |||
| | +--rw enable? boolean | | | +--rw enabled? boolean | |||
| | +--rw local-multiplier? multiplier | ||||
| | | {client-base-cfg-parms}? | ||||
| | +--rw (interval-config-type)? | ||||
| | | {client-base-cfg-parms}? | ||||
| | +--:(tx-rx-intervals) | ||||
| | | +--rw desired-min-tx-interval? uint32 | ||||
| | | +--rw required-min-rx-interval? uint32 | ||||
| | +--:(single-interval) | ||||
| | | {single-minimum-interval}? | ||||
| | +--rw min-interval? uint32 | ||||
| +--rw fast-reroute {fast-reroute}? | | +--rw fast-reroute {fast-reroute}? | |||
| | +--rw lfa {lfa}? | | | +--rw lfa {lfa}? | |||
| | +--rw candidate-enable? boolean | | | +--rw candidate-enabled? boolean | |||
| | +--rw enable? boolean | | | +--rw enabled? boolean | |||
| | +--rw remote-lfa {remote-lfa}? | | | +--rw remote-lfa {remote-lfa}? | |||
| | +--rw enable? boolean | | | +--rw enabled? boolean | |||
| +--rw hello-interval? uint16 | | +--rw hello-interval? uint16 | |||
| +--rw dead-interval? uint32 | | +--rw dead-interval? uint32 | |||
| +--rw retransmit-interval? uint16 | | +--rw retransmit-interval? uint16 | |||
| +--rw transmit-delay? uint16 | | +--rw transmit-delay? uint16 | |||
| +--rw lls? boolean {lls}? | | +--rw lls? boolean {lls}? | |||
| +--rw ttl-security {ttl-security}? | | +--rw ttl-security {ttl-security}? | |||
| | +--rw enable? boolean | | | +--rw enabled? boolean | |||
| | +--rw hops? uint8 | | | +--rw hops? uint8 | |||
| +--rw enable? boolean | | +--rw enabled? boolean | |||
| +--rw authentication | | +--rw authentication | |||
| | +--rw (auth-type-selection)? | | | +--rw (auth-type-selection)? | |||
| | +--:(ospfv2-auth) | | | +--:(ospfv2-auth) | |||
| | | +--rw ospfv2-auth-trailer-rfc? | | | | +--rw ospfv2-auth-trailer-rfc? | |||
| | | | ospfv2-auth-trailer-rfc-version | | | | | ospfv2-auth-trailer-rfc-version | |||
| | | | {ospfv2-authentication-trailer}? | | | | | {ospfv2-authentication-trailer}? | |||
| | | +--rw (ospfv2-auth-specification)? | | | | +--rw (ospfv2-auth-specification)? | |||
| | | +--:(auth-key-chain) {key-chain}? | | | | +--:(auth-key-chain) {key-chain}? | |||
| | | | +--rw ospfv2-key-chain? | | | | | +--rw ospfv2-key-chain? | |||
| | | | key-chain:key-chain-ref | | | | | key-chain:key-chain-ref | |||
skipping to change at line 1021 ¶ | skipping to change at line 852 ¶ | |||
| | | {ospfv3-authentication-trailer}? | | | | {ospfv3-authentication-trailer}? | |||
| | +--rw (ospfv3-auth-specification)? | | | +--rw (ospfv3-auth-specification)? | |||
| | +--:(auth-key-chain) {key-chain}? | | | +--:(auth-key-chain) {key-chain}? | |||
| | | +--rw ospfv3-key-chain? | | | | +--rw ospfv3-key-chain? | |||
| | | key-chain:key-chain-ref | | | | key-chain:key-chain-ref | |||
| | +--:(auth-key-explicit) | | | +--:(auth-key-explicit) | |||
| | +--rw ospfv3-sa-id? uint16 | | | +--rw ospfv3-sa-id? uint16 | |||
| | +--rw ospfv3-key? string | | | +--rw ospfv3-key? string | |||
| | +--rw ospfv3-crypto-algorithm? | | | +--rw ospfv3-crypto-algorithm? | |||
| | identityref | | | identityref | |||
| +--rw cost? uint16 | | +--rw cost? ospf-link-metric | |||
| +--rw mtu-ignore? boolean | | +--rw mtu-ignore? boolean | |||
| | {mtu-ignore}? | | | {mtu-ignore}? | |||
| +--rw prefix-suppression? boolean | | +--rw prefix-suppression? boolean | |||
| | {prefix-suppression}? | | | {prefix-suppression}? | |||
| +--ro state? if-state-type | | +--ro state? if-state-type | |||
| +--ro hello-timer? rt-types: | | +--ro hello-timer? rt-types: | |||
| | rtimer-value-seconds16 | | | rtimer-value-seconds16 | |||
| +--ro wait-timer? rt-types: | | +--ro wait-timer? rt-types: | |||
| | rtimer-value-seconds16 | | | rtimer-value-seconds16 | |||
| +--ro dr-router-id? rt-types:router-id | | +--ro dr-router-id? rt-types:router-id | |||
| +--ro dr-ip-addr? inet:ip-address | | +--ro dr-ip-addr? inet:ip-address | |||
| +--ro bdr-router-id? rt-types:router-id | | +--ro bdr-router-id? rt-types:router-id | |||
| +--ro bdr-ip-addr? inet:ip-address | | +--ro bdr-ip-addr? inet:ip-address | |||
| +--ro statistics | | +--ro statistics | |||
| | +--ro discontinuity-time? yang:date-and-time | ||||
| | +--ro if-event-count? yang:counter32 | | | +--ro if-event-count? yang:counter32 | |||
| | +--ro link-scope-lsa-count? yang:gauge32 | | | +--ro link-scope-lsa-count? yang:gauge32 | |||
| | +--ro link-scope-lsa-cksum-sum? | | | +--ro link-scope-lsa-cksum-sum? | |||
| | uint32 | | | uint32 | |||
| | +--ro database | | | +--ro database | |||
| | +--ro link-scope-lsa-type* | | | +--ro link-scope-lsa-type* | |||
| | +--ro lsa-type? uint16 | | | +--ro lsa-type? uint16 | |||
| | +--ro lsa-count? yang:gauge32 | | | +--ro lsa-count? yang:gauge32 | |||
| | +--ro lsa-cksum-sum? int32 | | | +--ro lsa-cksum-sum? int32 | |||
| +--ro neighbors | | +--ro neighbors | |||
skipping to change at line 1058 ¶ | skipping to change at line 890 ¶ | |||
| | rt-types:router-id | | | rt-types:router-id | |||
| | +--ro address? inet:ip-address | | | +--ro address? inet:ip-address | |||
| | +--ro dr-router-id? rt-types:router-id | | | +--ro dr-router-id? rt-types:router-id | |||
| | +--ro dr-ip-addr? inet:ip-address | | | +--ro dr-ip-addr? inet:ip-address | |||
| | +--ro bdr-router-id? rt-types:router-id | | | +--ro bdr-router-id? rt-types:router-id | |||
| | +--ro bdr-ip-addr? inet:ip-address | | | +--ro bdr-ip-addr? inet:ip-address | |||
| | +--ro state? nbr-state-type | | | +--ro state? nbr-state-type | |||
| | +--ro dead-timer? rt-types: | | | +--ro dead-timer? rt-types: | |||
| | | rtimer-value-seconds16 | | | | rtimer-value-seconds16 | |||
| | +--ro statistics | | | +--ro statistics | |||
| | +--ro discontinuity-time? | ||||
| | yang:date-and-time | ||||
| | +--ro nbr-event-count? | | | +--ro nbr-event-count? | |||
| | yang:counter32 | | | yang:counter32 | |||
| | +--ro nbr-retrans-qlen? | | | +--ro nbr-retrans-qlen? | |||
| | yang:gauge32 | | | yang:gauge32 | |||
| +--ro database | | +--ro database | |||
| . +--ro link-scope-lsa-type* [lsa-type] | | . +--ro link-scope-lsa-type* [lsa-type] | |||
| . +--ro lsa-type uint16 | | . +--ro lsa-type uint16 | |||
| . +--ro link-scope-lsas | | . +--ro link-scope-lsas | |||
. . | . . | |||
. . | . . | |||
| +--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? ospf-link-metric | |||
| +--rw instance-id? uint8 | | +--rw instance-id? uint8 | |||
. | . | |||
. | . | |||
</artwork> | ]]></sourcecode> | |||
</figure> | ||||
</section> | </section> | |||
<section title="OSPF Notifications"> | <section numbered="true" toc="default"> | |||
<t>This YANG model defines a list of notifications that inform YANG | <name>OSPF Notifications</name> | |||
<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. 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 address-family? | |||
| + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| + control-plane-protocol | | + control-plane-protocol[rt:name=current()/../ | |||
| + [rt:name=current()/../routing-protocol-name]/ | | + routing-protocol-name]/ospf/address-family | |||
| + ospf:ospf/af | ||||
| +--ro (if-link-type-selection)? | | +--ro (if-link-type-selection)? | |||
| | +--:(interface) | | | +--:(interface) | |||
| | | +--ro interface | | | | +--ro interface | |||
| | | +--ro interface? if:interface-ref | | | | +--ro interface? if:interface-ref | |||
| | +--:(virtual-link) | | | +--:(virtual-link) | |||
| | | +--ro virtual-link | | | | +--ro virtual-link | |||
| | | +--ro transit-area-id? area-id-type | | | | +--ro transit-area-id? area-id-type | |||
| | | +--ro neighbor-router-id? rt-types:router-id | | | | +--ro neighbor-router-id? rt-types:router-id | |||
| | +--:(sham-link) | | | +--:(sham-link) | |||
| | +--ro sham-link | | | +--ro sham-link | |||
| | +--ro area-id? area-id-type | | | +--ro area-id? area-id-type | |||
| | +--ro local-ip-addr? inet:ip-address | | | +--ro local-ip-addr? inet:ip-address | |||
| | +--ro remote-ip-addr? inet:ip-address | | | +--ro remote-ip-addr? inet:ip-address | |||
| +--ro state? if-state-type | | +--ro state? if-state-type | |||
+---n if-config-error | +---n if-config-error | |||
| +--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 address-family? | |||
| + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| + control-plane-protocol | | + control-plane-protocol[rt:name=current()/../ | |||
| + [rt:name=current()/../routing-protocol-name]/ | | + routing-protocol-name]/ospf/address-family | |||
| + ospf:ospf/af | ||||
| +--ro (if-link-type-selection)? | | +--ro (if-link-type-selection)? | |||
| | +--:(interface) | | | +--:(interface) | |||
| | | +--ro interface | | | | +--ro interface | |||
| | | +--ro interface? if:interface-ref | | | | +--ro interface? if:interface-ref | |||
| | +--:(virtual-link) | | | +--:(virtual-link) | |||
| | | +--ro virtual-link | | | | +--ro virtual-link | |||
| | | +--ro transit-area-id? area-id-type | | | | +--ro transit-area-id? area-id-type | |||
| | | +--ro neighbor-router-id? rt-types:router-id | | | | +--ro neighbor-router-id? rt-types:router-id | |||
| | +--:(sham-link) | | | +--:(sham-link) | |||
| | +--ro sham-link | | | +--ro sham-link | |||
| | +--ro area-id? area-id-type | | | +--ro area-id? area-id-type | |||
| | +--ro local-ip-addr? inet:ip-address | | | +--ro local-ip-addr? inet:ip-address | |||
| | +--ro remote-ip-addr? inet:ip-address | | | +--ro remote-ip-addr? inet:ip-address | |||
| +--ro packet-source? yang:dotted-quad | | +--ro packet-source? yang:dotted-quad | |||
| +--ro packet-type? packet-type | | +--ro packet-type? packet-type | |||
| +--ro error? enumeration | | +--ro error? enumeration | |||
+---n nbr-state-change | +---n nbr-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 address-family? | |||
| + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| + control-plane-protocol | | + control-plane-protocol[rt:name=current()/../ | |||
| + [rt:name=current()/../routing-protocol-name]/ | | + routing-protocol-name]/ospf/address-family | |||
| + ospf:ospf/af | ||||
| +--ro (if-link-type-selection)? | | +--ro (if-link-type-selection)? | |||
| | +--:(interface) | | | +--:(interface) | |||
| | | +--ro interface | | | | +--ro interface | |||
| | | +--ro interface? if:interface-ref | | | | +--ro interface? if:interface-ref | |||
| | +--:(virtual-link) | | | +--:(virtual-link) | |||
| | | +--ro virtual-link | | | | +--ro virtual-link | |||
| | | +--ro transit-area-id? area-id-type | | | | +--ro transit-area-id? area-id-type | |||
| | | +--ro neighbor-router-id? rt-types:router-id | | | | +--ro neighbor-router-id? rt-types:router-id | |||
| | +--:(sham-link) | | | +--:(sham-link) | |||
| | +--ro sham-link | | | +--ro sham-link | |||
| | +--ro area-id? area-id-type | | | +--ro area-id? area-id-type | |||
| | +--ro local-ip-addr? inet:ip-address | | | +--ro local-ip-addr? inet:ip-address | |||
| | +--ro remote-ip-addr? inet:ip-address | | | +--ro remote-ip-addr? inet:ip-address | |||
| +--ro neighbor-router-id? rt-types:router-id | | +--ro neighbor-router-id? rt-types:router-id | |||
| +--ro neighbor-ip-addr? yang:dotted-quad | | +--ro neighbor-ip-addr? yang:dotted-quad | |||
| +--ro state? nbr-state-type | | +--ro state? nbr-state-type | |||
+---n nbr-restart-helper-status-change | +---n nbr-restart-helper-status-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 address-family? | |||
| + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| + control-plane-protocol | | + control-plane-protocol[rt:name=current()/../ | |||
| + [rt:name=current()/../routing-protocol-name]/ | | + routing-protocol-name]/ospf/address-family | |||
| + ospf:ospf/af | ||||
| +--ro (if-link-type-selection)? | | +--ro (if-link-type-selection)? | |||
| | +--:(interface) | | | +--:(interface) | |||
| | | +--ro interface | | | | +--ro interface | |||
| | | +--ro interface? if:interface-ref | | | | +--ro interface? if:interface-ref | |||
| | +--:(virtual-link) | | | +--:(virtual-link) | |||
| | | +--ro virtual-link | | | | +--ro virtual-link | |||
| | | +--ro transit-area-id? area-id-type | | | | +--ro transit-area-id? area-id-type | |||
| | | +--ro neighbor-router-id? rt-types:router-id | | | | +--ro neighbor-router-id? rt-types:router-id | |||
| | +--:(sham-link) | | | +--:(sham-link) | |||
| | +--ro sham-link | | | +--ro sham-link | |||
| | +--ro area-id? area-id-type | | | +--ro area-id? area-id-type | |||
| | +--ro local-ip-addr? inet:ip-address | | | +--ro local-ip-addr? inet:ip-address | |||
| | +--ro remote-ip-addr? inet:ip-address | | | +--ro remote-ip-addr? inet:ip-address | |||
| +--ro neighbor-router-id? rt-types:router-id | | +--ro neighbor-router-id? rt-types:router-id | |||
| +--ro neighbor-ip-addr? yang:dotted-quad | | +--ro neighbor-ip-addr? yang:dotted-quad | |||
| +--ro status? restart-helper-status-type | | +--ro status? restart-helper-status-type | |||
| +--ro age? uint32 | | +--ro age? rt-types:timer-value-seconds16 | |||
| +--ro exit-reason? restart-exit-reason-type | | +--ro exit-reason? restart-exit-reason-type | |||
+---n if-rx-bad-packet | +---n if-rx-bad-packet | |||
| +--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 address-family? | |||
| + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| + control-plane-protocol | | + control-plane-protocol[rt:name=current()/../ | |||
| + [rt:name=current()/../routing-protocol-name]/ | | + routing-protocol-name]/ospf/address-family | |||
| + ospf:ospf/af | ||||
| +--ro (if-link-type-selection)? | | +--ro (if-link-type-selection)? | |||
| | +--:(interface) | | | +--:(interface) | |||
| | | +--ro interface | | | | +--ro interface | |||
| | | +--ro interface? if:interface-ref | | | | +--ro interface? if:interface-ref | |||
| | +--:(virtual-link) | | | +--:(virtual-link) | |||
| | | +--ro virtual-link | | | | +--ro virtual-link | |||
| | | +--ro transit-area-id? area-id-type | | | | +--ro transit-area-id? area-id-type | |||
| | | +--ro neighbor-router-id? rt-types:router-id | | | | +--ro neighbor-router-id? rt-types:router-id | |||
| | +--:(sham-link) | | | +--:(sham-link) | |||
| | +--ro sham-link | | | +--ro sham-link | |||
| | +--ro area-id? area-id-type | | | +--ro area-id? area-id-type | |||
| | +--ro local-ip-addr? inet:ip-address | | | +--ro local-ip-addr? inet:ip-address | |||
| | +--ro remote-ip-addr? inet:ip-address | | | +--ro remote-ip-addr? inet:ip-address | |||
| +--ro packet-source? yang:dotted-quad | | +--ro packet-source? yang:dotted-quad | |||
| +--ro packet-type? packet-type | | +--ro packet-type? packet-type | |||
+---n lsdb-approaching-overflow | +---n lsdb-approaching-overflow | |||
| +--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 address-family? | |||
| + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| + control-plane-protocol | | + control-plane-protocol[rt:name=current()/../ | |||
| + [rt:name=current()/../routing-protocol-name]/ | | + routing-protocol-name]/ospf/address-family | |||
| + ospf:ospf/af | ||||
| +--ro ext-lsdb-limit? uint32 | | +--ro ext-lsdb-limit? uint32 | |||
+---n lsdb-overflow | +---n lsdb-overflow | |||
| +--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 address-family? | |||
| + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| + control-plane-protocol | | + control-plane-protocol[rt:name=current()/../ | |||
| + [rt:name=current()/../routing-protocol-name]/ | | + routing-protocol-name]/ospf/address-family | |||
| + ospf:ospf/af | ||||
| +--ro ext-lsdb-limit? uint32 | | +--ro ext-lsdb-limit? uint32 | |||
+---n nssa-translator-status-change | +---n nssa-translator-status-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 address-family? | |||
| + -> /rt:routing/control-plane-protocols/ | | + -> /rt:routing/control-plane-protocols/ | |||
| + control-plane-protocol | | + control-plane-protocol[rt:name=current()/../ | |||
| + [rt:name=current()/../routing-protocol-name]/ | | + routing-protocol-name]/ospf/address-family | |||
| + ospf:ospf/af | ||||
| +--ro area-id? area-id-type | | +--ro area-id? area-id-type | |||
| +--ro status? nssa-translator-state-type | | +--ro status? nssa-translator-state-type | |||
+---n restart-status-change | +---n restart-status-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 address-family? | |||
+ -> /rt:routing/control-plane-protocols/ | + -> /rt:routing/control-plane-protocols/ | |||
+ control-plane-protocol | + control-plane-protocol[rt:name=current()/../ | |||
+ [rt:name=current()/../routing-protocol-name]/ | + routing-protocol-name]/ospf/address-family | |||
+ 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 | |||
</artwork> | ]]></sourcecode> | |||
</figure> | ||||
</section> | </section> | |||
<section title="OSPF RPC Operations"> | <section numbered="true" toc="default"> | |||
<t>The "ietf-ospf" module defines two RPC operations: | <name>OSPF RPC Operations</name> | |||
<list style="symbols"> | <t>The "ietf-ospf" module defines two RPC operations: | |||
<t>clear-database: reset the content of a particular OSPF | </t> | |||
Link State Database.</t> | <dl newline="false" spacing="normal"> | |||
<t>clear-neighbor: Reset a particular OSPF neighbor or group of neighbors | <dt>clear-database:</dt><dd>Resets the contents of a particular OSPF | |||
associated | LSDB, forces neighbor adjacencies to the 'DOWN' state, and reoriginates | |||
with an OSPF interface.</t> | self-originated LSAs.</dd> | |||
</list></t> | <dt>clear-neighbor:</dt><dd>Resets a particular OSPF neighbor or group | |||
<figure align="left"> | of neighbors associated | |||
<artwork align="left"> | with an OSPF interface.</dd> | |||
</dl> | ||||
<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 | |||
</artwork> | ]]></sourcecode> | |||
</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="RFC9314"/>.</t> | ||||
<section title="OSPF YANG Module"> | <sourcecode name="ietf-ospf@2022-09-26.yang" type="yang" markers="true"><! | |||
<t>The following RFCs and drafts are not referenced in the document text but | [CDATA[ | |||
are referenced in the ietf-ospf.yang module: <xref target="RFC0905"/>, | ||||
<xref target="RFC4576"/>, <xref target="RFC4973"/>, <xref target="RFC5250"/ | ||||
>, | ||||
<xref target="RFC5309"/>, <xref target="RFC5642"/>, <xref target="RFC5881"/ | ||||
>, | ||||
<xref target="RFC6991"/>, <xref target="RFC7770"/>, <xref target="RFC7884"/ | ||||
>, | ||||
<xref target="RFC8294"/>, and <xref target="RFC8476"/>. | ||||
</t> | ||||
<t> | ||||
<figure> | ||||
<artwork><![CDATA[ | ||||
<CODE BEGINS> file "ietf-ospf@2019-10-17.yang" | ||||
module ietf-ospf { | module ietf-ospf { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-ospf"; | namespace "urn:ietf:params:xml:ns:yang:ietf-ospf"; | |||
prefix ospf; | prefix ospf; | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix "inet"; | prefix inet; | |||
reference "RFC 6991: Common YANG Data Types"; | reference | |||
"RFC 6991: Common YANG Data Types"; | ||||
} | } | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix "yang"; | prefix yang; | |||
reference "RFC 6991: Common YANG Data Types"; | reference | |||
"RFC 6991: Common YANG Data Types"; | ||||
} | } | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix "if"; | prefix if; | |||
reference "RFC 8343: A YANG Data Model for Interface | reference | |||
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 9314: 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: Jeffrey Zhang | |||
<mailto:salih@juniper.net> | <mailto:zzhang@juniper.net> | |||
Author: Ing-Wher Chen | Author: Ing-Wher Chen | |||
<mailto:ingwherchen@mitre.org>"; | <mailto:ingwherchen@mitre.org>"; | |||
description | description | |||
"This YANG module defines the generic configuration and | "This YANG module defines the generic configuration and | |||
operational state for the OSPF protocol common to all | operational state for the OSPF protocol common to all | |||
vendor implementations. It is intended that the module | vendor implementations. It is intended that the module | |||
will be extended by vendors to define vendor-specific | will be extended by vendors to define vendor-specific | |||
OSPF configuration parameters and policies, | OSPF configuration parameters and policies -- | |||
for example, route maps or route policies. | for example, route maps or route policies. | |||
This YANG model conforms to the Network Management | This YANG 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) 2022 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 Revised 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 2022-09-26 { | |||
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). This mismatch checking | |||
reference "RFC 2328: OSPF Version 2, section 10.6"; | also applies to OSPFv3 (RFC 5340)."; | |||
reference | ||||
"RFC 2328: OSPF Version 2, Section 10.6 | ||||
RFC 5340: OSPF for IPv6"; | ||||
} | } | |||
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."; | |||
authentication."; | reference | |||
reference "RFC 5709: Supporting Authentication | "RFC 5709: OSPFv2 HMAC-SHA Cryptographic Authentication | |||
Trailer for OSPFv2 | RFC 7474: Security Extension for OSPFv2 When | |||
RFC 7474: Security Extension for OSPFv2 When | Using Manual Key Management"; | |||
Using Manual Key Management"; | ||||
} | } | |||
feature ospfv3-authentication-ipsec { | feature ospfv3-authentication-ipsec { | |||
description | description | |||
"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."; | |||
authentication."; | reference | |||
reference "RFC 7166: Supporting Authentication | "RFC 7166: Supporting Authentication Trailer for OSPFv3"; | |||
Trailer for OSPFv3"; | ||||
} | } | |||
feature fast-reroute { | feature fast-reroute { | |||
description | description | |||
"Support for IP Fast Reroute (IP-FRR)."; | "Support for IP Fast Reroute (IP-FRR)."; | |||
reference "RFC 5714: IP Fast Reroute Framework"; | reference | |||
"RFC 5714: IP Fast Reroute Framework"; | ||||
} | } | |||
feature key-chain { | feature key-chain { | |||
description | description | |||
"Support of keychain for authentication."; | "Support of 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 advertisement 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-Scope 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-Scope 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-Scope 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 an 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 an 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 an 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."; | |||
} | } | |||
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 Options."; | |||
} | } | |||
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. Only used in type-7 LSAs. 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-bit { | |||
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-bit { | |||
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 to a route that 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-LSA 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 another router."; | |||
} | } | |||
enum transit-network-link { | enum transit-network-link { | |||
value "2"; | value 2; | |||
description | description | |||
"Link to transit network identified by | "Link to a 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 a 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; | |||
description | description | |||
"Restart not attempted."; | "Restart not attempted."; | |||
} | } | |||
enum in-progress { | enum in-progress { | |||
value "2"; | value 2; | |||
description | description | |||
"Restart in progress."; | "Restart in progress."; | |||
} | } | |||
enum completed { | enum completed { | |||
value "3"; | value 3; | |||
description | description | |||
"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 graceful restart attempt. | |||
graceful restart, either by itself or acting | The local router is being restarted or acting as a helper."; | |||
as a helper."; | ||||
} | } | |||
typedef packet-type { | typedef packet-type { | |||
type enumeration { | type enumeration { | |||
enum hello { | enum hello { | |||
value "1"; | value 1; | |||
description | description | |||
"OSPF Hello packet."; | "OSPF Hello packet."; | |||
} | } | |||
enum database-description { | enum database-description { | |||
value "2"; | value 2; | |||
description | description | |||
"OSPF Database Description packet."; | "OSPF Database Description packet."; | |||
} | } | |||
enum link-state-request { | enum link-state-request { | |||
value "3"; | value 3; | |||
description | description | |||
"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; | |||
description | description | |||
"NSSA translator enabled state."; | "NSSATranslatorState is 'enabled'."; | |||
} | } | |||
enum elected { | enum elected { | |||
value "2"; | value 2; | |||
description | description | |||
"NSSA translator elected state."; | "NSSATranslatorState is 'elected'."; | |||
} | } | |||
enum disabled { | enum disabled { | |||
value "3"; | value 3; | |||
description | description | |||
"NSSA translator disabled state."; | "NSSATranslatorState is 'disabled'."; | |||
} | } | |||
} | } | |||
description | description | |||
"OSPF NSSA translator state type."; | "OSPF NSSA translator state type."; | |||
reference | ||||
"RFC 3101: The OSPF Not-So-Stubby Area (NSSA) Option"; | ||||
} | } | |||
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-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 | "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 | |||
"Topology 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."; | "IPv4 Forwarding address."; | |||
} | } | |||
leaf external-route-tag { | leaf external-route-tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Route tag for the topology."; | "Route tag for the topology."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container opaque { | container opaque { | |||
when "derived-from(../../header/type, " | when "derived-from(../../header/type, " | |||
+ "'ospfv2-opaque-lsa-type')" { | + "'ospfv2-opaque-lsa-type')" { | |||
description | description | |||
"Only applies to Opaque LSAs."; | "Only applies to Opaque-LSAs."; | |||
} | } | |||
description | description | |||
"Opaque LSA."; | "Opaque-LSA."; | |||
container ri-opaque { | container ri-opaque { | |||
description "OSPF Router Information (RI) opaque LSA."; | description | |||
reference "RFC 7770: OSPF Router Capabilities"; | "OSPF Router-Information-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 Admin Tag TLVs."; | |||
list node-tag-tlv { | list node-tag-tlv { | |||
description | description | |||
"Node tag TLV."; | "Node Admin 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 TLV."; | ||||
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 Discriminator TLV."; | ||||
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 Node MSD TLV."; | ||||
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 Node MSD TLV."; | ||||
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 Options. 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 Options. 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-LSA or NSSA-LSA."; | |||
leaf metric { | leaf metric { | |||
type ospf-metric; | type ospf-metric; | |||
description "Metric"; | description | |||
"AS-External-LSA or NSSA-LSA 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 | |||
"AS-External-LSA or NSSA-LSA 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 (LS) Type."; | ||||
reference | ||||
"RFC 5340: OSPF for IPv6"; | ||||
} | } | |||
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 LS Type."; | |||
} | } | |||
uses ospfv3-lsa-prefix; | uses ospfv3-lsa-prefix; | |||
leaf forwarding-address { | leaf forwarding-address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"Forwarding address."; | "IPv6 Forwarding address."; | |||
} | } | |||
leaf external-route-tag { | leaf external-route-tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Route tag."; | "Route tag."; | |||
} | } | |||
leaf referenced-link-state-id { | leaf referenced-link-state-id { | |||
type 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 - Reserved for OSPFv3 Links | |||
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 LS 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 LS 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 uint16; | |||
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 Admin Tag TLVs."; | |||
list node-tag-tlv { | list node-tag-tlv { | |||
description | description | |||
"Node tag tlv."; | "Node Admin 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 TLV."; | ||||
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 Discriminator TLV."; | ||||
uses sbfd-discriminator-tlv; | uses sbfd-discriminator-tlv; | |||
} | } | |||
description "Router Information LSA."; | ||||
reference "RFC 7770: Extensions for Advertising Router | description | |||
Capabilities"; | "Router-Information-LSA."; | |||
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 Options. 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-LSA type."; | ||||
} | } | |||
leaf opaque-id { | leaf opaque-id { | |||
type opaque-id; | type opaque-id; | |||
description "Opaque ID."; | description | |||
"Opaque-LSA 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, except for | |||
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 modulo 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 modulo 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 AS Boundary Routers (ASBRs) | |||
reachable within this area."; | ||||
} | } | |||
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 modulo 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 modulo 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 modulo 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 modulo 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."; | "An alternate based on Topology-Independent | |||
Loop-Free Alternate (TI-LFA)."; | ||||
} | } | |||
enum mrt { | enum mrt { | |||
description | description | |||
"MRT alternate."; | "An alternate based on Maximally Redundant Trees | |||
(MRTs)."; | ||||
} | } | |||
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-metric-1 { | |||
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-metric-2 { | |||
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-metric-3 { | |||
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 3900 ¶ | skipping to change at line 3962 ¶ | |||
"Total prefixes that are node protected."; | "Total prefixes that are node protected."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping interface-fast-reroute-config { | grouping interface-fast-reroute-config { | |||
description | description | |||
"This group defines interface configuration of IP-FRR."; | "This group defines interface configuration of IP-FRR."; | |||
container fast-reroute { | container fast-reroute { | |||
if-feature fast-reroute; | if-feature "fast-reroute"; | |||
container lfa { | container lfa { | |||
if-feature lfa; | if-feature "lfa"; | |||
leaf candidate-enable { | leaf candidate-enabled { | |||
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 enabled { | |||
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 enabled { | |||
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 | |||
leaf enable { | "Time to Live (TTL) security checking."; | |||
leaf enabled { | ||||
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 enabled { | |||
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"; | "Security Association (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 normal OSPF interfaces (not virtual | ||||
or sham 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 | "Interface 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 interface 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 5880: Bidirectional Forwarding Detection (BFD) | |||
published RFC number for draft-ietf-bfd-yang."; | RFC 5881: Bidirectional Forwarding Detection | |||
(BFD) for IPv4 and IPv6 (Single Hop) | ||||
RFC 9314: YANG Data Model for Bidirectional Forwarding | ||||
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 or NSSA."; | |||
} | } | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable/Disable summary advertisement into the stub or | "Enables/disables 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; | |||
} | } | |||
default normal-area; | default "normal-area"; | |||
description | description | |||
"Area type."; | "Area type."; | |||
} | } | |||
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."; | |||
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 | |||
"OSPF instance's Local 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"; | description | |||
description "List of next hops for the route"; | "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"; | |||
default "50"; | ||||
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"; | |||
default "200"; | ||||
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"; | |||
default "5000"; | ||||
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"; | |||
default "10000"; | ||||
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"; | |||
default "500"; | ||||
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 network event (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."; | |||
reference | ||||
"RFC 8405: Shortest Path First (SPF) Back-Off Delay Algorithm | ||||
for Link-State IGPs"; | ||||
} | } | |||
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 node 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 enabled { | |||
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 4865 ¶ | skipping to change at line 4998 ¶ | |||
type uint8; | type uint8; | |||
description | description | |||
"Preference for both intra-area and | "Preference for both intra-area and | |||
inter-area routes."; | inter-area routes."; | |||
} | } | |||
} | } | |||
} | } | |||
leaf external { | leaf external { | |||
type uint8; | type uint8; | |||
description | description | |||
"Preference for AS external routes."; | "Preference for AS external and NSSA 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 enabled { | |||
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 | |||
leaf enable { | RFC 5187: OSPFv3 Graceful Restart"; | |||
leaf enabled { | ||||
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-enabled { | |||
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 enabled { | |||
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 "../enabled = '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 a 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 a 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 or 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 5133 ¶ | skipping to change at line 5285 ¶ | |||
"OSPF multi-topology operational state."; | "OSPF multi-topology operational state."; | |||
uses local-rib; | uses local-rib; | |||
} | } | |||
grouping multi-topology-interface-config { | grouping multi-topology-interface-config { | |||
description | description | |||
"OSPF multi-topology configuration state."; | "OSPF multi-topology configuration state."; | |||
leaf cost { | leaf cost { | |||
type 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"; | default "0"; | |||
} | ||||
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 uint32; | |||
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 | |||
and NSSA 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 { | |||
when "derived-from-or-self(../../rt:type, 'ospfv3')" { | ||||
description "Only applicable to OSPFv3."; | ||||
} | ||||
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 OSPF 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()]" | |||
+ "'normal-area') and " | + "/area-type, 'normal-area') and " | |||
+ "../../../../area[area-id=current()]/area-id != " | + "../../../../area[area-id=current()]" | |||
+ "'0.0.0.0'" { | + "/area-id != '0.0.0.0'" { | |||
error-message "Virtual link transit area must " | error-message "The virtual link transit area must " | |||
+ "be non-zero."; | + "not be the backbone area."; | |||
description | description | |||
"Virtual-link transit area must be | "The virtual link transit area must not be the | |||
non-zero area."; | backbone area (0.0.0.0)."; | |||
} | } | |||
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 OSPF 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 5433 ¶ | skipping to change at line 5595 ¶ | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/ospf" { | + "rt:control-plane-protocol/ospf" { | |||
when "derived-from(../rt:type, 'ospf')" { | when "derived-from(../rt:type, 'ospf')" { | |||
description | description | |||
"This augmentation is only valid for OSPF | "This augmentation is only valid for OSPF | |||
(type 'ospfv2' or 'ospfv3')."; | (type 'ospfv2' or 'ospfv3')."; | |||
} | } | |||
if-feature multi-topology; | if-feature "multi-topology"; | |||
description | description | |||
"OSPF multi-topology instance configuration | "OSPF multi-topology instance configuration | |||
state augmentation."; | state augmentation."; | |||
container topologies { | container topologies { | |||
description "All topologies."; | description | |||
"All topologies."; | ||||
list topology { | list topology { | |||
key "name"; | key "name"; | |||
description | description | |||
"OSPF topology - The OSPF topology address-family | "OSPF topology. The OSPF topology address family | |||
must coincide with the routing-instance | must coincide with the routing instance's | |||
address-family."; | address family."; | |||
leaf name { | leaf name { | |||
type leafref { | type leafref { | |||
path "../../../../../../rt:ribs/rt:rib/rt:name"; | path "../../../../../../rt:ribs/rt:rib/rt:name"; | |||
} | } | |||
description "RIB name corresponding to the OSPF | description | |||
topology."; | "RIB name corresponding to the OSPF topology."; | |||
} | } | |||
uses multi-topology-state; | uses multi-topology-state; | |||
} | } | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/ospf/" | + "rt:control-plane-protocol/ospf/" | |||
+ "areas/area" { | + "areas/area" { | |||
when "derived-from-or-self(../../../rt:type, " | when "derived-from-or-self(../../../rt:type, " | |||
+ "'ospfv2')" { | + "'ospfv2')" { | |||
description | description | |||
"This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
} | } | |||
if-feature multi-topology; | if-feature "multi-topology"; | |||
description | description | |||
"OSPF multi-topology area configuration state | "OSPF multi-topology area configuration state | |||
augmentation."; | augmentation."; | |||
container topologies { | container topologies { | |||
description "All topologies for the area."; | description | |||
"All topologies for the area."; | ||||
list topology { | list topology { | |||
key "name"; | key "name"; | |||
description "OSPF area topology."; | description | |||
"OSPF area topology."; | ||||
leaf name { | leaf name { | |||
type leafref { | type leafref { | |||
path "../../../../../../../../" | path "../../../../../../../../" | |||
+ "rt:ribs/rt:rib/rt:name"; | + "rt:ribs/rt:rib/rt:name"; | |||
} | } | |||
description | description | |||
"Single topology enabled for this area."; | "Single topology enabled for this area."; | |||
} | } | |||
uses multi-topology-area-config; | uses multi-topology-area-config; | |||
skipping to change at line 5497 ¶ | skipping to change at line 5662 ¶ | |||
} | } | |||
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, " | |||
+ "'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 5696 ¶ | |||
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 5741 ¶ | |||
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 values | |||
value."; | indicating the error."; | |||
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 Link State | |||
Database. If the operation fails for OSPF internal reason, | Database. Additionally, all neighbor adjacencies will | |||
then error-tag and error-app-tag should be set to a | be forced to the DOWN state and self-originated LSAs | |||
meaningful value."; | will be reoriginated. If the operation fails for an | |||
OSPF-internal reason, then 'error-tag' and 'error-app-tag' | ||||
should be set to values indicating the error."; | ||||
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 a packet is received indicating | |||
config error is detected."; | an interface configuration error on the sending OSPF router."; | |||
} | } | |||
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-LSA 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-LSA 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 | |||
in the router's role in translating OSPF NSSA LSAs | in the router's role in translating OSPF NSSA-LSAs | |||
to OSPF AS-External LSAs."; | to OSPF AS-External-LSAs."; | |||
} | } | |||
notification restart-status-change { | notification restart-status-change { | |||
uses notification-instance-hdr; | uses notification-instance-hdr; | |||
leaf status { | leaf status { | |||
type restart-status-type; | type restart-status-type; | |||
description | description | |||
"Restart status."; | "Restart status."; | |||
} | } | |||
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 | |||
"Restart interval."; | "Restart interval."; | |||
} | } | |||
leaf exit-reason { | leaf exit-reason { | |||
type restart-exit-reason-type; | type restart-exit-reason-type; | |||
description | description | |||
"Restart exit reason."; | "Restart exit reason."; | |||
} | } | |||
description | description | |||
"This notification is sent when the graceful restart | "This notification is sent when the graceful restart | |||
state for the router has changed."; | state for the router has changed."; | |||
} | } | |||
} | } | |||
<CODE ENDS> | ]]></sourcecode> | |||
]]></artwork> | </section> | |||
</figure> | ||||
</t> | ||||
</section> | ||||
<!-- Possibly a 'Contributors' section ... --> | ||||
<section anchor="Security" title="Security Considerations"> | ||||
<t>The YANG modules specified in this document define a schema for | <section anchor="Security" numbered="true" toc="default"> | |||
data that is designed to be accessed via network | <name>Security Considerations</name> | |||
management protocols such as NETCONF <xref target="RFC6241"/> or | <t>The YANG module specified in this document defines a schema for data | |||
RESTCONF <xref target="RFC8040"/>. The lowest NETCONF layer is the secure | that is designed to be accessed via network management protocols such | |||
transport | as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. | |||
layer, and the mandatory-to-implement secure transport is Secure Shell (S | The lowest NETCONF layer is the secure transport layer, and the | |||
SH) | mandatory-to-implement secure transport is Secure Shell (SSH) | |||
<xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the | <xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the | |||
mandatory-to-implement secure transport is TLS <xref target="RFC8446"/>.< | mandatory-to-implement secure transport is TLS <xref target="RFC8446"/>.</t> | |||
/t> | <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> | ||||
<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> | ||||
<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>The NETCONF Access Control Model (NACM) <xref target="RFC8341"/> provides | <t>Writable data nodes represent the configuration of each instance, area, | |||
the | virtual link, sham link, and interface, and they correspond to the schema nodes | |||
means to restrict access for particular NETCONF or RESTCONF users to a | listed above.</t> | |||
pre-configured subset of all available NETCONF or RESTCONF protocol | ||||
operations and content.</t> | ||||
<t>There are a number of data nodes defined in ietf-ospf.yang module that are | <t>For OSPF, the ability to modify OSPF configuration will allow the entir | |||
writable/creatable/deletable (i.e., config true, which is the default). | e OSPF domain | |||
These data nodes may be considered sensitive or vulnerable in some network | to be compromised, including peering with unauthorized routers to | |||
environments. Write operations (e.g., edit-config) to these data nodes wit | ||||
hout | ||||
proper protection can have a negative effect on network operations. | ||||
Writable data node represent configuration of each instance, area, virtual | ||||
link, | ||||
sham-link, and interface. These correspond to the following schema nodes: | ||||
<list style="empty"> | ||||
<t>/ospf</t> | ||||
<t>/ospf/areas/</t> | ||||
<t>/ospf/areas/area[area-id]</t> | ||||
<t>/ospf/virtual-links/</t> | ||||
<t>/ospf/virtual-links/virtual-link[transit-area-id router-id]</t> | ||||
<t>/ospf/areas/area[area-id]/interfaces</t> | ||||
<t>/ospf/areas/area[area-id]/interfaces/interface[name]</t> | ||||
<t>/ospf/area/area[area-id]/sham-links</t> | ||||
<t>/ospf/area/area[area-id]/sham-links/sham-link[local-id remote-id]</t> | ||||
</list></t> | ||||
<t>For OSPF, | ||||
the ability to modify OSPF configuration will allow the entire OSPF domain | ||||
to be compromised including peering with unauthorized routers to | ||||
misroute traffic or mount a massive Denial-of-Service (DoS) attack. For 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 this YANG module may be considered | ||||
<t>Some of the readable data nodes in the ietf-ospf.yang module may be consid | sensitive or vulnerable in some network environments. It is thus important to | |||
ered | control read access (e.g., via get, get-config, or notification) to these data | |||
sensitive or vulnerable in some network environments. It is thus | nodes. These are the subtrees and data nodes and their | |||
important to control read access (e.g., via get, get-config, or notificati | sensitivity/vulnerability:</t> | |||
on) | <ul empty="true" spacing="normal"> | |||
to these data nodes. The exposure of the Link State Database (LSDB) will | <li>/ospf/database</li> | |||
expose the detailed topology of the network. There is a separate Link Stat | <li>/ospf/areas/area[area-id]/database</li> | |||
e | <li>/ospf/virtual-links/virtual-link[transit-area-id router-id]/database | |||
Database for each instance, area, virtual link, sham-link, and interface. | </li> | |||
These | <li>/ospf/areas/area[area-id]/interfaces/interface[name]/database</li> | |||
correspond to the following schema nodes: | <li>/ospf/area/area[area-id]/sham-links/sham-link[local-id remote-id]/da | |||
<list style="empty"> | tabase</li> | |||
<t>/ospf/database</t> | </ul> | |||
<t>/ospf/areas/area[area-id]/database</t> | <t>Exposure of the Link State Database (LSDB) will in turn | |||
<t>/ospf/virtual-links/virtual-link[transit-area-id router-id]/database</ | expose the detailed topology of the network. There is a separate LSDB for | |||
t> | each instance, area, virtual link, sham link, and interface. These | |||
<t>/ospf/areas/area[area-id]/interfaces/interface[name]/database</t> | correspond to the schema nodes listed above.</t> | |||
<t>/ospf/area/area[area-id]/sham-links/sham-link[local-id remote-id]/data | <t>Exposure of the LSDB includes information beyond the scope of the | |||
base</t> | OSPF router. This may be undesirable, since exposure may facilitate other | |||
</list></t> | attacks. | |||
<t>Exposure of the Link State Database includes information beyond the scope | ||||
of the | ||||
OSPF router and this may be undesirable since exposure may facilitate othe | ||||
r 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 | ||||
<t>For OSPF authentication, configuration is supported via the specification | on | |||
of key-chains <xref target="RFC8177"/> or the direct specification of | of key chains <xref target="RFC8177" format="default"/> or the direct spe | |||
key and authentication algorithm. Hence, authentication configuration | cification of a | |||
using the "auth-table-trailer" case in the "authentication" container | key and an authentication algorithm. Hence, authentication configuration | |||
inherits the security considerations of <xref target="RFC8177"/>. This | using the "auth-key-chain" case in the "ospfv2-auth-specification" or "os | |||
includes the considerations with respect to the local storage and | pfv3-auth-specification" container | |||
inherits the security considerations of <xref target="RFC8177" format="de | ||||
fault"/>. 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> | ||||
<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> | ||||
<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> | ||||
<t>Some of the RPC operations in this YANG module may be considered sensitive | <t>The actual authentication key data (whether locally specified or part o | |||
or | f a | |||
vulnerable in some network environments. It is thus important to control | key chain) is sensitive and needs to be kept secret from unauthorized | |||
access to these operations. The OSPF YANG module supports the "clear-neigh | ||||
bor" | ||||
and "clear-database" RPCs. If access to either of these is compromised, th | ||||
ey | ||||
can result in temporary network outages be employed to mount DoS attacks.< | ||||
/t> | ||||
<t>The actual authentication key data (whether locally specified or part of a | ||||
key-chain) is sensitive and needs to be kept secret from unauthorized | ||||
parties; compromise of the key data would allow an attacker to forge OSPF | 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-rfc9127-bis (RFC 9314; pub. Sept. 2022) --> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.9314.xml"/> | ||||
</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"/> | ||||
</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"/>, <contact fullname="Alan Davey"/>, and | ||||
<contact fullname="Renato Westphal"/> for their 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> | ||||
<!-- *****BACK MATTER ***** --> | <contact fullname="Dean Bogdanovic"> | |||
<organization>Volta Networks, Inc.</organization> | ||||
<back> | <address> | |||
<!-- References split into informative and normative --> | <postal> | |||
<street></street> | ||||
<!-- There are 2 ways to insert reference entries from the citation librarie | <city></city> | |||
s: | <region></region><code></code> | |||
1. define an ENTITY at the top, and use "ampersand character"RFC2629; here | <country></country> | |||
(as shown) | </postal> | |||
2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xm | <email>dean@voltanet.io</email> | |||
l"?> here | </address> | |||
(for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis. | </contact> | |||
xml") | <contact fullname="Kiran Koushik Agrahara Sreenivasa"> | |||
<organization>Verizon</organization> | ||||
Both are cited textually in the same manner: by using xref elements. | <address> | |||
If you use the PI option, xml2rfc will, by default, try to find included fi | <postal> | |||
les in the same | <street>500 W Dove Rd</street> | |||
directory as the including file. You can also define the XML_LIBRARY enviro | <city>Southlake</city> | |||
nment variable | <region>TX</region> | |||
with a value containing a set of directories to search. These can be eithe | <code>76092</code> | |||
r in the local | <country>United States of America</country> | |||
filing system or remote ones accessed by http (http://domain/dir/... ).--> | </postal> | |||
<email>kk@employees.org</email> | ||||
<references title="Normative References"> | </address> | |||
<!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC. | </contact> | |||
2119.xml"?--> | </section> | |||
&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 | ||||
Volta Networks, Inc. | ||||
EMail: dean@voltanet.io | ||||
Kiran Koushik Agrahara Sreenivasa | ||||
Verizon | ||||
500 W Dove Rd | ||||
Southlake, TX 76092 | ||||
USA | ||||
EMail: kk@employees.org | ||||
</artwork> | ||||
</figure> | ||||
</section> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 963 change blocks. | ||||
1964 lines changed or deleted | 2241 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |