DMTF-DMI-MIB DEFINITIONS ::= BEGIN

IMPORTS
	Integer32, Unsigned32, MODULE-IDENTITY, OBJECT-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE
		FROM SNMPv2-SMI
	TEXTUAL-CONVENTION
		FROM SNMPv2-TC
	OBJECT-GROUP, NOTIFICATION-GROUP, MODULE-COMPLIANCE
		FROM SNMPv2-CONF
	enterprises
		FROM SNMPv2-SMI
		;


dmtf      OBJECT IDENTIFIER ::= { enterprises 412 }

dmiMIB    MODULE-IDENTITY
     LAST-UPDATED "9710221800Z"
     ORGANIZATION "DMTF SNMP/DMI Mapping Working Committee"
     CONTACT-INFO
          "         Brian O'Keefe
             Postal:     Hewlett-Packard Company, Inc.
                    3404 East Harmony Road, M/S A2
                    Fort Collins, CO  80528
               Tel: +1 970 898 4303
               Fax: +1 970 898 2038
             E-mail:     brian_okeefe@hp.com
                    Bok@cnd.hp.com

                    Steve Bostock
             Postal:     Novell, Inc.
                    2180 Fortune Drive
                    M/S F5-92-2
                    San Jose, CA 95131
               Tel: +1 408 577 8203
                Fax:     +1 408 577 5706
             E-mail:     steveb@novell.com
                         Steve_Bostock@novell.com
          "
     DESCRIPTION
          "The DMTF DMI MIB provides the framework for accessing
          DMI instrumented information and receiving DMI
          indications through an SNMP/DMI Mapping Agent.
          
          This MIB contains the following definitions:
          1.   A set of Textual Conventions used within this MIB and to be
            available for IMPORT by other MIBs created with the MIF-to-MIB
            mapping procedures.
          2.   A set of SNMP tables that model the DMI MI List Commands.
            These tables provide access to information about the DMI
            components and groups installed on the managed system; plus the
            MIF meta-data for the corresponding DMI classes.
          3. A set of definitions that model the DMI Indications
            and standard Event Generation group."
     REVISION  "9507132000Z"
     DESCRIPTION
          "Draft proposed to DMTF as Remote DMI method, but
          not pursued further. (Bostock)"
     REVISION  "9710221800Z"
     DESCRIPTION
          "Resurrected to bridge the co-existance gap
          between SNMP and DMI management frameworks in
          enterprise environments.  Updated to reflect DMI
          2.0 changes; including: formal SNMP pragma
          statement, final DMI event generation template and
          indications, new DMTF standard MIFs, plus
          allowance for remote SNMP/DMI proxy support. Also
          revised to use SNMPv2 SMI. (O'Keefe)"
    ::= { dmtf 1 }

--
-- MIB Module Organization
--
dmtfStdMifs              OBJECT IDENTIFIER ::= { dmtf 2 }
dmtfDynOids              OBJECT IDENTIFIER ::= { dmtf 3 }

dmiMIBObjects            OBJECT IDENTIFIER ::= { dmiMIB 1 }
dmiClasses               OBJECT IDENTIFIER ::= { dmiMIBObjects 1
}
dmiComponents       OBJECT IDENTIFIER ::= { dmiMIBObjects 2 }
dmiMappingAgent          OBJECT IDENTIFIER ::= { dmiMIBObjects 3
}

dmiNotifications         OBJECT IDENTIFIER ::= { dmiMIB 2 }
dmiIndications      OBJECT IDENTIFIER ::= { dmiNotifications 0 }
dmiEventVars             OBJECT IDENTIFIER ::= { dmiNotifications
1 }

dmiMIBConformance        OBJECT IDENTIFIER ::= { dmiMIB 3 }
dmiMIBCompliances        OBJECT IDENTIFIER ::= {
dmiMIBConformance 1 }
dmiMIBGroups        OBJECT IDENTIFIER ::= { dmiMIBConformance 2 }
dmiNotificationGroups    OBJECT IDENTIFIER ::= {
dmiMIBConformance 3 }



--
-- Textual Conventions
--
DmiAccess ::= TEXTUAL-CONVENTION
     STATUS         current
     DESCRIPTION
          "The access level of a DMI Attribute.  The access
          determines whether the attribute value can be read
          or written."
     SYNTAX         INTEGER {      -- matches DMI encodings
                    unknown(1),    -- MIF database error
                    readOnly(2),
                    readWrite(3),
                    writeOnly(4),
                    unsupported(5)
                    }

DmiDate ::= TEXTUAL-CONVENTION
     STATUS         current
     DESCRIPTION
          "The SNMP representation of the DMI Date data
          type. It is a 25 octet fixed length displayable
          string with the following format:
          
          Octets  Contents        Encoding
             1-4  year            decimal
             5-6  month           decimal(1..12)
             7-8  day             decimal(1..31)
            9-10  hour            decimal(0..23)
           11-12  minutes         decimal(0..59)
           13-14  seconds         decimal(0..59)
              15  dot             '.'
           16-21  microseconds    decimal(0..999999)
           22-25  offset from UTC ['+'|'-'](000..720)
                  in minutes"
     SYNTAX         OCTET STRING (SIZE (25))

DmiInteger64 ::= TEXTUAL-CONVENTION
     STATUS         current
     DESCRIPTION
          "SNMP representation of a DMI Integer64 data type
          is an octet string of exactly 8 octets, in network
          byte order."
     SYNTAX         OCTET STRING (SIZE(8))


DmiString ::= TEXTUAL-CONVENTION
     STATUS         current
     DESCRIPTION
          "A DMI displayable string.  The content of the string
          may be any characters from either the ISO 8859-1 or
          Unicode character sets, but not intermixed.  The string
          always includes a NULL (zero) termination character.
          The length of a string specifies the number of octets
          in the string, including the null termination
          character.  For ISO 8859-1, there is one octet per
          character.  For Unicode, there are two octets per
          character, including the NULL terminator."
     SYNTAX         OCTET STRING


DmiType ::= TEXTUAL-CONVENTION
     STATUS         current
     DESCRIPTION
          "The MIF syntax (data type) of a DMI Attribute."
     SYNTAX         INTEGER {
                    unknown(1), -- indicates MIF database error
                    counter32(2),
                    counter64(3),
                    gauge32(4),
                    integer32(5),
                    integer64(6),
                    octetString(7),
                    displayString(8),
                    date(9)
                    }

DmiTDAddress ::= TEXTUAL-CONVENTION
     STATUS         current
     DESCRIPTION
          "Denotes a transport domain and address, much like the
          TDomain and TAddress textual convention pair defined in
          RFC 1902, yet in a more compact representation.

          The first octet identifies the transport domain.  This
          value directly corresponds to the value of the
          transport domain object sub-identifier, as defined in
          RFC1906, that is subordinate to
          iso.org.dod.internet.snmpV2.snmpDomains.
          
          The remaining octets conform to the transport address
          syntax associated with the specified transport domain.
          
          For example, a value of 1 in the first octet
          corresponds to snmpUDPDomain, so the remaining octets
          conform to the syntax of snmpUDPAddress.
          
          For convienence, the mappings are summarized as
          follows. Note that UDP/IP and IPX are fixed length;
          CLNS, CONS and DDP are variable length.

                   DmiTDAddress octets
          Domain   1   2   3  4  5  6  7  8  9 10 11 12 13 14
          15...
          ======  ==  ==  == == == == == == == == == == == == ==
          UDP/IP   1  <ip-address> <port>
          CLNS     2  <n> <nsap-address..n> <t-selector...m>
          CONS     3  <n> <nsap-address..n> <t-selector...m>
          DDP      4  <n> <object...n><p><type..p><q><zone...q>
          IPX      5  <net-number> <physical-addres> <sock>
          "
     REFERENCE
          "RFC 1906, Transport Mappings for SNMP Version 2"
     SYNTAX       OCTET STRING (SIZE (1..255))


--
-- MIF Database: Class Definitions
--

dmiClassTable OBJECT-TYPE
     SYNTAX         SEQUENCE OF DmiClassEntry
     MAX-ACCESS          not-accessible
     STATUS         current
     DESCRIPTION
          "The MIF definitions for all group classes known to the
          Service Layer."
::= { dmiClasses 1 }

dmiClassEntry OBJECT-TYPE
     SYNTAX         DmiClassEntry
     MAX-ACCESS          not-accessible
     STATUS         current
     DESCRIPTION
          "The meta-data defining a particular group class.
          
          If multiple versions of a particular group class
          are registered with the Service Layer, the data in
          this entry shall pertain to the highest version."
     INDEX          { dmiClassIndex }
::= { dmiClassTable 1 }

DmiClassEntry ::= SEQUENCE {
     dmiClassIndex       Unsigned32,
     dmiClassString      DmiString,
     dmiClassVersion          INTEGER,
     dmiClassName        DmiString,
     dmiClassOID              OBJECT IDENTIFIER,
     dmiClassKeyCount         INTEGER,
     dmiClassDescrLength INTEGER,
     dmiClassPragma      DmiString
}

dmiClassIndex OBJECT-TYPE
     SYNTAX         Unsigned32
     MAX-ACCESS     read-only
     STATUS         current
     DESCRIPTION
          "A unique value for each group class known to the
          mapping agent for this managed node.  The value
          for each class must remain constant at least from
          one re-initialization of the mapping agent to the
          next re-initialization.  This value is NOT
          necessarily equal to the Group ID assigned within
          a given Component by the DMI Service Layer."
::= { dmiClassEntry 1 }

dmiClassString OBJECT-TYPE
     SYNTAX         DmiString (SIZE(0..255))
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The 'class string' assigned to the group in the
          'class' statement."
::= { dmiClassEntry 2 }

dmiClassVersion OBJECT-TYPE
     SYNTAX         INTEGER (0..999)
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The version number of the group definition
          providing it appeared as an integer in the 'class
          string'; zero otherwise."
::= { dmiClassEntry 3 }

dmiClassName OBJECT-TYPE
     SYNTAX         DmiString (SIZE(0..255))
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The 'group name' from the 'name' statement in the
          group definition."
::= { dmiClassEntry 4 }

dmiClassOID OBJECT-TYPE
     SYNTAX         OBJECT IDENTIFIER
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The OBJECT IDENTIFIER of the conceptual table
          representing the group in an SNMP MIB.  Attributes
          of the group may be accessed as columnar objects
          of this table, indexed according to the rules
          specified in RFC-nnnn."
::= { dmiClassEntry 5 }

dmiClassKeyCount OBJECT-TYPE
     SYNTAX         INTEGER (0..127)
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The number attributes that comprise a key for
          this group; zero if no 'key' statement appeared in
          the group definition.

          The ordered list of attribute Id's that comprise
          the key can be obtained from the dmiKeyTable"
::= { dmiClassEntry 6 }

dmiClassDescrLength OBJECT-TYPE
     SYNTAX         INTEGER (0..65535)
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The total length (in octets) of the 'description
          string' from the 'description' statement in the
          group definition.   This string can be retrieved
          in segments from the dmiDescrTable"
::= { dmiClassEntry 7 }

dmiClassPragma OBJECT-TYPE
     SYNTAX         DmiString
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The 'group name' from the 'name' statement in the
          group definition."
::= { dmiClassEntry 8 }



--
-- MIF Database: Attribute Definitions
--
dmiAttributeTable OBJECT-TYPE
     SYNTAX         SEQUENCE OF DmiAttributeEntry
     MAX-ACCESS          not-accessible
     STATUS         current
     DESCRIPTION
          "A table listing all the meta-data for all
          attributes of each registered group class."
::= { dmiClasses 2 }

dmiAttributeEntry OBJECT-TYPE
     SYNTAX         DmiAttributeEntry
     MAX-ACCESS          not-accessible
     STATUS         current
     DESCRIPTION
          "The meta-data defining a particular DMI
          attribute."
     INDEX          { dmiClassIndex, dmiAttrId }
::= { dmiAttributeTable 1 }

DmiAttributeEntry ::= SEQUENCE {
     dmiAttrId           Unsigned32,
     dmiAttrName              DmiString,
     dmiAttrAccess       DmiAccess,
     dmiAttrType              DmiType,
     dmiAttrMaxSize      INTEGER,
     dmiAttrEnumListCount     INTEGER,
     dmiAttrDescrLength  INTEGER
}

dmiAttrId OBJECT-TYPE
     SYNTAX         Unsigned32
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The value of the 'id' statement from the
          attribute definition.  This value uniquely
          identifies this attribute within the group.  "
::= { dmiAttributeEntry 1 }

dmiAttrName OBJECT-TYPE
     SYNTAX         DmiString (SIZE(0..255))
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The value of the 'name' statement from the
          attribute definition.  This name is normally used
          for display to human users."
::= { dmiAttributeEntry 2 }

dmiAttrAccess OBJECT-TYPE
     SYNTAX         DmiAccess
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The value of the 'access' statement from the
          attribute definition.  This value defines how the
          attribute may be accessed."
::= { dmiAttributeEntry 3 }

dmiAttrType OBJECT-TYPE
     SYNTAX         DmiType
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "This is the value of the 'type' statement from
          the attribute definition.  This value specifies
          the datatype of the attribute."
::= { dmiAttributeEntry 4 }

dmiAttrMaxSize OBJECT-TYPE
     SYNTAX         INTEGER (0..2147483647)
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "For string types, this value specifies the
          maximum number of octets that may be contained in
          the string.
          
          Zero implies no limit specified (or a non-string
          datatype)."
::= { dmiAttributeEntry 5 }

dmiAttrEnumListCount OBJECT-TYPE
     SYNTAX         INTEGER (0..2147483647)
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The number of name-value pairs in any associated
          enumeration list.  Zero if not an enumerated
          integer."
::= { dmiAttributeEntry 6 }

dmiAttrDescrLength OBJECT-TYPE
     SYNTAX         INTEGER (0..65535)
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The total length (in octets) of the 'description
          string' from the 'description' statement in the
          group definition.   This string can be retrieved
          in segments from the dmiDescrTable"
::= { dmiAttributeEntry 7 }


--
-- Key Table
--

dmiKeyTable OBJECT-TYPE
     SYNTAX         SEQUENCE OF DmiKeyEntry
     MAX-ACCESS          not-accessible
     STATUS         current
     DESCRIPTION
          "A table of key definitions for each group that
          has a 'key' statement."
::= { dmiClasses 3 }

dmiKeyEntry OBJECT-TYPE
     SYNTAX         DmiKeyEntry
     MAX-ACCESS          not-accessible
     STATUS         current
     DESCRIPTION
          "An entry in this table specifies an attribute
          that is (part of) the 'key' for the corresponding
          group. "
     INDEX          { dmiClassIndex, dmiKeyIndex }
::= { dmiKeyTable 1 }

DmiKeyEntry ::= SEQUENCE {
     dmiKeyIndex    INTEGER,
     dmiKeyType     DmiType,
     dmiKeyAttrId   Unsigned32
}

dmiKeyIndex OBJECT-TYPE
     SYNTAX         INTEGER (1..127)
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "An ordinal that indicates this attributes
          position in the key for this group."
::= { dmiKeyEntry 1 }

dmiKeyType OBJECT-TYPE
     SYNTAX         DmiType
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The type of the attribute that forms this portion
          of the group key."
::= { dmiKeyEntry 2 }

dmiKeyAttrId OBJECT-TYPE
     SYNTAX         Unsigned32
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The Id of the attribute that forms this portion
          of the group key."
::= { dmiKeyEntry 3 }


--
--Description Table
--

dmiDescrTable OBJECT-TYPE
     SYNTAX         SEQUENCE OF DmiDescrEntry
     MAX-ACCESS          not-accessible
     STATUS         current
     DESCRIPTION
          "A table of description string segments.  This
          table allows long description strings to be
          retrieved in segments.
          
          A complete description string can be reconstituted
          by concatenating the ordered set of string
          segments.  The length of the complete string is
          available through the dmiClassTable or
          dmiAttributeTable as appropriate."
::= { dmiClasses 4 }

dmiDescrEntry OBJECT-TYPE
     SYNTAX         DmiDescrEntry
     MAX-ACCESS          not-accessible
     STATUS         current
     DESCRIPTION
          "An entry in the description table contains one
          segment of an attribute or group description.
          
          The complete description string can be
          reconstituted by concatenating the ordered set of
          string segments.  The length of the complete
          string is available through the dmiClassTable or
          dmiAttributeTable as appropriate.
          
          The description string for the group definition is
          accessed by specifying dmiAttrId==0"
     INDEX          { dmiClassIndex, dmiAttrId, dmiDescrIndex }
::= { dmiDescrTable 1 }

DmiDescrEntry ::= SEQUENCE {
     dmiDescrIndex  INTEGER,
     dmiDescrText   DmiString
}

dmiDescrIndex OBJECT-TYPE
     SYNTAX         INTEGER (1..65535)
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "An ordinal that indicates this segment's relative
          position in the complete description string for
          this attribute or group."
::= { dmiDescrEntry 1 }

dmiDescrText OBJECT-TYPE
     SYNTAX         DmiString
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "A segment of the description string for this
          attribute or group."
::= { dmiDescrEntry 2 }

--
-- Enumeration Table
--

dmiEnumTable OBJECT-TYPE
     SYNTAX         SEQUENCE OF DmiEnumEntry
     MAX-ACCESS          not-accessible
     STATUS         current
     DESCRIPTION
          "A table defining all enumerated lists known to
          the Service Layer."
::= { dmiClasses 5 }

dmiEnumEntry OBJECT-TYPE
     SYNTAX         DmiEnumEntry
     MAX-ACCESS          not-accessible
     STATUS         current
     DESCRIPTION
          "An entry in this table defines the pairing of a
          string with an integer value as part of an 'Enum'
          definition."
     INDEX          { dmiClassIndex, dmiAttrId, dmiEnumId }
::= { dmiEnumTable 1 }

DmiEnumEntry ::= SEQUENCE {
     dmiEnumId      Unsigned32,
     dmiEnumValue   Integer32,
     dmiEnumString  DmiString
}

dmiEnumId OBJECT-TYPE
     SYNTAX         Unsigned32
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "A unique value for each entry within a particular
          'Enum' definition."
::= { dmiEnumEntry 1 }

dmiEnumValue OBJECT-TYPE
     SYNTAX         Integer32
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The integer value that is associated with the
          corresponding string (dmiEnumString)."
::= { dmiEnumEntry 2 }

dmiEnumString OBJECT-TYPE
     SYNTAX         DmiString (SIZE(0..255))
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The displayable string that is associated with
          the corresponding integer value (dmiEnumValue)"
::= { dmiEnumEntry 3 }

--
-- DMI Service Layer: Installed Components
--

--
-- Component Table
--

dmiComponentTable OBJECT-TYPE
     SYNTAX         SEQUENCE OF DmiComponentEntry
     MAX-ACCESS          not-accessible
     STATUS         current
     DESCRIPTION
          "A list of all components registered with the
          Service Layer."
::= { dmiComponents 1 }

dmiComponentEntry OBJECT-TYPE
     SYNTAX         DmiComponentEntry
     MAX-ACCESS          not-accessible
     STATUS         current
     DESCRIPTION
          "An entry in this table describes a particular
          component registered with the Service Layer"
     INDEX { dmiCompId }
::= { dmiComponentTable 1 }

DmiComponentEntry ::= SEQUENCE {
     dmiCompId           Unsigned32,
     dmiCompName              DmiString,
     dmiCompDescrLength  INTEGER,
     dmiCompGroupCount        INTEGER,
     dmiCompPragma       DmiString
     
}

dmiCompId OBJECT-TYPE
     SYNTAX         Unsigned32
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The unique Id assigned to the component by the
          Service Layer at registration time.  By
          convention, the Service Layer itself will have an
          Id of one."
::= { dmiComponentEntry 1 }

dmiCompName OBJECT-TYPE
     SYNTAX         DmiString (SIZE(0..255))
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The value of the 'name' statement from the
          component definition block."
::= { dmiComponentEntry 2 }

dmiCompDescrLength OBJECT-TYPE
     SYNTAX         INTEGER (0..65535)
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The total length of the component description
          string in octets."
::= { dmiComponentEntry 3 }

dmiCompGroupCount OBJECT-TYPE
     SYNTAX         INTEGER (1..65535)
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The number of group instances contained within
          this component."
::= { dmiComponentEntry 4 }

dmiCompPragma OBJECT-TYPE
     SYNTAX         DmiString (SIZE(0..255))
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The value of the 'pragama' statement from the
          component definition block."
::= { dmiComponentEntry 5 }

--
-- Component Description Table
--

dmiCompDescrTable OBJECT-TYPE
     SYNTAX         SEQUENCE OF DmiCompDescrEntry
     MAX-ACCESS          not-accessible
     STATUS         current
     DESCRIPTION
          "A table of description string segments.  This
          table allows long description strings to be
          retrieved in segments.
          
          A complete description string can be reconstituted
          by concatenating the ordered set of string
          segments.  The length of the complete string is
          available through the dmiComponentTable."
::= { dmiComponents 2 }

dmiCompDescrEntry OBJECT-TYPE
     SYNTAX         DmiCompDescrEntry
     MAX-ACCESS          not-accessible
     STATUS         current
     DESCRIPTION
          "An entry in the description table contains one
          segment of a component description.
          
          The complete description string can be
          reconstituted by concatenating the ordered set of
          string segments.  The length of the complete
          string is available through the
          dmiComponentTable."
     INDEX          { dmiCompId, dmiCompDescrIndex }
::= { dmiCompDescrTable 1 }

DmiCompDescrEntry ::= SEQUENCE {
     dmiCompDescrIndex   INTEGER,
     dmiCompDescrText    DmiString
}

dmiCompDescrIndex OBJECT-TYPE
     SYNTAX         INTEGER (1..65535)
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "An ordinal that indicates this segment's relative
          position in the complete description string for
          this attribute or group."
::= { dmiCompDescrEntry 1 }

dmiCompDescrText OBJECT-TYPE
     SYNTAX         DmiString
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "A segment of the description string for this
          attribute or group."
::= { dmiCompDescrEntry 2 }

--
-- Group Table
--

dmiGroupTable OBJECT-TYPE
     SYNTAX         SEQUENCE OF DmiGroupEntry
     MAX-ACCESS          not-accessible
     STATUS         current
     DESCRIPTION
          "A list of all group instances contained within
          each component."
::= { dmiComponents 3 }

dmiGroupEntry OBJECT-TYPE
     SYNTAX         DmiGroupEntry
     MAX-ACCESS          not-accessible
     STATUS         current
     DESCRIPTION
          "An entry in this table describes a particular
          group instance within a particular component."
     INDEX { dmiCompId, dmiGroupId }
::= { dmiGroupTable 1 }

DmiGroupEntry ::= SEQUENCE {
     dmiGroupId               Unsigned32,
     dmiGroupClassString DmiString,
     dmiGroupVersion          INTEGER,
     dmiGroupClassIndex  Unsigned32
}

dmiGroupId OBJECT-TYPE
     SYNTAX         Unsigned32
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "An identifier assigned by the DMI Service Layer
          that uniquely identifies this group instance
          within a particular component."
::= { dmiGroupEntry 1 }

dmiGroupClassString OBJECT-TYPE
     SYNTAX         DmiString (SIZE(0..255))
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The class string of the group (or table) instance
          as registered with the DMI Service Layer for the
          given component."
::= { dmiGroupEntry 2 }

dmiGroupVersion OBJECT-TYPE
     SYNTAX         INTEGER (0..999)
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The version number of the group definition
          providing it appeared as an integer in the 'class
          string'; zero otherwise."
::= { dmiGroupEntry 3 }

dmiGroupClassIndex OBJECT-TYPE
     SYNTAX         Unsigned32
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The index of the corresponding group class
          definition in the dmiClassTable.  This index is an
          artifact of the mapping agent and serves as a
          cross-reference into the dmiClassTable for the
          remainder of the group class definition."
::= { dmiGroupEntry 4 }


--
-- DMI Language Table
--

dmiLanguageTable OBJECT-TYPE
     SYNTAX         SEQUENCE OF DmiLanguageEntry
     MAX-ACCESS          not-accessible
     STATUS         current
     DESCRIPTION
          "A list of all language bindings registered for
          each component."
::= { dmiComponents 4 }

dmiLanguageEntry OBJECT-TYPE
     SYNTAX         DmiLanguageEntry
     MAX-ACCESS          not-accessible
     STATUS         current
     DESCRIPTION
          "An entry in this table describes a particular
          language binding within a particular component."
     INDEX          { dmiCompId, IMPLIED dmiLanguage }
::= { dmiLanguageTable 1 }

DmiLanguageEntry ::= SEQUENCE {
     dmiLanguage         DmiString
}

dmiLanguage OBJECT-TYPE
     SYNTAX         DmiString (SIZE(16|14))
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The language string, defined by the DMI 2.0
          Specification, that identifies a native language
          character set supported by the component.
          
          The format of the string is:
               'language-code|territory-code|encoding'
          where language-code is one of the two-letter codes
          defined in ISO 639, territory-code is one of the
          two leteter codes defined in ISO 3166, and
          encoding is either 'iso8859-1' or 'unicode'."
::= { dmiLanguageEntry 1 }


--
-- DMI-to-SNMP Mapping Agent capabilities
--
dmiMappingLevel OBJECT-TYPE
     SYNTAX         INTEGER (0..255)
     MAX-ACCESS          read-only
     STATUS         current
     DESCRIPTION
          "The mapping level identifies the capabilities
          supported by the DMI-to-SNMP mapping agent.  This
          object is defined as a bit-mask where each bit
          corresponds to a specific mapping capability.  If
          the bit is '1', the capability is supported by the
          mapping agent.  If the bit is '0', the capability
          is not supported. The mapping capabilities defined
          are:
               0x01 Event Mapping Supported
               0x02 Request/Response Mapping Supported
               0x04 Row Addition/Deletion Supported
               0x08 Remote Proxy Supported
               0x10 Dynamic OID Generation Supported
          All other (unused) bits must be '0'.
          For example, a mapping agent that supports Event
          and Request/Response mapping, including Dynamic
          OID Generation, but does not support row
          addition/deletion nor remote proxy returns the
          value 0x13."
::= { dmiMappingAgent 1 }


--
-- DMI Indication Definitions
--

--
-- Varbinds used in DMI Event Indications
--

dmiEventType OBJECT-TYPE
     SYNTAX         Integer32
     MAX-ACCESS          accessible-for-notify
     STATUS         current
     DESCRIPTION
          "Event-specific information that identifies the
          type of event within the DMI Event Generation
          group.
          
          Normally, this information is conveyed in the
          resulting SNMP Notification OID derived from the
          DMI Event to SNMP Trap mapping procedure.  This
          object is not included in event specific traps.
          
          However, this object is defined for use within the
          generic dmiEventIndication trap, when mapping the
          DMI event to a specific SNMP trap is not possible
          (e.g., the DMI Class to SNMP OID mapping is not
          defined)."
     REFERENCE
          "DMTF DMI 2.0 Specification, Section 3.2.2.2.1'
          class = 'EventGeneration|<specific name>|001'
          name = 'Event System', ID = 1"
::= { dmiEventVars 1 }

dmiEventSeverity OBJECT-TYPE
     SYNTAX         INTEGER {
                    monitor(1),
                    information(2),
                    ok(4),
                    nonCritical(8),
                    critical(16),
                    nonRecoverable(32)
                    }
     MAX-ACCESS          accessible-for-notify
     STATUS         current
     DESCRIPTION
          "The severity of this event."
     REFERENCE
          "DMTF DMI 2.0 Specification, Section 3.2.2.2.2'
          class = 'EventGeneration|<specific name>|001'
          name = 'Event Severity', ID = 2"
::= { dmiEventVars 2 }

--  { dmiEventVars 3 } is not used.

dmiEventStateKey OBJECT-TYPE
     SYNTAX         Integer32
     MAX-ACCESS          accessible-for-notify
     STATUS         current
     DESCRIPTION
          "The index into the Event State group for the
          component generating this event, provided the
          event is state-based.  The value -1 indicates the
          event is not state-based."
     REFERENCE
          "DMTF DMI 2.0 Specification, Section 3.2.2.2.3&4'
          class = 'EventGeneration|<specific name>|001'
          name = 'Event Is State-Based', ID = 3; and
          name = 'Event State Key', ID = 4"
::= { dmiEventVars 4 }

dmiEventAssociatedGroup OBJECT-TYPE
     SYNTAX         DmiString
     MAX-ACCESS          accessible-for-notify
     STATUS         current
     DESCRIPTION
          "The class string of the DMI group associated with
          this event."
     REFERENCE
          "DMTF DMI 2.0 Specification, Section 3.2.2.2.5'
          class = 'EventGeneration|<specific name>|001'
          name = 'Associated Group', ID = 5"
::= { dmiEventVars 5 }

dmiEventSystem OBJECT-TYPE
     SYNTAX         Integer32
     MAX-ACCESS          accessible-for-notify
     STATUS         current
     DESCRIPTION
          "Event-specific information that identifies the
          functional system of the component that caused the
          event.
          
          Normally, SNMP Traps mapped from a DMI Event
          contain an event-specific definition of this
          attribute.  This object is not included in event
          specific traps.
          
          However, this object is defined for use within the
          generic dmiEventIndication trap, when mapping the
          DMI event to a specific SNMP trap is not possible
          (e.g., the DMI Class to SNMP OID mapping is not
          defined)."
     REFERENCE
          "DMTF DMI 2.0 Specification, Section 3.2.2.2.6'
          class = 'EventGeneration|<specific name>|001'
          name = 'Event System', ID = 6"
::= { dmiEventVars 6 }

dmiEventSubSystem OBJECT-TYPE
     SYNTAX         Integer32
     MAX-ACCESS          accessible-for-notify
     STATUS         current
     DESCRIPTION
          "Event-specific information that identifies the
          functional sub-system of the component that caused
          the event.
          
          Normally, SNMP Traps mapped from a DMI Event
          contain an event-specific definition of this
          attribute.  This object is not included in event
          specific traps.
          
          However, this object is defined for use within the
          generic dmiEventIndication trap, when mapping the
          DMI event to a specific SNMP trap is not possible
          (e.g., the DMI Class to SNMP OID mapping is not
          defined)."
     REFERENCE
          "DMTF DMI 2.0 Specification, Section 3.2.2.2.7'
          class = 'EventGeneration|<specific name>|001'
          name = 'Event Subsystem', ID = 7"
::= { dmiEventVars 7 }

dmiEventSolution OBJECT-TYPE
     SYNTAX         Integer32
     MAX-ACCESS          accessible-for-notify
     STATUS         current
     DESCRIPTION
          "Event-specific information that describes the
          solution to the problem that caused the event.
          
          Typically, SNMP Traps mapped from a DMI Event
          contain an event-specific definition of this
          attribute.  This object is not included in event
          specific traps.
          
          However, this object is defined for use within the
          generic dmiEventIndication trap, when mapping the
          DMI event to a specific SNMP trap is not possible
          (e.g., the DMI Class to SNMP OID mapping is not
          defined)."
     REFERENCE
          "DMTF DMI 2.0 Specification, Section 3.2.2.3.1'
          class = 'EventGeneration|<specific name>|001'
          name = 'Event Solution', ID = 8"
::= { dmiEventVars 8 }

--  { dmiEventVars 9 } is unused

dmiEventVendorMsg OBJECT-TYPE
     SYNTAX         DmiString
     MAX-ACCESS          accessible-for-notify
     STATUS         current
     DESCRIPTION
          "Vendor specific message related to the event.
          This data may contain any displayable string (ISO
          8859-1)."
     REFERENCE
          "DMTF DMI 2.0 Specification, Section 3.2.2.3.3'
          class = 'EventGeneration|<specific name>|001'
          name = Event Message', ID = 10"
::= { dmiEventVars 10 }

dmiEventVendorData OBJECT-TYPE
     SYNTAX         OCTET STRING
     MAX-ACCESS          accessible-for-notify
     STATUS         current
     DESCRIPTION
          "Vendor specific data related to the event.  This
          data may contain any arbitrary string of octets."
     REFERENCE
          "DMTF DMI 2.0 Specification, Section 3.2.2.3.4'
          class = 'EventGeneration|<specific name>|001'
          name = Vendor Specific Data', ID = 11"
::= { dmiEventVars 11 }

dmiEventDateTime OBJECT-TYPE
     SYNTAX         DmiDate
     MAX-ACCESS          accessible-for-notify
     STATUS         current
     DESCRIPTION
          "The timestamp attached to an event indication by
          the DMI Service Layer."
::= { dmiEventVars 12 }

dmiEventClassString OBJECT-TYPE
     SYNTAX         DmiString
     MAX-ACCESS          accessible-for-notify
     STATUS         current
     DESCRIPTION
          "The Event Group class string used, along with the
          event type, to uniquely identify the DMI Event
          when translated into the general
          dmiEventIndication trap format."
::= { dmiEventVars 13 }

dmiEventSource OBJECT-TYPE
     SYNTAX         DmiTDAddress
     MAX-ACCESS          accessible-for-notify
     STATUS         current
     DESCRIPTION
          "The transport address that identifies the
          originator of the DMI Event or Indication. The
          event may be forwarded by other Service Layers
          acting as intermediaries for the originator of the
          event, or the event may have originated on a
          system other than the local mapping agent.
          
          This variable binding is only included in DMI
          Events and Indications if the original source is a
          system other than where the SNMP/DMI mapping agent
          is operating.
          
          If the transport selector (e.g., UDP port or IPX
          socket) of an SNMP mapping agent running on the
          specified system is not known, a zero (0) value is
          to indicate that only the network address portion
          is known.  Otherwise, the transport selector value
          may be used by management applications to send
          SNMP requests directly to the specified system."
::= { dmiEventVars 14 }



--
-- Standard DMI Indications
--

dmiEventIndication  NOTIFICATION-TYPE
     OBJECTS        {
                    dmiEventClassString, dmiEventType,
                    dmiEventDateTime, dmiCompId,
                    dmiEventSeverity, dmiEventStateKey,
                    dmiEventAssociatedGroup, dmiEventSystem,
                    dmiEventSubSystem }
     STATUS         current
     DESCRIPTION
          "A DMI Event associated with a group within a DMI
          component has occurred.
          
          Normally, DMI Events are translated into event
          specific SNMP notifications instead of this
          generic notification.
          
          However, this generic notification is defined for
          cases when mapping the DMI event to a specific
          SNMP trap is not possible (e.g., the DMI Class to
          SNMP OID mapping is not defined)."
     REFERENCE
          "DMTF DMI 2.0 Specification, Section 7.1.1'
          DmiDeliverEvent() indication"
::= { dmiIndications 1 }

dmiComponentAddedIndication  NOTIFICATION-TYPE
     OBJECTS        {
                    dmiCompId,
                    dmiCompName }
     STATUS         current
     DESCRIPTION
          "A new component has been installed into the DMI
          Service Layer."
     REFERENCE
          "DMTF DMI 2.0 Specification, Section 7.1.2'
          DmiComponentAdded indication"
::= { dmiIndications 2 }

dmiComponentDeletedIndication  NOTIFICATION-TYPE
     OBJECTS        { dmiCompId }
     STATUS         current
     DESCRIPTION
          "An installed component has been uninstalled from
          the DMI Service Layer."
     REFERENCE
          "DMTF DMI 2.0 Specification, Section 7.1.3'
          DmiComponentDeleted indication"
::= { dmiIndications 3 }

dmiLanguageAddedIndication  NOTIFICATION-TYPE
     OBJECTS        {
                    dmiCompId,
                    dmiLanguage }
     STATUS         current
     DESCRIPTION
          "A new language binding has been added to a
          component in the DMI Service Layer."
     REFERENCE
          "DMTF DMI 2.0 Specification, Section 7.1.4'
          DmiLanguageAdded) indication"
