
BAY-STACK-IGMP-EXT-MIB DEFINITIONS ::= BEGIN

IMPORTS
    OBJECT-TYPE, MODULE-IDENTITY, Integer32, Counter32, Gauge32, IpAddress
        FROM SNMPv2-SMI
    RowStatus, TruthValue
        FROM SNMPv2-TC
    InetAddressType, InetAddress
        FROM INET-ADDRESS-MIB
    PortList, VlanId
        FROM Q-BRIDGE-MIB
    bayStackMibs
        FROM SYNOPTICS-ROOT-MIB;

bayStackIgmpExtMib MODULE-IDENTITY
    LAST-UPDATED "201603090000Z"
    ORGANIZATION "Nortel Ltd."
    CONTACT-INFO "nortel.com"
    DESCRIPTION
        "This MIB module is an extension to the standard IGMP MIBs."

    REVISION    "201603090000Z"  -- March 9, 2016
    DESCRIPTION "Ver 6:  Added Multicast IGMP stream and group count:
                         bsIgmpExtStreamCount, bsIgmpExtGroupCount."

    REVISION    "201512210000Z"  -- December 21, 2015
    DESCRIPTION "Ver 5:  Added Multicast VLAN Registration support:
                         bsIgmpExtMvrGlobal, bsIgmpExtMvrGroupRangeTable,
                         bsIgmpExtMvrReceiversTable groups."

    REVISION    "201508100000Z"  -- August 10, 2015
    DESCRIPTION "Ver 4:  Added bsIgmpExtStreamFlushAll."

    REVISION    "200910260000Z"  -- October 26, 2009
    DESCRIPTION "Ver 3:  Added bsIgmpExtAvailableHardwareResources."

    REVISION    "200901190000Z"  -- January 19, 2009
    DESCRIPTION "Ver 2:  Added bsIgmpExtFilterProfileClearStats and
                               bsIgmpExtFilterProfileDroppedPackets.
                         Expanded range of bsIgmpExtFilterProfileId."

    REVISION    "200811190000Z"  -- November 19, 2008
    DESCRIPTION "Ver 1:  Initial version."

    ::= { bayStackMibs 32 }

bsIgmpExtNotifications OBJECT IDENTIFIER ::= { bayStackIgmpExtMib 0 }
bsIgmpExtObjects       OBJECT IDENTIFIER ::= { bayStackIgmpExtMib 1 }

-- ===========================================================================
-- IGMP filter profile table
-- ===========================================================================

bsIgmpExtFilterProfileTable   OBJECT-TYPE
    SYNTAX SEQUENCE OF BsIgmpExtFilterProfileEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains IGMP filter profile information."
    ::= { bsIgmpExtObjects 1 }

bsIgmpExtFilterProfileEntry OBJECT-TYPE
    SYNTAX       BsIgmpExtFilterProfileEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "An entry representing an IGMP filter profile."
    INDEX { bsIgmpExtFilterProfileId }
    ::= { bsIgmpExtFilterProfileTable 1 }

BsIgmpExtFilterProfileEntry ::=
    SEQUENCE {
        bsIgmpExtFilterProfileId             Integer32,
        bsIgmpExtFilterProfileType           INTEGER,
        bsIgmpExtFilterProfilePortList       PortList,
        bsIgmpExtFilterProfileRowStatus      RowStatus,
        bsIgmpExtFilterProfileDroppedPackets Counter32
    }

bsIgmpExtFilterProfileId OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique integer value used to identify entries in this table."
    ::= { bsIgmpExtFilterProfileEntry 1 }

bsIgmpExtFilterProfileType OBJECT-TYPE
    SYNTAX       INTEGER {
                     permit(1),
                     deny(2)
                 }
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
        "This value indicates whether IGMP messages from the address ranges
         in this profile are allowed or denied."
    DEFVAL { deny }
    ::= { bsIgmpExtFilterProfileEntry 2 }

bsIgmpExtFilterProfilePortList OBJECT-TYPE
    SYNTAX       PortList
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
        "The list of ports to which this profile applies."
    DEFVAL       { ''h }
    ::= { bsIgmpExtFilterProfileEntry 3 }

bsIgmpExtFilterProfileRowStatus OBJECT-TYPE
    SYNTAX       RowStatus
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
        "This object is used to create/delete entries in this table."
    ::= { bsIgmpExtFilterProfileEntry 4 }

