--------------------------------------------------------------------------------
--                            Avocent DSR TRAP OBJECTS MIB
--
--                         Copyright 2006 Avocent Corporation
--
--                                  Revision: 4.0.1
--
--                           Last Modified: April 13, 2007
--
--------------------------------------------------------------------------------

DSR-TRAP-OBJECTS-MIB DEFINITIONS ::= BEGIN

IMPORTS
   Gauge,enterprises,TimeTicks,IpAddress,Counter,NetworkAddress
      FROM RFC1155-SMI
   OBJECT-TYPE
      FROM RFC-1212
   DisplayString,PhysAddress
      FROM RFC1213-MIB
   TRAP-TYPE
      FROM RFC-1215;

--------------------------------------------------------------------------------
-- Object Groupings
--------------------------------------------------------------------------------

avocent                 OBJECT IDENTIFIER ::= { enterprises 10418 }
dsr                     OBJECT IDENTIFIER ::= { avocent 7 }
dsrProducts             OBJECT IDENTIFIER ::= { dsr 1 }
dsrManagement           OBJECT IDENTIFIER ::= { dsr 2 }
dsrTrapObject           OBJECT IDENTIFIER ::= { dsrManagement 6 } -- 10418.7.2.6

--
-- A UTF8String represents a series of UTF-8 encoded characters. UTF-8 encoding
-- provides the ability to encode all characters defined in the Universal
-- Multiple-Octet Coded Character Set (UCS) and all characters defined in the
-- Unicode Standard. UCS is defined in international standard ISO 10646. Unicode
-- encompasses a subset of UCS. See http://www.unicode.org for more information
-- on Unicode. See RFC2279 for more information on UTF-8 encoding.
--

UTF8String ::= OCTET STRING

--
-- An enumeration of image file upgrade results.
--

ImageFileUpgradeResultsEnum ::= INTEGER
{
   imageUpgradeTftpNoSocket(1),         -- TFTP No Socket
   imageUpgradeTftpConnectFailure(2),   -- TFTP server TFTP connect failed
   imageUpgradeTftpRequestDenied(3),    -- TFTP server request denied
   imageUpgradeTftpBadPacket(4),        -- TFTP err - non-data packet received
   imageUpgradeTftpOOS(5),              -- TFTP err - too many packets out
                                        --  of sequence
   imageUpgradeTftpTooBig(6),           -- TFTP err - transferred data exceeds
                                        --  file size
   imageUpgradeTftpTimeout(7),          -- TFTP err - timeout during transfer,
                                        --  retries exceeded
   imageUpgradeAlreadyInProgress(8),    -- Update already in progress
   imageUpgradeCannotStart(9),         -- Update thread did not start
   imageUpgradeMemoryError(10),         -- Update memory allocation error
   imageUpgradeTftpProtocolError(11),   -- TFTP protocol error occurred could
                                        --  not complete transfer
   imageUpgradeBadType(12),             -- The Image type does not match the
                                        --  region (BOOT or APP) to update
   imageUpgradeInvalidAppDowngrade(13), -- Invalid downgrade version
   imageUpgradeChecksumError(14),       -- Checksum Error
   imageUpgradeFlashError(15),          -- Flash Error
   imageUpgradeInternalError(16),       -- Internal error
   imageUpgradeFileNotFound(17),        -- File not found
   imageUpgradeBadHeader(18),           -- Invalid image header
   imageUpgradeIncompatibleHeader(19),  -- Header is not compatible
   imageUpgradeTftpXferFail(20),        -- TFTP transfer failed
   imageUpgradeTftpSvrNoResponse(21),   -- No response from TFTP server
   imageUpgradeNetworkUnreachable(22),  -- Network unreachable
   imageUpgradeSuccess(9999)            -- Success
}

--@ Note: we use the term IQ Adaptor in this MIB to generically
--@ refer to either a DSRIQ or an AVRIQ

--
-- An enumeration of IQ Adaptor upgrade results.
--

IqAdaptorUpgradeResultsEnum ::= INTEGER
{
   iqaUpgradeNoFirmwareImage(1),   -- No firmware image present
   iqaUpgradeLostContact(2),       -- Lost communication with the IQ Adaptor
   iqaUpgradeFailedRestart(3),     -- The IQ Adaptor did not restart after
                                   -- upgrade
   iqaUpgradeSuccess(9999)         -- Success
}

--------------------------------------------------------------------------------
-- Trap Object Group (dsrTrapObject)              10418.7.2.6
--
-- The following objects are implemented only for the generation of
-- TRAPs. The objects are sent in traps and are not accessible in
-- any other way.
--------------------------------------------------------------------------------

