-------------------------------------------------------------------------------
--
--   FILE         ATTO 6500N Private SNMP MIB
--
--   DESCRIPTION  6500N SNMP Management Information Base
--
--   THIS PROGRAM AND THE INFORMATION CONTAINED HEREIN IS THE PROPERTY OF
--   ATTO TECHNOLOGY, INC. AND SHALL NOT BE REPRODUCED, COPIED, OR USED IN
--   WHOLE OR IN PART OTHER THAN AS PROVIDED FOR IN THE LICENSE AGREEMENT
--   PURSUANT TO WHICH IT WAS FURNISHED.
--
--   COPYRIGHT (c) ATTO TECHNOLOGY, INC. 2013
--   ALL RIGHTS RESERVED.
--
-------------------------------------------------------------------------------

-------------------------------------------------------------------------------
-- Standard version
-------------------------------------------------------------------------------
ATTO6500N-MIB DEFINITIONS ::= BEGIN
    IMPORTS
        DisplayString
            FROM SNMPv2-TC
        NOTIFICATION-TYPE, OBJECT-TYPE, MODULE-IDENTITY,
        enterprises, Integer32
            FROM SNMPv2-SMI
        DateAndTime, TimeInterval, TEXTUAL-CONVENTION
            FROM SNMPv2-TC
        MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
            FROM SNMPv2-CONF;

--
-- According to ftp://ftp.isi.edu/in-notes/iana/assignments/enterprise-numbers,
-- ATTO's enterprise number is registered as being 4597.
--
bridge             MODULE-IDENTITY 
    LAST-UPDATED "201304190000Z"    -- 19 Apr, 2013
    ORGANIZATION "ATTO Technology, Inc."
    CONTACT-INFO
        "ATTO"
    DESCRIPTION
        "ATTO 6500N Custom MIB"
    REVISION "201304190000Z"
    DESCRIPTION
        "Corrected table entries, names, types and max-access fields."
    REVISION "201304160000Z"
    DESCRIPTION
        "Modified Trap Definitions"
  ::= { attoMgmt 3 }

attotech                OBJECT IDENTIFIER ::= { enterprises 4547 }
attoProducts            OBJECT IDENTIFIER ::= { attotech 1 }
attoMgmt                OBJECT IDENTIFIER ::= { attotech 2 }
attoModules             OBJECT IDENTIFIER ::= { attotech 3 }
attoAgentCapability     OBJECT IDENTIFIER ::= { attotech 4 }


bridgeTraps             OBJECT IDENTIFIER ::= { bridge 0 }
bridgeIdentity          OBJECT IDENTIFIER ::= { bridge 1 }
bridgeChassis           OBJECT IDENTIFIER ::= { bridge 2 }
bridgePorts             OBJECT IDENTIFIER ::= { bridge 3 }
bridgeConfig            OBJECT IDENTIFIER ::= { bridge 4 }
bridgeTrapInfo          OBJECT IDENTIFIER ::= { bridge 5 }
bridgeMIBConformance    OBJECT IDENTIFIER ::= { bridge 6 }
bridgeMIBCompliances    OBJECT IDENTIFIER ::= { bridgeMIBConformance 1 }
bridgeMIBGroups         OBJECT IDENTIFIER ::= { bridgeMIBConformance 2 }

-------------------------------------------------------------------------------
-- TEXTUAL CONVENTIONS
-------------------------------------------------------------------------------
DisplayWWN  ::= TEXTUAL-CONVENTION 
     DISPLAY-HINT "1x "
     STATUS current 
     DESCRIPTION 
          " A Fibre Channel/SAS World Wide Name." 
     SYNTAX OCTET STRING (SIZE (8)) 
    
QSFPTech ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
        "Defines the various QSFP Technologies."
    SYNTAX INTEGER { unknown(-1), optical(1), activecopper(2), passivecopper(3) }
                      
PHYStatus ::= TEXTUAL-CONVENTION
    STATUS      current 
    DESCRIPTION
        "Operational state of a SAS phy"
    SYNTAX INTEGER { unknown (-1), online(1), offline(2) }

------------------------------------------------------------------------------
-- MIB Compliance Statements
------------------------------------------------------------------------------
bridgeBasicCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
            "The requirements for a bridge implementation."
    MODULE      -- This Module --
        MANDATORY-GROUPS  { bridgeIdentityBasicGroup,
                            bridgeChassisBasicGroup, 
                            bridgFcPortInfoBasicGroup,
                            bridgeFcPortStatisicsBasicGroup,
                            bridgeSasPortInfoBasicGroup,
                            bridgeSasPortStatisicsBasicGroup,
                            bridgeConfigBasicGroup,
                            bridgeTrapInfoBasicGroup,
                            bridgeTrapsBasicGroup }
    ::= { bridgeMIBCompliances 1 }

