SNI-SERVER-CONTROL-MIB DEFINITIONS ::= BEGIN

-- Siemens Nixdorf ServerView MIB for systemboard and server controlling
--
-- (C) 1995-1998 by Siemens Nixdorf Informationssysteme AG
-- All rights reserved
--
-- $Revision: $
-- $Modtime: $
--
--

IMPORTS
	OBJECT-TYPE                            FROM RFC-1212
	mib-2                                  FROM RFC1213-MIB
	DisplayString                          FROM RFC1213-MIB
	Counter, Gauge, IpAddress, enterprises FROM RFC1155-SMI;

--
-- The Windows NT MIB compiler doesn't do IMPORTS.
-- So, include these definitions here. NT defines "DisplayString" as
-- OCTET STRING (SIZE(0..255)), in RFC1213 it has no explicit size.
--
-- DisplayString ::= OCTET  STRING
-- enterprises     OBJECT IDENTIFIER ::= { iso org(3) dod(6) internet(1) private(4) 1 }
--

-- Trap IDs for all ServerView MIBs:
-- Trap enterprise is "sniServerMgmt".

-- SNI Trap MIB:			000..399  (enterprise "sni"!!)
-- SNI Mylex MIB:			200..299
-- SNI ServerControl MIB:	600..699  (this MIB)
-- SNI ServerView MIB:		700..749
-- SNI Harddisk MIB:        750..800

-- SNI Server Management MIB nodes

	sni					OBJECT IDENTIFIER       ::= { enterprises    231 }

	sniProductMibs		OBJECT IDENTIFIER       ::= { sni              2 }
	sniExtensions		OBJECT IDENTIFIER       ::= { sniProductMibs  10 }
	sniServerMgmt		OBJECT IDENTIFIER		::= { sniExtensions    2 }
	sniInventory		OBJECT IDENTIFIER       ::= { sniServerMgmt    1 }
	sniCommon			OBJECT IDENTIFIER		::= { sniServerMgmt    2 }
	  sniBios			OBJECT IDENTIFIER		::= { sniCommon        1 }
	  sniEisa			OBJECT IDENTIFIER		::= { sniCommon        2 }
	  sniHd				OBJECT IDENTIFIER		::= { sniCommon        3 }
	  sniBus			OBJECT IDENTIFIER		::= { sniCommon        4 }
	  sniServerControl	OBJECT IDENTIFIER		::= { sniCommon        5 }
	sniPcSpecific		OBJECT IDENTIFIER		::= { sniServerMgmt    3 }
	sniScb				OBJECT IDENTIFIER		::= { sniServerMgmt    4 }
	sniOsSpecific		OBJECT IDENTIFIER		::= { sniServerMgmt    5 }
	  sniNetware		OBJECT IDENTIFIER		::= { sniOsSpecific    1 }
	  sniWinNt			OBJECT IDENTIFIER		::= { sniOsSpecific    2 }
	  sniOs2			OBJECT IDENTIFIER		::= { sniOsSpecific    3 }
	  sniUnix			OBJECT IDENTIFIER		::= { sniOsSpecific    4 }
	sniOemComponents	OBJECT IDENTIFIER		::= { sniServerMgmt    6 }
	  sniOemDpt			OBJECT IDENTIFIER		::= { sniOemComponents 1 }
	  sniOemMylex		OBJECT IDENTIFIER		::= { sniOemComponents 2 }
	    sniMlxDiskArray	OBJECT IDENTIFIER		::= { sniOemMylex      1 }
	sniSecurity			OBJECT IDENTIFIER		::= { sniServerMgmt    7 }
	  sniSmSecurity		OBJECT IDENTIFIER		::= { sniSecurity      1 }
	sniServerView		OBJECT IDENTIFIER       ::= { sniServerMgmt    8 }
	sniTrapMib			OBJECT IDENTIFIER       ::= { sniExtensions    5 }

  
-- ServerControl-MIB groups

	agentInfo			OBJECT IDENTIFIER		::= { sniServerControl 1  }
	environment			OBJECT IDENTIFIER		::= { sniServerControl 2  }
	errorHandling		OBJECT IDENTIFIER		::= { sniServerControl 3  }
	systemBoard			OBJECT IDENTIFIER		::= { sniServerControl 4  }
	pagerSetup			OBJECT IDENTIFIER		::= { sniServerControl 5  }
	standardBiosSetup	OBJECT IDENTIFIER		::= { sniServerControl 7  }
	serverBiosSetup		OBJECT IDENTIFIER		::= { sniServerControl 8  }
	powerOnOff			OBJECT IDENTIFIER		::= { sniServerControl 9  }
	systemControlInfo	OBJECT IDENTIFIER		::= { sniServerControl 10 }
	powerSupply			OBJECT IDENTIFIER		::= { sniServerControl 11 }
	uninterruptablePowerSupply OBJECT IDENTIFIER ::= { sniServerControl 12 }
	diagnostics			OBJECT IDENTIFIER		::= { sniServerControl 13 }
	trapInfo			OBJECT IDENTIFIER		::= { sniServerControl 20 }


-----------------------------------------------------------------------------------------------

-- GROUP: agentInfo
-- Implementation of this group is mandatory

-----------------------------------------------------------------------------------------------

agentId OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Agent identification string"
	::= { agentInfo 1 }

agentCompany OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Agent's company name"
	::= { agentInfo 2 }

agentVersionString OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Agent's version string <Major>.<Minor> (i.e. 1.05)"
	::= { agentInfo 3 }

agentBuild OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Compilation time and date of agent program"
	::= { agentInfo 4 }

agentVersionMajor OBJECT-TYPE
	SYNTAX	INTEGER(0..9)

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Agent's major version (numerical)"
	::= { agentInfo 5 }

agentVersionMinor OBJECT-TYPE
	SYNTAX	INTEGER(0..99)

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Agent's minor version (numerical)"
	::= { agentInfo 6 }

agentWriteAllowed OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		write-not-allowed(2),
		write-allowed(3)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Defines whether writable objects can be written (except shutdown/power-off
                     operations)"
	::= { agentInfo 7 }

agentShutdownAllowed OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		shutdown-not-allowed(2),
		shutdown-allowed(3)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Defines whether shutdown/power-off objects can be written
                     "
	::= { agentInfo 8 }


-----------------------------------------------------------------------------------------------

-- GROUP: environment
-- Implementation of this group is mandatory

-----------------------------------------------------------------------------------------------

temperatureSensorsTable OBJECT-TYPE
	SYNTAX	SEQUENCE OF TemperatureSensors
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
"Table with data of all configured temperature sensors"
	::= { environment 1 }

temperatureSensors OBJECT-TYPE
	SYNTAX	TemperatureSensors
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
" "
	INDEX	{ tempCabinetId, tempSensorNumber }
	::= { temperatureSensorsTable 1 }

TemperatureSensors ::= 
	SEQUENCE {
		tempCabinetId
			INTEGER,
		tempSensorNumber
			INTEGER,
		tempSensorStatus
			INTEGER,
		tempSensorPurpose
			INTEGER,
		tempLowerWarningLevel
			INTEGER,
		tempUpperWarningLevel
			INTEGER,
		tempLowerCriticalLevel
			INTEGER,
		tempUpperCriticalLevel
			INTEGER,
		tempLowerDamageLevel
			INTEGER,
		tempUpperDamageLevel
			INTEGER,
		tempCurrentValue
			Gauge,
		tempCriticalReaction
			INTEGER
	}

tempCabinetId OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"ID of the cabinet the temperature sensor is in (index, 0 based)"
	::= { temperatureSensors 1 }

tempSensorNumber OBJECT-TYPE
	SYNTAX	INTEGER(0..255)

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Number of the sensor in this cabinet (index, 0 based)"
	::= { temperatureSensors 2 }

tempSensorStatus OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		sensor-disabled(2),
		ok(3),
		sensor-fail(4),
		warning-temp-warm(5),
		warning-temp-cold(6),
		critical-temp-warm(7),
		critical-temp-cold(8),
		damage-temp-warm(9),
		damage-temp-cold(10),
		not-available(99)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Status of this temperature sensor (OK, critical or shutdown
 temperature reached...). The cold and the damage temperature status levels
 are no longer supported (values 6, 8, 9, 10).
 Status not-available(99) can be a sensor of a cpu that is not installed.
 Status sensor-disabled(2) is currently not used."
	::= { temperatureSensors 3 }

tempSensorPurpose OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		disable(2),				-- obsolete, no no longer use
		cpu(3),
		ambient(4),
		housing(5),
		not-available(6),		-- obsolete, no no longer use
		io-board(7),
		power-backplane(8)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "Purpose of this temperature sensor (CPU, ambient, housing...).
				 Purposes disable(2) and not-available(6) are no longer used."
	::= { temperatureSensors 4 }

tempLowerWarningLevel OBJECT-TYPE
	SYNTAX	INTEGER(0..127)

	ACCESS	read-only
	STATUS	obsolete
	DESCRIPTION "Object made obsolete - no longer supported"
	::= { temperatureSensors 5 }

tempUpperWarningLevel OBJECT-TYPE
	SYNTAX	INTEGER(0..127)

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"System sends a temperature warning when temperature rises ABOVE
                        this level (degrees Celsius)"
	::= { temperatureSensors 6 }

tempLowerCriticalLevel OBJECT-TYPE
	SYNTAX	INTEGER(0..127)

	ACCESS	read-only
	STATUS	obsolete
	DESCRIPTION "Object made obsolete - no longer supported"
	::= { temperatureSensors 7 }

tempUpperCriticalLevel OBJECT-TYPE
	SYNTAX	INTEGER(0..127)

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"System becomes critical when temperature rises ABOVE this level (degrees Celsius).
 A system shutdown is performed if object tempCriticalReaction is set to shutdown-and-poweroff."
	::= { temperatureSensors 8 }

tempLowerDamageLevel OBJECT-TYPE
	SYNTAX	INTEGER(0..127)

	ACCESS	read-only
	STATUS	obsolete
	DESCRIPTION "Object made obsolete - no longer supported"
	::= { temperatureSensors 9 }

tempUpperDamageLevel OBJECT-TYPE
	SYNTAX	INTEGER(0..127)

	ACCESS	read-only
	STATUS	obsolete
	DESCRIPTION "Object made obsolete - no longer supported"
	::= { temperatureSensors 10 }

tempCurrentValue OBJECT-TYPE
	SYNTAX	Gauge
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Current temperature value (degrees Celsius; -1: unknown temperature,
                        problem with sensor, see tempSensorStatus) "
	::= { temperatureSensors 11 }

tempCriticalReaction OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		continue(2),
		shutdown-and-poweroff(3)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Reaction when a temperature gets critical (shutdown and power-off, continue...).
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { temperatureSensors 12 }

-----------------------------------------------------------------------------------------------


