-- ****************************************************************************
--
--                         Virtual Connect Module MIB
--
--      Copyright 2008-2016 Hewlett Packard Enterprise Development LP
-- 
--
-- ****************************************************************************

HPVCMODULE-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,
    Integer32, Unsigned32,
    NOTIFICATION-TYPE, Counter32,
    Gauge32, mib-2, zeroDotZero         FROM SNMPv2-SMI
    TEXTUAL-CONVENTION, TruthValue,
    RowPointer                          FROM SNMPv2-TC
    SnmpAdminString                     FROM SNMP-FRAMEWORK-MIB
    enterprises                         FROM RFC1155-SMI
    TransportAddressType, TransportAddress  FROM TRANSPORT-ADDRESS-MIB
    ifIndex, ifInErrors, ifOutErrors, InterfaceIndex  FROM IF-MIB


    MODULE-COMPLIANCE, OBJECT-GROUP,
    NOTIFICATION-GROUP                  FROM SNMPv2-CONF;

vcModuleMIB MODULE-IDENTITY
    LAST-UPDATED "202004140000Z"               -- 14 Apr  2020
    ORGANIZATION "Hewlett Packard Enterprise"
    CONTACT-INFO "Contact HPE Support"
    DESCRIPTION
     "This MIB module describes module specific MIB objects present in each of the
      Virtual Connect Ethernet (VC-Enet) Modules. These objects represent 
      information about individual VC-Enet modules irrespective of its VC domain
      role."

-- Revision History
       REVISION     "202004140000Z"            -- 14 Apr 2020 
       DESCRIPTION  "Corrected typos."

       REVISION     "201901290000Z"            -- 29 January 2019 
       DESCRIPTION  "Added support for switch memory parity error non correctable
                     reporting."

       REVISION     "201603210000Z"            -- 21 March 2016
       DESCRIPTION  "Updated Copyright,ORGANIZATION and CONTACT-INFO,
                     Added Import MIB module details for InterfaceIndex." 

       REVISION     "201401290000Z"            -- 29 January 2014
       DESCRIPTION  "Added support for switch memory parity error correction
                     reporting."

       REVISION     "201311070000Z"            -- 07 November 2013
       DESCRIPTION  "Added an option for VcModulePortProtectionStatus
                      object." 

       REVISION     "201209220000Z"            -- 22 September 2012
       DESCRIPTION  "Added vcModuleDomainPrimaryAddressIpv6
                     to Domain level objects." 

       REVISION     "201208190000Z"            -- 19 August 2012
       DESCRIPTION  "Added port protection notifications." 

       REVISION     "201102010000Z"            -- 01 February 2011
       DESCRIPTION  "Added support for network loop detection status reporting and 
                     notification." 

       REVISION     "200902180000Z"            -- 18 February 2009
       DESCRIPTION  "Draft-1. Adding enclosure role object."

       REVISION     "200810080000Z"            -- 08 October 2008
       DESCRIPTION  "Draft-0. Initial cut."

    ::= { virtualConnect 3 }

hp                     OBJECT IDENTIFIER ::= { enterprises 11 }
hpSysMgt               OBJECT IDENTIFIER ::= { hp 5 }
hpEmbeddedServerMgt    OBJECT IDENTIFIER ::= { hpSysMgt 7 }
hpModuleMgmtProc       OBJECT IDENTIFIER ::= { hpEmbeddedServerMgt 5 }
virtualConnect         OBJECT IDENTIFIER ::= { hpModuleMgmtProc 2 }

vcModuleMIBObjects          OBJECT IDENTIFIER ::= { vcModuleMIB 1 }

-- Top level object groups for VC MIB
vcModuleObjects          OBJECT IDENTIFIER ::= { vcModuleMIBObjects 1 }

VcModuleRole ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
            "The virtual connect operational role of this module.
             The enumerations are described below:

                unintegrated       - module is not a member of a domain
                primaryProtected   - module is VCM primary, and a VCM standby exists
                primaryUnprotected - module is VCM primary, and no VCM standby exists
                standby            - module is VCM standby
                other                - module is not able to host VCM
              "
    SYNTAX      INTEGER
    {
       unintegrated(1),
       primaryProtected(2),
       primaryUnprotected(3),
       standby(4),
       other(5)
    }

