--------------------------------------------------------------------------------
--
-- AMI vendor unique environmental monitoring MIB for MegaRAID IDE
-- CopyRight American Megatrends Inc. 2000
-- MIB Version 2.5.0510
-- Author Audrius Stripeikis
-- Modified by Partha Protim Porel
--------------------------------------------------------------------------------
MEGARAID-IDE-MIB DEFINITIONS ::= BEGIN
IMPORTS
   enterprises                 FROM RFC1155-SMI
   Gauge                       FROM RFC1155-SMI
   OBJECT-TYPE                 FROM RFC-1212
   DisplayString               FROM RFC1213-MIB
   TRAP-TYPE                   FROM RFC-1215;

--------------------------------------------------------------------------------
--
-- AMI specific object identifiers.
--
--------------------------------------------------------------------------------
ami                     OBJECT IDENTIFIER ::= {enterprises 3582}
MegaRaid                   OBJECT IDENTIFIER ::= {ami 1}			
IDE               OBJECT IDENTIFIER ::= {MegaRaid 2}			

--------------------------------------------------------------------------------
--
-- Management/monitoring MIB object groups.
--
--------------------------------------------------------------------------------
RaidVersion			OBJECT IDENTIFIER ::= {IDE 5}
RaidTrapInfo   		OBJECT IDENTIFIER ::= {IDE 6}
RaidProperties		OBJECT IDENTIFIER ::= {IDE 4}
RaidPhysicalDrives       OBJECT IDENTIFIER ::= {IDE 3}
RaidArrays		OBJECT IDENTIFIER ::= {IDE 2}
RaidControllers		OBJECT IDENTIFIER ::= {IDE 1}

--------------------------------------------------------------------------------
--
-- Version Information group.
--
-- This table contains version information MegaRAID IDE.
--
--------------------------------------------------------------------------------

Version		        OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Version"
    ::= { RaidVersion 1 }

CompanyName		        OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Company Name"
    ::= { RaidVersion 2 }

Date		        OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Release Date"
    ::= { RaidVersion 3 }

--------------------------------------------------------------------------------
--
-- Controllers Information group.
--
-- This table contains information about the MegaRAID IDE Controllers in the system.
--
--------------------------------------------------------------------------------

    contTable                   OBJECT-TYPE
    SYNTAX                      SEQUENCE OF ContEntry
    ACCESS                      not-accessible
    STATUS                      mandatory
    DESCRIPTION                 "Each row describes a MegaRAID IDE Controller Information."
    ::= { RaidControllers 2 }

contNumber                      OBJECT-TYPE
    SYNTAX                      Gauge
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "The present number of rows in the Controllers table."
    ::= { RaidControllers 1 }

    contEntry                   OBJECT-TYPE
    SYNTAX                      ContEntry
    ACCESS                      not-accessible
    STATUS                      mandatory
    INDEX                       { contIndex }
    ::= { contTable 1 }

ContEntry ::=
    SEQUENCE { 
		contIndex			INTEGER,
		contControllerId		INTEGER,
		contModel			DisplayString,
		contBIOSVersion			DisplayString,
		contRevision			DisplayString,
		contDriverVersion		DisplayString,
		contBaseAddress			DisplayString,
		contInterupt			DisplayString,
		contNumberOfChannels		INTEGER,
		contChannel1Base		DisplayString,
		contChannel1Control		DisplayString,
		contChannel2Base		DisplayString,
		contChannel2Control		DisplayString,
		contChannel3Base		DisplayString,
		contChannel3Control		DisplayString,
		contChannel4Base		DisplayString,
		contChannel4Control		DisplayString
	}

contIndex                       OBJECT-TYPE
    SYNTAX                      INTEGER
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Index of Controller Information entry."
    ::= { contEntry 1 }

contControllerId	        OBJECT-TYPE
    SYNTAX                      INTEGER 
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "MegaRAID IDE Controller Id."
    ::= { contEntry 2 }

contModel		        OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Model name."
    ::= { contEntry 3 }

contBIOSVersion                 OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "BIOS version."
    ::= { contEntry 4 }

contRevision                    OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "MegaRAID IDE Revision."
    ::= { contEntry 5 }

contDriverVersion               OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "MegaRAID IDE driver version"
    ::= { contEntry 6 }

contBaseAddress		        OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Controller Bus Master Base address."
    ::= { contEntry 7 }
                                      
contInterupt		        OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Controller interupt."
    ::= { contEntry 8 }

contNumberOfChannels            OBJECT-TYPE
    SYNTAX                      INTEGER
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Available IDE channels."
    ::= { contEntry 9 }

contChannel1Base	        OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Channel 1 Base address."
    ::= { contEntry 10 } 