fansTable OBJECT-TYPE
	SYNTAX	SEQUENCE OF Fans
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
"Table with data of all configured cooling devices (fans)"
	::= { environment 2 }

fans OBJECT-TYPE
	SYNTAX	Fans
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
" "
	INDEX	{ fanCabinetId, fanNumber }
	::= { fansTable 1 }

Fans ::= 
	SEQUENCE {
		fanCabinetId
			INTEGER,
		fanNumber
			INTEGER,
		fanStatus
			INTEGER,
		fanPurpose
			INTEGER,
		fanPositionX
			INTEGER,
		fanPositionY
			INTEGER,
		fanPositionZ
			INTEGER,
		fanCurrentSpeed
			Gauge,
		fanNominalMaximumSpeed
			INTEGER,
		fanCurrentMaximumSpeed
			Gauge,
		fanMaximumSpeedCriticalLevel
			INTEGER,
		fanMinimumSpeed
			INTEGER,
		fanFailReaction
			INTEGER,
		fanFailShutdownDelay
			INTEGER
	}

fanCabinetId OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"ID of the cabinet the cooling device (fan) is in (index, 0 based)"
	::= { fans 1 }

fanNumber OBJECT-TYPE
	SYNTAX	INTEGER(0..255)

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Number of the fan in this cabinet (index, 0 based)"
	::= { fans 2 }

fanStatus OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		disabled(2),
		ok(3),
		fail(4),
		prefailure-predicted(5),
		redundant-fan-failed(6),
		not-manageable(7),
		not-present(8)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Status of this fan (OK, failed...).
 Status disabled(2) is no longer used.
 Status prefailure-predicted(5) means the fan will fail in near future.
 Status redundant-fan-failed(6) means a redundant fan has failed, the system
     is not yet critical.
 Status not-manageable(7) is a fan that is available but has no management facilities.
 Status not-present(8) can be a hot-plug fan that is currently removed."
	::= { fans 3 }

fanPurpose OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		disable(2),
		cpu-onchip(3),
		component(4),
		housing(5),
		power-supply(6),
		not-available(7)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Purpose of this fan (housing, component, CPU on-chip, power supply...).
 Purpose disabled(2) is currently not used."
	::= { fans 4 }

fanPositionX OBJECT-TYPE
	SYNTAX	INTEGER(0..100)

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Position of the fan (X coordinate, left bottom front corner) in percent,
                        relative to the left, bottom and front corner of 
                        the cabinet (-1 = unknown)"
	::= { fans 5 }

fanPositionY OBJECT-TYPE
	SYNTAX	INTEGER(0..100)

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Position of the fan (Y coordinate, left bottom front corner) in percent,
                        relative to the left, bottom and front corner of 
                        the cabinet (-1 = unknown)"
	::= { fans 6 }

fanPositionZ OBJECT-TYPE
	SYNTAX	INTEGER(0..100)

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Position of the fan (Z coordinate, left bottom front corner) in percent,
                        relative to the left, bottom and front corner of 
                        the cabinet (-1 = unknown)"
	::= { fans 7 }

fanCurrentSpeed OBJECT-TYPE
	SYNTAX	Gauge
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Current speed of the fan (in revolutions per minute, -1 = unknown)"
	::= { fans 8 }

fanNominalMaximumSpeed OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Nominal speed of the fan (in revolutions per minute)
                        on maximum power; the speed is measured the first time
                        the agent is installed and than compared daily to the
                        current speed on maximum power to detect a fan
                        prefailure (-1 = unknown)."
	::= { fans 9 }

fanCurrentMaximumSpeed OBJECT-TYPE
	SYNTAX	Gauge
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Current speed of the fan (in revolutions per minute) on maximum power (-1 = unknown)."
	::= { fans 10 }

fanMaximumSpeedCriticalLevel OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	obsolete
	DESCRIPTION "Obsolete - no longer supported."
	::= { fans 11 }

fanMinimumSpeed OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	obsolete
	DESCRIPTION "Obsolete - no longer supported."
	::= { fans 12 }

fanFailReaction OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		continue(2),
		shutdown-and-poweroff(3)
	}
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Reaction when a fan has failed (shutdown and power-off, continue...).
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { fans 14 }

fanFailShutdownDelay OBJECT-TYPE
	SYNTAX	INTEGER(0..300)
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Delay time (in seconds) when shutdown should commit on fan fail
                        (if shutdown-and-off is configured, 
                        0 = immediately, -1 = unknown).
 The value unknown(-1) cannot be set, a SET will deliver 'badValue'."
	::= { fans 15 }

fanDailyTestTime OBJECT-TYPE
	SYNTAX	INTEGER(0..1439)
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Daily time when to automatically test fan speeds (in minutes since
 midnight; -1 = unknown, automatic fan test not supported).
 The value unknown(-1) cannot be set, a SET will deliver 'badValue'."
	::= { environment 3 }

fanStartTest OBJECT-TYPE
	SYNTAX	INTEGER{
		start-test(1)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Start test of all fans to get the speed at maximum power
 (this test is normally started automatically once a day).
 Reading this object just returns the value 0."
	::= { environment 4 }


-----------------------------------------------------------------------------------------------

-- GROUP: errorHandling
-- Implementation of this group is mandatory

-----------------------------------------------------------------------------------------------

eventLogTable OBJECT-TYPE
	SYNTAX	SEQUENCE OF EventLog
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
"Table with event log entries (can also contain critical errors when 
                     an ErrorLog for critical errors is not available)"
	::= { errorHandling 1 }

eventLog OBJECT-TYPE
	SYNTAX	EventLog
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
" "
	INDEX	{ eventLogEntryNumber }
	::= { eventLogTable 1 }

EventLog ::= 
	SEQUENCE {
		eventLogEntryNumber
			INTEGER,
		eventLogMessageData
			OCTET STRING
	}

eventLogEntryNumber OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Entry number in eventLogTable (index, 0 based)"
	::= { eventLog 1 }

eventLogMessageData OBJECT-TYPE
	SYNTAX	OCTET STRING
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Message data of this event log entry. The messages encoded as binary data with
 following format: 
 +-------------------+------------+-------------------+-------------------+-------------------+
 |   Message time    | Error code |   Cabinet number  |     Object Id     |   Add. parameter  |
 |      (DWORD)      |   (WORD)   |      (DWORD)      |      (DWORD)      |      (DWORD)      |
 +-------------------+------------+-------------------+-------------------+-------------------+

 Message time:   Time and date when this error occured (seconds since 1/1/1970, 0:00 AM)
 Error code:     Error message number, upper 2 bits are severity: 
                 00 = Informational, 01 = minor, 10 = major, 11 = critical
 Cabinet number: Number of the cabinet (server, storage extension) this error occured
 Object ID:      Object number that created the error (e.g. Fan 2 = object ID 2)
 Add. parameter: Additional parameter specifying the error location (dependig on the error code)
 
 The log messages can be decoded by using the message file ERRMSG.INI.
 Each message data entry can contain one or more such message entries!
 "
	::= { eventLog 2 }

eventLogMaxEntries OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Number of EventLog entries (can be used to directly get all table
 entries with one varbind list)"
	::= { errorHandling 2 }

errorLogTable OBJECT-TYPE
	SYNTAX	SEQUENCE OF ErrorLog
	ACCESS	not-accessible
	STATUS	optional
	DESCRIPTION
"Table with critial error log entries (can be missing on
 some hardware platforms)"
	::= { errorHandling 3 }

errorLog OBJECT-TYPE
	SYNTAX	ErrorLog
	ACCESS	not-accessible
	STATUS	optional
	DESCRIPTION ""
	INDEX	{ errorLogEntryNumber }
	::= { errorLogTable 1 }

ErrorLog ::= 
	SEQUENCE {
		errorLogEntryNumber
			INTEGER,
		errorLogMessageData
			OCTET STRING
	}

errorLogEntryNumber OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Entry number in critical errorLogTable (index, 0 based)"
	::= { errorLog 1 }

errorLogMessageData OBJECT-TYPE
	SYNTAX	OCTET STRING
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Message data of this error log entry. The messages encoded as binary data with
 following format: 
 +-------------------+------------+-------------------+-------------------+-------------------+
 |   Message time    | Error code |   Cabinet number  |     Object Id     |   Add. parameter  |
 |      (DWORD)      |   (WORD)   |      (DWORD)      |      (DWORD)      |      (DWORD)      |
 +-------------------+------------+-------------------+-------------------+-------------------+

 Message time:   Time and date when this error occured (seconds since 1/1/1970, 0:00 AM)
 Error code:     Error message number, upper 2 bits are severity: 
                 00 = Informational, 01 = minor, 10 = major, 11 = critical
 Cabinet number: Number of the cabinet (server, storage extension) this error occured
 Object ID:      Object number that created the error (e.g. Fan 2 = object ID 2)
 Add. parameter: Additional parameter specifying the error location (dependig on the error code)
 
 The log messages can be decoded by using the message file ERRMSG.INI.
 Each message data entry can contain one or more such message entries!
 "
	::= { errorLog 2 }

errorLogMaxEntries OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Number of ErrorLog entries (can be used to directly get all table
                     entries with one varbind list)"
	::= { errorHandling 4 }

-----------------------------------------------------------------------------------------------


hardwareWatchdogStatus OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		disable(2),
		enable(3),
		not-available(4)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Status of the hardware watchdog (periodically restarted
 by the server management BIOS). 
 The hardware watchdog is only supported on SMI based management hardware,
 not for micro controller hardware."
	::= { errorHandling 5 }

hardwareWatchdogTime OBJECT-TYPE
	SYNTAX	INTEGER(0..60)

	ACCESS	read-only
	STATUS	obsolete
	DESCRIPTION
"Timeout time of the hardware watchdog (in seconds, -1 = unknown)"
	::= { errorHandling 6 }

hardwareWatchdogEnable OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		disable(2),
		enable(3)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Enable/disable the hardware watchdog.
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { errorHandling 7 }

-----------------------------------------------------------------------------------------------


softwareWatchdogStatus OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		disable(2),
		enable(3),
		not-available(4)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Status of the software watchdog (periodically restarted
                     by the server management agent)"
	::= { errorHandling 8 }

softwareWatchdogTime OBJECT-TYPE
	SYNTAX	INTEGER(1..20)

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Timeout time of the software watchdog (in minutes, -1 = unknown).
 The value unknown(-1) cannot be set, a SET will deliver 'badValue'."
	::= { errorHandling 9 }

softwareWatchdogEnable OBJECT-TYPE
	SYNTAX	INTEGER{
		disable(2),
		enable(3)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Enable/disable the software watchdog"
	::= { errorHandling 10 }

softwareWatchdogAction OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		continue(2),
		shutdown-and-reboot(3)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Action when the software watchdog timeout occurs (shutdown and reboot, continue...).
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { errorHandling 11 }

-----------------------------------------------------------------------------------------------

-- GROUP: systemBoard
-- Implementation of this group is mandatory

-----------------------------------------------------------------------------------------------

cpuTable OBJECT-TYPE
	SYNTAX	SEQUENCE OF Cpu
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
"Table with CPU information"
	::= { systemBoard 1 }

cpu OBJECT-TYPE
	SYNTAX	Cpu
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
" "
	INDEX	{ cpuTableIndex }
	::= { cpuTable 1 }

Cpu ::= 
	SEQUENCE {
		cpuTableIndex
			INTEGER,
		cpuType
			INTEGER,
		cpuFrequency
			INTEGER,
		cpuStep
			INTEGER,
		cpuStatus
			INTEGER,
		cpuModel
			INTEGER,
		cpuName
			DisplayString,
		cpuSocketDesignation
			DisplayString,
		cpuManufacturer
			DisplayString
	}

cpuTableIndex OBJECT-TYPE
	SYNTAX	INTEGER(0..31)

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Number of the CPU in the CpuTable (index, 0 based)"
	::= { cpu 1 }

cpuType OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		i386(3),
		i486(4),
		pentium(5),
		pentium-pro(6),
        r2000(102),
        r3000(103),
        r4000(104),
        r5000(105),
        r10000(110)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Type of the CPU (486, Pentium, R2000...)"
	::= { cpu 2 }

cpuFrequency OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Frequency of the CPU (in MHz, -1 = unknown)"
	::= { cpu 3 }

cpuStep OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Step (version) of the CPU (-1 = unknown)"
	::= { cpu 4 }

cpuStatus OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		disabled(2),
		ok(3),
		not-present(4),
		error(5),
		fail(6)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Status of a CPU (OK, fail, disabled...)"
	::= { cpu 6 }

cpuModel OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Model of the CPU (-1 = unknown)"
	::= { cpu 7 }

cpuName OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Name of the CPU (e.g. 'Pentium', 'Pentium Pro' ...) as text string"
	::= { cpu 8 }

cpuSocketDesignation OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "String containing the socket designation of a CPU.
				 This is the same text that is written on the system board."
	::= { cpu 9 }

cpuManufacturer OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "String containing the CPU manufacturer."
	::= { cpu 10 }


-----------------------------------------------------------------------------------------------

secondLevelCacheSize OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Size of the second level cache (in kBytes, 0 if not available or disabled, -1 = unknown)"
	::= { systemBoard 2 }

secondLevelCacheWritePolicy OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		write-back(2),
		write-through(3)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Write policy of the second level cache (write-back, write-through)"
	::= { systemBoard 3 }

-----------------------------------------------------------------------------------------------

physicalMemorySize OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Size of the whole physical memory on the system board
                     (in MBytes, -1 = unknown)"
	::= { systemBoard 4 }

baseMemorySize OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Size of the base memory (below 1 MB) on the system
                     board (in kBytes, -1 = unknown)"
	::= { systemBoard 5 }

extendedMemorySize OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Size of the extended memory (above 1 MB) on the system
                     board (in MBytes, -1 = unknown)"
	::= { systemBoard 6 }

-----------------------------------------------------------------------------------------------

utilizationMethod OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		take-snapshot-now(2),
		get-current-values(3)
	}

	ACCESS	read-write
	STATUS	optional
	DESCRIPTION
"Method to get utilization values:
                        take-snapshot-now: get all values and store them to
                            have all values at one certain time (set this object
                            each time you want to get new values)
                        get-current-values (default): get the values directly
                            without buffering.
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { systemBoard 7 }

utilizationPciLoad OBJECT-TYPE
	SYNTAX	Gauge
	ACCESS	read-only
	STATUS	optional
	DESCRIPTION "Load on the PCI bus (in percent; -1 if unknown); 
				 do no longer use this object for new implementations;
				 object replaced by pciUtilizationTable."
	::= { systemBoard 8 }

utilizationEisaLoad OBJECT-TYPE
	SYNTAX	Gauge
	ACCESS	read-only
	STATUS	optional
	DESCRIPTION "Load on the EISA bus (in percent; -1 if unknown)"
	::= { systemBoard 9 }

-----------------------------------------------------------------------------------------------

memoryModulesTable OBJECT-TYPE
	SYNTAX	SEQUENCE OF MemoryModules
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
"Table with memory module descripitions"
	::= { systemBoard 10 }

memoryModules OBJECT-TYPE
	SYNTAX	MemoryModules
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION ""
	INDEX	{ memModuleNumber }
	::= { memoryModulesTable 1 }

MemoryModules ::= 
	SEQUENCE {
		memModuleNumber
			INTEGER,
		memModuleBank
			INTEGER,
		memModuleStatus
			INTEGER,
		memModuleErrors
			Counter,
		memModuleStartAddress
			INTEGER,
		memModuleSize
			INTEGER,
		memModuleType
			INTEGER,
		memModuleType2
			INTEGER,
		memModuleSocketDesignation
			INTEGER
	}

memModuleNumber OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Module number (index, 0 based)"
	::= { memoryModules 1 }

memModuleBank OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Bank number the module belongs to (-1 = unknown)."
	::= { memoryModules 2 }

memModuleStatus OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		disabled(2),
		ok(3),
		not-available(4),
		fail(5)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Status of the memory module socket (OK, fail, disabled...).
 Status disabled(2) when module is disabled by BIOS setup.
 Status not-available(4) for empty sockets."
	::= { memoryModules 3 }

memModuleErrors OBJECT-TYPE
	SYNTAX	Counter
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Number of (parity) errors in this module since last error count reset
                        (-1 = unknown)"
	::= { memoryModules 4 }

memModuleStartAddress OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Start address of the bank this memory belongs to (-1 = unknown)"
	::= { memoryModules 5 }

memModuleSize OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Size of this memory module (in bytes, -1 = unknown)"
	::= { memoryModules 6 }

memModuleType OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		other(2),
		no-parity(3),
		parity(4),
		parity-or-edc(5),
		edc(6),
		edo(7),
		synchrone-edo(8)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "Type of memory module (Parity, NoParity, ECD, EDO...).
	             Will be made obsolete in next agent releases!!!
				 Use memModuleType2 for newer implementations!"
	::= { memoryModules 7 }

memModuleType2 OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "Information about the type of a memory module (Parity, ECC, EDO, SIMM, DIMM...).
                     The type is a combination of one or more bits.
				 Bit field: Bit 0 - Other
							Bit 1 - Unknown
							Bit 2 - Standard
							Bit 3 - Fast page mode
							Bit 4 - EDO
							Bit 5 - Parity
							Bit 6 - ECC
							Bit 7 - SIMM
							Bit 8 - DIMM   
				 Unused bits are set to zero."
	::= { memoryModules 8 }

memModuleSocketDesignation OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "String containing the socket designation of a memory module.
				 This is the same text that is written on the system board."
	::= { memoryModules 9 }

-----------------------------------------------------------------------------------------------

memoryErrorCounterReset OBJECT-TYPE
	SYNTAX	INTEGER{
		reset(1)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Reset the memory module error counters (and set a new start time),
 reading this object just returns the value 0."
	::= { systemBoard 11 }

memoryErrorCounterStartTime OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Time when memory module error counters were started
 (seconds since 1/1/1970, -1 = unknown)"
	::= { systemBoard 12 }


-----------------------------------------------------------------------------------------------

pciUtilizationTable OBJECT-TYPE
	SYNTAX	SEQUENCE OF PciUtilization
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION "Table with PCI bus utilization data; independent of utilizationMethod object,
				 update method for this table is always get-current-values. The number of entries 
				 in this table can be read from MIB object sniScNumberPciBusses."
	::= { systemBoard 13 }

pciUtilization OBJECT-TYPE
	SYNTAX	PciUtilization
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION ""
	INDEX	{ pciUtilBusNumber }
	::= { pciUtilizationTable 1 }

PciUtilization ::= 
	SEQUENCE {
		pciUtilBusNumber
			INTEGER,
		pciUtilBusLoad
			Gauge,
		pciUtilBusTransferRate
			Gauge,
		pciUtilBusEfficiency
			Gauge
	}

pciUtilBusNumber OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "PCI bus number (index, 1..n)"
	::= { pciUtilization 1 }

pciUtilBusLoad OBJECT-TYPE
	SYNTAX	Gauge
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "PCI bus load (in percent, 0xffffffff if unknown)"
	::= { pciUtilization 2 }

pciUtilBusTransferRate OBJECT-TYPE
	SYNTAX	Gauge
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "PCI bus data transfer rate (in MBytes/second, 0xffffffff if unknown)"
	::= { pciUtilization 3 }

pciUtilBusEfficiency OBJECT-TYPE
	SYNTAX	Gauge
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "PCI bus efficiency, ratio of data transfer rate through bus load (in percent);
	             avarage value over all devices on this PCI bus; optimum value is 100 percent
				 (0xffffffff if unknown)."
	::= { pciUtilization 4 }


-----------------------------------------------------------------------------------------------

sniScBiosVersionString OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "String containing complete BIOS version, e.g. V4.05 R1.03.887"
	::= { systemBoard 14 }

sniScNumberCpuSockets OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "Number of CPU sockets available on the system board. This is not the number
	             of currently installed CPUs! This object also describes the number of entries
				 in the 'cpuTable' (-1 = unknown)."
	::= { systemBoard 15 }

sniScNumberMemoryModules OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "Number of memory module sockets available on the system board (or memory extension
				 board). This is not the number of currently installed memory modules! This object 
				 also describes the number of entries in the 'memoryModulesTable' (-1 = unknown)."
	::= { systemBoard 16 }

sniScNumberPciBusses OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "Number of PCI busses available in the system (-1 = unknown). "
	::= { systemBoard 17 }


-----------------------------------------------------------------------------------------------

-- GROUP: pagerSetup
-- Implementation of this group is mandatory

-----------------------------------------------------------------------------------------------

pagerUserTable OBJECT-TYPE
	SYNTAX	SEQUENCE OF PagerUser
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
"Table with info of the users that should be paged"
	::= { pagerSetup 1 }

pagerUser OBJECT-TYPE
	SYNTAX	PagerUser
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
" "
	INDEX	{ pagerUserIndex }
	::= { pagerUserTable 1 }

PagerUser ::= 
	SEQUENCE {
		pagerUserIndex
			INTEGER,
		pagerType
			INTEGER,
		pagerUserName
			DisplayString,
		pagerUserDescription
			DisplayString,
		pagerActive
			INTEGER,
		pagerNumber
			DisplayString,
		pagerServiceProviderNumber
			DisplayString,
		pagerActivityPrompt
			DisplayString,
		pagerTimeModel
			DisplayString
	}

pagerUserIndex OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Index into pager user table (0 based)"
	::= { pagerUser 1 }

pagerType OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		not-available(2),
		signal(3),
		numeric(4),
		alfa-numeric(5)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Type of the installed pager (signal, numeric, alfa-numeric).
 The value unknown(1) and not-available(2) cannot be set, 
 a SET will deliver 'badValue'."
	::= { pagerUser 2 }

pagerUserName OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Name of the pager user"
	::= { pagerUser 3 }

pagerUserDescription OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Description (function, optional) of the pager user"
	::= { pagerUser 4 }

pagerActive OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		not-active(2),
		active(3)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Describes whether this pager is active and should be called.
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { pagerUser 5 }

pagerNumber OBJECT-TYPE
	SYNTAX	DisplayString(0..12)
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"User ID number of the user's pager"
	::= { pagerUser 6 }

pagerServiceProviderNumber OBJECT-TYPE
	SYNTAX	DisplayString(0..16)
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Telephone dial number of the pager service provider (can also contain
                        additional modem dial characters)"
	::= { pagerUser 7 }

pagerActivityPrompt OBJECT-TYPE
	SYNTAX	DisplayString(0..5)
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Prompt string that should be received before pager number can
 be sent"
	::= { pagerUser 8 }

pagerTimeModel OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Encoded string containing a pager time model (when should which user
 be paged); this value is currently not used."
	::= { pagerUser 9 }

pagerInitString OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Init string that will be sent to the pager modem
                     before the dialing begins"
	::= { pagerSetup 2 }

pagerServerNumber OBJECT-TYPE
	SYNTAX	INTEGER(0..65535)
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Number of this server. It is sent together with the
                     error number as a message to the 
                     user's pager (-1 = unknown).
 The value unknown(-1) cannot be set, a SET will deliver 'badValue'."
	::= { pagerSetup 3 }

pagerComPort OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		com1(2),
		com2(3),
		com3(4),
		com4(5)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"COM port number (1...4) the pager modem is connected to.
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { pagerSetup 4 }

pagerComPortBaudRate OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Baud rate of the pager COM port. Following values are supported:
                     1200, 2400, 4800, 9600, 19200 
                     (-1 = unknown).
 The value unknown(-1) cannot be set, a SET will deliver 'badValue'."
	::= { pagerSetup 5 }

pagerComPortParity OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		even(2),
		odd(3),
		none(4),
		mark(5),
		space(6)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Parity check configuration for the pager COM port.
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { pagerSetup 6 }

pagerComPortNumBits OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Number of bits per byte on the pager COM port (7, 8, -1 = unknown).
 The value unknown(-1) cannot be set, a SET will deliver 'badValue'."
	::= { pagerSetup 7 }

pagerComPortFlowControl OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		none(2),
		hardware(3),
		xon-xoff(4)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Flow control method of the pager COM port (Hardware, XON/XOFF...).
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { pagerSetup 8 }

pagerModemName OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Optional modem name or type; can be used just as info
 to be displayed."
	::= { pagerSetup 9 }


-----------------------------------------------------------------------------------------------

-- GROUP: standardBiosSetup
-- Implementation of this group is mandatory

-----------------------------------------------------------------------------------------------

stdSetupPasswordEnable OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		disable(2),
		enable(3)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Tells whether a password is configured for the
 standard BIOS (read-only)"
	::= { standardBiosSetup 1 }

stdSetupBootSource OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		standard(2),
		floppy-disabled(3),
		diag-system(4)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Source medium to boot from:
                        standard: boot from floppy or hard disk
                        floppy-disabled: only boot from hard disk
                        diag-system: boot from alternate diagnostic system
                            (only for SCSI systems, boot diagnostic system from 
						     alternate IDE disk).
 The value unknown(1) cannot be set, a SET will deliver 'badValue'.
 The value floppy-disabled(3) is currently not supported."
	::= { standardBiosSetup 2 }

stdSetupPostErrorHalt OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		halt-on-any-error(2),
		no-halt-on-any-error(3),
		other(9)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Describes what to do when a POST error has occured (halt on any 
                     error, no halt on any error...).
 The values unknown(1) and other(9) cannot be set, a SET will deliver 'badValue'."
	::= { standardBiosSetup 3 }

stdSetupSerialInterface1 OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		disable(2),
		com-1(3),
		com-2(4),
		com-3(5),
		com-4(6),
		auto(9)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"The COM port which the on-board serial interface 1 is mapped to (1...4).
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { standardBiosSetup 4 }

stdSetupSerialInterface2 OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		disable(2),
		com-1(3),
		com-2(4),
		com-3(5),
		com-4(6),
		auto(9)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"The COM port which the on-board serial interface 2 is mapped to (1...4).
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { standardBiosSetup 5 }

stdSetupParallelInterface OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		disable(2),
		lpt-1(3),
		lpt-2(4),
		lpt-3(5),
		auto(9)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"The LPT port which the on-board parallel interface is mapped to (1...3).
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { standardBiosSetup 6 }

stdSetupFloppyController OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		disable(2),
		enable(3)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Describes whether the floppy controller is enabled.
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { standardBiosSetup 7 }

stdSetupHarddiskController OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		disable(2),
		primary(3),
        primary-and-secondary(4)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Describes whether the IDE harddisk controller is enabled.
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."

	::= { standardBiosSetup 8 }

stdSetupMouseController OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		disable(2),
		enable(3)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Describes whether the mouse port controller is enabled.
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."

	::= { standardBiosSetup 9 }


-----------------------------------------------------------------------------------------------

-- GROUP: serverBiosSetup
-- Implementation of this group is mandatory

-----------------------------------------------------------------------------------------------

srvSetupCabinetId OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Cabinet ID number of this server (-1 = unknown).
 The value unknown(-1) cannot be set, a SET will deliver 'badValue'.
 Use this number as cabinetId for all tables containing a cabinet index.
 If unknown is delivered, 0 should be used as cabinet index."
	::= { serverBiosSetup 1 }

srvSetupServerRackSlot OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	optional
	DESCRIPTION
"Slot number (in a rack) this server is in (only for rack servers; -1 = unknown).
 The value unknown(-1) cannot be set, a SET will deliver 'badValue'.
 This object is currently not used."
	::= { serverBiosSetup 2 }

srvSetupServerGroupStart OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	obsolete
	DESCRIPTION 
		"deleted"
	::= { serverBiosSetup 3 }

srvSetupServerGroupEnd OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	obsolete
	DESCRIPTION 
		"deleted"
	::= { serverBiosSetup 4 }

srvSetupServerGroupMembers OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	obsolete
	DESCRIPTION 
		"deleted"
	::= { serverBiosSetup 5 }

srvSetupSeGroupStart OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	obsolete
	DESCRIPTION 
		"deleted"
	::= { serverBiosSetup 6 }

srvSetupSeGroupEnd OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	obsolete
	DESCRIPTION 
		"deleted"
	::= { serverBiosSetup 7 }

srvSetupSeGroupMembers OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	obsolete
	DESCRIPTION 
		"deleted"
	::= { serverBiosSetup 8 }

srvSetupRemoteOnEnable OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		disable(2),
		enable(3),
		not-available(4)
	}
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Describes whether remote-on via RI modem line is enabled or not available.
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { serverBiosSetup 9 }

srvSetupMaxRestartRetries OBJECT-TYPE
	SYNTAX	INTEGER(0..7)
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Maximum number of retries to reboot/restart the server when a 
                     shutdown (and power-off) had occured. After
                     this number of retries the action defined in 
                     'srvSetupRebootFailAction' will be executed
                     (-1 = unknown, no retries).
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { serverBiosSetup 10 }

srvSetupRebootFailAction OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		switch-off(2),
		boot-diag-system(3)
	}
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Describes the action on a specified number of failed reboot retries
 (MaxRestartRetries=0, switch-off, boot alternate diagnostic system...).
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { serverBiosSetup 11 }

srvSetupRebootFailPager OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		pager-disabled(2),
		page-on-every-error-reboot(3)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Describes whether the pager should be activated when reboot 
 after error shutdown had occured.
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { serverBiosSetup 12 }

srvSetupSeGroupNumber OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION  "Group number for storage extension communication bus.
                      Legal values are 0..9, -1 = unknown.
                      The value unknown(-1) cannot be set, a SET will deliver 'badValue'."
	::= { serverBiosSetup 13 }


srvSetupRestartRetriesDefault OBJECT-TYPE
	SYNTAX	INTEGER(0..7)
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION  "Default number of retries to reboot/restart the server when a 
                  shutdown (and power-off) had occured. This value will be copied
				  to object srvSetupMaxRestartRetries by the user to reset the counter 
				  to its original (default) value (-1 = unknown, no retries).
				  The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { serverBiosSetup 14 }

-----------------------------------------------------------------------------------------------

-- GROUP: powerOnOff
-- Implementation of this group is mandatory

-----------------------------------------------------------------------------------------------

onOffTimesTable OBJECT-TYPE
	SYNTAX	SEQUENCE OF OnOffTimes
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
"Table with system power on/off times; power-on will
                     be performed by the real-time clock, power-off (with
                     shutdown) by the operating system (system control
                     service); table must be enabled before using"
	::= { powerOnOff 1 }

onOffTimes OBJECT-TYPE
	SYNTAX	OnOffTimes
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
" "
	INDEX	{ onOffWeekday }
	::= { onOffTimesTable 1 }

OnOffTimes ::= 
	SEQUENCE {
		onOffWeekday
			INTEGER,
		onTime
			INTEGER,
		offTime
			INTEGER
	}

onOffWeekday OBJECT-TYPE
	SYNTAX	INTEGER(1..7)

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Day of the week the times should act upon (index, 1 based);
 1 = Sunday, 2 = Monday..."
	::= { onOffTimes 1 }

onTime OBJECT-TYPE
	SYNTAX	INTEGER

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Time the system should be switched on (by the real-time clock; 
 in minutes since midnight; -1 = disabled, no on time).
 Only values -1 and 0..1439 are allowed."
	::= { onOffTimes 2 }

offTime OBJECT-TYPE
	SYNTAX	INTEGER

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Time the system should be switched off (by the operating system; 
 in minutes since midnight; -1 = disabled, no off time).
 Only values -1 and 0..1439 are allowed."
	::= { onOffTimes 3 }

-----------------------------------------------------------------------------------------------


shutdownDelayTime OBJECT-TYPE
	SYNTAX	INTEGER(0..120)

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"The delay time (in minutes) the agent should wait before executing
                     a shutdown (with doShutdown); 
                     0  = default = shutdown immediately;
                     -1 = unknown.
 The value unknown(-1) cannot be set, a SET will deliver 'badValue'."
	::= { powerOnOff 2 }

