rfc8695xml2.original.xml | rfc8695.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="utf-8"?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
<!ENTITY RFC1724 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.1724.xml"> | ||||
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.2119.xml"> | ||||
<!ENTITY RFC2453 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.2453.xml"> | ||||
<!ENTITY RFC2080 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.2080.xml"> | ||||
<!ENTITY RFC3688 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.3688.xml"> | ||||
<!ENTITY RFC6241 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.6241.xml"> | ||||
<!ENTITY RFC6242 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.6242.xml"> | ||||
<!ENTITY RFC6991 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.6991.xml"> | ||||
<!ENTITY RFC7950 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.7950.xml"> | ||||
<!ENTITY RFC8040 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8040.xml"> | ||||
<!ENTITY RFC8177 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8177.xml"> | ||||
<!ENTITY RFC8341 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8341.xml"> | ||||
<!ENTITY RFC8342 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8342.xml"> | ||||
<!ENTITY RFC8343 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8343.xml"> | ||||
<!ENTITY RFC8344 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8344.xml"> | ||||
<!ENTITY RFC8349 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8349.xml"> | ||||
<!ENTITY RFC8446 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8446.xml"> | ||||
<!ENTITY RFC7951 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.7951.xml"> | ||||
<!ENTITY RFC8340 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8340.xml"> | ||||
<!ENTITY RFC8407 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8407.xml"> | ||||
<!ENTITY I-D.ietf-netconf-subscribed-notifications SYSTEM "https://xml2rfc.ietf. | ||||
org/public/rfc/bibxml3/reference.I-D.draft-ietf-netconf-subscribed-notifications | ||||
-26.xml"> | ||||
<!ENTITY I-D.ietf-netconf-yang-push SYSTEM "https://xml2rfc.ietf.org/public/rfc/ | ||||
bibxml3/reference.I-D.draft-ietf-netconf-yang-push-25.xml"> | ||||
<!ENTITY I-D.ietf-bfd-yang SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml3/r | ||||
eference.I-D.draft-ietf-bfd-yang-17.xml"> | ||||
<!ENTITY I-D.ietf-isis-yang-isis-cfg SYSTEM "https://xml2rfc.ietf.org/public/rfc | ||||
/bibxml3/reference.I-D.draft-ietf-isis-yang-isis-cfg-35.xml"> | ||||
<!ENTITY I-D.ietf-ospf-yang SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml3/ | ||||
reference.I-D.draft-ietf-ospf-yang-28.xml"> | ||||
]> | ||||
<rfc submissionType="IETF" docName="draft-ietf-rtgwg-yang-rip-11" category="std" | ||||
ipr="trust200902"> | ||||
<!-- Generated by id2xml 1.5.0 on 2019-09-19T15:48:20Z --> | ||||
<?rfc compact="yes"?> | ||||
<?rfc text-list-symbols="o*+-"?> | ||||
<?rfc subcompact="no"?> | ||||
<?rfc sortrefs="no"?> | ||||
<?rfc symrefs="yes"?> | ||||
<?rfc strict="yes"?> | ||||
<?rfc toc="yes"?> | ||||
<front> | ||||
<title abbrev="A YANG Data Model for Routing Informatio">A YANG Data Mode | ||||
l for Routing Information Protocol (RIP)</title> | ||||
<author fullname="Xufeng Liu" initials="X." surname="Liu"> | ||||
<organization>Volta Networks</organization> | ||||
<address><email>xufeng.liu.ietf@gmail.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Prateek Sarda" initials="P." surname="Sarda"> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
<organization>Ericsson</organization> | ||||
<address><postal><street>Fern Icon, Survey No 28 and 36/5, Doddanakundi V | ||||
illage</street> | ||||
<street>Bangalore Karnataka 560037</street> | ||||
<street>India</street> | ||||
</postal> | ||||
<email>prateek.sarda@ericsson.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Vikram Choudhary" initials="V." surname="Choudhary"> | <rfc | |||
<organization>Individual</organization> | xmlns:xi="http://www.w3.org/2001/XInclude" | |||
<address><postal><street>Bangalore 560066</street> | submissionType="IETF" | |||
<street>India</street> | category="std" | |||
</postal> | consensus="true" | |||
<email>vikschw@gmail.com</email> | docName="draft-ietf-rtgwg-yang-rip-11" | |||
</address> | number="8695" | |||
</author> | ipr="trust200902" | |||
obsoletes="" | ||||
updates="" | ||||
xml:lang="en" | ||||
sortRefs="false" | ||||
symRefs="true" | ||||
tocInclude="true" | ||||
version="3"> | ||||
<date month="September" year="2019"/> | <!-- xml2rfc v2v3 conversion 2.30.0 --> | |||
<abstract><t> | <!-- Generated by id2xml 1.5.0 on 2019-09-19T15:48:20Z --> | |||
<front> | ||||
<title abbrev="A YANG Data Model for RIP">A YANG Data Model for the Routing | ||||
Information Protocol (RIP)</title> | ||||
<seriesInfo name="RFC" value="8695" /> | ||||
<author fullname="Xufeng Liu" initials="X." surname="Liu"> | ||||
<organization>Volta Networks</organization> | ||||
<address> | ||||
<email>xufeng.liu.ietf@gmail.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Prateek Sarda" initials="P." surname="Sarda"> | ||||
<organization>Ericsson</organization> | ||||
<address> | ||||
<postal> | ||||
<street>Fern Icon, Survey No 28 and 36/5, Doddanakundi Village</street | ||||
> | ||||
<city>Bangalore</city> | ||||
<region>Karnataka</region> | ||||
<code>560037</code> | ||||
<country>India</country> | ||||
</postal> | ||||
<email>prateek.sarda@ericsson.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Vikram Choudhary" initials="V." surname="Choudhary"> | ||||
<organization>Individual</organization> | ||||
<address> | ||||
<postal> | ||||
<city>Bangalore</city> | ||||
<code>560066</code> | ||||
<country>India</country> | ||||
</postal> | ||||
<email>vikschw@gmail.com</email> | ||||
</address> | ||||
</author> | ||||
<date month="February" year="2020"/> | ||||
<keyword>YANG</keyword> | ||||
<keyword>RIP</keyword> | ||||
<keyword>RIPng</keyword> | ||||
<keyword>data model</keyword> | ||||
<keyword>ietf-rip</keyword> | ||||
<keyword>network management</keyword> | ||||
<keyword>routing</keyword> | ||||
<abstract> | ||||
<t> | ||||
This document describes a data model for the management of the | This document describes a data model for the management of the | |||
Routing Information Protocol (RIP). Both RIP version 2 and RIPng are | Routing Information Protocol (RIP). Both RIP version 2 and RIPng are | |||
covered. The data model includes definitions for configuration, | covered. The data model includes definitions for configuration, | |||
operational state, and Remote Procedure Calls (RPCs).</t> | operational state, and Remote Procedure Calls (RPCs).</t> | |||
<t> | ||||
<t> | The YANG data model in this document conforms to the Network Management | |||
The YANG model in this document conforms to the Network Management | ||||
Datastore Architecture (NMDA).</t> | Datastore Architecture (NMDA).</t> | |||
</abstract> | ||||
</abstract> | </front> | |||
</front> | <middle> | |||
<section anchor="sect-1" numbered="true" toc="default"> | ||||
<middle> | <name>Introduction</name> | |||
<section title="Introduction" anchor="sect-1"><t> | <t> | |||
This document introduces a YANG <xref target="RFC7950"/> data model for the R | This document introduces a YANG <xref target="RFC7950" format="default"/> dat | |||
outing | a model for the Routing | |||
Information Protocol (RIP) <xref target="RFC2453"/><xref target="RFC2080"/>. | Information Protocol (RIP) <xref target="RFC2453" format="default"/><xref tar | |||
RIP was designed to | get="RFC2080" format="default"/>. RIP was designed to | |||
work as an Interior Gateway Protocol (IGP) in moderate-size | work as an Interior Gateway Protocol (IGP) in moderate-size | |||
Autonomous Systems (AS).</t> | Autonomous Systems (AS).</t> | |||
<t> | ||||
<t> | This YANG data model supports both RIP version 2 and RIPng. RIP version 2 | |||
This YANG model supports both RIP version 2 and RIPng. RIP version 2 | (defined in <xref target="RFC2453" format="default"/>) supports IPv4. RIPng | |||
(defined in <xref target="RFC2453"/>) supports IPv4. RIPng (defined in <xref | (defined in <xref target="RFC2080" format="default"/>) | |||
target="RFC2080"/>) | ||||
supports IPv6.</t> | supports IPv6.</t> | |||
<section anchor="sect-1.1" numbered="true" toc="default"> | ||||
<section title="Terminology" anchor="sect-1.1"><t> | <name>Terminology</name> | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <t> | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
document are to be interpreted as described in <xref target="RFC2119"/>.</t> | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | ||||
<t> | RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
The following terms are defined in <xref target="RFC7950"/> and are not redef | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
ined | be interpreted as | |||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
when, and only when, they appear in all capitals, as shown here. | ||||
</t> | ||||
<t> | ||||
The following terms are defined in <xref target="RFC7950" format="default"/> | ||||
and are not redefined | ||||
here:</t> | here:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li>augment</li> | |||
<li>data model</li> | ||||
<t>augment</t> | <li>data node</li> | |||
<t>data model</t> | </ul> | |||
<t>data node</t> | </section> | |||
<section anchor="sect-1.2" numbered="true" toc="default"> | ||||
</list> | <name>Tree Diagrams</name> | |||
</t> | <t> | |||
</section> | ||||
<section title="Tree Diagrams" anchor="sect-1.2"><t> | ||||
A simplified graphical representation of the data model is used in | A simplified graphical representation of the data model is used in | |||
this document. The meaning of the symbols in these diagrams is | this document. The meaning of the symbols in these diagrams is | |||
defined in <xref target="RFC8340"/>.</t> | defined in <xref target="RFC8340" format="default"/>.</t> | |||
</section> | ||||
</section> | <section anchor="sect-1.3" numbered="true" toc="default"> | |||
<name>Prefixes in Data Node Names</name> | ||||
<section title="Prefixes in Data Node Names" anchor="sect-1.3"><t> | <t> | |||
In this document, names of data nodes, actions, and other data model | In this document, names of data nodes, actions, and other data model | |||
objects are often used without a prefix, as long as it is clear from | objects are often used without a prefix, as long as it is clear from | |||
the context in which YANG module each name is defined. Otherwise, | the context in which YANG module each name is defined. Otherwise, | |||
names are prefixed using the standard prefix associated with the | names are prefixed using the standard prefix associated with the | |||
corresponding YANG module, as shown in Table 1.</t> | corresponding YANG module, as shown in <xref target="tab-prefixes-and-corresp | |||
onding-yang-modules" format="default"/>.</t> | ||||
<texttable title="Prefixes and Corresponding YANG Modules" anchor="tab-pr | <table anchor="tab-prefixes-and-corresponding-yang-modules" align="cente | |||
efixes-and-corresponding-yang-modules" style="full"><ttcol> Prefix</ttcol> | r"> | |||
<ttcol> YANG module</ttcol> | <name>Prefixes and Corresponding YANG Modules</name> | |||
<ttcol> Reference</ttcol> | <thead> | |||
<c>yang</c> | <tr> | |||
<c>ietf-yang-types</c> | <th align="left">Prefix</th> | |||
<c>[RFC6991]</c> | <th align="left">YANG module</th> | |||
<c>inet</c> | <th align="left">Reference</th> | |||
<c>ietf-inet-types</c> | </tr> | |||
<c>[RFC6991]</c> | </thead> | |||
<c>if</c> | <tbody> | |||
<c>ietf-interfaces</c> | <tr> | |||
<c>[RFC8343]</c> | <td align="left">yang</td> | |||
<c>ip</c> | <td align="left">ietf-yang-types</td> | |||
<c>ietf-ip</c> | <td align="left"><xref target="RFC6991" format="default"/></td> | |||
<c>[RFC8344]</c> | </tr> | |||
<c>rt</c> | <tr> | |||
<c>ietf-routing</c> | <td align="left">inet</td> | |||
<c>[RFC8349]</c> | <td align="left">ietf-inet-types</td> | |||
<c>bfd-types</c> | <td align="left"><xref target="RFC6991" format="default"/></td> | |||
<c>ietf-bfd-types</c> | </tr> | |||
<c>[I-D.ietf-bfd-yang]</c> | <tr> | |||
<c>isis</c> | <td align="left">if</td> | |||
<c>ietf-isis</c> | <td align="left">ietf-interfaces</td> | |||
<c>[I-D.ietf-isis-yang-isis-cfg]</c> | <td align="left"><xref target="RFC8343" format="default"/></td> | |||
<c>key-chain</c> | </tr> | |||
<c>ietf-key-chain</c> | <tr> | |||
<c>[RFC8177]</c> | <td align="left">ip</td> | |||
<c>ospf</c> | <td align="left">ietf-ip</td> | |||
<c>ietf-ospf</c> | <td align="left"><xref target="RFC8344" format="default"/></td> | |||
<c>[I-D.ietf-ospf-yang]</c> | </tr> | |||
</texttable> | <tr> | |||
</section> | <td align="left">rt</td> | |||
<td align="left">ietf-routing</td> | ||||
</section> | <td align="left"><xref target="RFC8349" format="default"/></td> | |||
</tr> | ||||
<tr> | ||||
<td align="left">bfd-types</td> | ||||
<td align="left">ietf-bfd-types</td> | ||||
<td align="left"><xref target="I-D.ietf-bfd-yang" format="default" | ||||
/></td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">isis</td> | ||||
<td align="left">ietf-isis</td> | ||||
<td align="left"><xref target="I-D.ietf-isis-yang-isis-cfg" format | ||||
="default"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">key-chain</td> | ||||
<td align="left">ietf-key-chain</td> | ||||
<td align="left"><xref target="RFC8177" format="default"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">ospf</td> | ||||
<td align="left">ietf-ospf</td> | ||||
<td align="left"><xref target="I-D.ietf-ospf-yang" format="default | ||||
"/></td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | ||||
</section> | ||||
<section anchor="sect-2" numbered="true" toc="default"> | ||||
<name>Design of the Data Model</name> | ||||
<section title="Design of the Data Model" anchor="sect-2"><section title= | <section anchor="sect-2.1" numbered="true" toc="default"> | |||
"Scope of the Model" anchor="sect-2.1"><t> | <name>Scope of the Data Model</name> | |||
The model covers RIP version 2 <xref target="RFC2453"/> and RIPng <xref targe | <t> | |||
t="RFC2080"/> | The data model covers RIP version 2 <xref target="RFC2453" format="default"/> | |||
and RIPng <xref target="RFC2080" format="default"/> | ||||
protocols. The model is designed to be implemented on a device where | protocols. The model is designed to be implemented on a device where | |||
RIP version 2 or RIPng is implemented, and can be used to:</t> | RIP version 2 or RIPng is implemented, and can be used to:</t> | |||
<ul spacing="normal"> | ||||
<li>Configure the RIP version 2 or RIPng protocol.</li> | ||||
<li>Manage the protocol operational behaviors.</li> | ||||
<li>Retrieve the protocol operational status.</li> | ||||
</ul> | ||||
<t> | ||||
The capabilities described in <xref target="RFC1724" format="default"/> are c | ||||
overed.</t> | ||||
</section> | ||||
<section anchor="sect-2.2" numbered="true" toc="default"> | ||||
<name>Relation to the Core Routing Framework</name> | ||||
<t> | ||||
This data model augments the core routing data model "ietf-routing" | ||||
specified in <xref target="RFC8349" format="default"/>.</t> | ||||
<t><list style="symbols"> | <sourcecode type="yangtree"><![CDATA[ | |||
+--rw routing | ||||
<t>Configure the RIP version 2 or RIPng protocol.</t> | +--rw router-id? | |||
<t>Manage the protocol operational behaviors.</t> | +--rw control-plane-protocols | |||
<t>Retrieve the protocol operational status.</t> | | +--rw control-plane-protocol* [type name] | |||
| +--rw type | ||||
</list> | | +--rw name | |||
</t> | | +--rw rip <= Augmented by this Model | |||
... | ||||
<t> | ]]></sourcecode> | |||
The capabilities describe in <xref target="RFC1724"/> are covered.</t> | <t> | |||
The "rip" container instantiates a RIP entity that supports | ||||
</section> | RIP version 2 or RIPng. Depending on the implementation of "ietf-routing", a | |||
RIP instance <bcp14>MAY</bcp14> belong to a logical router or network | ||||
<section title="Relation with Core Routing Framework" anchor="sect-2.2">< | ||||
t> | ||||
This model augments the core routing data model "ietf-routing" | ||||
specified in <xref target="RFC8349"/>.</t> | ||||
<figure><artwork><![CDATA[ | ||||
+--rw routing | ||||
+--rw router-id? | ||||
+--rw control-plane-protocols | ||||
| +--rw control-plane-protocol* [type name] | ||||
| +--rw type | ||||
| +--rw name | ||||
| +--rw rip <= Augmented by this Model | ||||
... | ||||
]]></artwork> | ||||
</figure> | ||||
<t> | ||||
The "rip" container instantiates a RIP protocol entity that supports | ||||
RIP version 2 or RIPng. Depending on the implementation of "ietf-routing", a | ||||
RIP instance MAY belong to a logical router or network | ||||
instance.</t> | instance.</t> | |||
</section> | ||||
<section anchor="sect-2.3" numbered="true" toc="default"> | ||||
<name>Protocol Configuration</name> | ||||
<t> | ||||
The data model structure for the protocol configuration is as shown below:</t | ||||
> | ||||
</section> | <sourcecode type="yangtree"><![CDATA[ | |||
augment /rt:routing/rt:control-plane-protocols/ | ||||
<section title="Protocol Configuration" anchor="sect-2.3"><t> | rt:control-plane-protocol: | |||
The model structure for the protocol configuration is as shown below:</t> | +--rw rip | |||
+--rw <per instance configuration> | ||||
<figure><artwork><![CDATA[ | +--rw interface* [interface] | |||
augment /rt:routing/rt:control-plane-protocols/ | +--rw interface if:interface-ref | |||
rt:control-plane-protocol: | +--rw <per interface configuration> | |||
+--rw rip | +--rw neighbors {explicit-neighbors}? | |||
+--rw <per instance configuration> | | +--rw neighbor* [address] | |||
+--rw interface* [interface] | | +--rw address inet:ip-address | |||
+--rw interface if:interface-ref | | +--rw <per neighbor configuration> | |||
+--rw <per interface configuration> | ]]></sourcecode> | |||
+--rw neighbors {explicit-neighbors}? | <t>The data model allows the configuration of the following protocol ent | |||
| +--rw neighbor* [address] | ities:</t> | |||
| +--rw address inet:ip-address | <ul spacing="normal"> | |||
| +--rw <per neighbor configuration> | <li>Protocol instance (RIP version 2 or RIPng)</li> | |||
<li>Interface</li> | ||||
]]></artwork> | <li>Neighbor</li> | |||
</figure> | </ul> | |||
</section> | ||||
<t>The model allows to configure the following protocol entities:</t> | <section anchor="sect-2.4" numbered="true" toc="default"> | |||
<name>Protocol States</name> | ||||
<t><list style="symbols"> | <t> | |||
The data model structure for the protocol states is as shown below:</t> | ||||
<t>Protocol instance (RIP version 2 or RIPng)</t> | ||||
<t>Interface</t> | ||||
<t>Neighbor</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
<section title="Protocol States" anchor="sect-2.4"><t> | ||||
The model structure for the protocol states is as shown below:</t> | ||||
<figure><artwork><![CDATA[ | <sourcecode type="yangtree"><![CDATA[ | |||
augment /rt:routing/rt:control-plane-protocols/ | augment /rt:routing/rt:control-plane-protocols/ | |||
rt:control-plane-protocol: | rt:control-plane-protocol: | |||
+--rw rip | +--rw rip | |||
+--ro <per instance operational states> | +--ro <per instance operational states> | |||
+--rw interface* [interface] | +--rw interface* [interface] | |||
| +--rw interface if:interface-ref | | +--rw interface if:interface-ref | |||
| +--ro <per instance operational states> | | +--ro <per instance operational states> | |||
| +--ro statistics {interface-statistics}? | | +--ro statistics {interface-statistics}? | |||
| +--ro <per instance statistics> | | +--ro <per instance statistics> | |||
+--ro ipv4 | +--ro ipv4 | |||
| +--ro neighbors | | +--ro neighbors | |||
| | +--ro neighbor* [ipv4-address] | | | +--ro neighbor* [ipv4-address] | |||
| | +--ro <per neighbor IPv4 operational states> | | | +--ro <per neighbor IPv4 operational states> | |||
| +--ro routes | | +--ro routes | |||
| +--ro route* [ipv4-prefix] | | +--ro route* [ipv4-prefix] | |||
| +--ro <IPv4 RIP route states> | | +--ro <IPv4 RIP route states> | |||
+--ro ipv6 | +--ro ipv6 | |||
| +--ro neighbors | | +--ro neighbors | |||
| | +--ro neighbor* [ipv6-address] | | | +--ro neighbor* [ipv6-address] | |||
| | +--ro <per neighbor IPv6 operational states> | | | +--ro <per neighbor IPv6 operational states> | |||
| +--ro routes | | +--ro routes | |||
| +--ro route* [ipv6-prefix] | | +--ro route* [ipv6-prefix] | |||
| +--ro ipv6-prefix inet:ipv6-prefix | | +--ro ipv6-prefix inet:ipv6-prefix | |||
| +--ro <IPv4 RIP route states> | | +--ro <IPv4 RIP route states> | |||
+--ro statistics {global-statistics}? | +--ro statistics {global-statistics}? | |||
+--ro <per instance statistics> | +--ro <per instance statistics> | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | <t> | |||
<t> | ||||
This model conforms to the Network Management Datastore Architecture | This model conforms to the Network Management Datastore Architecture | |||
(NMDA) <xref target="RFC8342"/>. The operational state data is combined with | (NMDA) <xref target="RFC8342" format="default"/>. The operational state data | |||
the | is combined with the | |||
associated configuration data in the same hierarchy <xref target="RFC8407"/>. | associated configuration data in the same hierarchy <xref target="RFC8407" fo | |||
When | rmat="default"/>. When | |||
protocol states are retrieved from the NMDA operational state | protocol states are retrieved from the NMDA operational state | |||
datastore, the returned states cover all "config true" (rw) and | datastore, the returned states cover all "config true" (rw) and | |||
"config false" (ro) nodes defined in the schema.</t> | "config false" (ro) nodes defined in the schema.</t> | |||
<t>The model allows the retrieval of protocol states at the following le | ||||
<t>The model allows to retrieve protocol states at the following levels:< | vels:</t> | |||
/t> | <ul spacing="normal"> | |||
<li>Protocol instance (RIP version 2 or RIPng)</li> | ||||
<t><list style="symbols"> | <li>Interface</li> | |||
<li>Neighbor</li> | ||||
<t>Protocol instance (RIP version 2 or RIPng)</t> | <li>Route</li> | |||
<t>Interface</t> | </ul> | |||
<t>Neighbor</t> | </section> | |||
<t>Route</t> | <section anchor="sect-2.5" numbered="true" toc="default"> | |||
<name>RPC Operations</name> | ||||
</list> | <t> | |||
</t> | ||||
</section> | ||||
<section title="RPC Operations" anchor="sect-2.5"><t> | ||||
This model defines one RPC "clear-rip-route" that can be used to | This model defines one RPC "clear-rip-route" that can be used to | |||
clear RIP routes from the routing table.</t> | clear RIP routes from the routing table.</t> | |||
</section> | ||||
</section> | <section anchor="sect-2.6" numbered="true" toc="default"> | |||
<name>Notifications</name> | ||||
<section title="Notifications" anchor="sect-2.6"><t> | <t> | |||
This model does not define RIP specific notifications. To enable | This model does not define RIP-specific notifications. To enable | |||
notifications, the mechanism defined in | notifications, the mechanisms defined in | |||
[I-D.ietf-netconf-subscribed-notifications] and | <xref target="RFC8639" format="default"/> and | |||
[I-D.ietf-netconf-yang-push] can be used. This mechanism currently | <xref target="RFC8641" format="default"/> can be used. This mechanism curren | |||
allows the user to: </t> | tly | |||
allows the user to do the following: </t> | ||||
<t><list style="symbols"> | <ul spacing="normal"> | |||
<li>Subscribe to notifications on a per-client basis.</li> | ||||
<t>Subscribe notifications on a per client basis.</t> | <li>Specify subtree filters or XML Path Language (XPath) filters so th | |||
<t>Specify subtree filters or xpath filters so that only interested | at only interested | |||
contents will be sent.</t> | contents will be sent.</li> | |||
<t>Specify either periodic or on-demand notifications.</t> | <li>Specify either periodic or on-demand notifications.</li> | |||
</ul> | ||||
</list> | </section> | |||
</t> | <section anchor="sect-2.7" numbered="true" toc="default"> | |||
<name>Optional Features</name> | ||||
</section> | <t> | |||
This model defines several features that are beyond the basic RIP | ||||
<section title="Optional Features" anchor="sect-2.7"><t> | configuration, and it is the responsibility of each vendor to decide | |||
This model defines several features are beyond the basic RIP | ||||
configuration and it is the responsibility of each vendor to decide | ||||
whether to support a given feature on a device.</t> | whether to support a given feature on a device.</t> | |||
</section> | ||||
</section> | </section> | |||
<section anchor="sect-3" numbered="true" toc="default"> | ||||
</section> | <name>Tree Structure</name> | |||
<t> | ||||
<section title="Tree Structure" anchor="sect-3"><t> | ||||
This document defines the YANG module "ietf-rip", which has the | This document defines the YANG module "ietf-rip", which has the | |||
following tree structure:</t> | following tree structure:</t> | |||
<figure><artwork><![CDATA[ | <sourcecode type="yangtree"><![CDATA[ | |||
module: ietf-rip | module: ietf-rip | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol: | /rt:control-plane-protocol: | |||
+--rw rip | +--rw rip | |||
+--rw originate-default-route | +--rw originate-default-route | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
| +--rw route-policy? route-policy-ref | | +--rw route-policy? route-policy-ref | |||
+--rw default-metric? uint8 | +--rw default-metric? uint8 | |||
+--rw distance? uint8 | +--rw distance? uint8 | |||
+--rw triggered-update-threshold? uint8 | +--rw triggered-update-threshold? uint8 | |||
skipping to change at line 502 ¶ | skipping to change at line 505 ¶ | |||
+--ro discontinuity-time? yang:date-and-time | +--ro discontinuity-time? yang:date-and-time | |||
+--ro requests-rcvd? yang:counter32 | +--ro requests-rcvd? yang:counter32 | |||
+--ro requests-sent? yang:counter32 | +--ro requests-sent? yang:counter32 | |||
+--ro responses-rcvd? yang:counter32 | +--ro responses-rcvd? yang:counter32 | |||
+--ro responses-sent? yang:counter32 | +--ro responses-sent? yang:counter32 | |||
rpcs: | rpcs: | |||
+---x clear-rip-route | +---x clear-rip-route | |||
+---w input | +---w input | |||
+---w rip-instance? leafref | +---w rip-instance? leafref | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </section> | |||
</section> | <section anchor="sect-4" numbered="true" toc="default"> | |||
<name>YANG Module</name> | ||||
<section title="YANG Module" anchor="sect-4"><figure><artwork><![CDATA[ | <sourcecode name="ietf-rip@2020-02-20.yang" type="yang" | |||
<CODE BEGINS> file "ietf-rip@2018-02-03.yang" | markers="true"><![CDATA[ | |||
module ietf-rip { | module ietf-rip { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-rip"; | namespace "urn:ietf:params:xml:ns:yang:ietf-rip"; | |||
prefix rip; | prefix rip; | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix "inet"; | prefix inet; | |||
} | } | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix "yang"; | prefix yang; | |||
} | } | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix "if"; | prefix if; | |||
} | } | |||
import ietf-ip { | import ietf-ip { | |||
prefix "ip"; | prefix ip; | |||
} | } | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix rt; | |||
} | } | |||
import ietf-key-chain { | import ietf-key-chain { | |||
prefix "key-chain"; | prefix key-chain; | |||
} | } | |||
import ietf-bfd-types { | import ietf-bfd-types { | |||
prefix "bfd-types"; | prefix bfd-types; | |||
} | } | |||
import ietf-ospf { | import ietf-ospf { | |||
prefix "ospf"; | prefix ospf; | |||
} | } | |||
import ietf-isis { | import ietf-isis { | |||
prefix "isis"; | prefix isis; | |||
} | } | |||
organization "IETF Routing Area Working Group (rtgwg)"; | organization | |||
"IETF Routing Area Working Group (rtgwg)"; | ||||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/rgtwg/> | "WG Web: <https://datatracker.ietf.org/wg/rtgwg/> | |||
WG List: <mailto:rgtwg@ietf.org> | WG List: <mailto:rgtwg@ietf.org> | |||
Editor: Xufeng Liu | Editor: Xufeng Liu | |||
<mailto:xufeng_liu@jabil.com> | <mailto:xufeng.liu.ietf@gmail.com> | |||
Editor: Prateek Sarda | Editor: Prateek Sarda | |||
<mailto:prateek.sarda@ericsson.com> | <mailto:prateek.sarda@ericsson.com> | |||
Editor: Vikram Choudhary | Editor: Vikram Choudhary | |||
<mailto:vikschw@gmail.com>"; | <mailto:vikschw@gmail.com>"; | |||
description | description | |||
"This YANG module defines a model for managing Routing | "This YANG module defines a model for managing Routing | |||
Information Protocol (RIP), including RIP version 2 and RIPng. | Information Protocol (RIP), including RIP version 2 and RIPng. | |||
Copyright (c) 2018 IETF Trust and the persons identified as | Copyright (c) 2020 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see the | This version of this YANG module is part of RFC 8695; see the | |||
RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
revision 2018-02-03 { | revision 2020-02-20 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for Routing Information Protocol | "RFC 8695: A YANG Data Model for Routing Information Protocol | |||
(RIP). | (RIP). | |||
RFC 2453: RIP Version 2. | RFC 2453: RIP Version 2. | |||
RFC 2080: RIPng for IPv6. | RFC 2080: RIPng for IPv6. | |||
RFC 1724: RIP Version 2 MIB Extension."; | RFC 1724: RIP Version 2 MIB Extension."; | |||
} | } | |||
/* | /* | |||
* Features | * Features | |||
*/ | */ | |||
feature bfd { | feature bfd { | |||
description | description | |||
"This feature indicates that the RIP implementation on the | "This feature indicates that the RIP implementation on the | |||
system supports BFD (Bidirectional Forwarding Detection)."; | system supports BFD (Bidirectional Forwarding Detection)."; | |||
} | } | |||
feature explicit-neighbors { | feature explicit-neighbors { | |||
description | description | |||
"This feature indicates that the system supports explicit | "This feature indicates that the system supports explicit | |||
neighbor configuration on a RIP interface."; | neighbor configuration on a RIP interface."; | |||
skipping to change at line 610 ¶ | skipping to change at line 606 ¶ | |||
feature explicit-neighbors { | feature explicit-neighbors { | |||
description | description | |||
"This feature indicates that the system supports explicit | "This feature indicates that the system supports explicit | |||
neighbor configuration on a RIP interface."; | neighbor configuration on a RIP interface."; | |||
} | } | |||
feature global-statistics { | feature global-statistics { | |||
description | description | |||
"This feature indicates that the system supports collecting | "This feature indicates that the system supports collecting | |||
global statistic data related to RIP."; | global statistics data related to RIP."; | |||
} | } | |||
feature interface-statistics { | feature interface-statistics { | |||
description | description | |||
"This feature indicates that the system supports collecting | "This feature indicates that the system supports collecting | |||
per-interface statistic data related to RIP."; | per-interface statistics data related to RIP."; | |||
} | } | |||
/* | /* | |||
* Typedefs | * Typedefs | |||
*/ | */ | |||
typedef prefix-set-ref { | typedef prefix-set-ref { | |||
type string; | type string; | |||
description | description | |||
"A type for a reference to a prefix set. | "A type for a reference to a prefix set. | |||
The string value is the name identifier for uniquely | The string value is the name identifier for uniquely | |||
identifying the referenced prefix set, which contains a list | identifying the referenced prefix set, which contains a list | |||
of prefixes that a routing policy can applied. The definition | of prefixes that a routing policy can applied. The definition | |||
of such a prefix set is outside the scope of this document."; | of such a prefix set is outside the scope of this document."; | |||
} | } | |||
typedef route-policy-ref { | typedef route-policy-ref { | |||
type string; | type string; | |||
description | description | |||
"A type for a reference to a route policy. | "A type for a reference to a route policy. | |||
The string value is the name identifier for uniquely | The string value is the name identifier for uniquely | |||
identifying the referenced routing policy, which contains one | identifying the referenced routing policy, which contains one | |||
or more policy rules that can be used for a routing decision. | or more policy rules that can be used for a routing decision. | |||
The definition of such a routing policy is outside the scope | The definition of such a routing policy is outside the scope | |||
of this document."; | of this document."; | |||
} | } | |||
/* | /* | |||
* Identities | * Identities | |||
*/ | */ | |||
identity rip { | identity rip { | |||
base rt:routing-protocol; | base rt:routing-protocol; | |||
description "Identity for the RIP routing protocol."; | description | |||
"Identity for the Routing Information Protocol."; | ||||
} | } | |||
identity ripv2 { | identity ripv2 { | |||
base rip:rip; | base rip:rip; | |||
description "Identity for RIPv2 (RIP version 2)."; | description | |||
"Identity for RIPv2 (RIP version 2)."; | ||||
} | } | |||
identity ripng { | identity ripng { | |||
base rip:rip; | base rip:rip; | |||
description "Identity for RIPng."; | description | |||
"Identity for RIPng."; | ||||
} | } | |||
/* | /* | |||
* Groupings | * Groupings | |||
*/ | */ | |||
grouping originate-default-route-container { | grouping originate-default-route-container { | |||
description | description | |||
"Containing settings whether to originate the default route | "Container for settings on whether to originate the default | |||
in RIP routing instance."; | route in RIP routing instance."; | |||
container originate-default-route { | container originate-default-route { | |||
description | description | |||
"Injects the default route into the RIP (RIPv2 or RIPng) | "Injects the default route into the RIP (RIPv2 or RIPng) | |||
routing instance."; | routing instance."; | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
default false; | default "false"; | |||
description | description | |||
"'true' if originating default route is enabled."; | "'true' if originating default route is enabled."; | |||
} | } | |||
leaf route-policy { | leaf route-policy { | |||
type route-policy-ref; | type route-policy-ref; | |||
description | description | |||
"The conditions of the route policy are applied to the | "The conditions of the route policy are applied to the | |||
default route."; | default route."; | |||
} | } | |||
} | } | |||
skipping to change at line 712 ¶ | skipping to change at line 710 ¶ | |||
Gateway Protocol) autonomous system (AS) into the RIP | Gateway Protocol) autonomous system (AS) into the RIP | |||
routing instance."; | routing instance."; | |||
leaf asn { | leaf asn { | |||
type inet:as-number; | type inet:as-number; | |||
description | description | |||
"BGP autonomous system (AS) number."; | "BGP autonomous system (AS) number."; | |||
} | } | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
container cg-nat { | container cg-nat { | |||
presence | presence "Present if Carrier-Grade Network Address | |||
"Present if Carrier Grade Network Address Translation | Translation (CGNAT) routes are redistributed."; | |||
(CGNAT) routes are redistributed."; | ||||
description | description | |||
"Carrier Grade Network Address Translation (CGNAT) | "Carrier-Grade Network Address Translation (CGNAT) | |||
routes."; | routes."; | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
container connected { | container connected { | |||
presence | presence "Present if directly attached network routes are | |||
"Present if directly attached network routes are | redistributed."; | |||
redistributed."; | ||||
description | description | |||
"Redistributes directly attached networks into the RIP | "Redistributes directly attached networks into the RIP | |||
routing instance."; | routing instance."; | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
container ipsec { | container ipsec { | |||
presence | presence "Present if IP security routing instance routes | |||
"Present if IP security routing instance routes | are redistributed."; | |||
are redistributed."; | ||||
description | description | |||
"Redistributes routes from the IP security routing | "Redistributes routes from the IP security routing | |||
instance into the RIP routing instance."; | instance into the RIP routing instance."; | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
list isis { | list isis { | |||
key "instance"; | key "instance"; | |||
description | description | |||
"Redistributes IS-IS routes."; | "Redistributes IS-IS routes."; | |||
leaf instance { | leaf instance { | |||
type leafref { | type leafref { | |||
path "../../../../../rt:control-plane-protocol/rt:name"; | path "../../../../../rt:control-plane-protocol/rt:name"; | |||
} | } | |||
must "derived-from-or-self(" | must "derived-from-or-self(" | |||
+ "../../../../../rt:control-plane-protocol" | + "../../../../../rt:control-plane-protocol" | |||
+ "[rt:name = current()]/rt:type, 'isis:isis')" { | + "[rt:name = current()]/rt:type, 'isis:isis')" { | |||
description | description | |||
"The type of the routing protocol must be 'isis'"; | "The type of the routing protocol must be 'isis'."; | |||
} | } | |||
description | description | |||
"Redistributes routes from the specified IS-IS routing | "Redistributes routes from the specified IS-IS routing | |||
instance into the RIP routing instance."; | instance into the RIP routing instance."; | |||
} | } | |||
leaf level { | leaf level { | |||
type enumeration { | type enumeration { | |||
enum 1 { | enum 1 { | |||
description "IS-IS level 1 routes."; | description | |||
"IS-IS level 1 routes."; | ||||
} | } | |||
enum 2 { | enum 2 { | |||
description "IS-IS level 2 routes."; | description | |||
"IS-IS level 2 routes."; | ||||
} | } | |||
enum 1-2 { | enum 1-2 { | |||
description "IS-IS level 1-2 routes."; | description | |||
"IS-IS level 1-2 routes."; | ||||
} | } | |||
} | } | |||
description | description | |||
"IS-IS level."; | "IS-IS level."; | |||
} | } | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
container nat { | container nat { | |||
presence | presence "Present if Network Address Translation (NAT) routes | |||
"Present if Network Address Translation (NAT) routes | are redistributed."; | |||
are redistributed."; | ||||
description | description | |||
"Redistributes Network Address Translation (NAT) | "Redistributes Network Address Translation (NAT) | |||
routes into the RIP routing instance."; | routes into the RIP routing instance."; | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
list ospfv2 { | list ospfv2 { | |||
when "derived-from-or-self(../../../rt:type, 'rip:ripv2')" { | when "derived-from-or-self(../../../rt:type, 'rip:ripv2')" { | |||
description | description | |||
"Applicable to RIPv2."; | "Applicable to RIPv2."; | |||
} | } | |||
key "instance"; | key "instance"; | |||
description | description | |||
"Redistributes routes from the specified OSPFv2 routing | "Redistributes routes from the specified OSPFv2 routing | |||
instance into the RIPv2 routing instance."; | instance into the RIPv2 routing instance."; | |||
leaf instance { | leaf instance { | |||
type leafref { | type leafref { | |||
path "../../../../../rt:control-plane-protocol/rt:name"; | path "../../../../../rt:control-plane-protocol/rt:name"; | |||
} | } | |||
must "derived-from-or-self(" | must "derived-from-or-self(" | |||
+ "../../../../../rt:control-plane-protocol" | + "../../../../../rt:control-plane-protocol" | |||
+ "[rt:name = current()]/rt:type, 'ospf:ospfv2')" { | + "[rt:name = current()]/rt:type, 'ospf:ospfv2')" { | |||
description | description | |||
"The type of the routing protocol must be 'ospfv2'"; | "The type of the routing protocol must be 'ospfv2'."; | |||
} | } | |||
description | description | |||
"OSPFv2 instance ID. Redistributes routes from the | "OSPFv2 instance ID. Redistributes routes from the | |||
specified OSPFv2 routing instance into the RIPv2 routing | specified OSPFv2 routing instance into the RIPv2 routing | |||
instance. "; | instance."; | |||
} | } | |||
leaf route-type { | leaf route-type { | |||
type ospf:route-type; | type ospf:route-type; | |||
description | description | |||
"Redistributes only those OSPFv2 routes matching the | "Redistributes only those OSPFv2 routes matching the | |||
specified route type into the RIPv2 routing instance."; | specified route type into the RIPv2 routing instance."; | |||
} | } | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
list ospfv3 { | list ospfv3 { | |||
skipping to change at line 828 ¶ | skipping to change at line 825 ¶ | |||
} | } | |||
key "instance"; | key "instance"; | |||
description | description | |||
"Redistributes routes from the specified OSPFv3 routing | "Redistributes routes from the specified OSPFv3 routing | |||
instance into the RIPng routing instance."; | instance into the RIPng routing instance."; | |||
leaf instance { | leaf instance { | |||
type leafref { | type leafref { | |||
path "../../../../../rt:control-plane-protocol/rt:name"; | path "../../../../../rt:control-plane-protocol/rt:name"; | |||
} | } | |||
must "derived-from-or-self(" | must "derived-from-or-self(" | |||
+ "../../../../../rt:control-plane-protocol" | + "../../../../../rt:control-plane-protocol" | |||
+ "[rt:name = current()]/rt:type, 'ospf:ospfv3')" { | + "[rt:name = current()]/rt:type, 'ospf:ospfv3')" { | |||
description | description | |||
"The type of the routing protocol must be 'ospfv3'"; | "The type of the routing protocol must be 'ospfv3'."; | |||
} | } | |||
description | description | |||
"OSPFv3 instance ID. Redistributes routes from the | "OSPFv3 instance ID. Redistributes routes from the | |||
specified OSPFv3 routing instance into the RIPng routing | specified OSPFv3 routing instance into the RIPng routing | |||
instance. "; | instance."; | |||
} | } | |||
leaf route-type { | leaf route-type { | |||
type ospf:route-type; | type ospf:route-type; | |||
description | description | |||
"Redistributes only those OSPFv3 routes matching the | "Redistributes only those OSPFv3 routes matching the | |||
specified route type into the RIPng routing instance."; | specified route type into the RIPng routing instance."; | |||
} | } | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
list ripv2 { | list ripv2 { | |||
skipping to change at line 860 ¶ | skipping to change at line 857 ¶ | |||
} | } | |||
key "instance"; | key "instance"; | |||
description | description | |||
"Redistributes routes from another RIPv2 routing instance | "Redistributes routes from another RIPv2 routing instance | |||
into the current RIPv2 routing instance."; | into the current RIPv2 routing instance."; | |||
leaf instance { | leaf instance { | |||
type leafref { | type leafref { | |||
path "../../../../../rt:control-plane-protocol/rt:name"; | path "../../../../../rt:control-plane-protocol/rt:name"; | |||
} | } | |||
must "derived-from-or-self(" | must "derived-from-or-self(" | |||
+ "../../../../../rt:control-plane-protocol" | + "../../../../../rt:control-plane-protocol" | |||
+ "[rt:name = current()]/rt:type, 'rip:ripv2')" { | + "[rt:name = current()]/rt:type, 'rip:ripv2')" { | |||
description | description | |||
"The type of the routing protocol must be 'ripv2'"; | "The type of the routing protocol must be 'ripv2'."; | |||
} | } | |||
description | description | |||
"Redistributes routes from the specified RIPv2 routing | "Redistributes routes from the specified RIPv2 routing | |||
instance into the RIPv2 routing instance."; | instance into the RIPv2 routing instance."; | |||
} | } | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
list ripng { | list ripng { | |||
when "derived-from-or-self(../../../rt:type, 'rip:ripng')" { | when "derived-from-or-self(../../../rt:type, 'rip:ripng')" { | |||
description | description | |||
skipping to change at line 885 ¶ | skipping to change at line 882 ¶ | |||
} | } | |||
key "instance"; | key "instance"; | |||
description | description | |||
"Redistributes routes from another RIPng routing instance | "Redistributes routes from another RIPng routing instance | |||
into the current RIPng routing instance."; | into the current RIPng routing instance."; | |||
leaf instance { | leaf instance { | |||
type leafref { | type leafref { | |||
path "../../../../../rt:control-plane-protocol/rt:name"; | path "../../../../../rt:control-plane-protocol/rt:name"; | |||
} | } | |||
must "derived-from-or-self(" | must "derived-from-or-self(" | |||
+ "../../../../../rt:control-plane-protocol" | + "../../../../../rt:control-plane-protocol" | |||
+ "[rt:name = current()]/rt:type, 'rip:ripng')" { | + "[rt:name = current()]/rt:type, 'rip:ripng')" { | |||
description | description | |||
"The type of the routing protocol must be 'ripng'"; | "The type of the routing protocol must be 'ripng'."; | |||
} | } | |||
description | description | |||
"Redistributes routes from the specified RIPng routing | "Redistributes routes from the specified RIPng routing | |||
instance into the RIPng routing instance."; | instance into the RIPng routing instance."; | |||
} | } | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
container static { | container static { | |||
presence "Present if redistributing static routes."; | presence "Present if redistributing static routes."; | |||
description | description | |||
"Redistributes static routes into the RIP routing | "Redistributes static routes into the RIP routing | |||
instance."; | instance."; | |||
uses redistribute-route-policy-attributes; | uses redistribute-route-policy-attributes; | |||
} | } | |||
} // redistribute | } | |||
} // redistribute-container | // redistribute | |||
} | ||||
// redistribute-container | ||||
grouping redistribute-route-policy-attributes { | grouping redistribute-route-policy-attributes { | |||
description | description | |||
"Attributes for redistributing a route policy."; | "Attributes for redistributing a route policy."; | |||
leaf metric { | leaf metric { | |||
type uint8 { | type uint8 { | |||
range 0..16; | range "0..16"; | |||
} | } | |||
description | description | |||
"Metric used for the redistributed route. If a metric is | "Metric used for the redistributed route. If a metric is | |||
not specified, the metric configured with the | not specified, the metric configured with the | |||
default-metric attribute in RIP router configuration is | default-metric attribute in RIP router configuration is | |||
used. If the default-metric attribute has not been | used. If the default-metric attribute has not been | |||
configured, the default metric for redistributed routes | configured, the default metric for redistributed routes | |||
is 1."; | is 1."; | |||
} | } | |||
leaf route-policy { | leaf route-policy { | |||
type route-policy-ref; | type route-policy-ref; | |||
description | description | |||
"Applies the conditions of the specified route policy to | "Applies the conditions of the specified route policy to | |||
routes that are redistributed into the RIP routing | routes that are redistributed into the RIP routing | |||
instance."; | instance."; | |||
} | } | |||
} // redistribute-route-policy-attributes | } | |||
// redistribute-route-policy-attributes | ||||
grouping timers-container { | grouping timers-container { | |||
description | description | |||
"Container for settings of basic timers"; | "Container for settings of basic timers"; | |||
container timers { | container timers { | |||
must "invalid-interval >= (update-interval * 3)" { | must 'invalid-interval >= (update-interval * 3)' { | |||
description | description | |||
"invalid-interval must be at least three times the value | "invalid-interval must be at least three times the value | |||
for the update-interval argument."; | for the update-interval argument."; | |||
} | } | |||
must "flush-interval > invalid-interval" { | must 'flush-interval > invalid-interval' { | |||
description | description | |||
"flush-interval must be larger than the value for the | "flush-interval must be larger than the value for the | |||
invalid-interval argument"; | invalid-interval argument."; | |||
} | } | |||
description | description | |||
"Timers for the specified RIPv2 or RIPng instance or | "Timers for the specified RIPv2 or RIPng instance or | |||
interface."; | interface."; | |||
leaf update-interval { | leaf update-interval { | |||
type uint16 { | type uint16 { | |||
range 1..32767; | range "1..32767"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
default 30; | default "30"; | |||
description | description | |||
"Interval at which RIPv2 or RIPng updates are sent."; | "Interval at which RIPv2 or RIPng updates are sent."; | |||
} | } | |||
leaf invalid-interval { | leaf invalid-interval { | |||
type uint16 { | type uint16 { | |||
range 1..32767; | range "1..32767"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
default 180; | default "180"; | |||
description | description | |||
"Interval before a route is declared invalid after no | "Interval before a route is declared invalid after no | |||
updates are received. This value is at least three times | updates are received. This value is at least three times | |||
the value for the update-interval argument."; | the value for the update-interval argument."; | |||
} | } | |||
leaf holddown-interval { | leaf holddown-interval { | |||
type uint16 { | type uint16 { | |||
range 1..32767; | range "1..32767"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
default 180; | default "180"; | |||
description | description | |||
"Interval before better routes are released."; | "Interval before better routes are released."; | |||
} | } | |||
leaf flush-interval { | leaf flush-interval { | |||
type uint16 { | type uint16 { | |||
range 1..32767; | range "1..32767"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
default 240; | default "240"; | |||
description | description | |||
"Interval before a route is flushed from the routing | "Interval before a route is flushed from the routing | |||
table. This value must be larger than the value for the | table. This value must be larger than the value for the | |||
invalid-interval argument."; | invalid-interval argument."; | |||
} | } | |||
} // timers | } | |||
// timers | ||||
} | } | |||
// timers-container | ||||
grouping global-attributes { | grouping global-attributes { | |||
description | description | |||
"Global configuration and state attributes."; | "Global configuration and state attributes."; | |||
uses originate-default-route-container; | uses originate-default-route-container; | |||
leaf default-metric { | leaf default-metric { | |||
type uint8 { | type uint8 { | |||
range 0..16; | range "0..16"; | |||
} | } | |||
default 1; | default "1"; | |||
description | description | |||
"Set the default metric."; | "Set the default metric."; | |||
} | } | |||
leaf distance { | leaf distance { | |||
type uint8 { | type uint8 { | |||
range 1..255; | range "1..255"; | |||
} | } | |||
default 120; | default "120"; | |||
description | description | |||
"The administrative distance of the RIPv2 or RIPng for the | "The administrative distance of the RIPv2 or RIPng for the | |||
current RIPv2 or RIPng instance."; | current RIPv2 or RIPng instance."; | |||
} | } | |||
leaf triggered-update-threshold { | leaf triggered-update-threshold { | |||
type uint8 { | type uint8 { | |||
range 1..30; | range "1..30"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
default 5; | default "5"; | |||
description | description | |||
"This attribute is used to suppress triggered updates. | "This attribute is used to suppress triggered updates. | |||
When the arrival of a regularly scheduled update matches the | When the arrival of a regularly scheduled update matches the | |||
number of seconds or is less than the number seconds | number of seconds or is less than the number seconds | |||
configured with this attribute, the triggered update is | configured with this attribute, the triggered update is | |||
suppressed."; | suppressed."; | |||
} | } | |||
leaf maximum-paths { | leaf maximum-paths { | |||
type uint8 { | type uint8 { | |||
range 1..16; | range "1..16"; | |||
} | } | |||
default 8; | default "8"; | |||
description | description | |||
"The number of multiple equal-cost RIPv2 or RIPng routes | "The number of multiple equal-cost RIPv2 or RIPng routes | |||
that can be used as the best paths for balancing the load | that can be used as the best paths for balancing the load | |||
of outgoing traffic packets."; | of outgoing traffic packets."; | |||
} | } | |||
leaf output-delay { | leaf output-delay { | |||
type uint8 { | type uint8 { | |||
range 1..50; | range "1..50"; | |||
} | } | |||
units milliseconds; | units "milliseconds"; | |||
description | description | |||
"A delay time between packets sent in multipacket | "A delay time between packets sent in multipacket | |||
RIPv2 or RIPng updates."; | RIPv2 or RIPng updates."; | |||
} | } | |||
} // global-attributes | } | |||
// global-attributes | ||||
grouping distribute-lists { | grouping distribute-lists { | |||
description | description | |||
"Grouping for distribute lists."; | "Grouping for distribute lists."; | |||
list distribute-list { | list distribute-list { | |||
key "prefix-set-name direction"; | key "prefix-set-name direction"; | |||
description | description | |||
"List of distribute-lists, which are used to filter in-coming | "List of distribute-lists, which are used to filter incoming | |||
or out-going routing updates."; | or outgoing routing updates."; | |||
leaf prefix-set-name { | leaf prefix-set-name { | |||
type prefix-set-ref; | type prefix-set-ref; | |||
description | description | |||
"Reference to a prefix list to be applied to RIPv2 or | "Reference to a prefix list to be applied to RIPv2 or | |||
RIPng packets."; | RIPng packets."; | |||
} | } | |||
leaf direction { | leaf direction { | |||
type enumeration { | type enumeration { | |||
enum "in" { | enum in { | |||
description | description | |||
"Apply the distribute-list to in-coming routes."; | "Apply the distribute-list to incoming routes."; | |||
} | } | |||
enum "out" { | enum out { | |||
description | description | |||
"Apply the distribute-list to out-going routes."; | "Apply the distribute-list to outgoing routes."; | |||
} | } | |||
} | } | |||
description | description | |||
"Direction of the routing updates."; | "Direction of the routing updates."; | |||
} | } | |||
leaf if-name { | leaf if-name { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Reference to an interface to which the prefix list is | "Reference to an interface to which the prefix list is | |||
applied."; | applied."; | |||
} | } | |||
} | } | |||
} // distribute-lists | // distribute-list | |||
} | ||||
// distribute-lists | ||||
grouping route-attributes { | grouping route-attributes { | |||
description | description | |||
"Grouping for route attributes."; | "Grouping for route attributes."; | |||
leaf redistributed { | leaf redistributed { | |||
type boolean; | type boolean; | |||
description | description | |||
"Redistributed routes"; | "Redistributed routes."; | |||
} | } | |||
leaf route-type { | leaf route-type { | |||
type enumeration { | type enumeration { | |||
enum connected { | enum connected { | |||
description "Connected route."; | description | |||
"Connected route."; | ||||
} | } | |||
enum external { | enum external { | |||
description "External route."; | description | |||
"External route."; | ||||
} | } | |||
enum external-backup { | enum external-backup { | |||
description "External backup route."; | description | |||
"External backup route."; | ||||
} | } | |||
enum rip { | enum rip { | |||
description "RIP route."; | description | |||
"RIP route."; | ||||
} | } | |||
} | } | |||
description | description | |||
"Route type."; | "Route type."; | |||
} | } | |||
leaf metric { | leaf metric { | |||
type uint8 { | type uint8 { | |||
range 0..16; | range "0..16"; | |||
} | } | |||
description "Route metric."; | description | |||
"Route metric."; | ||||
} | } | |||
leaf expire-time { | leaf expire-time { | |||
type uint16; | type uint16; | |||
description "Expiration time."; | description | |||
"Expiration time."; | ||||
} | } | |||
leaf deleted { | leaf deleted { | |||
type boolean; | type boolean; | |||
description "Deleted route."; | description | |||
"Deleted route."; | ||||
} | } | |||
leaf holddown { | leaf holddown { | |||
type boolean; | type boolean; | |||
description "Holddown route."; | description | |||
"Holddown route."; | ||||
} | } | |||
leaf need-triggered-update { | leaf need-triggered-update { | |||
type boolean; | type boolean; | |||
description "The route needs triggered update."; | description | |||
"The route needs triggered update."; | ||||
} | } | |||
leaf inactive { | leaf inactive { | |||
type boolean; | type boolean; | |||
description "The route is inactive."; | description | |||
"The route is inactive."; | ||||
} | } | |||
leaf flush-expire-before-holddown { | leaf flush-expire-before-holddown { | |||
type boolean; | type boolean; | |||
description | description | |||
"The flush timer expired before holddown time."; | "The flush timer expired before holddown time."; | |||
} | } | |||
} // route-attribute | } | |||
// route-attributes | ||||
/* | /* | |||
* Configuration data and operational state data nodes | * Configuration data and operational state data nodes | |||
*/ | */ | |||
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, 'rip:rip')" { | when "derived-from(rt:type, 'rip:rip')" { | |||
description | description | |||
"This augment is only valid for a routing protocol instance | "This augment is only valid for a routing protocol instance | |||
of RIP (type 'ripv2' or 'ripng')."; | of RIP (type 'ripv2' or 'ripng')."; | |||
} | } | |||
description "RIP augmentation."; | description | |||
"RIP augmentation."; | ||||
container rip { | container rip { | |||
description | description | |||
"RIP data."; | "RIP data."; | |||
uses global-attributes; | uses global-attributes; | |||
uses distribute-lists; | uses distribute-lists; | |||
uses redistribute-container; | uses redistribute-container; | |||
uses timers-container; | uses timers-container; | |||
container interfaces { | container interfaces { | |||
description | description | |||
"Containing a list of RIP interfaces."; | "Containing a list of RIP interfaces."; | |||
list interface { | list interface { | |||
key "interface"; | key "interface"; | |||
description | description | |||
"List of RIP interfaces."; | "List of RIP interfaces."; | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
must "(derived-from-or-self(" | must "(derived-from-or-self(" | |||
skipping to change at line 1181 ¶ | skipping to change at line 1187 ¶ | |||
container interfaces { | container interfaces { | |||
description | description | |||
"Containing a list of RIP interfaces."; | "Containing a list of RIP interfaces."; | |||
list interface { | list interface { | |||
key "interface"; | key "interface"; | |||
description | description | |||
"List of RIP interfaces."; | "List of RIP interfaces."; | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
must "(derived-from-or-self(" | must "(derived-from-or-self(" | |||
+ "../../../../rt:type, 'rip:ripv2') and " | + "../../../../rt:type, 'rip:ripv2') and " | |||
+ "/if:interfaces/if:interface[if:name=current()]/" | + "/if:interfaces/if:interface[if:name=current()]/" | |||
+ "ip:ipv4) or " | + "ip:ipv4) or " | |||
+ "(derived-from-or-self(" | + "(derived-from-or-self(" | |||
+ "../../../../rt:type, 'rip:ripng') and " | + "../../../../rt:type, 'rip:ripng') and " | |||
+ "/if:interfaces/if:interface[if:name=current()]/" | + "/if:interfaces/if:interface[if:name=current()]/" | |||
+ "ip:ipv6)" { | + "ip:ipv6)" { | |||
error-message "Invalid interface type."; | error-message "Invalid interface type."; | |||
description | description | |||
"RIPv2 can be enabled on IPv4 interfae, and | "RIPv2 can be enabled on IPv4 interface, and | |||
RIPng can be enabled on IPv6 interface."; | RIPng can be enabled on IPv6 interface."; | |||
} | } | |||
description | description | |||
"Enable RIP on this interface."; | "Enable RIP on this interface."; | |||
} | } | |||
container authentication { | container authentication { | |||
when "derived-from-or-self(" | when "derived-from-or-self(" | |||
+ "../../../../rt:type, 'rip:ripv2')" { | + "../../../../rt:type, 'rip:ripv2')" { | |||
description "Only applicable to RIPv2."; | description | |||
"Only applicable to RIPv2."; | ||||
} | } | |||
description | description | |||
"Enables authentication and specifies the | "Enables authentication and specifies the | |||
authentication scheme for the RIP interface"; | authentication scheme for the RIP interface."; | |||
choice auth-type-selection { | choice auth-type-selection { | |||
description | description | |||
"Specify the authentication scheme."; | "Specify the authentication scheme."; | |||
reference | reference | |||
"RFC8177: YANG Data Model for Key Chains."; | "RFC8177: YANG Data Model for Key Chains."; | |||
case auth-key-chain { | case auth-key-chain { | |||
leaf key-chain { | leaf key-chain { | |||
type key-chain:key-chain-ref; | type key-chain:key-chain-ref; | |||
description | description | |||
"key-chain name."; | "key-chain name."; | |||
skipping to change at line 1228 ¶ | skipping to change at line 1234 ¶ | |||
leaf key { | leaf key { | |||
type string; | type string; | |||
description | description | |||
"Key string in ASCII format."; | "Key string in ASCII format."; | |||
} | } | |||
leaf crypto-algorithm { | leaf crypto-algorithm { | |||
type identityref { | type identityref { | |||
base key-chain:crypto-algorithm; | base key-chain:crypto-algorithm; | |||
} | } | |||
description | description | |||
"Cryptographic algorithm associated with key."; | "Cryptographic algorithm associated with the | |||
key."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container bfd { | container bfd { | |||
if-feature bfd; | if-feature "bfd"; | |||
description "BFD configuration."; | description | |||
"BFD configuration."; | ||||
uses bfd-types:client-cfg-parms; | uses bfd-types:client-cfg-parms; | |||
} | } | |||
leaf cost { | leaf cost { | |||
type uint8 { | type uint8 { | |||
range 1..16; | range "1..16"; | |||
} | } | |||
default 1; | default "1"; | |||
description | description | |||
"Interface cost."; | "Interface cost."; | |||
} | } | |||
container neighbors { | container neighbors { | |||
if-feature explicit-neighbors; | if-feature "explicit-neighbors"; | |||
description | description | |||
"Specifies the RIP neighbors. Useful for a | "Specifies the RIP neighbors. Useful for a | |||
non-broadcast multiple access (NBMA) network."; | non-broadcast multiple access (NBMA) network."; | |||
list neighbor { | list neighbor { | |||
key "address"; | key "address"; | |||
description | description | |||
"Specify a RIP neighbor on a non-broadcast network."; | "Specify a RIP neighbor on a non-broadcast network."; | |||
leaf address { | leaf address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "Neighbor IP address."; | description | |||
"Neighbor IP address."; | ||||
} | } | |||
} | } | |||
} | } | |||
leaf no-listen { | leaf no-listen { | |||
type empty; | type empty; | |||
description | description | |||
"Disables listening to and processing of RIPv2 or RIPng | "Disables listening to, and processing of, RIPv2 or | |||
packets on the specified interface."; | RIPng packets on the specified interface."; | |||
} | } | |||
uses originate-default-route-container; | uses originate-default-route-container; | |||
leaf passive { | leaf passive { | |||
type empty; | type empty; | |||
description | description | |||
"Disables sending of RIPv2 or RIPng packets on the | "Disables sending of RIPv2 or RIPng packets on the | |||
specified interface."; | specified interface."; | |||
} | } | |||
leaf split-horizon { | leaf split-horizon { | |||
type enumeration { | type enumeration { | |||
enum disabled { | enum disabled { | |||
description | description | |||
"Disables split-horizon processing."; | "Disables split-horizon processing."; | |||
} | } | |||
enum simple { | enum simple { | |||
description | description | |||
"Enables simple split-horizon processing."; | "Enables simple split-horizon processing."; | |||
} | } | |||
skipping to change at line 1297 ¶ | skipping to change at line 1299 ¶ | |||
enum simple { | enum simple { | |||
description | description | |||
"Enables simple split-horizon processing."; | "Enables simple split-horizon processing."; | |||
} | } | |||
enum poison-reverse { | enum poison-reverse { | |||
description | description | |||
"Enables split-horizon processing with poison | "Enables split-horizon processing with poison | |||
reverse."; | reverse."; | |||
} | } | |||
} | } | |||
default simple; | default "simple"; | |||
description | description | |||
"Controls RIPv2 or RIPng split-horizon processing on | "Controls RIPv2 or RIPng split-horizon processing on | |||
the specified interface."; | the specified interface."; | |||
} | } | |||
container summary-address { | container summary-address { | |||
description | description | |||
"Summarizes information about RIPv2 or RIPng routes | "Summarizes information about RIPv2 or RIPng routes | |||
sent over the specified interface in RIPv2 or RIPng | sent over the specified interface in RIPv2 or RIPng | |||
update packets."; | update packets."; | |||
leaf address { | leaf address { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"Specifies the IP address and the prefix length that | "Specifies the IP address and the prefix length that | |||
identify the routes to be summarized. The IP address | identify the routes to be summarized. The IP | |||
can be specified in either IPv4 or IPv6 format, as | address can be specified in either IPv4 or IPv6 | |||
specified in RFC6991."; | format, as specified in RFC6991."; | |||
} | } | |||
leaf metric { | leaf metric { | |||
type uint8 { | type uint8 { | |||
range 0..16; | range "0..16"; | |||
} | } | |||
description | description | |||
"Metric used for the route. If this attribute is not | "Metric used for the route. If this attribute is not | |||
used, the value set through the default-metric | used, the value set through the default-metric | |||
attribute in RIPv2 or RIPng router configuration is | attribute in RIPv2 or RIPng router configuration is | |||
used for the route. "; | used for the route."; | |||
} | } | |||
} | } | |||
uses timers-container; | uses timers-container; | |||
/* Operational state */ | /* Operational state */ | |||
leaf oper-status { | leaf oper-status { | |||
type enumeration { | type enumeration { | |||
enum up { | enum up { | |||
description | description | |||
"RIPv2 or RIPng is operational on this interface."; | "RIPv2 or RIPng is operational on this interface."; | |||
} | } | |||
enum down { | enum down { | |||
skipping to change at line 1359 ¶ | skipping to change at line 1359 ¶ | |||
config false; | config false; | |||
description | description | |||
"Next full update time."; | "Next full update time."; | |||
} | } | |||
leaf valid-address { | leaf valid-address { | |||
type boolean; | type boolean; | |||
config false; | config false; | |||
description | description | |||
"The interface has a valid address."; | "The interface has a valid address."; | |||
} | } | |||
container statistics { | container statistics { | |||
if-feature interface-statistics; | if-feature "interface-statistics"; | |||
config false; | config false; | |||
description | description | |||
"Interface statistic counters."; | "Interface statistics counters."; | |||
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 | "The time on the most recent occasion at which any | |||
one or more of the statistic counters suffered a | one or more of the statistics counters suffered a | |||
discontinuity. If no such discontinuities have | discontinuity. If no such discontinuities have | |||
occurred since the last re-initialization of the | occurred since the last re-initialization of the | |||
local management subsystem, then this node contains | local management subsystem, then this node contains | |||
the time the local management subsystem | the time the local management subsystem | |||
re-initialized itself."; | re-initialized itself."; | |||
} | } | |||
leaf bad-packets-rcvd { | leaf bad-packets-rcvd { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of RIP invalid packets received by | "The number of RIP invalid packets received by | |||
the RIP process which were subsequently discarded | the RIP process that were subsequently discarded | |||
for any reason (e.g. a version 0 packet, or an | for any reason (e.g., a version 0 packet, or an | |||
unknown command type)."; | unknown command type)."; | |||
} | } | |||
leaf bad-routes-rcvd { | leaf bad-routes-rcvd { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of routes, in valid RIP packets, | "The number of routes, in valid RIP packets, | |||
which were ignored for any reason (e.g. unknown | which were ignored for any reason (e.g., unknown | |||
address family, or invalid metric)."; | address family, or invalid metric)."; | |||
} | } | |||
leaf updates-sent { | leaf updates-sent { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of triggered RIP updates actually | "The number of triggered RIP updates actually | |||
sent on this interface. This explicitly does | sent on this interface. This explicitly does | |||
NOT include full updates sent containing new | NOT include full updates sent containing new | |||
information."; | information."; | |||
} | } | |||
} | } | |||
} // interface | } | |||
} // interfaces | // interface | |||
} | ||||
// interfaces | ||||
/* Operational state */ | /* Operational state */ | |||
leaf next-triggered-update { | leaf next-triggered-update { | |||
type uint32; | type uint32; | |||
config false; | config false; | |||
description | description | |||
"Next triggered update."; | "Next triggered update."; | |||
} | } | |||
leaf num-of-routes { | leaf num-of-routes { | |||
type uint32; | type uint32; | |||
skipping to change at line 1449 ¶ | skipping to change at line 1448 ¶ | |||
leaf last-update { | leaf last-update { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time when the most recent RIP update was | "The time when the most recent RIP update was | |||
received from this neighbor."; | received from this neighbor."; | |||
} | } | |||
leaf bad-packets-rcvd { | leaf bad-packets-rcvd { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of RIP invalid packets received from | "The number of RIP invalid packets received from | |||
this neighbor which were subsequently discarded | this neighbor that were subsequently discarded | |||
for any reason (e.g. a version 0 packet, or an | for any reason (e.g., a version 0 packet, or an | |||
unknown command type)."; | unknown command type)."; | |||
} | } | |||
leaf bad-routes-rcvd { | leaf bad-routes-rcvd { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of routes received from this neighbor, | "The number of routes received from this neighbor, | |||
in valid RIP packets, which were ignored for any | in valid RIP packets that were ignored for any | |||
reason (e.g. unknown address family, or invalid | reason (e.g., unknown address family, or invalid | |||
metric)."; | metric)."; | |||
} | } | |||
} // neighbor | } | |||
} // neighbors | // neighbor | |||
} | ||||
// neighbors | ||||
container routes { | container routes { | |||
description | description | |||
"IPv4 route information."; | "IPv4 route information."; | |||
list route { | list route { | |||
key "ipv4-prefix"; | key "ipv4-prefix"; | |||
description | description | |||
"A RIPv2 IPv4 route."; | "A RIPv2 IPv4 route."; | |||
leaf ipv4-prefix { | leaf ipv4-prefix { | |||
type inet:ipv4-prefix; | type inet:ipv4-prefix; | |||
description | description | |||
"IPv4 address and prefix length, in the format | "IPv4 address and prefix length, in the format | |||
specified in RFC6991."; | specified in RFC6991."; | |||
} | } | |||
leaf next-hop { | leaf next-hop { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Next hop IPv4 address."; | "Next hop IPv4 address."; | |||
skipping to change at line 1488 ¶ | skipping to change at line 1489 ¶ | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"Next hop IPv4 address."; | "Next hop IPv4 address."; | |||
} | } | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"The interface that the route uses."; | "The interface that the route uses."; | |||
} | } | |||
uses route-attributes; | uses route-attributes; | |||
} // route | } | |||
} // routes | // route | |||
} // ipv4 | } | |||
// routes | ||||
} | ||||
// ipv4 | ||||
container ipv6 { | container ipv6 { | |||
when "derived-from-or-self(../../rt:type, 'rip:ripng')" { | when "derived-from-or-self(../../rt:type, 'rip:ripng')" { | |||
description | description | |||
"IPv6 address family is supported by RIPng."; | "IPv6 address family is supported by RIPng."; | |||
} | } | |||
config false; | config false; | |||
description | description | |||
"IPv6 address family information."; | "IPv6 address family information."; | |||
container neighbors { | container neighbors { | |||
description | description | |||
skipping to change at line 1523 ¶ | skipping to change at line 1527 ¶ | |||
leaf last-update { | leaf last-update { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time when the most recent RIP update was | "The time when the most recent RIP update was | |||
received from this neighbor."; | received from this neighbor."; | |||
} | } | |||
leaf bad-packets-rcvd { | leaf bad-packets-rcvd { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of RIP invalid packets received from | "The number of RIP invalid packets received from | |||
this neighbor which were subsequently discarded | this neighbor that were subsequently discarded | |||
for any reason (e.g. a version 0 packet, or an | for any reason (e.g., a version 0 packet, or an | |||
unknown command type)."; | unknown command type)."; | |||
} | } | |||
leaf bad-routes-rcvd { | leaf bad-routes-rcvd { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of routes received from this neighbor, | "The number of routes received from this neighbor, | |||
in valid RIP packets, which were ignored for any | in valid RIP packets that were ignored for any | |||
reason (e.g. unknown address family, or invalid | reason (e.g., unknown address family, or invalid | |||
metric)."; | metric)."; | |||
} | } | |||
} // neighbor | } | |||
} // neighbors | // neighbor | |||
} | ||||
// neighbors | ||||
container routes { | container routes { | |||
description | description | |||
"IPv6 route information."; | "IPv6 route information."; | |||
list route { | list route { | |||
key "ipv6-prefix"; | key "ipv6-prefix"; | |||
description | description | |||
"A RIPng IPv6 route."; | "A RIPng IPv6 route."; | |||
leaf ipv6-prefix { | leaf ipv6-prefix { | |||
type inet:ipv6-prefix; | type inet:ipv6-prefix; | |||
description | description | |||
"IPv6 address and prefix length, in the format | "IPv6 address and prefix length, in the format | |||
specified in RFC6991."; | specified in RFC6991."; | |||
} | } | |||
leaf next-hop { | leaf next-hop { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"Next hop IPv6 address."; | "Next hop IPv6 address."; | |||
skipping to change at line 1562 ¶ | skipping to change at line 1568 ¶ | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"Next hop IPv6 address."; | "Next hop IPv6 address."; | |||
} | } | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"The interface that the route uses."; | "The interface that the route uses."; | |||
} | } | |||
uses route-attributes; | uses route-attributes; | |||
} // route | } | |||
} // routes | // route | |||
} // ipv6 | } | |||
// routes | ||||
} | ||||
// ipv6 | ||||
container statistics { | container statistics { | |||
if-feature global-statistics; | if-feature "global-statistics"; | |||
config false; | config false; | |||
description | description | |||
"Global statistic counters."; | "Global statistics counters."; | |||
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 | "The time on the most recent occasion at which any one | |||
or more of the statistic counters suffered a | or more of the statistics counters suffered a | |||
discontinuity. If no such discontinuities have occurred | discontinuity. If no such discontinuities have occurred | |||
since the last re-initialization of the local | since the last re-initialization of the local | |||
management subsystem, then this node contains the time | management subsystem, then this node contains the time | |||
the local management subsystem re-initialized itself."; | the local management subsystem re-initialized itself."; | |||
} | } | |||
leaf requests-rcvd { | leaf requests-rcvd { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of requests received by RIP."; | "The number of requests received by RIP."; | |||
} | } | |||
leaf requests-sent { | leaf requests-sent { | |||
skipping to change at line 1601 ¶ | skipping to change at line 1610 ¶ | |||
leaf responses-rcvd { | leaf responses-rcvd { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of responses received by RIP."; | "The number of responses received by RIP."; | |||
} | } | |||
leaf responses-sent { | leaf responses-sent { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"The number of responses sent by RIP."; | "The number of responses sent by RIP."; | |||
} | } | |||
} // statistics | } | |||
} // container rip | // statistics | |||
} | ||||
// rip | ||||
} | } | |||
/* | /* | |||
* RPCs | * RPCs | |||
*/ | */ | |||
rpc clear-rip-route { | rpc clear-rip-route { | |||
description | description | |||
"Clears RIP routes from the IP routing table and routes | "Clears RIP routes from the IP routing table and routes | |||
redistributed into the RIP protocol for the specified RIP | redistributed into RIP for the specified RIP instance | |||
instance or for all RIP instances in the current context."; | or for all RIP instances in the current context."; | |||
input { | input { | |||
leaf rip-instance { | leaf rip-instance { | |||
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"; | |||
} | } | |||
description | description | |||
"Instance name identifying a specific RIP instance. | "Instance name identifying a specific RIP instance. | |||
This leaf is optional for the rpc. | This leaf is optional for the RPC. | |||
If it is specified, the rpc will clear all routes in the | If it is specified, the RPC will clear all routes in the | |||
specified RIP instance; | specified RIP instance; | |||
if it is not specified, the rpc will clear all routes in | if it is not specified, the RPC will clear all routes in | |||
all RIP instances."; | all RIP instances."; | |||
} | } | |||
} | } | |||
} // rcp clear-rip-route | } | |||
} | // clear-rip-route | |||
<CODE ENDS> | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | ||||
<section title="IANA Considerations" anchor="sect-5"><t> | ||||
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the | ||||
actual RFC number (and remove this note).</t> | ||||
<t> | ||||
This document registers the following namespace URIs in the IETF XML | ||||
registry <xref target="RFC3688"/>:</t> | ||||
<figure><artwork><![CDATA[ | ||||
-------------------------------------------------------------------- | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-rip | ||||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
-------------------------------------------------------------------- | ||||
]]></artwork> | ||||
</figure> | ||||
<t> | ||||
This document registers the following YANG modules in the YANG Module | ||||
Names registry <xref target="RFC7950"/>:</t> | ||||
<figure><artwork><![CDATA[ | } | |||
]]></sourcecode> | ||||
-------------------------------------------------------------------- | </section> | |||
name: ietf-rip | <section anchor="sect-5" numbered="true" toc="default"> | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-rip | ||||
prefix: rip | ||||
reference: RFC XXXX | ||||
-------------------------------------------------------------------- | ||||
]]></artwork> | <name>IANA Considerations</name> | |||
</figure> | ||||
</section> | <t> | |||
This document registers the following namespace URIs in the "IETF XML | ||||
Registry" <xref target="RFC3688" format="default"/>:</t> | ||||
<dl newline="false" spacing="compact"> | ||||
<dt>URI:</dt> <dd>urn:ietf:params:xml:ns:yang:ietf-rip</dd> | ||||
<dt>Registrant Contact:</dt> <dd>The IESG.</dd> | ||||
<dt>XML:</dt> <dd>N/A; the requested URI is an XML namespace.</dd> | ||||
</dl> | ||||
<section title="Security Considerations" anchor="sect-6"><t> | <t> | |||
This document registers the following YANG modules in the "YANG Module | ||||
Names" registry <xref target="RFC6020" format="default"/>:</t> | ||||
<dl newline="false" spacing="compact"> | ||||
<dt>Name:</dt> <dd>ietf-rip</dd> | ||||
<dt>Namespace:</dt> <dd>urn:ietf:params:xml:ns:yang:ietf-rip</dd> | ||||
<dt>Prefix:</dt> <dd>rip</dd> | ||||
<dt>Reference:</dt> <dd>RFC 8695</dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor="sect-6" numbered="true" toc="default"> | ||||
<name>Security Considerations</name> | ||||
<t> | ||||
The YANG module specified in this document defines a schema for data | The YANG module specified in this document defines a schema for data | |||
that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. Th e lowest NETCONF layer | as NETCONF <xref target="RFC6241" format="default"/> or RESTCONF <xref target ="RFC8040" format="default"/>. The lowest NETCONF layer | |||
is the secure transport layer, and the mandatory-to-implement secure | is the secure transport layer, and the mandatory-to-implement secure | |||
transport is Secure Shell (SSH) <xref target="RFC6242"/>. The lowest RESTCON F layer | transport is Secure Shell (SSH) <xref target="RFC6242" format="default"/>. T he lowest RESTCONF layer | |||
is HTTPS, and the mandatory-to-implement secure transport is TLS | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
<xref target="RFC8446"/>.</t> | <xref target="RFC8446" format="default"/>.</t> | |||
<t> | ||||
<t> | The NETCONF Access Control Model (NACM) <xref target="RFC8341" format="defaul | |||
The NETCONF access control model <xref target="RFC8341"/> provides the means | t"/> provides the means to | |||
to | ||||
restrict access for particular NETCONF or RESTCONF users to a | restrict access for particular NETCONF or RESTCONF users to a | |||
preconfigured subset of all available NETCONF or RESTCONF protocol | preconfigured subset of all available NETCONF or RESTCONF protocol | |||
operations and content.</t> | operations and content.</t> | |||
<t> | ||||
<t> | ||||
There are a number of data nodes defined in this YANG module that are | There are a number of data nodes defined in this YANG module that are | |||
writable/creatable/deletable (i.e., config true, which is the | writable/creatable/deletable (i.e., config true, which is the | |||
default). These data nodes may be considered sensitive or vulnerable | default). These data nodes may be considered sensitive or vulnerable | |||
in some network environments. Write operations (e.g., edit-config) | in some network environments. Write operations (e.g., edit-config) | |||
to these data nodes without proper protection can have a negative | to these data nodes without proper protection can have a negative | |||
effect on network operations. These are the subtrees and data nodes | effect on network operations. These are the subtrees and data nodes | |||
and their sensitivity/vulnerability:</t> | and their sensitivity/vulnerability:</t> | |||
<artwork> | ||||
<t> | ||||
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ | /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ | |||
rip:rip</t> | rip:rip | |||
</artwork> | ||||
<t> | <t> | |||
Unauthorized access to any data node of these subtrees can adversely | Unauthorized access to any data node of these subtrees can adversely | |||
affect the routing subsystem of both the local device and the | affect the routing subsystem of both the local device and the | |||
network. This may lead to network malfunctions, delivery of packets | network. This may lead to network malfunctions, delivery of packets | |||
to inappropriate destinations, and other problems.</t> | to inappropriate destinations, and other problems.</t> | |||
<t> | ||||
<t> | ||||
Some of the readable data nodes in this YANG module may be considered | Some of the readable data nodes in this YANG module may be considered | |||
sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
important to control read access (e.g., via get, get-config, or | important to control read access (e.g., via get, get-config, or | |||
notification) to these data nodes. These are the subtrees and data | notification) to these data nodes. These are the subtrees and data | |||
nodes and their sensitivity/vulnerability:</t> | nodes and their sensitivity/vulnerability:</t> | |||
<artwork> | ||||
<t> | ||||
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ | /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ | |||
rip:rip</t> | rip:rip | |||
</artwork> | ||||
<t> | <t> | |||
Unauthorized access to any data node of these subtrees can disclose | Unauthorized access to any data node of these subtrees can disclose | |||
the operational state information of RIP on this device.</t> | the operational state information of RIP on this device.</t> | |||
<t> | ||||
<t> | ||||
Some of the RPC operations in this YANG module may be considered | Some of the RPC operations in this YANG module may be considered | |||
sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
important to control access to these operations. These are the | important to control access to these operations. These are the | |||
operations and their sensitivity/vulnerability:</t> | operations and their sensitivity/vulnerability:</t> | |||
<t> | ||||
<t> | ||||
RPC clear-rip-route:</t> | RPC clear-rip-route:</t> | |||
<t> | ||||
<t> | ||||
Unauthorized access to the RPC above can adversely affect the routing | Unauthorized access to the RPC above can adversely affect the routing | |||
subsystem of both the local device and the network. This may lead to | subsystem of both the local device and the network. This may lead to | |||
network malfunctions, delivery of packets to inappropriate | network malfunctions, delivery of packets to inappropriate | |||
destinations, and other problems.</t> | destinations, and other problems.</t> | |||
</section> | ||||
</middle> | ||||
<back> | ||||
</section> | <displayreference target="I-D.ietf-bfd-yang" to="YANG-BFD"/> | |||
<displayreference target="I-D.ietf-isis-yang-isis-cfg" to="YANG-ISIS"/> | ||||
<displayreference target="I-D.ietf-ospf-yang" to="YANG-OSPF"/> | ||||
</middle> | <references> | |||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.1724.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.2119.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.2453.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.2080.xml"/> | ||||
<xi:include | ||||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC. | ||||
3688.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.6020.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.6241.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.6242.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.6991.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.7950.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8040.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8174.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8177.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8341.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8342.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8343.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8344.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8349.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8446.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.7951.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8340.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8407.xml"/> | ||||
<back> | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
<references title="Normative References"> | ence.RFC.8639.xml"/> | |||
&RFC1724; | ||||
&RFC2119; | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
&RFC2453; | ence.RFC.8641.xml"/> | |||
&RFC2080; | ||||
&RFC3688; | <!-- I-D.draft-ietf-bfd-yang-17; in MISSREF state as of 2/18/20 --> | |||
&RFC6241; | ||||
&RFC6242; | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I- | |||
&RFC6991; | D.ietf-bfd-yang.xml"/> | |||
&RFC7950; | ||||
&RFC8040; | <!-- I-D.draft-ietf-isis-yang-isis-cfg-35; in MISSREF state as of 2/18/20 --> | |||
&RFC8177; | ||||
&RFC8341; | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I- | |||
&RFC8342; | D.ietf-isis-yang-isis-cfg.xml"/> | |||
&RFC8343; | ||||
&RFC8344; | <!-- I-D.draft-ietf-ospf-yang-28; in MISSREF state as of 2/18/20 --> | |||
&RFC8349; | ||||
&RFC8446; | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I- | |||
</references> | D.ietf-ospf-yang.xml"/> | |||
<references title="Informative References"> | ||||
&RFC7951; | </references> | |||
&RFC8340; | </references> | |||
&RFC8407; | <section anchor="sect-a" numbered="true" toc="default"> | |||
&I-D.ietf-netconf-subscribed-notifications; | <name>Data Tree Example</name> | |||
&I-D.ietf-netconf-yang-push; | <t> | |||
&I-D.ietf-bfd-yang; | ||||
&I-D.ietf-isis-yang-isis-cfg; | ||||
&I-D.ietf-ospf-yang; | ||||
</references> | ||||
<section title="Data Tree Example" anchor="sect-a"><t> | ||||
This section contains an example of an instance data tree in the JSON | This section contains an example of an instance data tree in the JSON | |||
encoding <xref target="RFC7951"/>, containing both configuration and state da ta.</t> | encoding <xref target="RFC7951" format="default"/>, containing both configura tion and state data.</t> | |||
<figure><artwork><![CDATA[ | <figure anchor="router-example"> | |||
<name>RIPng Example</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
+---------------------+ | +---------------------+ | |||
| | | | | | |||
| Router 203.0.113.1 | | | Router 203.0.113.1 | | |||
| | | | | | |||
+----------+----------+ | +----------+----------+ | |||
|eth1 | |eth1 | |||
|2001:db8:0:1::1/64 | |2001:db8:0:1::1/64 | |||
| | | | |||
| | | | |||
|2001:db8:0:1::2/64 | |2001:db8:0:1::2/64 | |||
+----------+----------+ | +----------+----------+ | |||
| | | | | | | | |||
| Another Router +---------| 2001:db8:0:2::/64 | | Another Router +---------| 2001:db8:0:2::/64 | |||
| | | | | | | | |||
+---------------------+ | +---------------------+ | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t> | <t> | |||
The configuration instance data tree for Router 203.0.113.1 in the | The configuration instance data tree for Router 203.0.113.1 in | |||
above figure could be as follows:</t> | <xref target="router-example"/> could be as follows:</t> | |||
<sourcecode type="yang"><![CDATA[ | ||||
<figure><artwork><![CDATA[ | ||||
{ | { | |||
"ietf-interfaces:interfaces": { | "ietf-interfaces:interfaces": { | |||
"interface": [ | "interface": [ | |||
{ | { | |||
"name": "eth1", | "name": "eth1", | |||
"description": "An interface with RIPng enabled.", | "description": "An interface with RIPng enabled.", | |||
"type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
"ietf-ip:ipv6": { | "ietf-ip:ipv6": { | |||
"address": [ | "address": [ | |||
{ | { | |||
skipping to change at line 1827 ¶ | skipping to change at line 1845 ¶ | |||
"control-plane-protocols": { | "control-plane-protocols": { | |||
"control-plane-protocol": [ | "control-plane-protocol": [ | |||
{ | { | |||
"type": "ietf-rip:ripng", | "type": "ietf-rip:ripng", | |||
"name": "ripng-1", | "name": "ripng-1", | |||
"description": "RIPng instance ripng-1.", | "description": "RIPng instance ripng-1.", | |||
"ietf-rip:rip": { | "ietf-rip:rip": { | |||
"redistribute": { | "redistribute": { | |||
"connected": { | "connected": { | |||
} | } | |||
} | }, | |||
"interfaces": { | "interfaces": { | |||
"interface": [ | "interface": [ | |||
{ | { | |||
"interface": "eth1", | "interface": "eth1", | |||
"split-horizon": "poison-reverse" | "split-horizon": "poison-reverse" | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
The cooresponding operational state data for Router 203.0.113.1 could | The corresponding operational state data for Router 203.0.113.1 could | |||
be as follows: | be as follows: | |||
{ | { | |||
"ietf-interfaces:interfaces": { | "ietf-interfaces:interfaces": { | |||
"interface": [ | "interface": [ | |||
{ | { | |||
"name": "eth1", | "name": "eth1", | |||
"description": "An interface with RIPng enabled.", | "description": "An interface with RIPng enabled.", | |||
"type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
"phys-address": "00:00:5e:00:53:01", | "phys-address": "00:00:5e:00:53:01", | |||
skipping to change at line 1909 ¶ | skipping to change at line 1927 ¶ | |||
] | ] | |||
}, | }, | |||
"control-plane-protocols": { | "control-plane-protocols": { | |||
"control-plane-protocol": [ | "control-plane-protocol": [ | |||
{ | { | |||
"type": "ietf-rip:ripng", | "type": "ietf-rip:ripng", | |||
"name": "ripng-1", | "name": "ripng-1", | |||
"description": "RIPng instance ripng-1.", | "description": "RIPng instance ripng-1.", | |||
"ietf-rip:rip": { | "ietf-rip:rip": { | |||
"default-metric": 1, | "default-metric": 1, | |||
"next-triggered-update": 5 | "next-triggered-update": 5, | |||
"interfaces": { | "interfaces": { | |||
"interface": [ | "interface": [ | |||
{ | { | |||
"interface": "eth1", | "interface": "eth1", | |||
"oper-status": "up", | "oper-status": "up", | |||
"cost": 1, | "cost": 1, | |||
"split-horizon": "poison-reverse", | "split-horizon": "poison-reverse", | |||
"valid-address": true | "valid-address": true | |||
} | } | |||
] | ] | |||
}, | }, | |||
"ipv6" { | "ipv6": { | |||
"neighbors": { | "neighbors": { | |||
"neighbor": [ | "neighbor": [ | |||
{ | { | |||
"address": "fe80::200:5eff:fe00:5302", | "ipv6-address": "fe80::200:5eff:fe00:5302", | |||
"last-update": "2017-01-02T10:34:55+02:00" | "last-update": "2017-01-02T10:34:55+02:00" | |||
} | } | |||
] | ] | |||
} | }, | |||
"routes": { | "routes": { | |||
"route": [ | "route": [ | |||
{ | { | |||
"ipv6-prefix": "2001:db8:0:1::/64", | "ipv6-prefix": "2001:db8:0:1::/64", | |||
"interface": "eth1", | "interface": "eth1", | |||
"redistributed": true, | "redistributed": true, | |||
"route-type": "connected", | "route-type": "connected", | |||
"metric": 1, | "metric": 1, | |||
"expire-time": 22 | "expire-time": 22 | |||
}, | }, | |||
skipping to change at line 1965 ¶ | skipping to change at line 1983 ¶ | |||
"requests-sent": 262, | "requests-sent": 262, | |||
"responses-rcvd": 261, | "responses-rcvd": 261, | |||
"responses-sent": 523 | "responses-sent": 523 | |||
} | } | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </section> | |||
</section> | </back> | |||
</rfc> | ||||
</back> | ||||
</rfc> | ||||
End of changes. 222 change blocks. | ||||
663 lines changed or deleted | 695 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |