-- =================================================================
-- Copyright (c) 2010-2013 Hewlett-Packard Development Company, L.P.
--
-- Description: flash management mib
-- Reference:
-- Version: V3.2
-- History:
--     V1.0 initial version 2002-12-20
--     V1.1 2004-6-15 add delete(4) to hpnicfFlhOperType
--     V1.2 2004-7-15 add some HpnicfFlashOperationStatus 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 hpnicfFlhMinPartitionSize
--         by fanxiaoxun
--     V2.0 2004-10-12 updated by gaolong
--         Fix hpnicfFlhMIBCompliance MODULE name to HPN-ICF-FLASH-MAN-MIB
--     V2.1 2004-11-22 modify the SYNTAX of hpnicfFlhSupportNum and hpnicfFlhIndex
--         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 hpnicfFlhOperType,
--         by wangpengju
--     V2.4 2005-06-06 add enum value in SYNTAX of hpnicfFlhOperProtocol
--         by jinyongfeng. Adjust file format by gaolong
--     V2.5 2005-08-18 change the value range of hpnicfFlhFileIndex
--         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 hpnicfFlhOperServerPort by jinyi
--     V2.8 2010-06-05 add hpnicfFlhOperFailReason by shuaixiaojuan
--                     add hpnicfFlhKbyteSize by jinyi
--     V2.9 2010-10-30 Deprecated hpnicfFlhOperServerAddress,
--                     added enum in HpnicfFlashOperationStatus,
--                     added hpnicfFlhOperSrvAddrType, hpnicfFlhOperSrvAddrRev and
--                     hpnicfFlhOperSrvVPNName by songhao.
--     V3.0 2011-10-13 Modify syntax of hpnicfFlhName and hpnicfFlhPartName
--                     by shuaixiaojuan.
--     V3.1 2012-06-26 Add hpnicfFlhPartBootable and hpnicfFlhPartPathForGlobalOpt
--                     by lisong.
--     V3.2 2013-05-23 Add hpnicfFlhHCSize, hpnicfFlhPartHCSpace,
--                     hpnicfFlhPartHCSpaceFree and hpnicfFlhFileHCSize to replace
--                     hpnicfFlhSize, hpnicfFlhPartSpace, hpnicfFlhPartSpaceFree
--                     and hpnicfFlhFileSize by lisong.
-- =================================================================
HPN-ICF-FLASH-MAN-MIB DEFINITIONS ::= BEGIN

IMPORTS
    PhysicalIndex
        FROM ENTITY-MIB
    hpnicfCommon
        FROM HPN-ICF-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;


hpnicfFlash MODULE-IDENTITY
    LAST-UPDATED "201305230000Z"
    ORGANIZATION
        ""
    CONTACT-INFO
        ""
    DESCRIPTION
        "This MIB contains objects to manage flash cards and flash
        card operations.
        There are no constraints on this MIB."
    REVISION "201305230000Z"
    DESCRIPTION
        "revision V3.2"
    ::= { hpnicfCommon 5 }


--
-- Textual conventions
--

HpnicfFlashOperationStatus ::= 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 file 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 name; file 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 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 file name is specified.
        pDeleteDeviceBusy : The device is in use and locked
                            by another process.
        opDeleteParaError : The parameters are invalid.
        opDeleteInvalidPath : The file path is invalid.
        opDeleteFileNotExistInSlave : Failed to delete file, because the file
                                      is not exist in the slave.
        opDeleteFileFailedInSlave : Operation is fail when delete file in the slave.
        opSlaveFull : Operation is fail for the slave don't have enough space.
        opCopyToSlaveFailure : Operation is fail when copy 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)
        }

HpnicfFlashPartitionUpgradeMode ::= 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)
        }

HpnicfFlashPartitionStatus ::= 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
--
hpnicfFlashManMIBObjects OBJECT IDENTIFIER ::= { hpnicfFlash 1 }


-- The flash device information.
hpnicfFlashDevice OBJECT IDENTIFIER ::= { hpnicfFlashManMIBObjects 1 }


hpnicfFlhSupportNum 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.
        "
    ::= { hpnicfFlashDevice 1 }


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