VcEnclosureRole ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
            "The virtual connect operational role of the enclosure associated with
             with this module.
             The enumerations are described below:

                unknown   - The enclosure role is unknown because of one of the
                            following reasons,
                                - The enclosure is not part of a VC domain.
                                - The module is in a transitory state.
                primary   - The module is installed in the primary or sole enclosure.
                secondary - The module is installed in a secondary enclosure of a
                            multi-enclosure domain.
              "
    SYNTAX      INTEGER
    {
       unknown(1),
       primary(2),
       secondary(3)
    }

VcModuleType ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
            "The virtual connect interconnect module type.
             The enumerations are described below:

                vcModuleEnet       - VC-Enet module
                vcModuleFC         - VC-FC module
                vcModuleOther      - Unknown module or a module not supported by VC
              "
    SYNTAX      INTEGER
    {
       vcModuleEnet(1),
       vcModuleFC(2),
       vcModuleOther(3)
    }

-- Domain level objects

vcModuleDomainName OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The administratively assigned name of the Virtual Connect Domain 
         associated with this module."
    ::= { vcModuleObjects 1 }

vcModuleRole OBJECT-TYPE
    SYNTAX      VcModuleRole
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The VC domain role of this VC module."
    ::= { vcModuleObjects 2 }

vcModuleDomainPrimaryAddressType OBJECT-TYPE
    SYNTAX      TransportAddressType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The transport address type used to address the primary VC module."
    ::= { vcModuleObjects 3 }

vcModuleDomainPrimaryAddress OBJECT-TYPE
    SYNTAX      TransportAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The address of the primary VC module. The address format is determined
         by the vcDomainPrimaryAddressType object."
    ::= { vcModuleObjects 4 }

vcModuleEnclosureRole OBJECT-TYPE
    SYNTAX      VcEnclosureRole
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The VC enclosure role of the enclosure VC module."
    ::= { vcModuleObjects 5 }

vcModuleDomainPrimaryAddressIpv6 OBJECT-TYPE
    SYNTAX      TransportAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The IPv6 address of the primary VC module."
    ::= { vcModuleObjects 7 }

vcSwitchMemParityErrorCount OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Parity errors detected on switch's internal memory. This counter
         is incremented whenever switch software detects and corrects
         parity error."
    ::= { vcModuleObjects 8 }

vcSwitchMemParityErrorNonCorrectableCount OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Parity/ECC errors detected on switch's internal memory. This counter
         is incremented whenever switch software detects non correctable
         parity/ECC error."
    ::= { vcModuleObjects 9 }


-- The VC Module port status Table
VcModulePortBpduLoopStatus ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
            "The BPDU loop detection status of a VcModulePort.
             The enumerations are described below:

                ok              - The port is operating normal.
                loop-detected   - BPDU loop detected on this port.
              "
    SYNTAX      INTEGER
    {
       ok(1),
       loop-detected(2)
    }

VcModulePortProtectionStatus ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
            "The port protection status of the VcModulePort.
             Port protection features provide protection against
             denial of service conditions caused by external entities.

             The enumerations are described below:

                ok                    - The port is operating normal.
                pause-flood-detected  - Pause flood condition detected on this
                                        port. The port is disabled until a
                                        recovery action is taken.
                in-pause-condition    - Pause flood condition detected on this
                                        port. The port is not disabled.
              "
    SYNTAX      INTEGER
    {
       ok(1),
       pause-flood-detected(2),
       in-pause-condition(3)
    }

vcModulePortTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF VcModulePortEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "A table that contains VC specific information about every
           port that is associated with this bridge."
       ::= { vcModuleObjects 6 }
   vcModulePortEntry OBJECT-TYPE
       SYNTAX      VcModulePortEntry
       MAX-ACCESS  not-accessible
       STATUS      current

       DESCRIPTION
           "VC specific information for each port of the bridge."
       INDEX  { vcModulePort }
       ::= { vcModulePortTable 1 }

   VcModulePortEntry ::=
       SEQUENCE {
           vcModulePort
               Integer32,
           vcModulePortIfIndex
               InterfaceIndex,
           vcModulePortBpduLoopStatus
               VcModulePortBpduLoopStatus,
           vcModulePortProtectionStatus
               VcModulePortProtectionStatus
       }

   vcModulePort OBJECT-TYPE
       SYNTAX      Integer32 (1..65535)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The port number of the port for which this entry
           contains management information."
       ::= { vcModulePortEntry 1 }

   vcModulePortIfIndex OBJECT-TYPE
       SYNTAX      InterfaceIndex
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The value of the instance of the ifIndex object,
           defined in IF-MIB, for the interface corresponding
           to this port. A zero value indicates ifIndex is not available."
       ::= { vcModulePortEntry 2 }

   vcModulePortBpduLoopStatus OBJECT-TYPE
       SYNTAX      VcModulePortBpduLoopStatus
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The BPDU loop detection status for this port."
       ::= { vcModulePortEntry 3 }

   vcModulePortProtectionStatus OBJECT-TYPE
       SYNTAX      VcModulePortProtectionStatus
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The port protection status for this port."
       ::= { vcModulePortEntry 4 }

--
-- Notification Objects
--
vcModuleMIBNotificationPrefix OBJECT IDENTIFIER ::=
    { vcModuleMIB 2 }
vcModuleMIBNotifications OBJECT IDENTIFIER ::=
    { vcModuleMIBNotificationPrefix 0 }
vcModuleMIBNotificationObjects OBJECT IDENTIFIER
   ::= { vcModuleMIBNotificationPrefix 1 }

--
-- Notifications
--

vcModuleDomainRoleChange NOTIFICATION-TYPE
    OBJECTS { vcModuleRole }
    STATUS  current
    DESCRIPTION
        "The VCM role of the VC module has changed."
		
		--#SEVERITY INFORMATIONAL
		
    ::= { vcModuleMIBNotifications 1 }

vcSwitchMemParityErrorEvent NOTIFICATION-TYPE
    OBJECTS { vcSwitchMemParityErrorCount }
    STATUS  current
    DESCRIPTION
        "The switch hardware has detected a parity error. The parity error
         is automatically corrected."
		
		--#SEVERITY INFORMATIONAL
		
    ::= { vcModuleMIBNotifications 2 }

vcSwitchMemParityErrorNonCorrectableEvent NOTIFICATION-TYPE
    OBJECTS { vcSwitchMemParityErrorNonCorrectableCount,
              cpqHoFwVerLocation}
    STATUS  current
    DESCRIPTION
        "The switch hardware has detected a parity/ECC error. The parity/ecc error
         is non Correctable. cpqHoFwVerLocation identifies the Rack, Enclosurename
	 and Bay number where the parity/ecc error occured. cpqHoFwVerLocation is
	 represented in <RackName>:<EnclosureName>:<Bay Number> format"

		
		--#SEVERITY INFORMATIONAL
		
    ::= { vcModuleMIBNotifications 3 }

--
-- Threshold traps
--

vcModPortInputUtilizationUp NOTIFICATION-TYPE
    OBJECTS { ifIndex }
    STATUS  current
    DESCRIPTION
        "The port input utilization rate has exceeded high threshold.

          The input line utilization on a port has exceeded its threshold
          for longer than the threshold averaging period. The ifIndex
          is the index of the affected port in ifTable."
		  
		  --#SEVERITY WARNING
		  
    ::= { vcModuleMIBNotifications 11 }

vcModPortInputUtilizationDown NOTIFICATION-TYPE
    OBJECTS { ifIndex }
    STATUS  current
    DESCRIPTION
        "The port input utilization rate has dropped below low watermark.

          The input line utilization on a port has dropped below its low 
          watermark for longer than the threshold averaging period. The ifIndex
          is the index of the affected port in ifTable."
		  
		  --#SEVERITY INFORMATIONAL
		  
    ::= { vcModuleMIBNotifications 12 }