------------------------------------------------------------------------------
-- Units of conformance
------------------------------------------------------------------------------
bridgeIdentityBasicGroup OBJECT-GROUP
    OBJECTS { bridgeUniqueId, vendorID, modelName, primaryFirmwareRevision, 
              primaryFirmwareBuildDate, hardwareVersion, 
              secondaryFirmwareRevision, secondaryFirmwareBuildDate,
              serialNumber, bridgeName }
    STATUS       current
    DESCRIPTION
        "The bridge identity information group."
    ::= { bridgeMIBGroups 1 }

bridgeChassisBasicGroup OBJECT-GROUP
    OBJECTS { lastReboot, uptime, lastRebootReason, minimumOperatingTemp,
              maximumOperatingTemp, temperatureHighAlertSetting,
              temperatureLowAlertSetting, chassisTemperature,
              chassisTemperatureStatus, dramSingleBitErrorCount,
              chassisThroughputStatus, 
              fcSFPVendor, fcSFPSerialNum, fcSFPPartNum, 
              fcSFPDataRateCapability, 
              sasQSFPVendor, sasQSFPSerialNum,
              sasQSFPType, sasQSFPPartNum }
    STATUS       current
    DESCRIPTION
        "The bridge chassis information group."
    ::= { bridgeMIBGroups 2 }

bridgFcPortInfoBasicGroup OBJECT-GROUP
    OBJECTS { fcPortPortNumber, fcPortOperationalState,
              fcPortAdminState, fcPortDataRateNegotiated,
              fcPortConnModeNegotiated, fcPortDataRateConfigured,
              fcPortConnModeConfigured, fcPortDataRateCapability,
              fcPortNodeName, fcPortPortName,
              fcPortPeerName }
    STATUS       current
    DESCRIPTION
        "The bridge ports information group."
    ::= { bridgeMIBGroups 3 }

bridgeFcPortStatisicsBasicGroup OBJECT-GROUP
    OBJECTS { fcStatsTxWords,
              fcStatsRxWords, fcStatsTimeSinceReset,
              fcStatsErrLinkFailure, fcStatsErrLossOfSync,
              fcStatsErrInvalidCRC, fcStatsErrInvalidTxWords,
              fcStatsErrLipCount, fcStatsErrNOSCount,
              fcStatsErrSignalLoss, fcStatsErrPrimitive }
    STATUS       current
    DESCRIPTION
        "The bridge ports information group."
    ::= { bridgeMIBGroups 4 }

bridgeSasPortInfoBasicGroup OBJECT-GROUP
    OBJECTS { sasPortPortNumber, sasPortOperationalState,
              sasPortPhy1State, sasPortPhy2State,
              sasPortPhy3State, sasPortPhy4State,
              sasPortAdminState, sasPortDataRateCapability,
              sasPortDataRateNegotiated, sasPortAddress }
    STATUS       current
    DESCRIPTION
        "The bridge ports information group."
    ::= { bridgeMIBGroups 5 }

bridgeSasPortStatisicsBasicGroup OBJECT-GROUP
    OBJECTS { sasPhyStatsTimeSinceReset, sasPhyStatsErrLinkChanged,
              sasPhyStatsErrInvalidCRC, sasPhyStatsErrPhyReset,
              sasPhyStatsErrLossOfSync, sasPhyStatsErrDisparityCount,
              sasPhyStatsErrInvalidDwords }
    STATUS       current
    DESCRIPTION
        "The bridge ports information group."
    ::= { bridgeMIBGroups 6}

bridgeConfigBasicGroup OBJECT-GROUP
    OBJECTS { trapsEnabled, snmpUpdatesEnabled }
    STATUS       current
    DESCRIPTION
        "The bridge configuration information group."
    ::= { bridgeMIBGroups 7 }

bridgeTrapInfoBasicGroup OBJECT-GROUP
    OBJECTS { trapMaxClients, trapClientIpAddress, trapClientPort, 
              trapClientFilter }
    STATUS       current
    DESCRIPTION
        "The bridge trap information group."
    ::= { bridgeMIBGroups 8 }

bridgeTrapsBasicGroup NOTIFICATION-GROUP
    NOTIFICATIONS { bridgeTemperatureWarning, fcPortTransition,
                    sasPortTransition, bridgeThroughputWarning }
    STATUS       current
    DESCRIPTION
        "The bridge traps group."
    ::= { bridgeMIBGroups 9 }

