-- ****************************************************************************
--
--                         Virtual Connect Module MIB
--
--      Copyright 2008 Hewlett-Packard Development Company, L.P.
-- 
--
-- ****************************************************************************

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    FROM IF-MIB


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


    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 }

vcModuleMIB MODULE-IDENTITY
    LAST-UPDATED "200809160000Z"            -- 16 September 2008
    ORGANIZATION "Hewlett-Packard Company"
    CONTACT-INFO "Robert Teisberg
                  Hewlett-Packard Company.
                  Email: robert.teisberg@hp.com"
    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     "200810080000Z"            -- 08 October 2008
       DESCRIPTION  "Draft-0. Initial cut.  -Jitendra Vegiraju"
       REVISION     "200902180000Z"            -- 18 February 2009
       DESCRIPTION  "Draft-1. Adding enclosure role object.  -Jitendra Vegiraju"

       REVISION     "201102010000Z"            -- 01 February 2011
       DESCRIPTION  "Added support for network loop detection status reporting and 
                     notification.  -Jitendra Vegiraju"
       REVISION     "201208190000Z"            -- 19 August 2012
       DESCRIPTION  "Added port protection notifications. -Jitendra Vegiraju"
    ::= { virtualConnect 3 }

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 enclsoure 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 suppported 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 }

-- 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-dectected(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.
              "
    SYNTAX      INTEGER
    {
       ok(1),
       pause-flood-detected(2)
    }

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 }

--
-- 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 codition.

         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 current
        DESCRIPTION

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

        ::= { vcModuleMIBCompliances 1 }

-- Units of Conformance

vcModuleGroup OBJECT-GROUP
        OBJECTS {
                vcModuleDomainName, vcModuleRole,
                vcModuleDomainPrimaryAddressType, vcModuleDomainPrimaryAddress
        }
        STATUS current
        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 }

END