vcModPortOutputUtilizationUp NOTIFICATION-TYPE
    OBJECTS { ifIndex }
    STATUS  current
    DESCRIPTION
        "The port output utilization rate has exceeded high threshold.

          The output line utilization on a port has exceeded its high watermark
          for longer than the threshold averaging period. The ifIndex
          is the index of the affected port in ifTable."
		  
		  --#SEVERITY WARNING
		  
    ::= { vcModuleMIBNotifications 13 }

vcModPortOutputUtilizationDown NOTIFICATION-TYPE
    OBJECTS { ifIndex }
    STATUS  current
    DESCRIPTION
        "The port output utilization rate has dropped below low watermark.

          The output line utilization on a port has dropped below its low watermark
          for longer than the threshold averaging period. The ifIndex
          is the index of the affected port in ifTable."
		  
		  --#SEVERITY INFORMATIONAL
		  
    ::= { vcModuleMIBNotifications 14 }

vcModPortInputErrorsUp NOTIFICATION-TYPE
    OBJECTS { ifIndex, ifInErrors }
    STATUS  current
    DESCRIPTION
        "The input error count on a port has exceeded high watermark.

         The input error count on a port has exceeded its high watermark for
         longer than the error averaging period. The port is identified by
         ifIndex in ifTable."
		 
		 --#SEVERITY WARNING
		 
    ::= { vcModuleMIBNotifications 15 }

vcModPortInputErrorsDown NOTIFICATION-TYPE
    OBJECTS { ifIndex, ifInErrors }
    STATUS  current
    DESCRIPTION
        "The input error count on a port has dropped below low watermark.

         The input error count on a port has dropped below its low watermark for
         longer than the error averaging period. The port is identified by
         ifIndex in ifTable."
		 
		 --#SEVERITY INFORMATIONAL
		 
    ::= { vcModuleMIBNotifications 16 }

vcModPortOutputErrorsUp NOTIFICATION-TYPE
    OBJECTS { ifIndex, ifOutErrors }
    STATUS  current
    DESCRIPTION
        "The output error count on a port has exceeded its high watermark.

         The output error count on a port has exceeded its high watermark for
         longer than the error averaging period. The port is identified by
         ifIndex in ifTable."
		 
		 --#SEVERITY WARNING		 
		 
    ::= { vcModuleMIBNotifications 17 }

vcModPortOutputErrorsDown NOTIFICATION-TYPE
    OBJECTS { ifIndex, ifOutErrors }
    STATUS  current
    DESCRIPTION
        "The output error count on a port has dropped below its low watermark.

         The output error count on a port has dropped below its low watermark for
         longer than the error averaging period. The port is identified by
         ifIndex in ifTable."
		 
		 --#SEVERITY INFORMATIONAL
		 
    ::= { vcModuleMIBNotifications 18 }

vcModPortBpduLoopDetected NOTIFICATION-TYPE
    OBJECTS { ifIndex, vcModulePort, vcModulePortBpduLoopStatus }
    STATUS  current
    DESCRIPTION
        "A BPDU loop condition is detected on this port.

         If the port is configured for loop protection, the port is 
         disabled to protect against network loops. The port remains disabled
         until administrative action is taken."

		  --#SEVERITY CRITICAL

    ::= { vcModuleMIBNotifications 19 }

vcModPortBpduLoopCleared NOTIFICATION-TYPE
    OBJECTS { ifIndex, vcModulePort, vcModulePortBpduLoopStatus }
    STATUS  current
    DESCRIPTION
        "A previous BPDU loop condition is cleared.

         This trap is only sent when the agent detects transition from 'loop
         detected' state to 'ok' state on a given port."

		  --#SEVERITY INFORMATIONAL

    ::= { vcModuleMIBNotifications 20 }

