draft-ietf-pim-igmp-mld-yang-14.txt   draft-ietf-pim-igmp-mld-yang-15.txt 
PIM Working Group X. Liu PIM Working Group X. Liu
Internet-Draft Volta Networks Internet-Draft Volta Networks
Intended Status: Standard Track F. Guo Intended Status: Standard Track F. Guo
Expires: November 29, 2019 Huawei Expires: December 14, 2019 Huawei
M. Sivakumar M. Sivakumar
Juniper Juniper
P. McAllister P. McAllister
Metaswitch Networks Metaswitch Networks
A. Peter A. Peter
Individual Individual
May 29, 2019 June 14, 2019
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-14 draft-ietf-pim-igmp-mld-yang-15
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 November 29, 2019. This Internet-Draft will expire on December 14, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 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 41 skipping to change at page 2, line 41
2.1. Scope of Model............................................4 2.1. Scope of Model............................................4
2.1.1. Parameters Not Covered at Global Level..................5 2.1.1. Parameters Not Covered at Global Level..................5
2.1.2. Parameters Not Covered at Interface Level...............5 2.1.2. Parameters Not Covered at Interface Level...............5
2.2. Optional Capabilities.....................................6 2.2. Optional Capabilities.....................................6
2.3. Position of Address Family in Hierarchy...................6 2.3. Position of Address Family in Hierarchy...................6
3. Module Structure...............................................7 3. Module Structure...............................................7
3.1. IGMP Configuration and Operational State..................7 3.1. IGMP Configuration and Operational State..................7
3.2. MLD Configuration and Operational State..................10 3.2. MLD Configuration and Operational State..................10
3.3. IGMP and MLD Actions.....................................13 3.3. IGMP and MLD Actions.....................................13
4. IGMP and MLD YANG Module......................................13 4. IGMP and MLD YANG Module......................................13
5. Security Considerations.......................................39 5. Security Considerations.......................................43
6. IANA Considerations...........................................42 6. IANA Considerations...........................................45
7. Acknowledgments...............................................42 7. Acknowledgments...............................................46
8. Contributing Authors..........................................43 8. Contributing Authors..........................................46
9. References....................................................43 9. References....................................................46
9.1. Normative References.....................................43 9.1. Normative References.....................................46
9.2. Informative References...................................44 9.2. Informative References...................................48
1. Introduction 1. Introduction
YANG [RFC6020] [RFC7950] is a data definition language that was YANG [RFC6020] [RFC7950] 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 [RFC6241] managed using network management protocols such as NETCONF [RFC6241]
or RESTCONF [RFC8040]. YANG is now also being used as a component of or RESTCONF [RFC8040]. YANG is now also being used as a component of
wider management interfaces, such as command line interfaces (CLIs). wider management interfaces, such as command line interfaces (CLIs).
This document defines a YANG data model that can be used to This document defines a YANG data model that can be used to
skipping to change at page 13, line 50 skipping to change at page 13, line 50
| | +---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
4. IGMP and MLD YANG Module 4. IGMP and MLD YANG Module
This module references [RFC1112], [RFC2236], [RFC2710], [RFC3376], This module references [RFC1112], [RFC2236], [RFC2710], [RFC3376],
[RFC3810], [RFC5790], [RFC6991], [RFC8294], [RFC8343], [RFC8344], [RFC3810], [RFC5790], [RFC6636], [RFC6991], [RFC8294], [RFC8343],
[RFC8349], and [RFC8519]. [RFC8344], [RFC8349], and [RFC8519].
<CODE BEGINS> file "ietf-igmp-mld@2019-05-21.yang" <CODE BEGINS> file "ietf-igmp-mld@2019-06-07.yang"
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";
} }
skipping to change at page 15, line 44 skipping to change at page 15, line 44
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 XXXX; see the
RFC itself for full legal notices."; RFC itself for full legal notices.";
// RFC Ed.: replace XXXX with actual RFC number and remove // RFC Ed.: replace XXXX with actual RFC number and remove
// this note // this note
revision 2019-05-29 { revision 2019-06-07 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: A YANG Data Model for IGMP and MLD"; "RFC XXXX: A YANG Data Model for IGMP and MLD";
} }
/* /*
* Features * Features
*/ */
skipping to change at page 17, line 39 skipping to change at page 17, line 39
feature intf-verify-source-subnet { feature intf-verify-source-subnet {
description description
"Support configuration of interface verify-source-subnet."; "Support configuration of interface verify-source-subnet.";
} }
feature intf-explicit-tracking { feature intf-explicit-tracking {
description description
"Support configuration of interface explicit-tracking hosts."; "Support configuration of interface explicit-tracking hosts.";
} }
feature intf-exclude-lite { feature intf-lite-exclude-filter {
description description
"Support configuration of interface exclude-lite."; "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.";
skipping to change at page 22, line 34 skipping to change at page 22, line 34
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;
default 1;
description description
"Last Member Query Interval, which may be tuned to modify the "When used in IGMP schema, this leaf indicates the Last
leave latency of the network."; Member Query Interval, which may be tuned to modify the
reference "RFC 3376. Sec. 8.8."; leave latency of the network;
when used in MLD schema, this leaf indicates the Last
Listener Query Interval, which may be tuned to modify the
leave latency of the network.
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
the MLD, the default value of this leaf is 1.
This leaf may be configured at the interface level or the
interface-global level, with precedence given to the value
at the interface level. If the leaf is not configured at
either level, the default value is used.";
reference
"RFC 2236. Sec. 8.8. RFC 3376. Sec. 8.8.
RFC 2710. Sec. 7.8. RFC 3810. Sec. 9.8.";
} }
leaf query-interval { leaf query-interval {
type uint16 { type uint16 {
range "1..31744"; range "1..31744";
} }
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. 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 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.
This leaf may be configured at the interface level or the
interface-global level, with precedence given to the value
at the interface level. If the leaf is not configured at
either level, the default value is used.";
reference "RFC 3376. Sec. 4.1.7, 8.2, 8.14.2."; reference "RFC 3376. Sec. 4.1.7, 8.2, 8.14.2.";
} }
leaf query-max-response-time { leaf query-max-response-time {
type uint16 { type uint16 {
range "1..1023"; range "1..1023";
} }
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.
The default value is 10.
This leaf may be configured at the interface level or the
interface-global level, with precedence given to the value
at the interface level. If the leaf is not configured at
either level, the default value is used.";
reference "RFC 3376. Sec. 4.1.1, 8.3, 8.14.3."; reference "RFC 3376. 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;
description description
"Protocol packets should contain router alert IP option."; "Protocol packets should contain router alert IP option.
When this node is not configured, the server uses the
following rules to determine the operational value of this
node:
if this grouping is used in IGMP schema and the value of the
node 'version' is 1, the value 'false' is operationally used
by the server;
if this grouping is used in IGMP schema and the value of the
node 'version' is 2 or 3, the value 'true' is operationally
used by the server;
if this grouping is used in MLD schema, the value 'true' is
operationally used by the server.
This leaf may be configured at the interface level or the
interface-global level, with precedence given to the value
at the interface level. If the leaf is not configured at
either level, the default value is used.";
} }
leaf robustness-variable { leaf robustness-variable {
type uint8 { type uint8 {
range "1..7"; range "1..7";
} }
default 2; description
description "Querier's Robustness Variable allows tuning for 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.
reference "RFC 3376. Sec. 4.1.6, 8.1, 8.14.1."; This leaf may be configured at the interface level or the
} interface-global level, with precedence given to the value
at the interface level. If the leaf is not configured at
either level, the default value is used.";
reference "RFC 3376. Sec. 4.1.6, 8.1, 8.14.1.";
}
} // 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";
} }
default 2; description
description "IGMP version."; "IGMP version.
The default value is 2.
This leaf may be configured at the interface level or the
interface-global level, with precedence given to the value
at the interface level. If the leaf is not configured at
either level, the default value is used.";
reference "RFC 1112, RFC 2236, RFC 3376."; reference "RFC 1112, RFC 2236, RFC 3376.";
} }
} }
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";
} }
skipping to change at page 24, line 20 skipping to change at page 25, line 14
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";
} }
default 2; description
description "MLD version."; "MLD version.
The default value is 2.
This leaf may be configured at the interface level or the
interface-global level, with precedence given to the value
at the interface level. If the leaf is not configured at
either level, the default value is used.";
reference "RFC 2710, RFC 3810."; reference "RFC 2710, RFC 3810.";
} }
} }
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;
skipping to change at page 26, line 38 skipping to change at page 27, line 36
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.
A device can restrict the length and value of this name, The value space of this leaf is restricted to the existing
with the possibility that space and certain special policy instances defined by the referenced schema RFC 8519.
characters are not allowed. As specified by RFC 8519, the length of the name is between
1 and 64; a device MAY further restrict the length of this
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.";
} }
skipping to change at page 27, line 15 skipping to change at page 28, line 16
"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 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 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
"RFC 6636. Sec 3.";
} }
leaf exclude-lite { leaf lite-exclude-filter {
if-feature intf-exclude-lite; 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.";
skipping to change at page 27, line 46 skipping to change at page 28, line 49
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;
must "../version = 3 or "
+ "(not(../version) and (../../version = 3))" {
error-message
"The version of IGMP must be 3 to support the source "
+ "specific parameters.";
}
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. ";
} }
} }
skipping to change at page 28, line 19 skipping to change at page 29, line 27
"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).";
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 page 28, line 48 skipping to change at page 30, line 8
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;
must "../version = 2 or "
+ "(not(../version) and (../../version = 2))" {
error-message
"The version of MLD must be 2 to support the source "
+ "specific parameters.";
}
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.";
} }
} }
skipping to change at page 29, line 19 skipping to change at page 30, line 34
"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).";
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 page 35, line 35 skipping to change at page 36, line 52
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 global-interface-config; if-feature global-interface-config;
refine query-interval {
default 125;
}
refine query-max-response-time {
default 10;
}
refine robustness-variable {
default 2;
}
refine version {
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 "/if:interfaces/if:interface[if:name = current()]/"
+ "ip:ipv4" { + "ip:ipv4" {
description 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 {
must "../version != 1 or "
+ "(not(../version) and "
+ "(not(../../version) or ../../version != 1))" {
error-message
"IGMPv1 does not support "
+ "last-member-query-interval.";
}
}
refine max-group-sources {
must "../version = 3 or "
+ "(not(../version) and (../../version = 3))" {
error-message
"The version of IGMP must be 3 to support the "
+ "source specific parameters.";
}
}
refine source-policy {
must "../version = 3 or "
+ "(not(../version) and (../../version = 3))" {
error-message
"The version of IGMP must be 3 to support the "
+ "source specific parameters.";
}
}
refine explicit-tracking {
must "../version = 3 or "
+ "(not(../version) and (../../version = 3))" {
error-message
"The version of IGMP must be 3 to support the "
+ "explicit tracking function.";
}
}
refine lite-exclude-filter {
must "../version = 3 or "
+ "(not(../version) and (../../version = 3))" {
error-message
"The version of IGMP must be 3 to support the "
+ "simplified EXCLUDE filter in the Lightweight "
+ "IGMPv3 protocol.";
}
}
} }
uses interface-state-attributes-igmp; uses interface-state-attributes-igmp;
} // interface } // interface
} // interfaces } // interfaces
/* /*
* Actions * Actions
*/ */
action clear-groups { action clear-groups {
if-feature action-clear-groups; if-feature action-clear-groups;
skipping to change at page 38, line 4 skipping to change at page 40, line 26
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 global-interface-config; if-feature global-interface-config;
refine last-member-query-interval {
default 1;
}
refine query-interval {
default 125;
}
refine query-max-response-time {
default 10;
}
refine require-router-alert {
default true;
}
refine robustness-variable {
default 2;
}
refine version {
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 "/if:interfaces/if:interface[if:name = current()]/"
+ "ip:ipv6" { + "ip:ipv6" {
description 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 {
must "../version = 2 or "
+ "(not(../version) and (../../version = 2))" {
error-message
"The version of MLD must be 2 to support the "
+ "source specific parameters.";
}
}
refine source-policy {
must "../version = 2 or "
+ "(not(../version) and (../../version = 2))" {
error-message
"The version of MLD must be 2 to support the "
+ "source specific parameters.";
}
}
refine explicit-tracking {
must "../version = 2 or "
+ "(not(../version) and (../../version = 2))" {
error-message
"The version of MLD must be 2 to support the "
+ "explicit tracking function.";
}
}
refine lite-exclude-filter {
must "../version = 2 or "
+ "(not(../version) and (../../version = 2))" {
error-message
"The version of MLD must be 2 to support the "
+ "simplified EXCLUDE filter in the Lightweight "
+ "MLDv2 protocol.";
}
}
} }
uses interface-state-attributes-mld; uses interface-state-attributes-mld;
} // interface } // interface
} // interfaces } // interfaces
/* /*
* Actions * Actions
*/ */
action clear-groups { action clear-groups {
if-feature action-clear-groups; if-feature action-clear-groups;
skipping to change at page 45, line 19 skipping to change at page 48, line 34
[RFC4605] B. Fenner, H. He, B. Haberman, and H. Sandick, "Internet [RFC4605] B. Fenner, H. He, B. Haberman, and H. Sandick, "Internet
Group Management Protocol (IGMP) / Multicast Listener Group Management Protocol (IGMP) / Multicast Listener
Discovery (MLD)-Based Multicast Forwarding ("IGMP/MLD Discovery (MLD)-Based Multicast Forwarding ("IGMP/MLD
Proxying")", RFC 4605, August 2006. Proxying")", RFC 4605, August 2006.
[RFC5790] H. Liu, W. Cao and H. Asaeda, "Lightweight Internet Group [RFC5790] H. Liu, W. Cao and H. Asaeda, "Lightweight Internet Group
Management Protocol Version 3 (IGMPv3) and Multicast Management Protocol Version 3 (IGMPv3) and Multicast
Listener Discovery Version 2 (MLDv2) Protocols", RFC 5790, Listener Discovery Version 2 (MLDv2) Protocols", RFC 5790,
February 2010. February 2010.
[RFC6636] H. Asaeda, H. Liu and Q. Wu, "Tuning the Behavior of the
Internet Group Management Protocol (IGMP) and Multicast
Listener Discovery (MLD) for Routers in Mobile and
Wireless Networks", RFC 6636, May 2012.
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
BCP 215, RFC 8340, March 2018. BCP 215, RFC 8340, March 2018.
[RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of
Documents Containing YANG Data Models", RFC 8407, October Documents Containing YANG Data Models", RFC 8407, October
2018. 2018.
[I-D.ietf-netconf-subscribed-notifications] [I-D.ietf-netconf-subscribed-notifications]
Voit, E., Clemm, A., Prieto, A., Nilsen-Nygaard, E., and Voit, E., Clemm, A., Prieto, A., Nilsen-Nygaard, E., and
 End of changes. 38 change blocks. 
55 lines changed or deleted 227 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/