-------------------------------------------------------------------------------
-- OBJECT DEFINITIONS
-------------------------------------------------------------------------------

--
--
-- Bridge Identity
--
bridgeUniqueId  OBJECT-TYPE
    SYNTAX      DisplayWWN
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "8-octets uniquely identifying this HW element."
    ::=  { bridgeIdentity 1 }

vendorID        OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..32)) 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION  "Vendor ID for this HW element."
    ::=  { bridgeIdentity 2 }
    
modelName       OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..32))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION  "Product/Model name of this HW element."
    ::=  { bridgeIdentity 3 }
    
primaryFirmwareRevision OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..20))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Build Number, Version Number and Base Version for the firmware on
                 the primary partition (active firmware image)."
    ::=  { bridgeIdentity 4 }

primaryFirmwareBuildDate OBJECT-TYPE
    SYNTAX      DateAndTime (SIZE (8))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION  "Active firmware image build date and time (no time zone offset)."
    ::=  { bridgeIdentity 5 }

hardwareVersion OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION  "Current version of 6500N hardware."
    ::=  { bridgeIdentity 6 }

secondaryFirmwareRevision OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..12))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Version Number and Build Number for the firmware on the secondary
                 partition (backup firmware image)."
    ::=  { bridgeIdentity 7 }
    
secondaryFirmwareBuildDate  OBJECT-TYPE
    SYNTAX      DateAndTime (SIZE (8))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION  "Backup Firmware image build date and time (no time zone offset)."
    ::=  { bridgeIdentity 8 }

serialNumber    OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..32))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION  "Serial Number of this HW element."
    ::=  { bridgeIdentity 9 }

bridgeName    OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..32))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION  "User defined symbolic name assigned to this HW element."
    ::=  { bridgeIdentity 10 }


--
-- Chassis Monitoring
--
lastReboot      OBJECT-TYPE
    SYNTAX      DateAndTime (SIZE (8))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Date and time of last reboot."
    ::=    { bridgeChassis 1 }
    
uptime          OBJECT-TYPE
    SYNTAX      TimeInterval    -- Will roll over in 248 days
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Time since last reboot, in units of 0.01 seconds"
    ::=    { bridgeChassis 2 }

lastRebootReason    OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..100))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Plain text reason for last reboot."
    ::=     { bridgeChassis 3 }
   
minimumOperatingTemp    OBJECT-TYPE 
    SYNTAX      Integer32         
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Minimum Safe Operating Temperature, in degrees C"
    ::=     { bridgeChassis 4 }

maximumOperatingTemp    OBJECT-TYPE
    SYNTAX      Integer32         
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Maximum Safe Operating Temperature, in degrees C"
    ::=     { bridgeChassis 5 }

temperatureHighAlertSetting  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "High temperature warning threshold, in degrees C"
    ::=     { bridgeChassis 6 }
    
temperatureLowAlertSetting  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Low temperature warning threshold, in degrees C"
    ::=     { bridgeChassis 7 }
    
chassisTemperature      OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Current Chassis Temperature, in degrees C"
    ::=     { bridgeChassis 8 }
    
chassisTemperatureStatus OBJECT-TYPE
    SYNTAX      INTEGER { normal(1), warning(2), critical(3) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The current sensor status (normal, warning or critical). 
                 Normal indicates the temperature for this HW element is within 
                 the safe range. Warning indicates that the temperature for this
                 HW element has passed the warning threshold but is still within 
                 the safe range. Critical indicates that the temperature for this
                 HW element is not within the safe operating temperature range."
    ::= { bridgeChassis 9 }

dramSingleBitErrorCount OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Number of Single-bit ECC errors since last reboot"
    ::=     { bridgeChassis 10 }
    
chassisThroughputStatus OBJECT-TYPE
    SYNTAX      INTEGER { normal(1), warning(2) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Overall bridge throughput status (normal, warning).
                 Normal indicates that there is no data bottleneck.
                 Warning indicates that the aggregate fibre channel 
                 throughput has exceeded 50,000 IOPS."    
    ::= { bridgeChassis 11 }
 
fcSFPInfoTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF FCSFPInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Stores configuration information relating to installed FibreChannel SFPs."
    ::= { bridgeChassis 12 }
    
sasQSFPInfoTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SASQSFPInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current   
    DESCRIPTION "Stores configuration information relating to installed SAS QSFPs."
    ::= { bridgeChassis 13 }
    
--
-- FC SFP Info Table
fcSFPInfoEntry OBJECT-TYPE
    SYNTAX      FCSFPInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Stores information about installed fibre channel SFPs."
    INDEX       { fcSFPIndex }
    ::= { fcSFPInfoTable 1 }

FCSFPInfoEntry ::= SEQUENCE {
                              fcSFPIndex               Integer32,
                              fcSFPVendor              DisplayString,
                              fcSFPSerialNum           DisplayString,
                              fcSFPPartNum             DisplayString,
                              fcSFPDataRateCapability  INTEGER
                             }

fcSFPIndex      OBJECT-TYPE
    SYNTAX      Integer32 (1..2)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Used to index the SFP in the SFP Info table."
    ::= { fcSFPInfoEntry 1 }
    
fcSFPVendor     OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..16))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "SFP vendor name"
    ::= { fcSFPInfoEntry 2 }
    
