| 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/ | ||||