module ietf-l2vpn-igmp-mld-snooping {
namespace "urn:ietf:params:xml:ns:yang:ietf-l2vpn-igmp-mld-snooping";
// replace with IANA namespace when assigned
prefix l2vpn-igmp-mld-snooping;
import ietf-inet-types {
prefix "inet";
}
import ietf-yang-types {
prefix "yang";
}
import ietf-interfaces {
prefix "if";
}
import ietf-l2vpn {
prefix "l2vpn";
}
organization
"IETF BESS Working Group";
contact
"WG Web:
WG List:
Editors: ";
description
"The module defines a collection of YANG definitions common for
IGMP and MLD snooping in Virtual Private LAN Service.";
revision 2017-03-13 {
description
"Initial revision.";
reference
"RFC XXX: A YANG Data Model for VPLS Multicast";
}
/*
* Features
*/
feature global-admin-enable {
description
"Support global configuration to enable or disable protocol.";
}
/*
* Typedefs
*/
typedef ssm-map-ipv4-addr-type {
type union {
type enumeration {
enum 'policy' {
description
"Source address is specified in SSM map policy.";
}
}
type inet:ipv4-address;
}
description
"Multicast source IP address type for SSM map.";
} // ssm-map-ipv4-addr-type
typedef ssm-map-ipv6-addr-type {
type union {
type enumeration {
enum 'policy' {
description
"Source address is specified in SSM map policy.";
}
}
type inet:ipv6-address;
}
description
"Multicast source IP address type for SSM map.";
} // ssm-map-ipv6-addr-type
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
typedef channel-mode {
type enumeration {
enum "asm" {
value 0;
description
"Channel-Name-Mode ASM.";
}
enum "ssm" {
value 1;
description
"Channel-Name-Mode SSM.";
}
}
description
"Channel Mode";
}
typedef flagType {
type enumeration {
enum "STATIC" {
value 0;
description
"Static.";
}
enum "DYNAMIC" {
value 1;
description
"Dynamic.";
}
enum "MAPPING" {
value 2;
description
"SSM Mapping.";
}
enum "STATIC_DYNAMIC" {
value 3;
description
"Both static and dynamic.";
}
enum "STATIC_MAPPING" {
value 4;
description
"Both statically and SSM mapping joined groups exist.";
}
enum "DYNAMIC_MAPPING" {
value 5;
description
"Both dynamically and SSM mapping joined groups exist.";
}
enum "STATIC_DYNAMIC_MAPPING" {
value 6;
description
"Both statically dynamically and SSM mapping joined groups exist.";
}
}
description
"Flag Type";
}
typedef snooping-mode {
type enumeration {
enum "asm-ssm" {
value 0;
description
"A device learns multicast entries with group
addresses in the ASM and SSM address ranges.";
}
enum "asm-only" {
value 1;
description
"A device only learns multicast entries with group
addresses in the ASM address range.";
}
enum "ssm-only" {
value 2;
description
"A device only learns multicast entries with group
addresses in the SSM address range.";
}
}
description
"Snooping mode";
} //snooping-mode
typedef VLAN_BITMAP {
type string {
length "2049";
}
description
"vlan bitmap";
}
typedef exitOrNot {
type enumeration {
enum "Not-exist" {
value 0;
description
"Not exist.";
}
enum "Exist" {
value 1;
description
"Exist.";
}
}
description
"Exist or Not-exist";
}
typedef filter-mode {
type enumeration {
enum "include" {
description
"";
}
enum "exclude" {
description
"";
}
}
description
"group filter mode";
}
typedef compatibility-mode {
type enumeration {
enum "V1" {
value 0;
description
"L2VPN service multicast version 1.";
}
enum "V2" {
value 1;
description
"L2VPN service multicast version 2.";
}
enum "V3" {
value 2;
description
"L2VPN service multicast version 3.";
}
}
description
"Group Compatible Mode";
}
/*
* Identities
*/
/*
* Groupings
*/
grouping group-states-igmp-mld-snooping {
description
"Per port state attributes for both IGMP and MLD snooping
groups.";
leaf filter-mode {
type filter-mode;
description "Group filter mode.";
}
leaf up-time {
type uint32;
units seconds;
description
"Time since a multicast group was discovered, in seconds.";
}
leaf group-timer {
type exitOrNot;
description
"Group timer.";
}
leaf expire {
type uint32;
units seconds;
description
"Time after which a group will be deleted from the
group record table, in seconds.";
}
leaf retransmission-count {
type uint32;
description
"Number of times that the last-member
query message is transmitted.";
}
leaf last-member-query {
type boolean;
default "false";
description
"Whether group-specific Query messages are being sent.";
}
leaf compatibility {
type compatibility-mode;
description
"Group compatible mode.";
}
leaf v1-host-timer {
type exitOrNot;
description
"Timeout period of a L2VPN service multicastv1 host.";
}
leaf v2-host-timer {
type exitOrNot;
description
"Timeout period of a L2VPN service multicastv2 host.";
}
leaf last-source-member-query-timer {
type exitOrNot;
description
"Expire time of a last-member query message.";
}
leaf last-source-member-query {
type boolean;
default "false";
description
"Whether source-specific Query messages are being sent.";
}
} // group-states-igmp-mld-snooping
grouping source-states-igmp-mld-snooping {
description
"Per port state attributes for both IGMP and MLD snooping
sources.";
leaf expire {
type uint32;
units seconds;
description
"Time after which a source will be deleted
from the source record table, in seconds.";
}
leaf up-time {
type uint32;
units seconds;
description "Time since a multicast source was discovered.";
}
leaf source-timer {
type exitOrNot;
description
"source timer.";
}
leaf retransmission-count {
type uint32;
description
"Number of times that the last-member
query message is transmitted.";
}
leaf last-source-member-query {
type boolean;
default "false";
description
"Whether source-specific Query messages are being sent.";
}
} // source-states-igmp-mld-snooping
grouping ipv4-static-group-source {
description "static group source address.";
container static-group-sources {
description
"List of static groups. ";
list static-group-source {
key "group-address source-address";
description
"Static group.";
leaf group-address {
type inet:ipv4-address;
description
"Address of a multicast group.";
}
leaf source-address {
type inet:ipv4-address;
description
"Multicast source address.";
}
}
}
} //ipv4-static-group-source
grouping ipv6-static-group-source {
description "static group source address.";
container static-group-sources {
description
"List of static groups. ";
list static-group-source {
key "group-address source-address";
description
"Static group.";
leaf group-address {
type inet:ipv6-address;
description
"Address of a multicast group.";
}
leaf source-address {
type inet:ipv6-address;
description
"Multicast source address.";
}
}
}
} //ipv6-static-group-source
grouping ipv4-ssm-mapping-attributes {
description "ssm mapping attribute.";
leaf group-address {
type inet:ipv4-address;
description
"Address of a multicast group.";
}
leaf group-mask-length {
type uint8 {
range "4..32";
}
description
"IP address mask length.";
}
leaf source-address {
type inet:ipv4-address;
description
"Multicast source address.";
}
} //ipv4-ssm-mapping-attributes
grouping ipv6-ssm-mapping-attributes {
description "ssm mapping attribute.";
leaf group-address {
type inet:ipv6-address;
description
"Address of a multicast group.";
}
leaf group-mask-length {
type uint8 {
range "8..128";
}
description
"IPv6 address mask length.";
}
leaf source-address {
type inet:ipv6-address;
description
"Multicast source address.";
}
} //ipv6-ssm-mapping-attributes
grouping cac-ipv4-policy-attributes {
description "cac policy config attributes.";
leaf channel-name {
type string {
length "1..31";
}
description
"Name of the channel.";
}
leaf channel-mode {
type channel-mode;
description
"Channel type.";
}
leaf max-entry {
type uint32;
description
"Maximum number of entries that can be generated.";
}
container channel-policys {
description
"L2-multicast CAC Global Channel Policy Config List. ";
list channel-policy {
key
"group-address group-mask-length
source-address source-mask-length";
max-elements "16";
description
"L2-multicast CAC Global Channel Policy Config. ";
leaf group-address {
type inet:ipv4-address;
description
"Address of a multicast group.";
}
leaf group-mask-length {
type uint8 {
range "4..32";
}
description
"IP address mask length.";
}
leaf source-address {
type inet:ipv4-address;
description
"Multicast source address.";
}
leaf source-mask-length {
type uint8 {
range "0..32";
}
description
"Specify the source mask length.";
}
leaf bandwidth-each-entry {
type uint32 {
range "0..131072";
}
default "0";
description
"Specify the bandwidth of each group (in Kbits/sec).";
}
} //channel-policy
} //channel-policys
} //cac-ipv4-policy-attributes
grouping cac-ipv6-policy-attributes {
description "cac policy config attributes.";
leaf channel-name {
type string {
length "1..31";
}
description
"Name of the channel.";
}
leaf channel-mode {
type channel-mode;
description
"Channel type.";
}
container channel-policys {
description
"L2-multicast CAC Global Channel Policy Config List. ";
list channel-policy {
key
"group-address group-mask-length
source-address source-mask-length";
max-elements "16";
description
"L2-multicast CAC Global Channel Policy Config. ";
leaf group-address {
type inet:ipv6-address;
description
"Address of a multicast group.";
}
leaf group-mask-length {
type uint8 {
range "8..128";
}
description
"IP address mask length.";
}
leaf source-address {
type inet:ipv6-address;
description
"Multicast source address.";
}
leaf source-mask-length {
type uint8 {
range "0..128";
}
description
"Specify the source mask length.";
}
leaf bandwidth-each-entry {
type uint32 {
range "0..131072";
}
default "0";
description
"Specify the bandwidth of each group (in Kbits/sec).";
}
} //channel-policy
} //channel-policys
} //cac-ipv6-policy-attributes
grouping cac-dynamic-attributes {
description "Global IGMP or MLD snooping state.";
leaf dynamic-entry {
type uint32;
description
"Maximum number of entries generAted";
}
leaf dynamic-bandwidth {
type uint32;
description
"Maximum bandwidth of entries generated";
}
list channel-cac {
key "channel-name channel-mode";
max-elements "1024";
description
"L2-multicast CAC Global Channel entry count. ";
leaf channel-name {
type string {
length "1..31";
}
description
"Name of the channel.";
}
leaf channel-mode {
type channel-mode;
description
"Channel type.";
}
leaf dynamic-entry-count {
type uint32;
description
"Maximum number of entries generated.";
}
leaf dynamic-bandwidth {
type uint32;
description
"Maximum bandwidth of entries generated";
}
} //global-cac-count
} // cac-dynamic-attributes
grouping global-ipv4-config-attributes {
description "Global IGMP or MLD snooping configuration.";
leaf enable {
if-feature global-admin-enable;
type boolean;
description
"true to enable IGMP or MLD snooping;
false to disable IGMP or MLD snooping.";
}
leaf max-entry {
type uint32;
description
"Maximum number of entries that can be generated";
}
leaf bandwidth {
type uint32;
description
"Maximum bandwidth of entries that can be generated";
}
container ssm-mapping-policys {
description
"L2-multicast SSM mapping policy List. ";
list ssm-mapping-policy {
key "name";
description "ssm mapping policy. ";
leaf name {
type string {
length "1..31";
}
description "name of ssm mapping policy. ";
}
list ssm-map {
key "group-address group-mask-length source-address";
description "";
uses ipv4-ssm-mapping-attributes;
} // list ssm-map
} //ssm-mapping-policy
} //ssm-mapping-policys
leaf unspecified-channel-deny {
type boolean;
description
"Specify the unspecified channel,deny the join of
Multicast group that does not belong to any
channel.By default, no deny channel is configured.";
}
container global-cac-configs {
description
"L2-multicast CAC Global Channel Config List. ";
list global-cac-config {
key "channel-name channel-mode";
max-elements "1024";
description
"L2-multicast CAC Global Channel Config. ";
uses cac-ipv4-policy-attributes;
} //global-cac-config
}
} // global-ipv4-config-attributes
grouping global-ipv6-config-attributes {
description "Global IGMP or MLD snooping configuration.";
leaf enable {
if-feature global-admin-enable;
type boolean;
description
"true to enable IGMP or MLD snooping;
false to disable IGMP or MLD snooping.";
}
leaf max-entry {
type uint32;
description
"Maximum number of entries that can be generated";
}
leaf bandwidth {
type uint32;
description
"Maximum bandwidth of entries that can be generated";
}
container ssm-mapping-policys {
description
"L2-multicast SSM mapping policy List. ";
list ssm-mapping-policy {
key "name";
description "ssm mapping policy";
leaf name {
type string {
length "1..31";
}
description "name of ssm mapping policy. ";
}
list ssm-map {
key "group-address group-mask-length source-address";
description "";
uses ipv6-ssm-mapping-attributes;
} // list ssm-map
} //ssm-mapping-policy
} //ssm-mapping-policys
leaf unspecified-channel-deny {
type boolean;
description
"Specify the unspecified channel,deny the join of
Multicast group that does not belong to any
channel.By default, no deny channel is configured.";
}
container global-cac-configs {
description
"L2-multicast CAC Global Channel Config List. ";
list global-cac-config {
key "channel-name channel-mode";
max-elements "1024";
description
"L2-multicast CAC Global Channel Config. ";
uses cac-ipv6-policy-attributes;
} //global-cac-config
}
} // global-ipv6-config-attributes
grouping proxy-config-attributes {
description "";
leaf proxy-enable {
type boolean;
default "false";
description
"Enable L2VPN service multicast snooping proxy.";
}
leaf proxy-router-protocol-pass {
type boolean;
default "false";
description
"L2VPN service multicast snooping proxy-enabled
device to transparently transmit
multicast Report messages.";
}
leaf query-enable {
type boolean;
default "false";
description
"Enable L2VPN service multicast querier.";
}
leaf querier-election {
type boolean;
description
"Enable L2VPN service multicast querier election.";
}
leaf report-suppress {
type boolean;
default "false";
description
"Enable the function of suppressing L2VPN service
multicast Report messages.";
}
} //proxy-config-attributes
grouping l2vpn-config-attributes-igmp-mld-snooping {
description "igmp snooping configuration attributes";
leaf enable {
type boolean;
default "false";
description
"true to enable IGMP or MLD snooping in the L2VPN service
instance, false to disable IGMP or MLD snooping
in the L2VPN service instance";
}
leaf version {
type uint8 {
range "1..3";
}
description
"L2VPN service multicast version. IPv4: By default,
IGMPv2 is used; IPv6: By default, MLDv2 is used.";
}
leaf snooping-mode {
type snooping-mode;
description
"L2VPN service multicast group join mode.";
}
leaf ssm-policy {
type string;
description
"Name of the access policy used to filter
IGMP or MLD SSM group range.";
}
leaf group-policy {
type string;
description
"Name of the access policy used to filter
IGMP or MLD membership.";
}
leaf group-policy-version {
type uint8 {
range "1..3";
}
description
"A group policy applies only to a specified
L2VPN service multicast version.";
}
leaf ip-policy {
type string;
description
"Name of the access policy used to filter IGMP or MLD ;
report source/destination address";
}
leaf query-ip-policy {
type string;
description
"Name of the access policy used to filter IGMP or MLD ;
query source address";
}
leaf last-member-query-interval {
type uint8 {
range "1..5";
}
description
"Interval at which a querier sends
last-member query messages.";
}
leaf query-interval {
type uint16 {
range "1..65535";
}
units seconds;
description
"Interval at which a router sends General Query messages.";
}
leaf query-max-response-time {
type uint8 {
range "1..25";
}
units seconds;
description
"Maximum response time for a L2VPN service
multicast Query message.";
}
leaf router-aging-time {
type uint16{
range "1..1000";
}
units seconds;
description
"Aging time of dynamic router ports.";
}
leaf prompt-leave {
type boolean;
description
"Prompt-Leave allows an interface to immediately delete a
group record after receiving a Leave message for
this group, without sending a last-member query message.";
}
leaf router-learning {
type boolean;
default "true";
description
"Enable dynamic router port learning.";
}
leaf require-router-alert {
type boolean;
description
"Configure a device to permit only L2VPN service
multicast messages that contain the Router-Alert
option in the IP header.";
}
leaf send-router-alert {
type boolean;
description
"Configure a device to send L2VPN service
multicast messages that contain the Router-Alert
option in the IP header.";
}
leaf ssm-mapping {
type boolean;
default "false";
description
"Enable SSM mapping.";
}
leaf ssm-mapping-policy {
type string;
description
"Specifies the name of an SSM mapping policy.";
}
leaf robustness-variable {
type uint8 {
range "2..7";
}
default 2;
description
"Number of times for retransmitting a
message to avoid packet loss. ";
}
leaf source-life-time {
type uint32{
range "60..1000";
}
units seconds;
description
"Aging time for entries triggered by multicast flows.";
}
leaf unspecified-channel-deny {
type boolean;
description
"Specify the unspecified channel,deny the join of
Multicast group that does not belong to any channel.";
}
leaf max-entry {
type uint32;
description
"Maximum number of entries that can be generated";
}
leaf max-entry-except-policy {
type string;
description
"Name of the access policy used to prevent groups
from being counted against the multicast
group number limit";
}
leaf bandwidth-lose-mode {
type boolean;
default "false";
description
"Dynamic Eth-Trunk Bandwidth Limit Lose Mode.";
}
uses proxy-config-attributes;
} // l2vpn-config-attributes-igmp-mld-snooping
grouping vlan-set {
description "VLAN IDs attributes";
leaf vlan-bitmap {
type string;
description
"List of VLAN IDs.";
}
} //vlan-set
grouping l2vpn-if-config-attributes-igmp-mld-snooping {
description "igmp or mld snooping configuration attributes";
leaf bandwidth-lose-mode {
type boolean;
default "false";
description
"Dynamic Eth-Trunk Bandwidth Limit Lose Mode.";
}
leaf max-entry {
type uint32;
description
"Maximum number of entries that can be generated";
}
leaf group-policy {
type string;
description
"Name of the access policy used to filter
IGMP or MLD membership.";
}
leaf group-policy-version {
type uint8 {
range "1..3";
}
description
"A group policy applies only to a specified
L2VPN service multicast version.";
}
choice group-policy-vlan {
description "group policy vlan config";
case qinq-range {
list qinq-vlan {
key "pe-id";
description "qinq type interface config";
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
uses vlan-set;
} // qinq-vlan
} //qinq-range
case dot1q-range {
description "dot1q type interface config";
uses vlan-set;
} //dot1q-range
} //group-policy-vlan
list trunk-bandwidth {
key "bandwidth";
description
"Dynamic Bandwidth Limit on
Eth-Trunk Sub-interface.";
leaf bandwidth {
type uint32 {
range "1..4194304";
}
description
"Specify the bandwidth parameter of multicast group.";
}
uses vlan-set;
}
list dot1q-bandwidth {
key "bandwidth";
description "Bandwidth Limit on Dot1q Sub-interface. ";
leaf bandwidth {
type uint32 {
range "1..4194304";
}
description
"Specify the bandwidth parameter of multicast group.";
}
uses vlan-set;
}
list dot1q-channel-bandwidth {
key "channel-name bandwidth";
description "Bandwidth Limit on Dot1q Sub-interface. ";
leaf channel-name {
type string {
length "1..31";
}
description
"Name of the channel.";
}
leaf bandwidth {
type uint32 {
range "1..4194304";
}
description
"Specify the bandwidth parameter of multicast group.";
}
uses vlan-set;
}
} // l2vpn-if-config-attributes-igmp-mld-snooping
grouping l2vpn-if-dynamic-cac-state-igmp-mld-snooping {
description "igmp or mld snooping configuration attributes";
leaf dynamic-entry {
type uint32;
description
"Maximum number of entries generated";
}
list dynamic-trunk-bandwidth {
key "vlan-id";
description
"Dynamic Bandwidth used on Eth-Trunk Sub-interface.";
leaf vlan-id {
type uint16 {
range "1..4095";
}
description
"vlan-id.";
}
leaf bandwidth {
type uint32 {
range "1..4194304";
}
description
"Bandwidth used.";
}
}
list dynamic-dot1q-bandwidth {
key "vlan-id";
description "Bandwidth used on Dot1q Sub-interface. ";
leaf vlan-id {
type uint16 {
range "1..4095";
}
description
"vlan-id.";
}
leaf bandwidth {
type uint32 {
range "1..4194304";
}
description
"Bandwidth used.";
}
}
list dynamic-dot1q-channel-bandwidth {
key "channel-name";
description "Bandwidth Limit on Dot1q Sub-interface. ";
leaf channel-name {
type string {
length "1..31";
}
description
"Name of the channel.";
}
list vlan-bandwidth {
key "vlan-id";
description "Bandwidth used on Dot1q Sub-interface. ";
leaf vlan-id {
type uint16 {
range "1..4095";
}
description
"vlan-id.";
}
leaf bandwidth {
type uint32 {
range "1..4194304";
}
description
"Bandwidth used.";
}
} //vlan-bandwidth
} //dot1q-channel-bandwidth
} // l2vpn-if-dynamic-cac-state-igmp-mld-snooping
grouping statistics-received {
description
"A grouping defining statistics attributes.";
leaf v1-report {
type yang:counter64;
description
"Number of received IGMPv1/MLDv1 Report messages.";
}
leaf v2-report {
type yang:counter64;
description
"Number of received IGMPv2/MLDv2 Report messages.";
}
leaf v3-report {
type yang:counter64;
description
"Number of received IGMPv3 Report messages.";
}
leaf v1-query {
type yang:counter64;
description
"Number of received IGMPv1/MLDv1 query messages.";
}
leaf v2-query {
type yang:counter64;
description
"Number of received IGMPv2/MLDv2 query messages.";
}
leaf v3-query {
type yang:counter64;
description
"Number of received IGMPv3 Query messages.";
}
leaf leave {
type yang:counter64;
description
"Number of received IGMP/MLD Leave messages.";
}
leaf hello {
type yang:counter64;
description
"Number of Received PIM Hello messages.";
}
leaf zero-source-query {
type yang:counter64;
description
"Number of received query messages
in which the source addresss is zero.";
}
leaf no-zero-source-query {
type yang:counter64;
description
"Number of received query messages
in which the source addresss is not zero.";
}
} // statistics-received
grouping statistics-send {
description
"A grouping defining statistics attributes.";
leaf general-query {
type yang:counter64;
description
"Number of sent General Query messages.";
}
leaf source-group-specific-query {
type yang:counter64;
description
"Number of sent source and group specific Query messages.";
}
leaf group--specific-query {
type yang:counter64;
description
"Number of sent group specific Query messages.";
}
} // statistics-send
/*
* Configuration data nodes
*/
augment "/l2vpn:l2vpn"
{
description
"IGMP and MLD snooping augmentation to
l2vpn instance configuration.";
container igmp-snooping {
description
"IGMP snooping configuration data.";
container global {
description
"Global attributes.";
uses global-ipv4-config-attributes;
leaf send-query-source {
type inet:ipv4-address;
default "192.168.0.1";
description
"Source IP address for L2VPN service
multicast query messages.";
}
} // global
container l2vpn-multicast-instances {
description
"List of L2VPN service multicast
configurations in the VSI view. ";
list l2vpn-multicast-instance {
key "name type";
description
"L2VPN common parameters.";
leaf name {
type string;
description "Name of L2VPN service instance";
}
leaf type {
type identityref {
base l2vpn:l2vpn-instance-type;
}
description "Type of L2VPN service instance";
}
uses l2vpn-config-attributes-igmp-mld-snooping;
list ssm-map {
key "group-address group-mask-length source-address";
description "";
uses ipv4-ssm-mapping-attributes;
} // list ssm-map
list static-pw-router {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
} // static-pw-router
list static-ac-router-port {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
} //static-ac-router-port
list static-pw-group {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
uses ipv4-static-group-source;
} // static-pw-group
list static-ac-static-group {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
uses ipv4-static-group-source;
} //static-ac-static-group
container cac-configs {
description
"L2-multicast CAC L2VPN service Channel Config List.";
list cac-config {
key "channel-name channel-mode";
max-elements "1024";
description
"L2-multicast CAC L2VPN service Channel Config.";
uses cac-ipv4-policy-attributes;
}
} //cac-configs
container interfaces {
description
"Containing a list of interfaces.";
list interface {
key "interface";
description
"List of igmp snooping interfaces.";
leaf interface {
type if:interface-ref;
description
"Reference to an entry in the
global interface list.";
}
uses l2vpn-if-config-attributes-igmp-mld-snooping;
} // interface
} // interfaces
} //l2vpn-multicast-instance
} //l2vpn-multicast-instances
} // igmp-snooping
container mld-snooping {
description
"MLD snooping configuration data.";
container global {
description
"Global attributes.";
uses global-ipv6-config-attributes;
leaf send-query-source {
type inet:ipv6-address;
default "FE80::";
description
"Source IPv6 address for L2VPN service
multicast query messages.";
}
} // global
container l2vpn-multicast-instances {
description
"List of L2VPN service multicast configurations
in the VSI view. ";
list l2vpn-multicast-instance {
key "name type";
description
"L2VPN common parameters.";
leaf name {
type string;
description "Name of L2VPN service instance";
}
leaf type {
type identityref {
base l2vpn:l2vpn-instance-type;
}
description "Type of L2VPN service instance";
}
uses l2vpn-config-attributes-igmp-mld-snooping;
list ssm-map {
key "group-address group-mask-length source-address";
description "";
uses ipv6-ssm-mapping-attributes;
} // list ssm-map
list static-pw-router {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
} // static-pw-router
list static-ac-router-port {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
} //static-ac-router-port
list static-pw-group {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
uses ipv6-static-group-source;
} // static-pw-group
list static-ac-static-group {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
uses ipv6-static-group-source;
} //static-ac-static-group
container cac-configs {
description
"L2-multicast CAC L2VPN service Channel Config List. ";
list cac-config {
key "channel-name channel-mode";
max-elements "1024";
description
"L2-multicast CAC L2VPN service Channel Config. ";
uses cac-ipv6-policy-attributes;
}
} //cac-configs
container interfaces {
description
"Containing a list of interfaces.";
list interface {
key "interface";
description
"List of igmp snooping interfaces.";
leaf interface {
type if:interface-ref;
description
"Reference to an entry in the global
interface list.";
}
uses l2vpn-if-config-attributes-igmp-mld-snooping;
} // interface
} // interfaces
} //l2vpn-multicast-instance
} //l2vpn-multicast-instances
} // mld-snooping
} //l2vpn
/*
* Operational state data nodes
*/
augment "/l2vpn:l2vpn-state"
{
description
"IGMP and MLD snooping augmentation to
l2vpn instance configuration.";
container igmp-snooping {
description
"IGMP snooping state data.";
container global {
description
"Global attributes.";
uses global-ipv4-config-attributes;
uses cac-dynamic-attributes;
leaf send-query-source {
type inet:ipv4-address;
default "192.168.0.1";
description
"Source IP address for L2VPN service
multicast query messages.";
}
} // global
container l2vpn-multicast-instances {
description
"List of L2VPN service multicast
configurations in the VSI view. ";
list l2vpn-multicast-instance {
key "name type";
description
"L2VPN common parameters.";
leaf name {
type string;
description "Name of L2VPN service instance";
}
leaf type {
type identityref {
base l2vpn:l2vpn-instance-type;
}
description "Type of L2VPN service instance";
}
uses l2vpn-config-attributes-igmp-mld-snooping;
container querier-state {
description
"L2VPN service multicast querier. ";
leaf querierState {
type boolean;
description
"L2VPN service multicast querier state.";
}
leaf querierAddr {
type inet:ip-address;
description
"L2VPN service multicast querier address.";
}
}
container statistics {
description
"Statistics information of a L2VPN service instance. ";
container received {
description "Statistics of received messages.";
uses statistics-received;
}
container sent {
description "Statistics of sent messages.";
uses statistics-send;
}
} //statistics
list ssm-map {
key "group-address group-mask-length source-address";
description "";
uses ipv4-ssm-mapping-attributes;
} // list ssm-map
list static-pw-router-port {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
} // static-pw-router-port
list static-ac-router-port {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
} //static-ac-router-port
list static-pw-group {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
uses ipv4-static-group-source;
} // static-pw-group
list static-ac-group {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
uses ipv4-static-group-source;
} //static-ac-group
container cac-configs {
description
"L2-multicast CAC L2VPN service Channel Config List. ";
list cac-config {
key "channel-name channel-mode";
max-elements "1024";
description
"L2-multicast CAC L2VPN service Channel Config. ";
uses cac-ipv4-policy-attributes;
}
} //cac-configs
container interfaces {
description
"Containing a list of interfaces.";
list interface {
key "interface";
description
"List of igmp snooping interfaces.";
leaf interface {
type if:interface-ref;
description
"Reference to an entry in the
global interface list.";
}
uses l2vpn-if-config-attributes-igmp-mld-snooping;
uses l2vpn-if-dynamic-cac-state-igmp-mld-snooping;
} // interface
} // interfaces
choice dynamic-router-port {
description "dynamic router port";
case pw {
list dynamic-pw-router-port {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
leaf expire {
type uint32;
units seconds;
description
"Time after which a port will be deleted
from the router port record table.";
}
leaf up-time {
type uint32;
units seconds;
description
"Time since a router port
was discovered.";
}
leaf flag {
type flagType;
description
"Type of a router port: static or dynamic.";
}
} //dynamic-pw-router-port
} //pw
case ac {
list dynamic-ac-router-port {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
leaf expire {
type uint32;
units seconds;
description
"Time after which a port will be deleted
from the router port record table.";
}
leaf up-time {
type uint32;
units seconds;
description
"Time since a router port was discovered.";
}
leaf flag {
type flagType;
description
"Type of a router port: static or dynamic.";
}
} //dynamic-ac-router-port
} //ac
} //dynamic-router-port
choice dynamic-group {
description "dynamic group";
case pw-dynamic-group {
list dynamic-pw-group {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
container groups {
description "multicast group information";
list group {
key "address";
description "multicast group information";
leaf address {
type inet:ipv4-address;
description
"address of a multicast group.";
}
uses group-states-igmp-mld-snooping;
container sources {
description "multicast group information";
list source {
key "address";
description "multicast group information";
leaf address {
type inet:ipv4-address;
description
"address of a multicast source.";
}
uses source-states-igmp-mld-snooping;
} //source
} //sources
} //group
} //groups
} // dynamic-pw-group
} //pw-dynamic-group
case ac-dynamic-group {
list dynamic-ac-dynamic-group {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
container groups {
description "multicast group information";
list group {
key "address";
description "multicast group information";
leaf address {
type inet:ipv4-address;
description
"address of a multicast group.";
}
uses group-states-igmp-mld-snooping;
container sources {
description "multicast group information";
list source {
key "address";
description "multicast group information";
leaf address {
type inet:ipv4-address;
description
"address of a multicast source.";
}
uses source-states-igmp-mld-snooping;
} //source
} //sources
} //group
} //groups
} //dynamic-ac-dynamic-group
} //ac-dynamic-group
} //dynamic-group
} //l2vpn-multicast-instance
} //l2vpn-multicast-instances
} // igmp-snooping
container mld-snooping {
description
"MLD snooping state data.";
container global {
description
"Global attributes.";
uses global-ipv6-config-attributes;
uses cac-dynamic-attributes;
leaf entry-count {
type uint32;
description
"Maximum number of entries generated";
}
leaf send-query-source {
type inet:ipv6-address;
default "FF80::";
description
"Source IPv6 address for L2VPN service
multicast query messages.";
}
} // global
container l2vpn-multicast-instances {
description
"List of L2VPN service multicast configurations
in the VSI view. ";
list l2vpn-multicast-instance {
key "name type";
description
"L2VPN common parameters.";
leaf name {
type string;
description "Name of L2VPN service instance";
}
leaf type {
type identityref {
base l2vpn:l2vpn-instance-type;
}
description "Type of L2VPN service instance";
}
uses l2vpn-config-attributes-igmp-mld-snooping;
container querier-state {
description
"L2VPN service multicast querier. ";
leaf querierState {
type boolean;
description
"L2VPN service multicast querier state.";
}
leaf querierAddr {
type inet:ipv6-address;
description
"L2VPN service multicast querier address.";
}
}
container statistics {
description
"Statistics information of a L2VPN service instance. ";
container received {
description "Statistics of received messages.";
uses statistics-received;
}
container sent {
description "Statistics of sent messages.";
uses statistics-send;
}
} //statistics
list ssm-map {
key "group-address group-mask-length source-address";
description "";
uses ipv6-ssm-mapping-attributes;
} // list ssm-map
list static-pw-router-port {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
} // static-pw-router-port
list static-ac-router-port {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
} //static-ac-router-port
list static-pw-group {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
uses ipv6-static-group-source;
} // static-pw-group
list static-ac-group {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
uses ipv6-static-group-source;
} //static-ac-group
container cac-configs {
description
"L2-multicast CAC L2VPN service Channel Config List. ";
list cac-config {
key "channel-name channel-mode";
max-elements "1024";
description
"L2-multicast CAC L2VPN service Channel Config. ";
uses cac-ipv6-policy-attributes;
}
} //cac-configs
uses cac-dynamic-attributes;
container interfaces {
description
"Containing a list of interfaces.";
list interface {
key "interface";
description
"List of igmp snooping interfaces.";
leaf interface {
type if:interface-ref;
description
"Reference to an entry in the
global interface list.";
}
uses l2vpn-if-config-attributes-igmp-mld-snooping;
uses l2vpn-if-dynamic-cac-state-igmp-mld-snooping;
} // interface
} // interfaces
choice dynamic-router-port {
description "dynamic router port";
case pw {
list dynamic-pw-router-port {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
leaf expire {
type uint32;
units seconds;
description
"Time after which a port will be deleted
from the router port record table.";
}
leaf up-time {
type uint32;
units seconds;
description
"Time since a router port was discovered.";
}
leaf flag {
type flagType;
description
"Type of a router port: static or dynamic.";
}
} //dynamic-pw-router-port
} //pw
case ac {
list dynamic-ac-router-port {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
leaf expire {
type uint32;
units seconds;
description
"Time after which a port will be deleted
from the router port record table.";
}
leaf up-time {
type uint32;
units seconds;
description
"Time since a router port was discovered.";
}
leaf flag {
type flagType;
description
"Type of a router port: static or dynamic.";
}
} //dynamic-ac-router-port
} //ac
} //dynamic-router-port
choice dynamic-group {
description "dynamic group";
case pw-dynamic-group {
list dynamic-pw-group {
key "peer-ip pw-id";
description "";
leaf peer-ip {
type inet:ip-address;
description
"peer IP address";
}
leaf pw-id {
type uint32;
description
"pseudowire id";
}
container groups {
description "multicast group information";
list group {
key "address";
description "multicast group information";
leaf address {
type inet:ipv6-address;
description
"address of a multicast group.";
}
uses group-states-igmp-mld-snooping;
container sources {
description "multicast group information";
list source {
key "address";
description "multicast group information";
leaf address {
type inet:ipv6-address;
description
"address of a multicast source.";
}
uses source-states-igmp-mld-snooping;
} //source
} //sources
} //group
} //groups
} // dynamic-pw-group
} //pw-dynamic-group
case ac-dynamic-group {
list dynamic-ac-dynamic-group {
key "name pe-id ce-id";
description "";
leaf name {
type if:interface-ref;
description
"interface name";
}
leaf pe-id {
type uint16;
description
"Outer VLAN ID.";
}
leaf ce-id {
type uint16;
description
"Inner VLAN ID.";
}
container groups {
description "multicast group information";
list group {
key "address";
description "multicast group information";
leaf address {
type inet:ipv6-address;
description
"address of a multicast group.";
}
uses group-states-igmp-mld-snooping;
container sources {
description "multicast group information";
list source {
key "address";
description "multicast group information";
leaf address {
type inet:ipv6-address;
description
"address of a multicast source.";
}
uses source-states-igmp-mld-snooping;
} //source
} //sources
} //group
} //groups
} //dynamic-ac-dynamic-group
} //ac-dynamic-group
} //dynamic-group
} //l2vpn-multicast-instance
} //l2vpn-multicast-instances
} // mld-snooping
} //l2vpn-state
}