bsIgmpExtFilterProfileDroppedPackets OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The number of packets that were matched by this profile and
         dropped."
    ::= { bsIgmpExtFilterProfileEntry 5 }

-- ===========================================================================
-- IGMP filter profile address range table
-- ===========================================================================

bsIgmpExtFilterRangeTable   OBJECT-TYPE
    SYNTAX SEQUENCE OF BsIgmpExtFilterRangeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains IGMP filter profile address ranges."
    ::= { bsIgmpExtObjects 2 }

bsIgmpExtFilterRangeEntry OBJECT-TYPE
    SYNTAX       BsIgmpExtFilterRangeEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "An entry containing an IGMP filter profile address range."
    INDEX { bsIgmpExtFilterProfileId, bsIgmpExtFilterRangeId }
    ::= { bsIgmpExtFilterRangeTable 1 }

BsIgmpExtFilterRangeEntry ::=
    SEQUENCE {
        bsIgmpExtFilterRangeId           Integer32,
        bsIgmpExtFilterRangeAddressType  InetAddressType,
        bsIgmpExtFilterRangeAddressStart InetAddress,
        bsIgmpExtFilterRangeAddressEnd   InetAddress,
        bsIgmpExtFilterRangeRowStatus    RowStatus
    }

bsIgmpExtFilterRangeId OBJECT-TYPE
    SYNTAX      Integer32 (1..255)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An integer value used to uniquely identify entries in this table
         within a particular IGMP filter profile."
    ::= { bsIgmpExtFilterRangeEntry 1 }

bsIgmpExtFilterRangeAddressType OBJECT-TYPE
    SYNTAX       InetAddressType
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
        "This value indicates the type of address contained in the
         corresponding instances of bsIgmpExtFilterRangeAddressStart and
         bsIgmpExtFilterRangeAddressEnd.  Currently only values of ipv4(1)
         and ipv6(2) are allowed."
    ::= { bsIgmpExtFilterRangeEntry 2 }

bsIgmpExtFilterRangeAddressStart OBJECT-TYPE
    SYNTAX       InetAddress
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
        "The starting address of this range.  Only multicast addresses
         are allowed."
    ::= { bsIgmpExtFilterRangeEntry 3 }

bsIgmpExtFilterRangeAddressEnd OBJECT-TYPE
    SYNTAX       InetAddress
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
        "The ending address of this range.  Only multicast addresses
         are allowed."
    ::= { bsIgmpExtFilterRangeEntry 4 }

bsIgmpExtFilterRangeRowStatus OBJECT-TYPE
    SYNTAX       RowStatus
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
        "This object is used to create/delete entries in this table."
    ::= { bsIgmpExtFilterRangeEntry 5 }

-- ===========================================================================
-- IGMP filter profile scalar objects
-- ===========================================================================

bsIgmpExtFilterProfileScalars OBJECT IDENTIFIER ::= { bsIgmpExtObjects 3 }

bsIgmpExtFilterProfileClearStats OBJECT-TYPE
    SYNTAX      Integer32 (0..65535)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object is used to clear IGMP profile statistics.  Setting it
         to a particular profile ID will clear statistics for that profile.
         Setting it to 0 will clear statistics for all profiles.  When read,
         the value is always 0."
    ::= { bsIgmpExtFilterProfileScalars 1 }

-- ===========================================================================
-- IGMP scalar objects
-- ===========================================================================

bsIgmpExtScalars OBJECT IDENTIFIER ::= { bsIgmpExtObjects 4 }

bsIgmpExtAvailableHardwareResources OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object returns the number of available hardware resources for
         IGMP."
    ::= { bsIgmpExtScalars 1 }

bsIgmpExtHardwareCompatibilityMode OBJECT-TYPE
    SYNTAX      INTEGER {
                          ers5510(1),
                          nonErs5510(2)
                        }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object is used to set the 5510 hardware compatilibity mode for IGMP."
    ::= { bsIgmpExtScalars 2 }

