ietf-igmp-mld-snooping@2021-12-20.yang   ietf-igmp-mld-snooping@2021-12-20-formatted.yang 
module ietf-igmp-mld-snooping { module ietf-igmp-mld-snooping {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld-snooping"; namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld-snooping";
prefix ims; prefix ims;
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix inet;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
} }
import ietf-yang-types { import ietf-yang-types {
prefix "yang"; prefix yang;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
} }
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix if;
reference reference
"RFC 8343: A YANG Data Model for Interface Management"; "RFC 8343: A YANG Data Model for Interface Management";
} }
import ietf-routing { import ietf-routing {
prefix "rt"; prefix rt;
reference reference
"RFC 8349: A YANG Data Model for Routing Management (NMDA "RFC 8349: A YANG Data Model for Routing Management (NMDA
Version)"; Version)";
} }
import ietf-routing-types { import ietf-routing-types {
prefix "rt-types"; prefix rt-types;
reference reference
"RFC 8294: Common YANG Data Types for the Routing Area"; "RFC 8294: Common YANG Data Types for the Routing Area";
} }
import ieee802-dot1q-bridge { import ieee802-dot1q-bridge {
prefix "dot1q"; prefix dot1q;
reference reference
"dot1Qcp: IEEE 802.1Qcp-2018 Standard for Local and "dot1Qcp: IEEE 802.1Qcp-2018 Standard for Local and
Metropolitan area networks--Bridges and Bridged Networks Metropolitan area networks--Bridges and Bridged Networks
--Amendment 30: YANG Data Model"; --Amendment 30: YANG Data Model";
} }
organization organization
"IETF PIM Working Group"; "IETF PIM Working Group";
contact contact
"WG Web: <http://datatracker.ietf.org/wg/pim/> "WG Web: <http://datatracker.ietf.org/wg/pim/>
WG List: <mailto:pim@ietf.org> WG List: <mailto:pim@ietf.org>
Editors: Hongji Zhao Editors: Hongji Zhao
<mailto:hongji.zhao@ericsson.com> <mailto:hongji.zhao@ericsson.com>
Xufeng Liu Xufeng Liu
<mailto:xufeng.liu.ietf@gmail.com> <mailto:xufeng.liu.ietf@gmail.com>
skipping to change at line 96 skipping to change at line 88
This version of this YANG module is part of RFC 9166; see the This version of this YANG module is part of RFC 9166; see the
RFC itself for full legal notices."; RFC itself for full legal notices.";
revision 2021-12-20 { revision 2021-12-20 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC 9166: A YANG Data Model for IGMP and Multicast Listener "RFC 9166: A YANG Data Model for IGMP and Multicast Listener
Discovery (MLD) Snooping"; Discovery (MLD) Snooping";
} }
/* /*
* Features * Features
*/ */
feature igmp-snooping { feature igmp-snooping {
description description
"Support IGMP snooping."; "Support IGMP snooping.";
reference reference
"RFC 4541: Considerations for Internet Group Management "RFC 4541: Considerations for Internet Group Management
Protocol (IGMP) and Multicast Listener Discovery (MLD) Protocol (IGMP) and Multicast Listener Discovery (MLD)
Snooping Switches"; Snooping Switches";
} }
feature mld-snooping { feature mld-snooping {
description description
"Support MLD snooping."; "Support MLD snooping.";
reference reference
"RFC 4541: Considerations for Internet Group Management "RFC 4541: Considerations for Internet Group Management
Protocol (IGMP) and Multicast Listener Discovery (MLD) Protocol (IGMP) and Multicast Listener Discovery (MLD)
Snooping Switches"; Snooping Switches";
} }
feature fast-leave { feature fast-leave {
description description
"Support configuration of fast leave. The fast leave feature "Support configuration of fast leave. The fast leave feature
does not send last member query messages to hosts."; does not send last member query messages to hosts.";
reference reference
"RFC 3376: Internet Group Management Protocol, Version 3"; "RFC 3376: Internet Group Management Protocol, Version 3";
} }
skipping to change at line 137 skipping to change at line 130
description description
"Support configuration of static L2 multicast group."; "Support configuration of static L2 multicast group.";
} }
feature static-mrouter-interface { feature static-mrouter-interface {
description description
"Support multicast router interface explicitly configured "Support multicast router interface explicitly configured
by management."; by management.";
reference reference
"RFC 4541: Considerations for Internet Group Management "RFC 4541: Considerations for Internet Group Management
Protocol (IGMP) and Multicast Listener Discovery (MLD) Protocol (IGMP) and Multicast Listener Discovery (MLD)
Snooping Switches"; Snooping Switches";
} }
feature action-clear-groups { feature action-clear-groups {
description description
"Support clearing statistics by action for IGMP and MLD "Support clearing statistics by action for IGMP and MLD
snooping."; snooping.";
} }
feature require-router-alert { feature require-router-alert {
description description
skipping to change at line 168 skipping to change at line 161
"RFC 5790: Lightweight Internet Group Management Protocol "RFC 5790: Lightweight Internet Group Management Protocol
Version 3 (IGMPv3) and Multicast Listener Discovery Version Version 3 (IGMPv3) and Multicast Listener Discovery Version
2 (MLDv2) Protocols"; 2 (MLDv2) Protocols";
} }
feature explicit-tracking { feature explicit-tracking {
description description
"Support configuration of per-instance explicit-tracking."; "Support configuration of per-instance explicit-tracking.";
reference reference
"RFC 6636: Tuning the Behavior of the Internet Group Management "RFC 6636: Tuning the Behavior of the Internet Group Management
Protocol (IGMP) and Multicast Listener Discovery (MLD) for Protocol (IGMP) and Multicast Listener Discovery (MLD) for
Routers in Mobile and Wireless Networks"; Routers in Mobile and Wireless Networks";
} }
/* identities */ /* identities */
identity l2-service-type { identity l2-service-type {
description description
"Base identity for L2 service type in IGMP and MLD snooping."; "Base identity for L2 service type in IGMP and MLD snooping.";
} }
identity bridge { identity bridge {
skipping to change at line 220 skipping to change at line 213
description description
"MLD snooping."; "MLD snooping.";
} }
/* /*
* Typedefs * Typedefs
*/ */
typedef l2-service-type { typedef l2-service-type {
type identityref { type identityref {
base "l2-service-type"; base l2-service-type;
} }
description "The L2 service type used with IGMP and MLD description
snooping."; "The L2 service type used with IGMP and MLD
snooping.";
} }
typedef filter-mode-type { typedef filter-mode-type {
type identityref { type identityref {
base "filter-mode"; base filter-mode;
} }
description "The host filter mode."; description
"The host filter mode.";
} }
typedef igmp-mld-snooping-instance-ref { typedef igmp-mld-snooping-instance-ref {
type leafref { type leafref {
path "/rt:routing/rt:control-plane-protocols"+ path "/rt:routing/rt:control-plane-protocols"
"/rt:control-plane-protocol/rt:name"; + "/rt:control-plane-protocol/rt:name";
} }
description description
"This type is used by data models which need to "This type is used by data models which need to
reference IGMP and MLD snooping instance."; reference IGMP and MLD snooping instance.";
} }
/* /*
* Groupings * Groupings
*/ */
grouping instance-config-attributes-igmp-mld-snooping { grouping instance-config-attributes-igmp-mld-snooping {
skipping to change at line 250 skipping to change at line 245
reference IGMP and MLD snooping instance."; reference IGMP and MLD snooping instance.";
} }
/* /*
* Groupings * Groupings
*/ */
grouping instance-config-attributes-igmp-mld-snooping { grouping instance-config-attributes-igmp-mld-snooping {
description description
"IGMP and MLD snooping configuration of each VLAN."; "IGMP and MLD snooping configuration of each VLAN.";
leaf enable { leaf enable {
type boolean; type boolean;
default false; default "false";
description description
"Set the value to true to enable IGMP and MLD snooping."; "Set the value to true to enable IGMP and MLD snooping.";
} }
leaf forwarding-table-type { leaf forwarding-table-type {
type enumeration { type enumeration {
enum "mac" { enum mac {
description description
"MAC-based lookup mode."; "MAC-based lookup mode.";
} }
enum "ip" { enum ip {
description description
"IP-based lookup mode."; "IP-based lookup mode.";
} }
} }
default "ip"; default "ip";
description "The default forwarding table type is ip."; description
"The default forwarding table type is ip.";
} }
leaf explicit-tracking { leaf explicit-tracking {
if-feature explicit-tracking; if-feature "explicit-tracking";
type boolean; type boolean;
default false; default "false";
description description
"Track the IGMPv3 and MLDv2 snooping membership reports "Track the IGMPv3 and MLDv2 snooping membership reports
from individual hosts. It contributes to saving network from individual hosts. It contributes to saving network
resources and shortening leave latency."; resources and shortening leave latency.";
} }
leaf lite-exclude-filter { leaf lite-exclude-filter {
if-feature lite-exclude-filter; if-feature "lite-exclude-filter";
type empty; type empty;
description description
"For IGMP snooping, the presence of this "For IGMP snooping, 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.
For MLD Snooping, the presence of this For MLD Snooping, 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 line 299 skipping to change at line 292
standard versions of IGMPv3. standard versions of IGMPv3.
For MLD Snooping, the presence of this For MLD Snooping, the presence of this
leaf enables the support of the simplified EXCLUDE filter leaf enables the support of the simplified EXCLUDE filter
in the Lightweight MLDv2 protocol, which simplifies the in the Lightweight MLDv2 protocol, which simplifies the
standard versions of MLDv2."; standard versions of MLDv2.";
reference reference
"RFC 5790: Lightweight Internet Group Management Protocol "RFC 5790: Lightweight Internet Group Management Protocol
Version 3 (IGMPv3) and Multicast Listener Discovery Version Version 3 (IGMPv3) and Multicast Listener Discovery Version
2 (MLDv2) Protocols"; 2 (MLDv2) Protocols";
} }
leaf send-query { leaf send-query {
type boolean; type boolean;
default false; default "false";
description description
"When it is true, this switch will send out a periodic IGMP "When it is true, this switch will send out a periodic IGMP
General Query Message or MLD General Query Message."; General Query Message or MLD General Query Message.";
} }
leaf fast-leave { leaf fast-leave {
if-feature fast-leave; if-feature "fast-leave";
type empty; type empty;
description description
"When immediate leave is enabled, the IGMP software assumes "When immediate leave is enabled, the IGMP software assumes
that no more than one host is present on each VLAN port."; that no more than one host is present on each VLAN port.";
} }
leaf last-member-query-interval { leaf last-member-query-interval {
type uint16 { type uint16 {
range "10..10230"; range "10..10230";
} }
units deciseconds; units "deciseconds";
default 10; default "10";
description description
"Last Member Query Interval, which may be tuned to modify "Last Member Query Interval, which may be tuned to modify
the leave latency of the network. the leave latency of the network.
It is represented in units of 1/10 second."; It is represented in units of 1/10 second.";
reference reference
"RFC 3376: Internet Group Management Protocol, Version 3, "RFC 3376: Internet Group Management Protocol, Version 3,
Section 8.8"; Section 8.8";
} }
leaf query-interval { leaf query-interval {
type uint16; type uint16;
units seconds; units "seconds";
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 reference
"RFC 3376: Internet Group Management Protocol, Version 3, "RFC 3376: Internet Group Management Protocol, Version 3,
Sections 4.1.7, 8.2, and 8.14.2"; Sections 4.1.7, 8.2, and 8.14.2";
} }
leaf query-max-response-time { leaf query-max-response-time {
type uint16; type uint16;
units deciseconds; units "deciseconds";
default 100; default "100";
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.
It is represented in units of 1/10 second."; It is represented in units of 1/10 second.";
reference reference
"RFC 3376: Internet Group Management Protocol, Version 3, "RFC 3376: Internet Group Management Protocol, Version 3,
Sections 4.1.1, 8.3, and 8.14.3"; Sections 4.1.1, 8.3, and 8.14.3";
} }
leaf require-router-alert { leaf require-router-alert {
if-feature require-router-alert; if-feature "require-router-alert";
type boolean; type boolean;
default false; default "false";
description description
"When the value is true, a router alert should exist "When the value is true, a router alert should exist
in the IP header of the IGMP or MLD packet. If it in the IP header of the IGMP or MLD packet. If it
doesn't exist, the IGMP or MLD packet will be ignored."; doesn't exist, the IGMP or MLD packet will be ignored.";
reference reference
"RFC 3376: Internet Group Management Protocol, Version 3, "RFC 3376: Internet Group Management Protocol, Version 3,
Sections 9.1, 9.2, and 9.3"; Sections 9.1, 9.2, and 9.3";
} }
leaf robustness-variable { leaf robustness-variable {
type uint8 { type uint8 {
range "1..7"; range "1..7";
} }
default 2; 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.";
reference reference
"RFC 3376: Internet Group Management Protocol, Version 3, "RFC 3376: Internet Group Management Protocol, Version 3,
Sections 4.1.6, 8.1, and 8.14.1"; Sections 4.1.6, 8.1, and 8.14.1";
} }
leaf-list static-bridge-mrouter-interface { leaf-list static-bridge-mrouter-interface {
when 'derived-from-or-self(../l2-service-type,"ims:bridge")'; when 'derived-from-or-self(../l2-service-type,"ims:bridge")';
if-feature static-mrouter-interface; if-feature "static-mrouter-interface";
type if:interface-ref; type if:interface-ref;
description "Static mrouter interface in BRIDGE forwarding"; description
"Static mrouter interface in BRIDGE forwarding";
} }
} // instance-config-attributes-igmp-mld-snooping } // instance-config-attributes-igmp-mld-snooping
grouping instance-state-group-attributes-igmp-mld-snooping { grouping instance-state-group-attributes-igmp-mld-snooping {
description description
"Attributes for both IGMP and MLD snooping groups."; "Attributes for both IGMP and MLD snooping groups.";
leaf mac-address { leaf mac-address {
type yang:phys-address; type yang:phys-address;
description "Destination MAC address for L2 multicast."; description
"Destination MAC address for L2 multicast.";
} }
leaf expire { leaf expire {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units seconds; units "seconds";
description description
"The time left before multicast group timeout."; "The time left before multicast group timeout.";
} }
leaf up-time { leaf up-time {
type uint32; type uint32;
units seconds; units "seconds";
mandatory true; mandatory true;
description description
"The time elapsed since the L2 multicast record was "The time elapsed since the L2 multicast record was
created."; created.";
} }
} // instance-state-group-attributes-igmp-mld-snooping } // instance-state-group-attributes-igmp-mld-snooping
grouping instance-state-attributes-igmp-mld-snooping { grouping instance-state-attributes-igmp-mld-snooping {
description description
"State attributes for IGMP and MLD snooping instance."; "State attributes for IGMP and MLD snooping instance.";
leaf entries-count { leaf entries-count {
type yang:gauge32; type yang:gauge32;
config false; config false;
description description
"The number of L2 multicast entries in IGMP and MLD "The number of L2 multicast entries in IGMP and MLD
snooping."; snooping.";
} }
leaf-list bridge-mrouter-interface { leaf-list bridge-mrouter-interface {
when 'derived-from-or-self(../l2-service-type,"ims:bridge")'; when 'derived-from-or-self(../l2-service-type,"ims:bridge")';
type if:interface-ref; type if:interface-ref;
config false; config false;
description description
"Indicates a list of mrouter interfaces dynamically learned "Indicates a list of mrouter interfaces dynamically learned
in a bridge. When this switch receives IGMP/MLD queries in a bridge. When this switch receives IGMP/MLD queries
from a multicast router on an interface, the interface will from a multicast router on an interface, the interface will
become an mrouter interface for IGMP/MLD snooping."; become an mrouter interface for IGMP/MLD snooping.";
} }
} // instance-config-attributes-igmp-mld-snooping
} // instance-config-attributes-igmp-mld-snooping
grouping instance-state-source-attributes-igmp-mld-snooping { grouping instance-state-source-attributes-igmp-mld-snooping {
description description
"State attributes for IGMP and MLD snooping instance."; "State attributes for IGMP and MLD snooping instance.";
leaf-list bridge-outgoing-interface { leaf-list bridge-outgoing-interface {
when 'derived-from-or-self(../../../l2-service-type, when "derived-from-or-self(../../../l2-service-type,
"ims:bridge")'; \"ims:bridge\")";
type if:interface-ref; type if:interface-ref;
description "Outgoing interface in BRIDGE forwarding."; description
"Outgoing interface in BRIDGE forwarding.";
} }
leaf up-time { leaf up-time {
type uint32; type uint32;
units seconds; units "seconds";
mandatory true; mandatory true;
description description
"The time elapsed since L2 multicast record was created."; "The time elapsed since L2 multicast record was created.";
} }
leaf expire { leaf expire {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units seconds; units "seconds";
description description
"The time left before multicast group timeout."; "The time left before multicast group timeout.";
} }
leaf host-count { leaf host-count {
if-feature explicit-tracking; if-feature "explicit-tracking";
type yang:gauge32; type yang:gauge32;
description description
"The number of host addresses."; "The number of host addresses.";
} }
} // instance-state-source-attributes-igmp-mld-snooping } // instance-state-source-attributes-igmp-mld-snooping
grouping igmp-snooping-statistics { grouping igmp-snooping-statistics {
description description
"The statistics attributes for IGMP snooping."; "The statistics attributes for IGMP snooping.";
leaf query-count { leaf query-count {
type yang:counter64; type yang:counter64;
description description
"The number of Membership Query messages."; "The number of Membership Query messages.";
reference reference
"RFC 2236: Internet Group Management Protocol, Version 2"; "RFC 2236: Internet Group Management Protocol, Version 2";
} }
leaf membership-report-v1-count { leaf membership-report-v1-count {
type yang:counter64; type yang:counter64;
description description
"The number of Version 1 Membership Report messages."; "The number of Version 1 Membership Report messages.";
reference reference
"RFC 1112: Host extensions for IP multicasting"; "RFC 1112: Host extensions for IP multicasting";
} }
leaf membership-report-v2-count { leaf membership-report-v2-count {
type yang:counter64; type yang:counter64;
description description
"The number of Version 2 Membership Report messages."; "The number of Version 2 Membership Report messages.";
reference reference
"RFC 2236: Internet Group Management Protocol, Version 2"; "RFC 2236: Internet Group Management Protocol, Version 2";
} }
leaf membership-report-v3-count { leaf membership-report-v3-count {
type yang:counter64; type yang:counter64;
description description
"The number of Version 3 Membership Report messages."; "The number of Version 3 Membership Report messages.";
reference reference
"RFC 3376: Internet Group Management Protocol, Version 3"; "RFC 3376: Internet Group Management Protocol, Version 3";
} }
leaf leave-count { leaf leave-count {
type yang:counter64; type yang:counter64;
description description
"The number of Leave Group messages."; "The number of Leave Group messages.";
reference reference
"RFC 2236: Internet Group Management Protocol, Version 2"; "RFC 2236: Internet Group Management Protocol, Version 2";
} }
leaf pim-hello-count { leaf pim-hello-count {
type yang:counter64; type yang:counter64;
description description
"The number of PIM hello messages."; "The number of PIM hello messages.";
reference reference
"RFC 7761: Protocol Independent Multicast - Sparse Mode "RFC 7761: Protocol Independent Multicast - Sparse Mode
(PIM-SM): Protocol Specification (Revised)"; (PIM-SM): Protocol Specification (Revised)";
} }
} // igmp-snooping-statistics } // igmp-snooping-statistics
grouping mld-snooping-statistics { grouping mld-snooping-statistics {
description description
"The statistics attributes for MLD snooping."; "The statistics attributes for MLD snooping.";
leaf query-count {
leaf query-count { type yang:counter64;
type yang:counter64; description
description "The number of Multicast Listener Query messages.";
"The number of Multicast Listener Query messages."; reference
reference "RFC 3810: Multicast Listener Discovery Version 2 (MLDv2)
"RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) for IPv6";
for IPv6"; }
} leaf report-v1-count {
leaf report-v1-count { type yang:counter64;
type yang:counter64; description
description "The number of Version 1 Multicast Listener Report.";
"The number of Version 1 Multicast Listener Report."; reference
reference "RFC 2710: Multicast Listener Discovery (MLD) for IPv6";
"RFC 2710: Multicast Listener Discovery (MLD) for IPv6"; }
} leaf report-v2-count {
leaf report-v2-count { type yang:counter64;
type yang:counter64; description
description "The number of Version 2 Multicast Listener Report.";
"The number of Version 2 Multicast Listener Report."; reference
reference "RFC 3810: Multicast Listener Discovery Version 2 (MLDv2)
"RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) for IPv6";
for IPv6"; }
} leaf done-count {
leaf done-count { type yang:counter64;
type yang:counter64; description
description "The number of Version 1 Multicast Listener Done.";
"The number of Version 1 Multicast Listener Done."; reference
reference "RFC 2710: Multicast Listener Discovery (MLD) for IPv6";
"RFC 2710: Multicast Listener Discovery (MLD) for IPv6"; }
} leaf pim-hello-count {
leaf pim-hello-count { type yang:counter64;
type yang:counter64; description
description "The number of PIM hello messages.";
"The number of PIM hello messages."; reference
reference "RFC 7761: Protocol Independent Multicast - Sparse Mode
"RFC 7761: Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol Specification (Revised)";
(PIM-SM): Protocol Specification (Revised)"; }
}
} // mld-snooping-statistics } // mld-snooping-statistics
augment "/rt:routing/rt:control-plane-protocols"+ augment "/rt:routing/rt:control-plane-protocols"
"/rt:control-plane-protocol" { + "/rt:control-plane-protocol" {
when 'derived-from-or-self(rt:type, "ims:igmp-snooping")' { when 'derived-from-or-self(rt:type, "ims:igmp-snooping")' {
description description
"This container is only valid for IGMP snooping."; "This container is only valid for IGMP snooping.";
} }
description description
"IGMP snooping augmentation to control-plane protocol "IGMP snooping augmentation to control-plane protocol
configuration and state."; configuration and state.";
container igmp-snooping-instance { container igmp-snooping-instance {
if-feature igmp-snooping; if-feature "igmp-snooping";
description description
"IGMP snooping instance to configure igmp-snooping."; "IGMP snooping instance to configure igmp-snooping.";
leaf l2-service-type { leaf l2-service-type {
type l2-service-type; type l2-service-type;
default bridge; default "bridge";
description description
"It indicates BRIDGE or other services."; "It indicates BRIDGE or other services.";
} }
uses instance-config-attributes-igmp-mld-snooping; uses instance-config-attributes-igmp-mld-snooping;
leaf igmp-version { leaf igmp-version {
type uint8 { type uint8 {
range "1..3"; range "1..3";
} }
default 2; default "2";
description "IGMP version."; description
"IGMP version.";
} }
leaf querier-source { leaf querier-source {
type inet:ipv4-address; type inet:ipv4-address;
description description
"The source address of the IGMP General Query message, "The source address of the IGMP General Query message,
which is sent out by this switch."; which is sent out by this switch.";
} }
list static-l2-multicast-group { list static-l2-multicast-group {
if-feature static-l2-multicast-group; if-feature "static-l2-multicast-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 {
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.";
} }
leaf-list bridge-outgoing-interface { leaf-list bridge-outgoing-interface {
when 'derived-from-or-self(../../l2-service-type, when "derived-from-or-self(../../l2-service-type,
"ims:bridge")'; \"ims:bridge\")";
type if:interface-ref; type if:interface-ref;
description "Outgoing interface in BRIDGE forwarding."; description
"Outgoing interface in BRIDGE forwarding.";
} }
} // static-l2-multicast-group
} // static-l2-multicast-group
uses instance-state-attributes-igmp-mld-snooping; uses instance-state-attributes-igmp-mld-snooping;
list group { list group {
key "address"; key "address";
config false; config false;
description "IGMP snooping information."; description
"IGMP snooping information.";
leaf address { leaf address {
type rt-types:ipv4-multicast-group-address; type rt-types:ipv4-multicast-group-address;
description description
"Multicast group IPv4 address."; "Multicast group IPv4 address.";
} }
uses instance-state-group-attributes-igmp-mld-snooping; uses instance-state-group-attributes-igmp-mld-snooping;
leaf last-reporter { leaf last-reporter {
type inet:ipv4-address; type inet:ipv4-address;
description description
"Address of the last host that has sent a report to join "Address of the last host that has sent a report to join
the multicast group."; the multicast group.";
} }
list source { list source {
key "address"; key "address";
description "Source IPv4 address for multicast stream."; description
"Source IPv4 address for multicast stream.";
leaf address { leaf address {
type rt-types:ipv4-multicast-source-address; type rt-types:ipv4-multicast-source-address;
description "Source IPv4 address for multicast stream."; description
"Source IPv4 address for multicast stream.";
} }
uses instance-state-source-attributes-igmp-mld-snooping; uses instance-state-source-attributes-igmp-mld-snooping;
leaf last-reporter { leaf last-reporter {
type inet:ipv4-address; type inet:ipv4-address;
description description
"Address of the last host that has sent a report "Address of the last host that has sent a report
to join the multicast group."; to join the multicast group.";
} }
list host { list host {
if-feature explicit-tracking; if-feature "explicit-tracking";
key "address"; key "address";
description description
"List of multicast membership hosts "List of multicast membership hosts
of the specific multicast source group."; of the specific multicast source group.";
leaf address { leaf address {
type inet:ipv4-address; type inet:ipv4-address;
description description
"Multicast membership host address."; "Multicast membership host address.";
} }
leaf filter-mode { leaf filter-mode {
type filter-mode-type; type filter-mode-type;
mandatory true; mandatory true;
description description
"Filter mode for a multicast membership "Filter mode for a multicast membership
host may be either include or exclude."; host may be either include or exclude.";
} }
}// list host } // list host
} // list source } // list source
} // list group } // list group
container interfaces { container interfaces {
config false; config false;
description
description "Contains the interfaces associated with the IGMP snooping
"Contains the interfaces associated with the IGMP snooping instance.";
instance."; list interface {
key "name";
list interface { description
key "name"; "A list of interfaces associated with the IGMP snooping
instance.";
description leaf name {
"A list of interfaces associated with the IGMP snooping type if:interface-ref;
instance."; description
"The name of the interface.";
leaf name { }
type if:interface-ref; container statistics {
description description
"The name of the interface."; "The interface statistics for IGMP snooping.";
leaf discontinuity-time {
} type yang:date-and-time;
description
container statistics { "The time on the most recent occasion at which any
description one or more of the statistic counters suffered a
"The interface statistics for IGMP snooping."; discontinuity. If no such discontinuities have
occurred since the last re-initialization of the
leaf discontinuity-time { local management subsystem, then this node contains
type yang:date-and-time; the time the local management subsystem
description re-initialized itself.";
"The time on the most recent occasion at which any }
one or more of the statistic counters suffered a container received {
discontinuity. If no such discontinuities have description
occurred since the last re-initialization of the "Number of received snooped IGMP packets.";
local management subsystem, then this node contains uses igmp-snooping-statistics;
the time the local management subsystem }
re-initialized itself."; container sent {
} description
container received { "Number of sent snooped IGMP packets.";
description uses igmp-snooping-statistics;
"Number of received snooped IGMP packets."; }
}
uses igmp-snooping-statistics; }
}
container sent {
description
"Number of sent snooped IGMP packets.";
uses igmp-snooping-statistics;
}
}
}
} }
action clear-igmp-snooping-groups { action clear-igmp-snooping-groups {
if-feature action-clear-groups; if-feature "action-clear-groups";
description description
"Clear IGMP snooping cache tables."; "Clear IGMP snooping cache tables.";
input { input {
leaf group { leaf group {
type union { type union {
type enumeration { type enumeration {
enum 'all-groups' { enum all-groups {
description description
"All multicast group addresses."; "All multicast group addresses.";
} }
} }
type rt-types:ipv4-multicast-group-address; type rt-types:ipv4-multicast-group-address;
} }
mandatory true; mandatory true;
description description
"Multicast group IPv4 address. If value "Multicast group IPv4 address. If value
'all-groups' is specified, all IGMP snooping 'all-groups' is specified, all IGMP snooping
group entries are cleared for the specified source group entries are cleared for the specified source
address."; address.";
} }
leaf source { leaf source {
type rt-types:ipv4-multicast-source-address; type rt-types:ipv4-multicast-source-address;
mandatory true; mandatory true;
description description
"Multicast source IPv4 address. If value '*' is "Multicast source IPv4 address. If value '*' is
specified, all IGMP snooping source-group tables specified, all IGMP snooping source-group tables
are cleared."; are cleared.";
} }
} }
} // action clear-igmp-snooping-groups } // action clear-igmp-snooping-groups
} // igmp-snooping-instance } // igmp-snooping-instance
} // augment } // augment
augment "/rt:routing/rt:control-plane-protocols"+ augment "/rt:routing/rt:control-plane-protocols"
"/rt:control-plane-protocol" { + "/rt:control-plane-protocol" {
when 'derived-from-or-self(rt:type, "ims:mld-snooping")' { when 'derived-from-or-self(rt:type, "ims:mld-snooping")' {
description description
"This container is only valid for MLD snooping."; "This container is only valid for MLD snooping.";
} }
description description
"MLD snooping augmentation to control-plane protocol "MLD snooping augmentation to control-plane protocol
configuration and state."; configuration and state.";
container mld-snooping-instance { container mld-snooping-instance {
if-feature mld-snooping; if-feature "mld-snooping";
description description
"MLD snooping instance to configure mld-snooping."; "MLD snooping instance to configure mld-snooping.";
leaf l2-service-type { leaf l2-service-type {
type l2-service-type; type l2-service-type;
default bridge; default "bridge";
description description
"It indicates BRIDGE or other services."; "It indicates BRIDGE or other services.";
} }
uses instance-config-attributes-igmp-mld-snooping; uses instance-config-attributes-igmp-mld-snooping;
leaf mld-version { leaf mld-version {
type uint8 { type uint8 {
range "1..2"; range "1..2";
} }
default 2; default "2";
description "MLD version."; description
"MLD version.";
} }
leaf querier-source { leaf querier-source {
type inet:ipv6-address; type inet:ipv6-address;
description description
"The source address of MLD General Query message, which "The source address of MLD General Query message, which
is sent out by this switch."; is sent out by this switch.";
} }
list static-l2-multicast-group { list static-l2-multicast-group {
if-feature static-l2-multicast-group; if-feature "static-l2-multicast-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 {
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.";
} }
leaf-list bridge-outgoing-interface { leaf-list bridge-outgoing-interface {
when 'derived-from-or-self(../../l2-service-type, when "derived-from-or-self(../../l2-service-type,
"ims:bridge")'; \"ims:bridge\")";
type if:interface-ref; type if:interface-ref;
description "Outgoing interface in BRIDGE forwarding."; description
"Outgoing interface in BRIDGE forwarding.";
} }
} // static-l2-multicast-group
} // static-l2-multicast-group
uses instance-state-attributes-igmp-mld-snooping; uses instance-state-attributes-igmp-mld-snooping;
list group { list group {
key "address"; key "address";
config false; config false;
description "MLD snooping statistics information."; description
"MLD snooping statistics information.";
leaf address { leaf address {
type rt-types:ipv6-multicast-group-address; type rt-types:ipv6-multicast-group-address;
description description
"Multicast group IPv6 address."; "Multicast group IPv6 address.";
} }
uses instance-state-group-attributes-igmp-mld-snooping; uses instance-state-group-attributes-igmp-mld-snooping;
leaf last-reporter { leaf last-reporter {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Address of the last host that has sent report "Address of the last host that has sent report
to join the multicast group."; to join the multicast group.";
} }
list source { list source {
key "address"; key "address";
description "Source IPv6 address for multicast stream."; description
"Source IPv6 address for multicast stream.";
leaf address { leaf address {
type rt-types:ipv6-multicast-source-address; type rt-types:ipv6-multicast-source-address;
description "Source IPv6 address for multicast stream."; description
"Source IPv6 address for multicast stream.";
} }
uses instance-state-source-attributes-igmp-mld-snooping; uses instance-state-source-attributes-igmp-mld-snooping;
leaf last-reporter { leaf last-reporter {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Address of the last host that has sent report "Address of the last host that has sent report
to join the multicast group."; to join the multicast group.";
} }
list host { list host {
if-feature explicit-tracking; if-feature "explicit-tracking";
key "address"; key "address";
description description
"List of multicast membership hosts "List of multicast membership hosts
of the specific multicast source group."; of the specific multicast source group.";
leaf address { leaf address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Multicast membership host address."; "Multicast membership host address.";
} }
leaf filter-mode { leaf filter-mode {
type filter-mode-type; type filter-mode-type;
mandatory true; mandatory true;
description description
"Filter mode for a multicast membership "Filter mode for a multicast membership
host may be either include or exclude."; host may be either include or exclude.";
} }
}// list host } // list host
} // list source } // list source
} // list group } // list group
container interfaces { container interfaces {
config false; config false;
description
description "Contains the interfaces associated with the MLD snooping
"Contains the interfaces associated with the MLD snooping instance.";
instance."; list interface {
list interface { key "name";
key "name"; description
"A list of interfaces associated with the MLD snooping
description instance.";
"A list of interfaces associated with the MLD snooping leaf name {
instance."; type if:interface-ref;
description
leaf name { "The name of the interface.";
type if:interface-ref; }
description container statistics {
"The name of the interface."; description
"The interface statistics for MLD snooping.";
} leaf discontinuity-time {
type yang:date-and-time;
container statistics { description
description "The time on the most recent occasion at which
"The interface statistics for MLD snooping."; any one or more of the statistic counters suffered
a discontinuity. If no such discontinuities have
leaf discontinuity-time { occurred since the last re-initialization of the
type yang:date-and-time; local management subsystem, then this node contains
description the time the local management subsystem
"The time on the most recent occasion at which re-initialized itself.";
any one or more of the statistic counters suffered }
a discontinuity. If no such discontinuities have container received {
occurred since the last re-initialization of the description
local management subsystem, then this node contains "Number of received snooped MLD packets.";
the time the local management subsystem uses mld-snooping-statistics;
re-initialized itself."; }
} container sent {
container received { description
description "Number of sent snooped MLD packets.";
"Number of received snooped MLD packets."; uses mld-snooping-statistics;
}
uses mld-snooping-statistics; }
} }
container sent {
description
"Number of sent snooped MLD packets.";
uses mld-snooping-statistics;
}
}
}
} }
action clear-mld-snooping-groups { action clear-mld-snooping-groups {
if-feature action-clear-groups; if-feature "action-clear-groups";
description description
"Clear MLD snooping cache tables."; "Clear MLD snooping cache tables.";
input { input {
leaf group { leaf group {
type union { type union {
type enumeration { type enumeration {
enum 'all-groups' { enum all-groups {
description description
"All multicast group addresses."; "All multicast group addresses.";
} }
} }
type rt-types:ipv6-multicast-group-address; type rt-types:ipv6-multicast-group-address;
} }
mandatory true; mandatory true;
description description
"Multicast group IPv6 address. If value 'all-groups' "Multicast group IPv6 address. If value 'all-groups'
is specified, all MLD snooping group entries are is specified, all MLD snooping group entries are
cleared for the specified source address."; cleared for the specified source address.";
} }
leaf source { leaf source {
type rt-types:ipv6-multicast-source-address; type rt-types:ipv6-multicast-source-address;
mandatory true; mandatory true;
description description
"Multicast source IPv6 address. If value '*' is "Multicast source IPv6 address. If value '*' is
specified, all MLD snooping source-group tables specified, all MLD snooping source-group tables
are cleared."; are cleared.";
} }
} }
} // action clear-mld-snooping-groups } // action clear-mld-snooping-groups
}// mld-snooping-instance } // mld-snooping-instance
} // augment } // augment
augment "/dot1q:bridges/dot1q:bridge" { augment "/dot1q:bridges/dot1q:bridge" {
description description
"Use IGMP and MLD snooping instance in BRIDGE."; "Use IGMP and MLD snooping instance in BRIDGE.";
leaf igmp-snooping-instance { leaf igmp-snooping-instance {
type igmp-mld-snooping-instance-ref; type igmp-mld-snooping-instance-ref;
description description
"Configure IGMP snooping instance under bridge view."; "Configure IGMP snooping instance under bridge view.";
} }
leaf mld-snooping-instance { leaf mld-snooping-instance {
type igmp-mld-snooping-instance-ref; type igmp-mld-snooping-instance-ref;
description description
"Configure MLD snooping instance under bridge view."; "Configure MLD snooping instance under bridge view.";
} }
} }
augment "/dot1q:bridges/dot1q:bridge"+ augment "/dot1q:bridges/dot1q:bridge"
"/dot1q:component/dot1q:bridge-vlan/dot1q:vlan" { + "/dot1q:component/dot1q:bridge-vlan/dot1q:vlan" {
description description
"Use IGMP and MLD snooping instance in a certain VLAN "Use IGMP and MLD snooping instance in a certain VLAN
of BRIDGE."; of BRIDGE.";
leaf igmp-snooping-instance { leaf igmp-snooping-instance {
type igmp-mld-snooping-instance-ref; type igmp-mld-snooping-instance-ref;
description description
"Configure IGMP snooping instance under VLAN view."; "Configure IGMP snooping instance under VLAN view.";
} }
leaf mld-snooping-instance { leaf mld-snooping-instance {
type igmp-mld-snooping-instance-ref; type igmp-mld-snooping-instance-ref;
description description
"Configure MLD snooping instance under VLAN view."; "Configure MLD snooping instance under VLAN view.";
} }
} }
} }
 End of changes. 155 change blocks. 
365 lines changed or deleted 283 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/