vcModPortProtectionConditionDetected NOTIFICATION-TYPE
    OBJECTS { ifIndex, vcModulePort, vcModulePortProtectionStatus }
    STATUS  current
    DESCRIPTION
        "A port protection condition is detected on this port.

         If the new port protection status is a value other than ok,
         the port may be disabled to protect the VC module from further
	 service degradation."

		  --#SEVERITY CRITICAL

    ::= { vcModuleMIBNotifications 21 }

vcModPortProtectionConditionCleared NOTIFICATION-TYPE
    OBJECTS { ifIndex, vcModulePort, vcModulePortProtectionStatus }
    STATUS  current
    DESCRIPTION
        "Port is recovered from port protection condition.

         The port is recovered from port protection condition to normal
         operational state."

		  --#SEVERITY INFORMATIONAL

    ::= { vcModuleMIBNotifications 22 }

--
-- Conformance
--

vcModuleMIBConformance  OBJECT IDENTIFIER ::= { vcModuleMIB 3 }
vcModuleMIBCompliances  OBJECT IDENTIFIER ::= { vcModuleMIBConformance 1 }
vcModuleMIBGroups       OBJECT IDENTIFIER ::= { vcModuleMIBConformance 2 }

-- Compliance

vcModuleMIBCompliance MODULE-COMPLIANCE
        STATUS deprecated 
        DESCRIPTION

                "The compliance statement for entities which implement
                the VC MIB."
        MODULE  -- this module
                MANDATORY-GROUPS {
                        vcModuleGroup,
                        vcModPortThresholdNotificationsGroup,
                        vcModPortStatusNotificationsGroup
                }

        ::= { vcModuleMIBCompliances 1 }

vcModuleMIBCompliance2 MODULE-COMPLIANCE
        STATUS current
        DESCRIPTION

                "The compliance statement for entities which implement
                the VC MIB."
        MODULE  -- this module
                MANDATORY-GROUPS {
                        vcModuleGroup,
                        vcModPortThresholdNotificationsGroup,
                        vcModPortStatusNotificationsGroup,
			vcModuleGroup2
                }

        ::= { vcModuleMIBCompliances 2 }


-- Units of Conformance

vcModuleGroup OBJECT-GROUP
        OBJECTS {
                vcModuleDomainName, vcModuleRole,
                vcModuleDomainPrimaryAddressType, vcModuleDomainPrimaryAddress,
                vcModuleDomainPrimaryAddressIpv6, vcSwitchMemParityErrorCount
        }
        STATUS deprecated 
        DESCRIPTION
                "Virtual Connect Module objects."
        ::= { vcModuleMIBGroups 1 }

vcModPortThresholdNotificationsGroup  NOTIFICATION-GROUP
    NOTIFICATIONS {
                 vcModPortInputUtilizationUp, vcModPortInputUtilizationDown,
                 vcModPortOutputUtilizationUp, vcModPortOutputUtilizationDown,
                 vcModPortInputErrorsUp, vcModPortInputErrorsDown,
                 vcModPortOutputErrorsUp, vcModPortOutputErrorsDown
    }
    STATUS  current
    DESCRIPTION
            "The notifications which indicate specific changes in the
            Virtual Connect port utilization status."
    ::= { vcModuleMIBGroups 2 }

vcModPortStatusNotificationsGroup  NOTIFICATION-GROUP
    NOTIFICATIONS {
                 vcModPortBpduLoopDetected,
                 vcModPortBpduLoopCleared,
                 vcModPortProtectionConditionDetected,
                 vcModPortProtectionConditionCleared
    }
    STATUS  current
    DESCRIPTION
            "The notifications which indicate specific changes in the
            Virtual Connect port operational status."
    ::= { vcModuleMIBGroups 3 }

vcModuleGroup2 OBJECT-GROUP
        OBJECTS {
                vcModuleDomainName, vcModuleRole,
                vcModuleDomainPrimaryAddressType, vcModuleDomainPrimaryAddress,
                vcModuleDomainPrimaryAddressIpv6, vcSwitchMemParityErrorCount,
                vcSwitchMemParityErrorNonCorrectableCount
        }
        STATUS current
        DESCRIPTION
                "Virtual Connect Module objects."
        ::= { vcModuleMIBGroups 4 }

END
