-- =================================================================
-- Copyright (c) 2004-2015 Hangzhou H3C Tech. Co., Ltd. All rights reserved.
--
-- Description: flash management mib
-- Reference:
-- Version: V3.3
-- History:
--     V1.0 initial version 2002-12-20
--     V1.1 2004-6-15 add delete(4) to h3cFlhOperType
--     V1.2 2004-7-15 add some H3cFlashOperationStatus types:
--          opAuthFail(17),
--          opTimeout(18),
--          opDeleteFileOpenError(20),
--          opDeleteInvalidDevice(21),
--          opDeleteInvalidFunction(22),
--          opDeleteOperationError(23),
--          opDeleteInvalidFileName(24),
--          opDeleteDeviceBusy(25),
--          opDeleteParaError(26),
--          opDeleteInvalidPath(27)
--     V1.21 2004-8-19 modify the DESCRIPTION of h3cFlhMinPartitionSize
--         by fanxiaoxun
--     V2.0 2004-10-12 updated by gaolong
--         Fix h3cFlhMIBCompliance MODULE name to H3C-FLASH-MAN-MIB
--     V2.1 2004-11-22 modify the SYNTAX of h3cFlhSupportNum and h3cFlhIndex
--         by wangpengju
--     V2.2 2005-01-11 updated by gaolong and weixinzhe
--         File description updated
--     V2.3 2005-01-11 add 'rename' operation type for h3cFlhOperType,
--         by wangpengju
--     V2.4 2005-06-06 add enum value in SYNTAX of h3cFlhOperProtocol
--         by jinyongfeng. Adjust file format by gaolong
--     V2.5 2005-08-18 change the value range of h3cFlhFileIndex
--         from (1..32) to (1..2147483647), by wangpengju
--     V2.6 2006-03-03 updated by yangjianfeng
--         correct some error words which are obvious clerical error.
--     V2.7 2009-05-05 Add h3cFlhOperServerPort by jinyi
--     V2.8 2010-06-05 add h3cFlhOperFailReason by shuaixiaojuan
--                     add h3cFlhKbyteSize by jinyi
--     V2.9 2010-10-30 Deprecated h3cFlhOperServerAddress,
--                     added enum in H3cFlashOperationStatus,
--                     added h3cFlhOperSrvAddrType, h3cFlhOperSrvAddrRev and
--                     h3cFlhOperSrvVPNName by songhao.
--     V3.0 2011-10-13 Modify syntax of h3cFlhName and h3cFlhPartName
--                     by shuaixiaojuan.
--     V3.1 2012-06-26 Add h3cFlhPartBootable and h3cFlhPartPathForGlobalOpt
--                     by lisong.
--     V3.2 2013-05-23 Add h3cFlhHCSize, h3cFlhPartHCSpace,
--                     h3cFlhPartHCSpaceFree and h3cFlhFileHCSize to replace
--                     h3cFlhSize, h3cFlhPartSpace, h3cFlhPartSpaceFree
--                     and h3cFlhFileSize by lisong.
--     V3.3 2014-08-11 Added mkdir(6), rmdir(7) to h3cFlhOperType, added h3cFlhFileType
--                     to h3cFlhFileEntry, modified description of
--                     h3cFlhFileName, h3cFlhOperProtocol, h3cFlhOperSourceFile
--                     and H3cFlashOperationStatus to support directory operation
--                     by SongHao.
--          2015-01-20 Added copy(8) to h3cFlhOperType by SongHao.
-- =================================================================
H3C-FLASH-MAN-MIB DEFINITIONS ::= BEGIN

IMPORTS
    PhysicalIndex
        FROM ENTITY-MIB
    h3cCommon
        FROM HUAWEI-3COM-OID-MIB
    OBJECT-GROUP, MODULE-COMPLIANCE, NOTIFICATION-GROUP
        FROM SNMPv2-CONF
    TimeTicks, IpAddress, Integer32, Gauge32, Counter32,
    OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE
        FROM SNMPv2-SMI
    InetAddressType, InetAddress
        FROM INET-ADDRESS-MIB
    DisplayString, TimeStamp, TruthValue, RowStatus, TEXTUAL-CONVENTION
        FROM SNMPv2-TC
    CounterBasedGauge64
        FROM HCNUM-TC;