hpnicfFlashEntry OBJECT-TYPE
    SYNTAX HpnicfFlashEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "The entry of hpnicfFlashTable."
    INDEX { hpnicfFlhIndex }
    ::= { hpnicfFlashTable 1 }


HpnicfFlashEntry ::=
    SEQUENCE {
        hpnicfFlhIndex                 Integer32,
        hpnicfFlhSize                  Integer32,
        hpnicfFlhPos                   PhysicalIndex,
        hpnicfFlhName                  DisplayString,
        hpnicfFlhChipNum               Integer32,
        hpnicfFlhDescr                 DisplayString,
        hpnicfFlhInitTime              TimeStamp,
        hpnicfFlhRemovable             TruthValue,
        hpnicfFlhPartitionBool         TruthValue,
        hpnicfFlhMinPartitionSize      Integer32,
        hpnicfFlhMaxPartitions         Integer32,
        hpnicfFlhPartitionNum          Integer32,
        hpnicfFlhKbyteSize             Integer32,
        hpnicfFlhHCSize                CounterBasedGauge64
     }

hpnicfFlhIndex OBJECT-TYPE
    SYNTAX Integer32 (1..2147483647)
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The index of hpnicfFlashTable.  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 hpnicfFlhSupportNum.

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


hpnicfFlhSize OBJECT-TYPE
    SYNTAX Integer32
    UNITS "bytes"
    MAX-ACCESS read-only
    STATUS deprecated
    DESCRIPTION
        "
        Specifies the total size of the flash indexed by hpnicfFlhIndex.
        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,
        hpnicfFlhHCSize specifies the actual size.
        "
    ::= { hpnicfFlashEntry 2 }


hpnicfFlhPos 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.
        "
    ::= { hpnicfFlashEntry 3 }


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


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


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


hpnicfFlhInitTime 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.
        "
    ::= { hpnicfFlashEntry 8 }


hpnicfFlhRemovable 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.
        "
    ::= { hpnicfFlashEntry 9 }


hpnicfFlhPartitionBool 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.
        "
    ::= { hpnicfFlashEntry 11 }


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


hpnicfFlhMaxPartitions 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 hpnicfFlhPartitionBool is false,
        the object value is 1.
        "
    ::= { hpnicfFlashEntry 13 }


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

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

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

hpnicfFlashChips OBJECT IDENTIFIER ::= { hpnicfFlashDevice 3 }


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


hpnicfFlhChipEntry OBJECT-TYPE
    SYNTAX HpnicfFlhChipEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "The entry of hpnicfFlhChipTable"
    INDEX { hpnicfFlhIndex, hpnicfFlhChipSerialNo }
    ::= { hpnicfFlhChipTable 1 }


HpnicfFlhChipEntry ::=
    SEQUENCE {
        hpnicfFlhChipSerialNo              Integer32,
        hpnicfFlhChipID                    DisplayString,
        hpnicfFlhChipDescr                 DisplayString,
        hpnicfFlhChipWriteTimesLimit       Integer32,
        hpnicfFlhChipWriteTimes            Counter32,
        hpnicfFlhChipEraseTimesLimit       Integer32,
        hpnicfFlhChipEraseTimes            Counter32
     }

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


hpnicfFlhChipID 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.
        "
    ::= { hpnicfFlhChipEntry 2 }


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


hpnicfFlhChipWriteTimesLimit 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.
        "
    ::= { hpnicfFlhChipEntry 4 }


hpnicfFlhChipWriteTimes 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.
        "
    ::= { hpnicfFlhChipEntry 5 }


hpnicfFlhChipEraseTimesLimit 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.
        "
    ::= { hpnicfFlhChipEntry 6 }


hpnicfFlhChipEraseTimes 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.
        "
    ::= { hpnicfFlhChipEntry 7 }


hpnicfFlashPartitions OBJECT IDENTIFIER ::= { hpnicfFlashDevice 4 }


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


hpnicfFlhPartitionEntry OBJECT-TYPE
    SYNTAX HpnicfFlhPartitionEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "
        An entry of the hpnicfFlhPartitionTable.Indexed by flash
        number and partition number.
        "
    INDEX { hpnicfFlhIndex, hpnicfFlhPartIndex }
    ::= { hpnicfFlhPartitionTable 1 }


