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