h3cFlash MODULE-IDENTITY
    LAST-UPDATED "201501200808Z"
    ORGANIZATION
        "Hangzhou H3C Technologies Co., Ltd."
    CONTACT-INFO
        "Platform Team Hangzhou H3C Technologies Co., Ltd.
         Hai-Dian District Beijing P.R. China
         http://www.h3c.com
         Zip:100085"
    DESCRIPTION
        "This MIB contains objects to manage flash cards and flash
        card operations.
        There are no constraints on this MIB."
    REVISION "201501200808Z"
    DESCRIPTION
        "Added copy(8) to h3cFlhOperType."
    REVISION "201408110303Z"
    DESCRIPTION
        "Added mkdir(6), rmdir(7) to h3cFlhOperType, added h3cFlhFileType
        to h3cFlhFileEntry, modified description of
        h3cFlhFileName, h3cFlhOperProtocol, h3cFlhOperSourceFile
        and H3cFlashOperationStatus to support directory operation."
    REVISION "201305230000Z"
    DESCRIPTION
        "Add h3cFlhHCSize, h3cFlhPartHCSpace, h3cFlhPartHCSpaceFree and
        h3cFlhFileHCSize to replace h3cFlhSize, h3cFlhPartSpace,
        h3cFlhPartSpaceFree and h3cFlhFileSize."
    REVISION "201206260000Z"
    DESCRIPTION
        "Add h3cFlhPartBootable and h3cFlhPartPathForGlobalOpt."
    REVISION "201110130000Z"
    DESCRIPTION
        "Modify syntax of h3cFlhName and h3cFlhPartName."
    REVISION "201010300000Z"
    DESCRIPTION
        "Deprecated h3cFlhOperServerAddress, added enum in
        H3cFlashOperationStatus, added h3cFlhOperSrvAddrType,
        h3cFlhOperSrvAddrRev and h3cFlhOperSrvVPNName."
    REVISION "201006050000Z"
    DESCRIPTION
        "Add h3cFlhOperFailReason and h3cFlhKbyteSize."
    REVISION "200905050000Z"
    DESCRIPTION
        "Add h3cFlhOperServerPort."
    REVISION "200603030000Z"
    DESCRIPTION
        "Correct some error words which are obvious clerical error."
    REVISION "200508180000Z"
    DESCRIPTION
        "Change the value range of h3cFlhFileIndex from (1..32)
        to (1..2147483647)."
    REVISION "200506060000Z"
    DESCRIPTION
        "Add enum value in SYNTAX of h3cFlhOperProtocol.
         Adjust file format."
    REVISION "200501110800Z"
    DESCRIPTION
        "Add 'rename' operation type for h3cFlhOperType."
    REVISION "200501110000Z"
    DESCRIPTION
        "File description updated."
    REVISION "200411220000Z"
    DESCRIPTION
        "Modify the SYNTAX of h3cFlhSupportNum and h3cFlhIndex."
    REVISION "200410120000Z"
    DESCRIPTION
        "Fix h3cFlhMIBCompliance MODULE name to H3C-FLASH-MAN-MIB."
    REVISION "200408190000Z"
    DESCRIPTION
        "Modify the DESCRIPTION of h3cFlhMinPartitionSize."
    REVISION "200407150000Z"
    DESCRIPTION
        "Add some H3cFlashOperationStatus types:
        opAuthFail(17),
        opTimeout(18),
        opDeleteFileOpenError(20),
        opDeleteInvalidDevice(21),
        opDeleteInvalidFunction(22),
        opDeleteOperationError(23),
        opDeleteInvalidFileName(24),
        opDeleteDeviceBusy(25),
        opDeleteParaError(26),
        opDeleteInvalidPath(27)"
    REVISION "200406150000Z"
    DESCRIPTION
        "add delete(4) to h3cFlhOperType."
    REVISION "200212200000Z"
    DESCRIPTION
        "Initial version."
    ::= { h3cCommon 5 }


--
-- Textual conventions
--

H3cFlashOperationStatus ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "The status of the specified operation can be one of
        the following.

        opInProgress : The operation is in process.
        opSuccess : The operation has been completed successfully.
        opInvalid : The command is invalid or command-protocol-device
                    combination is unsupported by the system.
        opInvalidProtocol : Invalid protocol is specified.
        opInvalidSourceName : Invalid source name is specified.
        opInvalidDestName : Invalid target name is specified.
        opInvalidServerAddress : Invalid server address is specified.
        opDeviceBusy : The device is in use and locked by another process.
        opDeviceOpenError : Invalid device name is specified.
        opDeviceError : Device read, write or erase error.
        opDeviceNotProgrammable : Device is read-only but a write or
                                  erase operation was specified.
        opDeviceFull : Device is filled to capacity.
        opFileOpenError : Invalid file/directory name,
                          file/directory not found in partition.
        opFileTransferError : File transfer was unsuccessful.
        opFileChecksumError : File checksum in Flash is invalid.
        opNoMemory : System is running in low on memory.
        opUnknownFailure : Failure which is unknown.
        opDeleteFileOpenError : File/Directory is in used by another process.
        opDeleteInvalidDevice : Invalid device name is specified.
        opDeleteInvalidFunction : Deleted operation is unsupported
                                  by the device.
        opDeleteOperationError : Operation is in a low error.
        opDeleteInvalidFileName : Invalid name is specified.
        opDeleteDeviceBusy : The device is in use and locked
                            by another process.
        opDeleteParaError : The parameters are invalid.
        opDeleteInvalidPath : The path is invalid.
        opDeleteFileNotExistInSlave : Failed to delete file, because the file
                                      does not exist in the slave.
        opDeleteFileFailedInSlave : Operation failed when deleting file in the slave.
        opSlaveFull : Operation failed because the slave doesn't have enough space.
        opCopyToSlaveFailure : Operation failed when copying file to the slave.
        "
    SYNTAX INTEGER
        {
            opInProgress(1),
            opSuccess(2),
            opInvalid(3),
            opInvalidProtocol(4),
            opInvalidSourceName(5),
            opInvalidDestName(6),
            opInvalidServerAddress(7),
            opDeviceBusy(8),
            opDeviceOpenError(9),
            opDeviceError(10),
            opDeviceNotProgrammable(11),
            opDeviceFull(12),
            opFileOpenError(13),
            opFileTransferError(14),
            opFileChecksumError(15),
            opNoMemory(16),
            opAuthFail(17),
            opTimeout(18),
            opUnknownFailure(19),
            opDeleteFileOpenError(20),
            opDeleteInvalidDevice(21),
            opDeleteInvalidFunction(22),
            opDeleteOperationError(23),
            opDeleteInvalidFileName(24),
            opDeleteDeviceBusy(25),
            opDeleteParaError(26),
            opDeleteInvalidPath(27),
            opDeleteFileNotExistInSlave(28),
            opDeleteFileFailedInSlave(29),
            opSlaveFull(30),
            opCopyToSlaveFailure(31)
        }

