--*****************************************************************
-- QTECH-IGMP-MIB.mib: This mib was extracted from rfc2933
--
-- January 2003, zhenggao
--
-- Copyright (c) 2003 by Qtech Networks Co.,Ltd.
-- All rights reserved.
-- 
-- *****************************************************************

QTECH-IGMP-MIB DEFINITIONS ::= BEGIN
IMPORTS
    MODULE-IDENTITY,
    NOTIFICATION-TYPE,
    OBJECT-TYPE, 
    Counter32, 
    Gauge32,
    Integer32,
    Unsigned32, 
    IpAddress, 
    TimeTicks  
        FROM SNMPv2-SMI
    RowStatus, 
    DisplayString          
        FROM SNMPv2-TC
    EnabledStatus            
         FROM P-BRIDGE-MIB 
    qtechMgmt                
        FROM QTECH-SMI
    InterfaceIndexOrZero,    
    InterfaceIndex        
        FROM IF-MIB
    MODULE-COMPLIANCE, 
    OBJECT-GROUP  
        FROM SNMPv2-CONF;
 
qtechIgmpMIB MODULE-IDENTITY
    LAST-UPDATED "200301200000Z"
    ORGANIZATION "Qtech Networks Co.,Ltd."
    CONTACT-INFO
        "
        Tel: 4008-111-000 
        
        E-mail: service@qtech.com.cn"
    DESCRIPTION
        "This module defines qtech igmp mibs."
    REVISION      "200301200000Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { qtechMgmt 26}

qtechIgmpMIBObjects OBJECT IDENTIFIER ::= { qtechIgmpMIB 1 }  
qtechIgmpTraps      OBJECT IDENTIFIER ::= { qtechIgmpMIBObjects 3 }
--
--  The QTECH-IGMP Interface Table
--
qtechIgmpInterfaceTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF QtechIgmpInterfaceEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The (conceptual) table listing the interfaces on
         which IGMP is enabled."
    ::= {  qtechIgmpMIBObjects 1 }

qtechIgmpInterfaceEntry OBJECT-TYPE
    SYNTAX     QtechIgmpInterfaceEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An entry (conceptual row) representing an
         interface on which IGMP is enabled."
    INDEX      { qtechIgmpInterfaceIfIndex }
    ::= { qtechIgmpInterfaceTable 1 }
              
QtechIgmpInterfaceEntry ::= SEQUENCE {
    qtechIgmpInterfaceIfIndex		               InterfaceIndex ,
    qtechIgmpInterfaceQueryInterval	            Unsigned32,
	 qtechIgmpInterfaceVersion		               Unsigned32,
	 qtechIgmpInterfaceQuerier		               IpAddress,
	 qtechIgmpInterfaceQueryMaxResponseTime      Unsigned32,
	 qtechIgmpInterfaceQuerierUpTime             TimeTicks,
    qtechIgmpInterfaceQuerierExpiryTime         TimeTicks,
    qtechIgmpInterfaceVersion1QuerierTimer      TimeTicks,
    qtechIgmpInterfaceWrongVersionQueries       Counter32,
    qtechIgmpInterfaceJoins		               Counter32,
    qtechIgmpInterfaceProxyIfIndex              InterfaceIndexOrZero,
    qtechIgmpInterfaceGroups                    Gauge32,            
    qtechIgmpInterfaceRobustness                Unsigned32,
	 qtechIgmpInterfaceLastMembQueryIntvl        Unsigned32,
	 qtechIgmpInterfaceQuerierPresentTimeout     Integer32,           	
	 qtechIgmpInterfaceLeaves		               Counter32,		   
	 qtechIgmpInterfaceAccessGroupAclName        DisplayString,
	 qtechIgmpInterfaceEnabled                   EnabledStatus,
	 qtechIgmpInterfaceHostVersion               Unsigned32	                          
    }
 
qtechIgmpInterfaceIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The ifIndex value of the interface for which IGMP is
         enabled."
    ::= { qtechIgmpInterfaceEntry 1 }

