--
-- Name:
--
--  Tandem ServerNet switch MIB
--
-- Abstract:
--
--  This file defines the management information base for SNMP for the ServerNet
--  switches.
--
--  Notes:
--
--      * Multiple hubs are possible.
--      * The MIB is specific to the Servernet group (8) under the Tandem
--        enterprise (169).
--      * The ServerNet subtree is:
--          tandem      1.3.6.1.4.1.169
--           servernet      1.3.6.1.4.1.169.8
--            serverNetSwitch   1.3.6.1.4.1.169.8.3
--             
--
--      * snetSwitch    Contains configuration and statistical information
--                      of the ServerNet switch.
--      * snetSwitchTable  The actual table containing the switch entries.
--
-- Author:
--
--  CC 8/1/96
--
-- History:
--  11/25/96  major revision.  Changed performance counters to be a
--            table containing the selected performance count.  Moved
--            per port config data and errors into 1 table indexed
--            by the port number.
--  12/11/96  changed separate error counters to be a single enumerated
--            error and added per port  Link Alive indicators
--  01/07/97  Removed RouterMibRev section, changed configuration data
--            Changed Router to Switch throughout, add trap enables,
--            changed register definitions to exactly match Cougar Router
--            Spec.
--  01/21/97  Cleanup from spec review comments
--  02/19/97  Move PortStatusTable under ErrorData and change ErrorData
--            to ErrorStatusData.  Add PortLinkAlive table separate
--            from PortStatusTable.
--  03/14/97  Removed Error and Performance Data from first release.
--            Added SwitchXY index to associate X and Y fabric switches. 
--  03/25/97  Added Routing ID Register Data at the end of 
--            snetSwitchConfigData, removed traps for first release 
--  04/01/97  Added SwitchIdentifiers data at the end of
--            snetSwitchConfigData
--  04/21/97  changed serverNet from 1.3.6.1.4.1.169.4 to 
--            1.3.6.1.4.1.169.8 due to conflict with S4000.
--  05/29/97  changed snetSwitchIDX/Y definitions from INTEGER to 
--            DisplayString so it is easier to match X and Y fabric switches. 
--  06/10/97  Added Mib Revision for versioning 
--  06/25/97  Additions for release 1B.  Performance data, traps.  
--  10/27/97  Rewrite to follow SMIC rules, remove unused fields 
--  01/20/98  Removed XY indexing.  Changed all switches to be separate unrelated
--            entities since X and Y fabric may not be completely mirrored 
--  04/23/98  Changes for Lighthouse Release 2 version 1.  
--  05/06/98  included definitions of "tandem" and "servernet" instead of
--            sourcing in from PCISNET-MIB.  
--  06/09/98  Added Manufacturing ID, Part Number and Serial Number 
--            information for each neighbor in the snetSwitchSANMapTable.
--            The snetSwitchConfigTable was updated with State, Domain, Name
--            and Fabric information for each switch.  
-- 10/14/98   Changes for Switch 2 including Router leaf table, Performance 
--            counter changes and daughter card info.
-- 10/26/98   Added new trap snetSwitchFanFailure
-- 11/09/98   Added snetSwitchFanStatus, recommended actions to Traps
-- 04/14/99   Updated trap descriptions
-- 10/26/99   Fixed bug with snetPerfTimeLeft / snetPerfElapsedTime name change
-- 12/02/99   Added new enumeration for HW Status, Other, which can be used
--            for any unspecified HW errors, or errors indicated in other
--            variables, such as the Fan Status

SnetSwitch-MIB DEFINITIONS ::= BEGIN

   IMPORTS
      enterprises, Counter          FROM RFC1155-SMI
      OBJECT-TYPE                   FROM RFC-1212 
      DisplayString                 FROM RFC1213-MIB 
      TRAP-TYPE                     FROM RFC-1215;  

   tandem                    OBJECT IDENTIFIER ::= { enterprises 169 }
   serverNet                 OBJECT IDENTIFIER ::= { tandem 8 }
   serverNetSwitch           OBJECT IDENTIFIER ::= { serverNet 3 }
   snetSwitchNetworkData     OBJECT IDENTIFIER ::= { serverNetSwitch 1 }
   snetSwitchTrapEnables     OBJECT IDENTIFIER ::= { snetSwitchNetworkData 7}
   snetSwitchInfo            OBJECT IDENTIFIER ::= { serverNetSwitch 2 }
   snetSwitchConfigData      OBJECT IDENTIFIER ::= { snetSwitchInfo 1}
   snetSwitchPortData        OBJECT IDENTIFIER ::= { snetSwitchInfo 2}
   snetSwitchRoutingData     OBJECT IDENTIFIER ::= { snetSwitchInfo 3}
   snetSwitchPerformanceData OBJECT IDENTIFIER ::= { snetSwitchInfo 4}
   snetSwitchErrorStatusData OBJECT IDENTIFIER ::= { snetSwitchInfo 5} 

