draft-ietf-pim-igmp-mld-yang-03.txt   draft-ietf-pim-igmp-mld-yang-04.txt 
PIM Working Group X. Liu PIM Working Group X. Liu
Internet-Draft Jabil Internet-Draft Jabil
Intended Status: Standard Track F. Guo Intended Status: Standard Track F. Guo
Expires: September 13, 2017 Huawei Expires: December 31, 2017 Huawei
M. Sivakumar M. Sivakumar
Cisco Cisco
P. McAllister P. McAllister
Metaswitch Networks Metaswitch Networks
A. Peter A. Peter
Juniper Networks Juniper Networks
March 13, 2017 June 30, 2017
A YANG data model for Internet Group Management Protocol (IGMP) and A YANG data model for Internet Group Management Protocol (IGMP) and
Multicast Listener Discovery (MLD) Multicast Listener Discovery (MLD)
draft-ietf-pim-igmp-mld-yang-03 draft-ietf-pim-igmp-mld-yang-04
Status of this Memo Status of this Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet- other groups may also distribute working documents as Internet-
Drafts. Drafts.
skipping to change at page 1, line 39 skipping to change at page 1, line 39
months and may be updated, replaced, or obsoleted by other documents months and may be updated, replaced, or obsoleted by other documents
at any time. It is inappropriate to use Internet-Drafts as at any time. It is inappropriate to use Internet-Drafts as
reference material or to cite them other than as "work in progress." reference material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html http://www.ietf.org/shadow.html
This Internet-Draft will expire on September 13, 2017. This Internet-Draft will expire on December 31, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 31 skipping to change at page 2, line 31
2. Design of Data model......................................... 3 2. Design of Data model......................................... 3
2.1. Scope of model ......................................... 3 2.1. Scope of model ......................................... 3
2.2. Optional capabilities................................... 3 2.2. Optional capabilities................................... 3
2.3. Position of address family in hierarchy................. 4 2.3. Position of address family in hierarchy................. 4
3. Module Structure ............................................ 4 3. Module Structure ............................................ 4
3.1. IGMP and MLD Configuration.............................. 4 3.1. IGMP and MLD Configuration.............................. 4
3.2. IGMP and MLD Operational State.......................... 8 3.2. IGMP and MLD Operational State.......................... 8
3.3. IGMP and MLD RPC....................................... 12 3.3. IGMP and MLD RPC....................................... 12
4. IGMP and MLD YANG Modules................................... 13 4. IGMP and MLD YANG Modules................................... 13
5. Security Considerations..................................... 38 5. Security Considerations..................................... 38
6. IANA Considerations ........................................ 38 6. IANA Considerations ........................................ 39
7. References ................................................. 39 7. References ................................................. 39
7.1. Normative References................................... 39 7.1. Normative References................................... 39
7.2. Informative References................................. 40 7.2. Informative References................................. 40
8. Acknowledgments ............................................ 40 8. Acknowledgments ............................................ 41
1. Introduction 1. Introduction
YANG [RFC6020] [RFC6087] is a data definition language that was YANG [RFC6020] [RFC6087] 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 NETCONF [RFC6241]. YANG is now also being used as a managed using NETCONF [RFC6241]. YANG is now also being used as a
component of wider management interfaces, such as CLIs. component of wider management interfaces, such as CLIs.
This document defines a draft 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. Currently this model is Multicast Listener Discovery (MLD) devices. This model will support
incomplete, but it will support the core IGMP and MLD protocols, as the core IGMP and MLD protocols, as well as many other features
well as many other features mentioned in separate IGMP and MLD RFCs. mentioned in separate IGMP and MLD RFCs. Non-core features are
Non-core features are defined as optional in the provided data defined as optional in the provided data model.
model.
1.1. Requirements Language 1.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC-2119 [RFC2119]. document are to be interpreted as described in RFC-2119 [RFC2119].
1.2. Terminology 1.2. Terminology
The terminology for describing YANG data models is found The terminology for describing YANG data models is found in
in[RFC6020]. [RFC6020].
This draft employs YANG tree diagrams, which are explained in [I- This document employs YANG tree diagrams, which are explained in [I-
D.ietf-netmod-rfc6087bis]. D.ietf-netmod-rfc6087bis].
2. Design of Data model 2. Design of Data model
2.1. Scope of model 2.1. Scope of model
The model covers IGMPv1 [RFC1112], IGMPv2[RFC2236], IGMPv3[RFC3376] The model covers IGMPv1 [RFC1112], IGMPv2 [RFC2236], IGMPv3
and MLDv1[RFC2710], MLDv2[RFC3810]. [RFC3376] and MLDv1 [RFC2710], MLDv2 [RFC3810].
The representation of some of extension features is not specified in The configuration of IGMP and MLD features are not all included in
this draft of the data model. This model is being circulated in its this document of the data model. This model is being circulated in
current form for early oversight and review of the basic hierarchy. its mainly form of the basic hierarchy.
The operational state fields and rpcs of this model can also be The operational state fields and RPC definitions of this model can
extended, though the structure of what has been written may be taken also be extended, though the structure of what has been written may
as representative of the structure of the whole model. be taken as representative of the structure of the whole model.
This model does not cover other IGMP and MLD related protocols such This model does not cover other IGMP and MLD related protocols such
as IGMP/MLD Proxy[RFC4605] or IGMP/MLD Snooping[RFC4541] etc., these as IGMP/MLD Proxy [RFC4605] or IGMP/MLD Snooping [RFC4541] etc.,
will be specified in separate documents. these will be specified in separate documents.
2.2. Optional capabilities 2.2. Optional capabilities
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 some with basic devices with various specifications, including some with basic
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 draft are that any major now-existing implementation may be this document are that any major now-existing implementation may be
said to support the basic model, and that the configuration of all said to support the basic model, and that the configuration of all
implementations meeting the specification is easy to express through implementations meeting the specification is easy to express through
some combination of the features in the basic model and simple some combination of the features in the basic model and simple
vendor augmentations. vendor augmentations.
There is also value in widely-supported features being standardized, There is also value in widely-supported features being standardized,
to save work for individual vendors, and so that mapping between to save work for individual vendors, and so that mapping between
different vendors' configuration is not needlessly complicated. different vendors' configuration is not needlessly complicated.
Therefore these modules declare a number of features representing Therefore these modules declare a number of features representing
capabilities that not all deployed devices support. capabilities that not all deployed devices support.
skipping to change at page 4, line 17 skipping to change at page 4, line 17
MLD implementations. MLD implementations.
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. supported.
For the same reason, basic constant ranges (for example, timer For the same reason, basic constant ranges (for example, query
maximum and minimum) will be used in the model. It is expected that interval maximum and minimum value) will be used in the model, as
vendors will augment the model with extended specific restrictions defined with "-basic" postfix form. It is expected that vendors will
that might be required. Vendors may also extend the features list augment the model with extended specific restrictions that might be
with proprietary extensions. required, as defined a feature with "-extended" postfix form.
Vendors may also extend the features list with proprietary
extensions.
2.3. Position of address family in hierarchy 2.3. Position of address family in hierarchy
The current draft contains IGMP and MLD as separate schema branches The current document contains IGMP and MLD as separate schema
in the structure. The reason for this is to make it easier for branches in the structure. The reason for this is to make it easier
implementations which may optionally choose to support specific for implementations which may optionally choose to support specific
address families. And the names of objects may be different between address families. And the names of objects may be different between
the ipv4(IGMP)and ipv6(MLD)address families. the IPv4 (IGMP) and IPv6 (MLD) address families.
3. Module Structure 3. Module Structure
3.1. IGMP and MLD Configuration 3.1. IGMP and MLD Configuration
The IGMP and MLD modules define the routing-control-plane-protocol- The IGMP and MLD modules define the routing-control-plane-protocol-
wide configuration options separately in a three-level hierarchy as wide configuration options separately in a three-level hierarchy as
listed below: listed below:
Global level: IGMP or MLD configuration attributes for the entire Global level: IGMP or MLD configuration attributes for the entire
routing system routing system.
Interface-global: IGMP or MLD configuration attributes applicable Interface-global: IGMP or MLD configuration attributes are
to all interfaces IGMP MLD configuration attributes applied to applicable to all the interfaces whose interface-level corresponding
interfaces whose interface level attributes are not existing, with attributes are not existing, with same attributes' value for these
same attributes' value for those interfaces.
Interface-level: IGMP or MLD configuration attributes specific to Interface-level: IGMP or MLD configuration attributes specific to
the given interface the given interface.
Where fields are not genuinely essential to protocol operation, they Where fields are not genuinely essential to protocol operation, they
are marked as optional. Some fields will be essential but have a are marked as optional. Some fields will be essential but have a
default specified, so that they need not be configured explicitly. default specified, so that they need not be configured explicitly.
The module structure also applies, where applicable, to the The module structure also applies, where applicable, to the
operational state and notifications as well. operational state and notifications as well.
Our current direction is to agree to a protocol-centric model , and We define the IGMP and MLD model as a protocol-centric model , and
the IGMP and MLD model augments "/rt:routing/rt:control-plane- the IGMP and MLD model augments "/rt:routing/rt:control-plane-
protocols/ rt:control-plane-protocol" and would allow a single protocols/ rt:control-plane-protocol" and would allow a single
protocol instance per VRF. protocol instance per VRF.
augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol: augment /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:
+--rw igmp +--rw igmp
+--rw global +--rw global
| +--rw enable? boolean {global-admin-enable}? | +--rw enable? 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}?
skipping to change at page 8, line 15 skipping to change at page 8, line 15
3.2. IGMP and MLD Operational State 3.2. IGMP and MLD Operational State
The IGMP or MLD module contains operational state information also The IGMP or MLD module contains operational state information also
in a three-level hierarchy as mentioned earlier and separately in a three-level hierarchy as mentioned earlier and separately
listed as below. listed as below.
Global level: IGMP or MLD operational state attributes for the Global level: IGMP or MLD operational state attributes for the
entire routing system entire routing system
Interface-global: IGMP or MLD interface level operational state Interface-global: IGMP or MLD interface level operational state
attributes applied to interfaces whose interface level attributes do attributes are applicable to all the interfaces whose interface-
not exist, with same attributes' value for those interfaces level corresponding attributes are not existing, with same
attributes' value for these interfaces.
Interface-specific: IGMP or MLD operational state attributes Interface-specific: IGMP or MLD operational state attributes
specific to the given interface. specific to the given interface.
augment /rt:routing-state/rt:control-plane-protocols/rt:control-plane-protocol: augment /rt:routing-state/rt:control-plane-protocols/rt:control-plane-protocol:
+--ro igmp +--ro igmp
+--ro global +--ro global
| +--ro enable? boolean {global-admin-enable}? | +--ro enable? boolean {global-admin-enable}?
| +--ro max-entries? uint32 {global-max-entries}? | +--ro max-entries? uint32 {global-max-entries}?
| +--ro max-groups? uint32 {global-max-groups}? | +--ro max-groups? uint32 {global-max-groups}?
skipping to change at page 9, line 21 skipping to change at page 9, line 23
| +--:(query-max-response-time-basic) | +--:(query-max-response-time-basic)
| | +--ro query-max-response-time-basic? uint16 | | +--ro query-max-response-time-basic? uint16
| +--:(query-max-response-time-extended) | +--:(query-max-response-time-extended)
| +--ro query-max-response-time-extended? uint16 {intf-query-max-response-time-extended}? | +--ro query-max-response-time-extended? uint16 {intf-query-max-response-time-extended}?
+--ro require-router-alert? boolean {intf-require-router-alert}? +--ro require-router-alert? boolean {intf-require-router-alert}?
+--ro (robustness-variable)? +--ro (robustness-variable)?
| +--:(robustness-variable-basic) | +--:(robustness-variable-basic)
| | +--ro robustness-variable-basic? uint8 | | +--ro robustness-variable-basic? uint8
| +--:(robustness-variable-extended) | +--:(robustness-variable-extended)
| +--ro robustness-variable-extended? uint8 {intf-robustness-variable-extended}? | +--ro robustness-variable-extended? uint8 {intf-robustness-variable-extended}?
+--ro version? uint8
+--ro interface* [interface-name] +--ro interface* [interface-name]
+--ro interface-name if:interface-ref +--ro interface-name if:interface-ref
+--ro enable? boolean {intf-admin-enable}? +--ro enable? boolean {intf-admin-enable}?
+--ro group-policy? string +--ro group-policy? string
+--ro immediate-leave? empty {intf-immediate-leave}? +--ro immediate-leave? empty {intf-immediate-leave}?
+--ro (last-member-query-interval)? +--ro (last-member-query-interval)?
| +--:(last-member-query-interval-basic) | +--:(last-member-query-interval-basic)
| | +--ro last-member-query-interval-basic? uint16 | | +--ro last-member-query-interval-basic? uint16
| +--:(last-member-query-interval-extended) | +--:(last-member-query-interval-extended)
| +--ro last-member-query-interval-extended? uint16 {intf-last-member-query-interval-extended}? | +--ro last-member-query-interval-extended? uint16 {intf-last-member-query-interval-extended}?
skipping to change at page 11, line 28 skipping to change at page 11, line 29
| +--:(query-max-response-time-basic) | +--:(query-max-response-time-basic)
| | +--ro query-max-response-time-basic? uint16 | | +--ro query-max-response-time-basic? uint16
| +--:(query-max-response-time-extended) | +--:(query-max-response-time-extended)
| +--ro query-max-response-time-extended? uint16 {intf-query-max-response-time-extended}? | +--ro query-max-response-time-extended? uint16 {intf-query-max-response-time-extended}?
+--ro require-router-alert? boolean {intf-require-router-alert}? +--ro require-router-alert? boolean {intf-require-router-alert}?
+--ro (robustness-variable)? +--ro (robustness-variable)?
| +--:(robustness-variable-basic) | +--:(robustness-variable-basic)
| | +--ro robustness-variable-basic? uint8 | | +--ro robustness-variable-basic? uint8
| +--:(robustness-variable-extended) | +--:(robustness-variable-extended)
| +--ro robustness-variable-extended? uint8 {intf-robustness-variable-extended}? | +--ro robustness-variable-extended? uint8 {intf-robustness-variable-extended}?
+--ro version? uint8
+--ro interface* [interface-name] +--ro interface* [interface-name]
+--ro interface-name if:interface-ref +--ro interface-name if:interface-ref
+--ro enable? boolean {intf-admin-enable}? +--ro enable? boolean {intf-admin-enable}?
+--ro group-policy? string +--ro group-policy? string
+--ro immediate-leave? empty {intf-immediate-leave}? +--ro immediate-leave? empty {intf-immediate-leave}?
+--ro (last-member-query-interval)? +--ro (last-member-query-interval)?
| +--:(last-member-query-interval-basic) | +--:(last-member-query-interval-basic)
| | +--ro last-member-query-interval-basic? uint16 | | +--ro last-member-query-interval-basic? uint16
| +--:(last-member-query-interval-extended) | +--:(last-member-query-interval-extended)
| +--ro last-member-query-interval-extended? uint16 {intf-last-member-query-interval-extended}? | +--ro last-member-query-interval-extended? uint16 {intf-last-member-query-interval-extended}?
skipping to change at page 11, line 50 skipping to change at page 11, line 50
+--ro max-group-sources? uint32 {intf-max-group-sources}? +--ro max-group-sources? uint32 {intf-max-group-sources}?
+--ro (query-interval)? +--ro (query-interval)?
| +--:(query-interval-basic) | +--:(query-interval-basic)
| | +--ro query-interval-basic? uint16 | | +--ro query-interval-basic? uint16
| +--:(query-interval-extended) | +--:(query-interval-extended)
| +--ro query-interval-extended? uint16 {intf-query-interval-extended}? | +--ro query-interval-extended? uint16 {intf-query-interval-extended}?
+--ro (query-max-response-time)? +--ro (query-max-response-time)?
| +--:(query-max-response-time-basic) | +--:(query-max-response-time-basic)
| | +--ro query-max-response-time-basic? uint16 | | +--ro query-max-response-time-basic? uint16
| +--:(query-max-response-time-extended) | +--:(query-max-response-time-extended)
| +--ro query-max-response-time-extended? uint16 {intf-query-max-response-time-extended}? | +--ro query-max-response-time-extended? uint16 {intf-query-max-response-time-extended}
+--ro require-router-alert? boolean {intf-require-router-alert}? +--ro require-router-alert? boolean {intf-require-router-alert}?
+--ro (robustness-variable)? +--ro (robustness-variable)?
| +--:(robustness-variable-basic) | +--:(robustness-variable-basic)
| | +--ro robustness-variable-basic? uint8 | | +--ro robustness-variable-basic? uint8
| +--:(robustness-variable-extended) | +--:(robustness-variable-extended)
| +--ro robustness-variable-extended? uint8 {intf-robustness-variable-extended}? | +--ro robustness-variable-extended? uint8 {intf-robustness-variable-extended}?
+--ro source-policy? string {intf-source-policy}? +--ro source-policy? string {intf-source-policy}?
+--ro verify-source-subnet? empty {intf-verify-source-subnet}? +--ro verify-source-subnet? empty {intf-verify-source-subnet}?
+--ro version? uint8 +--ro version? uint8
+--ro join-group* inet:ipv6-address {intf-join-group}? +--ro join-group* inet:ipv6-address {intf-join-group}?
skipping to change at page 13, line 13 skipping to change at page 13, line 13
+---x clear-mld-groups {rpc-clear-groups}? +---x clear-mld-groups {rpc-clear-groups}?
+---w input +---w input
+---w interface? -> /rt:routing/control-plane-protocols/control-plane-protocol/mld/interfaces/interface/interface-name +---w interface? -> /rt:routing/control-plane-protocols/control-plane-protocol/mld/interfaces/interface/interface-name
+---w group? inet:ipv6-address +---w group? inet:ipv6-address
+---w source? inet:ipv6-address +---w source? inet:ipv6-address
4. IGMP and MLD YANG Modules 4. IGMP and MLD YANG Modules
<CODE BEGINS> file "ietf-igmp-mld@2017-06-30.yang"
<CODE BEGINS> file "ietf-igmp-mld@2017-03-13.yang" module ietf-igmp-mld {
module ietf-igmp-mld {
namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld"; namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld";
// replace with IANA namespace when assigned // replace with IANA namespace when assigned
prefix igmp-mld; prefix igmp-mld;
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
} }
import ietf-yang-types { import ietf-yang-types {
prefix "yang"; prefix "yang";
skipping to change at page 14, line 27 skipping to change at page 14, line 27
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 a collection of YANG definitions common for "The module defines a collection of YANG definitions common for
IGMP and MLD."; IGMP and MLD.";
revision 2017-03-13 { revision 2017-06-30 {
description description
"Initial revision."; "Updated for model description and errata.";
reference reference
"RFC XXXX: A YANG Data Model for IGMP and MLD"; "RFC XXXX: A YANG Data Model for IGMP and MLD";
} }
/* /*
* Features * Features
*/ */
feature global-admin-enable { feature global-admin-enable {
description description
"Support global configuration to enable or disable protocol."; "Support global configuration to enable or disable protocol.";
skipping to change at page 18, line 18 skipping to change at page 18, line 18
/* /*
* Groupings * Groupings
*/ */
grouping global-config-attributes { grouping global-config-attributes {
description "Global IGMP and MLD configuration."; description "Global IGMP and MLD configuration.";
leaf enable { leaf enable {
if-feature global-admin-enable; if-feature global-admin-enable;
type boolean; type boolean;
description description
"true to enable IGMP in the routing instance; "true to enable IGMP or MLD in the routing instance;
false to disable IGMP in the routing instance."; false to disable IGMP or MLD 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
"The maximum number of entries in IGMP."; "The maximum number of entries in IGMP or MLD.";
} }
leaf max-groups { leaf max-groups {
if-feature global-max-groups; if-feature global-max-groups;
type uint32; type uint32;
description description
"The maximum number of groups that IGMP can join."; "The maximum number of groups that IGMP
or MLD can join.";
} }
} // global-config-attributes } // global-config-attributes
grouping global-state-attributes { grouping global-state-attributes {
description "Global IGMP and MLD state attributes."; description "Global IGMP and MLD state attributes.";
leaf entries-count { leaf entries-count {
type uint32; type uint32;
description description
"The number of entries in IGMP."; "The number of entries in IGMP or MLD.";
} }
leaf groups-count { leaf groups-count {
type uint32; type uint32;
description description
"The number of groups that IGMP can join."; "The number of groups that IGMP or MLD can join.";
} }
container statistics { container statistics {
description "Global statistics."; description "Global statistics.";
leaf discontinuity-time { leaf discontinuity-time {
type yang:date-and-time; type yang:date-and-time;
description description
"The time on the most recent occasion at which any one "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
skipping to change at page 20, line 25 skipping to change at page 20, line 26
} }
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 interfaces-config-attributes { grouping interfaces-config-attributes {
description description
"Configuration attributes applied to interfaces whose "Configuration attributes applied to the interfaces whose
per interface attributes are not existing."; per interface attributes are not existing.";
choice last-member-query-interval { choice last-member-query-interval {
description description
"Different vendors can restrict different range to the "Different vendors can restrict different range to the
Last Member Query Interval parameter."; Last Member Query Interval parameter.";
leaf last-member-query-interval-basic { leaf last-member-query-interval-basic {
type uint16 { type uint16 {
range "1..65535"; range "1..65535";
skipping to change at page 20, line 48 skipping to change at page 20, line 49
default 1; default 1;
description description
"Last Member Query Interval, which may be tuned to modify the "Last Member Query Interval, which may be tuned to modify the
leave latency of the network."; leave latency of the network.";
reference "RFC3376. Sec. 8.8."; reference "RFC3376. Sec. 8.8.";
} }
leaf last-member-query-interval-extended { leaf last-member-query-interval-extended {
if-feature intf-last-member-query-interval-extended; if-feature intf-last-member-query-interval-extended;
type uint16; type uint16;
units seconds; units seconds;
default 1;
description description
"Last Member Query Interval, which may be tuned to modify the "Last Member Query Interval, which may be tuned to modify the
leave latency of the network."; leave latency of the network.";
reference "RFC3376. Sec. 8.8."; reference "RFC3376. Sec. 8.8.";
} }
} }
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 that IGMP can join."; "The maximum number of groups that IGMP or MLD can join.";
} }
choice query-interval { choice query-interval {
description description
"Different vendors can restrict different range to the "Different vendors can restrict different range to the
Query Interval parameter."; Query Interval parameter.";
leaf query-interval-basic { leaf query-interval-basic {
type uint16 { type uint16 {
range "1..31744"; range "1..31744";
} }
skipping to change at page 21, line 33 skipping to change at page 21, line 33
default 125; default 125;
description description
"The Query Interval is the interval between General Queries "The Query Interval is the interval between General Queries
sent by the Querier."; sent by the Querier.";
reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2."; reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2.";
} }
leaf query-interval-extended { leaf query-interval-extended {
if-feature intf-query-interval-extended; if-feature intf-query-interval-extended;
type uint16; type uint16;
units seconds; units seconds;
default 125;
description description
"The Query Interval is the interval between General Queries "The Query Interval is the interval between General Queries
sent by the Querier."; sent by the Querier.";
reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2."; reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2.";
} }
} }
choice query-max-response-time { choice query-max-response-time {
description description
"Different vendors can restrict different range to the "Different vendors can restrict different range to the
Query maximum response time parameter."; Query maximum response time parameter.";
skipping to change at page 22, line 4 skipping to change at page 21, line 53
leaf query-max-response-time-basic { leaf query-max-response-time-basic {
type uint16 { type uint16 {
range "1..65535"; range "1..65535";
} }
units seconds; units seconds;
default 10; default 10;
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.";
reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3."; reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3.";
} }
leaf query-max-response-time-extended { leaf query-max-response-time-extended {
if-feature intf-query-max-response-time-extended; if-feature intf-query-max-response-time-extended;
type uint16; type uint16;
units seconds; units seconds;
default 10;
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.";
reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3."; reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.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;
default false; default false;
skipping to change at page 22, line 43 skipping to change at page 22, line 41
} }
default 2; default 2;
description description
"Querier's Robustness Variable allows tuning for the expected "Querier's Robustness Variable allows tuning for the expected
packet loss on a network."; packet loss on a network.";
reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1."; reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1.";
} }
leaf robustness-variable-extended { leaf robustness-variable-extended {
if-feature intf-robustness-variable-extended; if-feature intf-robustness-variable-extended;
type uint8; type uint8;
default 2;
description description
"Querier's Robustness Variable allows tuning for the expected "Querier's Robustness Variable allows tuning for the expected
packet loss on a network."; packet loss on a network.";
reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1."; reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1.";
} }
} }
} // interfaces-config-attributes
grouping interface-config-attributes-igmp {
description "Per interface igmp configuration for IGMP.";
uses interface-config-attributes-igmp-mld;
leaf version { leaf version {
type uint8 { type uint8 {
range "1..3"; range "1..3";
} }
description "IGMP version."; description "IGMP version.";
reference "RFC1112, RFC2236, RFC3376."; reference "RFC1112, RFC2236, RFC3376.";
} }
} // interfaces-config-attributes
grouping interface-config-attributes-igmp {
description "Per interface igmp configuration for IGMP.";
uses interface-config-attributes-igmp-mld;
leaf-list join-group { leaf-list join-group {
if-feature intf-join-group; if-feature intf-join-group;
type inet:ipv4-address; type inet:ipv4-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 "source-addr group-policy"; key "source-addr group-policy";
description "The policy for (*,G) mapping to (S,G)."; description "The policy for (*,G) mapping to (S,G).";
leaf source-addr { leaf source-addr {
type ssm-map-ipv4-addr-type; type ssm-map-ipv4-addr-type;
description description
"Multicast source IP address."; "Multicast source IP address.";
} }
leaf group-policy { leaf group-policy {
type string; type string;
description description
"Name of the access policy used to filter IGMP "Name of the access policy used to filter IGMP
membership.A device MAY restrict the length membership.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 source-addr"; key "group source-addr";
description description
"A static multicast route, (*,G) or (S,G)."; "A static multicast route, (*,G) or (S,G).";
leaf group { leaf group {
skipping to change at page 24, line 19 skipping to change at page 24, line 18
grouping interface-config-attributes-igmp-mld { grouping interface-config-attributes-igmp-mld {
description description
"Per interface configuration for both IGMP and MLD."; "Per interface configuration for both IGMP and MLD.";
leaf enable { leaf enable {
if-feature intf-admin-enable; if-feature intf-admin-enable;
type boolean; type boolean;
default false; default false;
description description
"true to enable IGMP on the interface; "true to enable IGMP or MLD on the interface;
false to disable IGMP on the interface."; false to disable IGMP or MLD on the interface.";
} }
leaf group-policy { leaf group-policy {
type string; type string;
description description
"Name of the access policy used to filter IGMP "Name of the access policy used to filter IGMP or MLD
membership.A device MAY restrict the length membership.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.";
} }
leaf immediate-leave { leaf immediate-leave {
if-feature intf-immediate-leave; if-feature intf-immediate-leave;
type empty; type empty;
description description
"If present, IGMP perform an immediate leave upon receiving an "If present, IGMP or MLD perform an immediate leave upon
IGMP Version 2 (IGMPv2) leave message. receiving an IGMPv2 or MLDv1 leave message.
If the router is IGMP-enabled, it sends an IGMP last member If the router is IGMP-enabled or MLD-enabled, it sends an
query with a last member query response time. However, the IGMP or MLD last member query with a last member query
router does not wait for the response time before it prunes response time. However, the router does not wait for
off the group."; the response time before it prunes off the group.";
} }
choice last-member-query-interval { choice last-member-query-interval {
description description
"Different vendors can restrict different range to the "Different vendors can restrict different range to the
Last Member Query Interval parameter."; Last Member Query Interval parameter.";
leaf last-member-query-interval-basic { leaf last-member-query-interval-basic {
type uint16 { type uint16 {
range "1..65535"; range "1..65535";
} }
skipping to change at page 25, line 6 skipping to change at page 25, line 4
leaf last-member-query-interval-basic { leaf last-member-query-interval-basic {
type uint16 { type uint16 {
range "1..65535"; range "1..65535";
} }
units seconds; units seconds;
default 1; default 1;
description description
"Last Member Query Interval, which may be tuned to modify the "Last Member Query Interval, which may be tuned to modify the
leave latency of the network."; leave latency of the network.";
reference "RFC3376. Sec. 8.8."; reference "RFC3376. Sec. 8.8.";
} }
leaf last-member-query-interval-extended { leaf last-member-query-interval-extended {
if-feature intf-last-member-query-interval-extended; if-feature intf-last-member-query-interval-extended;
type uint16; type uint16;
units seconds; units seconds;
default 1;
description description
"Last Member Query Interval, which may be tuned to modify the "Last Member Query Interval, which may be tuned to modify the
leave latency of the network."; leave latency of the network.";
reference "RFC3376. Sec. 8.8."; reference "RFC3376. Sec. 8.8.";
} }
} }
leaf max-groups { leaf max-groups {
if-feature intf-max-groups; if-feature intf-max-groups;
type uint32; type uint32;
description description
"The maximum number of groups that IGMP can join."; "The maximum number of groups that IGMP ro MLD can join.";
} }
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.";
} }
choice query-interval { choice query-interval {
description description
"Different vendors can restrict different range to the "Different vendors can restrict different range to the
skipping to change at page 25, line 51 skipping to change at page 25, line 49
default 125; default 125;
description description
"The Query Interval is the interval between General Queries "The Query Interval is the interval between General Queries
sent by the Querier."; sent by the Querier.";
reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2."; reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2.";
} }
leaf query-interval-extended { leaf query-interval-extended {
if-feature intf-query-interval-extended; if-feature intf-query-interval-extended;
type uint16; type uint16;
units seconds; units seconds;
default 125;
description description
"The Query Interval is the interval between General Queries "The Query Interval is the interval between General Queries
sent by the Querier."; sent by the Querier.";
reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2."; reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2.";
} }
} }
choice query-max-response-time { choice query-max-response-time {
description description
"Different vendors can restrict different range to the "Different vendors can restrict different range to the
Query maximum response time parameter."; Query maximum response time parameter.";
leaf query-max-response-time-basic { leaf query-max-response-time-basic {
type uint16 { type uint16 {
range "1..65535"; range "1..65535";
} }
skipping to change at page 26, line 29 skipping to change at page 26, line 26
default 10; default 10;
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.";
reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3."; reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3.";
} }
leaf query-max-response-time-extended { leaf query-max-response-time-extended {
if-feature intf-query-max-response-time-extended; if-feature intf-query-max-response-time-extended;
type uint16; type uint16;
units seconds; units seconds;
default 10;
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.";
reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3."; reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.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
skipping to change at page 27, line 11 skipping to change at page 27, line 6
} }
default 2; default 2;
description description
"Querier's Robustness Variable allows tuning for the expected "Querier's Robustness Variable allows tuning for the expected
packet loss on a network."; packet loss on a network.";
reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1."; reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1.";
} }
leaf robustness-variable-extended { leaf robustness-variable-extended {
if-feature intf-robustness-variable-extended; if-feature intf-robustness-variable-extended;
type uint8; type uint8;
default 2;
description description
"Querier's Robustness Variable allows tuning for the expected "Querier's Robustness Variable allows tuning for the expected
packet loss on a network."; packet loss on a network.";
reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1."; reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1.";
} }
} }
leaf source-policy { leaf source-policy {
if-feature intf-source-policy; if-feature intf-source-policy;
type string; type string;
description description
"Name of the access policy used to filter sources. "Name of the access policy used to filter sources.
A device MAY 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.";
} }
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 version {
type uint8 {
range "1..3";
}
description "IGMP version.";
reference "RFC1112, RFC2236, RFC3376.";
}
} // interface-config-attributes-igmp-mld } // interface-config-attributes-igmp-mld
grouping interface-config-attributes-mld { grouping interface-config-attributes-mld {
description "Per interface mld configuration for MLD."; description "Per interface mld configuration for MLD.";
uses interface-config-attributes-igmp-mld; uses interface-config-attributes-igmp-mld;
leaf version {
type uint8 {
range "1..2";
}
description "MLD version.";
reference "RFC2710, RFC3810.";
}
leaf-list join-group { leaf-list join-group {
if-feature intf-join-group; if-feature intf-join-group;
type inet:ipv6-address; type inet:ipv6-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 "source-addr group-policy"; key "source-addr group-policy";
description "The policy for (*,G) mapping to (S,G)."; description "The policy for (*,G) mapping to (S,G).";
leaf source-addr { leaf source-addr {
type ssm-map-ipv6-addr-type; type ssm-map-ipv6-addr-type;
description description
"Multicast source IPv6 address."; "Multicast source IPv6 address.";
skipping to change at page 28, line 20 skipping to change at page 28, line 14
description "The policy for (*,G) mapping to (S,G)."; description "The policy for (*,G) mapping to (S,G).";
leaf source-addr { leaf 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 group-policy { leaf group-policy {
type string; type string;
description description
"Name of the access policy used to filter MLD "Name of the access policy used to filter MLD
membership.A device MAY restrict the length membership.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 source-addr"; key "group source-addr";
description description
"A static multicast route, (*,G) or (S,G)."; "A static multicast route, (*,G) or (S,G).";
skipping to change at page 29, line 28 skipping to change at page 29, line 22
leaf address { leaf address {
type inet:ipv4-address; type inet:ipv4-address;
description description
"Multicast group address."; "Multicast group address.";
} }
uses interface-state-group-attributes-igmp-mld; uses interface-state-group-attributes-igmp-mld;
leaf-list host { leaf-list host {
type inet:ipv4-address; type inet:ipv4-address;
description description
"List of host address that "List of host addresses that
joined the multicast group"; joined the multicast group";
} }
leaf last-reporter { leaf last-reporter {
type inet:ipv4-address; type inet:ipv4-address;
description description
"The last host address which has sent the "The last host address which has sent the
report to join the multicast group."; report to join the multicast group.";
} }
list source { list source {
key "address"; key "address";
skipping to change at page 31, line 14 skipping to change at page 31, line 8
leaf address { leaf address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Multicast group address."; "Multicast group address.";
} }
uses interface-state-group-attributes-igmp-mld; uses interface-state-group-attributes-igmp-mld;
leaf-list host { leaf-list host {
type inet:ipv6-address; type inet:ipv6-address;
description description
"List of host address that "List of host addresses that
joined the multicast group"; joined the multicast group";
} }
leaf last-reporter { leaf last-reporter {
type inet:ipv6-address; type inet:ipv6-address;
description description
"The last host address which has sent the "The last host address which has sent the
report to join the multicast group."; report to join the multicast group.";
} }
list source { list source {
key "address"; key "address";
skipping to change at page 32, line 4 skipping to change at page 31, line 48
grouping interface-state-group-attributes-igmp-mld { grouping interface-state-group-attributes-igmp-mld {
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;
description description
"The time left before multicast group timeout."; "The time left before 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";
} }
skipping to change at page 32, line 30 skipping to change at page 32, line 25
listed in the source-list parameter."; listed in the source-list parameter.";
} }
} }
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 host-count { leaf host-count {
type uint32; type uint32;
description description
"The number of host address."; "The number of host addresses.";
} }
leaf up-time { leaf up-time {
type uint32; type uint32;
units seconds; units seconds;
description description
"The time after the device created multicast group record."; "The elapsed time since the device created multicast group record.";
} }
} // interface-state-group-attributes-igmp-mld } // interface-state-group-attributes-igmp-mld
grouping interface-state-source-attributes-igmp-mld { grouping interface-state-source-attributes-igmp-mld {
description description
"Per interface state attributes for both IGMP and MLD "Per interface state attributes for both IGMP and MLD
groups."; source-group records.";
leaf expire { leaf expire {
type uint32; type uint32;
units seconds; units seconds;
description description
"The time left before multicast group timeout."; "The time left before multicast source-group state expires.";
} }
leaf up-time { leaf up-time {
type uint32; type uint32;
units seconds; units seconds;
description description
"The time after the device created multicast group record."; "The elapsed time since the device created multicast
source-group record.";
} }
} // interface-state-source-attributes-igmp-mld } // interface-state-source-attributes-igmp-mld
/* /*
* Configuration data nodes * Configuration data nodes
*/ */
augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol" augment "/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol"
{ {
description description
"IGMP augmentation to routing control plane protocol configuration."; "IGMP augmentation to routing control plane protocol configuration.";
skipping to change at page 33, line 35 skipping to change at page 33, line 32
uses global-config-attributes; uses global-config-attributes;
} }
container interfaces { container interfaces {
description description
"Containing a list of interfaces."; "Containing a list of interfaces.";
uses interfaces-config-attributes { uses interfaces-config-attributes {
if-feature global-interface-config; if-feature global-interface-config;
} }
leaf version {
type uint8 {
range "1..3";
}
description "IGMP version.";
reference "RFC1112, RFC2236, RFC3376.";
}
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 "/if:interfaces/if:interface[if:name = current()]/"
+ "ip:ipv4" { + "ip:ipv4" {
description description
skipping to change at page 34, line 33 skipping to change at page 34, line 36
uses global-config-attributes; uses global-config-attributes;
} }
container interfaces { container interfaces {
description description
"Containing a list of interfaces."; "Containing a list of interfaces.";
uses interfaces-config-attributes { uses interfaces-config-attributes {
if-feature global-interface-config; if-feature global-interface-config;
} }
leaf version {
type uint8 {
range "1..2";
}
description "MLD version.";
reference "RFC2710,RFC3810.";
}
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 "/if:interfaces/if:interface[if:name = current()]/"
+ "ip:ipv6" { + "ip:ipv6" {
description description
"The interface must have IPv6 enabled."; "The interface must have IPv6 enabled.";
skipping to change at page 35, line 18 skipping to change at page 35, line 26
/* /*
* Operational state data nodes * Operational state data nodes
*/ */
augment "/rt:routing-state/rt:control-plane-protocols/rt:control-plane-protocol" augment "/rt:routing-state/rt:control-plane-protocols/rt:control-plane-protocol"
{ {
description description
"IGMP augmentation to routing control plane protocol state."; "IGMP augmentation to routing control plane protocol state.";
container igmp { container igmp {
description description
"IGMP configuration data."; "IGMP 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
skipping to change at page 36, line 17 skipping to change at page 36, line 26
} // igmp } // igmp
}//augment }//augment
augment "/rt:routing-state/rt:control-plane-protocols/rt:control-plane-protocol" augment "/rt:routing-state/rt:control-plane-protocols/rt:control-plane-protocol"
{ {
description description
"MLD augmentation to routing control plane protocol state."; "MLD augmentation to routing control plane protocol state.";
container mld { container mld {
description description
"MLD configuration data."; "MLD 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
skipping to change at page 37, line 15 skipping to change at page 37, line 23
} // interfaces } // interfaces
} // mld } // mld
} // augment } // augment
/* /*
* RPCs * RPCs
*/ */
rpc clear-igmp-groups { rpc clear-igmp-groups {
if-feature rpc-clear-groups; if-feature rpc-clear-groups;
description description
"Clears the specified IGMP cache tables."; "Clears the specified IGMP cache entries.";
input { input {
leaf interface { leaf interface {
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/interfaces/interface/" + "igmp/interfaces/interface/"
+ "interface-name"; + "interface-name";
} }
description description
"Name of the IGMP interface. "Name of the IGMP interface.
If it is not specified, groups from all interfaces are If it is not specified, groups from all interfaces are
cleared."; cleared.";
} }
leaf group { leaf group {
type inet:ipv4-address; type inet:ipv4-address;
description description
"Multicast group IPv4 address. "Multicast group IPv4 address.
If it is not specified, all IGMP group tables are If it is not specified, all IGMP group entries are
cleared."; cleared.";
} }
leaf source { leaf source {
type inet:ipv4-address; type inet:ipv4-address;
description description
"Multicast source IPv4 address. "Multicast source IPv4 address.
If it is not specified, all IGMP source-group tables are If it is not specified, all IGMP source-group entries are
cleared."; cleared.";
} }
} }
} // rpc clear-igmp-groups } // rpc clear-igmp-groups
rpc clear-mld-groups { rpc clear-mld-groups {
if-feature rpc-clear-groups; if-feature rpc-clear-groups;
description description
"Clears the specified MLD cache tables."; "Clears the specified MLD cache entires.";
input { input {
leaf interface { leaf interface {
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/"
+ "mld/interfaces/interface/" + "mld/interfaces/interface/"
+ "interface-name"; + "interface-name";
} }
description description
"Name of the MLD interface. "Name of the MLD interface.
If it is not specified, groups from all interfaces are If it is not specified, groups from all interfaces are
cleared."; cleared.";
} }
leaf group { leaf group {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Multicast group IPv6 address. "Multicast group IPv6 address.
If it is not specified, all MLD group tables are If it is not specified, all MLD group entries are
cleared."; cleared.";
} }
leaf source { leaf source {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Multicast source IPv6 address. "Multicast source IPv6 address.
If it is not specified, all MLD source-group tables are If it is not specified, all MLD source-group entries are
cleared."; cleared.";
} }
} }
} // rpc clear-mld-groups } // rpc clear-mld-groups
/* /*
* Notifications * Notifications
*/ */
} }
<CODE ENDS> <CODE ENDS>
5. Security Considerations 5. Security Considerations
The data model defined does not introduce any security implications. The data model defined does not introduce any security implications.
This draft does not change any underlying security issues inherent This document does not change any underlying security issues
in [RFC8022]. inherent in [RFC8022].
6. IANA Considerations 6. IANA Considerations
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the RFC Ed.: In this section, replace all occurrences of 'XXXX' with the
actual RFC number (and remove this note). actual RFC number (and remove this note).
This document registers the following namespace URIs in the IETF XML This document registers the following namespace URIs in the IETF XML
registry [RFC3688]: registry [RFC3688]:
-------------------------------------------------------------------- --------------------------------------------------------------------
 End of changes. 84 change blocks. 
120 lines changed or deleted 129 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/