avctDsrTrapObjectUserName OBJECT-TYPE
      SYNTAX UTF8String ( SIZE (0..64) )
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the name of the user
         for which the trap condition occured.
         "
      ::= { dsrTrapObject 1 }

avctDsrTrapObjectTargetUserName OBJECT-TYPE
      SYNTAX UTF8String ( SIZE (0..64) )
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the name of the target
         user for which a trap condition occurred.
         "
      ::= { dsrTrapObject 2 }

--@ Note: to maintain consistency with trap MIBs for other appliances,
--@ dsrTrapObject.3 is skipped and should never be used.

avctDsrTrapObjectImageNewVersion OBJECT-TYPE
      SYNTAX DisplayString ( SIZE (0..32) )
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the new software image
         version the appliance or IQ Adaptor is being upgraded to.
         "
      ::= { dsrTrapObject 4 }

avctDsrTrapObjectImageCurrentVersion OBJECT-TYPE
      SYNTAX DisplayString ( SIZE (0..32) )
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the software image
         version the appliance or IQ Adaptor is currently running.
         "
      ::= { dsrTrapObject 5 }

--@ Note: avctDsrTrapObjectServerName use to be named
--@ avctDsrTrapObjectSessionIdentifier.

avctDsrTrapObjectServerName OBJECT-TYPE
      SYNTAX UTF8String ( SIZE (0..64) )
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the name of the server
         for which the trap condition occurred.
         "
      ::= { dsrTrapObject 6 }

avctDsrTrapObjectIqAdaptorId OBJECT-TYPE
      SYNTAX DisplayString ( SIZE (0..32) )
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the ID of the IQ Adaptor for
         which the trap condition occurred. The value will be the
         same as the EID label attached to the IQ Adaptor.
         "
      ::= { dsrTrapObject 7 }

--@ Note: avctDsrTrapObjectFirmwareCondition has been removed therefore
--@ dsrTrapObject.8 is skipped and should never be used again.

avctDsrTrapObjectIpAddress OBJECT-TYPE
      SYNTAX DisplayString( SIZE (0..255) )
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the IP address for
         which a trap condition occurred.
         "
      ::= { dsrTrapObject 9 }

avctDsrTrapObjectPreviousScreenResolution OBJECT-TYPE
      SYNTAX DisplayString ( SIZE (0..32) )
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the previous screen
         resolution of the target server.
         "
      ::= { dsrTrapObject 10 }

avctDsrTrapObjectCurrentScreenResolution OBJECT-TYPE
      SYNTAX DisplayString ( SIZE (0..32) )
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the current screen
         resolution of the target server.
         "
      ::= { dsrTrapObject 11 }