--
--
-- ServerNet Switch Network Data
--

   snetSwitchTotal OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "The number of ServerNet Switches (regardless of state)
          known in the network. X and Y fabric switches are
          considered separate switches in this Total count." 
      ::= { snetSwitchNetworkData 1 }

   snetSwitchRefreshTime OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-write
      STATUS  mandatory
      DESCRIPTION
         "Specifies the minimum time in seconds between refreshes
          of Mib data. Mib data is refreshed each time it is requested 
          unless the refresh interval time has not yet been reached. 
          If the specified time interval has not elapsed, the mib data
          will be retrieved from cache.  Minimum time is 5 seconds.  
          Default is 60 seconds.  Changing this to a low value can have 
          a negative impact on performance.  Changing this to a high
          value could allow mib data to become outdated."
      ::= { snetSwitchNetworkData 2 }

   snetSwitchMibRevMajor OBJECT-TYPE
      SYNTAX  INTEGER (1..65535)
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "The Major Revision level of the Switch MIB.

         A change in the major revision level represents a major change
         in the architecture of the MIB.  A change in the major revision
         level may indicate a significant change in the information
         supported and/or the meaning of the supported information.
         Correct interpretation of data may require a MIB document with
         the same major revision level."
       ::= {snetSwitchNetworkData 3}

    snetSwitchMibRevMinor OBJECT-TYPE
      SYNTAX  INTEGER (0..65535)
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "The Minor Revision level of the Switch MIB.

         A change in the minor revision level may represent some minor
         additional support, no changes to any pre-existing information
         has occurred."
      ::= {snetSwitchNetworkData 4}

   snetSwitchIDTable     OBJECT-TYPE
      SYNTAX SEQUENCE OF SnetSwitchIDEntry
      ACCESS not-accessible
      STATUS mandatory
      DESCRIPTION
          "Table containing the Switch IDs of all switches
           known in the network."
      ::= {snetSwitchNetworkData 5}

    snetSwitchIDEntry   OBJECT-TYPE
       SYNTAX SnetSwitchIDEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
        "Entry in switch table    "
       INDEX {snetSwitchIDIndex}
       ::= {snetSwitchIDTable 1}


   SnetSwitchIDEntry ::= SEQUENCE
   {
      snetSwitchIDIndex             INTEGER,
      snetSwitchID   	            DisplayString, 
      snetSwitchType                INTEGER 
   }


     snetSwitchIDIndex     OBJECT-TYPE
        SYNTAX  INTEGER(1..1000)
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
          "Index in Switch ServerNet ID Entry Table."
        ::={snetSwitchIDEntry  1}

      snetSwitchID              OBJECT-TYPE
        SYNTAX  DisplayString
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
          "Switch ID. The switch id is displayed
           as a hexidecimal value. "
         ::={snetSwitchIDEntry 2}

     snetSwitchType     OBJECT-TYPE
        SYNTAX  INTEGER{
   	      sixport(1),
            twelveport(2)
            }
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
          "Identifies the Switch type. Switch can be either a 
           6-port or 12-port switch. "
        ::={snetSwitchIDEntry  3}




   snetSwitchSANMapTable     OBJECT-TYPE
      SYNTAX SEQUENCE OF SnetSwitchSANMapEntry
      ACCESS not-accessible
      STATUS mandatory
      DESCRIPTION
          "Table containing the System Area Network map information.
           This table has an entry for each switch in the network as
           indexed by the snetSwitchIDIndex from the snetSwitchIDtable.
           There is a separate entry for each port defined on 
           the switch."
      ::= {snetSwitchNetworkData 6}

    snetSwitchSANMapEntry   OBJECT-TYPE
       SYNTAX SnetSwitchSANMapEntry
       ACCESS not-accessible
       STATUS mandatory
       DESCRIPTION
        "Entry in SAN Map table. "
       INDEX {snetSwitchIDIndex, snetSwitchSANMapPortIndex}
       ::= {snetSwitchSANMapTable 1}


   SnetSwitchSANMapEntry ::= SEQUENCE
   {
      snetSwitchSANMapPortIndex        INTEGER,
      snetSwitchSANNodeType            INTEGER,
      snetSwitchSANNodeState           INTEGER,
      snetSwitchSANNodeDomain  	   DisplayString,
      snetSwitchSANNodeID              DisplayString,
      snetSwitchSANNodeName            DisplayString,
      snetSwitchSANNodeFabric          INTEGER,
      snetSwitchSANNodeManufacturingID DisplayString,
      snetSwitchSANNodePartNumber      DisplayString,
      snetSwitchSANNodeSerialNumber    DisplayString }

 
    snetSwitchSANMapPortIndex     OBJECT-TYPE
        SYNTAX  INTEGER(0..11)
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
          "Identifies the switch port number. "
        ::={snetSwitchSANMapEntry  1}


     snetSwitchSANNodeType     OBJECT-TYPE
        SYNTAX  INTEGER{
            unknown(1),
            endNode(2),
            autoConfiguredIO(3),
            manualConfiguredIO(4), 
            switch(5) 
            }
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
          "Identifies the type of the Node connected to the switch.
           Valid values are
             Unknown(1), 
             End Node(2), 
             Auto-Configured IO(3), 
             Manual-Configured IO(4),
             Switch(5). "
       ::={snetSwitchSANMapEntry  2}

      snetSwitchSANNodeState     OBJECT-TYPE
        SYNTAX  INTEGER{
            unConfigured(1),
            configured(2)
            }
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
          "Identifies the current state of the Node connected to the
           switch. Valid values are 
 	    Unconfigured(1),
 	    Configured(2). "             
        ::={snetSwitchSANMapEntry  3}

       snetSwitchSANNodeDomain     OBJECT-TYPE
        SYNTAX  DisplayString
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
          "Identifies the domain the node belongs to.  If the port
           is not configured, Domain will be blank. "
        ::={snetSwitchSANMapEntry  4}

       snetSwitchSANNodeID     OBJECT-TYPE
        SYNTAX  DisplayString
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
          "For end nodes, this is the Node ID.  For switches, this is
           a Switch ID.  If port is not configured, NodeID will be 0."
        ::={snetSwitchSANMapEntry  5}

       snetSwitchSANNodeName     OBJECT-TYPE
        SYNTAX  DisplayString
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
          "The ServerNet node name.  If the port is not configured, 
           NodeName will be blank. "
        ::={snetSwitchSANMapEntry  6}

       snetSwitchSANNodeFabric    OBJECT-TYPE
        SYNTAX  INTEGER{
            xFabric (1),
            yFabric (2),
            bothFabrics (3),
            notDefined(4)
            }
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
          "Identifies the X or Y Fabric this node connects to.
            X Fabric(1), 
            Y Fabric(2), 
            Both Fabrics(3), 
            Not Defined(4). "
        ::={snetSwitchSANMapEntry  7}

   snetSwitchSANNodeManufacturingID OBJECT-TYPE
      SYNTAX  DisplayString
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "The Manufacturing ID of connected switch or node. "
       ::= { snetSwitchSANMapEntry  8}
 
  snetSwitchSANNodePartNumber OBJECT-TYPE
      SYNTAX  DisplayString
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Part Number of connected switch or node. "
       ::= {snetSwitchSANMapEntry  9}

   snetSwitchSANNodeSerialNumber OBJECT-TYPE
      SYNTAX  DisplayString
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Serial Number of connected switch or node. "
       ::= {snetSwitchSANMapEntry  10}


snetSwitchLinkAliveTrapEnable  OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-write
      STATUS mandatory
      DESCRIPTION
      " Enables Link Alive Trap generation. Asynchronous events 
        can be generated by the switch whenever a change in 
        link alive is detected.  
        Valid values are 
            off(0), 
            on(1)  (default)." 
::= { snetSwitchTrapEnables  1 }   

snetSwitchNeighborChgTrapEnable  OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-write
      STATUS mandatory
      DESCRIPTION
      " Enables Neighbor Change Trap generation.  Asynchronous 
        events can be generated by the switch whenever a change in
        neighbor id is detected. 
        Valid values are 
            off(0), 
            on(1)  (default)." 