H3cFlashPartitionUpgradeMode ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "
        Flash partition upgrade method, i.e., method by which
        new files can be downloaded into the partition.
        FLH stands for Flash Load Helper, a feature provided
        on run-from-Flash systems for upgrading Flash.  This
        feature uses the bootstrap code in ROMs to help in
        automatic download.
        This object should be retrieved if the partition
        status is runFromFlash(2).
        If the partition status is readOnly(1), the upgrade
        method would depend on the reason for the readOnly
        status.  For example, it may simply be a matter of installing
        the programming jumper, or it may require execution of a
        later version of software that supports the Flash chips.

        unknown      -  the current system image does not know
                how Flash can be programmed.  A possible
                method would be to reload the ROM image
                and perform the upgrade manually.
        rxbootFLH    -  the Flash Load Helper is available to
                download files to Flash.  A copy-to-flash
                command can be used and this system image
                will automatically reload the Rxboot image
                in ROM and direct it to carry out the
                download request.
        direct       -  will be done directly by this image.
        "
    SYNTAX INTEGER
        {
            unknown(1),
            rxbootFLH(2),
            direct(3)
        }

H3cFlashPartitionStatus ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "If device is not programmable the value of it will be
        'readOnly'; If the current image is running from
        this partition the value of it will be 'runFromFlash'
        If device is programmable the value of it will be 'readWrite'.
        "
    SYNTAX INTEGER
        {
            readOnly(1),
            runFromFlash(2),
            readWrite(3)
        }


--
-- Node definitions
--
h3cFlashManMIBObjects OBJECT IDENTIFIER ::= { h3cFlash 1 }


-- The flash device information.
h3cFlashDevice OBJECT IDENTIFIER ::= { h3cFlashManMIBObjects 1 }


h3cFlhSupportNum OBJECT-TYPE
    SYNTAX Integer32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        Specifies the total number of flash which the
        system supported.

        The MIB should not be loaded if there is no flash
        in the system and so the value here will be a
        minimum of 1.
        "
    ::= { h3cFlashDevice 1 }


h3cFlashTable OBJECT-TYPE
    SYNTAX SEQUENCE OF H3cFlashEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "
        This table gives the properties of all the flashes on
        the system.
        "
    ::= { h3cFlashDevice 2 }


h3cFlashEntry OBJECT-TYPE
    SYNTAX H3cFlashEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "The entry of h3cFlashTable."
    INDEX { h3cFlhIndex }
    ::= { h3cFlashTable 1 }


H3cFlashEntry ::=
    SEQUENCE {
        h3cFlhIndex                 Integer32,
        h3cFlhSize                  Integer32,
        h3cFlhPos                   PhysicalIndex,
        h3cFlhName                  DisplayString,
        h3cFlhChipNum               Integer32,
        h3cFlhDescr                 DisplayString,
        h3cFlhInitTime              TimeStamp,
        h3cFlhRemovable             TruthValue,
        h3cFlhPartitionBool         TruthValue,
        h3cFlhMinPartitionSize      Integer32,
        h3cFlhMaxPartitions         Integer32,
        h3cFlhPartitionNum          Integer32,
        h3cFlhKbyteSize             Integer32,
        h3cFlhHCSize                CounterBasedGauge64
     }

h3cFlhIndex OBJECT-TYPE
    SYNTAX Integer32 (1..2147483647)
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The index of h3cFlashTable.  There are two parts for this index
        depicted as follows:
        31                  15                  0
        +++++++++++++++++++++++++++++++++++++++++
        +   entity index    +    random index   +
        +   ( bit 16..31 )       ( bit 0..15 )  +
        +++++++++++++++++++++++++++++++++++++++++

        From bit0 to bit15 (two bytes), it has a minimum value of 1, and
        maximum value of the same as the value of h3cFlhSupportNum.

        From bit16 to bit31 (two bytes), it is the physical index the same as the
        entPhysicalIndex specified in ENTITY-MIB.
        "
    ::= { h3cFlashEntry 1 }


h3cFlhSize OBJECT-TYPE
    SYNTAX Integer32
    UNITS "bytes"
    MAX-ACCESS read-only
    STATUS deprecated
    DESCRIPTION
        "
        Specifies the total size of the flash indexed by h3cFlhIndex.
        The value should be zero if the flash is removed for a removable
        device.
        If the total size of the flash exceeds 2,147,483,647 bytes,
        h3cFlhHCSize specifies the actual size.
        "
    ::= { h3cFlashEntry 2 }