::= { dmiIndications 4 }

dmiLanguageDeletedIndication  NOTIFICATION-TYPE
     OBJECTS        {
                    dmiCompId,
                    dmiLanguage }
     STATUS         current
     DESCRIPTION
          "An existing language binding has been removed
          from a component in the DMI Service Layer."
     REFERENCE
          "DMTF DMI 2.0 Specification, Section 7.1.5'
          DmiLanguageDeleted indication"
::= { dmiIndications 5 }

dmiGroupAddedIndication  NOTIFICATION-TYPE
     OBJECTS        {
                    dmiCompId,
                    dmiGroupId,
                    dmiGroupClassString }
     STATUS         current
     DESCRIPTION
          "A new group has been added to a component in the
          DMI Service Layer."
     REFERENCE
          "DMTF DMI 2.0 Specification, Section 7.1.6'
          DmiGroupAdded indication"
::= { dmiIndications 6 }

dmiGroupDeletedIndication  NOTIFICATION-TYPE
     OBJECTS        {
                    dmiCompId,
                    dmiGroupId }
     STATUS         current
     DESCRIPTION
          "An existing group has been removed from a
          component in the DMI Service Layer."
     REFERENCE
          "DMTF DMI 2.0 Specification, Section 7.1.7'
          DmiGroupDeleted indication"
