--*****************************************************************
-- FS-IGMP-MIB.mib: This mib was extracted from rfc2933
--
-- January 2003, zhenggao
--
-- Copyright (c) 2003 by FS.COM Inc..
-- All rights reserved.
-- 
-- *****************************************************************

FS-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 
    fsMgmt                
        FROM FS-SMI
    InterfaceIndexOrZero,    
    InterfaceIndex        
        FROM IF-MIB
    MODULE-COMPLIANCE, 
    OBJECT-GROUP  
        FROM SNMPv2-CONF;
 
fsIgmpMIB MODULE-IDENTITY
    LAST-UPDATED "200301200000Z"
    ORGANIZATION "FS.COM Inc.."
    CONTACT-INFO
        "
        Tel: 400-865-2852 
        
        E-mail: https://www.fs.com/live_chat_service_mail.html"
    DESCRIPTION
        "This module defines fs igmp mibs."
    REVISION      "200301200000Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { fsMgmt 26}

fsIgmpMIBObjects OBJECT IDENTIFIER ::= { fsIgmpMIB 1 }  
fsIgmpTraps      OBJECT IDENTIFIER ::= { fsIgmpMIBObjects 3 }
--
--  The FS-IGMP Interface Table
--
fsIgmpInterfaceTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF FSIgmpInterfaceEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The (conceptual) table listing the interfaces on
         which IGMP is enabled."
    ::= {  fsIgmpMIBObjects 1 }

fsIgmpInterfaceEntry OBJECT-TYPE
    SYNTAX     FSIgmpInterfaceEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An entry (conceptual row) representing an
         interface on which IGMP is enabled."
    INDEX      { fsIgmpInterfaceIfIndex }
    ::= { fsIgmpInterfaceTable 1 }
              
FSIgmpInterfaceEntry ::= SEQUENCE {
    fsIgmpInterfaceIfIndex		               InterfaceIndex ,
    fsIgmpInterfaceQueryInterval	            Unsigned32,
	 fsIgmpInterfaceVersion		               Unsigned32,
	 fsIgmpInterfaceQuerier		               IpAddress,
	 fsIgmpInterfaceQueryMaxResponseTime      Unsigned32,
	 fsIgmpInterfaceQuerierUpTime             TimeTicks,
    fsIgmpInterfaceQuerierExpiryTime         TimeTicks,
    fsIgmpInterfaceVersion1QuerierTimer      TimeTicks,
    fsIgmpInterfaceWrongVersionQueries       Counter32,
    fsIgmpInterfaceJoins		               Counter32,
    fsIgmpInterfaceProxyIfIndex              InterfaceIndexOrZero,
    fsIgmpInterfaceGroups                    Gauge32,            
    fsIgmpInterfaceRobustness                Unsigned32,
	 fsIgmpInterfaceLastMembQueryIntvl        Unsigned32,
	 fsIgmpInterfaceQuerierPresentTimeout     Integer32,           	
	 fsIgmpInterfaceLeaves		               Counter32,		   
	 fsIgmpInterfaceAccessGroupAclName        DisplayString,
	 fsIgmpInterfaceEnabled                   EnabledStatus,
	 fsIgmpInterfaceHostVersion               Unsigned32	                          
    }
 
fsIgmpInterfaceIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The ifIndex value of the interface for which IGMP is
         enabled."
    ::= { fsIgmpInterfaceEntry 1 }

fsIgmpInterfaceQueryInterval 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 }  
    ::= { fsIgmpInterfaceEntry 2 }
    
fsIgmpInterfaceVersion 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 }
    ::= { fsIgmpInterfaceEntry 3 }  
    
fsIgmpInterfaceQuerier 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."
    ::= { fsIgmpInterfaceEntry 4 }
        
fsIgmpInterfaceQueryMaxResponseTime 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 }
    ::= { fsIgmpInterfaceEntry 5 }   

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

fsIgmpInterfaceQuerierExpiryTime 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."
    ::= { fsIgmpInterfaceEntry 7 }
    
fsIgmpInterfaceVersion1QuerierTimer 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."
    ::= { fsIgmpInterfaceEntry 8} 
 
fsIgmpInterfaceWrongVersionQueries 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."
    ::= { fsIgmpInterfaceEntry 9 }

fsIgmpInterfaceJoins 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."
    ::= { fsIgmpInterfaceEntry 10 } 

fsIgmpInterfaceProxyIfIndex 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 }
    ::= { fsIgmpInterfaceEntry 11 } 

fsIgmpInterfaceGroups OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The current number of entries for this interface in the
         Cache Table."
    ::= { fsIgmpInterfaceEntry 12 }
     
fsIgmpInterfaceRobustness 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 }
    ::= { fsIgmpInterfaceEntry 13 }
  
fsIgmpInterfaceLastMembQueryIntvl 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 }
    ::= { fsIgmpInterfaceEntry 14 }    
 
