module ietf-igmp-mld-snooping {
namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld-snooping";
// replace with IANA namespace when assigned
prefix ims;
import ietf-inet-types {
prefix "inet";
}
import ietf-yang-types {
prefix "yang";
}
import ietf-interfaces {
prefix "if";
}
import ietf-l2vpn {
prefix "l2vpn";
}
organization
"IETF PIM Working Group";
contact
"WG Web:
WG List:
WG Chair: Stig Venaas
WG Chair: Mike McBride
Editors: Hongji Zhao
Xufeng Liu
Yisong Liu
Anish Peter
Mahesh Sivakumar
";
description
"The module defines a collection of YANG definitions common for
IGMP and MLD Snooping.";
revision 2017-10-25 {
description
"Change model definition to fit NMDA standard.";
reference
"RFC XXXX: A YANG Data Model for IGMP and MLD Snooping";
}
revision 2017-08-14 {
description
"using profile to cooperate with ieee-dot1Q-bridge module";
reference
"RFC XXXX: A YANG Data Model for IGMP and MLD Snooping";
}
revision 2017-06-28 {
description
"augment /rt:routing/rt:control-plane-protocols
augment /rt:routing-state/rt:control-plane-protocols";
reference
"RFC XXXX: A YANG Data Model for IGMP and MLD Snooping";
}
revision 2017-02-05 {
description
"Initial revision.";
reference
"RFC XXXX: A YANG Data Model for IGMP and MLD Snooping";
}
/*
* Features
*/
feature admin-enable {
description
"Support configuration to enable or disable IGMP and MLD
Snooping.";
}
feature fast-leave {
description
"Support configuration of fast-leave.";
}
feature join-group {
description
"Support configuration of join-group.";
}
feature require-router-alert {
description
"Support configuration of require-router-alert.";
}
feature static-l2-multicast-group {
description
"Support configuration of L2 multicast static-group.";
}
feature per-instance-config {
description
"Support configuration of each VLAN or VPLS instance or EVPN
instance.";
}
feature rpc-clear-groups {
description
"Support to clear statistics by RPC for IGMP and MLD
Snooping.";
}
feature explicit-tracking {
description
"Support configuration of per instance explicit-tracking
hosts.";
}
feature exclude-lite {
description
"Support configuration of per instance exclude-lite.";
}
/*
* Typedefs
*/
typedef name-type {
type string {
length "0..32";
}
description
"A text string of up to 32 characters, of locally determined
significance.";
}
typedef vlan-index-type {
type uint32 {
range "1..4094 | 4096..4294967295";
}
description
"A value used to index per-VLAN tables. Values of 0 and 4095
are not permitted. The range of valid VLAN indices. If the
value is greater than 4095, then it represents a VLAN with
scope local to the particular agent, i.e., one without a
global VLAN-ID assigned to it. Such VLANs are outside the
scope of IEEE 802.1Q, but it is convenient to be able to
manage them in the same way using this YANG module.";
reference
"IEEE Std 802.1Q-2014: Virtual Bridged Local Area Networks.";
}
typedef igmp-snooping-instance-ref {
type leafref {
path "/igmp-snooping-instances/igmp-snooping-instance/name";
}
description
"This type is used by data models that need to reference igmp
snooping instance.";
}
typedef mld-snooping-instance-ref {
type leafref {
path "/mld-snooping-instances/mld-snooping-instance/name";
}
description
"This type is used by data models that need to reference mld
snooping instance.";
}
typedef l2vpn-instance-ac-ref {
type leafref {
path "/l2vpn:l2vpn/l2vpn:instances" +
"/l2vpn:instance/l2vpn:endpoint/l2vpn:ac/l2vpn:name";
}
description "l2vpn-instance-ac-ref";
}
typedef l2vpn-instance-pw-ref {
type leafref {
path "/l2vpn:l2vpn/l2vpn:instances" +
"/l2vpn:instance/l2vpn:endpoint/l2vpn:pw/l2vpn:name";
}
description "l2vpn-instance-pw-ref";
}
typedef source-ipv4-addr-type {
type union {
type enumeration {
enum '*' {
description
"Any source address.";
}
}
type inet:ipv4-address;
}
description
"Multicast source IP address type.";
} // source-ipv4-addr-type
typedef source-ipv6-addr-type {
type union {
type enumeration {
enum '*' {
description
"Any source address.";
}
}
type inet:ipv6-address;
}
description
"Multicast source IP address type.";
} // source-ipv6-addr-type
/*
* Identities
*/
/*
* Groupings
*/
grouping general-state-attributes {
description "Statistics of IGMP and MLD Snooping ";
container statistics {
config false;
description
"The statistics of IGMP and MLD Snooping related packets.";
container received {
description "Statistics of received messages.";
uses general-statistics-sent-received;
}
container sent {
description "Statistics of sent messages.";
uses general-statistics-sent-received;
}
} // statistics
} // general-state-attributes
grouping instance-config-attributes-igmp-snooping {
description "IGMP snooping configuration for each VLAN or VPLS
instance or EVPN instance.";
uses instance-config-attributes-igmp-mld-snooping;
leaf querier-source {
type inet:ipv4-address;
description "Use the IGMP snooping querier to support IGMP
snooping in a VLAN where PIM and IGMP are not configured.
The IP address is used as the source address in
messages.";
}
list static-l2-multicast-group {
if-feature static-l2-multicast-group;
key "group source-addr";
description
"A static multicast route, (*,G) or (S,G).";
leaf group {
type inet:ipv4-address;
description
"Multicast group IP address";
}
leaf source-addr {
type source-ipv4-addr-type;
description
"Multicast source IP address.";
}
leaf-list bridge-outgoing-interface {
when "ims:type = 'bridge'";
type if:interface-ref;
description "Outgoing interface in bridge fowarding";
}
leaf-list vpls-outgoing-ac {
when "ims:type = 'vpls'";
type l2vpn-instance-ac-ref;
description "Outgoing ac in vpls fowarding";
}
leaf-list vpls-outgoing-pw {
when "ims:type = 'vpls'";
type l2vpn-instance-pw-ref;
description "Outgoing pw in vpls fowarding";
}
} // static-l2-multicast-group
} // instance-config-attributes-igmp-snooping
grouping instance-config-attributes-igmp-mld-snooping {
description
"IGMP and MLD Snooping configuration of each VLAN.";
leaf enable {
if-feature admin-enable;
type boolean;
description
"Set the value to true to enable IGMP and MLD Snooping in
the VLAN instance.";
}
leaf forwarding-mode {
type enumeration {
enum "mac" {
description
"";
}
enum "ip" {
description
"";
}
}
description "The default forwarding mode for IGMP and MLD
Snooping is ip.
cisco command is as below
Router(config-vlan-config)# multicast snooping lookup
{ ip | mac } ";
}
leaf explicit-tracking {
if-feature explicit-tracking;
type boolean;
description "Tracks IGMP & MLD Snooping v3 membership reports
from individual hosts for each port of each VLAN or VSI.";
}
leaf exclude-lite {
if-feature exclude-lite;
type boolean;
description
"lightweight IGMPv3 and MLDv2 protocols, which simplify the
standard versions of IGMPv3 and MLDv2.";
reference "RFC5790";
}
leaf send-query {
type boolean;
default true;
description "Enable quick response for topo changes.
To support IGMP snooping in a VLAN where PIM and IGMP are
not configured.
It cooperates with param querier-source. ";
}
/**
leaf mrouter-aging-time {
type uint16 ;
default 180;
description "Aging time for mrouter interface";
}
**/
leaf fast-leave {
if-feature fast-leave;
type empty;
description
"When fast leave is enabled, the IGMP software assumes that
no more than one host is present on each VLAN port.";
}
leaf last-member-query-interval {
type uint16 {
range "1..65535";
}
units seconds;
default 1;
description
"Last Member Query Interval, which may be tuned to modify
the
leave latency of the network.";
reference "RFC3376. Sec. 8.8.";
}
leaf query-interval {
type uint16;
units seconds;
default 125;
description
"The Query Interval is the interval between General
Queries
sent by the Querier.";
reference "RFC3376. Sec. 4.1.7, 8.2, 8.14.2.";
}
leaf query-max-response-time {
type uint16;
units seconds;
default 10;
description
"Query maximum response time specifies the maximum time
allowed before sending a responding report.";
reference "RFC3376. Sec. 4.1.1, 8.3, 8.14.3.";
}
leaf require-router-alert {
if-feature require-router-alert;
type boolean;
default false;
description
"When the value is true, router alert exists in the IP head
of IGMP or MLD packet.";
}
leaf robustness-variable {
type uint8 {
range "2..7";
}
default 2;
description
"Querier's Robustness Variable allows tuning for the
expected
packet loss on a network.";
reference "RFC3376. Sec. 4.1.6, 8.1, 8.14.1.";
}
leaf version {
type uint8 {
range "1..3";
}
description "IGMP and MLD Snooping version.";
}
leaf-list static-bridge-mrouter-interface {
when "ims:type = 'bridge'";
if-feature static-l2-multicast-group;
type if:interface-ref;
description "static mrouter interface in bridge fowarding";
}
leaf-list static-vpls-mrouter-interface {
when "ims:type = 'vpls'";
if-feature static-l2-multicast-group;
type l2vpn-instance-pw-ref;
description "static mrouter interface in vpls fowarding";
}
} // instance-config-attributes-igmp-mld-snooping
grouping instance-config-attributes-mld-snooping {
description "MLD snooping configuration of each VLAN.";
uses instance-config-attributes-igmp-mld-snooping;
leaf querier-source {
type inet:ipv6-address;
description
"Use the MLD snooping querier to support MLD snooping where PIM
and MLD are not configured.
The IP address is used as the source address in messages.";
}
list static-l2-multicast-group {
if-feature static-l2-multicast-group;
key "group source-addr";
description
"A static multicast route, (*,G) or (S,G).";
leaf group {
type inet:ipv6-address;
description
"Multicast group IP address";
}
leaf source-addr {
type source-ipv6-addr-type;
description
"Multicast source IP address.";
}
leaf-list bridge-outgoing-interface {
when "ims:type = 'bridge'";
type if:interface-ref;
description "Outgoing interface in bridge fowarding";
}
leaf-list vpls-outgoing-ac {
when "ims:type = 'vpls'";
type l2vpn-instance-ac-ref;
description "Outgoing ac in vpls fowarding";
}
leaf-list vpls-outgoing-pw {
when "ims:type = 'vpls'";
type l2vpn-instance-pw-ref;
description "Outgoing pw in vpls fowarding";
}
} // static-l2-multicast-group
} // instance-config-attributes-mld-snooping
grouping instance-state-group-attributes-igmp-mld-snooping {
description
"Attributes for both IGMP and MLD snooping groups.";
leaf mac-address {
type yang:phys-address;
description "Destination mac address for L2 multicast
forwarding.";
}
leaf expire {
type uint32;
units seconds;
description
"The time left before multicast group timeout.";
}
leaf up-time {
type uint32;
units seconds;
description
"The time after the device created L2 multicast record.";
}
} // instance-state-group-attributes-igmp-mld-snooping
grouping instance-state-attributes-igmp-snooping {
description
"State attributes for IGMP snooping for each VLAN or VPLS
instance or EVPN instance.";
uses instance-state-attributes-igmp-mld-snooping;
list group {
key "address";
config false;
description "IGMP snooping information";
leaf address {
type inet:ipv4-address;
description
"Multicast group IP address";
}
uses instance-state-group-attributes-igmp-mld-snooping;
leaf last-reporter {
type inet:ipv4-address;
description
"The last host address which has sent the
report to join the multicast group.";
}
list source {
key "address";
description "Source IP address for multicast stream";
leaf address {
type inet:ipv4-address;
description "Source IP address for multicast stream";
}
uses instance-state-source-attributes-igmp-mld-snooping;
leaf last-reporter {
type inet:ipv4-address;
description
"The last host address which has sent the
report to join the multicast source and group.";
}
list host {
if-feature explicit-tracking;
key "host-address";
description
"List of multicast membership hosts
of the specific multicast source-group.";
leaf host-address {
type inet:ipv4-address;
description
"Multicast membership host address.";
}
leaf host-filter-mode {
type enumeration {
enum "include" {
description
"In include mode";
}
enum "exclude" {
description
"In exclude mode.";
}
}
description
"Filter mode for a multicast membership
host may be either include or exclude.";
}
}// list host
} // list source
} // list group
// statistics
uses general-state-attributes;
} // instance-state-attributes-igmp-snooping
grouping instance-state-attributes-igmp-mld-snooping {
description
"State attributes for both IGMP and MLD Snooping of each
VLAN or VPLS instance or EVPN instance.";
leaf entries-count {
type uint32;
config false;
description
"The number of L2 multicast entries in IGMP and MLD
Snooping.";
}
leaf-list bridge-mrouter-interface {
when "ims:type = 'bridge'";
type if:interface-ref;
config false;
description " mrouter interface in bridge fowarding";
}
leaf-list vpls-mrouter-interface {
when "ims:type = 'vpls'";
type l2vpn-instance-pw-ref;
config false;
description " mrouter interface in vpls fowarding";
}
} // instance-config-attributes-igmp-mld-snooping
grouping instance-state-attributes-mld-snooping {
description
"State attributes for MLD snooping of each VLAN.";
uses instance-state-attributes-igmp-mld-snooping;
list group {
key "address";
config false;
description "MLD snooping statistics information";
leaf address {
type inet:ipv6-address;
description
"Multicast group IP address";
}
uses instance-state-group-attributes-igmp-mld-snooping;
leaf last-reporter {
type inet:ipv6-address;
description
"The last host address which has sent the
report to join the multicast group.";
}
list source {
key "address";
description "Source IP address for multicast stream";
leaf address {
type inet:ipv6-address;
description "Source IP address for multicast stream";
}
uses instance-state-source-attributes-igmp-mld-snooping;
leaf last-reporter {
type inet:ipv6-address;
description
"The last host address which has sent the report to join
the multicast source and group.";
}
list host {
if-feature explicit-tracking;
key "host-address";
description
"List of multicast membership hosts
of the specific multicast source-group.";
leaf host-address {
type inet:ipv6-address;
description
"Multicast membership host address.";
}
leaf host-filter-mode {
type enumeration {
enum "include" {
description
"In include mode";
}
enum "exclude" {
description
"In exclude mode.";
}
}
description
"Filter mode for a multicast membership
host may be either include or exclude.";
}
}// list host
} // list source
} // list group
// statistics
uses general-state-attributes;
} // instance-state-attributes-mld-snooping
grouping instance-state-source-attributes-igmp-mld-snooping {
description
"State attributes for both IGMP and MLD Snooping of each VLAN
or VPLS instance or EVPN instance.";
leaf-list bridge-outgoing-interface {
when "ims:type = 'bridge'";
type if:interface-ref;
description "Outgoing interface in bridge fowarding";
}
leaf-list vpls-outgoing-ac {
when "ims:type = 'vpls'";
type l2vpn-instance-ac-ref;
description "Outgoing ac in vpls fowarding";
}
leaf-list vpls-outgoing-pw {
when "ims:type = 'vpls'";
type l2vpn-instance-pw-ref;
description "Outgoing pw in vpls fowarding";
}
leaf up-time {
type uint32;
units seconds;
description "The time after the device created L2 multicast
record";
}
leaf expire {
type uint32;
units seconds;
description
"The time left before multicast group timeout.";
}
leaf host-count {
if-feature explicit-tracking;
type uint32;
description
"The number of host addresses.";
}
} // instance-state-source-attributes-igmp-mld-snooping
grouping general-statistics-error {
description
"A grouping defining statistics attributes for errors.";
leaf checksum {
type yang:counter64;
description
"The number of checksum errors.";
}
leaf too-short {
type yang:counter64;
description
"The number of messages that are too short.";
}
} // general-statistics-error
grouping general-statistics-sent-received {
description
"A grouping defining statistics attributes.";
leaf query {
type yang:counter64;
description
"The number of query messages.";
}
leaf membership-report-v1 {
type yang:counter64;
description
"The number of membership report v1 messages.";
}
leaf membership-report-v2 {
type yang:counter64;
description
"The number of membership report v2 messages.";
}
leaf membership-report-v3 {
type yang:counter64;
description
"The number of membership report v3 messages.";
}
leaf leave {
type yang:counter64;
description
"The number of leave messages.";
}
leaf pim {
type yang:counter64;
description
"The number of pim hello messages.";
}
} // general-statistics-sent-received
grouping endpoint-grp {
description "A grouping that defines the structure of " +
"an endpoint";
choice ac-or-pw-or-redundancy-grp {
description "A choice of attachment circuit or " +
"pseudowire or redundancy group";
case ac {
description "Attachment circuit(s) as an endpoint";
list ac {
key "name";
leaf name {
type string;
description "Name of attachment circuit. " +
"This field is intended to " +
"reference standardized " +
"layer-2 definitions.";
}
leaf igmp-snooping-instance {
type igmp-snooping-instance-ref;
description "Configure igmp-snooping instance under
the bridge view";
}
leaf mld-snooping-instance {
type mld-snooping-instance-ref;
description "Configure mld-snooping instance under the
bridge view";
}
description "An L2VPN instance's " +
"attachment circuit list";
}
}
case pw {
description "Pseudowire(s) as an endpoint";
list pw {
key "name";
leaf name {
type string;
description "Name of Pseudowire.";
}
leaf igmp-snooping-instance {
type igmp-snooping-instance-ref;
description "Configure igmp-snooping instance under
the bridge view";
}
leaf mld-snooping-instance {
type mld-snooping-instance-ref;
description "Configure mld-snooping instance under the
bridge view";
}
description "An L2VPN instance's " +
"pseudowire(s) list";
}
}
case redundancy-grp {
description "Redundancy group as an endpoint";
choice primary {
mandatory true;
description "primary options";
case primary-ac {
description "primary-ac";
container primary-ac {
description "Primary AC";
leaf name {
type string;
description "Name of attachment circuit. ";
}
leaf igmp-snooping-instance {
type igmp-snooping-instance-ref;
description "Configure igmp-snooping instance
under the bridge view";
}
leaf mld-snooping-instance {
type mld-snooping-instance-ref;
description "Configure mld-snooping instance
under the bridge view";
}
}// primary-ac
}// primary-ac
case primary-pw {
list primary-pw {
key "name";
leaf name {
type string;
description "Name of Pseudowire.";
}
leaf igmp-snooping-instance {
type igmp-snooping-instance-ref;
description "Configure igmp-snooping instance
under the bridge view";
}
leaf mld-snooping-instance {
type mld-snooping-instance-ref;
description "Configure mld-snooping instance
under the bridge view";
}
description "primary-pw";
} //primary-pw
}//primary-pw
}
choice backup {
description "backup options";
case backup-ac {
description "backup-ac";
container backup-ac {
description "Backup AC";
leaf name {
type string;
description "Name of attachment circuit. ";
}
leaf igmp-snooping-instance {
type igmp-snooping-instance-ref;
description "Configure igmp-snooping instance
under the bridge view";
}
leaf mld-snooping-instance {
type mld-snooping-instance-ref;
description "Configure mld-snooping instance
under the bridge view";
}
}// backup-ac
}// backup-ac
case backup-pw {
description "backup-pw";
list backup-pw {
key "name";
leaf name {
type string;
description "Name of Pseudowire.";
}
leaf igmp-snooping-instance {
type igmp-snooping-instance-ref;
description "Configure igmp-snooping instance
under the bridge view";
}
leaf mld-snooping-instance {
type mld-snooping-instance-ref;
description "Configure mld-snooping instance
under the bridge view";
}
description "backup-pw";
} //backup-pw
}
}
}
}
}
/*
* igmp-snooping-instance
*/
container igmp-snooping-instances {
description
"igmp-snooping-instance list";
list igmp-snooping-instance {
key "name";
description
"IGMP Snooping instance to configure the igmp-
snooping.";
leaf name {
type string;
description
"Name of the igmp-snooping-instance to configure the igmp
snooping.";
}
leaf id {
type uint32;
description
"It is vlan_id or vpls_id.
When igmp-snooping-instance is applied under bridge view, its
value is 0.";
}
leaf type {
type enumeration {
enum "bridge" {
description "bridge";
}
enum "vpls" {
description "vpls";
}
}
description "The type indicates bridge or vpls.";
}
uses instance-config-attributes-igmp-snooping {
if-feature per-instance-config;
}
uses instance-state-attributes-igmp-snooping;
} //igmp-snooping-instance
} //igmp-snooping-instances
/*
* mld-snooping-instance
*/
container mld-snooping-instances {
description
"mld-snooping-instance list";
list mld-snooping-instance {
key "name";
description
"MLD Snooping instance to configure the mld-snooping.";
leaf name {
type string;
description
"Name of the mld-snooping-instance to configure the mld
snooping.";
}
leaf id {
type uint32;
description
"It is vlan_id or vpls_id.
When mld-snooping-instance is applied under bridge view, its
value is 0.";
}
leaf type {
type enumeration {
enum "bridge" {
description "bridge";
}
enum "vpls" {
description "vpls";
}
}
description "The type indicates bridge or vpls.";
}
uses instance-config-attributes-mld-snooping {
if-feature per-instance-config;
}
uses instance-state-attributes-mld-snooping;
} //mld-snooping-instance
} //mld-snooping-instances
container bridges {
description
"Apply igmp-mld-snooping instance in the bridge scenario";
list bridge {
key name;
description
"bridge list";
leaf name {
type name-type;
description
"bridge name";
}
leaf igmp-snooping-instance {
type igmp-snooping-instance-ref;
description "Configure igmp-snooping instance under the
bridge view";
}
leaf mld-snooping-instance {
type mld-snooping-instance-ref;
description "Configure mld-snooping instance under the
bridge view";
}
list component {
key "name";
description
" ";
leaf name {
type string;
description
"The name of the Component.";
}
container bridge-vlan {
description "bridge vlan";
list vlan {
key "vid";
description
"";
leaf vid {
type vlan-index-type;
description
"The VLAN identifier to which this entry
applies.";
}
leaf igmp-snooping-instance {
type igmp-snooping-instance-ref;
description "Configure igmp-snooping instance
under the vlan view";
}
leaf mld-snooping-instance {
type mld-snooping-instance-ref;
description "Configure mld-snooping instance
under the vlan view";
}
container interfaces {
description
"Interface configuration parameters.";
list interface {
key "name";
description
"The list of configured interfaces on the
device.";
leaf name {
type string;
description
"The name of the interface.";
}
leaf igmp-snooping-instance {
type igmp-snooping-instance-ref;
description "Configure igmp-snooping
instance under the interface view";
}
leaf mld-snooping-instance {
type mld-snooping-instance-ref;
description "Configure mld-snooping
instance under the interface view";
}
}
}//interfaces
}//vlan
}//bridge-vlan
}//component
}//bridge
} //bridges
container l2vpn-instances {
description "Apply igmp-mld-snooping instance in the vpls
scenario";
list l2vpn-instance {
key "name";
description "An VPLS service instance";
leaf name {
type string;
description "Name of VPLS service instance";
}
leaf igmp-snooping-instance {
type igmp-snooping-instance-ref;
description "Configure igmp-snooping instance under the
l2vpn-instance view";
}
leaf mld-snooping-instance {
type mld-snooping-instance-ref;
description "Configure mld-snooping instance under the
l2vpn-instance view";
}
list endpoint {
key "name";
description "An endpoint";
leaf name {
type string;
description "endpoint name";
}
leaf igmp-snooping-instance {
type igmp-snooping-instance-ref;
description "Configure igmp-snooping instance under the
interface view";
}
leaf mld-snooping-instance {
type mld-snooping-instance-ref;
description "Configure mld-snooping instance under the
interface view";
}
uses endpoint-grp;
} //endpoint
}
}
/*
* RPCs
*/
rpc clear-igmp-snooping-groups {
if-feature rpc-clear-groups;
description
"Clears the specified IGMP Snooping cache tables.";
input {
leaf id {
type uint32;
description
"VLAN ID, VPLS ID, or EVPN ID";
}
leaf group {
type inet:ipv4-address;
description
"Multicast group IPv4 address.
If it is not specified, all IGMP snooping group tables
are
cleared.";
}
leaf source {
type inet:ipv4-address;
description
"Multicast source IPv4 address.
If it is not specified, all IGMP snooping source-group
tables are
cleared.";
}
}
} // rpc clear-igmp-snooping-groups
rpc clear-mld-snooping-groups {
if-feature rpc-clear-groups;
description
"Clears the specified MLD Snooping cache tables.";
input {
leaf id {
type uint32;
description
"VLAN ID, VPLS ID, or EVPN ID";
}
leaf group {
type inet:ipv6-address;
description
"Multicast group IPv6 address.
If it is not specified, all MLD snooping group tables are
cleared.";
}
leaf source {
type inet:ipv6-address;
description
"Multicast source IPv6 address.
If it is not specified, all MLD snooping source-group
tables are
cleared.";
}
}
} // rpc clear-mld-snooping-groups
}