h3cFlhPos OBJECT-TYPE
    SYNTAX PhysicalIndex
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The position of the flash device in system.  This object is
        an index of entPhysicalTable in ENTITY-MIB.
        If the value of this object is 0,
        the main processor is indicated.
        "
    ::= { h3cFlashEntry 3 }


h3cFlhName OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..255))
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The flash name within the system."
    ::= { h3cFlashEntry 4 }


h3cFlhChipNum OBJECT-TYPE
    SYNTAX Integer32 (1..64)
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The chip numbers in the flash."
    ::= { h3cFlashEntry 5 }


h3cFlhDescr OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..64))
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "Description of the purpose of the flash in the system."
    ::= { h3cFlashEntry 6 }


h3cFlhInitTime OBJECT-TYPE
    SYNTAX TimeStamp
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The initialization time for the flash component or partition,
        recorded using the system time.  This will be the boot time for
        a fixed device.  For a removable component or a partition,
        it will be the initialization time.
        "
    ::= { h3cFlashEntry 8 }


h3cFlhRemovable OBJECT-TYPE
    SYNTAX TruthValue
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The value indicates whether the flash indexed can be removed
        or not.
        The true(1) value indicates the flash device CAN be removed.
        "
    ::= { h3cFlashEntry 9 }


h3cFlhPartitionBool OBJECT-TYPE
    SYNTAX TruthValue
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "
        The value indicates whether the flash indexed can be partitioned
        or not.
        The true(1) value indicates the flash CAN be partitioned.
        "
    ::= { h3cFlashEntry 11 }


h3cFlhMinPartitionSize OBJECT-TYPE
    SYNTAX Integer32
    UNITS "bytes"
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        Minimum partition size supported.
        If h3cFlhDevicePartitionBool is false, the value
        of this object is the same as h3cFlhSize.
        "
    ::= { h3cFlashEntry 12 }


h3cFlhMaxPartitions OBJECT-TYPE
    SYNTAX Integer32 (1..8)
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The maximum count of partitions which the system supports
        for this flash.  If h3cFlhPartitionBool is false,
        the object value is 1.
        "
    ::= { h3cFlashEntry 13 }


h3cFlhPartitionNum OBJECT-TYPE
    SYNTAX Integer32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The actual number of partitions supported by the system for
        this flash.  If h3cFlhPartitionBool is false, this value is 1.
        "
    ::= { h3cFlashEntry 14 }

h3cFlhKbyteSize OBJECT-TYPE
    SYNTAX Integer32
    UNITS "kbytes"
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        Specifies the total size of the flash device indexed
        by h3cFlhIndex.  The value should be zero if the flash is
        removed for a removable device.
        "
    ::= { h3cFlashEntry 15 }

h3cFlhHCSize OBJECT-TYPE
    SYNTAX CounterBasedGauge64
    UNITS "bytes"
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        Specifies the total size of the flash indexed by h3cFlhIndex.
        This node is a 64-bit substitute for h3cFlhSize.
        "
    ::= { h3cFlashEntry 16 }

h3cFlashChips OBJECT IDENTIFIER ::= { h3cFlashDevice 3 }


h3cFlhChipTable OBJECT-TYPE
    SYNTAX SEQUENCE OF H3cFlhChipEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "
        Table of properties for all flash chips.
        Used mainly for diagnostics.
        "
    ::= { h3cFlashChips 1 }


h3cFlhChipEntry OBJECT-TYPE
    SYNTAX H3cFlhChipEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "The entry of h3cFlhChipTable"
    INDEX { h3cFlhIndex, h3cFlhChipSerialNo }
    ::= { h3cFlhChipTable 1 }


H3cFlhChipEntry ::=
    SEQUENCE {
        h3cFlhChipSerialNo              Integer32,
        h3cFlhChipID                    DisplayString,
        h3cFlhChipDescr                 DisplayString,
        h3cFlhChipWriteTimesLimit       Integer32,
        h3cFlhChipWriteTimes            Counter32,
        h3cFlhChipEraseTimesLimit       Integer32,
        h3cFlhChipEraseTimes            Counter32
     }

h3cFlhChipSerialNo OBJECT-TYPE
    SYNTAX Integer32 (1..64)
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "Index of h3cFlhChipTable."
    ::= { h3cFlhChipEntry 1 }


h3cFlhChipID OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..5))
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The manufacturer code (the upper byte) and
        device code (the lower byte) for a chip.
        Unknown chip code is presented as 00:00.
        "
    ::= { h3cFlhChipEntry 2 }


h3cFlhChipDescr OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..32))
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The description of the flash chip.
        "
    ::= { h3cFlhChipEntry 3 }


h3cFlhChipWriteTimesLimit OBJECT-TYPE
    SYNTAX Integer32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The limit for the number of write times (retries)
        for a flash chip.  If the limit
        is exceeded an error should be reported by the management
        station.
        "
    ::= { h3cFlhChipEntry 4 }


h3cFlhChipWriteTimes OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        A count of write times (retries) for the flash chip since
        initialization.
        A count of 25 or more for a single chip indicates a write error.
        Management stations should note the value of this MIB before and
        after a write operation,
        and report any errors accordingly.
        "
    ::= { h3cFlhChipEntry 5 }