avctDsrTrapObjectAggregatedServerStatusChanged OBJECT-TYPE
      SYNTAX OCTET STRING ( SIZE (12..5122) )
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to report server status changes. This
         object will report the status change of multiple servers (connection
         paths) in an aggregated encoding format as indicated below.

         Note that on bootup the appliance will send this object in the
         avctDsrServerStatusChangedTrap containing the status of all
         connection paths in the appliance. Thereafter the appliance will
         send this object in the avctDsrServerStatusChangedTrap containing
         only the connection paths whose status has changed.

         This object is composed of two sections, which are the header section
         and the connection path section.  The header section provides version
         information and is the first 2 bytes of this object.  The connection
         path section provides information on each of the connection paths and
         is defined in the bytes following the header.

         Header Section
         --------------

         Byte 1      = Start indicator for the header section.  The value of the
                       start indicator is always zero.  The value of the start
                       indicator provides means for management applications to
                       determine that this object has a header section.  All
                       previous implementations of this object have a non-zero
                       value in the first byte.

         Byte 2      = Version of the aggregate object.  The version provides
                       means to identify the format/structure of this aggregate
                       object.  The format of the aggregate object, as described
                       here, is identified with a value of 3 for the version.


         Connection Path Section
         -----------------------

         The connection path section is composed of 1 or more connection paths.
         The information for each connection path is packed into 10 bytes as
         follows:

         Byte 1      = The appliance input port number associated with this
                       connection path. The input port defined for
                       dsrAggregateServerStatus is an ARI port that interfaces
                       the data traffic coming from or going directly or
                       indirectly to a target device or a power device.

                       Note that a power device will report the port number as
                       100 + the power device port number
                       (dsrSpcDeviceTablePortNumber). For the first power device
                       port, Byte 1 will report 101 for the power device.
                       This will avoid potential port conflicts for ARI and
                       power device ports. In the event that additional power
                       device ports are available, the number will reflect the
                       power device port number (i.e. 101, 102, etc.)

         Byte 2      = The cascade switch channel number associated with this
                       connection path. The value will be 0 if a switch channel
                       is not associated with this connection path.

                       For power devices, this Byte will represent the power
                       device number (dsrSpcDeviceTableSpcNumber). Byte 3 will
                       contain the socket number for this connection path.

         Byte 3 ~ 8  = The EID of the RIP associated with this connection path.
                       Each byte in this field will encode two digits of the
                       RIP's EID number. For example, if the actual EID number
                       on the label attached to a RIP is 520255-0346DC then
                       bytes 3 through 8 would contain the following hex values:

                          Byte 3 = 0x52
                          Byte 4 = 0x02
                          Byte 5 = 0x55
                          Byte 6 = 0x03
                          Byte 7 = 0x46
                          Byte 8 = 0xDC

                       Note that the dash character is not represented in
                       the encoded value.

                       For a power device, the first byte (Byte 3) will
                       represent the socket number and the remaining 5 bytes
                       (Byte 4-8) will be 0.

         Byte 9 ~ the left most 4 bits

                     = The left most four bits of the 9th byte shall be used
                       to encode / decode the following integer value to
                       represent the power status of a connected server or the
                       power status of a power device socket.

                       One of the following values can be reported:

                       1 = Off    - The connection path does not have power,
                                    which could be the result of the following
                                    situation: the RIP is unplugged or the RIP
                                    is plugged in but receives no power from
                                    the target device.

                       2 = On     - The connection path has power.


         Byte 9 ~ the right most 4 bits

                     = The right most four bits of the 9th byte shall be used
                       to encode / decode the following integer value to
                       represent the viewer session status of a connection path.
                       For a power device or power device socket, this value is
                       always 1 since viewer sessions are not supported.

                       One of the following values can be reported:

                       1 = Idle     - There is not a viewer session active on
                                      this connection path.

                       2 = Active   - There is an active viewer session on this
                                      connection path.

                       3 = Blocked  - The connection path is blocked meaning a
                                      viewer session cannot be established to
                                      this connection path because of another
                                      viewer session is currently using a
                                      resource required by this connection path
                                      in order to establish a connection path.
                                      A viewer session cannot be blocked by
                                      a virtual media session.

         Byte 10 ~ the left most 4 bits

                     = The left most four bits of the 10th byte shall be used
                       to encode / decode the following integer value to
                       represent the virtual media session status of a
                       connection path. For a power device or power device
                       socket, this value is always 1 since virtual media
                       sessions are not supported.

                       One of the following values can be reported:

                       1 = Idle     - There is not a virtual media session
                                      active on this connection path.

                       2 = Active   - There is a virtual media session on this
                                      connection path.

                       3 = Blocked  - The connection path is blocked meaning a
                                      virtual media session cannot be
                                      established to this connection path
                                      because of another virtual media session
                                      is currently using a resource required by
                                      this connection path in order to establish
                                      a connection path. A virtual media session
                                      cannot be blocked by a viewer session.

         Byte 10 ~ the right most 4 bits
                     = The right most four bits of the 10th byte shall be used
                       for future use and they will have a value of 0.

         Every connection path will be packed into this object in 10 byte
         increments one after the other. The connection paths do not have to be
         packed in any specific order. Note that the size of this object could
         conceivably be as large as shown in the following calculation with
         these assumptions.
            - 24 channel switch connected to each port of the appliance
            - 4 power devices connected to appliance, each having 32 outlets

         (((16 ports X 24 channels) + (4 power devices X 32 power device sockets))
            X 10 bytes) + (2 byte Header) = 5122.
         "
      ::= { dsrTrapObject 12 }

avctDsrTrapObjectImageFileUpgradeResult OBJECT-TYPE
      SYNTAX ImageFileUpgradeResultsEnum
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to report the result of an
         image file upgrade. The result is for the main image file that
         contains all of the software components for the entire appliance.
         "
      ::= { dsrTrapObject 13 }

avctDsrTrapObjectIqAdaptorImageUpgradeResult OBJECT-TYPE
      SYNTAX IqAdaptorUpgradeResultsEnum
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to report the result of an IQ Adaptor
         image upgrade.
         "
      ::= { dsrTrapObject 14 }

avctDsrTrapObjectTypeOfImage OBJECT-TYPE
      SYNTAX INTEGER {
                        boot(1),
                        app(2)
                     }
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to report the type of software
         image for which the trap condition occurred.
         "
      ::= { dsrTrapObject 15 }