HpnicfFlhPartitionEntry ::=
SEQUENCE {
    hpnicfFlhPartIndex                 Integer32,
    hpnicfFlhPartFirstChip             Integer32,
    hpnicfFlhPartLastChip              Integer32,
    hpnicfFlhPartSpace                 Integer32,
    hpnicfFlhPartSpaceFree             Gauge32,
    hpnicfFlhPartFileNum               Integer32,
    hpnicfFlhPartChecksumMethod        INTEGER,
    hpnicfFlhPartStatus                HpnicfFlashPartitionStatus,
    hpnicfFlhPartUpgradeMode           HpnicfFlashPartitionUpgradeMode,
    hpnicfFlhPartName                  DisplayString,
    hpnicfFlhPartRequireErase          TruthValue,
    hpnicfFlhPartFileNameLen           Integer32,
    hpnicfFlhPartBootable              TruthValue,
    hpnicfFlhPartPathForGlobalOpt      TruthValue,
    hpnicfFlhPartHCSpace               CounterBasedGauge64,
    hpnicfFlhPartHCSpaceFree           CounterBasedGauge64
 }

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


hpnicfFlhPartFirstChip 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.
        "
    ::= { hpnicfFlhPartitionEntry 2 }


hpnicfFlhPartLastChip 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.
        "
    ::= { hpnicfFlhPartitionEntry 3 }


hpnicfFlhPartSpace 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:
        hpnicfFlhPartSpace = n*hpnicfFlhMinPartitionSize
        If the total size of the flash partition exceeds 2,147,483,647 bytes,
        hpnicfFlhPartHCSpace specifies the actual size.
        "
    ::= { hpnicfFlhPartitionEntry 4 }


hpnicfFlhPartSpaceFree 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,
        hpnicfFlhPartHCSpaceFree specifies the actual free space.
        "
    ::= { hpnicfFlhPartitionEntry 5 }


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


hpnicfFlhPartChecksumMethod 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."
    ::= { hpnicfFlhPartitionEntry 7 }


hpnicfFlhPartStatus OBJECT-TYPE
    SYNTAX HpnicfFlashPartitionStatus
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The flash partition status."
    ::= { hpnicfFlhPartitionEntry 8 }


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


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


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


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

hpnicfFlhPartBootable 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.
        "
    ::= { hpnicfFlhPartitionEntry 13 }

hpnicfFlhPartPathForGlobalOpt 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 hpnicfFlhPartPathForGlobalOpt in one entry is set to true(1),
         hpnicfFlhPartPathForGlobalOpt in other entries with the same entity
         index will be set to false(0).
        "
    ::= { hpnicfFlhPartitionEntry 14 }

hpnicfFlhPartHCSpace 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 substitue for hpnicfFlhPartSpace.
        "
    ::= { hpnicfFlhPartitionEntry 15 }


hpnicfFlhPartHCSpaceFree 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 hpnicfFlhPartSpace.
        "
    ::= { hpnicfFlhPartitionEntry 16 }



hpnicfFlhFiles OBJECT IDENTIFIER ::= { hpnicfFlashPartitions 2 }


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


hpnicfFlhFileEntry OBJECT-TYPE
    SYNTAX HpnicfFlhFileEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "
        An entry representing a file. Indexed using flash number,
        partition number, and file number.
        "
    INDEX { hpnicfFlhIndex, hpnicfFlhPartIndex, hpnicfFlhFileIndex }
    ::= { hpnicfFlhFileTable 1 }


HpnicfFlhFileEntry ::=
    SEQUENCE {
        hpnicfFlhFileIndex         Integer32,
        hpnicfFlhFileName          DisplayString,
        hpnicfFlhFileSize          Integer32,
        hpnicfFlhFileStatus        INTEGER,
        hpnicfFlhFileChecksum      OCTET STRING,
        hpnicfFlhFileHCSize        CounterBasedGauge64
        }

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


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


hpnicfFlhFileSize 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, hpnicfFlhFileHCSize
        specifies the actual size.
        "
    ::= { hpnicfFlhFileEntry 3 }