::= { dmiIndications 7 }


--
-- MIB Conformance Information
--

-- units of conformance

dmiClassesGroup OBJECT-GROUP
     OBJECTS        {
                    dmiClassIndex, dmiClassString,
                    dmiClassVersion, dmiClassName,
                    dmiClassOID, dmiClassKeyCount,
                    dmiClassDescrLength, dmiClassPragma,
                    dmiAttrId, dmiAttrName, dmiAttrAccess,
                    dmiAttrType, dmiAttrMaxSize,
                    dmiAttrEnumListCount, dmiAttrDescrLength,
                    dmiKeyIndex, dmiKeyType, dmiKeyAttrId,
                    dmiDescrIndex, dmiDescrText,
                    dmiEnumId, dmiEnumValue, dmiEnumString }
     STATUS         current
     DESCRIPTION
          "A collection of objects that describe all group
          classes registered with the Service Layer."
::= { dmiMIBGroups 1 }

dmiComponentsGroup OBJECT-GROUP
     OBJECTS        {
                    dmiCompId, dmiCompName,
                    dmiCompDescrLength, dmiCompGroupCount,
                    dmiCompPragma,
                    dmiCompDescrIndex, dmiCompDescrText,
                    dmiGroupId, dmiGroupClassString,
                    dmiGroupVersion, dmiGroupClassIndex,
                    dmiLanguage }
     STATUS         current
     DESCRIPTION
          "A collection of objects that describe all
          components registered with the Service
          Layer."
