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