::= { snetSwitchTrapEnables  2 }   

snetSwitchThresholdErrorTrapEnable  OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-write
      STATUS mandatory
      DESCRIPTION
      " Enables Link/Packet Error Trap generation.  Asynchronous 
        events can be generated by the switch whenever a link, 
        packet, or IBC errors have exceeded a pre-defined threshold. 
        Valid values are 
            off(0), 
            on(1)  (default)." 
::= { snetSwitchTrapEnables  3 } 
  
snetSwitchAccessViolationTrapEnable  OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-write
      STATUS mandatory
      DESCRIPTION
      " Enables AccessViolation Trap generation.  Asynchronous events can be
        generated by the switch whenever a packet is received from an
        unknown ServerNet ID. 
        Valid values are 
            off(0), 
            on(1)  (default)." 
::= { snetSwitchTrapEnables  4 }  

snetSwitchTakeoverTrapEnable  OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-write
      STATUS mandatory
      DESCRIPTION
      " Enables notification of switch takeover Trap generation.  Asynchronous 
        events can be generated by the switch whenever the switch
        ownership changes. 
        Valid values are 
            off(0), 
            on(1)  (default)." 
::= { snetSwitchTrapEnables  5 }   
 
snetSwitchSWFWTrapEnable  OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-write
      STATUS mandatory
      DESCRIPTION
      " Enables generation of firmware upgrade traps.  Asynchronous events can be
        generated by the administrative node whenever a firmware upgrade of the
        switch occurs.  
        Valid values are 
            off(0), 
            on(1)  (default)." 
::= { snetSwitchTrapEnables  6 }   


   snetSwitchPrimarySANManSNetID OBJECT-TYPE
      SYNTAX  DisplayString
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Identifies the ServerNet ID of the current primary
          administrative node in the ServerNet SAN. "
      ::= { snetSwitchNetworkData 8}
 
  snetSwitchBackupSANManSNetID OBJECT-TYPE
      SYNTAX  DisplayString
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Identifies the ServerNet ID of the current backup
          administrative node in the ServerNet SAN. "
      ::= { snetSwitchNetworkData 9}

  snetSwitchFailoverEventType OBJECT-TYPE
      SYNTAX INTEGER{
          noFailoversDetected (1), 
          backupNotReachable (2),
          backupTookOver(3),
          primaryNotReachable(4),
          primaryTookOver(5)
          }
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Indicates the most recent failover event type. 
          Valid values include
            NoFailoversDetected(1), 
            BackupNotReachable(2), 
            BackupTookOver(3),
            PrimaryNotReachable(4),
            PrimaryTookOver(5). "
      ::= { snetSwitchNetworkData 10}


   snetSwitchPrimarySANManName OBJECT-TYPE
      SYNTAX  DisplayString
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Name of the current primary administrative node in the ServerNet SAN. "
      ::= { snetSwitchNetworkData 11}
 
  snetSwitchBackupSANManName OBJECT-TYPE
      SYNTAX  DisplayString
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Name of the current backup administrative node in the ServerNet SAN. "
      ::= { snetSwitchNetworkData 12}

--
--
-- ServerNet Switch Group
--

  snetSwitchConfigTable OBJECT-TYPE
      SYNTAX  SEQUENCE OF SnetSwitchConfigEntry
      ACCESS  not-accessible
      STATUS  mandatory
      DESCRIPTION
         "ServerNet Switch Configuration data."
      ::= { snetSwitchConfigData 1 }

   snetSwitchConfigEntry OBJECT-TYPE
      SYNTAX  SnetSwitchConfigEntry
      ACCESS  not-accessible
      STATUS  mandatory
      DESCRIPTION
         "An entry containing ServerNet Switch configuration data."
      INDEX   { snetSwitchIDIndex}
      ::= { snetSwitchConfigTable 1 }

   SnetSwitchConfigEntry ::= SEQUENCE
   {
     snetSwitchSnetID          DisplayString,
     snetSwitchManufacturingID DisplayString,
     snetSwitchPartNumber      DisplayString,
     snetSwitchSerialNumber    DisplayString,
     snetSwitchHWMajorRev      INTEGER,
     snetSwitchHWMinorRev      INTEGER,
     snetSwitchFWRelease       INTEGER,
     snetSwitchFWMajorRev      INTEGER,
     snetSwitchFWMinorRev      INTEGER,
     snetSwitchSANManSNetID    DisplayString,
     snetSwitchState           INTEGER,
     snetSwitchDomain          DisplayString,
     snetSwitchName            DisplayString,
     snetSwitchFabric          INTEGER 
  }

   snetSwitchSnetID OBJECT-TYPE
      SYNTAX  DisplayString
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Switch Identifier.  The switch id is displayed as a hexidecimal value. "
-- :CPQ,DEV: 
-- This matches the corresponding SnetSwitchID entry in the snetSwitchIDTable
-- :CPQ,ENDDEV:
      ::= { snetSwitchConfigEntry 1 }

   snetSwitchManufacturingID OBJECT-TYPE
      SYNTAX  DisplayString
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "The Manufacturing ID "
       ::= { snetSwitchConfigEntry 2}

   snetSwitchPartNumber OBJECT-TYPE
      SYNTAX  DisplayString
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Switch Part Number "
       ::= { snetSwitchConfigEntry 3}

   snetSwitchSerialNumber OBJECT-TYPE
      SYNTAX  DisplayString
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Switch Serial Number "
       ::= { snetSwitchConfigEntry 4}

   snetSwitchHWMajorRev OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Switch Hardware Major Revision "
       ::= { snetSwitchConfigEntry 5}

   snetSwitchHWMinorRev OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Switch Hardware Minor Revision"
       ::= { snetSwitchConfigEntry 6}

   snetSwitchFWRelease OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Switch Firmware Release"
       ::= { snetSwitchConfigEntry 7}

   snetSwitchFWMajorRev OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Switch Firmware Major Revision"
       ::= { snetSwitchConfigEntry 8}
 
  snetSwitchFWMinorRev OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Switch Firmware Minor Revision"
       ::= { snetSwitchConfigEntry 9}

  snetSwitchSANManSNetID OBJECT-TYPE
      SYNTAX  DisplayString
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "ServerNet ID of the primary administrative node. "
       ::= { snetSwitchConfigEntry 10}

 snetSwitchState OBJECT-TYPE
        SYNTAX  INTEGER{
            unConfigured(1),
            configured(2)
            }
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
          "Identifies the current state of the Switch. 
 	    Unconfigured(1),
 	    Configured(2). "             
       ::= { snetSwitchConfigEntry 11}

   snetSwitchDomain OBJECT-TYPE
      SYNTAX  DisplayString
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "The domain the switch belongs to.  If no domain is defined,
          the default is blank. "
       ::= { snetSwitchConfigEntry 12}

   snetSwitchName OBJECT-TYPE
      SYNTAX  DisplayString
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "The switch name. If no name is defined, this field
          will be blank. "
       ::= { snetSwitchConfigEntry 13}

 snetSwitchFabric OBJECT-TYPE       
	 SYNTAX  INTEGER{
            xFabric (1),
            yFabric (2),
            bothFabrics (3),
            notDefined(4)
            }
        ACCESS read-only
        STATUS mandatory
        DESCRIPTION
          "Identifies the X or Y Fabric this node connects to.
            X Fabric(1),
            Y Fabric(2), 
            Both Fabrics(3), 
            Not Defined(4). "
       ::= { snetSwitchConfigEntry 14}

   snetSwitchPortErrorStatusTable   OBJECT-TYPE
      SYNTAX  SEQUENCE OF SnetSwitchPortErrorStatusEntry
      ACCESS  not-accessible
      STATUS  mandatory
      DESCRIPTION
          "Table containing error and status information for each
           of the configured ports."
         ::= { snetSwitchPortData 1 }

   snetSwitchPortErrorStatusEntry        OBJECT-TYPE
     SYNTAX  SnetSwitchPortErrorStatusEntry
      ACCESS  not-accessible
      STATUS  mandatory
      DESCRIPTION
         "A table of per-port error and status data"
      INDEX {snetSwitchIDIndex, snetSwitchPortErrorStatusIndex}
         ::= { snetSwitchPortErrorStatusTable 1}