::= {dmiMIBGroups 2 }

dmiNotificationObjectGroup OBJECT-GROUP
     OBJECTS        {
                    dmiCompId, dmiCompName,
                    dmiGroupId, dmiGroupClassString,
                    dmiLanguage }
     STATUS         current
     DESCRIPTION
          "The subset of objects required only for DMI
          Indication to SNMP Notification mapping."
::= {dmiMIBGroups 3 }

dmiMappingAgentGroup OBJECT-GROUP
     OBJECTS        { dmiMappingLevel }
     STATUS         current
     DESCRIPTION
          "The general objects implemented by a mapping
          agent."
::= {dmiMIBGroups 4 }


dmiNotificationsGroup NOTIFICATION-GROUP
     NOTIFICATIONS  {
                    -- dmiEventIndication is conditional
                    dmiComponentAddedIndication,
                    dmiComponentDeletedIndication,
                    dmiLanguageAddedIndication,
                    dmiLanguageDeletedIndication,
                    dmiGroupAddedIndication,
                    dmiGroupDeletedIndication }
     STATUS         current
     DESCRIPTION
          "The notifications that an SNMP entity is
          required to implement."
::= {dmiNotificationGroups 1 }


--
-- compliance statements
--

dmiMIBCompliance MODULE-COMPLIANCE
     STATUS         current
     DESCRIPTION
          "The compliance statement for SNMP entities
          that implement the DMI MIB."
     MODULE         -- this module
     MANDATORY-GROUPS { dmiMappingAgentGroup,
                    dmiClassesGroup,
                    dmiComponentsGroup,
                    dmiNotificationsGroup }
::= { dmiMIBCompliances 1 }

dmiNotificationsOnlyCompliance MODULE-COMPLIANCE
     STATUS         current
     DESCRIPTION
          "The compliance statement for SNMP entities
          that implement only the DMI Indications to
          SNMP Notifications mapping."
     MODULE         -- this module
     MANDATORY-GROUPS { dmiMappingAgentGroup,
                    dmiNotificationObjectGroup,
                    dmiNotificationsGroup }
::= { dmiMIBCompliances 2 }


END