fcSFPSerialNum  OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..16))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "SFP serial number"
    ::= { fcSFPInfoEntry 3 }
    
fcSFPPartNum    OBJECT-TYPE    
    SYNTAX      DisplayString (SIZE (0..16))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "SFP vendor-supplied part number" 
    ::= { fcSFPInfoEntry 4 }  
    
fcSFPDataRateCapability     OBJECT-TYPE 
    SYNTAX      INTEGER { gb2(2), gb4(4), gb8(8), gb16(16) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Maximum data rate capability of the fibre channel SFP."
    ::= { fcSFPInfoEntry 5 }   
       
--
-- SAS QSFP Info Table
sasQSFPInfoEntry OBJECT-TYPE
    SYNTAX      SASQSFPInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Stores information about installed SAS QSFPs."
    INDEX       { sasQSFPIndex }
    ::= { sasQSFPInfoTable 1}

SASQSFPInfoEntry ::= SEQUENCE {
                              sasQSFPIndex       Integer32,
                              sasQSFPVendor      DisplayString,
                              sasQSFPSerialNum   DisplayString,
                              sasQSFPType        QSFPTech,
                              sasQSFPPartNum     DisplayString
                             }

sasQSFPIndex    OBJECT-TYPE
    SYNTAX      Integer32 (1..2)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Used to index the QSFP in the QSFP Info table."
    ::= { sasQSFPInfoEntry 1 }
    
sasQSFPVendor OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..16))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "QSFP vendor name"
    ::= { sasQSFPInfoEntry 2 }
    
sasQSFPSerialNum  OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..16))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "QSFP serial number"
    ::= { sasQSFPInfoEntry 3 }

sasQSFPType OBJECT-TYPE 
    SYNTAX      QSFPTech
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "QSFP type"
    ::= { sasQSFPInfoEntry 4 }                
    
sasQSFPPartNum  OBJECT-TYPE    
    SYNTAX      DisplayString (SIZE (0..16))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "QSFP vendor-supplied part number" 
    ::= { sasQSFPInfoEntry 5 }  


--
--
--
-- Bridge Ports
--
fcPortInfoTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF FCPortInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current   
    DESCRIPTION "Stores fibre channel specific information for each fibre channel port."
    ::= { bridgePorts 1 }
    
fcPortStatisticsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF FcPortStatisticsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Stores fibre channel specific I/O and error statistics 
                 for each fibre channel port."
    ::= { bridgePorts 2 }
    
sasPortInfoTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SASPortInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Stores SAS specific information for each
                 SAS port."
    ::= { bridgePorts 3 } 

sasPhyStatisticsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SasPHYStatisticsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Stores SAS specific I/O and error statistics for each SAS PHY."
    ::= { bridgePorts 4 }
  
--
-- FcPortEntry table
--
fcPortInfoEntry OBJECT-TYPE
    SYNTAX      FCPortInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Stores state and capability information about 
                 the fibre channel ports."
    INDEX       { fcPortIndex }
    ::= { fcPortInfoTable 1}

FCPortInfoEntry ::= SEQUENCE {
                              fcPortIndex              Integer32,
                              fcPortPortNumber         Integer32,
                              fcPortOperationalState   INTEGER,
                              fcPortAdminState         INTEGER,
                              fcPortDataRateNegotiated INTEGER,
                              fcPortConnModeNegotiated INTEGER,
                              fcPortDataRateConfigured INTEGER,
                              fcPortConnModeConfigured INTEGER,
                              fcPortDataRateCapability INTEGER,
                              fcPortNodeName           DisplayWWN,
                              fcPortPortName           DisplayWWN,
                              fcPortPeerName           DisplayWWN 
                             }

fcPortIndex     OBJECT-TYPE
    SYNTAX      Integer32 (1..2)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Used to index the fibre channel port in the FC Port Entry table."
    ::= { fcPortInfoEntry 1 }