qtechIgmpInterfaceQueryInterval OBJECT-TYPE
    SYNTAX     Unsigned32(1..65535)
    UNITS      "seconds"
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "The frequency at which IGMP Host-Query packets are
         transmitted on this interface."
    DEFVAL     { 125 }  
    ::= { qtechIgmpInterfaceEntry 2 }
    
qtechIgmpInterfaceVersion OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "The version of IGMP which is running on this interface.
         This object can be used to configure a router capable of
         running either value.  For IGMP to function correctly, all
         routers on a LAN must be configured to run the same version
         of IGMP on that LAN."
    DEFVAL     { 2 }
    ::= { qtechIgmpInterfaceEntry 3 }  
    
qtechIgmpInterfaceQuerier OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The address of the IGMP Querier on the IP subnet to which           
         this interface is attached."
    ::= { qtechIgmpInterfaceEntry 4 }
        
qtechIgmpInterfaceQueryMaxResponseTime OBJECT-TYPE
    SYNTAX     Unsigned32 (10..250)
    UNITS      "tenths of seconds"
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "The maximum query response time advertised in IGMPv2
         queries on this interface."
    DEFVAL     { 100 }
    ::= { qtechIgmpInterfaceEntry 5 }   

qtechIgmpInterfaceQuerierUpTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The time since starIgmpInterfaceQuerier was last changed."
    ::= { qtechIgmpInterfaceEntry 6 }

qtechIgmpInterfaceQuerierExpiryTime OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The amount of time remaining before the Other Querier
         Present Timer expires.  If the local system is the querier,
         the value of this object is zero."
    ::= { qtechIgmpInterfaceEntry 7 }
    
qtechIgmpInterfaceVersion1QuerierTimer OBJECT-TYPE
    SYNTAX     TimeTicks
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The time remaining until the host assumes that there are no
         IGMPv1 routers present on the interface.  While this is non-
         zero, the host will reply to all queries with version 1
         membership reports."
    ::= { qtechIgmpInterfaceEntry 8} 
 
qtechIgmpInterfaceWrongVersionQueries OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION 
        "The number of queries received whose IGMP version does not
         match igmpInterfaceVersion, over the lifetime of the row
         entry.  IGMP requires that all routers on a LAN be
         configured to run the same version of IGMP.  Thus, if any
         queries are received with the wrong version, this indicates
         a configuration error."
    ::= { qtechIgmpInterfaceEntry 9 }

qtechIgmpInterfaceJoins OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The number of times a group membership has been added on
         this interface; that is, the number of times an entry for
         this interface has been added to the Cache Table.  This
         object gives an indication of the amount of IGMP activity
         over the lifetime of the row entry."
    ::= { qtechIgmpInterfaceEntry 10 } 

qtechIgmpInterfaceProxyIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndexOrZero
    MAX-ACCESS read-only
    STATUS     obsolete
    DESCRIPTION
        "Some devices implement a form of IGMP proxying whereby
         memberships learned on the interface represented by this
         row, cause IGMP Host Membership Reports to be sent on the
         interface whose ifIndex value is given by this object.  Such
         a device would implement the igmpV2RouterMIBGroup only on
         its router interfaces (those interfaces with non-zero
         igmpInterfaceProxyIfIndex).  Typically, the value of this
         object is 0, indicating that no proxying is being done."
    DEFVAL     { 0 }
    ::= { qtechIgmpInterfaceEntry 11 } 

qtechIgmpInterfaceGroups OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The current number of entries for this interface in the
         Cache Table."
    ::= { qtechIgmpInterfaceEntry 12 }
     
qtechIgmpInterfaceRobustness OBJECT-TYPE
    SYNTAX     Unsigned32 (1..255)
    MAX-ACCESS read-write     
    STATUS     current
    DESCRIPTION
        "The Robustness Variable allows tuning for the expected
         packet loss on a subnet.  If a subnet is expected to be
         lossy, the Robustness Variable may be increased.  IGMP is
         robust to (Robustness Variable-1) packet losses."
    DEFVAL     { 2 }
    ::= { qtechIgmpInterfaceEntry 13 }
  