hpnicfFlhFileStatus 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.
        "
    ::= { hpnicfFlhFileEntry 4 }


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


hpnicfFlhFileHCSize 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 hpnicfFlhFileSize.
        "
    ::= { hpnicfFlhFileEntry 6 }


-- The operation on the flash.
hpnicfFlashOperate OBJECT IDENTIFIER ::= { hpnicfFlashManMIBObjects 2 }


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


hpnicfFlhOpEntry OBJECT-TYPE
    SYNTAX HpnicfFlhOpEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "
        Note an operation can not 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 { hpnicfFlhOperIndex }
    ::= { hpnicfFlhOpTable 1 }


HpnicfFlhOpEntry ::=
    SEQUENCE {
        hpnicfFlhOperIndex                 Integer32,
        hpnicfFlhOperType                  INTEGER,
        hpnicfFlhOperProtocol              INTEGER,
        hpnicfFlhOperServerAddress         IpAddress,
        hpnicfFlhOperServerUser            DisplayString,
        hpnicfFlhOperPassword              DisplayString,
        hpnicfFlhOperSourceFile            DisplayString,
        hpnicfFlhOperDestinationFile       DisplayString,
        hpnicfFlhOperStatus                HpnicfFlashOperationStatus,
        hpnicfFlhOperEndNotification       TruthValue,
        hpnicfFlhOperProgress              TimeTicks,
        hpnicfFlhOperRowStatus             RowStatus,
        hpnicfFlhOperServerPort            Integer32,
        hpnicfFlhOperFailReason            DisplayString,
        hpnicfFlhOperSrvAddrType           InetAddressType,
        hpnicfFlhOperSrvAddrRev            InetAddress,
        hpnicfFlhOperSrvVPNName            DisplayString
        }

hpnicfFlhOperIndex 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.
        "
    ::= { hpnicfFlhOpEntry 1 }


hpnicfFlhOperType OBJECT-TYPE
    SYNTAX INTEGER
        {
            net2FlashWithErase(1),
            net2FlashWithoutErase(2),
            flash2Net(3),
            delete(4),
            rename(5)
        }
    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 from flash, the file name is
        specified by hpnicfFlhOperSourceFile;

        rename          Change a file's name.
        "
    ::= { hpnicfFlhOpEntry 2 }


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

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


hpnicfFlhOperServerAddress 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 hpnicfFlhOperSrvAddrRev for it only support IPv4.
        "
    DEFVAL { 'FFFFFFFF'h }
    ::= { hpnicfFlhOpEntry 4 }


hpnicfFlhOperServerUser 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.
        "
    ::= { hpnicfFlhOpEntry 5 }


hpnicfFlhOperPassword 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. "
    ::= { hpnicfFlhOpEntry 6 }


hpnicfFlhOperSourceFile OBJECT-TYPE
    SYNTAX DisplayString (SIZE (1..255))
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "
        Specifies the source file name to be transferred.
        It may be located on flash or remote server.
        It may include the file path if it is applicable.
        It must be specified.
        "
    ::= { hpnicfFlhOpEntry 7 }


hpnicfFlhOperDestinationFile 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.
        "
    ::= { hpnicfFlhOpEntry 8 }


hpnicfFlhOperStatus OBJECT-TYPE
    SYNTAX HpnicfFlashOperationStatus
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The status of operation."
    ::= { hpnicfFlhOpEntry 9 }


hpnicfFlhOperEndNotification 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 }
    ::= { hpnicfFlhOpEntry 10 }


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


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

hpnicfFlhOperServerPort 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."
    ::= { hpnicfFlhOpEntry 13 }

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

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

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

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

hpnicfFlashNotification OBJECT IDENTIFIER ::= { hpnicfFlashManMIBObjects 3 }


hpnicfFlhOperNotification NOTIFICATION-TYPE
    OBJECTS { hpnicfFlhOperStatus }
    STATUS current
    DESCRIPTION
        "
        A hpnicfFlhOperNotification is sent at the completion of a flash
        copy operation if hpnicfFlhOperEndNotification is true.
        "
    ::= { hpnicfFlashNotification 1 }


hpnicfFlashMIBConformance OBJECT IDENTIFIER ::= { hpnicfFlash 2 }