doShutdown OBJECT-TYPE
	SYNTAX	INTEGER{
		shutdown(1),
		shutdown-and-off(2),
		shutdown-and-reboot(3),
		abort-pending-shutdown(4)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Execute a shutdown; argument tells what kind of shutdown:
                     shutdown: wait for user to switch off or reboot
                     shutdown-and-off: switch off after shutdown
                     shutdown-and-reboot: reboot after shutdown
                     abort-pending-shutdown: abort a delayed shutdown
                         immediately (if not already initiated)
 Reading this object just returns the value 0."
	::= { powerOnOff 3 }

-----------------------------------------------------------------------------------------------

powerOnCounts OBJECT-TYPE
	SYNTAX	Counter
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Tells how often the server was switched on in its life (-1 = unknown)"
	::= { powerOnOff 4 }

powerOnDurationHours OBJECT-TYPE
	SYNTAX	Counter
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Tells how long the system was switched on in its life (in hours; -1 = unknown)"
	::= { powerOnOff 5 }

powerOffDurationHours OBJECT-TYPE
	SYNTAX	Counter
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Tells how long the system was switched off in its life (in hours; -1 = unknown)"
	::= { powerOnOff 6 }

errorOffRestartDelay OBJECT-TYPE
	SYNTAX	INTEGER(1..20)

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Delay (in minutes) when the system should be automatically switched on 
                     again (by real-time clock) after an error 
                     power-off (-1 = no switch-on function).
 The value unknown(-1) cannot be set, a SET will deliver 'badValue'.
 Only the values 1, 2, 3, 5, 7, 10, 15 and 20 can be set. Values between these 
 numbers will be rounded."
	::= { powerOnOff 7 }

lastPostStatus OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		ok(2),
		errors(3)
	}
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Describes whether the last (current) POST (power on self test) was errornous"
	::= { powerOnOff 8 }

lastPowerOffSource OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		swoff-command(2),
		power-button(3),
		ac-fail(4),
		clock(5),
		fan-fail(6),
		temperature-critical(7),
		temperature-damage(8),
		power-supply-failure(9),
        watchdog(10),
        remote-off(11),
        hardware-fail(12),
        peripheral-bus-error(13),
        cpu-error(14),
		nmi(20),
        hardware-reset(23),
        warmstart(24),
		reset-button(25),
		ac-fail-reboot(26),
        firmware-restart(242)
	}
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Reason why the system was switched off last time"
	::= { powerOnOff 9 }

lastPowerOnSource OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		swoff-command(2),
		power-button(3),
		ac-fail(4),
		clock(5),
		fan-fail(6),
		temperature-critical(7),
		temperature-damage(8),
		power-supply-failure(9),
        watchdog(10),
        remote-on(11),
        hardware-fail(12),
        peripheral-bus-error(13),
        cpu-error(14),
        nmi(20),
        hardware-reset(23),
        warmstart(24),
		reset-button(25),
		ac-fail-reboot(26),
        firmware-restart(242)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Source the system was switched on from"
	::= { powerOnOff 10 }

powerOnTime OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Time and Date the system was booted (seconds since 1/1/1970; -1 = unknown)"
	::= { powerOnOff 11 }


-----------------------------------------------------------------------------------------------

-- GROUP: systemControlInfo
-- Implementation of this group is mandatory

-----------------------------------------------------------------------------------------------

numberCabinetsConfigured OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Number of configured cabinets (server and storage extensions, 
 at least 1: the server itself)"
	::= { systemControlInfo 1 }

numberCabinetsDetected OBJECT-TYPE
	SYNTAX	Gauge
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Number of detected cabinets (server and storage extensions, 
 at least 1: the server itself).
 This is also the number of entries in cabinetInfosTable."
	::= { systemControlInfo 2 }


-----------------------------------------------------------------------------------------------

cabinetInfosTable OBJECT-TYPE
	SYNTAX	SEQUENCE OF CabinetInfos
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
"Table with data of all configured cabinets"
	::= { systemControlInfo 3 }

cabinetInfos OBJECT-TYPE
	SYNTAX	CabinetInfos
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION ""
	INDEX	{ cabinetId }
	::= { cabinetInfosTable 1 }

CabinetInfos ::= 
	SEQUENCE {
		cabinetId
			INTEGER,
		cabinetLocation
			DisplayString,
		cabinetIdentNumber
			DisplayString,
		cabinetSystemName
			DisplayString,
		cabinetNumberFans
			INTEGER,
		cabinetNumberTempSensors
			INTEGER,
		cabinetNumberPowerSupplies
			INTEGER,
		cabinetPowerSupplySlots
			INTEGER,
		cabinetUpsUsed
			INTEGER,
		cabinetBoardSerialNumber
			INTEGER,
		cabinetBoardRevision
			INTEGER,
		cabinetBoardId
			DisplayString,
		cabinetManagementControllerType
			DisplayString,
		cabinetControllerFirmwareMajor
			INTEGER,
		cabinetControllerFirmwareMinor
			INTEGER,
		cabinetAttribute
			INTEGER,
		cabinetPowerOnStatus
			INTEGER,
		cabinetStatusSummary
			INTEGER,
		cabinetLastPoweroffSource
			INTEGER,
		cabinetActionAfterAcFail
			INTEGER,
		cabinetBbuUsed
			INTEGER,
		cabinetSystemType
			INTEGER,
		cabinetStatusDetail
			INTEGER,
        cabinetHousingType
		    DisplayString,
		cabinetFrontDoorStatus
			INTEGER,
		cabinetHousingOpenStatus
			INTEGER
	}

cabinetId OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Cabinet ID number, index into the cabinet table (0..99)"
	::= { cabinetInfos 1 }

cabinetLocation OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"The place where the cabinet is located (user can store
                        any string here to identify the cabinet location)"
	::= { cabinetInfos 2 }

cabinetIdentNumber OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"System ident number (serial number) - will be a number like 'XYZZ 12345678'.
 XYZZ     is the cabinet identifier and is mandatory. It will
          be used to identify the cabinet model name (i.e. PCD-5S).
 12345678 is the cabinet serial number and is optional.
 Cabinet identifier and serial number are separated by a blank character!"
	::= { cabinetInfos 3 }

cabinetSystemName OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"System name string (i.e. PCD-5S, Primergy 150...)"
	::= { cabinetInfos 4 }

cabinetNumberFans OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"The number of configured cooling devices (fans) in this cabinet
                        (-1 = unknown)"
	::= { cabinetInfos 5 }

cabinetNumberTempSensors OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"The number of configured temperature sensors in this cabinet
                        (-1 = unknown)"
	::= { cabinetInfos 6 }

cabinetNumberPowerSupplies OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"The number of available power supplies in this cabinet (-1 = unknown)"
	::= { cabinetInfos 7 }

cabinetPowerSupplySlots OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"The number of power supply slots in this cabinet (is the
 maximum number of installable power supplies;
 0 if no hot-plug slots available; -1 = unknown)"
	::= { cabinetInfos 8 }

cabinetUpsUsed OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Uninterruptable power supply for this cabinet available:
                            0:    No UPS
                            1..n: Index in UPS table
                            -1:    unknown"
	::= { cabinetInfos 9 }

cabinetBoardSerialNumber OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Serial number of the cabinet's system board"
	::= { cabinetInfos 10 }

cabinetBoardRevision OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Revision (GS) of the cabinet's system board (-1 = unknown)"
	::= { cabinetInfos 11 }

cabinetBoardId OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Identifier string of the cabinet's system board"
	::= { cabinetInfos 12 }

cabinetManagementControllerType OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Type of the cabinet's system management controller
 (i.e. SNI System Control Board)"
	::= { cabinetInfos 13 }

cabinetControllerFirmwareMajor OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Firmware version (major number) of the cabinet's system 
                        management controller (-1 = unknown)"
	::= { cabinetInfos 14 }

cabinetControllerFirmwareMinor OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Firmware version (minor number) of the cabinet's system 
                        management controller (-1 = unknown)"
	::= { cabinetInfos 15 }

cabinetAttribute OBJECT-TYPE
	SYNTAX	INTEGER{
		other(1),
		standalone-server(2),
		primary-server(3),
		secondary-server(4),
		storage-extension(5)
	}
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Attribute of a cabinet (Primary/secondary server, storage extension...)"
	::= { cabinetInfos 16 }

cabinetPowerOnStatus OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		off(2),
		on(3),
		disconnected(4)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Power-on state of the cabinet"
	::= { cabinetInfos 17 }

cabinetStatusSummary OBJECT-TYPE
	SYNTAX	INTEGER{
		ok(1),
		degraded(2),
		error(3),
		fail(4)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Describes the status of a cabinet (OK, degraded, error...)"
	::= { cabinetInfos 18 }

cabinetLastPoweroffSource OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		software-off(2),
		power-switch(3),
		power-fail(4),
		clock(5),
		fan-failure(6),
		critical-temperature(7),
		damage-temperature(8),
		power-supply-failure(9),
		remote-off(11)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"The source from which the cabinet was powered off last time"
	::= { cabinetInfos 19 }

cabinetActionAfterAcFail OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		not-available(2),
		switch-on-again(3),
		leave-off(4)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Action on AC power resume after AC has failed.
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { cabinetInfos 20 }

cabinetBbuUsed OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		false(2),
		true(3)
	}
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Battery buffering unit for this cabinet available.
 The value unknown(1) cannot be set, a SET will deliver 'badValue'."
	::= { cabinetInfos 21 }

cabinetSystemType OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		pce-5s(2),
		pce-5smp(3),
		reserved1(4),
		reserved2(5),
		reserved3(6),
		pcd-5tg(7),
		pcd-5t(8),
		primergy-150(9),
		primergy-350(10),
		primergy-550(11),
		primergy-750(12),
		primergy-560(13),
		primergy-760(14),
		primergy-151(15),
		primergy-160(16),
		primergy-351(17),
		primergy-551(18),
		reserved4(19),
		primergy-751(20),
        primergy-360(21),
        primergy-752(22),
        primergy-561(23),
		pcd-se(50),
		primergy-700-se(51),
        primergy-701(52)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
            "Type of the cabinet (values for PCE-5S, Primergy xxx, PCD-SE...).
             The value unknown(1) cannot be set, a SET will deliver 'badValue'.

             This value should no longer be used for cabinet identification. It will no
             longer be supported in next versions!! Use cabinetHousingType to identify the
             housing type and cabinetSystemName for the type of the cabinet!"
	::= { cabinetInfos 22 }

cabinetStatusDetail OBJECT-TYPE
	SYNTAX	INTEGER{
		ok(1),
		selftestWarning(2),
		selftestFailure(4),
		powerFailure(8),
		fanFailure(16),
		temperatureFailure(32),
		communicationFailure(64),
		powerOff(128),
		temperatureWarning(256),
		bbuError(512)
	}
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"More detailed status information from this cabinet.
                        
        The StatusDetail object is set to reflect the new status.
        ok:                             (status ok)             
            no failures detected.
        selftestWarning:                (status degraded)
            the SCB firmware issued a warning condition.
        selftestFailure:                (status error)
            the SCB firmware detected a failure
            that prevents it from functioning.
        powerFailure:                   (status degraded)
            the AC input at the power supply or
            the AC input at the UPS failed.
        fanFailure:                     (status error)
            A fan in this cabinet failed.
            The system is going to shut down.
        temperatureFailure:             (status error)
            A sensor in this cabinet detected an over temperature.
            The system is going to shut down.
        communicationFailure:           (status error)
            The SCB in the CPU cabinet has lost communication
            with the SCB in this cabinet.
            The system is going to shut down.
        powerOff:                       (status degraded)
            The cabinet is switched off.
                        "
	::= { cabinetInfos 23 }