qtechIgmpInterfaceLastMembQueryIntvl OBJECT-TYPE
    SYNTAX     Unsigned32 (1..655)
    UNITS      "tenths of seconds"
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "The Last Member Query Interval is the Max Response Time
         inserted into Group-Specific Queries sent in response to
         Leave Group messages, and is also the amount of time between
         Group-Specific Query messages.  This value may be tuned to
         modify the leave latency of the network.  A reduced value
         results in reduced time to detect the loss of the last
         member of a group.  The value of this object is irrelevant
         if igmpInterfaceVersion is 1."
    DEFVAL     { 10 }
    ::= { qtechIgmpInterfaceEntry 14 }    
 
qtechIgmpInterfaceQuerierPresentTimeout OBJECT-TYPE
      SYNTAX     Integer32(60..300)
      UNITS      "seconds"
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
          "A timeout interval.  If no IGMPv2 queries are heard on this
	        interface within this timeout interval, the local router
	        will take over the Querier on the IP subnet to which this
	        interface is attached."
      DEFVAL     { 265 }
      ::= { qtechIgmpInterfaceEntry 15 }

qtechIgmpInterfaceLeaves OBJECT-TYPE
      SYNTAX     Counter32
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
          "The number of times a group membership has been removed
	        from this interface; that is, the number of times an entry
	        for this interface has been deleted from the Cache Table."
      ::= { qtechIgmpInterfaceEntry 16 }

qtechIgmpInterfaceAccessGroupAclName   OBJECT-TYPE    
      SYNTAX     DisplayString
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
          "To control the multicast groups that hosts on the subnet 
           serviced by an interface can join,Defalut value means 
           allow all multicast groups can join."
      DEFVAL {""}
      ::= { qtechIgmpInterfaceEntry 17 }

qtechIgmpInterfaceEnabled    OBJECT-TYPE
    SYNTAX    EnabledStatus
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "Evaluates to Enable if  this interface are
         running IGMP."    
    ::= { qtechIgmpInterfaceEntry 18 }

qtechIgmpInterfaceHostVersion OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The version of Host which is running on this interface."   
    ::= { qtechIgmpInterfaceEntry 19 }  

--
--qtech igmp interface static Table
--
qtechIgmpInterfaceStaticTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF QtechIgmpInterfaceStaticEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The (conceptual) table listing the interfaces on
         which IGMP is enabled."
    ::= {  qtechIgmpMIBObjects 2 }

qtechIgmpInterfaceStaticEntry OBJECT-TYPE
    SYNTAX     QtechIgmpInterfaceStaticEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An entry (conceptual row) representing an
         interface on which IGMP is enabled."
    INDEX      { qtechIgmpInterfaceStaticInterface,
                 qtechIgmpInterfaceStaticGroupAddress }
    ::= { qtechIgmpInterfaceStaticTable 1 }

QtechIgmpInterfaceStaticEntry  ::= SEQUENCE {
    qtechIgmpInterfaceStaticInterface       InterfaceIndex,
    qtechIgmpInterfaceStaticGroupAddress    IpAddress,       
    qtechIgmpInterfaceStaticStatus          RowStatus
    }

qtechIgmpInterfaceStaticInterface   OBJECT-TYPE    
    SYNTAX     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The index of interface."    
    ::= { qtechIgmpInterfaceStaticEntry 1 }

qtechIgmpInterfaceStaticGroupAddress   OBJECT-TYPE    
    SYNTAX     IpAddress
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "configed the static group address, the multilayer switch 
         does not accept the packets itself, but only forwards them."    
    ::= { qtechIgmpInterfaceStaticEntry 2 }

qtechIgmpInterfaceStaticStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "The status of this entry.  Creating the entry enables Igmp static table; 
         destroying the entry disables Igmp static table."
    ::= { qtechIgmpInterfaceStaticEntry 3}