hpnicfFlhMIBCompliances OBJECT IDENTIFIER ::= { hpnicfFlashMIBConformance 1 }


hpnicfFlhMIBCompliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
        "
        The statement of compliance for those implementing this MIB.
        "
    MODULE HPN-ICF-FLASH-MAN-MIB
    MANDATORY-GROUPS { hpnicfFlhGroup, hpnicfFlhPartitionGroup,
      hpnicfFlhFileGroup, hpnicfFlhOperationGroup, hpnicfFlhNotificationGroup
         }
    GROUP hpnicfFlhChipGroup
    DESCRIPTION
        " "
    ::= { hpnicfFlhMIBCompliances 1 }


hpnicfFlashMIBGroups OBJECT IDENTIFIER ::= { hpnicfFlashMIBConformance 2 }


hpnicfFlhGroup OBJECT-GROUP
    OBJECTS { hpnicfFlhSupportNum, hpnicfFlhSize, hpnicfFlhPos, hpnicfFlhName,
        hpnicfFlhChipNum, hpnicfFlhDescr, hpnicfFlhInitTime, hpnicfFlhRemovable,
        hpnicfFlhPartitionBool, hpnicfFlhMinPartitionSize,
        hpnicfFlhMaxPartitions, hpnicfFlhPartitionNum, hpnicfFlhIndex, hpnicfFlhKbyteSize }
    STATUS current
    DESCRIPTION
        "A collection of objects on Flash level information."
    ::= { hpnicfFlashMIBGroups 1 }


hpnicfFlhChipGroup OBJECT-GROUP
    OBJECTS { hpnicfFlhChipID, hpnicfFlhChipDescr, hpnicfFlhChipWriteTimesLimit,
        hpnicfFlhChipWriteTimes, hpnicfFlhChipEraseTimesLimit,
        hpnicfFlhChipEraseTimes }
    STATUS current
    DESCRIPTION
        "A collection of objects on chip level information."
    ::= { hpnicfFlashMIBGroups 3 }


hpnicfFlhPartitionGroup OBJECT-GROUP
    OBJECTS { hpnicfFlhPartFirstChip, hpnicfFlhPartLastChip, hpnicfFlhPartSpace,
        hpnicfFlhPartSpaceFree, hpnicfFlhPartFileNum,
        hpnicfFlhPartChecksumMethod, hpnicfFlhPartStatus,
        hpnicfFlhPartUpgradeMode, hpnicfFlhPartName, hpnicfFlhPartRequireErase,
        hpnicfFlhPartFileNameLen, hpnicfFlhPartBootable,
        hpnicfFlhPartPathForGlobalOpt}
    STATUS current
    DESCRIPTION
        "A collection of objects providing on partition
        level information."
    ::= { hpnicfFlashMIBGroups 4 }


hpnicfFlhFileGroup OBJECT-GROUP
    OBJECTS { hpnicfFlhFileName, hpnicfFlhFileSize, hpnicfFlhFileStatus,
        hpnicfFlhFileChecksum }
    STATUS current
    DESCRIPTION
        "A collection of objects on file level information."
    ::= { hpnicfFlashMIBGroups 5 }


hpnicfFlhOperationGroup OBJECT-GROUP
    OBJECTS { hpnicfFlhOperType, hpnicfFlhOperProtocol,
        hpnicfFlhOperServerAddress, hpnicfFlhOperServerUser,
        hpnicfFlhOperPassword, hpnicfFlhOperSourceFile,
        hpnicfFlhOperDestinationFile, hpnicfFlhOperStatus,
        hpnicfFlhOperEndNotification, hpnicfFlhOperProgress,
        hpnicfFlhOperRowStatus, hpnicfFlhOperServerPort,
        hpnicfFlhOperFailReason }
    STATUS current
    DESCRIPTION
        "A collection of objects of flash operations."
    ::= { hpnicfFlashMIBGroups 6 }


hpnicfFlhNotificationGroup NOTIFICATION-GROUP
    NOTIFICATIONS { hpnicfFlhOperNotification }
    STATUS current
    DESCRIPTION
        "The collection of notifications in the module"
    ::= { hpnicfFlashMIBGroups 7 }

END
