   TIME-AGGREGATE-MIB DEFINITIONS ::= BEGIN
    IMPORTS
      MODULE-IDENTITY,  experimental,
      OBJECT-TYPE,      Opaque, Integer32
                 FROM SNMPv2-SMI
      OwnerString
                 FROM RMON-MIB
      RowStatus, StorageType, TEXTUAL-CONVENTION
                 FROM SNMPv2-TC
      MODULE-COMPLIANCE, OBJECT-GROUP
                 FROM SNMPv2-CONF
      SnmpAdminString
                 FROM SNMP-FRAMEWORK-MIB;

  tAggrMIB MODULE-IDENTITY
       LAST-UPDATED "200604270000Z"        --  27 April 2006
       ORGANIZATION "Cyber Solutions Inc. NetMan Working Group"
       CONTACT-INFO
      "                      Glenn Mansfield Keeni
                     Postal: Cyber Solutions Inc.
                             6-6-3, Minami Yoshinari
                             Aoba-ku, Sendai, Japan 989-3204.
                        Tel: +81-22-303-4012
                        Fax: +81-22-303-4015
                     E-mail: glenn@cysols.com

          Support Group E-mail: mibsupport@cysols.com"
          DESCRIPTION
                  "The MIB for servicing Time-Based aggregate
                    objects.

                    Copyright (C) The Internet Society (2006).  This
                    version of this MIB module is part of RFC 4498;
                    see the RFC itself for full legal notices.
                  "
          REVISION    "200604270000Z"      -- 27th April, 2006
          DESCRIPTION "Initial version, published as RFC 4498."
               ::= { experimental 124 }

   TAggrMOErrorStatus ::= TEXTUAL-CONVENTION
     STATUS       current
     DESCRIPTION
       "This data type is used to model the error status of the
        sampled MO instance.  The error status for a sampled MO
        instance is given in terms of two elements:
          o The moIndex, which indicates the sample number of the MO
            instance (starting at 1) in the value of the time-
            aggregated MO instance.
          o The moError, which indicates the error that was
            encountered in sampling that MO instance.
        The syntax in ASN.1 Notation will be
        ErrorStatus :: = SEQUENCE {
           moIndex  Integer32,
           moError  SnmpPduErrorStatus
        }
        TAggrMOErrorStatus ::= SEQUENCE OF {
           ErrorStatus
        }
        Note1: The command responder will supply values for all
               the samples of the MO instance.  If an error is
               encountered for a sample, then the corresponding
               value will have an ASN.1 value NULL, and an error
               will be flagged in the corresponding
               TAggrMOErrorStatus object.
               Only MOs for which errors have been encountered will
               the corresponding moIndex and moError values be set.
        Note2: The error code for the component MO instances will be
               in accordance with the SnmpPduErrorStatus TC defined
               in the DISMAN-SCHEDULE-MIB[RFC3231].
       "
     SYNTAX      Opaque (SIZE (0..1024))

   TimeAggrMOValue ::= TEXTUAL-CONVENTION
     STATUS       current
     DESCRIPTION
       "This data type is used to model the time-aggregated MOs.  It

        will be a sequence of values.  The syntax in ASN.1 Notation
        will be
        MOSampleValue :: = SEQUENCE {
             value ObjectSyntax
        }
        TimeAggrMOValue ::= SEQUENCE OF {
             MOSampleValue
        }
        where the first MOSampleValue, if any, will always be the
        timestamp of the first sample in the aggregated object.  The
        subsequent values are the values of the MO instance sampled
        at the specified intervals for the specified number of times.
        Note: The command generator will need to know the
              constituent MO instance and the sampling interval to
              correctly interpret TimeAggrMOValue.
       "
     SYNTAX      Opaque (SIZE (0..1024))

   CompressedTimeAggrMOValue ::= TEXTUAL-CONVENTION
     STATUS       current
     DESCRIPTION
       "This data type is used to model the compressed
        TAgMOs."
     SYNTAX      Opaque (SIZE (0..1024))

