-- Copyright (C) 2008-2014 Super Micro Computer Inc. All Rights Reserved

-- $Id: fsigp.mib,v 1.4 2013/01/15 12:17:25 siva Exp $

-- IGMPPROXY Proprietary MIB Definition 
 
-- This document explains the proprietary MIB implemented 
-- for IGMP-PROXY features. 
 
-- This MIB contains scalars and tables used to configure a router running 
-- IGMP PROXY.

 
   IGMP-PROXY-MIB DEFINITIONS ::= BEGIN 
 
   IMPORTS 
      MODULE-IDENTITY, OBJECT-TYPE,  
      enterprises, NOTIFICATION-TYPE, 
      IpAddress, Counter32, Integer32, 
      TimeTicks                                FROM SNMPv2-SMI 
      RowStatus                                FROM SNMPv2-TC; 

fsigmpproxy MODULE-IDENTITY 
            LAST-UPDATED "201209050000Z" 
            ORGANIZATION "Super Micro Computer Inc." 
            CONTACT-INFO "support@Supermicro.com" 
            DESCRIPTION 
            " The proprietary MIB module for IGMPProxy. " 
	    REVISION "201209050000Z"
            DESCRIPTION 
            " The proprietary MIB module for IGMPProxy. " 
            ::=  { enterprises supermicro-computer-inc(10876) super-switch(101) basic(1) 124 } 
 