avctDsrTrapObjectInputPort OBJECT-TYPE
      SYNTAX INTEGER
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the appliance input port
         number for which the trap condition occurred. An input port is defined
         here as an ARI port that interfaces the data traffic coming from
         or going directly or indirectly to a target device. The values range
         from 1 to the maximum number of ARI ports.
         "
      ::= { dsrTrapObject 16 }

avctDsrTrapObjectSwitchChannel OBJECT-TYPE
      SYNTAX INTEGER
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the cascade switch channel
         number for which the trap condition occurred. The object can contain
         a value of 0 which means no switch channel is associated with the
         trap condition.
         "
      ::= { dsrTrapObject 17 }

avctDsrTrapObjectFileName OBJECT-TYPE
      SYNTAX DisplayString ( SIZE (0..12) )
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the name of a file
         for which the trap condition occurred.
         "
      ::= { dsrTrapObject 18 }

avctDsrTrapObjectActiveSessions OBJECT-TYPE
      SYNTAX INTEGER
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the current number of
         active sessions associated with the connection for which the
         trap condition occurred.  This count should include viewer and virtual
         media sessions, and it should not include any stealth connections.
         "
      ::= { dsrTrapObject 19 }

avctDsrTrapObjectCascadeSwitchName OBJECT-TYPE
      SYNTAX UTF8String ( SIZE (0..64) )
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the cascade switch
         for which the trap condition occurred.
         "
      ::= { dsrTrapObject 20 }

avctDsrTrapObjectOldCascadeSwitchName OBJECT-TYPE
      SYNTAX UTF8String ( SIZE (0..64) )
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the old name of a
         cascade switch whose name was changed.
         "
      ::= { dsrTrapObject 21 }

avctDsrTrapObjectOldServerName OBJECT-TYPE
      SYNTAX UTF8String ( SIZE (0..64) )
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the old name of
         a server whose name was changed.
         "
      ::= { dsrTrapObject 22 }

avctDsrTrapObjectSpcDeviceLocation OBJECT-TYPE
      SYNTAX UTF8String ( SIZE (0..32) )
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the power device
         location for which the trap condition occurred.
         "
      ::= { dsrTrapObject 23 }

avctDsrTrapObjectSpcDevicePort OBJECT-TYPE
      SYNTAX INTEGER (1..2)
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the appliance port
         that the power device is attached to for which the trap condition
         occurred.
         "
      ::= { dsrTrapObject 24 }

avctDsrTrapObjectSpcDeviceLogin OBJECT-TYPE
      SYNTAX UTF8String ( SIZE (0..32) )
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the Login Name
         for which the trap condition occurred.
         "
      ::= { dsrTrapObject 25 }

avctDsrTrapObjectSpcSocket OBJECT-TYPE
      SYNTAX INTEGER (1..16)
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the power device socket
         number for which the trap condition occurred.
         "
      ::= { dsrTrapObject 26 }

avctDsrTrapObjectOldName OBJECT-TYPE
      SYNTAX UTF8String ( SIZE (0..64) )
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the old name of a port
         or power device socket for which the trap condition occurred.
         "
      ::= { dsrTrapObject 27 }

avctDsrTrapObjectItemName OBJECT-TYPE
      SYNTAX UTF8String ( SIZE (0..64) )
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the name of a port
         or power device socket for which the trap condition occurred.
         "
      ::= { dsrTrapObject 28 }

avctDsrTrapObjectSpcDeviceInlet OBJECT-TYPE
      SYNTAX INTEGER
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the inlet of a power device
         for which the trap condition occurred.
         "
      ::= { dsrTrapObject 29 }

avctDsrTrapObjectSpcDeviceNumber OBJECT-TYPE
      SYNTAX INTEGER
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the power device number
         that is attached to an appliance port for which the trap
         condition occurred.
         "
      ::= { dsrTrapObject 30 }

avctDsrTrapObjectOldInputPort OBJECT-TYPE
      SYNTAX INTEGER
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the old appliance input port
         number for which the trap condition occurred. An input port is defined
         here as an ARI port that interfaces the data traffic coming from
         or going directly or indirectly to a target device. The values range
         from 1 to the maximum number of ARI ports.
         "
      ::= { dsrTrapObject 31 }

avctDsrTrapObjectPowerSupply OBJECT-TYPE
      SYNTAX INTEGER
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the power supply which failed
         or lost power.
         "
      ::= { dsrTrapObject 32 }

avctDsrTrapObjectSpcDeviceCircuit OBJECT-TYPE
      SYNTAX INTEGER
      ACCESS not-accessible
      STATUS mandatory
  --% AVAILABILITY public
      DESCRIPTION
         "This object is sent in a trap to identify the circuit of a power device
         for which the trap condition occurred.
         "
      ::= { dsrTrapObject 33 }

END