h3cFlhChipEraseTimesLimit OBJECT-TYPE
    SYNTAX Integer32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The limit for the number of erase times (retries) for a flash
        chip.
        If the limit is exceeded an error should be reported by the
        management station.
        "
    ::= { h3cFlhChipEntry 6 }


h3cFlhChipEraseTimes OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        A count of erase times (retries) for the flash chip since
        initialization.
        A count of 2000 or more for a single chip indicates a write
        error.
        Management stations should note the value of this MIB before and
        after an erase operation, and report any errors accordingly.
        "
    ::= { h3cFlhChipEntry 7 }


h3cFlashPartitions OBJECT IDENTIFIER ::= { h3cFlashDevice 4 }


h3cFlhPartitionTable OBJECT-TYPE
    SYNTAX SEQUENCE OF H3cFlhPartitionEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "
        Properties for the flash partitions.  Minimum of one entry in
        this table.
        "
    ::= { h3cFlashPartitions 1 }


h3cFlhPartitionEntry OBJECT-TYPE
    SYNTAX H3cFlhPartitionEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "
        An entry of the h3cFlhPartitionTable.Indexed by flash
        number and partition number.
        "
    INDEX { h3cFlhIndex, h3cFlhPartIndex }
    ::= { h3cFlhPartitionTable 1 }


H3cFlhPartitionEntry ::=
SEQUENCE {
    h3cFlhPartIndex                 Integer32,
    h3cFlhPartFirstChip             Integer32,
    h3cFlhPartLastChip              Integer32,
    h3cFlhPartSpace                 Integer32,
    h3cFlhPartSpaceFree             Gauge32,
    h3cFlhPartFileNum               Integer32,
    h3cFlhPartChecksumMethod        INTEGER,
    h3cFlhPartStatus                H3cFlashPartitionStatus,
    h3cFlhPartUpgradeMode           H3cFlashPartitionUpgradeMode,
    h3cFlhPartName                  DisplayString,
    h3cFlhPartRequireErase          TruthValue,
    h3cFlhPartFileNameLen           Integer32,
    h3cFlhPartBootable              TruthValue,
    h3cFlhPartPathForGlobalOpt      TruthValue,
    h3cFlhPartHCSpace               CounterBasedGauge64,
    h3cFlhPartHCSpaceFree           CounterBasedGauge64
 }

h3cFlhPartIndex OBJECT-TYPE
    SYNTAX Integer32 (1..8)
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "
        An index which specifies a sequenced partition in the system.
        "
    ::= { h3cFlhPartitionEntry 1 }


h3cFlhPartFirstChip OBJECT-TYPE
    SYNTAX Integer32 (1..64)
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The first chip's sequence number in the
        partition, by which a chip can be indexed in
        chip table.
        "
    ::= { h3cFlhPartitionEntry 2 }


h3cFlhPartLastChip OBJECT-TYPE
    SYNTAX Integer32 (1..64)
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The last chip's sequence number in the
        partition, by which a chip can be indexed in
        chip table.
        "
    ::= { h3cFlhPartitionEntry 3 }


h3cFlhPartSpace OBJECT-TYPE
    SYNTAX Integer32
    UNITS "bytes"
    MAX-ACCESS read-only
    STATUS deprecated
    DESCRIPTION
        "
        The total space of the flash partition.
        The following should be satisfied:
        h3cFlhPartSpace = n*h3cFlhMinPartitionSize
        If the total size of the flash partition exceeds 2,147,483,647 bytes,
        h3cFlhPartHCSpace specifies the actual size.
        "
    ::= { h3cFlhPartitionEntry 4 }


h3cFlhPartSpaceFree OBJECT-TYPE
    SYNTAX Gauge32
    UNITS "bytes"
    MAX-ACCESS read-only
    STATUS deprecated
    DESCRIPTION
        "
        The flash partition's free space.
        If the free space of the flash partition exceeds 2,147,483,647 bytes,
        h3cFlhPartHCSpaceFree specifies the actual free space.
        "
    ::= { h3cFlhPartitionEntry 5 }


h3cFlhPartFileNum OBJECT-TYPE
    SYNTAX Integer32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The number of all the files in the flash partition."
    ::= { h3cFlhPartitionEntry 6 }


h3cFlhPartChecksumMethod OBJECT-TYPE
    SYNTAX INTEGER
        {
            simpleChecksum(1),
            undefined(2),
            simpleCRC(3)
        }
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The Checksum method which the file system uses."
    ::= { h3cFlhPartitionEntry 7 }


h3cFlhPartStatus OBJECT-TYPE
    SYNTAX H3cFlashPartitionStatus
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The flash partition status."
    ::= { h3cFlhPartitionEntry 8 }


h3cFlhPartUpgradeMode OBJECT-TYPE
    SYNTAX H3cFlashPartitionUpgradeMode
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The upgrade mode of the Flash partition"
    ::= { h3cFlhPartitionEntry 9 }


h3cFlhPartName OBJECT-TYPE
    SYNTAX DisplayString (SIZE (0..255))
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The name of the flash partition given by the system."
    ::= { h3cFlhPartitionEntry 10 }


h3cFlhPartRequireErase OBJECT-TYPE
    SYNTAX TruthValue
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        Shows whether a write operation is conditional on partition
        erase.
        "
    ::= { h3cFlhPartitionEntry 11 }