cabinetHousingType OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
            "Type string for cabinet housing type (i.e. 'P300' for all PRIMERGY 3xx housings);
			 this object should be used to identify the cabinet instead of using object 
			 cabinetSystemType (i.e. for painting pictures in management applications)"
	::= { cabinetInfos 24 }

cabinetFrontDoorStatus OBJECT-TYPE
	SYNTAX	INTEGER {
		unknown(1),
		open(2),
		closed(3)
	}
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "Status of the cabinet's front door"
	::= { cabinetInfos 25 }

cabinetHousingOpenStatus OBJECT-TYPE
	SYNTAX	INTEGER {
		unknown(1),
		open(2),
		closed(3)
	}
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "Status describing whether the housing is open or closed"
	::= { cabinetInfos 26 }

sniScCabinetNumberVoltages OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "Number of entries in power supply voltage table"
	::= { cabinetInfos 27 }


-----------------------------------------------------------------------------------------------

statusSummary OBJECT-TYPE
	SYNTAX	INTEGER{
		ok(1),
		degraded(2),
		error(3),
		fail(4)
	}
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Status summary information from all cabinets"
	::= { systemControlInfo 4 }

serverType OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		pce-5s(2),
		pce-5smp(3),
		reserved1(4),
		reserved2(5),
		reserved3(6),
		pcd-5tg(7),
		pcd-5t(8),
		primergy-150(9),
		primergy-350(10),
		primergy-550(11),
		primergy-750(12),
		primergy-560(13),
		primergy-760(14),
		primergy-151(15),
		primergy-160(16),
		primergy-351(17),
		primergy-551(18),
		reserved4(19),
		primergy-751(20),
        primergy-360(21),
        primergy-752(22),
        primergy-561(23),
        pcd-se(50),
		primergy-700-se(51),
        primergy-701(52)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
                "Type of the server (values for PCE-5S, Primergy xxx;
                 same as cabinetSystemType in cabinetInfo table).

                 This value should no longer be used for server identification. It will no
                 longer be supported in next versions!! Use serverHousingType to identify the
                 housing type and cabinetSystemName for the type of the server!"
	::= { systemControlInfo 5 }


serverHousingType OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
            "Type string for cabinet housing type (i.e. 'P300' for all PRIMERGY 3xx housings);
			 this object should be used to identify the cabinet instead of using object 
			 serverType (i.e. for painting pictures in management applications). This is the
			 same value as from object cabinetHousingType for the server cabinet."
	::= { systemControlInfo 6 }


-----------------------------------------------------------------------------------------------

-- GROUP: powerSupply
-- Implementation of this group is mandatory

-----------------------------------------------------------------------------------------------

powerSuppliesTable OBJECT-TYPE
	SYNTAX	SEQUENCE OF PowerSupplies
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
"Table with power supply groups in the cabinets"
	::= { powerSupply 1 }

powerSupplies OBJECT-TYPE
	SYNTAX	PowerSupplies
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION ""
	INDEX	{ powerSupplyCabinetId }
	::= { powerSuppliesTable 1 }

PowerSupplies ::= 
	SEQUENCE {
		powerSupplyCabinetId
			INTEGER,
		powerSupplyStatus
			INTEGER,
		powerSupplyRedundancy
			INTEGER
	}

powerSupplyCabinetId OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Cabinet ID, index into the power supply table (0 based)"
	::= { powerSupplies 1 }

powerSupplyStatus OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		ok(2),
		degraded(3),
		critical(4)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Status of the cabinet's power supply; 
                            ok:       all units OK, number >= minimum
                            degraded: one or more units failed,
                                      number OK >= minimum
                            critical: number OK < minimum."
	::= { powerSupplies 2 }

powerSupplyRedundancy OBJECT-TYPE
	SYNTAX	INTEGER(1..10)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Number of available redundant power supply units (i.e. 2 units minimum, 
 3 available --> redundancy is 1, -1 = unknown)"
	::= { powerSupplies 3 }


-----------------------------------------------------------------------------------------------

powerSupplyUnitsTable OBJECT-TYPE
	SYNTAX	SEQUENCE OF PowerSupplyUnits
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
"Table with info about the configured power supply units"
	::= { powerSupply 2 }

powerSupplyUnits OBJECT-TYPE
	SYNTAX	PowerSupplyUnits
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
" "
	INDEX	{ powerSupplyUnitCabinetId, powerSupplyUnitNumber }
	::= { powerSupplyUnitsTable 1 }

PowerSupplyUnits ::= 
	SEQUENCE {
		powerSupplyUnitCabinetId
			INTEGER,
		powerSupplyUnitNumber
			INTEGER,
		powerSupplyUnitStatus
			INTEGER
	}

powerSupplyUnitCabinetId OBJECT-TYPE
	SYNTAX	INTEGER

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Cabinet ID, index into the power supply unit table (0 based)"
	::= { powerSupplyUnits 1 }

powerSupplyUnitNumber OBJECT-TYPE
	SYNTAX	INTEGER(0..9)

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Power supply unit number, index into power supply unit table (0 based)"
	::= { powerSupplyUnits 2 }

powerSupplyUnitStatus OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		not-present(2),
		ok(3),
		failed(4),
		ac-fail(5),
		dc-fail(6),
		critical-temperature(7),
		not-manageable(8)
	}

	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Status of the power supply unit (OK, failed, not present...)"
	::= { powerSupplyUnits 3 }


-----------------------------------------------------------------------------------------------


-- The number of voltages can be found in the cabinetInfosTable

sniScVoltageTable OBJECT-TYPE
	SYNTAX	SEQUENCE OF SniScVoltages
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION "Table with power supply voltage information"
	::= { powerSupply 4 }

sniScVoltages OBJECT-TYPE
	SYNTAX	SniScVoltages
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION ""
	INDEX	{ sniScVoltageCabinetNumber, sniScVoltageNumber }
	::= { sniScVoltageTable 1 }

SniScVoltages ::= 
	SEQUENCE {
		sniScVoltageCabinetNumber
			INTEGER,
		sniScVoltageNumber
			INTEGER,
		sniScVoltageStatus
			INTEGER,
		sniScVoltageDesignation
			DisplayString,
		sniScVoltageMinimumValue
			INTEGER,
		sniScVoltageMaximumValue
			INTEGER,
		sniScVoltageCurrentValue
			INTEGER,
		sniScVoltageNominalValue
			INTEGER,
		sniScVoltageOutputLoad
			INTEGER
	}

sniScVoltageCabinetNumber OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "Cabinet number, index into the power supply voltage table (0 based)"
	::= { sniScVoltages 1 }

sniScVoltageNumber OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "Power supply voltage number, index into power supply voltage table (0 based)"
	::= { sniScVoltages 2 }

sniScVoltageStatus OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		not-available(2),
		ok(3),
		too-low(4),
		too-high(5)
	}
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "Status of the power supply voltage; not available can be the 
				 voltage of an empty CPU socket."
	::= { sniScVoltages 3 }

sniScVoltageDesignation OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "Power supply voltage designation. This string specifies the
	             voltage by clear text (e.g. 5V, 12V, 3.3V...)"
	::= { sniScVoltages 4 }

sniScVoltageMinimumValue OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "Power supply voltage minimum level (1/100th Volts; -1 = unknown)"
	::= { sniScVoltages 5 }

sniScVoltageMaximumValue OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "Power supply voltage maximum level (1/100th Volts; -1 = unknown)"
	::= { sniScVoltages 6 }

sniScVoltageCurrentValue OBJECT-TYPE
	SYNTAX	Gauge
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "Power supply voltage current level (1/100th Volts, e.g. 330 means 3.30 Volts; 
				 0xFFFFFFFF = unknown)"
	::= { sniScVoltages 7 }

sniScVoltageNominalValue OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "Power supply voltage nominal level (1/100th Volts; -1 = unknown)"
	::= { sniScVoltages 8 }

sniScVoltageOutputLoad OBJECT-TYPE
	SYNTAX	Gauge
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION "Power supply output load in percent of maximum load; 0xFFFFFFFF = unknown"
	::= { sniScVoltages 9 }

-----------------------------------------------------------------------------------------------

-- GROUP: uninterruptablePowerSupply
-- Implementation of this group is mandatory

-----------------------------------------------------------------------------------------------

upsCount OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Number of uninterruptable power supplies (UPS) in this system
                     (-1 = unknown)"
	::= { uninterruptablePowerSupply 1 }

upsInfosTable OBJECT-TYPE
	SYNTAX	SEQUENCE OF UpsInfos
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
"Table with uninterruptable power supplies used in this system. The 
                     index is the UPS number used in the system.
                     One or more server or storage-extension objects
                     can reference to a UPS entry in this table."
	::= { uninterruptablePowerSupply 2 }

upsInfos OBJECT-TYPE
	SYNTAX	UpsInfos
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
" "
	INDEX	{ upsNumber }
	::= { upsInfosTable 1 }

UpsInfos ::= 
	SEQUENCE {
		upsNumber
			INTEGER,
		upsDetected
			INTEGER,
		upsDischargeTime
			INTEGER,
		upsVendor
			DisplayString,
		upsType
			DisplayString,
		upsOemAgent
			DisplayString,
		upsOemAgentAddress
			IpAddress,
		upsTimeOnBatterySeconds
			Counter
	}

upsNumber OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Number of the UPS in this table (index, 1 based)"
	::= { upsInfos 1 }

upsDetected OBJECT-TYPE
	SYNTAX	INTEGER{
		unknown(1),
		false(2),
		true(3)
	}
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Tells whether the UPS was detected"
	::= { upsInfos 2 }

upsDischargeTime OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Maximum time this UPS will be discharged, after that a shutdown
                        will be performed (seconds; -1 = unknown)"
	::= { upsInfos 3 }

upsVendor OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Vendor name of the UPS"
	::= { upsInfos 4 }

upsType OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Type of the UPS; can be used to identify an OEM UPS with 
                        an OEM agent"
	::= { upsInfos 5 }

upsOemAgent OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Object identifier of an OEM UPS MIB; no agent if empty OID"
	::= { upsInfos 6 }

upsOemAgentAddress OBJECT-TYPE
	SYNTAX	IpAddress
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"IP address of an OEM UPS SNMP agent; no agent if empty"
	::= { upsInfos 7 }

upsTimeOnBatterySeconds OBJECT-TYPE
	SYNTAX	Counter
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
"Time (in seconds) the UPS is running on battery since power fail
                        (will be cleared on power recovery)"
	::= { upsInfos 8 }