SnetSwitchPortErrorStatusEntry ::= SEQUENCE
    {
      snetSwitchPortErrorStatusIndex INTEGER,
      snetSwitchLinkErrorCounter     Counter,
	snetSwitchPacketErrorCounter   Counter,
	snetSwitchIBCErrorCounter      Counter,
      snetSwitchPortStatus           INTEGER,
      snetSwitchDaughterCardType     INTEGER,
      snetSwitchDaughterCardStatus   INTEGER
 
}

snetSwitchPortErrorStatusIndex        OBJECT-TYPE
      SYNTAX  INTEGER (0..11)
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
        "Identifies the switch port number. "
      ::= {snetSwitchPortErrorStatusEntry 1}


snetSwitchLinkErrorCounter OBJECT-TYPE
      SYNTAX  Counter
      ACCESS  read-only   
      STATUS  mandatory
      DESCRIPTION
         "Number of link errors which have occurred on the selected port. "
     ::= {snetSwitchPortErrorStatusEntry 2 }

    snetSwitchPacketErrorCounter OBJECT-TYPE
      SYNTAX  Counter
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Number of packet errors which have occurred on the selected port. "
     ::= { snetSwitchPortErrorStatusEntry 3 }

snetSwitchIBCErrorCounter OBJECT-TYPE
      SYNTAX  Counter
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Number of IBC errors which have occurred on the selected port. "
     ::= {snetSwitchPortErrorStatusEntry 4 }

snetSwitchPortStatus OBJECT-TYPE
      SYNTAX  INTEGER{
          unavailable(1),
          uninstalled(2),
          noLinkAlive (3),
          alive(4)
          }
     ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Current state of the specified port.
          Valid values are  
  	    Unavailable(1), 
 	    Uninstalled(2), 
 	    NoLinkAlive(3), 
  	    Alive(4). "
     ::= {snetSwitchPortErrorStatusEntry 5 }