contChannel1Control	        OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Channel 1 Controll address."
    ::= { contEntry 11 }

contChannel2Base	        OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63)) 
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Channel 2 Base address."
    ::= { contEntry 12 } 

contChannel2Control	        OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Channel 2 Controll address."
    ::= { contEntry 13 }

contChannel3Base	        OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Channel 3 Base address."
    ::= { contEntry 14 } 

contChannel3Control	        OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Channel 3 Controll address."
    ::= { contEntry 15 }

contChannel4Base	        OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63)) 
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Channel 4 Base address."
    ::= { contEntry 16 } 

contChannel4Control	        OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Channel 4 Controll address."
    ::= { contEntry 17 }

--------------------------------------------------------------------------------
--
-- Arrays Information group.
--
-- This table contains information about the Arrays in the system.
--
--------------------------------------------------------------------------------

arrTable                        OBJECT-TYPE
    SYNTAX                      SEQUENCE OF ArrEntry
    ACCESS                      not-accessible
    STATUS                      mandatory
    DESCRIPTION                 "Each row describes a Array Information."
    ::= { RaidArrays 2 }

arrEntry                        OBJECT-TYPE
    SYNTAX                      ArrEntry
    ACCESS                      not-accessible
    STATUS                      mandatory
    INDEX                       { arrIndex }
    ::= { arrTable 1 }

arrNumber                       OBJECT-TYPE
    SYNTAX                      Gauge
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "The present number of rows in the Arrays table."
    ::= { RaidArrays 1 }

ArrEntry ::=
    SEQUENCE { 
		arrIndex		INTEGER,
 		arrArrayID  		INTEGER,
--
-- Sun Jan 20 10:49:28 EST 2002
-- Base upon toshiba's request we have changed the arrayname to arrayid.
-- 		arrArrayName		DisplayString,
--
		arrMode			DisplayString,
		arrStatus		DisplayString,
		arrStripeSize	DisplayString,
		arrCapacity		DisplayString,
		arrLogicalDrives	DisplayString,
		arrErrorLimit		INTEGER
	}

arrIndex                        OBJECT-TYPE
    SYNTAX                      INTEGER
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Index of Array Information entry."
    ::= { arrEntry 1 }

arrArrayID  	                OBJECT-TYPE
    SYNTAX                      INTEGER
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Array ID"
    ::= { arrEntry 2 }

arrMode		                OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Array mode."
    ::= { arrEntry 3 }

arrStatus                       OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Array status."
    ::= { arrEntry 4 }

arrStripeSize                   OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Stripe size in array."
    ::= { arrEntry 5 }

arrCapacity                     OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63)) 
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Array size."
    ::= { arrEntry 6 }

arrLogicalDrives                OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Drive letters for particular array."
    ::= { arrEntry 7 }

arrErrorLimit			OBJECT-TYPE
    SYNTAX                      INTEGER
    ACCESS                      read-write
    STATUS                      mandatory
    DESCRIPTION                 "Index of Array Information entry."
    ::= { arrEntry 8 }
--------------------------------------------------------------------------------
--
-- Physical Drives Information group.
--
-- This table contains information about the Physical drives in Array.
-- --------------------------------------------------------------------------------

PdrEntry ::=
    SEQUENCE { 
		pdrIndex		INTEGER,
		pdrDriveId		INTEGER,
		pdrConnection	DisplayString,
		pdrModel		DisplayString,
		pdrStatus		DisplayString,
		pdrErrorCount		INTEGER,  
		pdrSmartStatus		DisplayString,
		pdrLogicalDrives	DisplayString,
		pdrCapacity		DisplayString,
		pdrTransferMode		DisplayString,
		pdrSerialNumber		DisplayString,
		pdrArrayName		DisplayString
	}


pdrNumber                       OBJECT-TYPE
    SYNTAX                      Gauge
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "The present number of rows in the Arrays table."
    ::= { RaidPhysicalDrives 1 }



pdrTable                        OBJECT-TYPE
    SYNTAX                      SEQUENCE OF PdrEntry
    ACCESS                      not-accessible
    STATUS                      mandatory
    DESCRIPTION                 "Each row describes a Physical Drive Information."
    ::= { RaidPhysicalDrives 2 }

pdrEntry                        OBJECT-TYPE
    SYNTAX                      PdrEntry
    ACCESS                      not-accessible
    STATUS                      mandatory
    INDEX                       { pdrIndex }
    ::= { pdrTable 1 }

pdrIndex                        OBJECT-TYPE
    SYNTAX                      INTEGER
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Index of Drives Information entry."
    ::= { pdrEntry 1 }

pdrDriveId						OBJECT-TYPE
    SYNTAX                      INTEGER 
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Drive Id."
    ::= { pdrEntry 2 }