h3cFlhPartFileNameLen OBJECT-TYPE
    SYNTAX Integer32 (1..256)
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The maximum length of file name supported in the system."
    ::= { h3cFlhPartitionEntry 12 }

h3cFlhPartBootable OBJECT-TYPE
    SYNTAX TruthValue
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The value indicates whether the partition is a bootable partition.
         The true(1) value indicates a bootable partition.
        "
    ::= { h3cFlhPartitionEntry 13 }

h3cFlhPartPathForGlobalOpt OBJECT-TYPE
    SYNTAX TruthValue
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "The value indicates whether the partition is used in a global file
         operation.  The true(1) value indicates that in one global file
         operation files will be copied to or deleted from this partition.
         When h3cFlhPartPathForGlobalOpt in one entry is set to true(1),
         h3cFlhPartPathForGlobalOpt in other entries with the same entity
         index will be set to false(0).
        "
    ::= { h3cFlhPartitionEntry 14 }

h3cFlhPartHCSpace OBJECT-TYPE
    SYNTAX CounterBasedGauge64
    UNITS "bytes"
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The total space of the flash partition.
        This node is a 64-bit substitute for h3cFlhPartSpace.
        "
    ::= { h3cFlhPartitionEntry 15 }


h3cFlhPartHCSpaceFree OBJECT-TYPE
    SYNTAX CounterBasedGauge64
    UNITS "bytes"
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The flash partition's free space.
        This node is a 64-bit substitue for h3cFlhPartSpace.
        "
    ::= { h3cFlhPartitionEntry 16 }



h3cFlhFiles OBJECT IDENTIFIER ::= { h3cFlashPartitions 2 }


h3cFlhFileTable OBJECT-TYPE
    SYNTAX SEQUENCE OF H3cFlhFileEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "Table of file information."
    ::= { h3cFlhFiles 1 }


h3cFlhFileEntry OBJECT-TYPE
    SYNTAX H3cFlhFileEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "
        An entry representing a file.  Indexed using flash number,
        partition number, and file number.
        "
    INDEX { h3cFlhIndex, h3cFlhPartIndex, h3cFlhFileIndex }
    ::= { h3cFlhFileTable 1 }


H3cFlhFileEntry ::=
    SEQUENCE {
        h3cFlhFileIndex         Integer32,
        h3cFlhFileName          DisplayString,
        h3cFlhFileSize          Integer32,
        h3cFlhFileStatus        INTEGER,
        h3cFlhFileChecksum      OCTET STRING,
        h3cFlhFileHCSize        CounterBasedGauge64,
        h3cFlhFileType          INTEGER
        }

h3cFlhFileIndex OBJECT-TYPE
    SYNTAX Integer32 (1..2147483647)
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "Index of the table, whose range is from 1 to 2147483647"
    ::= { h3cFlhFileEntry 1 }


h3cFlhFileName OBJECT-TYPE
    SYNTAX DisplayString (SIZE (1..255))
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "A valid file/directory name supported by the file system."
    ::= { h3cFlhFileEntry 2 }


h3cFlhFileSize OBJECT-TYPE
    SYNTAX Integer32
    MAX-ACCESS read-only
    STATUS deprecated
    DESCRIPTION
        "
        The file size in bytes excluding the file
        header of file system.  The value should be greater than zero.
        If the file size exceeds 2,147,483,647 bytes, h3cFlhFileHCSize
        specifies the actual size.
        "
    ::= { h3cFlhFileEntry 3 }


h3cFlhFileStatus OBJECT-TYPE
    SYNTAX INTEGER
        {
            deleted(1),
            invalidChecksum(2),
            valid(3)
        }
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The status should be as follows:
        deleted(1):  The file is in recycle bin.
        invalidChecksum(2):  The checksum of file is invalid;
        valid(3):  A valid file.
        "
    ::= { h3cFlhFileEntry 4 }


h3cFlhFileChecksum OBJECT-TYPE
    SYNTAX OCTET STRING
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The file checksum in the header of file."
    ::= { h3cFlhFileEntry 5 }


h3cFlhFileHCSize OBJECT-TYPE
    SYNTAX CounterBasedGauge64
    UNITS "bytes"
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The file size in bytes.
        This node is a 64-bit substitue for h3cFlhFileSize.
        "
    ::= { h3cFlhFileEntry 6 }

h3cFlhFileType OBJECT-TYPE
    SYNTAX INTEGER
        {
            file(1),
            directory(2)
        }
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "This object indicates whether it is a file or directory."
    ::= { h3cFlhFileEntry 7 }


-- The operation on the flash.
h3cFlashOperate OBJECT IDENTIFIER ::= { h3cFlashManMIBObjects 2 }


h3cFlhOpTable OBJECT-TYPE
    SYNTAX SEQUENCE OF H3cFlhOpEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "Table used to operate flash."
    ::= { h3cFlashOperate 1 }


h3cFlhOpEntry OBJECT-TYPE
    SYNTAX H3cFlhOpEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "
        Note an operation cannot be stopped until it is finished.

        If notification is configured, NMS will receive a notification
        at the end of the operation.

        Entries in the table will be removed automatically in 5 minutes.
        It can also be deleted by NMS directly.
        "
    INDEX { h3cFlhOperIndex }
    ::= { h3cFlhOpTable 1 }