-----------------------------------------------------------------------------------------------

-- GROUP: diagnostics
-- Implementation of this group is mandatory

-----------------------------------------------------------------------------------------------

sendTestTrap OBJECT-TYPE
	SYNTAX	INTEGER{
		send-trap(1)
	}

	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
"Send a trap to the manager application(s) to test connection and trap
                     configuration; trap cannot be disabled.
 Reading this object just returns the value 0."
	::= { diagnostics 1 }


-----------------------------------------------------------------------------------------------

-- GROUP: trapInfo
-- Implementation of this group is mandatory

-----------------------------------------------------------------------------------------------

trapServerName OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
"Name of server the trap occured"
	::= { trapInfo 1 }

trapTime OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
"Time the trap occured (in seconds since 01/01/1970 00:00h)"
	::= { trapInfo 2 }

trapCabinetNumber OBJECT-TYPE
	SYNTAX	INTEGER(0..999)

	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
"Number of the cabinet where the trap was generated"
	::= { trapInfo 3 }

trapObjectNumber OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
"Number of the object that generated the trap (fan, temperature sensor...)"
	::= { trapInfo 4 }

trapString OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	not-accessible
	STATUS	mandatory
	DESCRIPTION
"Additional string to be displayed in the trap text"
	::= { trapInfo 5 }

trapMinutesRemaining OBJECT-TYPE
	SYNTAX INTEGER
	ACCESS not-accessible
	STATUS mandatory
	DESCRIPTION
	    "The estimated remaining BBU/UPS capacity in minutes.
	     In the current implementation this is the time remaining
	     until the system will shut down."
	::= { trapInfo 6 }

trapSecondsOnBattery OBJECT-TYPE
	SYNTAX INTEGER
	ACCESS not-accessible
	STATUS mandatory
	DESCRIPTION
	    "See scbUPSSecondsOnBattery/scbBBUSecondsOnBattery."
	::= { trapInfo 7 }

trapConfigLowBattTime OBJECT-TYPE
	SYNTAX INTEGER
	ACCESS not-accessible
	STATUS mandatory
	DESCRIPTION
	    "The value of trapMinutesRemaining at which
	     a shut down is initiated. In the current implementation
	     this is always 0."
	::= { trapInfo 8 }


--
-- The trap definitions themself
--

testTrap TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime
	}
	DESCRIPTION
	    "Test trap to verify trap connection."
	--#TYPE         "Test trap"
	--#SUMMARY      "Test trap from server %s (no error)."
	--#ARGUMENTS    { 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 600

fanError TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber
	}
	DESCRIPTION
	    "The indicated fan failed."
	--#TYPE         "Fan failed"
	--#SUMMARY      "Fan %d failed in cabinet %d of server %s."
	--#ARGUMENTS    { 3, 2, 0 }
	--#SEVERITY     CRITICAL
	--#TIMEINDEX    1
	--#STATE        NONOPERATIONAL
	::= 601

tempOk TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber
	}
	DESCRIPTION
	    "The temperature of the indicated sensor has
	     decreased to the normal level."
	--#TYPE         "Temperature normal"
	--#SUMMARY      "Temperature at sensor %d in cabinet %d of server %s is within normal range."
	--#ARGUMENTS    { 3, 2, 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 602

tempWarn TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber
	}
	DESCRIPTION
	    "The temperature of the indicated sensor has
	     reached the warning level."
	--#TYPE         "Temperature warning"
	--#SUMMARY      "Temperature at sensor %d in cabinet %d of server %s has reached the warning level."
	--#ARGUMENTS    { 3, 2, 0 }
	--#SEVERITY     MAJOR
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 603

tempCritical TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber
	}
	DESCRIPTION
	    "The temperature of the indicated sensor is out of tolerance range.
	     The system will shut down and power off if shutdown is enabled."
	--#TYPE         "Temperature critical"
	--#SUMMARY      "Temperature at sensor %d in cabinet %d of server %s has reached the critical level."
	--#ARGUMENTS    { 3, 2, 0 }
	--#SEVERITY     CRITICAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 604

trapOnBattery TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapMinutesRemaining,
		trapSecondsOnBattery,
		trapConfigLowBattTime,
		trapCabinetNumber
	}
	DESCRIPTION
	    "The UPS is operating on battery power or the power supply
	     is drawing current from the backup battery unit (BBU).
	     This trap is persistent and is resent at one minute intervals
	     until the mains returns or the system is switched off."
	--#TYPE         "AC failed, on battery"
	--#SUMMARY      "AC failure. Cabinet %d is running on battery power since %d seconds."
	--#SUMMARY      "In %d minutes server %s will shutdown."
	--#ARGUMENTS    { 5, 3, 2, 0 }
	--#SEVERITY     CRITICAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 606

trapOnMains TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber
	}
	DESCRIPTION
	    "The mains voltage returned after a power failure."
	--#TYPE         "AC OK"
	--#SUMMARY      "Mains returned after power failure in cabinet %d at server %s."
	--#ARGUMENTS    { 2, 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 607

selftestWarning TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber
	}
	DESCRIPTION 
	    "Currently the only possible warning is: SCB battery (nearly) empty."
	--#TYPE         "Controller selftest warning"
	--#SUMMARY      "The Server Management controller in cabinet %d has detected an minor problem during selftest of server %s."
	--#ARGUMENTS    { 2, 0 }
	--#SEVERITY     MINOR
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 608

selftestError TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber
	}
	DESCRIPTION ""
	--#TYPE         "Controller selftest error"
	--#SUMMARY      "The Server Management controller in cabinet %d of server %s failed."
	--#ARGUMENTS    { 2, 0 }
	--#SEVERITY     CRITICAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 609

communicationFailure TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber
	}
	DESCRIPTION ""
	--#TYPE         "Communication lost"
	--#SUMMARY      "Communication with the Server Management controller in cabinet %d of server %s lost."
	--#ARGUMENTS    { 2, 0 }
	--#SEVERITY     MINOR
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 610

scbUnconfiguredUPSDetected TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime
	}
	DESCRIPTION
	    "This trap will be repeated every 60 minutes
	     until the condition is removed."
	--#TYPE         "UPS not configured"
	--#SUMMARY      "UPS detected by server %s, but no UPS is configured."
	--#ARGUMENTS    { 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 611

scbUPSNotdetected TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime
	}
	DESCRIPTION
	    "This trap will be repeated every 60 minutes
	     until the condition is removed."
	--#TYPE         "UPS not detected"
	--#SUMMARY      "A UPS is configured but no UPS detected by server %s."
	--#ARGUMENTS    { 0 }
	--#SEVERITY     MAJOR
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 612

scbUnconfiguredBBUDetected TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime
	}
	DESCRIPTION 
	    "This trap will be repeated every 60 minutes
	     until the condition is removed."
	--#TYPE         "BBU not configured"
	--#SUMMARY      "BBU detected by server %s, but no BBU is configured."
	--#ARGUMENTS    { 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 613

scbBBUNotdetected TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber
	}
	DESCRIPTION 
	    "This trap will be repeated every 60 minutes
	     until the condition is removed."
	--#TYPE         "BBU not detected"
	--#SUMMARY      "A BBU is configured but no BBU is detected by server %s."
	--#ARGUMENTS    { 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 614

notEnoughCabinets TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime
	}
	DESCRIPTION
	    "One or more storage extensions missing."
	--#TYPE         "SE's missing"
	--#SUMMARY      "The actual number of storage extensions at server %s is lower than the configured."
	--#ARGUMENTS    { 0 }
	--#SEVERITY     MAJOR
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 615

tooManyCabinets TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime
	}
	DESCRIPTION
	    "."
	--#TYPE         "Too many SE's"
	--#SUMMARY      "The actual number of storage extensions at server %s is higher than the configured."
	--#ARGUMENTS    { 0 }
	--#SEVERITY     MINOR
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 616

cabinetSwitchedOff TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapString
	}
	DESCRIPTION
	    "This trap will be sent when a cabinet is switched off.
	     For obvious reasons it cannot be sent when the main
	     cabinet is switched off."
	--#TYPE         "Cabinet switched off"
	--#SUMMARY      "Cabinet %d was switched off because of %s (server %s)."
	--#ARGUMENTS    { 2, 3, 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 617

cabinetSwitchedOn TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapString
	}
	DESCRIPTION
	    "This trap will be sent when a cabinet is switched on.
	     For obvious reasons it cannot be sent when the main
	     cabinet is switched on."
	--#TYPE         "Cabinet switched on"
	--#SUMMARY      "Cabinet %d was switched on because of %s (server %s)."
	--#ARGUMENTS    { 2, 3, 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 618

internalError TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapObjectNumber,
		trapString
	}
	DESCRIPTION
	    "The agent has detected an internal error."
	--#TYPE         "Internal error"
	--#SUMMARY      "Internal error #%d in server management controller software."
	--#SUMMARY      "(module %s at server %s)."
	--#ARGUMENTS    { 2, 3, 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 620

serverShutdown TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapString
	}
	DESCRIPTION
	    "This trap will be sent before a server will switch off."
	--#TYPE         "Server shutdown"
	--#SUMMARY      "The reason %s causes a shutdown at server %s."
	--#ARGUMENTS    { 2, 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        NONOPERATIONAL
	::= 621

fanCriticalError TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber
	}
	DESCRIPTION
	    "The indicated fan became critical."
	--#TYPE         "Fan will fail"
	--#SUMMARY      "Fan %d will fail in near future in cabinet %d of server %s."
	--#ARGUMENTS    { 3, 2, 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 622

cabinetNotConfigured TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber
	}
	DESCRIPTION
	    "The agent has detected a mismatch in the configuration of the server."
	--#TYPE         "Cabinet not configured"
	--#SUMMARY      "Cabinet %d at server %s is not configured. Depending on the system type,"
	--#SUMMARY      "run Server Configuration Utility (SCU) or Storage Extension  Manager (SEMAN) "
	--#SUMMARY      "and configure the cabinet!"
	--#ARGUMENTS    { 2, 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 623

powerSupplyRemoved TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapObjectNumber,
		trapCabinetNumber
	}
	DESCRIPTION
	    "One hot-replace power supply was removed."
	--#TYPE         "Power supply removed"
	--#SUMMARY      "Power supply %d in cabinet %d at server %s was removed."
	--#ARGUMENTS    { 2, 3, 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 624

powerSupplyAdded TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapObjectNumber,
		trapCabinetNumber
	}
	DESCRIPTION
	    "One hot-replace power supply was added."
	--#TYPE         "Power supply added"
	--#SUMMARY      "Power supply %d in cabinet %d at server %s was added."
	--#ARGUMENTS    { 2, 3, 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 625

