-- *****************************************************************
-- CISCO-MEMORY-POOL-MIB
--
-- February 1996, Jeffrey T. Johnson
--
-- July 2001, Seth Wang
--
-- Copyright (c) 2001 by cisco Systems, Inc.
-- All rights reserved.
-- *****************************************************************

CISCO-MEMORY-POOL-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    Integer32,
    Gauge32
        FROM SNMPv2-SMI
    TEXTUAL-CONVENTION,
    DisplayString,
    TruthValue
        FROM SNMPv2-TC
    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF
    ciscoMgmt
        FROM CISCO-SMI
    Percent
        FROM CISCO-QOS-PIB-MIB;

ciscoMemoryPoolMIB MODULE-IDENTITY
    LAST-UPDATED    "200107310000Z"
    ORGANIZATION    "Cisco Systems, Inc."
    CONTACT-INFO
        "Postal: Cisco Systems, Inc.
        170 West Tasman Drive
        San Jose, CA 95134-1706
        USA

        Tel: +1 408 526 4000

        E-mail: cs-snmp@cisco.com"
    DESCRIPTION
        "MIB module for monitoring memory pools"
    REVISION  "200107310000Z"
    DESCRIPTION
        "Added a new table, ciscoMemoryPoolUtilizationTable, which
         provides information about memory utilization."
    REVISION  "199602010000Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { ciscoMgmt 48 }

CiscoMemoryPoolTypes ::= TEXTUAL-CONVENTION
    STATUS        current
    DESCRIPTION
        "Represents the different types of memory pools that
        may be present in a managed device.  Memory pools can
        be roughly categorized into two groups, predefined
        pools and dynamic pools.  The following pool types
        are currently predefined:
            1:  processor memory
            2:  i/o memory
            3:  pci memory
            4:  fast memory
            5:  multibus memory

        Dynamic pools will have a pool type value greater than
        any of the predefined types listed above.

        Note that only the processor pool is required to be
        supported by all devices.  Support for other pool types
        is dependent on the device being managed."
    SYNTAX        Integer32 (1..65535)

ciscoMemoryPoolObjects
    OBJECT IDENTIFIER ::= { ciscoMemoryPoolMIB 1 }

ciscoMemoryPoolTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CiscoMemoryPoolEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A table of memory pool monitoring entries."
    ::= { ciscoMemoryPoolObjects 1 }

ciscoMemoryPoolEntry OBJECT-TYPE
    SYNTAX        CiscoMemoryPoolEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry in the memory pool monitoring table."
    INDEX        { ciscoMemoryPoolType }
    ::= { ciscoMemoryPoolTable 1 }

CiscoMemoryPoolEntry ::=
    SEQUENCE {
        ciscoMemoryPoolType               CiscoMemoryPoolTypes,
        ciscoMemoryPoolName               DisplayString,
        ciscoMemoryPoolAlternate          Integer32,
        ciscoMemoryPoolValid              TruthValue,
        ciscoMemoryPoolUsed               Gauge32,
        ciscoMemoryPoolFree               Gauge32,
        ciscoMemoryPoolLargestFree        Gauge32
    }

ciscoMemoryPoolType OBJECT-TYPE
    SYNTAX        CiscoMemoryPoolTypes
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "The type of memory pool for which this entry
        contains information."
    ::= { ciscoMemoryPoolEntry 1 }

ciscoMemoryPoolName OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "A textual name assigned to the memory pool.  This
        object is suitable for output to a human operator,
        and may also be used to distinguish among the various
        pool types, especially among dynamic pools."
    ::= { ciscoMemoryPoolEntry 2 }

ciscoMemoryPoolAlternate OBJECT-TYPE
    SYNTAX        Integer32 (0..65535)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Indicates whether or not this memory pool has an
        alternate pool configured.  Alternate pools are
        used for fallback when the current pool runs out
        of memory.

        If an instance of this object has a value of zero,
        then this pool does not have an alternate.  Otherwise
        the value of this object is the same as the value of
        ciscoMemoryPoolType of the alternate pool."
    ::= { ciscoMemoryPoolEntry 3 }

ciscoMemoryPoolValid OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Indicates whether or not the remaining objects in
        this entry contain accurate data.  If an instance
        of this object has the value false (which in and of
        itself indicates an internal error condition), the
        values of the remaining objects in the conceptual row
        may contain inaccurate information (specifically, the
        reported values may be less than the actual values)."
    ::= { ciscoMemoryPoolEntry 4 }

ciscoMemoryPoolUsed OBJECT-TYPE
    SYNTAX        Gauge32
    UNITS         "bytes"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Indicates the number of bytes from the memory pool
        that are currently in use by applications on the
        managed device."
    ::= { ciscoMemoryPoolEntry 5 }

