-- **********************************************************************
-- Copyright 3Com Technologies Limited. (1996-1999)                     *
-- **********************************************************************
--
--  Change History:
--
--	Jan 22, 1999 - tmeiczin Fixed Syntax Errors, Defined Counter
--  Jan 11, 1999 - tmeiczin moved igmpQueryEnabled and igmpQueryIpAddress
--                          to the end of the table
--  Dec 14, 1998 - tmeiczin added objects igmpQueryEnabled and 
--                          igmpQueryIpAddress
--
-- **********************************************************************


A3COM0073IGMP-SNOOP DEFINITIONS ::= BEGIN

IMPORTS
          Counter, enterprises, IpAddress
             FROM RFC1155-SMI
          OBJECT-TYPE
             FROM RFC-1212
          ifIndex
             FROM RFC1213-MIB
--          TruthValue
--             FROM SNMPv2-TC
			;

-- Truth Value definition to be enabled for non SNMP_V2 compilers

TruthValue ::= INTEGER {
true (1),
false (2)
}

a3Com     OBJECT IDENTIFIER ::= { enterprises 43 }
generic   OBJECT IDENTIFIER ::= { a3Com 10 }
igmpMib   OBJECT IDENTIFIER ::= { generic 37 }
igmpSnoop OBJECT IDENTIFIER ::= { igmpMib 1 }

igmpSnoopEnabled OBJECT-TYPE
    SYNTAX TruthValue
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "Enables/disables IGMP Snooping on this device. It is set stack-wide.
        The defaule value is True. The range is True(1) or False(2)."
    DEFVAL { true }
::= { igmpSnoop 1 }

igmpSnoopRobustness OBJECT-TYPE
    SYNTAX INTEGER (1..2)
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "This enables IGMP tuning on a lossy network if a switch is the
        querier. On such a network it may be increased. It is set stack-wide.
        The default value is 1.  The range is 1 to 2. 

        There could be a Low(1) or High(2) setting.

        It is used to derive a timeout interval. If no IGMP v2 queries
        are heard on this VLAN within this timeout interval, the local
        switch will take over the querier role in the VLAN, assuming the
        switch has no router ports:
          Other Switch Querier Present Interval =
          (Robustness x General Query Interval) +
          1/2(General Max Query-Response Interval) = 65 seconds by default
        The Robustness is also used to derive another interval. The amount
        of time that must pass before the querying switch decides that there
        are no more hosts listening to a particular multicast in seconds:
          Group Membership Interval =
          (Robustness x General Query Interval) +
          General Max Query-Response Interval = 70 seconds by default."
    DEFVAL { 1 }
::= { igmpSnoop 2 }

igmpSnoopLeaveEnabled OBJECT-TYPE
    SYNTAX TruthValue
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "Enables/disables the processing of IGMP v2 leave messages stack-wide.
        The default value is True(1). The range is True(1) or False(2)."
    DEFVAL { true }
::= { igmpSnoop 3 }

igmpSnoopQueryTimeout OBJECT-TYPE
    SYNTAX INTEGER(60..125)
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "The frequency at which IGMP general query packets are
        transmitted on this VLAN by the querying switch in seconds.
        So this is the time between general periodic queries being
        sent out of the switch when it is acting as the IGMP querier.
        Large values lead to IGMP queries being sent less often.
        It is set stack-wide.
        The default is 125 seconds and the range is 60 to 125 seconds.
        There could be 2 settings apart from the default.
        Slow Query (100 secs) and Very Slow Query (125 secs)."
    DEFVAL { 125 }
::= { igmpSnoop 4 }

igmpSnoopQueryMaxResponseTime OBJECT-TYPE
    SYNTAX INTEGER(10..100)
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "The maximum query response time in seconds advertised in IGMP v2
        queries on this VLAN if the switch is the querier. Smaller values
        allow a switch to prune groups faster. So it is the maximum response
        time inserted into the general periodic queries. This variable 
        enables the tuning of the burstiness of the IGMP traffic.
        If it is increased the responses have a larger time span in which
        to be generated by the hosts. It is set stack-wide.
        The default is 10 seconds and the range is 10 to 100 seconds.
        There could be 2 settings apart from the default. 
        Slow Response (50 secs) and Very Slow Response (100 secs)."
    DEFVAL { 10 }