--
-- Notification 
--
qtechIgmpVersionConflicted    NOTIFICATION-TYPE
    OBJECTS {
       qtechIgmpInterfaceIfIndex,
       qtechIgmpInterfaceVersion,
       qtechIgmpInterfaceHostVersion
    }
    STATUS             current
    DESCRIPTION
        "A qtechIgmpVersionErr trap signifies version is 
         different in the interface with host.This trap 
         should be generated when interface run  version 
         IGMPV1 and reported by host which run version IGMPV2.
         also when interface run version IGMPV2 and reported 
         by host which run version IGMPV1."
    ::= { qtechIgmpTraps 1 }

-- units of conformance

qtechIgmpMIBConformance OBJECT IDENTIFIER ::= { qtechIgmpMIB 2 }
qtechIgmpMIBCompliances OBJECT IDENTIFIER ::= { qtechIgmpMIBConformance 1 }
qtechIgmpMIBGroups      OBJECT IDENTIFIER ::= { qtechIgmpMIBConformance 2 }

-- compliance statements
qtechIgmpMIBCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
        "The compliance statement for entities which implement
         the Qtech IGMP MIB"
    MODULE  -- this module
    MANDATORY-GROUPS {
        qtechIgmpInterfaceMIBGroup,    
        qtechIgmpInterfaceStaticMIBGroup
        }
    ::= { qtechIgmpMIBCompliances 1 }

-- conformance information

qtechIgmpInterfaceMIBGroup OBJECT-GROUP
    OBJECTS {
    qtechIgmpInterfaceQueryInterval,
	 qtechIgmpInterfaceVersion,
	 qtechIgmpInterfaceQuerier,
	 qtechIgmpInterfaceQueryMaxResponseTime,
	 qtechIgmpInterfaceQuerierUpTime,
    qtechIgmpInterfaceQuerierExpiryTime,
    qtechIgmpInterfaceVersion1QuerierTimer,
    qtechIgmpInterfaceWrongVersionQueries,
    qtechIgmpInterfaceJoins,
    qtechIgmpInterfaceProxyIfIndex,
    qtechIgmpInterfaceGroups,            
    qtechIgmpInterfaceRobustness,
	 qtechIgmpInterfaceLastMembQueryIntvl,
	 qtechIgmpInterfaceQuerierPresentTimeout,           	
	 qtechIgmpInterfaceLeaves,		   
	 qtechIgmpInterfaceAccessGroupAclName,
	 qtechIgmpInterfaceEnabled,
	 qtechIgmpInterfaceHostVersion	 
    }
    STATUS  current
    DESCRIPTION
        "A collection of IGMP interface managment."
    ::= { qtechIgmpMIBGroups 1 }

qtechIgmpInterfaceStaticMIBGroup OBJECT-GROUP
    OBJECTS {
    qtechIgmpInterfaceStaticStatus
    }
    STATUS  current
    DESCRIPTION
        "A collection of IGMP interface static managment."
    ::= { qtechIgmpMIBGroups 2 }
    
-- -------------------------------------------------------------
-- Compliance statements
-- -------------------------------------------------------------
igmpExternCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The compliance statement for device support of IGMP
         services."
         
    MODULE
        OBJECT           qtechIgmpInterfaceQueryInterval
        SYNTAX           Unsigned32(1..65535)
        DESCRIPTION     "The Scope is 1-65535."
         
        OBJECT           qtechIgmpInterfaceQueryMaxResponseTime
        SYNTAX           Unsigned32(10..250)
        DESCRIPTION     "The Scope is 10-250."         
        
        OBJECT           qtechIgmpInterfaceLastMembQueryIntvl
        SYNTAX           Unsigned32(1..655)
        DESCRIPTION     "The Scope is 1-655." 
        
        OBJECT           qtechIgmpInterfaceQuerierPresentTimeout
        SYNTAX           Unsigned32(60..300)
        DESCRIPTION      "The Scope is 60-300."                 
                             
    ::= { qtechIgmpMIBCompliances 2 }


END
     
     
     