fcPortPortNumber OBJECT-TYPE
    SYNTAX      Integer32 (1..2)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The fibre channel port number."
    ::= { fcPortInfoEntry 2 }

fcPortOperationalState  OBJECT-TYPE
    SYNTAX      INTEGER  { unknown (-1), online(1), offline(2) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Operational state of the fibre channel port."
    ::= { fcPortInfoEntry 3 }

fcPortAdminState  OBJECT-TYPE
    SYNTAX      INTEGER  { unknown (-1), disabled(1), enabled(2) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Administrative state of the fibre channel port. 
                 Indicates whether the port is enabled or disabled."
    ::= { fcPortInfoEntry 4 }

fcPortDataRateNegotiated  OBJECT-TYPE
    SYNTAX      INTEGER  { unknown (-1), gb2(2), gb4(4), gb8(8) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Current negotiated data rate of fibre channel port."
    ::= { fcPortInfoEntry 5 }

fcPortConnModeNegotiated  OBJECT-TYPE
    SYNTAX      INTEGER  { unknown (-1), loop(1), ptp(2) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Current negotiated mode of the fibre channel port."
    ::= { fcPortInfoEntry 6 }

fcPortDataRateConfigured  OBJECT-TYPE
    SYNTAX      INTEGER  { auto (-1), gb2(2), gb4(4), gb8(8) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Configured data rate of fibre channel port."
    ::= { fcPortInfoEntry 7 }
   
fcPortConnModeConfigured  OBJECT-TYPE
    SYNTAX      INTEGER  { loop(1), ptp(2), looppreferred(3), ptppreferred(4) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Configured mode of the fibre channel port."
    ::= { fcPortInfoEntry 8 }

fcPortDataRateCapability  OBJECT-TYPE 
    SYNTAX      INTEGER  { gb2(2), gb4(4), gb8(8) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Maximum data rate capability of the fibre channel port. "
    ::= { fcPortInfoEntry 9 }

fcPortNodeName  OBJECT-TYPE
    SYNTAX      DisplayWWN
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Fibre channel node name."
    ::= { fcPortInfoEntry 10 }
    
fcPortPortName  OBJECT-TYPE
    SYNTAX      DisplayWWN
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Fibre channel port name."
    ::= { fcPortInfoEntry 11 }    
    
fcPortPeerName  OBJECT-TYPE
    SYNTAX      DisplayWWN
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The port name of the fabric-attached fibre channel peer. 
                 Only valid for a switched fabric. Direct-connected fibre 
                 channel ports will respond with all zeros."
    ::= { fcPortInfoEntry 12 }

--
-- fcPortStatistics Table
--
-- Most of the fc Port statistics are read-write.  Writing a value to any
-- of the statistics counters will clear them all (set the counters to 0).
--
fcPortStatisticsEntry OBJECT-TYPE
    SYNTAX      FcPortStatisticsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Stores statistics about fibre channel ports."
    INDEX       { fcStatsIndex }
    ::= { fcPortStatisticsTable 1 }
    
FcPortStatisticsEntry ::= SEQUENCE {
                              fcStatsIndex              Integer32, 
                              fcStatsTxWords            Unsigned32,
                              fcStatsRxWords            Unsigned32,
                              fcStatsTimeSinceReset     TimeInterval,
                              fcStatsErrLinkFailure     Unsigned32,
                              fcStatsErrLossOfSync      Unsigned32,
                              fcStatsErrInvalidCRC      Unsigned32,
                              fcStatsErrInvalidTxWords  Unsigned32,
                              fcStatsErrLipCount        Unsigned32,
                              fcStatsErrNOSCount        Unsigned32,
                              fcStatsErrSignalLoss      Unsigned32,
                              fcStatsErrPrimitive       Unsigned32
                              }
                              
fcStatsIndex    OBJECT-TYPE
    SYNTAX      Integer32 (1..2)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Used to index the fibre channel port in the Fibre Channel Port 
  Statistics table."
    ::= { fcPortStatisticsEntry 1 }

fcStatsTxWords  OBJECT-TYPE
    SYNTAX      Unsigned32 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Number of words transmitted on this fibre channel port."
    ::= { fcPortStatisticsEntry 2 }
    
fcStatsRxWords  OBJECT-TYPE
    SYNTAX      Unsigned32 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Number of words received on this fibre channel port."
    ::= { fcPortStatisticsEntry 3 }    
    
fcStatsTimeSinceReset   OBJECT-TYPE
    SYNTAX              TimeInterval 
    MAX-ACCESS          read-only
    STATUS              current
    DESCRIPTION "Amount of time since the fibre channel port statistics were
                reset."
    ::= { fcPortStatisticsEntry 4 }        
    
fcStatsErrLinkFailure   OBJECT-TYPE
    SYNTAX              Unsigned32 
    MAX-ACCESS          read-write
    STATUS              current
    DESCRIPTION "Number of link failure events on this fibre channel port."
    ::= { fcPortStatisticsEntry 5 }     
       
fcStatsErrLossOfSync    OBJECT-TYPE
    SYNTAX              Unsigned32 
    MAX-ACCESS          read-write
    STATUS              current
    DESCRIPTION " Number of loss of sync events on this fibre channel port."
    ::= { fcPortStatisticsEntry 6 } 
    
fcStatsErrInvalidCRC    OBJECT-TYPE
    SYNTAX              Unsigned32 
    MAX-ACCESS          read-write
    STATUS              current
    DESCRIPTION " Number of frames with invalid CRCs on this fibre channel port."
    ::= { fcPortStatisticsEntry 7 } 
    
fcStatsErrInvalidTxWords    OBJECT-TYPE
    SYNTAX                  Unsigned32 
    MAX-ACCESS              read-write
    STATUS                  current
    DESCRIPTION " Number of invalid TX word events on this fibre channel port."
    ::= { fcPortStatisticsEntry 8 } 
    
fcStatsErrLipCount      OBJECT-TYPE
    SYNTAX              Unsigned32 
    MAX-ACCESS          read-write
    STATUS              current
    DESCRIPTION " Number of LIP events on this fibre channel port."
    ::= { fcPortStatisticsEntry 9 } 
    
fcStatsErrNOSCount      OBJECT-TYPE
    SYNTAX              Unsigned32 
    MAX-ACCESS          read-write
    STATUS              current
    DESCRIPTION " Number of NOS events on this fibre channel port."
    ::= { fcPortStatisticsEntry 10 } 
    
fcStatsErrSignalLoss    OBJECT-TYPE
    SYNTAX              Unsigned32 
    MAX-ACCESS          read-write
    STATUS              current
    DESCRIPTION " Number of loss of signal events on this fibre channel port."
    ::= { fcPortStatisticsEntry 11 } 
    
fcStatsErrPrimitive     OBJECT-TYPE
    SYNTAX              Unsigned32 
    MAX-ACCESS          read-write
    STATUS              current
    DESCRIPTION " Number of primitive sequential protocol errors on this 
                 fibre channel port."
    ::= { fcPortStatisticsEntry 12 }        


--
-- SasPortEntry table
--
sasPortInfoEntry OBJECT-TYPE
    SYNTAX      SASPortInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Stores information about the SAS ports."

    INDEX       { sasPortIndex }
    ::= { sasPortInfoTable 1}

SASPortInfoEntry ::= SEQUENCE {
                              sasPortIndex              Integer32,
                              sasPortPortNumber         Integer32,
                              sasPortOperationalState   INTEGER,
                              sasPortPhy1State          PHYStatus,
                              sasPortPhy2State          PHYStatus,
                              sasPortPhy3State          PHYStatus,
                              sasPortPhy4State          PHYStatus,
                              sasPortAdminState         INTEGER, 
                              sasPortDataRateCapability INTEGER,
                              sasPortDataRateNegotiated INTEGER,
                              sasPortAddress            DisplayWWN
                             }

sasPortIndex  OBJECT-TYPE
    SYNTAX      Integer32 (1..2)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Used to index the SAS port in the SAS Port Entry table."
    ::= { sasPortInfoEntry 1 }

sasPortPortNumber  OBJECT-TYPE
    SYNTAX      Integer32 (1..2)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The SAS port number."
    ::= { sasPortInfoEntry 2 }

sasPortOperationalState OBJECT-TYPE
    SYNTAX      INTEGER { unknown (-1), online(1), offline(2), degraded(3) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Operational state of this entire SAS port. Degraded state is entered 
                 when fewer than all four PHYs are online. Offline state is entered
                 when all four PHYs are offline." 
    ::= { sasPortInfoEntry 3 }

sasPortPhy1State OBJECT-TYPE
    SYNTAX      PHYStatus
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Operational state of SAS PHY 1 of this SAS port."
    ::= { sasPortInfoEntry 4 }
    
sasPortPhy2State OBJECT-TYPE
    SYNTAX      PHYStatus
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Operational state of SAS PHY 2 of this SAS port."
    ::= { sasPortInfoEntry 5 }
        
sasPortPhy3State OBJECT-TYPE
    SYNTAX      PHYStatus
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Operational state of SAS PHY 3 of this SAS port."
    ::= { sasPortInfoEntry 6 }
    
sasPortPhy4State OBJECT-TYPE
    SYNTAX      PHYStatus
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Operational state of SAS PHY 4 of this SAS port."
    ::= { sasPortInfoEntry 7 }
    
sasPortAdminState OBJECT-TYPE
    SYNTAX      INTEGER  { unknown (-1), disabled(1), enabled(2) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Administrative state of this SAS port. 
                 Indicates whether the port is enabled or disabled."
    ::= { sasPortInfoEntry 8 }

sasPortDataRateCapability  OBJECT-TYPE
    SYNTAX      INTEGER  { gb1point5(1), gb3(3), gb6(6) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Maximum data rate capability of the SAS port."
    ::= { sasPortInfoEntry 9 }

sasPortDataRateNegotiated  OBJECT-TYPE
    SYNTAX      INTEGER  { gb1point5(1), gb3(3), gb6(6) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION " Current negotiated data rate of this SAS port."
    ::= { sasPortInfoEntry 10 }
   
sasPortAddress  OBJECT-TYPE
    SYNTAX      DisplayWWN
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "SAS Port Address."
    ::= { sasPortInfoEntry 11 }
   
--
-- sasPhyStatistics Table
--
-- Most of the sas phy statistics are read-write.  Writing a value to any
-- of the statistics counters will clear them all (set the counters to 0).
--

sasPhyStatisticsEntry OBJECT-TYPE
    SYNTAX      SasPHYStatisticsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Stores statistics about SAS Phys."
    INDEX       { sasPhyStatsIndex }
    ::= { sasPhyStatisticsTable 1 }
    
SasPHYStatisticsEntry ::= SEQUENCE {
                              sasPhyStatsIndex              Integer32, 
                              sasPhyStatsTimeSinceReset     TimeInterval,
                              sasPhyStatsErrLinkChanged     Unsigned32,
                              sasPhyStatsErrInvalidCRC      Unsigned32,
                              sasPhyStatsErrPhyReset        Unsigned32,
                              sasPhyStatsErrLossOfSync      Unsigned32,
                              sasPhyStatsErrDisparityCount  Unsigned32,
                              sasPhyStatsErrInvalidDwords   Unsigned32
                              }
                              
sasPhyStatsIndex    OBJECT-TYPE
    SYNTAX      Integer32 (1..8)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Used to index the SAS PHY in the SAS PHY Statistics table."
    ::= { sasPhyStatisticsEntry 1 }

sasPhyStatsTimeSinceReset   OBJECT-TYPE
    SYNTAX              TimeInterval 
    MAX-ACCESS          read-only
    STATUS              current
    DESCRIPTION "Amount of time since the SAS PHY statistics were reset on this SAS PHY."
    ::= { sasPhyStatisticsEntry 2 }     

sasPhyStatsErrLinkChanged   OBJECT-TYPE
    SYNTAX              Unsigned32 
    MAX-ACCESS          read-write
    STATUS              current
    DESCRIPTION " Number of link changed events on this SAS PHY."
    ::= { sasPhyStatisticsEntry 3 }    

sasPhyStatsErrInvalidCRC    OBJECT-TYPE
    SYNTAX                  Unsigned32 
    MAX-ACCESS              read-write
    STATUS                  current
    DESCRIPTION " Number of Invalid CRC events on this SAS PHY."
    ::= { sasPhyStatisticsEntry 4 } 

sasPhyStatsErrPhyReset  OBJECT-TYPE
    SYNTAX              Unsigned32 
    MAX-ACCESS          read-write
    STATUS              current
    DESCRIPTION " Number of Phy Reset events on this SAS PHY."
    ::= { sasPhyStatisticsEntry 5 }       
    
sasPhyStatsErrLossOfSync    OBJECT-TYPE
    SYNTAX                  Unsigned32 
    MAX-ACCESS              read-write
    STATUS                  current
    DESCRIPTION " Number of loss of sync events on this SAS PHY."
    ::= { sasPhyStatisticsEntry 6} 
    
sasPhyStatsErrDisparityCount    OBJECT-TYPE
    SYNTAX                      Unsigned32 
    MAX-ACCESS                  read-write
    STATUS                      current
    DESCRIPTION " Number of disparity error events on this SAS PHY."
    ::= { sasPhyStatisticsEntry 7 }    

sasPhyStatsErrInvalidDwords    OBJECT-TYPE
    SYNTAX                     Unsigned32 
    MAX-ACCESS                 read-write
    STATUS                     current
    DESCRIPTION " Number of invalid DWORD events on this SAS PHY."
    ::= { sasPhyStatisticsEntry 8 }    
    
-- 
--
-- Bridge Config 
--
trapsEnabled OBJECT-TYPE
    SYNTAX      INTEGER { disabled(1), enabled(2) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Indicates whether traps are enabled or disabled."
    ::= { bridgeConfig 1 }

snmpUpdatesEnabled OBJECT-TYPE
    SYNTAX      INTEGER { disabled(1), enabled(2) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Indicates whether SNMP updates are enabled or disabled."
    ::= { bridgeConfig 2 }


-------------------------------------------------------------------------------
-- TRAP DEFINITIONS
-------------------------------------------------------------------------------
trapMaxClients OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The maximum number of SNMP trap recipients supported by this
                 HW element."
    ::= { bridgeTrapInfo 1 }


--
-- Trap table definition
--
trapClientTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF TrapClientEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Stores a row for each IP address/port number configured to receive traps."
    ::= { bridgeTrapInfo 2 }

trapClientEntry OBJECT-TYPE
    SYNTAX      TrapClientEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Ip/Port pair for a specific client."
    INDEX       { trapClientIndex }
    ::= { trapClientTable 1 }

TrapClientEntry ::= SEQUENCE {
                        trapClientIndex         Integer32,
                        trapClientIpAddress     DisplayString,
                        trapClientPort          Integer32,
                        trapClientFilter        INTEGER
                       }

trapClientIndex OBJECT-TYPE
    SYNTAX      Integer32 (0..8)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Used to index a trap client in the trapClientTable."
    ::= { trapClientEntry 1 }

trapClientIpAddress OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..48))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The IP address of a client registered for traps in 
                 dotted notation."
    ::= { trapClientEntry 2 }

trapClientPort OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The UDP port to send traps for this trap client.  Normally this 
                 would be the standard trap port (162).  This object is an index
                 and must be specified to create a row in this table."
    ::= { trapClientEntry 3 }

trapClientFilter OBJECT-TYPE
    SYNTAX      INTEGER {
                         none          (1),
                         critical      (2),
                         warning       (3),
                         informational (4),
                         all           (5)
                        }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "This value defines the trap severity filter for this trap
                 host.  The unit will send traps to this trap client that 
                 have a severity level less than or equal to this value.
                 The default value of this object is 'warning'."
    ::= { trapClientEntry 4 }

--
-- Bridge specific traps
--

bridgeTemperatureWarning NOTIFICATION-TYPE
    OBJECTS   {  chassisTemperatureStatus, chassisTemperature }
    STATUS      current
    DESCRIPTION "Supports notification of over/under temperature warnings.
                 
                 The following information is returned:
                    tempStatus       - the current temperature status 
                                       (normal, warning, critical)
                                       Where normal indicates the temperature 
                                       is within the safe range. Warning indicates 
                                       the warning threshold has been reached. 
                                       Critical indicates that the temperature
                                       is outside the safe range.

                    temperature      - current temperature of the sensor

                 Recommended severity level (for filtering): warning"
    ::= { bridgeTraps 1 }


fcPortTransition NOTIFICATION-TYPE
    OBJECTS   { fcPortPortNumber, fcPortOperationalState }
    STATUS      current
    DESCRIPTION "Supports notification of fibre channel port connectivity changes.
                 
                 The following information is returned:
                    fcPortPortNumber          - the description of the port
                    fcPortOperationalState    - the current port state

                 Recommended severity level (for filtering): informational"
    ::= { bridgeTraps 2 }
    
sasPortTransition NOTIFICATION-TYPE
    OBJECTS     { sasPortPortNumber, sasPortOperationalState }
    STATUS      current
    DESCRIPTION "Supports notification of SAS port connectivity changes.
                 
                 The following information is returned:
                    sasPortPortNumber        - the description of the port
                    sasPortOperationalState  - the current port state

                 Recommended severity level (for filtering): informational"
    ::= { bridgeTraps 3 }

bridgeThroughputWarning NOTIFICATION-TYPE
    OBJECTS   { chassisThroughputStatus }
    STATUS      current
    DESCRIPTION "Supports notification of max-throughput warning indicating a
                 potential data bottleneck.  Data throughput is measured as aggregate
                 completed I/O's per second on the Fibre Channel interfaces.
                 
                 The following information is returned:
                    ChassisthroughputStatus  - the current throughput status
                                               normal : no data bottleneck.
                                               warning: aggregate fibre channel 
                                               throughput has exceeded 50,000 IOPS.

                 Recommended severity level (for filtering): informational"
    ::=  { bridgeTraps 4 }

END