--
-- The Time-Based aggregation control table
--
   tAggrCtlTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF TAggrCtlEntry
        MAX-ACCESS  not-accessible
        STATUS current
        DESCRIPTION
           "The Time-Based aggregation control table.  It controls
            the aggregation of the samples of MO instances.  There
            will be a row for each TAgMO.
           "
        ::= {tAggrMIB 1}

    tAggrCtlEntry OBJECT-TYPE
        SYNTAX  TAggrCtlEntry
        MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
          "A row of the control table that defines one Time-Based
           aggregate MO (TAgMO)."
        INDEX {tAggrCtlEntryID }
        ::= {tAggrCtlTable 1 }

    TAggrCtlEntry ::= SEQUENCE {
       tAggrCtlEntryID
                     SnmpAdminString,
       tAggrCtlMOInstance
                     OBJECT IDENTIFIER,
       tAggrCtlAgMODescr
                     SnmpAdminString,
       tAggrCtlInterval
                     Integer32,
       tAggrCtlSamples
                     Integer32,
       tAggrCtlCompressionAlgorithm
                     INTEGER,
       tAggrCtlEntryOwner
                     OwnerString,
       tAggrCtlEntryStorageType
                     StorageType,
       tAggrCtlEntryStatus
                     RowStatus
    }

   tAggrCtlEntryID OBJECT-TYPE
        SYNTAX SnmpAdminString (SIZE(1..32))
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
          "A locally unique, administratively assigned name
            for this aggregated MO.  It is used as an index to
            uniquely identify this row in the table."
        ::= { tAggrCtlEntry 1 }

   tAggrCtlMOInstance OBJECT-TYPE
        SYNTAX OBJECT IDENTIFIER
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
           "The sampled values of this MO instance will be
            aggregated by the TAgMO.
            "
        ::= { tAggrCtlEntry 2 }

   tAggrCtlAgMODescr OBJECT-TYPE
        SYNTAX SnmpAdminString (SIZE(0..64))
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
           "A textual description of the aggregate object."
        ::= {tAggrCtlEntry 3}

   tAggrCtlInterval OBJECT-TYPE
        SYNTAX Integer32
        UNITS  "micro seconds"
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
           "The interval, in microseconds, at which the MO instance
            pointed at by tAggrInstance will be sampled for
            Time-Based aggregation.
          "
        ::= {tAggrCtlEntry 4}

   tAggrCtlSamples OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
           "The number of times at which the MO instance referred
            to by tAggrInstance will be sampled for Time-Based
            aggregation."
        ::= {tAggrCtlEntry 5}

   -- only one compression algorithm is defined as of now.
   tAggrCtlCompressionAlgorithm OBJECT-TYPE
        SYNTAX INTEGER {
               none      (1),
               deflate   (2)
        }
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
           "The compression algorithm that will be used by
            the agent to compress the value of the TAgMO.
            The deflate algorithm and corresponding data format
            specification is described in RFC 1951.  It is
            compatible with the widely used gzip utility.
          "
        REFERENCE
          "RFC1951 : DEFLATE Compressed Data Format Specification
           version 1.3
          "
        DEFVAL { none }
        ::= {tAggrCtlEntry 6}

   tAggrCtlEntryOwner OBJECT-TYPE
        SYNTAX OwnerString
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
           "A textual description of the entity that created
            this entry.
          "
        ::= {tAggrCtlEntry 7}

   tAggrCtlEntryStorageType OBJECT-TYPE
        SYNTAX StorageType
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
           "This object defines whether the parameters defined in
            this row are kept in volatile storage and lost upon
            reboot or backed up by non-volatile (permanent)
            storage.
            Conceptual rows having the value 'permanent' need not
            allow write-access to any columnar objects in the row.
           "
        ::= {tAggrCtlEntry 8}

   tAggrCtlEntryStatus OBJECT-TYPE
        SYNTAX RowStatus
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
           "The row status variable, used according to row
            installation and removal conventions.
            Objects in a row can be modified only when the value of
            this object in the corresponding conceptual row is not
            'active'.
            Thus, to modify one or more of the objects in this
            conceptual row,
              a. change the row status to 'notInService',
              b. change the values of the row, and
              c. change the row status to 'active'.
            The tAggrCtlEntryStatus may be changed to 'active' iff
            all the MOs in the conceptual row have been assigned
            valid values.
           "
        ::= {tAggrCtlEntry 9}

   --
   -- tAggrDataTable: The data table.
   --
   tAggrDataTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF TAggrDataEntry
        MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
           "This is the data table.  Each row of this table contains
            information about a TAgMO indexed by tAggrCtlEntryID.
            tAggrCtlEntryID is the key to the table.  It is used to
            identify instances of the TAgMO that are present in the
            table.
          "
        ::= {tAggrMIB 2}

   tAggrDataEntry OBJECT-TYPE
        SYNTAX  TAggrDataEntry
        MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
          "Entry containing information pertaining
            to a TAgMO."
        INDEX {tAggrCtlEntryID}
        ::= {tAggrDataTable 1 }

   TAggrDataEntry ::= SEQUENCE {
      tAggrDataRecord
                 TimeAggrMOValue,
      tAggrDataRecordCompressed
                 CompressedTimeAggrMOValue,
      tAggrDataErrorRecord
                 TAggrMOErrorStatus
      }

   tAggrDataRecord OBJECT-TYPE
        SYNTAX TimeAggrMOValue
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
          "The snapshot value of the TAgMO."
        ::= { tAggrDataEntry 1}

   tAggrDataRecordCompressed OBJECT-TYPE
        SYNTAX CompressedTimeAggrMOValue
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
          "The compressed value of the TAgMO.
           The compression algorithm will depend on the
           tAggrCtlCompressionAlgorithm given in the corresponding
           tAggrCtlEntry.  If the value of the corresponding
           tAggrCtlCompressionAlgorithm is (1) 'none', then the

           value of all instances of this object will be a string
           of zero length.
           Note that the access privileges to this object will be
           governed by the access privileges of the corresponding MO
           instance.  Thus, an entity attempting to access an
           instance of this MO MUST have access rights to the
           instance object pointed at by tAggrCtlMOInstance and this
           MO instance.
          "
        ::= { tAggrDataEntry 2}

   tAggrDataErrorRecord OBJECT-TYPE
        SYNTAX TAggrMOErrorStatus
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
           "The error status corresponding to the MO instance
            samples aggregated in tAggrDataRecord (and
            tAggrDataRecordCompressed)."
        ::= { tAggrDataEntry 3}

    -- Conformance information
   tAggrConformance OBJECT IDENTIFIER ::= { tAggrMIB 3 }
   tAggrGroups      OBJECT IDENTIFIER ::= { tAggrConformance 1 }
   tAggrCompliances OBJECT IDENTIFIER ::= { tAggrConformance 2 }

    -- Compliance statements
   tAggrMibCompliance MODULE-COMPLIANCE
        STATUS  current
        DESCRIPTION
                "The compliance statement for SNMP entities
                 that implement the TIME-AGGREGATE-MIB."
        MODULE  -- this module
            MANDATORY-GROUPS { tAggrMibBasicGroup }
        ::= { tAggrCompliances 1 }

    -- Units of conformance
   tAggrMibBasicGroup    OBJECT-GROUP
        OBJECTS {
                   tAggrCtlMOInstance,
                   tAggrCtlAgMODescr,
                   tAggrCtlInterval,
                   tAggrCtlSamples,
                   tAggrCtlCompressionAlgorithm,
                   tAggrCtlEntryOwner,
                   tAggrCtlEntryStorageType,
                   tAggrCtlEntryStatus,
                   tAggrDataRecord,
                   tAggrDataRecordCompressed,
                   tAggrDataErrorRecord
       }
        STATUS  current
        DESCRIPTION
                 "A collection of objects for Time-Based aggregation
                  of MOs."
        ::= { tAggrGroups 1 }
   END