ciscoMemoryPoolFree OBJECT-TYPE
    SYNTAX        Gauge32
    UNITS         "bytes"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Indicates the number of bytes from the memory pool
        that are currently unused on the managed device.

        Note that the sum of ciscoMemoryPoolUsed and
        ciscoMemoryPoolFree is the total amount of memory
        in the pool"
    ::= { ciscoMemoryPoolEntry 6 }

ciscoMemoryPoolLargestFree OBJECT-TYPE
    SYNTAX        Gauge32
    UNITS         "bytes"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Indicates the largest number of contiguous bytes
        from the memory pool that are currently unused on
        the managed device."
    ::= { ciscoMemoryPoolEntry 7 }

ciscoMemoryPoolUtilizationTable OBJECT-TYPE
  SYNTAX      SEQUENCE OF CiscoMemoryPoolUtilizationEntry
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
    "A table of memory pool utilization entries. Each of the
     objects provides a general idea of how much of the memory
     pool has been used over a given period of time. It is
     determined as a weighted decaying average."
  ::= { ciscoMemoryPoolObjects 2 }

ciscoMemoryPoolUtilizationEntry OBJECT-TYPE
  SYNTAX      CiscoMemoryPoolUtilizationEntry
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
    "An entry in the memory pool utilization table."
  AUGMENTS { ciscoMemoryPoolEntry }
  ::= { ciscoMemoryPoolUtilizationTable 1 }

CiscoMemoryPoolUtilizationEntry ::=
  SEQUENCE {
    ciscoMemoryPoolUtilization1Min  Percent,
    ciscoMemoryPoolUtilization5Min  Percent,
    ciscoMemoryPoolUtilization10Min Percent
  }

ciscoMemoryPoolUtilization1Min OBJECT-TYPE
    SYNTAX        Percent
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This is the memory pool utilization for 1 minute."
    ::= { ciscoMemoryPoolUtilizationEntry 1 }

ciscoMemoryPoolUtilization5Min OBJECT-TYPE
    SYNTAX        Percent
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This is the memory pool utilization for 5 minutes."
    ::= { ciscoMemoryPoolUtilizationEntry 2 }

ciscoMemoryPoolUtilization10Min OBJECT-TYPE
    SYNTAX        Percent
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This is the memory pool utilization for 10 minutes."
    ::= { ciscoMemoryPoolUtilizationEntry 3 }

-- notifications

ciscoMemoryPoolNotifications
    OBJECT IDENTIFIER ::= { ciscoMemoryPoolMIB 2 }

-- (no notifications are currently defined)


-- conformance information

ciscoMemoryPoolConformance
    OBJECT IDENTIFIER ::= { ciscoMemoryPoolMIB 3 }
ciscoMemoryPoolCompliances
    OBJECT IDENTIFIER ::= { ciscoMemoryPoolConformance 1 }
ciscoMemoryPoolGroups
    OBJECT IDENTIFIER ::= { ciscoMemoryPoolConformance 2 }


-- compliance statements

ciscoMemoryPoolCompliance MODULE-COMPLIANCE
    STATUS    deprecated -- superceded by ciscoMemoryPoolComplianceRev1
    DESCRIPTION
        "The compliance statement for entities which implement
        the Cisco Memory Pool MIB"
    MODULE    -- this module
        MANDATORY-GROUPS { ciscoMemoryPoolGroup }
    ::= { ciscoMemoryPoolCompliances 1 }

ciscoMemoryPoolComplianceRev1 MODULE-COMPLIANCE
    STATUS        current
    DESCRIPTION
        "The compliance statement for entities which implement
        the Cisco Memory Pool MIB"
    MODULE    -- this module
        MANDATORY-GROUPS { ciscoMemoryPoolGroup }

        GROUP ciscoMemoryPoolUtilizationGroup
        DESCRIPTION
            "Per memory pool utilization statistics is mandatory for
            the managed system that supports memory pool utilization."
    ::= { ciscoMemoryPoolCompliances 2 }


-- units of conformance

ciscoMemoryPoolGroup OBJECT-GROUP
    OBJECTS {
        ciscoMemoryPoolName,
        ciscoMemoryPoolAlternate,
        ciscoMemoryPoolValid,
        ciscoMemoryPoolUsed,
        ciscoMemoryPoolFree,
        ciscoMemoryPoolLargestFree
    }
    STATUS        current
    DESCRIPTION
        "A collection of objects providing memory pool monitoring."
    ::= { ciscoMemoryPoolGroups 1 }

ciscoMemoryPoolUtilizationGroup OBJECT-GROUP
    OBJECTS {
        ciscoMemoryPoolUtilization1Min,
        ciscoMemoryPoolUtilization5Min,
        ciscoMemoryPoolUtilization10Min
    }
    STATUS        current
    DESCRIPTION
        "An optional group providing a collection of memory pool
        utilization objects."
    ::= { ciscoMemoryPoolGroups 2 }


END