pdrConnection		 	        OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Physical Drive connection."
    ::= { pdrEntry 3 }                    

pdrModel		                OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Physical drive model."
    ::= { pdrEntry 4 }

pdrStatus                       OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Drive status."
    ::= { pdrEntry 5 }

pdrErrorCount                   OBJECT-TYPE
    SYNTAX                      INTEGER
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Media errors count in drive."
    ::= { pdrEntry 6 }
    
pdrSmartStatus		            OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63)) 
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Is this device S.M.A.R.T. compiliant?"
    ::= { pdrEntry 7 }
                                                                      
pdrLogicalDrives                OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Drive letters for particular array."
    ::= { pdrEntry 8 }

                                                                      
pdrCapacity                     OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63)) 
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Physical drive size."
    ::= { pdrEntry 9 }

pdrTransferMode					OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Transfer mode."
    ::= { pdrEntry 10 }

pdrSerialNumber                 OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Drive's serial number."
    ::= { pdrEntry 11 }

pdrArrayName	                OBJECT-TYPE
    SYNTAX                      DisplayString (SIZE(0..63))
    ACCESS                      read-only
    STATUS                      mandatory
    DESCRIPTION                 "Array ID for this drive"
    ::= { pdrEntry 12 }

--------------------------------------------------------------------------------
--
-- MegaRAID IDE properties Information group.
--
-- This subtree contains information about the application properties.
--
--------------------------------------------------------------------------------

	proRebuildAtErrors 	            OBJECT-TYPE
	SYNTAX                      INTEGER {
						off (0),
						rebuild(1)
						}
	ACCESS                      read-write
	STATUS                      mandatory
	DESCRIPTION                 "Start Array rebuilding when error threshold for some drive reached."
	::= { RaidProperties 1 }


	proRebuildAtMismatches 	    OBJECT-TYPE
	SYNTAX                      INTEGER {
						off (0),
						rebuild(1)
						}
	ACCESS                      read-write
	STATUS                      mandatory
	DESCRIPTION                 "Make data on drives identical when mismatches occurs during Consistency check ."
	::= { RaidProperties 2 }

	
	proRebuildAtStartup 	    OBJECT-TYPE
	SYNTAX                      INTEGER {
						no (0),
						autorebuild(1)
						}
	ACCESS                      read-write
	STATUS                      mandatory
	DESCRIPTION                 "Start Rebuild utility to check for possible rebuild cases at operating system startup ."
	::= { RaidProperties 3 }

	proStopRebuildAtErrors 	    OBJECT-TYPE
	SYNTAX                      INTEGER {
						no (0),
						stop(1)
						}
	ACCESS                      read-write
	STATUS                      mandatory
	DESCRIPTION                 "Stop rebuilding/consistency checking when errors occurs."
	::= { RaidProperties 4 }


	proMarkDriveFail 	    OBJECT-TYPE
	SYNTAX                      INTEGER {
						no (0),
						fail(1)
						}
	ACCESS                      read-write
	STATUS                      mandatory
	DESCRIPTION                 "Mark drive 'Failed' when at error threshold."
	::= { RaidProperties 5 }

--------------------------------------------------------------------------------
--
-- MegaRAID IDE Trap Information group.
--
-- This subtree contains information about the MegaRAID IDE traps.
--
--------------------------------------------------------------------------------

trapDriveStatusType   OBJECT-TYPE
    			SYNTAX      INTEGER{
									other(1),
									onLine(0),
									failed(2),
									rebuilding(14),
									disconnected(256)
								}
    			ACCESS      not-accessible
    			STATUS      mandatory
    			DESCRIPTION "Rises trap when physical drive status was changed"
    			::= { RaidTrapInfo 1 }

trapDriveError  OBJECT-TYPE
    			SYNTAX      INTEGER
    			ACCESS      not-accessible
    			STATUS      mandatory
    			DESCRIPTION "New error occurs"
    			::= { RaidTrapInfo 2 }

trapSMARTError  OBJECT-TYPE
    			SYNTAX      INTEGER
    			ACCESS      not-accessible
    			STATUS      mandatory
    			DESCRIPTION "New SMART error occurs"
    			::= { RaidTrapInfo 3 }

trapRebuildCompletion 	OBJECT-TYPE
			SYNTAX      INTEGER{
    					    successfully(0),
    					    no(1)}
    			ACCESS      not-accessible
    			STATUS      mandatory
    			DESCRIPTION "Rebuild/Consistency check utility stopped"
    				::= { RaidTrapInfo 4 }