bsIgmpExtStreamFlushAll OBJECT-TYPE
    SYNTAX      INTEGER {
                          none(1),
                          flushAllGroup(2),
                          flushAllStream(3),
			  flushAllMrouter(4),
                          flushAll(5)
                        }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object is required when flushing the multicast information on all vlans.
         At retrieval, the object has the value none(1).
         flushAllGroup - Flushes the multicast groups learned on all vlans.
         flushAllStream - Flushes the multicast streams received on all vlans.
         flushAllMrouter - Deletes all the multicast mrouters.
         flushAll - Flushes all the multicast groups, streams and mrouters on all vlans."
    ::= { bsIgmpExtScalars 3 }

bsIgmpExtStreamCount OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object returns the number of streams for IGMP."
    ::= { bsIgmpExtScalars 4 }

bsIgmpExtGroupCount OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object returns the number of groups for IGMP."
    ::= { bsIgmpExtScalars 5 }

-- ===========================================================================
-- IGMP Multicast VLAN Registration scalar objects
-- ===========================================================================

bsIgmpExtMvrGlobal OBJECT IDENTIFIER ::= { bsIgmpExtObjects 5 }

bsIgmpExtMvrGlobalEnable OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "This objects controls whether Multicast VLAN Registration
         is enabled globally."
    ::= { bsIgmpExtMvrGlobal 1 }

bsIgmpExtMvrGlobalSourceVlan OBJECT-TYPE
    SYNTAX        VlanId
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "This objects specifies the MVR source VLAN ID."
    ::= { bsIgmpExtMvrGlobal 2 }

-- ===========================================================================
-- IGMP Multicast VLAN Registration Group Range Table
-- ===========================================================================

bsIgmpExtMvrGroupRangeTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF BsIgmpExtMvrGroupRangeEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A table listing the Multicast VLAN Registration groups."
    ::= { bsIgmpExtObjects 6 }

bsIgmpExtMvrGroupRangeEntry OBJECT-TYPE
    SYNTAX     BsIgmpExtMvrGroupRangeEntry 
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An entry representing an IGMP MVR address group."
    INDEX      { bsIgmpExtMvrGroupRangeAddress, bsIgmpExtMvrGroupRangeMask }
    ::= { bsIgmpExtMvrGroupRangeTable 1 }

BsIgmpExtMvrGroupRangeEntry ::= SEQUENCE {
    bsIgmpExtMvrGroupRangeAddress      IpAddress,
    bsIgmpExtMvrGroupRangeMask         IpAddress,
    bsIgmpExtMvrGroupRangeRowStatus    RowStatus
}

bsIgmpExtMvrGroupRangeAddress OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The IGMP MVR group's multicast IP address."
    ::= { bsIgmpExtMvrGroupRangeEntry 1 }

bsIgmpExtMvrGroupRangeMask OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The IGMP MVR group's netmask."
    ::= { bsIgmpExtMvrGroupRangeEntry 2 }

bsIgmpExtMvrGroupRangeRowStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object controls creation and deletion of rows in this table."
    ::= { bsIgmpExtMvrGroupRangeEntry 3 }

-- ===========================================================================
-- IGMP Multicast VLAN Registration VLAN Receivers Table
-- ===========================================================================

bsIgmpExtMvrReceiversTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF BsIgmpExtMvrReceiversEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A table listing the Multicast VLAN Registration VLAN receivers."
    ::= { bsIgmpExtObjects 7 }

bsIgmpExtMvrReceiversEntry OBJECT-TYPE
    SYNTAX     BsIgmpExtMvrReceiversEntry 
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An entry representing an IGMP MVR VLAN receiver group."
    INDEX      { bsIgmpExtMvrReceiversVlanId }
    ::= { bsIgmpExtMvrReceiversTable 1 }

BsIgmpExtMvrReceiversEntry ::= SEQUENCE {
    bsIgmpExtMvrReceiversVlanId         VlanId,
    bsIgmpExtMvrReceiversRowStatus      RowStatus
}

bsIgmpExtMvrReceiversVlanId OBJECT-TYPE
    SYNTAX     VlanId
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "This objects specifies the ID of a VLAN receiver that bounds to MVR."
    ::= { bsIgmpExtMvrReceiversEntry 1 }

bsIgmpExtMvrReceiversRowStatus OBJECT-TYPE
    SYNTAX        RowStatus
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION   "This object controls creation and deletion of rows in this table."
    ::= { bsIgmpExtMvrReceiversEntry 2 }

END