fsIgmpInterfaceQuerierPresentTimeout 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 }
      ::= { fsIgmpInterfaceEntry 15 }

fsIgmpInterfaceLeaves 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."
      ::= { fsIgmpInterfaceEntry 16 }

fsIgmpInterfaceAccessGroupAclName   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 {""}
      ::= { fsIgmpInterfaceEntry 17 }

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

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

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

fsIgmpInterfaceStaticEntry OBJECT-TYPE
    SYNTAX     FSIgmpInterfaceStaticEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An entry (conceptual row) representing an
         interface on which IGMP is enabled."
    INDEX      { fsIgmpInterfaceStaticInterface,
                 fsIgmpInterfaceStaticGroupAddress }
    ::= { fsIgmpInterfaceStaticTable 1 }

FSIgmpInterfaceStaticEntry  ::= SEQUENCE {
    fsIgmpInterfaceStaticInterface       InterfaceIndex,
    fsIgmpInterfaceStaticGroupAddress    IpAddress,       
    fsIgmpInterfaceStaticStatus          RowStatus
    }

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

fsIgmpInterfaceStaticGroupAddress   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."    
    ::= { fsIgmpInterfaceStaticEntry 2 }

fsIgmpInterfaceStaticStatus 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."
    ::= { fsIgmpInterfaceStaticEntry 3}

--
-- Notification 
--
fsIgmpVersionConflicted    NOTIFICATION-TYPE
    OBJECTS {
       fsIgmpInterfaceIfIndex,
       fsIgmpInterfaceVersion,
       fsIgmpInterfaceHostVersion
    }
    STATUS             current
    DESCRIPTION
        "A fsIgmpVersionErr 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."
    ::= { fsIgmpTraps 1 }

-- units of conformance

fsIgmpMIBConformance OBJECT IDENTIFIER ::= { fsIgmpMIB 2 }
fsIgmpMIBCompliances OBJECT IDENTIFIER ::= { fsIgmpMIBConformance 1 }
fsIgmpMIBGroups      OBJECT IDENTIFIER ::= { fsIgmpMIBConformance 2 }

-- compliance statements
fsIgmpMIBCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
        "The compliance statement for entities which implement
         the FS IGMP MIB"
    MODULE  -- this module
    MANDATORY-GROUPS {
        fsIgmpInterfaceMIBGroup,    
        fsIgmpInterfaceStaticMIBGroup
        }
    ::= { fsIgmpMIBCompliances 1 }

-- conformance information

fsIgmpInterfaceMIBGroup OBJECT-GROUP
    OBJECTS {
    fsIgmpInterfaceQueryInterval,
	 fsIgmpInterfaceVersion,
	 fsIgmpInterfaceQuerier,
	 fsIgmpInterfaceQueryMaxResponseTime,
	 fsIgmpInterfaceQuerierUpTime,
    fsIgmpInterfaceQuerierExpiryTime,
    fsIgmpInterfaceVersion1QuerierTimer,
    fsIgmpInterfaceWrongVersionQueries,
    fsIgmpInterfaceJoins,
    fsIgmpInterfaceProxyIfIndex,
    fsIgmpInterfaceGroups,            
    fsIgmpInterfaceRobustness,
	 fsIgmpInterfaceLastMembQueryIntvl,
	 fsIgmpInterfaceQuerierPresentTimeout,           	
	 fsIgmpInterfaceLeaves,		   
	 fsIgmpInterfaceAccessGroupAclName,
	 fsIgmpInterfaceEnabled,
	 fsIgmpInterfaceHostVersion	 
    }
    STATUS  current
    DESCRIPTION
        "A collection of IGMP interface managment."
    ::= { fsIgmpMIBGroups 1 }

fsIgmpInterfaceStaticMIBGroup OBJECT-GROUP
    OBJECTS {
    fsIgmpInterfaceStaticStatus
    }
    STATUS  current
    DESCRIPTION
        "A collection of IGMP interface static managment."
    ::= { fsIgmpMIBGroups 2 }
    
-- -------------------------------------------------------------
-- Compliance statements
-- -------------------------------------------------------------
igmpExternCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The compliance statement for device support of IGMP
         services."
         
    MODULE
        OBJECT           fsIgmpInterfaceQueryInterval
        SYNTAX           Unsigned32(1..65535)
        DESCRIPTION     "The Scope is 1-65535."
         
        OBJECT           fsIgmpInterfaceQueryMaxResponseTime
        SYNTAX           Unsigned32(10..250)
        DESCRIPTION     "The Scope is 10-250."         
        
        OBJECT           fsIgmpInterfaceLastMembQueryIntvl
        SYNTAX           Unsigned32(1..655)
        DESCRIPTION     "The Scope is 1-655." 
        
        OBJECT           fsIgmpInterfaceQuerierPresentTimeout
        SYNTAX           Unsigned32(60..300)
        DESCRIPTION      "The Scope is 60-300."                 
                             
    ::= { fsIgmpMIBCompliances 2 }


END
     
     
     