trapPhysicalDrive   	OBJECT-TYPE
    			SYNTAX      INTEGER{
			                    primaryMaster(0),
					    primarySlave(1),
					    secondaryMaster(2),
					    secondarySlave(3),
					    primaryMaster2(4),
					    primarySlave2(5),
					    secondaryMaster2(6),
					    secondarySlave2(7)
					}
			ACCESS      not-accessible
			STATUS      mandatory
			DESCRIPTION "Physical drive"
			::= { RaidTrapInfo 5 }

trapArray	   	OBJECT-TYPE
    			SYNTAX      INTEGER
    			ACCESS      not-accessible
    			STATUS      mandatory
    			DESCRIPTION "Array"
    			::= { RaidTrapInfo 6 }
    				
trapTime	   	OBJECT-TYPE
    			SYNTAX      INTEGER
    			ACCESS      not-accessible
    			STATUS      mandatory
    			DESCRIPTION "Trap time in seconds "
    			::= { RaidTrapInfo 7 }

--------------------------------------------------------------------------------
--
-- MegaRAID IDE Trap Information group.
--
-- This subtree contains information about the MegaRAID IDE traps.
--
--------------------------------------------------------------------------------

trRebuildStarted TRAP-TYPE
ENTERPRISE  IDE
VARIABLES
    {
    trapPhysicalDrive,
    trapTime
    }
DESCRIPTION "Rebuild was started"
--#TYPE         "Rebuild started"
--#SUMMARY      "Rebuild of physical drive %d was started"
--#ARGUMENTS    { 0 }
--#SEVERITY     INFORMATIONAL
--#TIMEINDEX    1
--#STATE        OPERATIONAL
::= 200

trRebuildStoped TRAP-TYPE
ENTERPRISE  IDE
VARIABLES
    {
    trapPhysicalDrive,
    trapRebuildCompletion,
    trapTime
    }
DESCRIPTION "Rebuild was finished"
--#TYPE         "Rebuild finished"
--#SUMMARY      "Rebuild of physical drive %d finised"
--#SUMMARY		"with result %d"
--#ARGUMENTS    { 0,1 }
--#SEVERITY     INFORMATIONAL
--#TIMEINDEX    2
--#STATE        OPERATIONAL
::= 201

trConsistencyStarted TRAP-TYPE
ENTERPRISE  IDE
VARIABLES
    {
    trapPhysicalDrive,
    trapTime
    }
DESCRIPTION "Consistency Check was started"
--#TYPE         "Consistency check started"
--#SUMMARY      "Consistency check of physical drive %d was started"
--#ARGUMENTS    { 0 }
--#SEVERITY     INFORMATIONAL
--#TIMEINDEX    1
--#STATE        OPERATIONAL
::= 202

trConsistencyStoped TRAP-TYPE
ENTERPRISE  IDE
VARIABLES
    {
    trapPhysicalDrive,
    trapRebuildCompletion,
    trapTime
    }
DESCRIPTION "Consistency check was finished"
--#TYPE         "Consistency check finished"
--#SUMMARY      "Consistency check of physical drive %d finised"
--#SUMMARY		"with result %d"
--#ARGUMENTS    { 0,1 }
--#SEVERITY     INFORMATIONAL
--#TIMEINDEX    2
--#STATE        OPERATIONAL
::= 203


trDriveStatusChanged TRAP-TYPE
ENTERPRISE  IDE
VARIABLES
    {
    trapPhysicalDrive,
    trapArray,
    trapDriveStatusType,
    trapTime
    }
DESCRIPTION "Drive status has been changed"
--#TYPE         "Status of the drive has been changed "
--#SUMMARY      "Status %d of the physical drive %d in array %d has been changed"
--#ARGUMENTS    { 0,1,2 }
--#SEVERITY     INFORMATIONAL
--#TIMEINDEX    3
--#STATE        OPERATIONAL
::= 204

trDriveNewError TRAP-TYPE
ENTERPRISE  IDE
VARIABLES
    {
    trapPhysicalDrive,
    trapDriveError,
    trapTime
    }
DESCRIPTION "Physical drive media error has been found"
--#TYPE         "New error "
--#SUMMARY      "Error %d has been found on physical drive %d"
--#ARGUMENTS    { 0,1 }
--#SEVERITY     INFORMATIONAL
--#TIMEINDEX    2
--#STATE        OPERATIONAL
::= 205

trDriveSmartError TRAP-TYPE
ENTERPRISE  IDE
VARIABLES
    {
    trapPhysicalDrive,
    trapDriveError,
    trapTime
    }
DESCRIPTION "S.M.A.R.T. found some errors"
--#TYPE         "New error "
--#SUMMARY      "S.M.A.R.T. found error %d on physical drive %d"
--#ARGUMENTS    { 0,1 }
--#SEVERITY     INFORMATIONAL
--#TIMEINDEX    2
--#STATE        OPERATIONAL
::= 206

END