snetSwitchDaughterCardType OBJECT-TYPE
      SYNTAX  INTEGER{
          unknown (1),
          other (2),
          notPresent(3),
          lvds (4),
          fiberChannel(5),
          copperSerial(6),
          longHaulOptical(7),
          shortHaulOptical(8),
          ecl(9)
          }
     ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Daughter card type installed on the specified port.
          Valid values are  
  	    Unknown(1), (port can't be reached)
          Other (2), (daughter board installed but type not defined)  
 	    Not Present(3), (no daughter board installed) 
 	    LVDS(4),  (Low Voltage Differential Signal)
  	    Fiber Channel(5),
          Copper Serial(6),
          Long Haul Optical (7),
          Short Haul Optical (8),
          ECL (9),(Emitter Coupled Logic). "          
     ::= {snetSwitchPortErrorStatusEntry 6 }

snetSwitchDaughterCardStatus OBJECT-TYPE
      SYNTAX  INTEGER{
          notProvided (1),
          cableConnected (2),
          cableNotTerminated(3)
          }
     ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Current status of the specified daughter card
          Valid values are  
  	    Not Provided(1), (some daughter cards do not provide a status)
          Cable Connected (2), 
 	    Cable Not Terminated(3). " 
     ::= {snetSwitchPortErrorStatusEntry 7 }

snetSwitchRoutingTable OBJECT-TYPE
      SYNTAX SEQUENCE OF SnetSwitchRoutingTableEntry
      ACCESS  not-accessible
      STATUS  mandatory
      DESCRIPTION
         "The routing table is 1024 entries "
      ::= {snetSwitchRoutingData 1}

   snetSwitchRoutingTableEntry OBJECT-TYPE
      SYNTAX  SnetSwitchRoutingTableEntry
      ACCESS  not-accessible
      STATUS  mandatory
      DESCRIPTION
         "The routing table entry has an index and a port address."
      INDEX   {snetSwitchIDIndex, 
               snetSwitchRoutingTableIndex }
      ::= {snetSwitchRoutingTable 1}


     SnetSwitchRoutingTableEntry ::= SEQUENCE
     {
        snetSwitchRoutingTableIndex INTEGER,
        snetSwitchDest INTEGER
     }

  snetSwitchRoutingTableIndex OBJECT-TYPE
      SYNTAX  INTEGER (1..1024)
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "ServerNet Switch Routing Table Index.

         An index into the routing table."
     ::= { snetSwitchRoutingTableEntry 1 }

   snetSwitchDest OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "A port address."
      ::= { snetSwitchRoutingTableEntry 2 }


snetSwitchRoutingLeafTable OBJECT-TYPE
      SYNTAX SEQUENCE OF SnetSwitchRoutingLeafTableEntry
      ACCESS  not-accessible
      STATUS  mandatory
      DESCRIPTION
         "The routing table is 64 entries "
      ::= {snetSwitchRoutingData 2}

   snetSwitchRoutingLeafTableEntry OBJECT-TYPE
      SYNTAX  SnetSwitchRoutingLeafTableEntry
      ACCESS  not-accessible
      STATUS  mandatory
      DESCRIPTION
         "The routing table entry has an index and a port address."
      INDEX   {snetSwitchIDIndex, 
               snetSwitchRoutingLeafTableIndex }
      ::= {snetSwitchRoutingLeafTable 1}


     SnetSwitchRoutingLeafTableEntry ::= SEQUENCE
     {
        snetSwitchRoutingLeafTableIndex INTEGER,
        snetSwitchLeafDest INTEGER
     }

  snetSwitchRoutingLeafTableIndex OBJECT-TYPE
      SYNTAX  INTEGER (1..64)
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "ServerNet Switch Routing Leaf Table Index.

         An index into the routing table."
     ::= { snetSwitchRoutingLeafTableEntry 1 }

   snetSwitchLeafDest OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "A port address."
      ::= { snetSwitchRoutingLeafTableEntry 2 }


SnetSwitchPerfTableEntry ::= SEQUENCE
 	{
	snetSwitchPerfType1 INTEGER,
	snetSwitchPerfType2 INTEGER,
	snetSwitchPerfInPort1 INTEGER(0..11),
	snetSwitchPerfOutPort1 INTEGER(0..11),
	snetSwitchPerfInPort2 INTEGER(0..11),
	snetSwitchPerfOutPort2 INTEGER(0..11), 
	snetSwitchPerfTimerSelect INTEGER,
	snetSwitchPerfTimerInterval INTEGER,
	snetSwitchPerfStart INTEGER,
	snetSwitchPerfStatus INTEGER,
	snetSwitchPerfElapsedTime INTEGER,
	snetSwitchPerfCounter1 Counter,
	snetSwitchPerfCounter2 Counter
     }

snetSwitchPerfTable OBJECT-TYPE
      SYNTAX  SEQUENCE OF SnetSwitchPerfTableEntry
      ACCESS  not-accessible
      STATUS  mandatory
      DESCRIPTION
         "The switch performance data. "
      ::= {snetSwitchPerformanceData 1}

   snetSwitchPerfTableEntry OBJECT-TYPE
      SYNTAX  SnetSwitchPerfTableEntry
      ACCESS  not-accessible
      STATUS  mandatory
      DESCRIPTION
         "An entry in the performance table.  Performance data is
          maintained per switch."
      INDEX   {snetSwitchIDIndex  }
      ::= {snetSwitchPerfTable 1}

snetSwitchPerfType1 OBJECT-TYPE
      SYNTAX  INTEGER (0..33)
      ACCESS  read-write
      STATUS  mandatory
      DESCRIPTION
        "Selects the type of performance count to be run in counter 1."
::= { snetSwitchPerfTableEntry 1 }

  snetSwitchPerfType2 OBJECT-TYPE
      SYNTAX  INTEGER (0..27)
      ACCESS  read-write
      STATUS  mandatory
      DESCRIPTION
         "Selects the type of performance count to be run in counter 2."
::= { snetSwitchPerfTableEntry 2}

   snetSwitchPerfInPort1 OBJECT-TYPE
      SYNTAX  INTEGER(0..11)
      ACCESS  read-write
      STATUS  mandatory
      DESCRIPTION
         "Input port to be used for performance counts for Performance Counter 1."
::= { snetSwitchPerfTableEntry 3 }

   snetSwitchPerfOutPort1 OBJECT-TYPE
      SYNTAX  INTEGER(0..11)
      ACCESS  read-write
      STATUS  mandatory
      DESCRIPTION
         "Output port to be used for performance counts for Performance Counter 1."
::= { snetSwitchPerfTableEntry 4 }

   snetSwitchPerfInPort2 OBJECT-TYPE
      SYNTAX  INTEGER(0..11)
      ACCESS  read-write
      STATUS  mandatory
      DESCRIPTION
         "Input port to be used for performance counts for Performance Counter 2."
::= { snetSwitchPerfTableEntry 5 }

   snetSwitchPerfOutPort2 OBJECT-TYPE
      SYNTAX  INTEGER(0..11)
      ACCESS  read-write
      STATUS  mandatory
      DESCRIPTION
         "Output port to be used for performance counts for Performance Counter 2."
::= { snetSwitchPerfTableEntry 6 }

   snetSwitchPerfTimerSelect OBJECT-TYPE
      SYNTAX  INTEGER(1..4)
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "Specifies the duration the performance count should run. 
          1= 16 nanoseconds per count, maximum 68.72 second timer
          2= 256 nanoseconds per count, maximum 18.33 minute timer
          3= 1.024 microseconds per count, maximum 73.30 minute timer
          4= 8.129 microseconds per count, maximum 9.77 hour timer 
	
          This value is automatically determined based on the Performance
          timer interval specified by the user." 
::= { snetSwitchPerfTableEntry 7 }

    snetSwitchPerfTimerInterval OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-write
      STATUS  mandatory
      DESCRIPTION
         "This is the amount of time the counter will run in milliseconds. 
          The default is 0 and must be changed before a performance count
          will run.  The maximum value is 35172000 milliseconds which is
          9.77 hours."  
::= { snetSwitchPerfTableEntry 8 }

   snetSwitchPerfStart OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-write
      STATUS  mandatory
      DESCRIPTION
         "Setting this variable to 1 causes the request to start the
          performance count to be sent.  The Types, Inports, Outports, 
          and TimerInterval should all be set prior to setting
          Start. If they are not set, default values will be used.  At a
          minimum, the TimerInterval must be reset to a value other than
          zero before a performance count will run."
::= { snetSwitchPerfTableEntry 9}

   snetSwitchPerfStatus OBJECT-TYPE
      SYNTAX  INTEGER{
          validData(1),
          countInProgress(2),
          counter1Overflow (3),
          counter2Overflow (4),
          timerOverflow (5),
          unknown(6)
          }
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "GETting this variable causes a request to be made to the 
          switch to retrieve the latest values for the  Performance 
          count status  (snetSwitchPerfStatus), Performance  counters 
          (snetSwitchPerfCounter1 and snetSwitchPerfCounter2) and 
          time left (snetSwitchTimeLeft).

          Possible Values for Status: 
            Data is valid(1), 
            Counting is still in process(2),
            Counter 1 overflowed(3), 
            Counter 2 overflowed(4), 
            Timer overflowed(5), 
            Unknown.  Switch not reachable(6). "
::= { snetSwitchPerfTableEntry 10 }

   snetSwitchPerfElapsedTime OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "The amount of time elapsed on the current performance count in milliseconds. 
          If this value is zero, the performance counters have completed." 
::= { snetSwitchPerfTableEntry 11 }

 snetSwitchPerfCounter1 OBJECT-TYPE
      SYNTAX  Counter
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "The result of the last performance count for counter 1.  To 
          check the validity and get the latest Counter1 value from 
          the switch, first Get the snetSwitchPerfStatus."
::= { snetSwitchPerfTableEntry 12 }

   snetSwitchPerfCounter2 OBJECT-TYPE
      SYNTAX  Counter 
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
         "The result of the last performance count for counter 2. 
          To check the validity and get the latest Counter2 value
          from the switch, first Get the snetSwitchPerfStatus."
::= { snetSwitchPerfTableEntry 13}

  snetSwitchErrorStatusTable OBJECT-TYPE
      SYNTAX  SEQUENCE OF SnetSwitchErrorStatusEntry
      ACCESS  not-accessible
      STATUS  mandatory
      DESCRIPTION
         "Table of switch error and status data."
      ::= { snetSwitchErrorStatusData 1 }

   snetSwitchErrorStatusEntry OBJECT-TYPE
      SYNTAX  SnetSwitchErrorStatusEntry
      ACCESS  not-accessible
      STATUS  mandatory
      DESCRIPTION
         "An entry containing status and error data for each switch."
      INDEX   { snetSwitchIDIndex}
      ::= { snetSwitchErrorStatusTable 1 }

   SnetSwitchErrorStatusEntry ::= SEQUENCE
   {
     snetSwitchLinkErrorThreshold    INTEGER,
     snetSwitchPacketErrorThreshold  INTEGER,
     snetSwitchIBCErrorThreshold     INTEGER,
     snetSwitchNeighborID            DisplayString,
     snetSwitchAccessViolationID     INTEGER,
     snetSwitchFWStatus              INTEGER,
     snetSwitchHWStatus              INTEGER,
     snetSwitchStatus                INTEGER,
     snetSwitchFanStatus             INTEGER
   }

snetSwitchLinkErrorThreshold OBJECT-TYPE
      SYNTAX  INTEGER 
      ACCESS  read-write
      STATUS  mandatory
      DESCRIPTION
         "Number of link errors which occur before an asynchronous
          event notification is generated by the switch. "
     ::= { snetSwitchErrorStatusEntry 1 }

snetSwitchPacketErrorThreshold OBJECT-TYPE
      SYNTAX  INTEGER 
      ACCESS  read-write
      STATUS  mandatory
      DESCRIPTION
         "Number of packet errors which occur before an asynchronous 
          event notification is generated by the switch. "
     ::= { snetSwitchErrorStatusEntry 2 }

snetSwitchIBCErrorThreshold OBJECT-TYPE
      SYNTAX  INTEGER 
      ACCESS  read-write
      STATUS  mandatory
      DESCRIPTION
      "Number of packet errors which occur before an asynchronous
       event notification is generated by the switch. "
     ::= { snetSwitchErrorStatusEntry 3 }

snetSwitchNeighborID OBJECT-TYPE
      SYNTAX  DisplayString
      ACCESS  read-only
      STATUS mandatory
      DESCRIPTION
      " This field contains the latest value of the Neighbor ID 
        which has changed. Whenever a change in a neighbor ID is
        detected by a switch, the switch generates an asynchronous 
        event.  The neighbor ID which was detected by the switch is
        saved here.  It is valid only for the last event which 
        occurred.  If no neighbor ID changes have occurred, the 
        value will be blank. "
      ::= { snetSwitchErrorStatusEntry 4 }   

snetSwitchAccessViolationID OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-only
      STATUS mandatory
      DESCRIPTION
      " This field contains the latest value for the invalid ID 
        which was detected by the switch.  Whenever an invalid
        id is detected by a switch, the switch generates an 
        asynchronous event.  The ID which was detected by the 
        switch is saved here.  It is valid only for the last event 
        which occurred.  If no invalid IDs have been detected, the 
        value will be zero(0). "
      ::= { snetSwitchErrorStatusEntry 5 }   

snetSwitchFWStatus   OBJECT-TYPE
      SYNTAX  INTEGER{
          validStatusBlock(1),
          hwErrorDetected(2),
          unknownFirmwareErrorDetected(3),
          badProgramCheckSum(4),
          configFailedDefaultInUse(5),
          unknownFWStatus(6)
          }
      ACCESS  read-only
      STATUS mandatory
      DESCRIPTION
      " The Firmware Status for the Switch
       Firmware Status OK(1),  
       Hardware Error Detected(2), 
       Unknown Firmware Error Detected(3), 
       Bad Program CheckSum(4), 
       Current Configuration failed. Switch is using factory default configuration(5),   
       Switch cannot be reached. Firmware status is unknown(6). "
::= { snetSwitchErrorStatusEntry 6 }   

snetSwitchHWStatus   OBJECT-TYPE
      SYNTAX INTEGER{
          noError(1),
          errSramFail(2),
          errFlashSector(3),
          errSeepromCheckSum(4),
          errSbusy(5),
          errFlashProgram(6),
          errUnknownHWStatus(7),
          errOtherHWError(8)
          }
      ACCESS  read-only
      STATUS mandatory
      DESCRIPTION
      " The Hardware Status for the Switch  
      Hardware Status OK(1), 
      SRAM Memory test failed(2), 
      Flash sector test failed(3), 
      Bad SEEPROM checksum(4), 
      SBUSY error(5), 
      FLASH program error(6),  
      Switch cannot be reached.  Hardware status is unknown.(7), 
      Other Hardware Error, such as fan failure may be indicated.(8) "

::= { snetSwitchErrorStatusEntry 7}   


snetSwitchStatus  OBJECT-TYPE
      SYNTAX  INTEGER{
          other(1),
          ok(2),
          degraded(3),
          failed(4)
          }
      ACCESS  read-only
      STATUS mandatory
      DESCRIPTION
      " The Overall Status for the Switch.  This is determined by a combination
        of port status values and configuration values.  If a port is configured,
        it should detect Link Alive.  If the port is not in LinkAlive state, the
        switch status will be degraded. If all configured ports are in 
        LinkAlive state, the switch status will be ok.  Hardware, Firmware and Fan
        status are also used to determine switch status as described below.

         This represents the overall condition of the specified switch.

            Other(1): 
                Switch not installed or status unknown

            OK(2):
                All ports, Hardware, Firmware and Fan status are OK.

            Degraded(3):
                One or more ports are down.  Hardware or Firmware status
                show an error condition. 

            Failed(4):
                All ports are Failed, switch is not reachable, Fan status
                is failed. "
::= { snetSwitchErrorStatusEntry 8 }   

snetSwitchFanStatus  OBJECT-TYPE
      SYNTAX  INTEGER{
          other(1),
          ok(2),
          degraded(3),
          failed(4)
          }
      ACCESS  read-only
      STATUS mandatory
      DESCRIPTION
      "The status of the switch fans. 
          Other(1):    Unknown or not reported.  This is the status if
                       the switch cannot be reached.

          OK(2):       OK is reported if both fans are working as designed

          Degraded(3): This status is not reported but is listed for 
                       consistency with other status fields

          Failed(4):   One or more fans have failed.  The power module
                       should be replaced immediately to prevent damage
                       to switch components. "
::= { snetSwitchErrorStatusEntry 9 }   


 snetSwitchLinkAliveChange TRAP-TYPE
      ENTERPRISE serverNet
      VARIABLES  { snetSwitchSnetID, snetSwitchName,
		   snetSwitchPortErrorStatusIndex,
                   snetSwitchPortStatus}
      DESCRIPTION
         "The switch has detected a change in the status of a port. 

         Possible Cause / Solution:   
         If Port is nonfunctional,
         Disconnected, loose or defective SAN Cable:  Reattach or replace cable. 
         Distant switch or node powered off:  apply power to switch or node. 
         Distant daughter card defective:  replace defective daughter card.  

         If Port is functional,
         Port is now active:  No action necessary. 

         If Port is intermittent,
         Intermittent problems could be caused by a defective switch, cable or
         daughter card.  Replace components until problem is isolated. "

         --#TYPE "ServerNet Switch Port Status Change"
         --#SUMMARY "Switch %d (%s) has detected a change in status on
         -- port %d. Status is %d."            
         --#ARGUMENTS {4}
         --#SEVERITY MAJOR
         --#TIMEINDEX 99
     ::= 100

snetSwitchNeighborValidationFailed TRAP-TYPE
      ENTERPRISE serverNet
      VARIABLES { snetSwitchSnetID, snetSwitchName,
		snetSwitchPortErrorStatusIndex, snetSwitchNeighborID}
      DESCRIPTION
         "A ServerNet Switch failed neighbor validation on one of its ports.
    	   The offending node will not be able to receive or transmit 
	   ServerNet data packets until the situation is corrected.

         Possible Cause / Solution:  
         Ports not configured:  If a port is not configured or disabled,
         this event is generated whenever the topology is changed, or
         firmware is updated.  The snetSwitchNeighborID will indicate that
         the link is down with LD.  If the snetSwitchNeighborID is AF, this 
         indicates the specified port is disabled and assumed failed. 
         If the specified port is not configured, this event may be ignored. 

         Bad Node: Run diagnostics to validate offending nodes. 

         Incorrect cabling: verify cabling and correct if necessary. 

         Incorrect configuration: switch configruation may be incorrect.
         Reconfigure switch.

         Node not added to SAN: Offending node may not have been added to 
         the SAN.  Run ServerNet II Administrative Utility to add node.

         Incorrect SAN installation:  Offending node may not have been correctly
         added to SAN.  Run Administrator GUI to verify status and add if 
         necessary.

         To force the switch to rerun neighbor checks, the user may have to
         manually cycle the power on the offending node. "
    
         --#TYPE "ServerNet Switch Neighbor Validation Failure"
         --#SUMMARY "The neighbor on Switch %d (%s) port %d could not be validated
	 -- by the Switch.  NeighborID found was %d." 
         --#ARGUMENTS {4}
         --#SEVERITY MAJOR
         --#TIMEINDEX 99
      ::= 101

   snetSwitchLinkLevelError TRAP-TYPE
      ENTERPRISE serverNet
	VARIABLES  { snetSwitchSnetID, snetSwitchName, 
			snetSwitchPortErrorStatusIndex,
			snetSwitchLinkErrorCounter,
                   snetSwitchPacketErrorCounter,
                   snetSwitchIBCErrorCounter}
      DESCRIPTION
         "ServerNet Switch has detected link level errors.

         Possible Cause / Solution:  

         Bad node:  Run diagnostics to validate offending nodes are 
         operating correctly.

         Loose cable:  Check cable connections.
 
         Bad cable: Check for link error and replace cable.

         Incorrect configuration:  Switch configuration may be incorrect.
         Check EFIFO register to make sure it is set correctly for
         cable type/length.  Reconfigure switch if necessary.

         Blabbering Node:  Run diagnostics to ensure that nodes at both
         ends of the cable are communicating properly.  Replace if necessary. "

         --#TYPE "ServerNet Switch Link Level Error"
         --#SUMMARY "Switch %d (%s), port %d has detected %d link level
         -- errors. Packet Level Errors are %d, IBC Level Errors are %d." 
         --#ARGUMENTS {6}
         --#SEVERITY MINOR
         --#TIMEINDEX 99
      ::= 102

   snetSwitchPacketLevelError TRAP-TYPE
      ENTERPRISE serverNet
      VARIABLES  { snetSwitchSnetID, snetSwitchName,
		   snetSwitchPortErrorStatusIndex,				            
		   snetSwitchLinkErrorCounter,
                   snetSwitchPacketErrorCounter,
                   snetSwitchIBCErrorCounter}
      DESCRIPTION
         "ServerNet Switch has detected packet level errors.

         Possible Cause / Solution:  

         Bad node:  Run diagnostics to validate offending nodes are 
         operating correctly.

         Loose cable:  Check cable connections.
 
         Bad cable: Check for link error and replace cable.

         Incorrect configuration:  Switch configuration may be incorrect.
         Check router table to make sure it is set.  Reconfigure switch 
         if necessary.

         Blabbering Node:  Run diagnostics to ensure that nodes at both
         ends of the cable are communicating properly.  Replace if necessary.

         Probing node: A node may be trying to break into the network.  
         Isolate the node and verify SAN membership. "
 
         --#TYPE "ServerNet Switch Packet Level Error"
         --#SUMMARY "Switch %d (%s), port %d has detected packet level 
         -- errors exceeding the threshold. Link Level Errors
         -- are %d, Packet Level Errors are %d, IBC Level Errors are %d." 
         --#ARGUMENTS {6}
         --#SEVERITY MINOR
         --#TIMEINDEX 99
      ::= 103

snetSwitchIBCError TRAP-TYPE
      ENTERPRISE serverNet
	VARIABLES  { snetSwitchSnetID, snetSwitchName,
			snetSwitchPortErrorStatusIndex,
			snetSwitchLinkErrorCounter,
                   	snetSwitchPacketErrorCounter,
                   	snetSwitchIBCErrorCounter}
      DESCRIPTION
         "ServerNet Switch has detected IBC errors.

         Possible Cause / Solution:  

         Firmware upgrade or Configuration change:  This event can be
         safely ignored if preceding events indicate a firmware upgrade 
         or configuration change caused the event to be generated.

         Bad node:  Run diagnostics to validate offending nodes are 
         operating correctly.

         Loose cable:  Check cable connections.
 
         Bad cable: Check for link error and replace cable.

         Incompatible software version: Ensure that compatible versions
         of software and firmware are installed on the offending nodes.

         Blabbering node:  Run diagnostics to ensure that nodes at both
         ends of the cable are communicating properly.  Replace if necessary.

         Probing node: A node may be trying to break into the network.  
         Isolate the node and verify SAN membership.

         Switch ownership may be incorrect:  Check ownership;  cycle power on
         the offending switch to cause ownership update."

         --#TYPE "ServerNet Switch IBC Error"
         --#SUMMARY "Switch %d (%s), port %d has detected IBC
         -- errors.  Link Level Errors are %d, Packet Level Errors are %d.
         -- IBC Level Errors are %d." 
         --#ARGUMENTS {6}
         --#SEVERITY MINOR
         --#TIMEINDEX 99
      ::= 104

snetSwitchAccessViolation TRAP-TYPE
      ENTERPRISE serverNet
      VARIABLES  { snetSwitchSnetID, snetSwitchName,
		   snetSwitchPortErrorStatusIndex, 
                   snetSwitchAccessViolationID}
      DESCRIPTION
     "The switch has detected a request to or from an invalid id.

         Possible Cause / Solution:  

         Blabbering node:  Run diagnostics to ensure that nodes at both
         ends of the cable are communicating properly.  Replace if necessary.

         Probing node: A node may be trying to break into the network.  
         Isolate the node and verify SAN membership.

         Switch ownership may be incorrect:  Check ownership;  cycle power on
         the offending switch to cause ownership update. "

         --#TYPE "ServerNet Switch Access Violation"
         --#SUMMARY "Switch %d (%s), port %d has detected invalid id %d." 
         --#ARGUMENTS {4}
         --#SEVERITY CRITICAL
         --#TIMEINDEX 99
      ::= 105

snetSwitchOwnerChange TRAP-TYPE
      ENTERPRISE serverNet
      VARIABLES  {  snetSwitchSnetID, snetSwitchName,
		    snetSwitchSANManSNetID} 
      DESCRIPTION
         "ServerNet Switch Primary Administrative node change.

         Possible Cause / Solution:  

         Primary node failed over:  If this was by user request, this is a notification
         only and no action is needed.  Refer to snetSwitchSANManFailover for other
         possibilities.

         Administrator changed primary Administrative node: Notification only.  No action 
         is necessary. "
  
         --#TYPE "ServerNet Switch detected new owner"
         --#SUMMARY "Switch %d (%s), takeover by %d."
         --#ARGUMENTS {3}
         --#SEVERITY MINOR
         --#TIMEINDEX 99   
      ::= 106

snetSwitchFirmwareUpgrade TRAP-TYPE
      ENTERPRISE serverNet
      VARIABLES  { snetSwitchSANManSNetID, snetSwitchSnetID, snetSwitchName,
			 snetSwitchFWRelease, snetSwitchFWMajorRev, 
                   snetSwitchFWMinorRev} 
      DESCRIPTION
         "A firmware upgrade has been performed on the specified switch.

         Possible Cause / Solution:  

         Switch firmware has been upgraded.  Notification only.  No action 
         in needed. "

         --#TYPE "ServerNet Switch Firmware Upgrade"
         --#SUMMARY "Administrative node %d upgraded Switch %d(%s), Firmware release %d,
         -- Firmware upgrade to %d.%d."
         --#ARGUMENTS {6}
         --#SEVERITY INFORMATIONAL
         --#TIMEINDEX 99
      ::= 107

snetSwitchSANManFailover TRAP-TYPE
      ENTERPRISE serverNet
      VARIABLES  { snetSwitchPrimarySANManSNetID, 
		   snetSwitchPrimarySANManName,
                   snetSwitchBackupSANManSNetID,
		   snetSwitchBackupSANManName,
                   snetSwitchFailoverEventType} 
      DESCRIPTION
         "Administrative node failover has been detected. 
          The type of failure detected is reflected in the event type.

         Possible Cause / Solution:  

         Primary or backup administrative node has failed:  if powered off, apply power.
         If hung, reboot node.  If doing maintenance, this is a notification
         message only.  Restart node when maintenance is complete.

         Backup administrative node not configured:  use the ServerNet II Administrative Utility 
         to define a backup. "

         --#TYPE "ServerNet Switch failover detected"
         --#SUMMARY "Primary Administrative node %s (%d), Backup node %s (%d), detected Failover %d."
         --#ARGUMENTS {5}
         --#SEVERITY MINOR
         --#TIMEINDEX 99   
      ::= 108

snetSwitchTopologyConfigUpdate TRAP-TYPE
      ENTERPRISE serverNet
      DESCRIPTION
        "Configuration of the ServerNet topology has changed.
 
        Possible Cause / Solution:  
  
        Switch or end node configuration has been updated.  Notification only,
        no action required.  May also be generated when switch firmware is upgraded or
        new primary or backup nodes are designated."

         --#TYPE "ServerNet Topology Update"
         --#SUMMARY "ServerNet topology has been updated"
         --#ARGUMENTS {0}
         --#SEVERITY INFORMATIONAL
         --#TIMEINDEX 99
      ::= 109

snetSwitchFanFailure TRAP-TYPE
      ENTERPRISE serverNet
      VARIABLES  {  snetSwitchSnetID, snetSwitchName} 
      DESCRIPTION
         "ServerNet Switch detected a fan failure.  The power module should be
          replaced immediately to prevent switch component damage.

         Possible Cause / Solution:  

         A switch fan has failed: replace switch power module to prevent switch
         component damage. "

         --#TYPE "ServerNet Switch Fan Failure"
         --#SUMMARY "Switch %d (%s), detected a fan failure."
         --#ARGUMENTS {2}
         --#SEVERITY CRITICAL
         --#TIMEINDEX 99   
      ::= 110

END
