| rfc8652xml2.original.xml | rfc8652.xml | |||
|---|---|---|---|---|
| <?xml version='1.0' encoding='utf-8'?> | <?xml version='1.0' encoding='utf-8'?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
| <!ENTITY RFC1112 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.1112.xml"> | ||||
| <!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.2119.xml"> | ||||
| <!ENTITY RFC2236 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.2236.xml"> | ||||
| <!ENTITY RFC2710 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.2710.xml"> | ||||
| <!ENTITY RFC3376 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.3376.xml"> | ||||
| <!ENTITY RFC3688 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.3688.xml"> | ||||
| <!ENTITY RFC3810 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.3810.xml"> | ||||
| <!ENTITY RFC4607 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.4607.xml"> | ||||
| <!ENTITY RFC6020 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.6020.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 RFC8174 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.8174.xml"> | ||||
| <!ENTITY RFC8294 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.8294.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 RFC8519 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.8519.xml"> | ||||
| <!ENTITY RFC3569 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.3569.xml"> | ||||
| <!ENTITY RFC4541 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.4541.xml"> | ||||
| <!ENTITY RFC4605 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.4605.xml"> | ||||
| <!ENTITY RFC5790 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.5790.xml"> | ||||
| <!ENTITY RFC6636 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.6636.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"> | ||||
| ]> | ||||
| <rfc submissionType="IETF" docName="draft-ietf-pim-igmp-mld-yang-15" category="s | ||||
| td"> | ||||
| <!-- Generated by id2xml 1.4.4 on 2019-07-08T17:40:23Z --> | ||||
| <?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="IGMP & MLD Yang Model">A YANG Data Model for Internet | ||||
| Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD)</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="Feng Guo" initials="F." surname="Guo"> | ||||
| <organization abbrev="Huawei">Huawei Technologies</organization> | ||||
| <address><postal><street>Huawei Bldg., No.156 Beiqing Rd.</street> | ||||
| <street>Beijing 100095</street> | ||||
| <street>China</street> | ||||
| </postal> | ||||
| <email>guofeng@huawei.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Mahesh Sivakumar" initials="M." surname="Sivakumar"> | ||||
| <organization abbrev="Juniper">Juniper Networks</organization> | ||||
| <address><postal><street>1133 Innovation Way</street> | ||||
| <street>Sunnyvale, California</street> | ||||
| <street>USA</street> | ||||
| </postal> | ||||
| <email>sivakumar.mahesh@gmail.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Pete McAllister" initials="P." surname="McAllister"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" | |||
| <organization>Metaswitch Networks</organization> | category="std" consensus="yes" number="8652" ipr="trust200902" | |||
| <address><postal><street>100 Church Street</street> | obsoletes="" updates="" xml:lang="en" sortRefs="true" symRefs="true" | |||
| <street>Enfield EN2 6BQ</street> | tocInclude="true" version="3" docName="draft-ietf-pim-igmp-mld-yang-15"> | |||
| <street>UK</street> | <!-- xml2rfc v2v3 conversion 2.28.0 --> | |||
| </postal> | <!-- Generated by id2xml 1.4.4 on 2019-07-08T17:40:23Z --> | |||
| <email>pete.mcallister@metaswitch.com</email> | <front> | |||
| </address> | <title abbrev="IGMP & MLD YANG Module">A YANG Data Model for the Interne | |||
| </author> | t Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD)</ | |||
| title> | ||||
| <seriesInfo name="RFC" value="8652"/> | ||||
| <author fullname="Xufeng Liu" initials="X." surname="Liu"> | ||||
| <organization>Volta Networks</organization> | ||||
| <address> | ||||
| <email>xufeng.liu.ietf@gmail.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Feng Guo" initials="F." surname="Guo"> | ||||
| <organization abbrev="Huawei">Huawei Technologies</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>Huawei Bldg., No. 156 Beiqing Rd.</street> | ||||
| <street>Haidian District</street> | ||||
| <city>Beijing</city><code>100095</code> | ||||
| <country>China</country> | ||||
| </postal> | ||||
| <email>guofeng@huawei.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Mahesh Sivakumar" initials="M." surname="Sivakumar"> | ||||
| <organization abbrev="Juniper">Juniper Networks</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>1133 Innovation Way</street> | ||||
| <city>Sunnyvale</city> <region>California</region> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>sivakumar.mahesh@gmail.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Pete McAllister" initials="P." surname="McAllister"> | ||||
| <organization>Metaswitch Networks</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>100 Church Street</street> | ||||
| <city>Enfield</city> <code>EN2 6BQ</code> | ||||
| <country>United Kingdom</country> | ||||
| </postal> | ||||
| <email>pete.mcallister@metaswitch.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Anish Peter" initials="A." surname="Peter"> | ||||
| <organization>IP Infusion India</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <extaddr>RMZ Centennial, Block D 401</extaddr> | ||||
| <street>Kundanahalli Main Road, Mahadevapura Post</street> | ||||
| <city>Bangalore</city> | ||||
| <country>India</country> | ||||
| </postal> | ||||
| <email>anish.ietf@gmail.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <date month="November" year="2019"/> | ||||
| <workgroup>PIM Working Group</workgroup> | ||||
| <author fullname="Anish Peter" initials="A." surname="Peter"> | <keyword>YANG, IGMP, MLD, multicast, data model, ietf-igmp-mld, network mana | |||
| <organization>Individual</organization> | gement, routing</keyword> | |||
| <address><email>anish.ietf@gmail.com</email> | <abstract> | |||
| </address> | <t> | |||
| </author> | ||||
| <date month="July" year="2019"/> | ||||
| <workgroup>PIM Working Group</workgroup> | ||||
| <abstract><t> | ||||
| This document defines a YANG data model that can be used to | This document defines a YANG data model that can be used to | |||
| configure and manage Internet Group Management Protocol (IGMP) and | configure and manage Internet Group Management Protocol (IGMP) and | |||
| Multicast Listener Discovery (MLD) devices.</t> | Multicast Listener Discovery (MLD) devices.</t> | |||
| </abstract> | ||||
| </abstract> | </front> | |||
| </front> | <middle> | |||
| <section anchor="s-1" numbered="true" toc="default"> | ||||
| <middle> | <name>Introduction</name> | |||
| <section title="Introduction" anchor="section-1"><t> | <t> | |||
| YANG <xref target="RFC6020"/> <xref target="RFC7950"/> is a data definition l | YANG <xref target="RFC6020" format="default"/> <xref target="RFC7950" format= | |||
| anguage that was | "default"/> is a data definition language that was | |||
| introduced to model the configuration and running state of a device | introduced to model the configuration and running state of a device | |||
| managed using network management protocols such as NETCONF <xref target="RFC6 | managed using network management protocols such as NETCONF <xref target="RFC6 | |||
| 241"/> | 241" format="default"/> | |||
| or RESTCONF <xref target="RFC8040"/>. YANG is now also being used as a compon | or RESTCONF <xref target="RFC8040" format="default"/>. YANG is now also being | |||
| ent of | used as a component of | |||
| wider management interfaces, such as command line interfaces (CLIs).</t> | wider management interfaces, such as command-line interfaces (CLIs).</t> | |||
| <t> | ||||
| <t> | ||||
| This document defines a YANG data model that can be used to | This document defines a YANG data model that can be used to | |||
| configure and manage Internet Group Management Protocol (IGMP) and | configure and manage Internet Group Management Protocol (IGMP) and | |||
| Multicast Listener Discovery (MLD) devices. The protocol versions | Multicast Listener Discovery (MLD) devices. The protocol versions | |||
| include IGMPv1 <xref target="RFC1112"/>, IGMPv2 <xref target="RFC2236"/>, IGM | include IGMPv1 <xref target="RFC1112" format="default"/>, IGMPv2 <xref target | |||
| Pv3 <xref target="RFC3376"/>, MLDv1 | ="RFC2236" format="default"/>, IGMPv3 <xref target="RFC3376" format="default"/>, | |||
| <xref target="RFC2710"/>, and MLDv2 <xref target="RFC3810"/>. The core featur | MLDv1 | |||
| es of the IGMP and | <xref target="RFC2710" format="default"/>, and MLDv2 <xref target="RFC3810" f | |||
| ormat="default"/>. The core features of the IGMP and | ||||
| MLD protocols are defined as required. Non-core features are | MLD protocols are defined as required. Non-core features are | |||
| defined as optional in the provided data model.</t> | defined as optional in the provided data model.</t> | |||
| <t> | <t> | |||
| The YANG model in this document conforms to the Network Management | The YANG data model in this document conforms to the Network Management | |||
| Datastore Architecture (NMDA) <xref target="RFC8342"/>.</t> | Datastore Architecture (NMDA) <xref target="RFC8342" format="default"/>.</t> | |||
| <section anchor="s-1.1" numbered="true" toc="default"> | ||||
| <section title="Terminology" anchor="section-1.1"><t> | <name>Terminology</name> | |||
| <t> | ||||
| The terminology for describing YANG data models is found in | The terminology for describing YANG data models is found in | |||
| <xref target="RFC6020"/> and <xref target="RFC7950"/>, including:</t> | <xref target="RFC6020" format="default"/> and <xref target="RFC7950" format=" | |||
| default"/>, including:</t> | ||||
| <t><list style="symbols"><t>augment</t> | <ul spacing="normal"> | |||
| <li>augment</li> | ||||
| <t>data model</t> | <li>data model</li> | |||
| <li>data node</li> | ||||
| <t>data node</t> | <li>identity</li> | |||
| <li>module</li> | ||||
| <t>identity</t> | </ul> | |||
| <t> | ||||
| <t>module</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| The following abbreviations are used in this document and the | The following abbreviations are used in this document and the | |||
| defined model:</t> | defined model:</t> | |||
| <dl newline="false" spacing="normal" indent="3"> | ||||
| <dt>IGMP:</dt> | ||||
| <dd> | ||||
| <t><list style="hanging" hangIndent="3"><t hangText="IGMP:"> | Internet Group Management Protocol <xref target="RFC3376" format="default | |||
| <vspace blankLines="1"/> | "/>. | |||
| Internet Group Management Protocol <xref target="RFC3376"/>. | </dd> | |||
| </t> | <dt>MLD:</dt> | |||
| <dd> | ||||
| <t hangText="MLD:"> | ||||
| <vspace blankLines="1"/> | ||||
| Multicast Listener Discovery <xref target="RFC3810"/>. | ||||
| </t> | ||||
| <t hangText="SSM:"> | ||||
| <vspace blankLines="1"/> | ||||
| Source-Specific Multicast service model <xref target="RFC3569"/> <xref ta | ||||
| rget="RFC4607"/>. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| <!-- [rfced] Conventions section moved from original doc. Please review --> | ||||
| <section title="Conventions used in this document" anchor="section-1.2"><t> | ||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
| "OPTIONAL" in this document are to be interpreted as described in | ||||
| BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only | ||||
| when, they appear in all capitals, as shown here.</t> | ||||
| </section> | Multicast Listener Discovery <xref target="RFC3810" format="default"/>. | |||
| </dd> | ||||
| <dt>SSM:</dt> | ||||
| <dd> | ||||
| <section title="Tree Diagrams" anchor="section-1.2.a"><t> | Source-Specific Multicast service model <xref target="RFC3569" format="de | |||
| fault"/> <xref target="RFC4607" format="default"/>. | ||||
| </dd> | ||||
| </dl> | ||||
| </section> | ||||
| <section anchor="s-1.2" numbered="true" toc="default"> | ||||
| <name>Conventions Used in This Document</name> | ||||
| <t> | ||||
| The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | ||||
| IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | ||||
| NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | ||||
| RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
| "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
| be interpreted as | ||||
| described in BCP 14 <xref target="RFC2119" format="default"/> <xref target=" | ||||
| RFC8174" format="default"/> | ||||
| when, and only when, they appear in all capitals, as shown here. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="s-1.2.a" numbered="true" toc="default"> | ||||
| <name>Tree Diagrams</name> | ||||
| <t> | ||||
| Tree diagrams used in this document follow the notation defined in | Tree diagrams used in this document follow the notation defined in | |||
| <xref target="RFC8340"/>.</t> | <xref target="RFC8340" format="default"/>.</t> | |||
| </section> | ||||
| </section> | <section anchor="s-1.3" numbered="true" toc="default"> | |||
| <name>Prefixes in Data Node Names</name> | ||||
| <section title="Prefixes in Data Node Names" anchor="section-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 Table 1.</t> | |||
| <table anchor="ref-prefixes-and-corresponding-yang-modules" align="cente | ||||
| <texttable title="Prefixes and Corresponding YANG Modules" anchor="ref-pr | r"> | |||
| efixes-and-corresponding-yang-modules" style="full"><ttcol> Prefix</ttcol> | <name>Prefixes and Corresponding YANG Modules</name> | |||
| <ttcol> YANG module</ttcol> | <thead> | |||
| <ttcol> Reference</ttcol> | <tr> | |||
| <c>yang</c> | <th align="left"> Prefix</th> | |||
| <c>ietf-yang-types</c> | <th align="left"> YANG module</th> | |||
| <c>[RFC6991]</c> | <th align="left"> Reference</th> | |||
| <c>inet</c> | </tr> | |||
| <c>ietf-inet-types</c> | </thead> | |||
| <c>[RFC6991]</c> | <tbody> | |||
| <c>if</c> | <tr> | |||
| <c>ietf-interfaces</c> | <td align="left">yang</td> | |||
| <c>[RFC8343]</c> | <td align="left">ietf-yang-types</td> | |||
| <c>ip</c> | <td align="left"><xref target="RFC6991"/></td> | |||
| <c>ietf-ip</c> | </tr> | |||
| <c>[RFC8344]</c> | <tr> | |||
| <c>rt</c> | <td align="left">inet</td> | |||
| <c>ietf-routing</c> | <td align="left">ietf-inet-types</td> | |||
| <c>[RFC8349]</c> | <td align="left"><xref target="RFC6991"/></td> | |||
| <c>rt-types</c> | </tr> | |||
| <c>ietf-routing-types</c> | <tr> | |||
| <c>[RFC8294]</c> | <td align="left">if</td> | |||
| <c>acl</c> | <td align="left">ietf-interfaces</td> | |||
| <c>ietf-access-control-list</c> | <td align="left"><xref target="RFC8343"/></td> | |||
| <c>[RFC8519]</c> | </tr> | |||
| </texttable> | <tr> | |||
| </section> | <td align="left">ip</td> | |||
| <td align="left">ietf-ip</td> | ||||
| </section> | <td align="left"><xref target="RFC8344"/></td> | |||
| </tr> | ||||
| <section title="Design of Data model" anchor="section-2"><section title=" | <tr> | |||
| Scope of Model" anchor="section-2.1"><t> | <td align="left">rt</td> | |||
| The model covers IGMPv1 <xref target="RFC1112"/>, IGMPv2 <xref target="RFC223 | <td align="left">ietf-routing</td> | |||
| 6"/>, IGMPv3 | <td align="left"><xref target="RFC8349"/></td> | |||
| <xref target="RFC3376"/>, MLDv1 <xref target="RFC2710"/>, and MLDv2 <xref tar | </tr> | |||
| get="RFC3810"/>.</t> | <tr> | |||
| <td align="left">rt-types</td> | ||||
| <t> | <td align="left">ietf-routing-types</td> | |||
| This model does not cover other IGMP and MLD related protocols such | <td align="left"><xref target="RFC8294"/></td> | |||
| as IGMP/MLD Proxy <xref target="RFC4605"/> or IGMP/MLD Snooping <xref target= | </tr> | |||
| "RFC4541"/> etc., | <tr> | |||
| <td align="left">acl</td> | ||||
| <td align="left">ietf-access-control-list</td> | ||||
| <td align="left"><xref target="RFC8519"/></td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="s-2" numbered="true" toc="default"> | ||||
| <name>Design of the Data Model</name> | ||||
| <section anchor="s-2.1" numbered="true" toc="default"> | ||||
| <name>Scope of Model</name> | ||||
| <t> | ||||
| The model covers IGMPv1 <xref target="RFC1112" format="default"/>, IGMPv2 <xr | ||||
| ef target="RFC2236" format="default"/>, IGMPv3 | ||||
| <xref target="RFC3376" format="default"/>, MLDv1 <xref target="RFC2710" forma | ||||
| t="default"/>, and MLDv2 <xref target="RFC3810" format="default"/>.</t> | ||||
| <t> | ||||
| This model does not cover other IGMP- and MLD-related protocols such | ||||
| as IGMP/MLD Proxy <xref target="RFC4605" format="default"/> or IGMP/MLD Snoop | ||||
| ing <xref target="RFC4541" format="default"/> etc., | ||||
| which will be specified in separate documents.</t> | which will be specified in separate documents.</t> | |||
| <t> | ||||
| <t> | ||||
| This model can be used to configure and manage various versions of | This model can be used to configure and manage various versions of | |||
| IGMP and MLD protocols. The operational state data and statistics | IGMP and MLD protocols. The operational state data and statistics | |||
| can be retrieved by this model. Even though no protocol specific | can be retrieved by this model. Even though no protocol-specific | |||
| notifications are defined in this model, the subscription and push | notifications are defined in this model, the subscription and push | |||
| mechanism defined in <xref target="I-D.ietf-netconf-subscribed-notifications" | mechanism defined in <xref target="RFC8639" format="default"/> and | |||
| /> and | <xref target="RFC8641" format="default"/> can be implemented by the user to s | |||
| <xref target="I-D.ietf-netconf-yang-push"/> can be used by the user to subscr | ubscribe to | |||
| ibe to | ||||
| notifications on the data nodes in this model.</t> | notifications on the data nodes in this model.</t> | |||
| <t> | ||||
| <t> | ||||
| The model contains all the basic configuration parameters to operate | The model contains all the basic configuration parameters to operate | |||
| the protocols listed above. Depending on the implementation choices, | the protocols listed above. Depending on the implementation choices, | |||
| some systems may not allow some of the advanced parameters to be | some systems may not allow some of the advanced parameters to be | |||
| configurable. The occasionally implemented parameters are modeled as | configurable. The occasionally implemented parameters are modeled as | |||
| optional features in this model, while the rarely implemented | optional features in this model, while the rarely implemented | |||
| parameters are not included this model and left for augmentation. | parameters are not included in this model and left for augmentation. | |||
| This model can be extended, and has been structured in a way that | This model can be extended, and it has been structured in a way that | |||
| such extensions can be conveniently made.</t> | such extensions can be conveniently made.</t> | |||
| <t> | ||||
| <t> | ||||
| The protocol parameters covered in this model can been seen from the | The protocol parameters covered in this model can been seen from the | |||
| model structure described in <xref target="section-3"/>.</t> | model structure described in <xref target="s-3" format="default"/>.</t> | |||
| <t> | ||||
| <t> | ||||
| The protocol parameters that were considered but are not covered in | The protocol parameters that were considered but are not covered in | |||
| this model are described in the following sections.</t> | this model are described in the following sections.</t> | |||
| <section anchor="s-2.1.1" numbered="true" toc="default"> | ||||
| <section title="Parameters Not Covered at Global Level" anchor="section-2 | <name>Parameters Not Covered at the Global Level</name> | |||
| .1.1"><t> | <t> | |||
| The configuration parameters and operational states not covered on | The configuration parameters and operational states not covered on | |||
| an IGMP instance or an MLD instance are:</t> | an IGMP instance or an MLD instance are:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"><t>Explicit tracking</t> | <li>Explicit tracking</li> | |||
| <li>Maximum transmit rate</li> | ||||
| <t>Maximum transmit rate</t> | <li>Last member query count</li> | |||
| <li>Other querier present time</li> | ||||
| <t>Last member query count</t> | <li>Send router alert</li> | |||
| <li>Startup query interval</li> | ||||
| <t>Other querier present time</t> | <li>Startup query count</li> | |||
| </ul> | ||||
| <t>Send router alert</t> | </section> | |||
| <section anchor="s-2.1.2" numbered="true" toc="default"> | ||||
| <t>Startup query interval</t> | <name>Parameters Not Covered at the Interface Level</name> | |||
| <t> | ||||
| <t>Startup query count</t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| <section title="Parameters Not Covered at Interface Level" anchor="sectio | ||||
| n-2.1.2"><t> | ||||
| The configuration parameters and operational states not covered on | The configuration parameters and operational states not covered on | |||
| an IGMP interface or an MLD interface are:</t> | an IGMP interface or an MLD interface are:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"><t>Disable router alert check</t> | <li>Disable router alert check</li> | |||
| <li>Drop IGMP version 1, IGMP version 2, or MLD version 1</li> | ||||
| <t>Drop IGMP version 1, IGMP version 2, or MLD version 1</t> | <li>Last member query count</li> | |||
| <li>Maximum number of sources</li> | ||||
| <t>Last member query count</t> | <li>Other querier present time</li> | |||
| <li>Passive mode</li> | ||||
| <t>Maximum number of sources</t> | <li>Promiscuous mode</li> | |||
| <li>Query before immediate leave</li> | ||||
| <t>Other querier present time</t> | <li>Send router alert</li> | |||
| </ul> | ||||
| <t>Passive mode</t> | </section> | |||
| </section> | ||||
| <t>Promiscuous mode</t> | <section anchor="s-2.2" numbered="true" toc="default"> | |||
| <name>Optional Capabilities</name> | ||||
| <t>Query before immediate leave</t> | <t> | |||
| <t>Send router alert</t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| </section> | ||||
| <section title="Optional Capabilities" anchor="section-2.2"><t> | ||||
| This model is designed to represent the capabilities of IGMP and MLD | This model is designed to represent the capabilities of IGMP and MLD | |||
| devices with various specifications, including the basic capability | devices with various specifications, including the basic capability | |||
| subsets of the IGMP and MLD protocols. The main design goals of | subsets of the IGMP and MLD protocols. The main design goals of | |||
| this document are that the basic capabilities described in the model | this document are that the basic capabilities described in the model | |||
| are supported by any major now-existing implementation, and that the | are supported by any major now-existing implementation, and that the | |||
| configuration of all implementations meeting the specifications is | configuration of all implementations meeting the specifications is | |||
| easy to express through some combination of the optional features in | easy to express through some combination of the optional features in | |||
| the model and simple vendor augmentations.</t> | the model and simple vendor augmentations.</t> | |||
| <t> | ||||
| <t> | There is also value in widely supported features being standardized, | |||
| There is also value in widely-supported features being standardized, | ||||
| to provide a standardized way to access these features, to save work | to provide a standardized way to access these features, to save work | |||
| for individual vendors, and so that mapping between different | for individual vendors, and so that mapping between different | |||
| vendors' configuration is not needlessly complicated. Therefore this | vendors' configuration is not needlessly complicated. Therefore, this | |||
| model declares a number of features representing capabilities that | model declares a number of features representing capabilities that | |||
| not all deployed devices support.</t> | not all deployed devices support.</t> | |||
| <t> | ||||
| <t> | ||||
| The extensive use of feature declarations should also substantially | The extensive use of feature declarations should also substantially | |||
| simplify the capability negotiation process for a vendor's IGMP and | simplify the capability negotiation process for a vendor's IGMP and | |||
| MLD implementations.</t> | MLD implementations.</t> | |||
| <t> | ||||
| <t> | ||||
| On the other hand, operational state parameters are not so widely | On the other hand, operational state parameters are not so widely | |||
| designated as features, as there are many cases where the defaulting | designated as features, as there are many cases where the defaulting | |||
| of an operational state parameter would not cause any harm to the | of an operational state parameter would not cause any harm to the | |||
| system, and it is much more likely that an implementation without | system, and it is much more likely that an implementation without | |||
| native support for a piece of operational state would be able to | native support for a piece of operational state would be able to | |||
| derive a suitable value for a state variable that is not natively | derive a suitable value for a state variable that is not natively | |||
| supported.</t> | supported.</t> | |||
| </section> | ||||
| </section> | <section anchor="s-2.3" numbered="true" toc="default"> | |||
| <name>Position of Address Family in Hierarchy</name> | ||||
| <section title="Position of Address Family in Hierarchy" anchor="section- | <t> | |||
| 2.3"><t> | ||||
| The protocol IGMP only supports IPv4, while the protocol MLD only | The protocol IGMP only supports IPv4, while the protocol MLD only | |||
| supports IPv6. The data model defined in this document can be used | supports IPv6. The data model defined in this document can be used | |||
| for both IPv4 and IPv6 address families.</t> | for both IPv4 and IPv6 address families.</t> | |||
| <t> | ||||
| <t> | ||||
| This document defines IGMP and MLD as separate schema branches in | This document defines IGMP and MLD as separate schema branches in | |||
| the structure. The benefits are:</t> | the structure. The benefits are:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"><t>The model can support IGMP (IPv4), MLD (IPv6) | <li>The model can support IGMP (IPv4), MLD (IPv6), or both | |||
| , or both | ||||
| optionally and independently. Such flexibility cannot be | optionally and independently. Such flexibility cannot be | |||
| achieved cleanly with a combined branch.</t> | achieved cleanly with a combined branch.</li> | |||
| <li>The structure is consistent with other YANG data models such as RF | ||||
| <t>The structure is consistent with other YANG models such as RFC | C | |||
| 8344, which uses separate branches for IPv4 and IPv6.</t> | 8344, which uses separate branches for IPv4 and IPv6.</li> | |||
| <li>The separate branches for IGMP and MLD can accommodate their | ||||
| <t>The separate branches for IGMP and MLD can accommodate their | ||||
| differences better and cleaner. The two branches can better | differences better and cleaner. The two branches can better | |||
| support different features and node types.</t> | support different features and node types.</li> | |||
| </ul> | ||||
| </list> | </section> | |||
| </t> | </section> | |||
| <section anchor="s-3" numbered="true" toc="default"> | ||||
| </section> | <name>Module Structure</name> | |||
| <t> | ||||
| </section> | ||||
| <section title="Module Structure" anchor="section-3"><t> | ||||
| This model augments the core routing data model specified in | This model augments the core routing data model specified in | |||
| <xref target="RFC8349"/>.</t> | <xref target="RFC8349" format="default"/>.</t> | |||
| <sourcecode type="yangtree"><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| +--rw routing | +--rw routing | |||
| +--rw router-id? | +--rw router-id? | |||
| +--rw control-plane-protocols | +--rw control-plane-protocols | |||
| | +--rw control-plane-protocol* [type name] | | +--rw control-plane-protocol* [type name] | |||
| | +--rw type | | +--rw type | |||
| | +--rw name | | +--rw name | |||
| | +--rw igmp <= Augmented by this Model | | +--rw igmp <= Augmented by this Model | |||
| ... | ... | |||
| | +--rw mld <= Augmented by this Model | | +--rw mld <= Augmented by this Model | |||
| ... | ... | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | <t> | |||
| <t> | ||||
| The "igmp" container instantiates an IGMP protocol of version | The "igmp" container instantiates an IGMP protocol of version | |||
| IGMPv1, IGMPv2, or IGMPv3. The "mld" container instantiates an MLD | IGMPv1, IGMPv2, or IGMPv3. The "mld" container instantiates an MLD | |||
| protocol of version MLDv1 or MLDv2.</t> | protocol of version MLDv1 or MLDv2.</t> | |||
| <t> | ||||
| <t> | ||||
| The YANG data model defined in this document conforms to the Network | The YANG data model defined in this document conforms to the Network | |||
| Management Datastore Architecture (NMDA) <xref target="RFC8342"/>. The operat ional | Management Datastore Architecture (NMDA) <xref target="RFC8342" format="defau lt"/>. The operational | |||
| state data is combined with the associated configuration data in the | state data is combined with the associated configuration data in the | |||
| same hierarchy <xref target="RFC8407"/>.</t> | same hierarchy <xref target="RFC8407" format="default"/>.</t> | |||
| <t> | ||||
| <t> | ||||
| A configuration data node is marked as mandatory only when its value | A configuration data node is marked as mandatory only when its value | |||
| must be provided by the user. Where nodes are not essential to | must be provided by the user. Where nodes are not essential to | |||
| protocol operation, they are marked as optional. Some other nodes | protocol operation, they are marked as optional. Some other nodes | |||
| are essential but have a default specified, so that they are also | are essential but have a default specified, so that they are also | |||
| optional and need not be configured explicitly.</t> | optional and need not be configured explicitly.</t> | |||
| <section anchor="s-3.1" numbered="true" toc="default"> | ||||
| <name>IGMP Configuration and Operational State</name> | ||||
| <t> | ||||
| <section title="IGMP Configuration and Operational State" anchor="section | The IGMP data is modeled as a schema subtree augmenting the | |||
| -3.1"><t> | "control-plane-protocol" data node under | |||
| The IGMP data is modeled as a schema subtree augmenting the | "/rt:routing/rt:control-plane-protocols" in the module | |||
| "control-plane-protocol" data node under "/rt:routing/rt:control-plane-protoc | ietf-routing, following the convention described in <xref target="RFC83 | |||
| ols" in the module ietf-routing, following the | 49" format="default"/>. The augmentation to the module | |||
| convention described in <xref target="RFC8349"/>. The augmentation to the mod | ietf-routing allows this model to support multiple instances | |||
| ule | of IGMP, but a restriction <bcp14>MAY</bcp14> be added depending on the | |||
| ietf-routing allows this model to support multiple instances of | implementation and the device. The identity "igmp" is | |||
| IGMP, but a restriction MAY be added depending on the implementation | derived from the "rt:control-plane-protocol" base identity | |||
| and the device. The identity "igmp" is derived from the "rt:control-plane-pro | and indicates that a control-plane-protocol instance is | |||
| tocol" base identity and indicates that a control-plane-protocol instance is IGM | IGMP.</t> | |||
| P.</t> | <t> | |||
| <t> | ||||
| The IGMP subtree is a three-level hierarchy structure as listed | The IGMP subtree is a three-level hierarchy structure as listed | |||
| below:</t> | below:</t> | |||
| <dl newline="false" spacing="normal" indent="3"> | ||||
| <t><list style="hanging" hangIndent="3"><t hangText="Global level: Includ | <dt>Global level:</dt> | |||
| ing IGMP configuration and operational state"> attributes for the entire IGMP pr | <dd>Including IGMP configuration and operational state attributes for | |||
| otocol instance in this router. | the entire IGMP protocol instance in this router.</dd> | |||
| </t> | <dt>Interface-global level:</dt> | |||
| <dd> Including configuration data nodes that | ||||
| <t hangText="Interface-global level: Including configuration data nodes t | ||||
| hat"> | ||||
| are applicable to all the interfaces whose corresponding nodes are | are applicable to all the interfaces whose corresponding nodes are | |||
| not defined or not configured at the interface level. For such a | not defined or not configured at the interface level. For such a | |||
| node at the interface level, the system uses the same value of the | node at the interface level, the system uses the same value of the | |||
| corresponding node at the interface-global level. | corresponding node at the interface-global level. | |||
| </t> | </dd> | |||
| <dt>Interface level:</dt> | ||||
| <t hangText="Interface level: Including IGMP configuration and operationa | <dd> Including IGMP configuration and operational | |||
| l"> | ||||
| state attributes specific to the given interface. For a | state attributes specific to the given interface. For a | |||
| configuration node at the interface level, there may exist a | configuration node at the interface level, there may exist a | |||
| corresponding configuration node with the same name at the | corresponding configuration node with the same name at the | |||
| interface-global level. The value configured on a node at the | interface-global level. The value configured on a node at the | |||
| interface level overrides the value configured on the corresponding | interface level overrides the value configured on the corresponding | |||
| node at the interface-global level. | node at the interface-global level. | |||
| </t> | </dd> | |||
| </dl> | ||||
| </list> | <sourcecode type="yangtree"><![CDATA[ | |||
| </t> | ||||
| <figure><artwork><![CDATA[ | ||||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol: | /rt:control-plane-protocol: | |||
| +--rw igmp {feature-igmp}? | +--rw igmp {feature-igmp}? | |||
| +--rw global | +--rw global | |||
| | +--rw enable? boolean {global-admin-enable}? | | +--rw enabled? boolean {global-admin-enable}? | |||
| | +--rw max-entries? uint32 {global-max-entries}? | | +--rw max-entries? uint32 {global-max-entries}? | |||
| | +--rw max-groups? uint32 {global-max-groups}? | | +--rw max-groups? uint32 {global-max-groups}? | |||
| | +--ro entries-count? uint32 | | +--ro entries-count? uint32 | |||
| | +--ro groups-count? uint32 | | +--ro groups-count? uint32 | |||
| | +--ro statistics | | +--ro statistics | |||
| | +--ro discontinuity-time? yang:date-and-time | | +--ro discontinuity-time? yang:date-and-time | |||
| | +--ro error | | +--ro error | |||
| | | +--ro total? yang:counter64 | | | +--ro total? yang:counter64 | |||
| | | +--ro query? yang:counter64 | | | +--ro query? yang:counter64 | |||
| | | +--ro report? yang:counter64 | | | +--ro report? yang:counter64 | |||
| skipping to change at line 481 ¶ | skipping to change at line 440 ¶ | |||
| | {intf-max-groups}? | | {intf-max-groups}? | |||
| +--rw interface* [interface-name] | +--rw interface* [interface-name] | |||
| +--rw interface-name if:interface-ref | +--rw interface-name if:interface-ref | |||
| +--rw last-member-query-interval? uint16 | +--rw last-member-query-interval? uint16 | |||
| +--rw query-interval? uint16 | +--rw query-interval? uint16 | |||
| +--rw query-max-response-time? uint16 | +--rw query-max-response-time? uint16 | |||
| +--rw require-router-alert? boolean | +--rw require-router-alert? boolean | |||
| | {intf-require-router-alert}? | | {intf-require-router-alert}? | |||
| +--rw robustness-variable? uint8 | +--rw robustness-variable? uint8 | |||
| +--rw version? uint8 | +--rw version? uint8 | |||
| +--rw enable? boolean | +--rw enabled? boolean | |||
| | {intf-admin-enable}? | | {intf-admin-enable}? | |||
| +--rw group-policy? | +--rw group-policy? | |||
| | -> /acl:acls/acl/name | | -> /acl:acls/acl/name | |||
| +--rw immediate-leave? empty | +--rw immediate-leave? empty | |||
| | {intf-immediate-leave}? | | {intf-immediate-leave}? | |||
| +--rw max-groups? uint32 | +--rw max-groups? uint32 | |||
| | {intf-max-groups}? | | {intf-max-groups}? | |||
| +--rw max-group-sources? uint32 | +--rw max-group-sources? uint32 | |||
| | {intf-max-group-sources}? | | {intf-max-group-sources}? | |||
| +--rw source-policy? | +--rw source-policy? | |||
| | -> /acl:acls/acl/name {intf-source-policy}? | | -> /acl:acls/acl/name {intf-source-policy}? | |||
| +--rw verify-source-subnet? empty | +--rw verify-source-subnet? empty | |||
| | {intf-verify-source-subnet}? | | {intf-verify-source-subnet}? | |||
| +--rw explicit-tracking? empty | +--rw explicit-tracking? empty | |||
| | {intf-explicit-tracking}? | | {intf-explicit-tracking}? | |||
| +--rw exclude-lite? empty | +--rw lite-exclude-filter? empty | |||
| | {intf-exclude-lite}? | | {intf-lite-exclude-filter}? | |||
| +--rw join-group* | +--rw join-group* | |||
| | rt-types:ipv4-multicast-group-address | | rt-types:ipv4-multicast-group-address | |||
| | {intf-join-group}? | | {intf-join-group}? | |||
| +--rw ssm-map* | +--rw ssm-map* | |||
| | | [ssm-map-source-addr ssm-map-group-policy] | | [ssm-map-source-addr ssm-map-group-policy] | |||
| | | {intf-ssm-map}? | | {intf-ssm-map}? | |||
| | +--rw ssm-map-source-addr ssm-map-ipv4-addr-type | | +--rw ssm-map-source-addr ssm-map-ipv4-addr-type | |||
| | +--rw ssm-map-group-policy string | | +--rw ssm-map-group-policy string | |||
| +--rw static-group* [group-addr source-addr] | +--rw static-group* [group-addr source-addr] | |||
| | | {intf-static-group}? | | {intf-static-group}? | |||
| | +--rw group-addr | | +--rw group-addr | |||
| | | rt-types:ipv4-multicast-group-address | | | rt-types:ipv4-multicast-group-address | |||
| | +--rw source-addr | | +--rw source-addr | |||
| | rt-types:ipv4-multicast-source-address | | rt-types:ipv4-multicast-source-address | |||
| +--ro oper-status enumeration | +--ro oper-status enumeration | |||
| +--ro querier inet:ipv4-address | +--ro querier inet:ipv4-address | |||
| +--ro joined-group* | +--ro joined-group* | |||
| | rt-types:ipv4-multicast-group-address | | rt-types:ipv4-multicast-group-address | |||
| | {intf-join-group}? | | {intf-join-group}? | |||
| +--ro group* [group-address] | +--ro group* [group-address] | |||
| skipping to change at line 533 ¶ | skipping to change at line 492 ¶ | |||
| +--ro up-time uint32 | +--ro up-time uint32 | |||
| +--ro last-reporter? inet:ipv4-address | +--ro last-reporter? inet:ipv4-address | |||
| +--ro source* [source-address] | +--ro source* [source-address] | |||
| +--ro source-address inet:ipv4-address | +--ro source-address inet:ipv4-address | |||
| +--ro expire uint32 | +--ro expire uint32 | |||
| +--ro up-time uint32 | +--ro up-time uint32 | |||
| +--ro host-count? uint32 | +--ro host-count? uint32 | |||
| | {intf-explicit-tracking}? | | {intf-explicit-tracking}? | |||
| +--ro last-reporter? inet:ipv4-address | +--ro last-reporter? inet:ipv4-address | |||
| +--ro host* [host-address] | +--ro host* [host-address] | |||
| | {intf-explicit-tracking}? | {intf-explicit-tracking}? | |||
| +--ro host-address inet:ipv4-address | +--ro host-address inet:ipv4-address | |||
| +--ro host-filter-mode enumeration | +--ro host-filter-mode enumeration | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </section> | |||
| </section> | <section anchor="s-3.2" numbered="true" toc="default"> | |||
| <name>MLD Configuration and Operational State</name> | ||||
| <section title="MLD Configuration and Operational State" anchor="section- | <t> | |||
| 3.2"><t> | ||||
| The MLD data is modeled as a schema subtree augmenting the "control-plane-pro tocol" data node under "/rt:routing/rt:control-plane-protocols" in the module ie tf-routing, following the convention | The MLD data is modeled as a schema subtree augmenting the "control-plane-pro tocol" data node under "/rt:routing/rt:control-plane-protocols" in the module ie tf-routing, following the convention | |||
| described in <xref target="RFC8349"/>. The augmentation to the module ietf-ro uting | described in <xref target="RFC8349" format="default"/>. The augmentation to t he module ietf-routing | |||
| allows this model to support multiple instances of MLD, but a | allows this model to support multiple instances of MLD, but a | |||
| restriction MAY be added depending on the implementation and the | restriction <bcp14>MAY</bcp14> be added depending on the implementation and t he | |||
| device. The identity "mld" is derived from the "rt:control-plane-protocol" ba se identity and indicates that a control-plane-protocol | device. The identity "mld" is derived from the "rt:control-plane-protocol" ba se identity and indicates that a control-plane-protocol | |||
| instance is MLD.</t> | instance is MLD.</t> | |||
| <t> | ||||
| <t> | ||||
| The MLD subtree is a three-level hierarchy structure as listed | The MLD subtree is a three-level hierarchy structure as listed | |||
| below:</t> | below:</t> | |||
| <dl newline="false" spacing="normal" indent="3"> | ||||
| <t><list style="hanging" hangIndent="3"><t hangText="Global level: Includ | <dt>Global level:</dt> | |||
| ing MLD configuration and operational state"> | <dd>Including MLD configuration and operational state | |||
| attributes for the entire MLD protocol instance in this router. | attributes for the entire MLD protocol instance in this router. | |||
| </t> | </dd> | |||
| <dt>Interface-global level:</dt> | ||||
| <t hangText="Interface-global level: Including configuration data nodes t | <dd>Including configuration data nodes that | |||
| hat"> | ||||
| are applicable to all the interfaces whose corresponding nodes are | are applicable to all the interfaces whose corresponding nodes are | |||
| not defined or not configured at the interface level. For such a | not defined or not configured at the interface level. For such a | |||
| node at the interface level, the system uses the same value of the | node at the interface level, the system uses the same value of the | |||
| corresponding node at the interface-global level. | corresponding node at the interface-global level. | |||
| </t> | </dd> | |||
| <dt>Interface level:</dt> | ||||
| <t hangText="Interface level: Including MLD configuration and operational | <dd>Including MLD configuration and operational | |||
| "> | ||||
| state attributes specific to the given interface. For a | state attributes specific to the given interface. For a | |||
| configuration node at the interface level, there may exist a | configuration node at the interface level, there may exist a | |||
| corresponding configuration node with the same name at the | corresponding configuration node with the same name at the | |||
| interface-global level. The value configured on a node at the | interface-global level. The value configured on a node at the | |||
| interface level overrides the value configured on the corresponding | interface level overrides the value configured on the corresponding | |||
| node at the interface-global level. | node at the interface-global level. | |||
| </t> | </dd> | |||
| </dl> | ||||
| </list> | <sourcecode type="yangtree"><![CDATA[ | |||
| </t> | ||||
| <figure><artwork><![CDATA[ | ||||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol: | /rt:control-plane-protocol: | |||
| +--rw mld {feature-mld}? | +--rw mld {feature-mld}? | |||
| +--rw global | +--rw global | |||
| | +--rw enable? boolean {global-admin-enable}? | | +--rw enabled? boolean {global-admin-enable}? | |||
| | +--rw max-entries? uint32 {global-max-entries}? | | +--rw max-entries? uint32 {global-max-entries}? | |||
| | +--rw max-groups? uint32 {global-max-groups}? | | +--rw max-groups? uint32 {global-max-groups}? | |||
| | +--ro entries-count? uint32 | | +--ro entries-count? uint32 | |||
| | +--ro groups-count? uint32 | | +--ro groups-count? uint32 | |||
| | +--ro statistics | | +--ro statistics | |||
| | +--ro discontinuity-time? yang:date-and-time | | +--ro discontinuity-time? yang:date-and-time | |||
| | +--ro error | | +--ro error | |||
| | | +--ro total? yang:counter64 | | | +--ro total? yang:counter64 | |||
| | | +--ro query? yang:counter64 | | | +--ro query? yang:counter64 | |||
| | | +--ro report? yang:counter64 | | | +--ro report? yang:counter64 | |||
| skipping to change at line 623 ¶ | skipping to change at line 579 ¶ | |||
| | {intf-max-groups}? | | {intf-max-groups}? | |||
| +--rw interface* [interface-name] | +--rw interface* [interface-name] | |||
| +--rw interface-name if:interface-ref | +--rw interface-name if:interface-ref | |||
| +--rw last-member-query-interval? uint16 | +--rw last-member-query-interval? uint16 | |||
| +--rw query-interval? uint16 | +--rw query-interval? uint16 | |||
| +--rw query-max-response-time? uint16 | +--rw query-max-response-time? uint16 | |||
| +--rw require-router-alert? boolean | +--rw require-router-alert? boolean | |||
| | {intf-require-router-alert}? | | {intf-require-router-alert}? | |||
| +--rw robustness-variable? uint8 | +--rw robustness-variable? uint8 | |||
| +--rw version? uint8 | +--rw version? uint8 | |||
| +--rw enable? boolean | +--rw enabled? boolean | |||
| | {intf-admin-enable}? | | {intf-admin-enable}? | |||
| +--rw group-policy? | +--rw group-policy? | |||
| | -> /acl:acls/acl/name | | -> /acl:acls/acl/name | |||
| +--rw immediate-leave? empty | +--rw immediate-leave? empty | |||
| | {intf-immediate-leave}? | | {intf-immediate-leave}? | |||
| +--rw max-groups? uint32 | +--rw max-groups? uint32 | |||
| | {intf-max-groups}? | | {intf-max-groups}? | |||
| +--rw max-group-sources? uint32 | +--rw max-group-sources? uint32 | |||
| | {intf-max-group-sources}? | | {intf-max-group-sources}? | |||
| +--rw source-policy? | +--rw source-policy? | |||
| | -> /acl:acls/acl/name {intf-source-policy}? | | -> /acl:acls/acl/name {intf-source-policy}? | |||
| +--rw verify-source-subnet? empty | +--rw verify-source-subnet? empty | |||
| | {intf-verify-source-subnet}? | | {intf-verify-source-subnet}? | |||
| +--rw explicit-tracking? empty | +--rw explicit-tracking? empty | |||
| | {intf-explicit-tracking}? | | {intf-explicit-tracking}? | |||
| +--rw exclude-lite? empty | +--rw lite-exclude-filter? empty | |||
| | {intf-exclude-lite}? | | {intf-lite-exclude-filter}? | |||
| +--rw join-group* | +--rw join-group* | |||
| | rt-types:ipv6-multicast-group-address | | rt-types:ipv6-multicast-group-address | |||
| | {intf-join-group}? | | {intf-join-group}? | |||
| +--rw ssm-map* | +--rw ssm-map* | |||
| | | [ssm-map-source-addr ssm-map-group-policy] | | [ssm-map-source-addr ssm-map-group-policy] | |||
| | | {intf-ssm-map}? | | {intf-ssm-map}? | |||
| | +--rw ssm-map-source-addr ssm-map-ipv6-addr-type | | +--rw ssm-map-source-addr ssm-map-ipv6-addr-type | |||
| | +--rw ssm-map-group-policy string | | +--rw ssm-map-group-policy string | |||
| +--rw static-group* [group-addr source-addr] | +--rw static-group* [group-addr source-addr] | |||
| | | {intf-static-group}? | | {intf-static-group}? | |||
| | +--rw group-addr | | +--rw group-addr | |||
| | | rt-types:ipv6-multicast-group-address | | | rt-types:ipv6-multicast-group-address | |||
| | +--rw source-addr | | +--rw source-addr | |||
| | rt-types:ipv6-multicast-source-address | | rt-types:ipv6-multicast-source-address | |||
| +--ro oper-status enumeration | +--ro oper-status enumeration | |||
| +--ro querier inet:ipv6-address | +--ro querier inet:ipv6-address | |||
| +--ro joined-group* | +--ro joined-group* | |||
| | rt-types:ipv6-multicast-group-address | | rt-types:ipv6-multicast-group-address | |||
| | {intf-join-group}? | | {intf-join-group}? | |||
| +--ro group* [group-address] | +--ro group* [group-address] | |||
| skipping to change at line 675 ¶ | skipping to change at line 631 ¶ | |||
| +--ro up-time uint32 | +--ro up-time uint32 | |||
| +--ro last-reporter? inet:ipv6-address | +--ro last-reporter? inet:ipv6-address | |||
| +--ro source* [source-address] | +--ro source* [source-address] | |||
| +--ro source-address inet:ipv6-address | +--ro source-address inet:ipv6-address | |||
| +--ro expire uint32 | +--ro expire uint32 | |||
| +--ro up-time uint32 | +--ro up-time uint32 | |||
| +--ro host-count? uint32 | +--ro host-count? uint32 | |||
| | {intf-explicit-tracking}? | | {intf-explicit-tracking}? | |||
| +--ro last-reporter? inet:ipv6-address | +--ro last-reporter? inet:ipv6-address | |||
| +--ro host* [host-address] | +--ro host* [host-address] | |||
| | {intf-explicit-tracking}? | {intf-explicit-tracking}? | |||
| +--ro host-address inet:ipv6-address | +--ro host-address inet:ipv6-address | |||
| +--ro host-filter-mode enumeration | +--ro host-filter-mode enumeration | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </section> | |||
| </section> | <section anchor="s-3.3" numbered="true" toc="default"> | |||
| <name>IGMP and MLD Actions</name> | ||||
| <section title="IGMP and MLD Actions" anchor="section-3.3"><t> | <t> | |||
| IGMP and MLD each have one action which clears the group membership | IGMP and MLD each have one action that clears the group membership | |||
| cache entries for that protocol.</t> | cache entries for that protocol.</t> | |||
| <sourcecode type="yangtree"><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol: | /rt:control-plane-protocol: | |||
| +--rw igmp {feature-igmp}? | +--rw igmp {feature-igmp}? | |||
| +---x clear-groups {action-clear-groups}? | +---x clear-groups {action-clear-groups}? | |||
| +---w input | +---w input | |||
| +---w (interface) | +---w (interface) | |||
| | +--:(name) | | +--:(name) | |||
| | | +---w interface-name? leafref | | | +---w interface-name? leafref | |||
| | +--:(all) | | +--:(all) | |||
| | +---w all-interfaces? empty | | +---w all-interfaces? empty | |||
| skipping to change at line 714 ¶ | skipping to change at line 669 ¶ | |||
| +---x clear-groups {action-clear-groups}? | +---x clear-groups {action-clear-groups}? | |||
| +---w input | +---w input | |||
| +---w (interface) | +---w (interface) | |||
| | +--:(name) | | +--:(name) | |||
| | | +---w interface-name? leafref | | | +---w interface-name? leafref | |||
| | +--:(all) | | +--:(all) | |||
| | +---w all-interfaces? empty | | +---w all-interfaces? empty | |||
| +---w group-address? union | +---w group-address? union | |||
| +---w source-address? | +---w source-address? | |||
| rt-types:ipv6-multicast-source-address | rt-types:ipv6-multicast-source-address | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | </section> | |||
| </section> | </section> | |||
| <section anchor="s-4" numbered="true" toc="default"> | ||||
| </section> | <name>IGMP and MLD YANG Module</name> | |||
| <t>This module references <xref target="RFC1112" format="default"/>, <xref | ||||
| <section title="IGMP and MLD YANG Module" anchor="section-4"> | target="RFC2236" format="default"/>, | |||
| <t>This module references <xref target="RFC1112"/>, <xref target="RFC2236"/>, | <xref target="RFC2710" format="default"/>, <xref target="RFC3376" format="defaul | |||
| <xref target="RFC2710"/>, <xref target="RFC3376"/>, <xref target="RFC3810"/>, | t"/>, <xref target="RFC3810" format="default"/>, | |||
| <xref target="RFC5790"/>, <xref target="RFC6636"/>, <xref target="RFC6991"/>, | <xref target="RFC5790" format="default"/>, <xref target="RFC6636" format="defaul | |||
| <xref target="RFC8294"/>, <xref target="RFC8343"/>, <xref target="RFC8344"/>, | t"/>, <xref target="RFC6991" format="default"/>, | |||
| <xref target="RFC8349"/>, and <xref target="RFC8519"/>.</t> | <xref target="RFC8294" format="default"/>, <xref target="RFC8343" format="defaul | |||
| t"/>, <xref target="RFC8344" format="default"/>, | ||||
| <xref target="RFC8349" format="default"/>, and <xref target="RFC8519" format="de | ||||
| fault"/>.</t> | ||||
| <figure><artwork><![CDATA[ | <sourcecode name="ietf-igmp-mld@2019-11-01.yang" type="yang" markers="true | |||
| <CODE BEGINS> file "ietf-igmp-mld@2019-06-12.yang" | "><![CDATA[ | |||
| module ietf-igmp-mld { | module ietf-igmp-mld { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld"; | namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld"; | |||
| prefix igmp-mld; | prefix igmp-mld; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix inet; | |||
| reference "RFC 6991: Common YANG Data Types"; | reference | |||
| "RFC 6991: Common YANG Data Types"; | ||||
| } | } | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix "yang"; | prefix yang; | |||
| reference "RFC 6991: Common YANG Data Types"; | reference | |||
| "RFC 6991: Common YANG Data Types"; | ||||
| } | } | |||
| import ietf-routing-types { | import ietf-routing-types { | |||
| prefix "rt-types"; | prefix rt-types; | |||
| reference | reference | |||
| "RFC 8294: Common YANG Data Types for the Routing Area"; | "RFC 8294: Common YANG Data Types for the Routing Area"; | |||
| } | } | |||
| import ietf-access-control-list { | import ietf-access-control-list { | |||
| prefix "acl"; | prefix acl; | |||
| reference | reference | |||
| "RFC 8519: YANG Data Model for Network Access Control Lists | "RFC 8519: YANG Data Model for Network Access Control Lists | |||
| (ACLs)"; | (ACLs)"; | |||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix rt; | |||
| reference | reference | |||
| "RFC 8349: A YANG Data Model for Routing Management (NMDA | "RFC 8349: A YANG Data Model for Routing Management (NMDA | |||
| Version)"; | Version)"; | |||
| } | } | |||
| import ietf-interfaces { | import ietf-interfaces { | |||
| prefix "if"; | prefix if; | |||
| reference "RFC 8343: A YANG Data Model for Interface Management"; | reference | |||
| "RFC 8343: A YANG Data Model for Interface Management"; | ||||
| } | } | |||
| import ietf-ip { | import ietf-ip { | |||
| prefix ip; | prefix ip; | |||
| reference "RFC 8344: A YANG Data Model for IP Management"; | reference | |||
| "RFC 8344: A YANG Data Model for IP Management"; | ||||
| } | } | |||
| organization | organization | |||
| "IETF PIM Working Group"; | "IETF PIM Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://tools.ietf.org/wg/pim/> | "WG Web: <http://datatracker.ietf.org/wg/pim/> | |||
| WG List: <mailto:pim@ietf.org> | WG List: <mailto:pim@ietf.org> | |||
| Editor: Xufeng Liu | Editor: Xufeng Liu | |||
| <mailto:xufeng.liu.ietf@gmail.com> | <mailto:xufeng.liu.ietf@gmail.com> | |||
| Editor: Feng Guo | Editor: Feng Guo | |||
| <mailto:guofeng@huawei.com> | <mailto:guofeng@huawei.com> | |||
| Editor: Mahesh Sivakumar | Editor: Mahesh Sivakumar | |||
| <mailto:sivakumar.mahesh@gmail.com> | <mailto:sivakumar.mahesh@gmail.com> | |||
| skipping to change at line 794 ¶ | skipping to change at line 744 ¶ | |||
| <mailto:guofeng@huawei.com> | <mailto:guofeng@huawei.com> | |||
| Editor: Mahesh Sivakumar | Editor: Mahesh Sivakumar | |||
| <mailto:sivakumar.mahesh@gmail.com> | <mailto:sivakumar.mahesh@gmail.com> | |||
| Editor: Pete McAllister | Editor: Pete McAllister | |||
| <mailto:pete.mcallister@metaswitch.com> | <mailto:pete.mcallister@metaswitch.com> | |||
| Editor: Anish Peter | Editor: Anish Peter | |||
| <mailto:anish.ietf@gmail.com>"; | <mailto:anish.ietf@gmail.com>"; | |||
| description | description | |||
| "The module defines the configuration and operational state for | "The module defines the configuration and operational state for | |||
| the Internet Group Management Protocol (IGMP) and Multicast | the Internet Group Management Protocol (IGMP) and Multicast | |||
| Listener Discovery (MLD) protocols. | Listener Discovery (MLD) protocols. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | ||||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | ||||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
| they appear in all capitals, as shown here. | ||||
| Copyright (c) 2019 IETF Trust and the persons identified as | Copyright (c) 2019 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 8652; see the | |||
| RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
| // RFC Ed.: replace XXXX with actual RFC number and remove | revision 2019-11-01 { | |||
| // this note | ||||
| revision 2019-06-12 { | ||||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Data Model for IGMP and MLD"; | "RFC 8652: A YANG Data Model for the Internet Group Management | |||
| Protocol (IGMP) and Multicast Listener Discovery (MLD)"; | ||||
| } | } | |||
| /* | /* | |||
| * Features | * Features | |||
| */ | */ | |||
| feature feature-igmp { | feature feature-igmp { | |||
| description | description | |||
| "Support IGMP protocol for IPv4 group membership record."; | "Support IGMP protocol for IPv4 group membership record."; | |||
| } | } | |||
| feature feature-mld { | feature feature-mld { | |||
| description | description | |||
| "Support MLD protocol for IPv6 group membership record."; | "Support MLD protocol for IPv6 group membership record."; | |||
| } | } | |||
| skipping to change at line 916 ¶ | skipping to change at line 872 ¶ | |||
| "Support configuration of interface explicit-tracking hosts."; | "Support configuration of interface explicit-tracking hosts."; | |||
| } | } | |||
| feature intf-lite-exclude-filter { | feature intf-lite-exclude-filter { | |||
| description | description | |||
| "Support configuration of interface lite-exclude-filter."; | "Support configuration of interface lite-exclude-filter."; | |||
| } | } | |||
| feature per-interface-config { | feature per-interface-config { | |||
| description | description | |||
| "Support per interface configuration."; | "Support per-interface configuration."; | |||
| } | } | |||
| feature action-clear-groups { | feature action-clear-groups { | |||
| description | description | |||
| "Support actions to clear groups."; | "Support actions to clear groups."; | |||
| } | } | |||
| /* | /* | |||
| * Typedefs | * Typedefs | |||
| */ | */ | |||
| skipping to change at line 927 ¶ | skipping to change at line 883 ¶ | |||
| } | } | |||
| feature action-clear-groups { | feature action-clear-groups { | |||
| description | description | |||
| "Support actions to clear groups."; | "Support actions to clear groups."; | |||
| } | } | |||
| /* | /* | |||
| * Typedefs | * Typedefs | |||
| */ | */ | |||
| typedef ssm-map-ipv4-addr-type { | typedef ssm-map-ipv4-addr-type { | |||
| type union { | type union { | |||
| type enumeration { | type enumeration { | |||
| enum 'policy' { | enum policy { | |||
| description | description | |||
| "Source address is specified in SSM map policy."; | "Source address is specified in SSM map policy."; | |||
| } | } | |||
| } | } | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| } | } | |||
| description | description | |||
| "Multicast source IP address type for SSM map."; | "Multicast source IP address type for SSM map."; | |||
| } // source-ipv4-addr-type | } | |||
| // source-ipv4-addr-type | ||||
| typedef ssm-map-ipv6-addr-type { | typedef ssm-map-ipv6-addr-type { | |||
| type union { | type union { | |||
| type enumeration { | type enumeration { | |||
| enum 'policy' { | enum policy { | |||
| description | description | |||
| "Source address is specified in SSM map policy."; | "Source address is specified in SSM map policy."; | |||
| } | } | |||
| } | } | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| } | } | |||
| description | description | |||
| "Multicast source IP address type for SSM map."; | "Multicast source IP address type for SSM map."; | |||
| } // source-ipv6-addr-type | } | |||
| // source-ipv6-addr-type | ||||
| /* | /* | |||
| * Identities | * Identities | |||
| */ | */ | |||
| identity igmp { | identity igmp { | |||
| base "rt:control-plane-protocol"; | base rt:control-plane-protocol; | |||
| description "IGMP protocol."; | if-feature "feature-igmp"; | |||
| description | ||||
| "IGMP protocol."; | ||||
| reference | reference | |||
| "RFC 3376: Internet Group Management Protocol, Version 3."; | "RFC 3376: Internet Group Management Protocol, Version 3"; | |||
| } | } | |||
| identity mld { | identity mld { | |||
| base "rt:control-plane-protocol"; | base rt:control-plane-protocol; | |||
| description "MLD protocol."; | if-feature "feature-mld"; | |||
| description | ||||
| "MLD protocol."; | ||||
| reference | reference | |||
| "RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) for | "RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) for | |||
| IPv6."; | IPv6"; | |||
| } | } | |||
| /* | /* | |||
| * Groupings | * Groupings | |||
| */ | */ | |||
| grouping global-config-attributes { | grouping global-config-attributes { | |||
| description | description | |||
| "This grouping is used in either IGMP schema or MLD schema. | "This grouping is used in either IGMP schema or MLD schema. | |||
| When used in IGMP schema, this grouping contains the global | When used in IGMP schema, this grouping contains the global | |||
| configuration for IGMP; | configuration for IGMP; | |||
| when used in MLD schema, this grouping contains the global | when used in MLD schema, this grouping contains the global | |||
| configuration for MLD."; | configuration for MLD."; | |||
| leaf enabled { | ||||
| leaf enable { | if-feature "global-admin-enable"; | |||
| if-feature global-admin-enable; | ||||
| type boolean; | type boolean; | |||
| default true; | default "true"; | |||
| description | description | |||
| "When this grouping is used for IGMP, this leaf indicates | "When this grouping is used for IGMP, this leaf indicates | |||
| whether IGMP is enabled ('true') or disabled ('false') | whether IGMP is enabled ('true') or disabled ('false') | |||
| in the routing instance. | in the routing instance. | |||
| When this grouping is used for MLD, this leaf indicates | When this grouping is used for MLD, this leaf indicates | |||
| whether MLD is enabled ('true') or disabled ('false') | whether MLD is enabled ('true') or disabled ('false') | |||
| in the routing instance."; | in the routing instance."; | |||
| } | } | |||
| leaf max-entries { | leaf max-entries { | |||
| if-feature global-max-entries; | if-feature "global-max-entries"; | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "When this grouping is used for IGMP, this leaf indicates | "When this grouping is used for IGMP, this leaf indicates | |||
| the maximum number of entries in the IGMP instance. | the maximum number of entries in the IGMP instance. | |||
| When this grouping is used for MLD, this leaf indicates | When this grouping is used for MLD, this leaf indicates | |||
| the maximum number of entries in the MLD instance. | the maximum number of entries in the MLD instance. | |||
| If this leaf is not specified, the number of entries is not | If this leaf is not specified, the number of entries is not | |||
| limited."; | limited."; | |||
| } | } | |||
| leaf max-groups { | leaf max-groups { | |||
| if-feature global-max-groups; | if-feature "global-max-groups"; | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "When this grouping is used for IGMP, this leaf indicates | "When this grouping is used for IGMP, this leaf indicates | |||
| the maximum number of groups in the IGMP instance. | the maximum number of groups in the IGMP instance. | |||
| When this grouping is used for MLD, this leaf indicates | When this grouping is used for MLD, this leaf indicates | |||
| the maximum number of groups in the MLD instance. | the maximum number of groups in the MLD instance. | |||
| If this leaf is not specified, the number of groups is not | If this leaf is not specified, the number of groups is not | |||
| limited."; | limited."; | |||
| } | } | |||
| } // global-config-attributes | } | |||
| // global-config-attributes | ||||
| grouping global-state-attributes { | grouping global-state-attributes { | |||
| description | description | |||
| "This grouping is used in either IGMP schema or MLD schema. | "This grouping is used in either IGMP schema or MLD schema. | |||
| When used in IGMP schema, this grouping contains the global | When used in IGMP schema, this grouping contains the global | |||
| IGMP state attributes; | IGMP state attributes; | |||
| when used in MLD schema, this grouping contains the global | when used in MLD schema, this grouping contains the global | |||
| MLD state attributes;"; | MLD state attributes."; | |||
| leaf entries-count { | leaf entries-count { | |||
| type uint32; | type uint32; | |||
| config false; | config false; | |||
| description | description | |||
| "When this grouping is used for IGMP, this leaf indicates | "When this grouping is used for IGMP, this leaf indicates | |||
| the number of entries in the IGMP instance. | the number of entries in the IGMP instance. | |||
| When this grouping is used for MLD, this leaf indicates | When this grouping is used for MLD, this leaf indicates | |||
| the number of entries in the MLD instance."; | the number of entries in the MLD instance."; | |||
| } | } | |||
| leaf groups-count { | leaf groups-count { | |||
| skipping to change at line 1045 ¶ | skipping to change at line 1012 ¶ | |||
| } | } | |||
| leaf groups-count { | leaf groups-count { | |||
| type uint32; | type uint32; | |||
| config false; | config false; | |||
| description | description | |||
| "When this grouping is used for IGMP, this leaf indicates | "When this grouping is used for IGMP, this leaf indicates | |||
| the number of existing groups in the IGMP instance. | the number of existing groups in the IGMP instance. | |||
| When this grouping is used for MLD, this leaf indicates | When this grouping is used for MLD, this leaf indicates | |||
| the number of existing groups in the MLD instance."; | the number of existing groups in the MLD instance."; | |||
| } | } | |||
| container statistics { | container statistics { | |||
| config false; | config false; | |||
| description | description | |||
| "When this grouping is used for IGMP, this container contains | "When this grouping is used for IGMP, this container contains | |||
| the statistics for the IGMP instance. | the statistics for the IGMP instance. | |||
| When this grouping is used for MLD, this leaf indicates | When this grouping is used for MLD, this leaf indicates | |||
| the statistics for the MLD instance."; | the statistics for the MLD instance."; | |||
| 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 statistic 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."; | |||
| } | } | |||
| container error { | container error { | |||
| description "Statistics of errors."; | description | |||
| "Statistics of errors."; | ||||
| uses global-statistics-error; | uses global-statistics-error; | |||
| } | } | |||
| container received { | container received { | |||
| description "Statistics of received messages."; | description | |||
| "Statistics of received messages."; | ||||
| uses global-statistics-sent-received; | uses global-statistics-sent-received; | |||
| } | } | |||
| container sent { | container sent { | |||
| description "Statistics of sent messages."; | description | |||
| "Statistics of sent messages."; | ||||
| uses global-statistics-sent-received; | uses global-statistics-sent-received; | |||
| } | } | |||
| } // statistics | } | |||
| } // global-state-attributes | // statistics | |||
| } | ||||
| // global-state-attributes | ||||
| grouping global-statistics-error { | grouping global-statistics-error { | |||
| description | description | |||
| "A grouping defining statistics attributes for errors."; | "A grouping defining statistics attributes for errors."; | |||
| uses global-statistics-sent-received; | uses global-statistics-sent-received; | |||
| leaf checksum { | leaf checksum { | |||
| type yang:counter64; | type yang:counter64; | |||
| description | description | |||
| "The number of checksum errors."; | "The number of checksum errors."; | |||
| } | } | |||
| leaf too-short { | leaf too-short { | |||
| type yang:counter64; | type yang:counter64; | |||
| description | description | |||
| "The number of messages that are too short."; | "The number of messages that are too short."; | |||
| skipping to change at line 1094 ¶ | skipping to change at line 1064 ¶ | |||
| leaf checksum { | leaf checksum { | |||
| type yang:counter64; | type yang:counter64; | |||
| description | description | |||
| "The number of checksum errors."; | "The number of checksum errors."; | |||
| } | } | |||
| leaf too-short { | leaf too-short { | |||
| type yang:counter64; | type yang:counter64; | |||
| description | description | |||
| "The number of messages that are too short."; | "The number of messages that are too short."; | |||
| } | } | |||
| } // global-statistics-error | } | |||
| // global-statistics-error | ||||
| grouping global-statistics-sent-received { | grouping global-statistics-sent-received { | |||
| description | description | |||
| "A grouping defining statistics attributes."; | "A grouping defining statistics attributes."; | |||
| leaf total { | leaf total { | |||
| type yang:counter64; | type yang:counter64; | |||
| description | description | |||
| "The number of total messages."; | "The number of total messages."; | |||
| } | } | |||
| leaf query { | leaf query { | |||
| type yang:counter64; | type yang:counter64; | |||
| description | description | |||
| "The number of query messages."; | "The number of query messages."; | |||
| } | } | |||
| skipping to change at line 1120 ¶ | skipping to change at line 1091 ¶ | |||
| leaf report { | leaf report { | |||
| type yang:counter64; | type yang:counter64; | |||
| description | description | |||
| "The number of report messages."; | "The number of report messages."; | |||
| } | } | |||
| leaf leave { | leaf leave { | |||
| type yang:counter64; | type yang:counter64; | |||
| description | description | |||
| "The number of leave messages."; | "The number of leave messages."; | |||
| } | } | |||
| } // global-statistics-sent-received | } | |||
| // global-statistics-sent-received | ||||
| grouping interface-global-config-attributes { | grouping interface-global-config-attributes { | |||
| description | description | |||
| "Configuration attributes applied to the interface-global level | "Configuration attributes applied to the interface-global level | |||
| whose per interface attributes are not configured."; | whose per-interface attributes are not configured."; | |||
| leaf max-groups-per-interface { | leaf max-groups-per-interface { | |||
| if-feature intf-max-groups; | if-feature "intf-max-groups"; | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The maximum number of groups associated with each interface. | "The maximum number of groups associated with each interface. | |||
| If this leaf is not specified, the number of groups is not | If this leaf is not specified, the number of groups is not | |||
| limited."; | limited."; | |||
| } | } | |||
| } //interface-global-config-attributes | } | |||
| //interface-global-config-attributes | ||||
| grouping interface-common-config-attributes { | grouping interface-common-config-attributes { | |||
| description | description | |||
| "Configuration attributes applied to both the interface-global | "Configuration attributes applied to both the interface-global | |||
| level and interface level."; | level and interface level."; | |||
| leaf last-member-query-interval { | leaf last-member-query-interval { | |||
| type uint16 { | type uint16 { | |||
| range "1..1023"; | range "1..1023"; | |||
| } | } | |||
| units seconds; | units "seconds"; | |||
| description | description | |||
| "When used in IGMP schema, this leaf indicates the Last | "When used in IGMP schema, this leaf indicates the Last | |||
| Member Query Interval, which may be tuned to modify the | Member Query Interval, which may be tuned to modify the | |||
| leave latency of the network; | leave latency of the network; | |||
| when used in MLD schema, this leaf indicates the Last | when used in MLD schema, this leaf indicates the Last | |||
| Listener Query Interval, which may be tuned to modify the | Listener Query Interval, which may be tuned to modify the | |||
| leave latency of the network. | leave latency of the network. | |||
| This leaf is not applicable for version 1 of the IGMP. For | This leaf is not applicable for version 1 of the IGMP. For | |||
| version 2 and version 3 of the IGMP, and for all versions of | version 2 and version 3 of the IGMP, and for all versions of | |||
| the MLD, the default value of this leaf is 1. | the MLD, the default value of this leaf is 1. | |||
| This leaf may be configured at the interface level or the | This leaf may be configured at the interface level or the | |||
| interface-global level, with precedence given to the value | interface-global level, with precedence given to the value | |||
| at the interface level. If the leaf is not configured at | at the interface level. If the leaf is not configured at | |||
| either level, the default value is used."; | either level, the default value is used."; | |||
| reference | reference | |||
| "RFC 2236. Sec. 8.8. RFC 3376. Sec. 8.8. | "Section 8.8 of RFC 2236: Internet Group Management Protocol, | |||
| RFC 2710. Sec. 7.8. RFC 3810. Sec. 9.8."; | Version 2. | |||
| Section 8.8 of RFC 3376: Internet Group Management Protocol, | ||||
| Version 3. | ||||
| Section 7.8 of RFC 2710: Multicast Listener Discovery (MLD) | ||||
| for IPv6. | ||||
| Section 9.8 of RFC 3810: Multicast Listener Discovery | ||||
| Version 2 (MLDv2) for IPv6."; | ||||
| } | } | |||
| leaf query-interval { | leaf query-interval { | |||
| type uint16 { | type uint16 { | |||
| range "1..31744"; | range "1..31744"; | |||
| } | } | |||
| units seconds; | units "seconds"; | |||
| description | description | |||
| "The Query Interval is the interval between General Queries | "The Query Interval is the interval between General Queries | |||
| sent by the Querier. In RFC 3376, the Querier's Query | sent by the Querier. In RFC 3376, the Querier's Query | |||
| Interval(QQI) is represented from the Querier's Query | Interval (QQI) is represented from the Querier's Query | |||
| Interval Code in query message as follows: | Interval Code (QQIC) in query message as follows: | |||
| If QQIC < 128, QQI = QQIC. | If QQIC < 128, QQI = QQIC. | |||
| If QQIC >= 128, QQIC represents a floating-point value as | If QQIC >= 128, QQIC represents a floating-point value as | |||
| follows: | follows: | |||
| 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| |1| exp | mant | | |1| exp | mant | | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| QQI = (mant | 0x10) << (exp + 3). | QQI = (mant | 0x10) << (exp + 3). | |||
| The maximum value of QQI is 31744. | The maximum value of QQI is 31744. | |||
| The default value is 125. | The default value is 125. | |||
| This leaf may be configured at the interface level or the | This leaf may be configured at the interface level or the | |||
| interface-global level, with precedence given to the value | interface-global level, with precedence given to the value | |||
| at the interface level. If the leaf is not configured at | at the interface level. If the leaf is not configured at | |||
| either level, the default value is used."; | either level, the default value is used."; | |||
| reference "RFC 3376. Sec. 4.1.7, 8.2, 8.14.2."; | reference | |||
| "Sections 4.1.7, 8.2, and 8.14.2 of RFC 3376: Internet Group | ||||
| Management Protocol, Version 3"; | ||||
| } | } | |||
| leaf query-max-response-time { | leaf query-max-response-time { | |||
| type uint16 { | type uint16 { | |||
| range "1..1023"; | range "1..1023"; | |||
| } | } | |||
| units seconds; | units "seconds"; | |||
| description | description | |||
| "Query maximum response time specifies the maximum time | "Query maximum response time specifies the maximum time | |||
| allowed before sending a responding report. | allowed before sending a responding report. | |||
| The default value is 10. | The default value is 10. | |||
| This leaf may be configured at the interface level or the | This leaf may be configured at the interface level or the | |||
| interface-global level, with precedence given to the value | interface-global level, with precedence given to the value | |||
| at the interface level. If the leaf is not configured at | at the interface level. If the leaf is not configured at | |||
| either level, the default value is used."; | either level, the default value is used."; | |||
| reference "RFC 3376. Sec. 4.1.1, 8.3, 8.14.3."; | reference | |||
| "Sections 4.1.1, 8.3, and 8.14.3 of RFC 3376: Internet Group | ||||
| Management Protocol, Version 3"; | ||||
| } | } | |||
| leaf require-router-alert { | leaf require-router-alert { | |||
| if-feature intf-require-router-alert; | if-feature "intf-require-router-alert"; | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Protocol packets should contain router alert IP option. | "Protocol packets should contain the router alert IP option. | |||
| When this leaf is not configured, the server uses the | When this leaf is not configured, the server uses the | |||
| following rules to determine the operational value of this | following rules to determine the operational value of this | |||
| leaf: | leaf: | |||
| if this grouping is used in IGMP schema and the value of the | if this grouping is used in IGMP schema and the value of the | |||
| leaf 'version' is 1, the value 'false' is operationally used | leaf 'version' is 1, the value 'false' is operationally used | |||
| by the server; | by the server; | |||
| if this grouping is used in IGMP schema and the value of the | if this grouping is used in IGMP schema and the value of the | |||
| leaf 'version' is 2 or 3, the value 'true' is operationally | leaf 'version' is 2 or 3, the value 'true' is operationally | |||
| used by the server; | used by the server; | |||
| if this grouping is used in MLD schema, the value 'true' is | if this grouping is used in MLD schema, the value 'true' is | |||
| operationally used by the server. | operationally used by the server. | |||
| This leaf may be configured at the interface level or the | This leaf may be configured at the interface level or the | |||
| interface-global level, with precedence given to the value | interface-global level, with precedence given to the value | |||
| at the interface level. If the leaf is not configured at | at the interface level. If the leaf is not configured at | |||
| either level, the default value is used."; | either level, the default value is used."; | |||
| } | } | |||
| leaf robustness-variable { | leaf robustness-variable { | |||
| type uint8 { | type uint8 { | |||
| range "1..7"; | range "1..7"; | |||
| } | } | |||
| description | description | |||
| "Querier's Robustness Variable allows tuning for the | "The Querier's Robustness Variable allows tuning for the | |||
| expected packet loss on a network. | expected packet loss on a network. | |||
| The default value is 2. | The default value is 2. | |||
| This leaf may be configured at the interface level or the | This leaf may be configured at the interface level or the | |||
| interface-global level, with precedence given to the value | interface-global level, with precedence given to the value | |||
| at the interface level. If the leaf is not configured at | at the interface level. If the leaf is not configured at | |||
| either level, the default value is used."; | either level, the default value is used."; | |||
| reference "RFC 3376. Sec. 4.1.6, 8.1, 8.14.1."; | reference | |||
| "Sections 4.1.6, 8.1, and 8.14.1 of RFC 3376: Internet Group | ||||
| Management Protocol, Version 3"; | ||||
| } | } | |||
| } // interface-common-config-attributes | } | |||
| // interface-common-config-attributes | ||||
| grouping interface-common-config-attributes-igmp { | grouping interface-common-config-attributes-igmp { | |||
| description | description | |||
| "Configuration attributes applied to both the interface-global | "Configuration attributes applied to both the interface-global | |||
| level and interface level for IGMP."; | level and interface level for IGMP."; | |||
| uses interface-common-config-attributes; | uses interface-common-config-attributes; | |||
| leaf version { | leaf version { | |||
| type uint8 { | type uint8 { | |||
| range "1..3"; | range "1..3"; | |||
| } | } | |||
| description | description | |||
| "IGMP version. | "IGMP version. | |||
| The default value is 2. | The default value is 2. | |||
| This leaf may be configured at the interface level or the | This leaf may be configured at the interface level or the | |||
| interface-global level, with precedence given to the value | interface-global level, with precedence given to the value | |||
| skipping to change at line 1258 ¶ | skipping to change at line 1244 ¶ | |||
| uses interface-common-config-attributes; | uses interface-common-config-attributes; | |||
| leaf version { | leaf version { | |||
| type uint8 { | type uint8 { | |||
| range "1..3"; | range "1..3"; | |||
| } | } | |||
| description | description | |||
| "IGMP version. | "IGMP version. | |||
| The default value is 2. | The default value is 2. | |||
| This leaf may be configured at the interface level or the | This leaf may be configured at the interface level or the | |||
| interface-global level, with precedence given to the value | interface-global level, with precedence given to the value | |||
| at the interface level. If the leaf is not configured at | at the interface level. If the leaf is not configured at | |||
| either level, the default value is used."; | either level, the default value is used."; | |||
| reference "RFC 1112, RFC 2236, RFC 3376."; | reference | |||
| "RFC 1112: Host Extensions for IP Multicasting, | ||||
| RFC 2236: Internet Group Management Protocol, Version 2, | ||||
| RFC 3376: Internet Group Management Protocol, Version 3."; | ||||
| } | } | |||
| } | } | |||
| grouping interface-common-config-attributes-mld { | grouping interface-common-config-attributes-mld { | |||
| description | description | |||
| "Configuration attributes applied to both the interface-global | "Configuration attributes applied to both the interface-global | |||
| level and interface level for MLD."; | level and interface level for MLD."; | |||
| uses interface-common-config-attributes; | uses interface-common-config-attributes; | |||
| leaf version { | leaf version { | |||
| type uint8 { | type uint8 { | |||
| range "1..2"; | range "1..2"; | |||
| } | } | |||
| description | description | |||
| "MLD version. | "MLD version. | |||
| The default value is 2. | The default value is 2. | |||
| This leaf may be configured at the interface level or the | This leaf may be configured at the interface level or the | |||
| interface-global level, with precedence given to the value | interface-global level, with precedence given to the value | |||
| skipping to change at line 1278 ¶ | skipping to change at line 1267 ¶ | |||
| uses interface-common-config-attributes; | uses interface-common-config-attributes; | |||
| leaf version { | leaf version { | |||
| type uint8 { | type uint8 { | |||
| range "1..2"; | range "1..2"; | |||
| } | } | |||
| description | description | |||
| "MLD version. | "MLD version. | |||
| The default value is 2. | The default value is 2. | |||
| This leaf may be configured at the interface level or the | This leaf may be configured at the interface level or the | |||
| interface-global level, with precedence given to the value | interface-global level, with precedence given to the value | |||
| at the interface level. If the leaf is not configured at | at the interface level. If the leaf is not configured at | |||
| either level, the default value is used."; | either level, the default value is used."; | |||
| reference "RFC 2710, RFC 3810."; | reference | |||
| "RFC 2710: Multicast Listener Discovery (MLD) for IPv6, | ||||
| RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) | ||||
| for IPv6."; | ||||
| } | } | |||
| } | } | |||
| grouping interfaces-config-attributes-igmp { | grouping interfaces-config-attributes-igmp { | |||
| description | description | |||
| "Configuration attributes applied to the interface-global | "Configuration attributes applied to the interface-global | |||
| level for IGMP."; | level for IGMP."; | |||
| uses interface-common-config-attributes-igmp; | uses interface-common-config-attributes-igmp; | |||
| uses interface-global-config-attributes; | uses interface-global-config-attributes; | |||
| } | } | |||
| grouping interfaces-config-attributes-mld { | grouping interfaces-config-attributes-mld { | |||
| description | description | |||
| "Configuration attributes applied to the interface-global | "Configuration attributes applied to the interface-global | |||
| level for MLD."; | level for MLD."; | |||
| uses interface-common-config-attributes-mld; | uses interface-common-config-attributes-mld; | |||
| uses interface-global-config-attributes; | uses interface-global-config-attributes; | |||
| } | } | |||
| grouping interface-level-config-attributes { | grouping interface-level-config-attributes { | |||
| description | description | |||
| "This grouping is used in either IGMP schema or MLD schema. | "This grouping is used in either IGMP schema or MLD schema. | |||
| When used in IGMP schema, this grouping contains the IGMP | When used in IGMP schema, this grouping contains the IGMP | |||
| configuration attributes that are defined at the interface | configuration attributes that are defined at the interface | |||
| level but are not defined at the interface-global level; | level but are not defined at the interface-global level; | |||
| skipping to change at line 1311 ¶ | skipping to change at line 1301 ¶ | |||
| grouping interface-level-config-attributes { | grouping interface-level-config-attributes { | |||
| description | description | |||
| "This grouping is used in either IGMP schema or MLD schema. | "This grouping is used in either IGMP schema or MLD schema. | |||
| When used in IGMP schema, this grouping contains the IGMP | When used in IGMP schema, this grouping contains the IGMP | |||
| configuration attributes that are defined at the interface | configuration attributes that are defined at the interface | |||
| level but are not defined at the interface-global level; | level but are not defined at the interface-global level; | |||
| when used in MLD schema, this grouping contains the MLD | when used in MLD schema, this grouping contains the MLD | |||
| configuration attributes that are defined at the interface | configuration attributes that are defined at the interface | |||
| level but are not defined at the interface-global level."; | level but are not defined at the interface-global level."; | |||
| leaf enable { | leaf enabled { | |||
| if-feature intf-admin-enable; | if-feature "intf-admin-enable"; | |||
| type boolean; | type boolean; | |||
| default true; | default "true"; | |||
| description | description | |||
| "When this grouping is used for IGMP, this leaf indicates | "When this grouping is used for IGMP, this leaf indicates | |||
| whether IGMP is enabled ('true') or disabled ('false') | whether IGMP is enabled ('true') or disabled ('false') | |||
| on the interface. | on the interface. | |||
| When this grouping is used for MLD, this leaf indicates | When this grouping is used for MLD, this leaf indicates | |||
| whether MLD is enabled ('true') or disabled ('false') | whether MLD is enabled ('true') or disabled ('false') | |||
| on the interface."; | on the interface."; | |||
| } | } | |||
| leaf group-policy { | leaf group-policy { | |||
| type leafref { | type leafref { | |||
| path "/acl:acls/acl:acl/acl:name"; | path "/acl:acls/acl:acl/acl:name"; | |||
| } | } | |||
| description | description | |||
| "When this grouping is used for IGMP, this leaf specifies | "When this grouping is used for IGMP, this leaf specifies | |||
| the name of the access policy used to filter the | the name of the access policy used to filter the | |||
| IGMP membership. | IGMP membership. | |||
| When this grouping is used for MLD, this leaf specifies | When this grouping is used for MLD, this leaf specifies | |||
| the name of the access policy used to filter the | the name of the access policy used to filter the | |||
| MLD membership. | MLD membership. | |||
| The value space of this leaf is restricted to the existing | The value space of this leaf is restricted to the existing | |||
| policy instances defined by the referenced schema RFC 8519. | policy instances defined by the referenced schema in | |||
| RFC 8519. | ||||
| As specified by RFC 8519, the length of the name is between | As specified by RFC 8519, the length of the name is between | |||
| 1 and 64; a device MAY further restrict the length of this | 1 and 64; a device MAY further restrict the length of this | |||
| name; space and special characters are not allowed. | name; space and special characters are not allowed. | |||
| If this leaf is not specified, no policy is applied, and | If this leaf is not specified, no policy is applied, and | |||
| all packets received from this interface are accepted."; | all packets received from this interface are accepted."; | |||
| reference | reference | |||
| "RFC 8519: YANG Data Model for Network Access Control Lists | "RFC 8519: YANG Data Model for Network Access Control Lists | |||
| (ACLs)"; | (ACLs)"; | |||
| } | } | |||
| leaf immediate-leave { | leaf immediate-leave { | |||
| if-feature intf-immediate-leave; | if-feature "intf-immediate-leave"; | |||
| type empty; | type empty; | |||
| description | description | |||
| "When this grouping is used for IGMP, the presence of this | "When this grouping is used for IGMP, the presence of this | |||
| leaf requests IGMP to perform an immediate leave upon | leaf requests IGMP to perform an immediate leave upon | |||
| receiving an IGMPv2 leave message. | receiving an IGMPv2 leave message. | |||
| If the router is IGMP-enabled, it sends an IGMP last member | If the router is IGMP-enabled, it sends an IGMP last member | |||
| query with a last member query response time. However, the | query with a last member query response time. However, the | |||
| router does not wait for the response time before it prunes | router does not wait for the response time before it prunes | |||
| the group. | the group. | |||
| When this grouping is used for MLD, the presence of this | When this grouping is used for MLD, the presence of this | |||
| leaf requests MLD to perform an immediate leave upon | leaf requests MLD to perform an immediate leave upon | |||
| receiving an MLDv1 leave message. | receiving an MLDv1 leave message. | |||
| If the router is MLD-enabled, it sends an MLD last member | If the router is MLD-enabled, it sends an MLD last member | |||
| query with a last member query response time. However, the | query with a last member query response time. However, the | |||
| router does not wait for the response time before it prunes | router does not wait for the response time before it prunes | |||
| the group."; | the group."; | |||
| } | } | |||
| leaf max-groups { | leaf max-groups { | |||
| if-feature intf-max-groups; | if-feature "intf-max-groups"; | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "When this grouping is used for IGMP, this leaf indicates | "When this grouping is used for IGMP, this leaf indicates | |||
| the maximum number of groups associated with the IGMP | the maximum number of groups associated with the IGMP | |||
| interface. | interface. | |||
| When this grouping is used for MLD, this leaf indicates | When this grouping is used for MLD, this leaf indicates | |||
| the maximum number of groups associated with the MLD | the maximum number of groups associated with the MLD | |||
| interface. | interface. | |||
| If this leaf is not specified, the number of groups is not | If this leaf is not specified, the number of groups is not | |||
| limited."; | limited."; | |||
| } | } | |||
| leaf max-group-sources { | leaf max-group-sources { | |||
| if-feature intf-max-group-sources; | if-feature "intf-max-group-sources"; | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The maximum number of group sources. | "The maximum number of group sources. | |||
| If this leaf is not specified, the number of group sources | If this leaf is not specified, the number of group sources | |||
| is not limited."; | is not limited."; | |||
| } | } | |||
| leaf source-policy { | leaf source-policy { | |||
| if-feature intf-source-policy; | if-feature "intf-source-policy"; | |||
| type leafref { | type leafref { | |||
| path "/acl:acls/acl:acl/acl:name"; | path "/acl:acls/acl:acl/acl:name"; | |||
| } | } | |||
| description | description | |||
| "Name of the access policy used to filter sources. | "Name of the access policy used to filter sources. | |||
| The value space of this leaf is restricted to the existing | The value space of this leaf is restricted to the existing | |||
| policy instances defined by the referenced schema RFC 8519. | policy instances defined by the referenced schema in | |||
| RFC 8519. | ||||
| As specified by RFC 8519, the length of the name is between | As specified by RFC 8519, the length of the name is between | |||
| 1 and 64; a device MAY further restrict the length of this | 1 and 64; a device MAY further restrict the length of this | |||
| name; space and special characters are not allowed. | name; space and special characters are not allowed. | |||
| If this leaf is not specified, no policy is applied, and | If this leaf is not specified, no policy is applied, and | |||
| all packets received from this interface are accepted."; | all packets received from this interface are accepted."; | |||
| } | } | |||
| leaf verify-source-subnet { | leaf verify-source-subnet { | |||
| if-feature intf-verify-source-subnet; | if-feature "intf-verify-source-subnet"; | |||
| type empty; | type empty; | |||
| description | description | |||
| "If present, the interface accepts packets with matching | "If present, the interface accepts packets with matching | |||
| source IP subnet only."; | source IP subnet only."; | |||
| } | } | |||
| leaf explicit-tracking { | leaf explicit-tracking { | |||
| if-feature intf-explicit-tracking; | if-feature "intf-explicit-tracking"; | |||
| type empty; | type empty; | |||
| description | description | |||
| "When this grouping is used for IGMP, the presence of this | "When this grouping is used for IGMP, the presence of this | |||
| leaf enables IGMP-based explicit membership tracking | leaf enables an IGMP-based explicit membership tracking | |||
| function for multicast routers and IGMP proxy devices | function for multicast routers and IGMP proxy devices | |||
| supporting IGMPv3. | supporting IGMPv3. | |||
| When this grouping is used for MLD, the presence of this | When this grouping is used for MLD, the presence of this | |||
| leaf enables MLD-based explicit membership tracking | leaf enables an MLD-based explicit membership tracking | |||
| function for multicast routers and MLD proxy devices | function for multicast routers and MLD proxy devices | |||
| supporting MLDv2. | supporting MLDv2. | |||
| The explicit membership tracking function contributes to | The explicit membership tracking function contributes to | |||
| saving network resources and shortening leave latency."; | saving network resources and shortening leave latency."; | |||
| reference | reference | |||
| "RFC 6636. Sec 3."; | "Section 3 of RFC 6636: Tuning the Behavior of the Internet | |||
| Group Management Protocol (IGMP) and Multicast Listener | ||||
| Discovery (MLD) for Routers in Mobile and Wireless | ||||
| Networks"; | ||||
| } | } | |||
| leaf lite-exclude-filter { | leaf lite-exclude-filter { | |||
| if-feature intf-lite-exclude-filter; | if-feature "intf-lite-exclude-filter"; | |||
| type empty; | type empty; | |||
| description | description | |||
| "When this grouping is used for IGMP, the presence of this | "When this grouping is used for IGMP, the presence of this | |||
| leaf enables the support of the simplified EXCLUDE filter | leaf enables the support of the simplified EXCLUDE filter | |||
| in the Lightweight IGMPv3 protocol, which simplifies the | in the Lightweight IGMPv3 protocol, which simplifies the | |||
| standard versions of IGMPv3. | standard versions of IGMPv3. | |||
| When this grouping is used for MLD, the presence of this | When this grouping is used for MLD, the presence of this | |||
| leaf enables the support of the simplified EXCLUDE filter | leaf enables the support of the simplified EXCLUDE filter | |||
| in the Lightweight MLDv2 protocol, which simplifies the | in the Lightweight MLDv2 protocol, which simplifies the | |||
| standard versions of MLDv2."; | standard versions of MLDv2."; | |||
| reference "RFC 5790"; | reference | |||
| "RFC 5790: Lightweight Internet Group Management Protocol | ||||
| Version 3 (IGMPv3) and Multicast Listener Discovery | ||||
| Version 2 (MLDv2) Protocols"; | ||||
| } | } | |||
| } // interface-level-config-attributes | } | |||
| // interface-level-config-attributes | ||||
| grouping interface-config-attributes-igmp { | grouping interface-config-attributes-igmp { | |||
| description | description | |||
| "Per interface configuration attributes for IGMP."; | "Per-interface configuration attributes for IGMP."; | |||
| uses interface-common-config-attributes-igmp; | uses interface-common-config-attributes-igmp; | |||
| uses interface-level-config-attributes; | uses interface-level-config-attributes; | |||
| leaf-list join-group { | leaf-list join-group { | |||
| if-feature intf-join-group; | if-feature "intf-join-group"; | |||
| type rt-types:ipv4-multicast-group-address; | type rt-types:ipv4-multicast-group-address; | |||
| description | description | |||
| "The router joins this multicast group on the interface."; | "The router joins this multicast group on the interface."; | |||
| } | } | |||
| list ssm-map { | list ssm-map { | |||
| if-feature intf-ssm-map; | if-feature "intf-ssm-map"; | |||
| key "ssm-map-source-addr ssm-map-group-policy"; | key "ssm-map-source-addr ssm-map-group-policy"; | |||
| description "The policy for (*,G) mapping to (S,G)."; | description | |||
| "The policy for (*,G) mapping to (S,G)."; | ||||
| leaf ssm-map-source-addr { | leaf ssm-map-source-addr { | |||
| type ssm-map-ipv4-addr-type; | type ssm-map-ipv4-addr-type; | |||
| description | description | |||
| "Multicast source IPv4 address."; | "Multicast source IPv4 address."; | |||
| } | } | |||
| leaf ssm-map-group-policy { | leaf ssm-map-group-policy { | |||
| type string; | type string; | |||
| description | description | |||
| "Name of the policy used to define ssm-map rules. | "Name of the policy used to define ssm-map rules. | |||
| A device can restrict the length | A device can restrict the length | |||
| and value of this name, possibly space and special | and value of this name, possibly space and special | |||
| characters are not allowed. "; | characters are not allowed."; | |||
| } | } | |||
| } | } | |||
| list static-group { | list static-group { | |||
| if-feature intf-static-group; | if-feature "intf-static-group"; | |||
| key "group-addr source-addr"; | key "group-addr source-addr"; | |||
| description | description | |||
| "A static multicast route, (*,G) or (S,G). | "A static multicast route, (*,G) or (S,G). | |||
| The version of IGMP must be 3 to support (S,G)."; | The version of IGMP must be 3 to support (S,G)."; | |||
| leaf group-addr { | leaf group-addr { | |||
| type rt-types:ipv4-multicast-group-address; | type rt-types:ipv4-multicast-group-address; | |||
| description | description | |||
| "Multicast group IPv4 address."; | "Multicast group IPv4 address."; | |||
| } | } | |||
| leaf source-addr { | leaf source-addr { | |||
| type rt-types:ipv4-multicast-source-address; | type rt-types:ipv4-multicast-source-address; | |||
| description | description | |||
| "Multicast source IPv4 address."; | "Multicast source IPv4 address."; | |||
| } | } | |||
| skipping to change at line 1489 ¶ | skipping to change at line 1487 ¶ | |||
| type rt-types:ipv4-multicast-group-address; | type rt-types:ipv4-multicast-group-address; | |||
| description | description | |||
| "Multicast group IPv4 address."; | "Multicast group IPv4 address."; | |||
| } | } | |||
| leaf source-addr { | leaf source-addr { | |||
| type rt-types:ipv4-multicast-source-address; | type rt-types:ipv4-multicast-source-address; | |||
| description | description | |||
| "Multicast source IPv4 address."; | "Multicast source IPv4 address."; | |||
| } | } | |||
| } | } | |||
| } // interface-config-attributes-igmp | } | |||
| // interface-config-attributes-igmp | ||||
| grouping interface-config-attributes-mld { | grouping interface-config-attributes-mld { | |||
| description | description | |||
| "Per interface configuration attributes for MLD."; | "Per-interface configuration attributes for MLD."; | |||
| uses interface-common-config-attributes-mld; | uses interface-common-config-attributes-mld; | |||
| uses interface-level-config-attributes; | uses interface-level-config-attributes; | |||
| leaf-list join-group { | leaf-list join-group { | |||
| if-feature intf-join-group; | if-feature "intf-join-group"; | |||
| type rt-types:ipv6-multicast-group-address; | type rt-types:ipv6-multicast-group-address; | |||
| description | description | |||
| "The router joins this multicast group on the interface."; | "The router joins this multicast group on the interface."; | |||
| } | } | |||
| list ssm-map { | list ssm-map { | |||
| if-feature intf-ssm-map; | if-feature "intf-ssm-map"; | |||
| key "ssm-map-source-addr ssm-map-group-policy"; | key "ssm-map-source-addr ssm-map-group-policy"; | |||
| description "The policy for (*,G) mapping to (S,G)."; | description | |||
| "The policy for (*,G) mapping to (S,G)."; | ||||
| leaf ssm-map-source-addr { | leaf ssm-map-source-addr { | |||
| type ssm-map-ipv6-addr-type; | type ssm-map-ipv6-addr-type; | |||
| description | description | |||
| "Multicast source IPv6 address."; | "Multicast source IPv6 address."; | |||
| } | } | |||
| leaf ssm-map-group-policy { | leaf ssm-map-group-policy { | |||
| type string; | type string; | |||
| description | description | |||
| "Name of the policy used to define ssm-map rules. | "Name of the policy used to define ssm-map rules. | |||
| A device can restrict the length | A device can restrict the length | |||
| and value of this name, possibly space and special | and value of this name, possibly space and special | |||
| characters are not allowed."; | characters are not allowed."; | |||
| } | } | |||
| } | } | |||
| list static-group { | list static-group { | |||
| if-feature intf-static-group; | if-feature "intf-static-group"; | |||
| key "group-addr source-addr"; | key "group-addr source-addr"; | |||
| description | description | |||
| "A static multicast route, (*,G) or (S,G). | "A static multicast route, (*,G) or (S,G). | |||
| The version of MLD must be 2 to support (S,G)."; | The version of MLD must be 2 to support (S,G)."; | |||
| leaf group-addr { | leaf group-addr { | |||
| type rt-types:ipv6-multicast-group-address; | type rt-types:ipv6-multicast-group-address; | |||
| description | description | |||
| "Multicast group IPv6 address."; | "Multicast group IPv6 address."; | |||
| } | } | |||
| leaf source-addr { | leaf source-addr { | |||
| type rt-types:ipv6-multicast-source-address; | type rt-types:ipv6-multicast-source-address; | |||
| description | description | |||
| "Multicast source IPv6 address."; | "Multicast source IPv6 address."; | |||
| } | } | |||
| skipping to change at line 1539 ¶ | skipping to change at line 1538 ¶ | |||
| type rt-types:ipv6-multicast-group-address; | type rt-types:ipv6-multicast-group-address; | |||
| description | description | |||
| "Multicast group IPv6 address."; | "Multicast group IPv6 address."; | |||
| } | } | |||
| leaf source-addr { | leaf source-addr { | |||
| type rt-types:ipv6-multicast-source-address; | type rt-types:ipv6-multicast-source-address; | |||
| description | description | |||
| "Multicast source IPv6 address."; | "Multicast source IPv6 address."; | |||
| } | } | |||
| } | } | |||
| } // interface-config-attributes-mld | } | |||
| // interface-config-attributes-mld | ||||
| grouping interface-state-attributes { | grouping interface-state-attributes { | |||
| description | description | |||
| "Per interface state attributes for both IGMP and MLD."; | "Per-interface state attributes for both IGMP and MLD."; | |||
| leaf oper-status { | leaf oper-status { | |||
| type enumeration { | type enumeration { | |||
| enum up { | enum up { | |||
| description | description | |||
| "Ready to pass packets."; | "Ready to pass packets."; | |||
| } | } | |||
| enum down { | enum down { | |||
| description | description | |||
| "The interface does not pass any packets."; | "The interface does not pass any packets."; | |||
| } | } | |||
| } | } | |||
| config false; | config false; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Indicates whether the operational state of the interface | "Indicates whether the operational state of the interface | |||
| is up or down."; | is up or down."; | |||
| } | } | |||
| } // interface-state-attributes | } | |||
| // interface-state-attributes | ||||
| grouping interface-state-attributes-igmp { | grouping interface-state-attributes-igmp { | |||
| description | description | |||
| "Per interface state attributes for IGMP."; | "Per-interface state attributes for IGMP."; | |||
| uses interface-state-attributes; | uses interface-state-attributes; | |||
| leaf querier { | leaf querier { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| config false; | config false; | |||
| mandatory true; | mandatory true; | |||
| description "The querier address in the subnet"; | description | |||
| "The querier address in the subnet."; | ||||
| } | } | |||
| leaf-list joined-group { | leaf-list joined-group { | |||
| if-feature intf-join-group; | if-feature "intf-join-group"; | |||
| type rt-types:ipv4-multicast-group-address; | type rt-types:ipv4-multicast-group-address; | |||
| config false; | config false; | |||
| description | description | |||
| "The routers that joined this multicast group."; | "The routers that joined this multicast group."; | |||
| } | } | |||
| list group { | list group { | |||
| key "group-address"; | key "group-address"; | |||
| config false; | config false; | |||
| description | description | |||
| "Multicast group membership information | "Multicast group membership information | |||
| skipping to change at line 1588 ¶ | skipping to change at line 1590 ¶ | |||
| config false; | config false; | |||
| description | description | |||
| "The routers that joined this multicast group."; | "The routers that joined this multicast group."; | |||
| } | } | |||
| list group { | list group { | |||
| key "group-address"; | key "group-address"; | |||
| config false; | config false; | |||
| description | description | |||
| "Multicast group membership information | "Multicast group membership information | |||
| that joined on the interface."; | that joined on the interface."; | |||
| leaf group-address { | leaf group-address { | |||
| type rt-types:ipv4-multicast-group-address; | type rt-types:ipv4-multicast-group-address; | |||
| description | description | |||
| "Multicast group address."; | "Multicast group address."; | |||
| } | } | |||
| uses interface-state-group-attributes; | uses interface-state-group-attributes; | |||
| leaf last-reporter { | leaf last-reporter { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "The IPv4 address of the last host which has sent the | "The IPv4 address of the last host that has sent the | |||
| report to join the multicast group."; | report to join the multicast group."; | |||
| } | } | |||
| list source { | list source { | |||
| key "source-address"; | key "source-address"; | |||
| description | description | |||
| "List of multicast source information | "List of multicast source information | |||
| of the multicast group."; | of the multicast group."; | |||
| leaf source-address { | leaf source-address { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "Multicast source address in group record."; | "Multicast source address in group record."; | |||
| } | } | |||
| uses interface-state-source-attributes; | uses interface-state-source-attributes; | |||
| leaf last-reporter { | leaf last-reporter { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "The IPv4 address of the last host which has sent the | "The IPv4 address of the last host that has sent the | |||
| report to join the multicast source and group."; | report to join the multicast source and group."; | |||
| } | } | |||
| list host { | list host { | |||
| if-feature intf-explicit-tracking; | if-feature "intf-explicit-tracking"; | |||
| key "host-address"; | key "host-address"; | |||
| description | description | |||
| "List of hosts with the membership for the specific | "List of hosts with the membership for the specific | |||
| multicast source-group."; | multicast source-group."; | |||
| leaf host-address { | leaf host-address { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "The IPv4 address of the host."; | "The IPv4 address of the host."; | |||
| } | } | |||
| uses interface-state-host-attributes; | uses interface-state-host-attributes; | |||
| }// list host | } | |||
| } // list source | // list host | |||
| } // list group | } | |||
| } // interface-state-attributes-igmp | // list source | |||
| } | ||||
| // list group | ||||
| } | ||||
| // interface-state-attributes-igmp | ||||
| grouping interface-state-attributes-mld { | grouping interface-state-attributes-mld { | |||
| description | description | |||
| "Per interface state attributes for MLD."; | "Per-interface state attributes for MLD."; | |||
| uses interface-state-attributes; | uses interface-state-attributes; | |||
| leaf querier { | leaf querier { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| config false; | config false; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "The querier address in the subnet."; | "The querier address in the subnet."; | |||
| } | } | |||
| leaf-list joined-group { | leaf-list joined-group { | |||
| if-feature intf-join-group; | if-feature "intf-join-group"; | |||
| type rt-types:ipv6-multicast-group-address; | type rt-types:ipv6-multicast-group-address; | |||
| config false; | config false; | |||
| description | description | |||
| "The routers that joined this multicast group."; | "The routers that joined this multicast group."; | |||
| } | } | |||
| list group { | list group { | |||
| key "group-address"; | key "group-address"; | |||
| config false; | config false; | |||
| description | description | |||
| "Multicast group membership information | "Multicast group membership information | |||
| skipping to change at line 1662 ¶ | skipping to change at line 1665 ¶ | |||
| config false; | config false; | |||
| description | description | |||
| "The routers that joined this multicast group."; | "The routers that joined this multicast group."; | |||
| } | } | |||
| list group { | list group { | |||
| key "group-address"; | key "group-address"; | |||
| config false; | config false; | |||
| description | description | |||
| "Multicast group membership information | "Multicast group membership information | |||
| that joined on the interface."; | that joined on the interface."; | |||
| leaf group-address { | leaf group-address { | |||
| type rt-types:ipv6-multicast-group-address; | type rt-types:ipv6-multicast-group-address; | |||
| description | description | |||
| "Multicast group address."; | "Multicast group address."; | |||
| } | } | |||
| uses interface-state-group-attributes; | uses interface-state-group-attributes; | |||
| leaf last-reporter { | leaf last-reporter { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "The IPv6 address of the last host which has sent the | "The IPv6 address of the last host that has sent the | |||
| report to join the multicast group."; | report to join the multicast group."; | |||
| } | } | |||
| list source { | list source { | |||
| key "source-address"; | key "source-address"; | |||
| description | description | |||
| "List of multicast sources of the multicast group."; | "List of multicast sources of the multicast group."; | |||
| leaf source-address { | leaf source-address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "Multicast source address in group record"; | "Multicast source address in group record."; | |||
| } | } | |||
| uses interface-state-source-attributes; | uses interface-state-source-attributes; | |||
| leaf last-reporter { | leaf last-reporter { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "The IPv6 address of the last host which has sent the | "The IPv6 address of the last host that has sent the | |||
| report to join the multicast source and group."; | report to join the multicast source and group."; | |||
| } | } | |||
| list host { | list host { | |||
| if-feature intf-explicit-tracking; | if-feature "intf-explicit-tracking"; | |||
| key "host-address"; | key "host-address"; | |||
| description | description | |||
| "List of hosts with the membership for the specific | "List of hosts with the membership for the specific | |||
| multicast source-group."; | multicast source-group."; | |||
| leaf host-address { | leaf host-address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "The IPv6 address of the host."; | "The IPv6 address of the host."; | |||
| } | } | |||
| uses interface-state-host-attributes; | uses interface-state-host-attributes; | |||
| }// list host | } | |||
| } // list source | // list host | |||
| } // list group | } | |||
| } // interface-state-attributes-mld | // list source | |||
| } | ||||
| // list group | ||||
| } | ||||
| // interface-state-attributes-mld | ||||
| grouping interface-state-group-attributes { | grouping interface-state-group-attributes { | |||
| description | description | |||
| "Per interface state attributes for both IGMP and MLD | "Per-interface state attributes for both IGMP and MLD | |||
| groups."; | groups."; | |||
| leaf expire { | leaf expire { | |||
| type uint32; | type uint32; | |||
| units seconds; | units "seconds"; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "The time left before multicast group state expires."; | "The time left before the multicast group state expires."; | |||
| } | } | |||
| leaf filter-mode { | leaf filter-mode { | |||
| type enumeration { | type enumeration { | |||
| enum "include" { | enum include { | |||
| description | description | |||
| "In include mode, reception of packets sent | "In include mode, reception of packets sent | |||
| to the specified multicast address is requested | to the specified multicast address is requested | |||
| only from those IP source addresses listed in the | only from those IP source addresses listed in the | |||
| source-list parameter"; | source-list parameter"; | |||
| } | } | |||
| enum "exclude" { | enum exclude { | |||
| description | description | |||
| "In exclude mode, reception of packets sent | "In exclude mode, reception of packets sent | |||
| to the given multicast address is requested | to the given multicast address is requested | |||
| from all IP source addresses except those | from all IP source addresses except those | |||
| listed in the source-list parameter."; | listed in the source-list parameter."; | |||
| } | } | |||
| } | } | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Filter mode for a multicast group, | "Filter mode for a multicast group, | |||
| may be either include or exclude."; | may be either include or exclude."; | |||
| } | } | |||
| leaf up-time { | leaf up-time { | |||
| type uint32; | type uint32; | |||
| units seconds; | units "seconds"; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "The elapsed time since the device created multicast group | "The elapsed time since the device created multicast group | |||
| record."; | record."; | |||
| } | } | |||
| } // interface-state-group-attributes | } | |||
| // interface-state-group-attributes | ||||
| grouping interface-state-source-attributes { | grouping interface-state-source-attributes { | |||
| description | description | |||
| "Per interface state attributes for both IGMP and MLD | "Per-interface state attributes for both IGMP and MLD | |||
| source-group records."; | source-group records."; | |||
| leaf expire { | leaf expire { | |||
| type uint32; | type uint32; | |||
| units seconds; | units "seconds"; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "The time left before multicast source-group state expires."; | "The time left before multicast source-group state expires."; | |||
| } | } | |||
| leaf up-time { | leaf up-time { | |||
| type uint32; | type uint32; | |||
| units seconds; | units "seconds"; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "The elapsed time since the device created multicast | "The elapsed time since the device created multicast | |||
| source-group record."; | source-group record."; | |||
| } | } | |||
| leaf host-count { | leaf host-count { | |||
| if-feature intf-explicit-tracking; | if-feature "intf-explicit-tracking"; | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The number of host addresses."; | "The number of host addresses."; | |||
| } | } | |||
| } // interface-state-source-attributes | } | |||
| // interface-state-source-attributes | ||||
| grouping interface-state-host-attributes { | grouping interface-state-host-attributes { | |||
| description | description | |||
| "Per interface state attributes for both IGMP and MLD | "Per-interface state attributes for both IGMP and MLD | |||
| hosts of source-group records."; | hosts of source-group records."; | |||
| leaf host-filter-mode { | leaf host-filter-mode { | |||
| type enumeration { | type enumeration { | |||
| enum "include" { | enum include { | |||
| description | description | |||
| "In include mode"; | "In include mode."; | |||
| } | } | |||
| enum "exclude" { | enum exclude { | |||
| description | description | |||
| "In exclude mode."; | "In exclude mode."; | |||
| } | } | |||
| } | } | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Filter mode for a multicast membership | "Filter mode for a multicast membership | |||
| host may be either include or exclude."; | host may be either include or exclude."; | |||
| } | } | |||
| } // interface-state-host-attributes | } | |||
| // interface-state-host-attributes | ||||
| /* | /* | |||
| * Configuration and Operational state data nodes (NMDA version) | * Configuration and Operational state data nodes (NMDA version) | |||
| */ | */ | |||
| 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-or-self(rt:type, 'igmp-mld:igmp')" { | when "derived-from-or-self(rt:type, 'igmp-mld:igmp')" { | |||
| description | description | |||
| "This augmentation is only valid for a control-plane | "This augmentation is only valid for a control-plane | |||
| protocol instance of IGMP (type 'igmp')."; | protocol instance of IGMP (type 'igmp')."; | |||
| } | } | |||
| description | description | |||
| "IGMP augmentation to routing control plane protocol | "IGMP augmentation to routing control-plane protocol | |||
| configuration and state."; | configuration and state."; | |||
| container igmp { | container igmp { | |||
| if-feature feature-igmp; | if-feature "feature-igmp"; | |||
| description | description | |||
| "IGMP configuration and operational state data."; | "IGMP configuration and operational state data."; | |||
| container global { | container global { | |||
| description | description | |||
| "Global attributes."; | "Global attributes."; | |||
| uses global-config-attributes; | uses global-config-attributes; | |||
| uses global-state-attributes; | uses global-state-attributes; | |||
| } | } | |||
| container interfaces { | container interfaces { | |||
| description | description | |||
| "Containing a list of interfaces."; | "Containing a list of interfaces."; | |||
| uses interfaces-config-attributes-igmp { | uses interfaces-config-attributes-igmp { | |||
| if-feature interface-global-config; | if-feature "interface-global-config"; | |||
| refine query-interval { | refine "query-interval" { | |||
| default 125; | default "125"; | |||
| } | } | |||
| refine query-max-response-time { | refine "query-max-response-time" { | |||
| default 10; | default "10"; | |||
| } | } | |||
| refine robustness-variable { | refine "robustness-variable" { | |||
| default 2; | default "2"; | |||
| } | } | |||
| refine version { | refine "version" { | |||
| default 2; | default "2"; | |||
| } | } | |||
| } | } | |||
| list interface { | list interface { | |||
| key "interface-name"; | key "interface-name"; | |||
| description | description | |||
| "List of IGMP interfaces."; | "List of IGMP interfaces."; | |||
| leaf interface-name { | leaf interface-name { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| must "/if:interfaces/if:interface[if:name = current()]/" | must | |||
| + "ip:ipv4" { | '/if:interfaces/if:interface[if:name = current()]/' | |||
| + 'ip:ipv4' { | ||||
| error-message | error-message | |||
| "The interface must have IPv4 configured, either " | "The interface must have IPv4 configured, either " | |||
| + "enabled or disabled."; | + "enabled or disabled."; | |||
| } | } | |||
| description | description | |||
| "Reference to an entry in the global interface list."; | "Reference to an entry in the global interface list."; | |||
| } | } | |||
| uses interface-config-attributes-igmp { | uses interface-config-attributes-igmp { | |||
| if-feature per-interface-config; | if-feature "per-interface-config"; | |||
| refine last-member-query-interval { | refine "last-member-query-interval" { | |||
| must "../version != 1 or " | must '../version != 1 or ' | |||
| + "(not(../version) and " | + '(not(../version) and ' | |||
| + "(../../version != 1 or not(../../version)))" { | + '(../../version != 1 or not(../../version)))' { | |||
| error-message | error-message "IGMPv1 does not support " | |||
| "IGMPv1 does not support " | + "last-member-query-interval."; | |||
| + "last-member-query-interval."; | ||||
| } | } | |||
| } | } | |||
| refine max-group-sources { | refine "max-group-sources" { | |||
| must "../version = 3 or " | must '../version = 3 or ' | |||
| + "(not(../version) and (../../version = 3))" { | + '(not(../version) and (../../version = 3))' { | |||
| error-message | error-message | |||
| "The version of IGMP must be 3 to support the " | "The version of IGMP must be 3 to support the " | |||
| + "source specific parameters."; | + "source-specific parameters."; | |||
| } | } | |||
| } | } | |||
| refine source-policy { | refine "source-policy" { | |||
| must "../version = 3 or " | must '../version = 3 or ' | |||
| + "(not(../version) and (../../version = 3))" { | + '(not(../version) and (../../version = 3))' { | |||
| error-message | error-message | |||
| "The version of IGMP must be 3 to support the " | "The version of IGMP must be 3 to support the " | |||
| + "source specific parameters."; | + "source-specific parameters."; | |||
| } | } | |||
| } | } | |||
| refine explicit-tracking { | refine "explicit-tracking" { | |||
| must "../version = 3 or " | must '../version = 3 or ' | |||
| + "(not(../version) and (../../version = 3))" { | + '(not(../version) and (../../version = 3))' { | |||
| error-message | error-message | |||
| "The version of IGMP must be 3 to support the " | "The version of IGMP must be 3 to support the " | |||
| + "explicit tracking function."; | + "explicit tracking function."; | |||
| } | } | |||
| } | } | |||
| refine lite-exclude-filter { | refine "lite-exclude-filter" { | |||
| must "../version = 3 or " | must '../version = 3 or ' | |||
| + "(not(../version) and (../../version = 3))" { | + '(not(../version) and (../../version = 3))' { | |||
| error-message | error-message | |||
| "The version of IGMP must be 3 to support the " | "The version of IGMP must be 3 to support the " | |||
| + "simplified EXCLUDE filter in the Lightweight " | + "simplified EXCLUDE filter in the Lightweight " | |||
| + "IGMPv3 protocol."; | + "IGMPv3 protocol."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| uses interface-state-attributes-igmp; | uses interface-state-attributes-igmp; | |||
| } // interface | } | |||
| } // interfaces | // interface | |||
| } | ||||
| // interfaces | ||||
| /* | /* | |||
| * Actions | * Actions | |||
| */ | */ | |||
| action clear-groups { | action clear-groups { | |||
| if-feature action-clear-groups; | if-feature "action-clear-groups"; | |||
| description | description | |||
| "Clears the specified IGMP cache entries."; | "Clears the specified IGMP cache entries."; | |||
| input { | input { | |||
| choice interface { | choice interface { | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Indicates the interface(s) from which the cache | "Indicates the interface(s) from which the cache | |||
| entries are cleared."; | entries are cleared."; | |||
| case name { | case name { | |||
| leaf interface-name { | leaf interface-name { | |||
| type leafref { | type leafref { | |||
| path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
| skipping to change at line 1933 ¶ | skipping to change at line 1937 ¶ | |||
| input { | input { | |||
| choice interface { | choice interface { | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Indicates the interface(s) from which the cache | "Indicates the interface(s) from which the cache | |||
| entries are cleared."; | entries are cleared."; | |||
| case name { | case name { | |||
| leaf interface-name { | leaf interface-name { | |||
| type leafref { | type leafref { | |||
| path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/" | + "rt:control-plane-protocol/" | |||
| + "igmp-mld:igmp/igmp-mld:interfaces/" | + "igmp-mld:igmp/igmp-mld:interfaces/" | |||
| + "igmp-mld:interface/igmp-mld:interface-name"; | + "igmp-mld:interface/igmp-mld:interface-name"; | |||
| } | } | |||
| description | description | |||
| "Name of the IGMP interface."; | "Name of the IGMP interface."; | |||
| } | } | |||
| } | } | |||
| case all { | case all { | |||
| leaf all-interfaces { | leaf all-interfaces { | |||
| type empty; | type empty; | |||
| description | description | |||
| "IGMP groups from all interfaces are cleared."; | "IGMP groups from all interfaces are cleared."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| leaf group-address { | leaf group-address { | |||
| type union { | type union { | |||
| type enumeration { | type enumeration { | |||
| enum '*' { | enum * { | |||
| description | description | |||
| "Any group address."; | "Any group address."; | |||
| } | } | |||
| } | } | |||
| type rt-types:ipv4-multicast-group-address; | type rt-types:ipv4-multicast-group-address; | |||
| } | } | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Multicast group IPv4 address. | "Multicast group IPv4 address. | |||
| If the value '*' is specified, all IGMP group entries | If the value '*' is specified, all IGMP group entries | |||
| skipping to change at line 1974 ¶ | skipping to change at line 1978 ¶ | |||
| } | } | |||
| leaf source-address { | leaf source-address { | |||
| type rt-types:ipv4-multicast-source-address; | type rt-types:ipv4-multicast-source-address; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Multicast source IPv4 address. | "Multicast source IPv4 address. | |||
| If the value '*' is specified, all IGMP source-group | If the value '*' is specified, all IGMP source-group | |||
| entries are cleared."; | entries are cleared."; | |||
| } | } | |||
| } | } | |||
| } // action clear-groups | } | |||
| } // igmp | // action clear-groups | |||
| } //augment | } | |||
| // igmp | ||||
| } | ||||
| //augment | ||||
| 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-or-self(rt:type, 'igmp-mld:mld')" { | when "derived-from-or-self(rt:type, 'igmp-mld:mld')" { | |||
| description | description | |||
| "This augmentation is only valid for a control-plane | "This augmentation is only valid for a control-plane | |||
| protocol instance of IGMP (type 'mld')."; | protocol instance of IGMP (type 'mld')."; | |||
| } | } | |||
| description | description | |||
| "MLD augmentation to routing control plane protocol | "MLD augmentation to routing control-plane protocol | |||
| configuration and state."; | configuration and state."; | |||
| container mld { | container mld { | |||
| if-feature feature-mld; | if-feature "feature-mld"; | |||
| description | description | |||
| "MLD configuration and operational state data."; | "MLD configuration and operational state data."; | |||
| container global { | container global { | |||
| description | description | |||
| "Global attributes."; | "Global attributes."; | |||
| uses global-config-attributes; | uses global-config-attributes; | |||
| uses global-state-attributes; | uses global-state-attributes; | |||
| } | } | |||
| container interfaces { | container interfaces { | |||
| description | description | |||
| "Containing a list of interfaces."; | "Containing a list of interfaces."; | |||
| uses interfaces-config-attributes-mld { | uses interfaces-config-attributes-mld { | |||
| if-feature interface-global-config; | if-feature "interface-global-config"; | |||
| refine last-member-query-interval { | refine "last-member-query-interval" { | |||
| default 1; | default "1"; | |||
| } | } | |||
| refine query-interval { | refine "query-interval" { | |||
| default 125; | default "125"; | |||
| } | } | |||
| refine query-max-response-time { | refine "query-max-response-time" { | |||
| default 10; | default "10"; | |||
| } | } | |||
| refine require-router-alert { | refine "require-router-alert" { | |||
| default true; | default "true"; | |||
| } | } | |||
| refine robustness-variable { | refine "robustness-variable" { | |||
| default 2; | default "2"; | |||
| } | } | |||
| refine version { | refine "version" { | |||
| default 2; | default "2"; | |||
| } | } | |||
| } | } | |||
| list interface { | list interface { | |||
| key "interface-name"; | key "interface-name"; | |||
| description | description | |||
| "List of MLD interfaces."; | "List of MLD interfaces."; | |||
| leaf interface-name { | leaf interface-name { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| must "/if:interfaces/if:interface[if:name = current()]/" | must | |||
| + "ip:ipv6" { | '/if:interfaces/if:interface[if:name = current()]/' | |||
| + 'ip:ipv6' { | ||||
| error-message | error-message | |||
| "The interface must have IPv6 configured, either " | "The interface must have IPv6 configured, either " | |||
| + "enabled or disabled."; | + "enabled or disabled."; | |||
| } | } | |||
| description | description | |||
| "Reference to an entry in the global interface list."; | "Reference to an entry in the global interface list."; | |||
| } | } | |||
| uses interface-config-attributes-mld { | uses interface-config-attributes-mld { | |||
| if-feature per-interface-config; | if-feature "per-interface-config"; | |||
| refine max-group-sources { | refine "max-group-sources" { | |||
| must "../version = 2 or " | must '../version = 2 or ' | |||
| + "(not(../version) and " | + '(not(../version) and ' | |||
| + "(../../version = 2 or not(../../version)))" { | + '(../../version = 2 or not(../../version)))' { | |||
| error-message | error-message | |||
| "The version of MLD must be 2 to support the " | "The version of MLD must be 2 to support the " | |||
| + "source specific parameters."; | + "source-specific parameters."; | |||
| } | } | |||
| } | } | |||
| refine source-policy { | refine "source-policy" { | |||
| must "../version = 2 or " | must '../version = 2 or ' | |||
| + "(not(../version) and " | + '(not(../version) and ' | |||
| + "(../../version = 2 or not(../../version)))" { | + '(../../version = 2 or not(../../version)))' { | |||
| error-message | error-message | |||
| "The version of MLD must be 2 to support the " | "The version of MLD must be 2 to support the " | |||
| + "source specific parameters."; | + "source-specific parameters."; | |||
| } | } | |||
| } | } | |||
| refine explicit-tracking { | refine "explicit-tracking" { | |||
| must "../version = 2 or " | must '../version = 2 or ' | |||
| + "(not(../version) and " | + '(not(../version) and ' | |||
| + "(../../version = 2 or not(../../version)))" { | + '(../../version = 2 or not(../../version)))' { | |||
| error-message | error-message | |||
| "The version of MLD must be 2 to support the " | "The version of MLD must be 2 to support the " | |||
| + "explicit tracking function."; | + "explicit tracking function."; | |||
| } | } | |||
| } | } | |||
| refine lite-exclude-filter { | refine "lite-exclude-filter" { | |||
| must "../version = 2 or " | must '../version = 2 or ' | |||
| + "(not(../version) and " | + '(not(../version) and ' | |||
| + "(../../version = 2 or not(../../version)))" { | + '(../../version = 2 or not(../../version)))' { | |||
| error-message | error-message | |||
| "The version of MLD must be 2 to support the " | "The version of MLD must be 2 to support the " | |||
| + "simplified EXCLUDE filter in the Lightweight " | + "simplified EXCLUDE filter in the Lightweight " | |||
| + "MLDv2 protocol."; | + "MLDv2 protocol."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| uses interface-state-attributes-mld; | uses interface-state-attributes-mld; | |||
| } // interface | } | |||
| } // interfaces | // interface | |||
| } | ||||
| // interfaces | ||||
| /* | /* | |||
| * Actions | * Actions | |||
| */ | */ | |||
| action clear-groups { | action clear-groups { | |||
| if-feature action-clear-groups; | if-feature "action-clear-groups"; | |||
| description | description | |||
| "Clears the specified MLD cache entries."; | "Clears the specified MLD cache entries."; | |||
| input { | input { | |||
| choice interface { | choice interface { | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Indicates the interface(s) from which the cache | "Indicates the interface(s) from which the cache | |||
| entries are cleared."; | entries are cleared."; | |||
| case name { | case name { | |||
| leaf interface-name { | leaf interface-name { | |||
| type leafref { | type leafref { | |||
| path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/" | + "rt:control-plane-protocol/" | |||
| + "igmp-mld:mld/igmp-mld:interfaces/" | + "igmp-mld:mld/igmp-mld:interfaces/" | |||
| + "igmp-mld:interface/igmp-mld:interface-name"; | + "igmp-mld:interface/igmp-mld:interface-name"; | |||
| } | } | |||
| description | description | |||
| "Name of the MLD interface."; | "Name of the MLD interface."; | |||
| } | } | |||
| } | } | |||
| case all { | case all { | |||
| leaf all-interfaces { | leaf all-interfaces { | |||
| type empty; | type empty; | |||
| description | description | |||
| "MLD groups from all interfaces are cleared."; | "MLD groups from all interfaces are cleared."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| leaf group-address { | leaf group-address { | |||
| type union { | type union { | |||
| type enumeration { | type enumeration { | |||
| enum '*' { | enum * { | |||
| description | description | |||
| "Any group address."; | "Any group address."; | |||
| } | } | |||
| } | } | |||
| type rt-types:ipv6-multicast-group-address; | type rt-types:ipv6-multicast-group-address; | |||
| } | } | |||
| description | description | |||
| "Multicast group IPv6 address. | "Multicast group IPv6 address. | |||
| If the value '*' is specified, all MLD group entries | If the value '*' is specified, all MLD group entries | |||
| are cleared."; | are cleared."; | |||
| } | } | |||
| leaf source-address { | leaf source-address { | |||
| type rt-types:ipv6-multicast-source-address; | type rt-types:ipv6-multicast-source-address; | |||
| description | description | |||
| "Multicast source IPv6 address. | "Multicast source IPv6 address. | |||
| If the value '*' is specified, all MLD source-group | If the value '*' is specified, all MLD source-group | |||
| entries are cleared."; | entries are cleared."; | |||
| } | } | |||
| } | } | |||
| } // action clear-mld-groups | } | |||
| } // mld | // action clear-mld-groups | |||
| } // augment | } | |||
| } | // mld | |||
| <CODE ENDS> | } | |||
| ]]></artwork> | ||||
| </figure> | ||||
| </section> | ||||
| <section title="Security Considerations" anchor="section-5"><t> | // augment | |||
| } | ||||
| ]]></sourcecode> | ||||
| </section> | ||||
| <section anchor="s-5" 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 | that is designed to be accessed via network management protocols | |||
| such as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/> . The lowest NETCONF | such as NETCONF <xref target="RFC6241" format="default"/> or RESTCONF <xref t arget="RFC8040" format="default"/>. The lowest NETCONF | |||
| layer is the secure transport layer, and the mandatory-to-implement | layer is the secure transport layer, and the mandatory-to-implement | |||
| secure transport is Secure Shell (SSH) <xref target="RFC6242"/>. The lowest | secure transport is Secure Shell (SSH) <xref target="RFC6242" format="default "/>. The lowest | |||
| RESTCONF layer is HTTPS, and the mandatory-to-implement secure | RESTCONF layer is HTTPS, and the mandatory-to-implement secure | |||
| transport is TLS <xref target="RFC8446"/>.</t> | transport is TLS <xref target="RFC8446" format="default"/>.</t> | |||
| <t> | ||||
| <t> | The Network Configuration Access Control Model (NACM) <xref target="RFC8341" | |||
| The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/ | format="default"/> | |||
| > | ||||
| provides the means to restrict access for particular NETCONF or | provides the means to restrict access for particular NETCONF or | |||
| RESTCONF users to a preconfigured subset of all available NETCONF or | RESTCONF users to a preconfigured subset of all available NETCONF or | |||
| RESTCONF protocol operations and content.</t> | RESTCONF protocol operations and content.</t> | |||
| <t> | ||||
| <t> | ||||
| There are a number of data nodes defined in this YANG module that | There are a number of data nodes defined in this YANG module that | |||
| are writable/creatable/deletable (i.e., config true, which is the | are 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> | |||
| <figure><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| Under /rt:routing/rt:control-plane-protocols | Under /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/igmp-mld:igmp, | /rt:control-plane-protocol/igmp-mld:igmp, | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | ||||
| <t>igmp-mld:global | <dl newline="true"> | |||
| <list><t> | <dt>igmp-mld:global | |||
| </dt> | ||||
| <dd> | ||||
| This subtree specifies the configuration for the IGMP attributes | This subtree specifies the configuration for the IGMP attributes | |||
| at the global level on an IGMP instance. Modifying the | at the global level on an IGMP instance. Modifying the | |||
| configuration can cause IGMP membership to be deleted or | configuration can cause IGMP membership to be deleted or | |||
| reconstructed on all the interfaces of an IGMP instance.</t></list></t> | reconstructed on all the interfaces of an IGMP instance.</dd> | |||
| <t>igmp-mld:interfaces | <dt>igmp-mld:interfaces | |||
| <list><t> | </dt> | |||
| <dd> | ||||
| This subtree specifies the configuration for the IGMP attributes | This subtree specifies the configuration for the IGMP attributes | |||
| at the interface-global level on a IGMP instance. Modifying the | at the interface-global level on an IGMP instance. Modifying the | |||
| configuration can cause IGMP membership to be deleted or | configuration can cause IGMP membership to be deleted or | |||
| reconstructed on all the interfaces of an IGMP instance.</t></list></t> | reconstructed on all the interfaces of an IGMP instance.</dd> | |||
| <t>igmp-mld:interfaces/interface | <dt>igmp-mld:interfaces/interface | |||
| <list><t> | </dt> | |||
| <dd> | ||||
| This subtree specifies the configuration for the IGMP attributes | This subtree specifies the configuration for the IGMP attributes | |||
| at the interface level on an IGMP instance. Modifying the | at the interface level on an IGMP instance. Modifying the | |||
| configuration can cause IGMP membership to be deleted or | configuration can cause IGMP membership to be deleted or | |||
| reconstructed on a specific interface of an IGMP instance.</t></list></t> | reconstructed on a specific interface of an IGMP instance.</dd> | |||
| </dl> | ||||
| <figure><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| Under /rt:routing/rt:control-plane-protocols | Under /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/igmp-mld:mld, | /rt:control-plane-protocol/igmp-mld:mld, | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | ||||
| <t>igmp-mld:global | <dl newline="true"> | |||
| <list><t> | <dt>igmp-mld:global | |||
| </dt> | ||||
| <dd> | ||||
| This subtree specifies the configuration for the MLD attributes at | This subtree specifies the configuration for the MLD attributes at | |||
| the global level on an MLD instance. Modifying the configuration | the global level on an MLD instance. Modifying the configuration | |||
| can cause MLD membership to be deleted or reconstructed on all the | can cause MLD membership to be deleted or reconstructed on all the | |||
| interfaces of an MLD instance.</t></list></t> | interfaces of an MLD instance.</dd> | |||
| <t>igmp-mld:interfaces | <dt>igmp-mld:interfaces | |||
| <list><t> | </dt> | |||
| <dd> | ||||
| This subtree specifies the configuration for the MLD attributes at | This subtree specifies the configuration for the MLD attributes at | |||
| the interface-global level on an MLD instance. Modifying the | the interface-global level on an MLD instance. Modifying the | |||
| configuration can cause MLD membership to be deleted or | configuration can cause MLD membership to be deleted or | |||
| reconstructed on all the interfaces of an MLD instance.</t></list></t> | reconstructed on all the interfaces of an MLD instance.</dd> | |||
| <t>igmp-mld:interfaces/interface | <dt>igmp-mld:interfaces/interface | |||
| <list><t> | </dt> | |||
| <dd> | ||||
| This subtree specifies the configuration for the MLD attributes at | This subtree specifies the configuration for the MLD attributes at | |||
| the interface level on a device. Modifying the configuration can | the interface level on a device. Modifying the configuration can | |||
| cause MLD membership to be deleted or reconstructed on a specific | cause MLD membership to be deleted or reconstructed on a specific | |||
| interface of an MLD instance.</t></list></t> | interface of an MLD instance.</dd> | |||
| </dl> | ||||
| <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 membership records of multicast routing subsystem on the | affect the membership records of multicast routing subsystem on the | |||
| local device. This may lead to network malfunctions, delivery of | local device. This may lead to network malfunctions, delivery of | |||
| packets to inappropriate destinations, and other problems.</t> | packets to inappropriate destinations, and other problems.</t> | |||
| <t> | ||||
| <t> | ||||
| Some of the readable data nodes in this YANG module may be | Some of the readable data nodes in this YANG module may be | |||
| considered sensitive or vulnerable in some network environments. It | considered sensitive or vulnerable in some network environments. It | |||
| is thus important to control read access (e.g., via get, get-config, | is thus important to control read access (e.g., via get, get-config, | |||
| or notification) to these data nodes. These are the subtrees and | or notification) to these data nodes. These are the subtrees and | |||
| data nodes and their sensitivity/vulnerability:</t> | data nodes and their sensitivity/vulnerability:</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| /rt:routing/rt:control-plane-protocols | /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/igmmp-mld:igmp | /rt:control-plane-protocol/igmmp-mld:igmp | |||
| /rt:routing/rt:control-plane-protocols | /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/igmp-mld:mld | /rt:control-plane-protocol/igmp-mld:mld | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | <t> | |||
| <t> | ||||
| Unauthorized access to any data node of the above subtree can | Unauthorized access to any data node of the above subtree can | |||
| disclose the operational state information of IGMP or MLD on this | disclose the operational state information of IGMP or MLD on this | |||
| device.</t> | device.</t> | |||
| <t> | ||||
| <t> | ||||
| Some of the action operations in this YANG module may be considered | Some of the action 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> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| /rt:routing/rt:control-plane-protocols | /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/igmmp-mld:igmp/igmmp-mld:clear-groups | /rt:control-plane-protocol/igmmp-mld:igmp/igmmp-mld:clear-groups | |||
| /rt:routing/rt:control-plane-protocols | /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/igmp-mld:mld/igmp-mld:clear-groups | /rt:control-plane-protocol/igmp-mld:mld/igmp-mld:clear-groups | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | <t> | |||
| <t> | ||||
| Unauthorized access to any of the above action operations can delete | Unauthorized access to any of the above action operations can delete | |||
| the IGMP or MLD membership records on this device.</t> | the IGMP or MLD membership records on this device.</t> | |||
| </section> | ||||
| </section> | <section anchor="s-6" numbered="true" toc="default"> | |||
| <name>IANA Considerations</name> | ||||
| <section title="IANA Considerations" anchor="section-6"><t> | <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 | This document registers the following namespace URIs in the IETF XML | |||
| registry <xref target="RFC3688"/>:</t> | registry <xref target="RFC3688" format="default"/>:</t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <figure><artwork><![CDATA[ | <dt>URI:</dt> <dd>urn:ietf:params:xml:ns:yang:ietf-igmp-mld</dd> | |||
| -------------------------------------------------------------------- | <dt>Registrant Contact:</dt><dd>The IESG.</dd> | |||
| <dt>XML:</dt><dd>N/A; the requested URI is an XML namespace.</dd></dl> | ||||
| URI: urn:ietf:params:xml:ns:yang:ietf-igmp-mld | ||||
| 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="RFC6020"/>:</t> | ||||
| <figure><artwork><![CDATA[ | ||||
| -------------------------------------------------------------------- | ||||
| name: ietf-igmp-mld | ||||
| namespace: urn:ietf:params:xml:ns:yang:ietf-igmp-mld | ||||
| prefix: igmp-mld | <t>This document registers the following YANG modules in the YANG Module | |||
| Names registry <xref target="RFC6020" format="default"/>:</t> | ||||
| <dl newline="false" spacing="normal"> | ||||
| <dt>Name:</dt><dd>ietf-igmp-mld</dd> | ||||
| <dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-igmp-mld</dd> | ||||
| <dt>Prefix:</dt><dd>igmp-mld</dd> | ||||
| <dt>Reference:</dt><dd>RFC 8652</dd></dl> | ||||
| reference: RFC XXXX | </section> | |||
| -------------------------------------------------------------------- | </middle> | |||
| <back> | ||||
| ]]></artwork> | <references> | |||
| </figure> | <name>References</name> | |||
| <references> | ||||
| <name>Normative References</name> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.1112.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.2236.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.2710.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.3376.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.3688.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.3810.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.4607.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.8294.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"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.8519.xml"/> | ||||
| </references> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.3569.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.4541.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.4605.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.5790.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.6636.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"/> | ||||
| <!-- &I-D.ietf-netconf-subscribed-notifications became RFC 8639--> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.8639.xml"/> | ||||
| <!-- &I-D.ietf-netconf-yang-push; became RFC 8641 --> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.8641.xml"/> | ||||
| </references> | ||||
| </references> | ||||
| </section> | <section numbered="false" toc="default"> | |||
| <section title="Acknowledgments" anchor="section-7"><t> | <name>Acknowledgments</name> | |||
| <t> | ||||
| The authors would like to thank Steve Baillargeon, Hu Fangwei, | The authors would like to thank Steve Baillargeon, Hu Fangwei, | |||
| Robert Kebler, Tanmoy Kundu, and Stig Venaas for their valuable | Robert Kebler, Tanmoy Kundu, and Stig Venaas for their valuable | |||
| contributions.</t> | contributions.</t> | |||
| </section> | ||||
| <section numbered="false" toc="default"> | ||||
| </section> | <name>Contributors</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <section title="Contributing Authors" anchor="section-8"><figure><artwork | ||||
| ><![CDATA[ | ||||
| Yisong Liu | Yisong Liu | |||
| Huawei Technologies | Huawei Technologies | |||
| Huawei Bldg., No.156 Beiqing Rd. | ||||
| Beijing 100095 | ||||
| China | China | |||
| Email: liuyisong@huawei.com | Email: liuyisong@huawei.com | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </section> | |||
| </section> | </back> | |||
| </rfc> | ||||
| </middle> | ||||
| <back> | ||||
| <references title="Normative References"> | ||||
| &RFC1112; | ||||
| &RFC2119; | ||||
| &RFC2236; | ||||
| &RFC2710; | ||||
| &RFC3376; | ||||
| &RFC3688; | ||||
| &RFC3810; | ||||
| &RFC4607; | ||||
| &RFC6020; | ||||
| &RFC6241; | ||||
| &RFC6242; | ||||
| &RFC6991; | ||||
| &RFC7950; | ||||
| &RFC8040; | ||||
| &RFC8174; | ||||
| &RFC8294; | ||||
| &RFC8341; | ||||
| &RFC8342; | ||||
| &RFC8343; | ||||
| &RFC8344; | ||||
| &RFC8349; | ||||
| &RFC8446; | ||||
| &RFC8519; | ||||
| </references> | ||||
| <references title="Informative References"> | ||||
| &RFC3569; | ||||
| &RFC4541; | ||||
| &RFC4605; | ||||
| &RFC5790; | ||||
| &RFC6636; | ||||
| &RFC8340; | ||||
| &RFC8407; | ||||
| &I-D.ietf-netconf-subscribed-notifications; | ||||
| &I-D.ietf-netconf-yang-push; | ||||
| </references> | ||||
| </back> | ||||
| </rfc> | ||||
| End of changes. 318 change blocks. | ||||
| 841 lines changed or deleted | 868 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/ | ||||