H3cFlhOpEntry ::=
    SEQUENCE {
        h3cFlhOperIndex                 Integer32,
        h3cFlhOperType                  INTEGER,
        h3cFlhOperProtocol              INTEGER,
        h3cFlhOperServerAddress         IpAddress,
        h3cFlhOperServerUser            DisplayString,
        h3cFlhOperPassword              DisplayString,
        h3cFlhOperSourceFile            DisplayString,
        h3cFlhOperDestinationFile       DisplayString,
        h3cFlhOperStatus                H3cFlashOperationStatus,
        h3cFlhOperEndNotification       TruthValue,
        h3cFlhOperProgress              TimeTicks,
        h3cFlhOperRowStatus             RowStatus,
        h3cFlhOperServerPort            Integer32,
        h3cFlhOperFailReason            DisplayString,
        h3cFlhOperSrvAddrType           InetAddressType,
        h3cFlhOperSrvAddrRev            InetAddress,
        h3cFlhOperSrvVPNName            DisplayString
        }

h3cFlhOperIndex OBJECT-TYPE
    SYNTAX Integer32 (1..2147483647)
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "
        Specifies the index of an entry.  It is a
        random value when creating an entry.
        "
    ::= { h3cFlhOpEntry 1 }


h3cFlhOperType OBJECT-TYPE
    SYNTAX INTEGER
        {
            net2FlashWithErase(1),
            net2FlashWithoutErase(2),
            flash2Net(3),
            delete(4),
            rename(5),
            mkdir(6),
            rmdir(7),
            copy(8)
        }
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "
        Specifies the operation to be executed.

        net2FlashWithErase  Copy a file to flash; erase flash beforehand.
        net2FlashWithoutErase   Copy a file to flash; do not erase flash
                                  beforehand.
        flash2Net       Copy a file from flash.
        delete          Delete a file that is specified by
                          h3cFlhOperSourceFile.
        rename          Change a file's name.
        mkdir           Create a directory that is specified by
                          h3cFlhOperSourceFile.
        rmdir           Delete a directory that is specified by
                          h3cFlhOperSourceFile.
        copy            Copy a file.
        "
    ::= { h3cFlhOpEntry 2 }


h3cFlhOperProtocol OBJECT-TYPE
    SYNTAX INTEGER
        {
            ftp(1),
            tftp(2),
            clusterftp(3),
            clustertftp(4),
            sftp(5)
        }
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "
        Specifies the protocol used to transfer a file.
        The default protocol is ftp.

        A directory cannot be transferred.

        when 'clusterftp' or 'clustertftp' is selected,
        the h3cFlhOperServerAddress needn't be set,
        the server address can be acquired automatically, the value of
        h3cFlhOperServerAddress is uncertain during operation.
        Both member switch and commander switch can use them if they
        support HGMP v2.
        "
    DEFVAL { ftp }
    ::= { h3cFlhOpEntry 3 }


h3cFlhOperServerAddress OBJECT-TYPE
    SYNTAX IpAddress
    MAX-ACCESS read-create
    STATUS deprecated
    DESCRIPTION
        "
        The address of remote host acting as server for operation.

        The default value is 255.255.255.255

        This object is replaced by h3cFlhOperSrvAddrRev for it only support IPv4.
        "
    DEFVAL { 'FFFFFFFF'h }
    ::= { h3cFlhOpEntry 4 }


h3cFlhOperServerUser OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "
        When using ftp to transfer files, the user name must be
        specified through this node.
        "
    ::= { h3cFlhOpEntry 5 }


h3cFlhOperPassword OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "
        Remote user password for copying via ftp protocol.  Optionally,
        This object may be ignored for protocols other than ftp. "
    ::= { h3cFlhOpEntry 6 }


h3cFlhOperSourceFile OBJECT-TYPE
    SYNTAX DisplayString (SIZE (1..255))
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "
        Specifies the source file/directory name for this operation
        that is specified by h3cFlhOperType.

        It may be located on flash or remote server.
        It may include the file path if it is applicable.
        It must be specified.
        "
    ::= { h3cFlhOpEntry 7 }


h3cFlhOperDestinationFile OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "
        Specifies the destination file name.
        It may be located on flash or remote server.
        It may include the file path if it is applicable.
        If it is not specified, the destination file name
        is the same as source file name for application.
        "
    ::= { h3cFlhOpEntry 8 }


h3cFlhOperStatus OBJECT-TYPE
    SYNTAX H3cFlashOperationStatus
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The status of operation."
    ::= { h3cFlhOpEntry 9 }


h3cFlhOperEndNotification OBJECT-TYPE
    SYNTAX TruthValue
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "
        If the value of it is specified 'true', a notification
        will be generated at the end of the operation.
        Else no notification will be generated.
        "
    DEFVAL { false }
    ::= { h3cFlhOpEntry 10 }


h3cFlhOperProgress OBJECT-TYPE
    SYNTAX TimeTicks
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The progress described as the time taken for the operation.
        "
    ::= { h3cFlhOpEntry 11 }


h3cFlhOperRowStatus OBJECT-TYPE
    SYNTAX RowStatus
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The row status of this table entry."
    ::= { h3cFlhOpEntry 12 }