-- ------------------------------------------------------------  
-- Groups in the MIB  
-- ------------------------------------------------------------ 
   
   fsigmpproxyStatus      OBJECT IDENTIFIER ::= { fsigmpproxy 1 }
   fsigmpproxyRtr         OBJECT IDENTIFIER ::= { fsigmpproxy 2 }
   fsigmpproxyMRoute      OBJECT IDENTIFIER ::= { fsigmpproxy 3 }
   igmpproxyTrapsControl  OBJECT IDENTIFIER ::= { fsigmpproxy 5 }
   fsigmpproxyTraps       OBJECT IDENTIFIER ::= { fsigmpproxy 6 }
   fsigmpproxyScalars     OBJECT IDENTIFIER ::= { fsigmpproxy 7 }

   --   ************************************************
   --                    IGMP PROXY SCALAR OBJECTS
   --   ************************************************
          
   fsIgmpProxyStatus  OBJECT-TYPE
       SYNTAX  INTEGER { enabled(1), disabled(2) }
       MAX-ACCESS   read-write
       STATUS   current
       DESCRIPTION
              "Enables or disables IGMP Proxy in the system.
               When set to 'enabled', the IGMP Proxy module 
               starts protocol operations.
               When set to 'disabled', the IGMP Proxy module stops 
               performing protocol operations. IGMP Proxy can be enabled
               when multicast routing protocol (PIM/DVMRP) is disabled and
               (PIM/DVMRP) cannot be enabled when IGMP Proxy is enabled"
       DEFVAL  { 2 }
       ::= { fsigmpproxyStatus 1 }

   fsIgmpProxyForwardingTblEntryCnt OBJECT-TYPE
        SYNTAX          Integer32 (0..65535)
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION
                        "Number of entries in the
			 multicast forwarding table of IGMP Proxy instance."
        ::= { fsigmpproxyScalars 1 }

   --   ************************************************
   --                    IGMP PROXY TABLES
   --   ************************************************

   --   ************************************************
   --           IGMP PROXY UPSTREAM INTERFACE TABLE
   --   ************************************************

   fsIgmpProxyRtrIfaceTable OBJECT-TYPE
       SYNTAX  SEQUENCE OF FsIgmpProxyRtrIfaceEntry
       MAX-ACCESS  not-accessible
       STATUS  current
       DESCRIPTION
               "This table contains the IGMP Proxy upstream interface 
                information."
       ::= { fsigmpproxyRtr 1  }

   fsIgmpProxyRtrIfaceEntry OBJECT-TYPE
       SYNTAX  FsIgmpProxyRtrIfaceEntry
       MAX-ACCESS  not-accessible
       STATUS  current
       DESCRIPTION
               "Each entry contains the upstream interface index and operating 
                and configured version of IGMP on the upstream interface."
       INDEX   { fsIgmpProxyRtrIfaceIndex }
       ::= { fsIgmpProxyRtrIfaceTable 1 }

   FsIgmpProxyRtrIfaceEntry ::=
       SEQUENCE {
       fsIgmpProxyRtrIfaceIndex           Integer32, 
       fsIgmpProxyRtrIfaceOperVersion     INTEGER,
       fsIgmpProxyRtrIfaceCfgOperVersion  INTEGER,
       fsIgmpProxyRtrIfacePurgeInterval   Integer32,
       fsIgmpProxyRtrIfaceUpTime          TimeTicks,
       fsIgmpProxyRtrIfaceExpiryTime      TimeTicks,
       fsIgmpProxyRtrIfaceRowStatus       RowStatus
       }

   fsIgmpProxyRtrIfaceIndex OBJECT-TYPE 
       SYNTAX     Integer32 (1..65535) 
       MAX-ACCESS not-accessible 
       STATUS     current 
       DESCRIPTION 
               "The interface index value of the interface which is defined 
                as an upstream interface." 
       ::= { fsIgmpProxyRtrIfaceEntry 1 } 

   fsIgmpProxyRtrIfaceOperVersion OBJECT-TYPE
       SYNTAX      INTEGER { v1(1), v2(2), v3(3) }
       MAX-ACCESS  read-only
       STATUS  current
       DESCRIPTION
               "Indicates the operating version of the IGMP Proxy device
                on the upstream interface. Operating version is used by the 
                IGMP Proxy device to send consolidated reports to the upstream 
                router. Operating version of the upstream interface will change
                to the version of IGMP router present on that interface on 
                reception of IGMP query messages. Otherwise it will be set to
                the configured version of IGMP on the upstream interface" 
       ::= { fsIgmpProxyRtrIfaceEntry 2 }

   fsIgmpProxyRtrIfaceCfgOperVersion  OBJECT-TYPE
      SYNTAX      INTEGER { v1(1), v2(2), v3(3) }
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION
               "Indicates the configured version of the IGMP Proxy device
                on the upstream interface. This should be configured 
                based on the version of IGMP router present in the 
                upstream interface. The default operating version
                is IGMP version 3 i.e, V3(3). The configured version is set to
                the operating version of the IGMP interface when the router 
                interface purge timer expires for the interface."
                DEFVAL { 3 }
       ::= { fsIgmpProxyRtrIfaceEntry 3 }

   fsIgmpProxyRtrIfacePurgeInterval OBJECT-TYPE
       SYNTAX      Integer32 (60..600)
       MAX-ACCESS  read-write
       STATUS      current
       DESCRIPTION
               "This is the interval (in seconds) after which the 
                upstream interface IGMP operating version will be changed to 
                configured IGMP version. For each upstream interface 
                configured, this timer is started for 
                `fsIgmpProxyRtrIfacePurgeInterval` seconds, when an IGMP query 
                message is received on the interface.
                The timer is restarted, when IGMP control messages are 
                received from the IGMP router before the timer expiry."
       ::= { fsIgmpProxyRtrIfaceEntry 4 }

   fsIgmpProxyRtrIfaceUpTime  OBJECT-TYPE
       SYNTAX     TimeTicks
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
               "Indicates the time since the IGMP router has come up on
                the upstream interface."
       ::= { fsIgmpProxyRtrIfaceEntry 5 }

   fsIgmpProxyRtrIfaceExpiryTime  OBJECT-TYPE
       SYNTAX     TimeTicks
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
               "Indicates the amount of remaining time after which the 
                operating version of the upstream interface will be changed to
                the configured version or default version of the upstream
                interface."
       ::= { fsIgmpProxyRtrIfaceEntry 6 }

   fsIgmpProxyRtrIfaceRowStatus  OBJECT-TYPE
       SYNTAX      RowStatus
       MAX-ACCESS  read-write
       STATUS      current
       DESCRIPTION
               "The status of a row in the upstream interface table. 
                By 'fsIgmpProxyRtrIfaceRowStatus' new entries can be 
                created in the upstream interface table and existing 
                entries can be removed from the table"
       ::= { fsIgmpProxyRtrIfaceEntry 7 }


   --   ************************************************
   --         IGMP PROXY FORWARDING TABLE
   --   ************************************************

   fsIgmpProxyMrouteTable OBJECT-TYPE
       SYNTAX     SEQUENCE OF FsIgmpProxyMrouteEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
               "This table contains the multicast routing inforamtion for the 
                registered group members." 
       ::= { fsigmpproxyMRoute 1 }

   fsIgmpProxyMrouteEntry OBJECT-TYPE
       SYNTAX     FsIgmpProxyMrouteEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
               "Each entry in the table contains the unicast source IP address,
                multicast group IP address and incoming interface"  
       INDEX   { fsIgmpProxyMRouteSource, fsIgmpProxyMRouteGroup }
       ::= { fsIgmpProxyMrouteTable 1 }

   FsIgmpProxyMrouteEntry ::= SEQUENCE { 
       fsIgmpProxyMRouteSource            IpAddress, 
       fsIgmpProxyMRouteGroup             IpAddress, 
       fsIgmpProxyMRouteIifIndex          Integer32, 
       fsIgmpProxyMRouteUpTime            TimeTicks, 
       fsIgmpProxyMRouteExpiryTime        TimeTicks 
     } 

   fsIgmpProxyMRouteSource  OBJECT-TYPE 
       SYNTAX      IpAddress 
       MAX-ACCESS  not-accessible 
       STATUS      current 
       DESCRIPTION 
               "Unicast source IP address of the data source that sends
                multicast datagrams for the registered multicast groups."
       ::= { fsIgmpProxyMrouteEntry 1 } 

   fsIgmpProxyMRouteGroup  OBJECT-TYPE 
       SYNTAX      IpAddress 
       MAX-ACCESS  not-accessible 
       STATUS      current 
       DESCRIPTION 
               "IP multicast group address for which multicast registrations
                are received" 
       ::= { fsIgmpProxyMrouteEntry 2 } 

   fsIgmpProxyMRouteIifIndex  OBJECT-TYPE 
       SYNTAX      Integer32  
       MAX-ACCESS  read-only 
       STATUS      current 
       DESCRIPTION 
              "The interface index value of the upstream interface on which 
               IP multicast datagrams are received for the registered 
               group address."
       ::= { fsIgmpProxyMrouteEntry 3 } 

   fsIgmpProxyMRouteUpTime  OBJECT-TYPE 
       SYNTAX      TimeTicks 
       MAX-ACCESS  read-only 
       STATUS      current 
       DESCRIPTION 
               "The time since the multicast routing information was 
                created for the registered group IP address. The routing 
                information is created on the reception of IP mulitcast 
                datagrams for the registered group members." 
       ::= { fsIgmpProxyMrouteEntry 4 } 

   fsIgmpProxyMRouteExpiryTime  OBJECT-TYPE 
       SYNTAX      TimeTicks 
       MAX-ACCESS  read-only 
       STATUS      current 
       DESCRIPTION 
               "The amount of time after which this multicast route 
                entry learned for the multicast group IP address 
                will get removed." 
       ::= { fsIgmpProxyMrouteEntry 5 } 

       
   --   ************************************************
   --         IGMP PROXY NEXTHOP TABLE
   --   ************************************************

   fsIgmpProxyNextHopTable  OBJECT-TYPE
       SYNTAX     SEQUENCE OF FsIgmpProxyNextHopEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
               "This table contains the list of outgoing interfaces for the 
                multicast forwarding entries." 
       ::= { fsigmpproxyMRoute 2 }

   fsIgmpProxyNextHopEntry OBJECT-TYPE
       SYNTAX     FsIgmpProxyNextHopEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
               "Each entry contains the unicast source IP address, multicast 
                group IP address, outgoing interface index and 
                entry state"  
       INDEX   { fsIgmpProxyNextHopSource, 
                 fsIgmpProxyNextHopGroup,
                 fsIgmpProxyNextHopIndex }
       ::= { fsIgmpProxyNextHopTable 1 }

   FsIgmpProxyNextHopEntry ::= SEQUENCE { 
       fsIgmpProxyNextHopSource           IpAddress, 
       fsIgmpProxyNextHopGroup            IpAddress, 
       fsIgmpProxyNextHopIndex            Integer32, 
       fsIgmpProxyNextHopState            INTEGER 
       } 

   fsIgmpProxyNextHopSource  OBJECT-TYPE 
       SYNTAX      IpAddress 
       MAX-ACCESS  not-accessible 
       STATUS      current 
       DESCRIPTION 
               "Unicast source IP address of the data source that sends
                multicast data for registered groups."
       ::= { fsIgmpProxyNextHopEntry 1 } 

   fsIgmpProxyNextHopGroup  OBJECT-TYPE 
       SYNTAX      IpAddress 
       MAX-ACCESS  not-accessible 
       STATUS      current 
       DESCRIPTION 
               "IP multicast group address for which multicast registrations
                are received" 
       ::= { fsIgmpProxyNextHopEntry 2 } 

   fsIgmpProxyNextHopIndex  OBJECT-TYPE 
       SYNTAX      Integer32  (1..65535)
       MAX-ACCESS  not-accessible 
       STATUS      current 
       DESCRIPTION 
               "The interface index value of the interface on which  
                multicast registrations for the group are received. This is 
                the interface on which IP multicast datagrams for the group 
                are forwarded."
       ::= { fsIgmpProxyNextHopEntry 3 } 

   fsIgmpProxyNextHopState  OBJECT-TYPE 
       SYNTAX      INTEGER { forwarding (1), pruned (2) }
       MAX-ACCESS  read-only 
       STATUS      current 
       DESCRIPTION 
               "The state of the outgoing interface on which the multicast 
                registrations have been received. The value of this object will
                be `forwarding` when the entry is created. The nexthop state 
                `pruned` is not applicable for the outgoing interface in the 
                IGMP proxy implementation because the interface will be added
                or removed based upon the IGMP multicast registrations received
                on that interface."
       ::= { fsIgmpProxyNextHopEntry 4 } 

   --   ************************************************
   --                   IGMP PROXY TRAPS
   --   ************************************************

     fsIgmpProxyQuerierIfIndex    OBJECT-TYPE
         SYNTAX              Integer32
         MAX-ACCESS          read-only
         STATUS              current
         DESCRIPTION
               "Indicates the interface index value of the downstream interface 
                on which a IGMP router with lower IP address has sent an IGMP 
                query message."
         ::= { igmpproxyTrapsControl 1 }

     fsIgmpProxyQuerierAddress    OBJECT-TYPE
         SYNTAX              IpAddress
         MAX-ACCESS          read-only
         STATUS              current
         DESCRIPTION
               "Indicates the unicast IP address of the IGMP router present 
                in the downstream interface."
         ::= { igmpproxyTrapsControl 2 }

      fsigmpTraps OBJECT IDENTIFIER ::= { fsigmpproxyTraps 0 }   

      fsIgmpProxyQuerierPresent       NOTIFICATION-TYPE
         OBJECTS {
            fsIgmpProxyQuerierIfIndex,
            fsIgmpProxyQuerierAddress
            }
         STATUS                  current 
         DESCRIPTION
               "This trap is generated by the IGMP proxy device when it detects
                an IGMP router with lower IP address in the downstream 
                interface. This trap is generated because the IGMP proxy 
                device should win the querier election in the downstream 
                interface for forwarding the multicast data packets on that 
                interface. This trap will indicate to the administrator 
                the downstream interface index and IP address of the IGMP 
                router which has the transmitted a query with lower IP 
                address." 
         ::= { fsigmpTraps 1 }
END