powerSupplyFailed TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapObjectNumber,
		trapCabinetNumber
	}
	DESCRIPTION
	    "One hot-replace power supply failed."
	--#TYPE         "Power supply failed"
	--#SUMMARY      "Power supply %d in cabinet %d at server %s failed."
	--#ARGUMENTS    { 2, 3, 0 }
	--#SEVERITY     MAJOR
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 626

powerSupplyOk TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapObjectNumber,
		trapCabinetNumber
	}
	DESCRIPTION
	    "Power supply is working again."
	--#TYPE         "Power supply OK"
	--#SUMMARY      "Power supply %d in cabinet %d at server %s is working again."
	--#ARGUMENTS    { 2, 3, 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 627

powerSupplyStatusCritical TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber
	}
	DESCRIPTION
	    "Power supply status has become critical."
	--#TYPE         "Power supply critical"
	--#SUMMARY      "Insufficiant operating power supplies available in cabinet %d at server %s."
	--#ARGUMENTS    { 2, 0 }
	--#SEVERITY     CRITICAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 628

fanOk TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber
	}
	DESCRIPTION
	    "The indicated fan is OK again."
	--#TYPE         "Fan OK"
	--#SUMMARY      "Fan %d in cabinet %d of server %s is working again."
	--#ARGUMENTS    { 3, 2, 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 629

tempSensorBroken TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber
	}
	DESCRIPTION
	    "The indicated temperature sensor is broken."
	--#TYPE         "Temperature sensor broken"
	--#SUMMARY      "Temperature sensor %d in cabinet %d of server %s is broken or not connected."
	--#ARGUMENTS    { 3, 2, 0 }
	--#SEVERITY     MAJOR
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 630

serverManagementDisabled TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime
	}
	DESCRIPTION
	    "The server management BIOS is disabled."
	--#TYPE         "Server management disabled"
	--#SUMMARY      "Server management BIOS on server %s is disabled. Enable it to have full"
	--#SUMMARY      "server management functionality!"
	--#ARGUMENTS    { 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 631
  
trapAcFail TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber
	}
	DESCRIPTION
	    "Mains failed in the specified cabinet. This trap can only happen in 
		 storage extension cabinets without UPS or BBU. A server will not have 
		 time to send this trap."
	--#TYPE         "AC failed"
	--#SUMMARY      "AC failure in cabinet %d of server %s."
	--#ARGUMENTS    { 2, 0 }
	--#SEVERITY     CRITICAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 632

trapDuplicateCabinetId TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber
	}
	DESCRIPTION
	    "Two ore more cabinets (server or storage extension) have the same ID number.
		 The system will not run properly."
	--#TYPE         "Duplicate cabinet ID"
	--#SUMMARY      "Two or more cabinets have the same ID %d on server %s."
	--#ARGUMENTS    { 2, 0 }
	--#SEVERITY     MAJOR
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 633

trapEventLog TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime
	}
	DESCRIPTION
	    "An error message was written into the systemboard's event/error log.
		 This could have happened when an error occured before the agent was running 
		 or any error without a specific trap. See server management event/error log
		 for detailed error description."
	--#TYPE         "Error in event log"
	--#SUMMARY      "An error was recorded on server %s. See server management"
	--#SUMMARY      "event / error log (Recovery) for detailed information."
	--#ARGUMENTS    { 0 }
	--#SEVERITY     MAJOR
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 634

tempSensorOk TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber
	}
	DESCRIPTION
	    "The indicated broken temperature sensor is OK again."
	--#TYPE         "Temperature sensor OK"
	--#SUMMARY      "Temperature sensor %d in cabinet %d of server %s is working again."
	--#ARGUMENTS    { 3, 2, 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 635


communicationEstablished TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber
	}
	DESCRIPTION ""
	--#TYPE         "Communication established"
	--#SUMMARY      "Communication with the Server Management controller in cabinet %d of server %s established again."
	--#ARGUMENTS    { 2, 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 636


correctableMemErrorAddr TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber
	}
	DESCRIPTION
	    "A correctable memory errror at specified address was detected."
	--#TYPE         "Correctable memory error"
	--#SUMMARY      "Correctable memory error at address %d in cabinet %d of server %s."
	--#ARGUMENTS    { 3, 2, 0 }
	--#SEVERITY     MINOR
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 637

  
uncorrectableMemErrorAddr TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber
	}
	DESCRIPTION
	    "An uncorrectable memory errror at specified address was detected."
	--#TYPE         "Uncorrectable memory error"
	--#SUMMARY      "Uncorrectable memory error at address %d in cabinet %d of server %s."
	--#ARGUMENTS    { 3, 2, 0 }
	--#SEVERITY     CRITICAL
	--#TIMEINDEX    1
	--#STATE        NONOPERATIONAL
	::= 638


correctableMemErrorBank TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber
	}
	DESCRIPTION
	    "A correctable memory errror at specified bank was detected."
	--#TYPE         "Correctable memory error"
	--#SUMMARY      "Correctable memory error at bank %d in cabinet %d of server %s."
	--#ARGUMENTS    { 3, 2, 0 }
	--#SEVERITY     MINOR
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 639


uncorrectableMemErrorBank TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber
	}
	DESCRIPTION
	    "A correctable memory errror at specified bank was detected."
	--#TYPE         "Uncorrectable memory error"
	--#SUMMARY      "Uncorrectable memory error at bank %d in cabinet %d of server %s."
	--#ARGUMENTS    { 3, 2, 0 }
	--#SEVERITY     CRITICAL
	--#TIMEINDEX    1
	--#STATE        NONOPERATIONAL
	::= 640


correctableMemErrorModule TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber
	}
	DESCRIPTION
	    "A correctable memory errror at specified module was detected."
	--#TYPE         "Correctable memory error"
	--#SUMMARY      "Correctable memory error at module %d in cabinet %d of server %s."
	--#ARGUMENTS    { 3, 2, 0 }
	--#SEVERITY     MINOR
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 641


uncorrectableMemErrorModule TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber
	}
	DESCRIPTION
	    "A correctable memory errror at specified module was detected."
	--#TYPE         "Uncorrectable memory error"
	--#SUMMARY      "Uncorrectable memory error at module %d in cabinet %d of server %s."
	--#ARGUMENTS    { 3, 2, 0 }
	--#SEVERITY     CRITICAL
	--#TIMEINDEX    1
	--#STATE        NONOPERATIONAL
	::= 642


correctableMemError TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber
	}
	DESCRIPTION
	    "A correctable memory errror at unknown address was detected."
	--#TYPE         "Correctable memory error"
	--#SUMMARY      "Correctable memory error in cabinet %d of server %s."
	--#ARGUMENTS    { 2, 0 }
	--#SEVERITY     MINOR
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 643

  
uncorrectableMemError TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber

	}
	DESCRIPTION
	    "A uncorrectable memory errror at unknown address was detected."
	--#TYPE         "Uncorrectable memory error"
	--#SUMMARY      "Uncorrectable memory error in cabinet %d of server %s."
	--#ARGUMENTS    { 2, 0 }
	--#SEVERITY     CRITICAL
	--#TIMEINDEX    1
	--#STATE        NONOPERATIONAL
	::= 644

powerOffTimeReached TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapMinutesRemaining
	}
	DESCRIPTION ""
	--#TYPE         "Power off time reached"
	--#SUMMARY      "The power-off time is reached in cabinet %d on server %s! System shutdown in %d minutes."
	--#ARGUMENTS    { 2, 0, 3 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 645



frontDoorStatusChanged TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber
	}
	DESCRIPTION ""
	--#TYPE         "Front door status changed"
	--#SUMMARY      "The front door status of cabinet %d on server %s has changed."
	--#ARGUMENTS    { 2, 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 646

housingOpenStatusChanged TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber
	}
	DESCRIPTION ""
	--#TYPE         "Housing open status changed"
	--#SUMMARY      "The housing open status of cabinet %d on server %s has changed."
	--#ARGUMENTS    { 2, 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 647



sniScRedundantFanFailed TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber
	}
	DESCRIPTION
	    "The indicated redundant fan failed."
	--#TYPE         "Redundant fan failed"
	--#SUMMARY      "The redundant fan %d failed in cabinet %d of server %s."
	--#SUMMARY      "System can become critical if another fan in this group fails."
	--#ARGUMENTS    { 3, 2, 0 }
	--#SEVERITY     MAJOR
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 648

sniScRedundantPowerSupplyFailed TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapObjectNumber,
		trapCabinetNumber
	}
	DESCRIPTION
	    "One redundant hot-replace power supply failed."
	--#TYPE         "Redundant power supply failed"
	--#SUMMARY      "Redundant power supply %d in cabinet %d at server %s failed."
	--#SUMMARY      "System can become critical if another power supply fails."
	--#ARGUMENTS    { 2, 3, 0 }
	--#SEVERITY     MAJOR
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 649



sniScVoltageOk TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber,
		trapString
	}
	DESCRIPTION
	    "Power supply voltage is within normal range again."
	--#TYPE         "Voltage OK"
	--#SUMMARY      "Power supply voltage %d (%s) in cabinet %d at server %s is within normal range again."
	--#ARGUMENTS    { 3, 4, 2, 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 650

sniScVoltageTooLow TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber,
		trapString
	}
	DESCRIPTION
	    "Power supply voltage is too low."
	--#TYPE         "Voltage too low"
	--#SUMMARY      "Power supply voltage %d (%s) in cabinet %d at server %s is too low."
	--#ARGUMENTS    { 3, 4, 2, 0 }
	--#SEVERITY     CRITICAL
	--#TIMEINDEX    1
	--#STATE        NONOPERATIONAL
	::= 651

sniScVoltageTooHigh TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber,
		trapString
	}
	DESCRIPTION
	    "Power supply voltage is too high."
	--#TYPE         "Voltage too high"
	--#SUMMARY      "Power supply voltage %d (%s) in cabinet %d at server %s is too high."
	--#ARGUMENTS    { 3, 4, 2, 0 }
	--#SEVERITY     CRITICAL
	--#TIMEINDEX    1
	--#STATE        NONOPERATIONAL
	::= 652


sniScFanAdded TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber
	}
	DESCRIPTION
	    "The indicated hot-plug fan was inserted."
	--#TYPE         "Fan added"
	--#SUMMARY      "The fan %d was added into cabinet %d of server %s."
	--#ARGUMENTS    { 3, 2, 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 653

sniScFanRemoved TRAP-TYPE
	ENTERPRISE sniServerMgmt
	VARIABLES {
		trapServerName,
		trapTime,
		trapCabinetNumber,
		trapObjectNumber
	}
	DESCRIPTION
	    "The indicated hot-plug fan was removed."
	--#TYPE         "Fan removed"
	--#SUMMARY      "The fan %d was removed from cabinet %d of server %s."
	--#ARGUMENTS    { 3, 2, 0 }
	--#SEVERITY     INFORMATIONAL
	--#TIMEINDEX    1
	--#STATE        OPERATIONAL
	::= 654


END