h3cFlhOperServerPort OBJECT-TYPE
    SYNTAX Integer32 (0..65535)
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The port of remote host acting as server for operation.
         If the value of this object is not specified, the server
         port is the known protocol port."
    ::= { h3cFlhOpEntry 13 }

h3cFlhOperFailReason OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The failure reasons of operation."
    ::= { h3cFlhOpEntry 14 }

h3cFlhOperSrvAddrType OBJECT-TYPE
    SYNTAX InetAddressType
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The type of IP address for h3cFlhOperSrvAddrRev."
    ::= { h3cFlhOpEntry 15 }

h3cFlhOperSrvAddrRev OBJECT-TYPE
    SYNTAX InetAddress
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The address of remote host acting as server for operation."
    ::= { h3cFlhOpEntry 16 }

h3cFlhOperSrvVPNName OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The VPN instance of this operation uses."
    ::= { h3cFlhOpEntry 17 }

h3cFlashNotification OBJECT IDENTIFIER ::= { h3cFlashManMIBObjects 3 }


h3cFlhOperNotification NOTIFICATION-TYPE
    OBJECTS { h3cFlhOperStatus }
    STATUS current
    DESCRIPTION
        "
        A h3cFlhOperNotification is sent at the completion of a flash
        copy operation if h3cFlhOperEndNotification is true.
        "
    ::= { h3cFlashNotification 1 }


h3cFlashMIBConformance OBJECT IDENTIFIER ::= { h3cFlash 2 }


h3cFlhMIBCompliances OBJECT IDENTIFIER ::= { h3cFlashMIBConformance 1 }


h3cFlhMIBCompliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
        "
        The statement of compliance for those implementing this MIB.
        "
    MODULE H3C-FLASH-MAN-MIB
    MANDATORY-GROUPS { h3cFlhGroup, h3cFlhPartitionGroup,
      h3cFlhFileGroup, h3cFlhOperationGroup, h3cFlhNotificationGroup
         }
    GROUP h3cFlhChipGroup
    DESCRIPTION
        " "
    ::= { h3cFlhMIBCompliances 1 }


h3cFlashMIBGroups OBJECT IDENTIFIER ::= { h3cFlashMIBConformance 2 }


h3cFlhGroup OBJECT-GROUP
    OBJECTS { h3cFlhSupportNum, h3cFlhSize, h3cFlhPos, h3cFlhName,
        h3cFlhChipNum, h3cFlhDescr, h3cFlhInitTime, h3cFlhRemovable,
        h3cFlhPartitionBool, h3cFlhMinPartitionSize,
        h3cFlhMaxPartitions, h3cFlhPartitionNum, h3cFlhIndex, h3cFlhKbyteSize }
    STATUS current
    DESCRIPTION
        "A collection of objects on Flash level information."
    ::= { h3cFlashMIBGroups 1 }


h3cFlhChipGroup OBJECT-GROUP
    OBJECTS { h3cFlhChipID, h3cFlhChipDescr, h3cFlhChipWriteTimesLimit,
        h3cFlhChipWriteTimes, h3cFlhChipEraseTimesLimit,
        h3cFlhChipEraseTimes }
    STATUS current
    DESCRIPTION
        "A collection of objects on chip level information."
    ::= { h3cFlashMIBGroups 3 }


h3cFlhPartitionGroup OBJECT-GROUP
    OBJECTS { h3cFlhPartFirstChip, h3cFlhPartLastChip, h3cFlhPartSpace,
        h3cFlhPartSpaceFree, h3cFlhPartFileNum,
        h3cFlhPartChecksumMethod, h3cFlhPartStatus,
        h3cFlhPartUpgradeMode, h3cFlhPartName, h3cFlhPartRequireErase,
        h3cFlhPartFileNameLen, h3cFlhPartBootable,
        h3cFlhPartPathForGlobalOpt}
    STATUS current
    DESCRIPTION
        "A collection of objects providing on partition
        level information."
    ::= { h3cFlashMIBGroups 4 }


h3cFlhFileGroup OBJECT-GROUP
    OBJECTS { h3cFlhFileName, h3cFlhFileSize, h3cFlhFileStatus,
        h3cFlhFileChecksum }
    STATUS current
    DESCRIPTION
        "A collection of objects on file level information."
    ::= { h3cFlashMIBGroups 5 }


h3cFlhOperationGroup OBJECT-GROUP
    OBJECTS { h3cFlhOperType, h3cFlhOperProtocol,
        h3cFlhOperServerAddress, h3cFlhOperServerUser,
        h3cFlhOperPassword, h3cFlhOperSourceFile,
        h3cFlhOperDestinationFile, h3cFlhOperStatus,
        h3cFlhOperEndNotification, h3cFlhOperProgress,
        h3cFlhOperRowStatus, h3cFlhOperServerPort,
        h3cFlhOperFailReason }
    STATUS current
    DESCRIPTION
        "A collection of objects of flash operations."
    ::= { h3cFlashMIBGroups 6 }


h3cFlhNotificationGroup NOTIFICATION-GROUP
    NOTIFICATIONS { h3cFlhOperNotification }
    STATUS current
    DESCRIPTION
        "The collection of notifications in the module"
    ::= { h3cFlashMIBGroups 7 }

END