::= { igmpSnoop 5 }

igmpSnoopLastMemberQueryTimeout OBJECT-TYPE
    SYNTAX INTEGER(1..5)
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "A timeout interval in seconds. Maximum response time inserted
        into the IGMP group specific queries sent in response to an 
        IGMP Leave by a querying switch. It is also the time between 
        IGMP group specific queries being sent. It is set stack-wide.
        The default is 1 second and the range is 1 to 5 seconds.
        There could be 2 settings apart from the default. 
        Slow Response (3 secs) and Very Slow Response (5 secs)."
    DEFVAL { 1 }
::= { igmpSnoop 6 }

igmpSnoopLastMemberQueryCount OBJECT-TYPE
    SYNTAX INTEGER(2..5)
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "The number of group specific queries sent before the querying switch
        decides that there are no more hosts listening to a particular group
        multicast address. It is set stack-wide.
        The default is 2 and the range is 2 to 5. There could be 2 settings
        apart from the default. Low count (3) and High count (5)."
    DEFVAL { 2 }
::= { igmpSnoop 7 }

igmpSnoopRouterPortRefreshTimeout OBJECT-TYPE
    SYNTAX INTEGER(70..100)
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "A timeout interval in seconds. The maximum time that
        should elapse between multicast
        router protocol PDUs on a port in the VLAN.
        The default is 100 seconds and the range is from 70 to 100 seconds.
        There could be 2 settings apart from the default.
        Slow Refresh (85 secs) and Very Slow Refresh (100 secs)."
    DEFVAL { 100 }
::= { igmpSnoop 8 }

--
-- The IGMP Snooping VLAN Table
--
igmpSnoopVLANTable OBJECT-TYPE
    SYNTAX SEQUENCE OF IgmpSnoopVLANEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "The (conceptual) table listing the VLANs on which IGMP
        Snooping is enabled."
::= { igmpSnoop 9 }

igmpSnoopVLANEntry OBJECT-TYPE
    SYNTAX IgmpSnoopVLANEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "An entry (conceptual row) representing a VLAN on
        which IGMP Snooping is enabled."
    INDEX { ifIndex }
::= { igmpSnoopVLANTable 1 }

IgmpSnoopVLANEntry ::= SEQUENCE {
                                 igmpSnoopVLANJoins Counter,
                                 igmpSnoopVLANLeaves Counter
                       }

igmpSnoopVLANJoins OBJECT-TYPE
    SYNTAX Counter
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "The number of times a group membership has been added on
        this VLAN; i.e. the number of times an entry for
        this VLAN has been added to the IGMP Snooping VLAN Table. This
        object gives an indication of the amount of IGMP activity
        over time. So this is the count of IGMP Reports received
        over time on a VLAN."
::= { igmpSnoopVLANEntry 1 }

igmpSnoopVLANLeaves OBJECT-TYPE
    SYNTAX Counter
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "The number of times a group membership has been removed
        from this VLAN; i.e. the number of times an entry
        for this VLAN has been deleted from the IGMP Snooping VLAN Table.
        The difference between this and igmpSnoopVLANJoins indicates
        the number of hosts listening to multicasts. The count of IGMP Leaves
        received over time on a VLAN."
::= { igmpSnoopVLANEntry 2 }

igmpQueryEnabled OBJECT-TYPE
    SYNTAX TruthValue
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "Enabled/Disables IGMP Queries for this device.
        The default value is True.  The range is True(1) or False(2)."
    DEFVAL { true }
::= { igmpSnoop 10 }

igmpQueryIpAddress OBJECT-TYPE
    SYNTAX IpAddress
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "This is the IP address used in IGMP Queries.  The default value
        is the management IP address.  Since the root query device is
        determined  by the lowest IP address, you can vary this value
        to increase or decrease the priority of the device."
::= { igmpSnoop 11 }

END
