-- *****************************************************************
-- FIRMWARE-MIB:  Cisco private MIB
-- ****************************************************************

CIE1000-FIRMWARE-MIB DEFINITIONS ::= BEGIN

IMPORTS
    NOTIFICATION-GROUP, MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF
    NOTIFICATION-TYPE, MODULE-IDENTITY, OBJECT-TYPE FROM SNMPv2-SMI
    TEXTUAL-CONVENTION FROM SNMPv2-TC
    cie1000SwitchMgmt FROM CISCO-IE1000-MIB
    CIE1000DisplayString FROM CIE1000-TC
    Integer32 FROM SNMPv2-SMI
    Unsigned32 FROM SNMPv2-SMI
    TruthValue FROM SNMPv2-TC
    ;

cie1000FirmwareMib MODULE-IDENTITY
    LAST-UPDATED "201412160000Z"
    ORGANIZATION
        "Cisco Systems, Inc."
    CONTACT-INFO
        "Cisco Systems
	 Customer Service

	 Postal: 170 West Tasman Drive
	 San Jose, CA  95134
	 USA

	 Tel: +1 800 553-NETS

	 E-mail: cs-snmp@cisco.com"
    DESCRIPTION
        "This is a private version of Firmware"
    REVISION    "201412160000Z"
    DESCRIPTION
        "Add switch table"
    REVISION    "201410100000Z"
    DESCRIPTION
        "Editorial changes"
    REVISION    "201407010000Z"
    DESCRIPTION
        "Initial version"
    ::= { cie1000SwitchMgmt 28 }


CIE1000FirmwareStatusImageEnum ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "This enumeration defines the type of image for status."
    SYNTAX      INTEGER { bootloader(0), stage2Bootloader(1),
                          activeFirmware(2), alternativeFirmware(3) }

CIE1000FirmwareUploadImageEnum ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "This enumeration defines the type of image to upload."
    SYNTAX      INTEGER { bootloader(0), firmware(1) }

CIE1000FirmwareUploadStatusEnum ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "This enumeration defines the status of upload operation."
    SYNTAX      INTEGER { none(0), success(1), inProgress(2),
                          errIvalidIp(3), errTftpFailed(4),
                          errBusy(5), errMemoryInsufficient(6),
                          errInvalidImage(7), errWriteFlash(8),
                          errSameImageExisted(9), errUnknownImage(10),
                          errFlashImageNotFound(11),
                          errFlashEntryNotFound(12), errCrc(13),
                          errImageSize(14), errEraseFlash(15),
                          errIncorrectImageVersion(16),
                          errDownloadUrl(17), errInvalidUrl(18),
                          errInvalidPath(19), errInvalidFilename(20) }

cie1000FirmwareMibObjects OBJECT IDENTIFIER
    ::= { cie1000FirmwareMib 1 }

cie1000FirmwareStatus OBJECT IDENTIFIER
    ::= { cie1000FirmwareMibObjects 3 }

cie1000FirmwareStatusImageTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CIE1000FirmwareStatusImageEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This is a table of status of images in flash."
    ::= { cie1000FirmwareStatus 1 }

cie1000FirmwareStatusImageEntry OBJECT-TYPE
    SYNTAX      CIE1000FirmwareStatusImageEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Each entry has a set of image status."
    INDEX       { cie1000FirmwareStatusImageNumber }
    ::= { cie1000FirmwareStatusImageTable 1 }

CIE1000FirmwareStatusImageEntry ::= SEQUENCE {
    cie1000FirmwareStatusImageNumber        Integer32,
    cie1000FirmwareStatusImageType          CIE1000FirmwareStatusImageEnum,
    cie1000FirmwareStatusImageName          CIE1000DisplayString,
    cie1000FirmwareStatusImageVersion       CIE1000DisplayString,
    cie1000FirmwareStatusImageBuiltDate     CIE1000DisplayString,
    cie1000FirmwareStatusImageCodeRevision  CIE1000DisplayString
}

cie1000FirmwareStatusImageNumber OBJECT-TYPE
    SYNTAX      Integer32 (0..2)
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The number of image. The number starts from 0."
    ::= { cie1000FirmwareStatusImageEntry 1 }

cie1000FirmwareStatusImageType OBJECT-TYPE
    SYNTAX      CIE1000FirmwareStatusImageEnum
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Image type of the status. bootloader(0) is for boot loader.
         activeFirmware(1) is for active (primary) firmware.
         alternativeFirmware(2) is for alternative (backup) firmware."
    ::= { cie1000FirmwareStatusImageEntry 2 }

cie1000FirmwareStatusImageName OBJECT-TYPE
    SYNTAX      CIE1000DisplayString (SIZE(0..127))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Image name."
    ::= { cie1000FirmwareStatusImageEntry 3 }

cie1000FirmwareStatusImageVersion OBJECT-TYPE
    SYNTAX      CIE1000DisplayString (SIZE(0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Image version."
    ::= { cie1000FirmwareStatusImageEntry 4 }

cie1000FirmwareStatusImageBuiltDate OBJECT-TYPE
    SYNTAX      CIE1000DisplayString (SIZE(0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The built date when the image is built."
    ::= { cie1000FirmwareStatusImageEntry 5 }

cie1000FirmwareStatusImageCodeRevision OBJECT-TYPE
    SYNTAX      CIE1000DisplayString (SIZE(0..127))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The code revesion which the image is built."
    ::= { cie1000FirmwareStatusImageEntry 6 }

cie1000FirmwareStatusImageUpload OBJECT IDENTIFIER
    ::= { cie1000FirmwareStatus 2 }

cie1000FirmwareStatusImageUploadStatus OBJECT-TYPE
    SYNTAX      CIE1000FirmwareUploadStatusEnum
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The status indicates the status of current upload operation. It is
         updated automatically. Modifying this flag does not take any effect.
         none(0) means no upload operation. success(1) means upload operation is
         successful. inProgress(2) means current upload operation is in
         progress. errIvalidIp(3) means upload operation is failed due to
         invalid IP address. errTftpFailed(4) means upload operation is failed
         due to failed TFTP operation. errBusy(5) means upload operation is
         failed due to other upload in processing. errMemoryInsufficient(6)
         means upload operation is failed due to memory insufficient.
         errInvalidImage(7) means upload operation is failed due to invalid
         image. errWriteFlash(8) means upload operation is failed due to failed
         writing flash. errSameImageExisted(9) means upload operation is failed
         because the upload image is the same as the one in flash.
         errUnknownImage(10) means upload operation is failed because the type
         of upload image is unknown. errFlashImageNotFound(11) means upload
         operation is failed because the location in flash to upload the image
         is not found. errFlashEntryNotFound(12) means upload operation is
         failed because the corresponding entry in flash to upload the image is
         not found. errCrc(13) means upload operation is failed due to incorrect
         CRC in the upload image. errImageSize(14) means upload operation is
         failed due to invalid image size. errEraseFlash(15) means upload
         operation is failed due to failed erasing flash.
         errIncorrectImageVersion(16) means upload operation is failed due to
         incorrect version of the upload image. errDownloadUrl(17) means upload
         operation is failed due to fail to download image from URL.
         errInvalidUrl(18) means upload operation is failed due to invalid URL.
         errInvalidFilename(19) means upload operation is failed due to invalid
         filename of the upload image. errInvalidPath(20) means upload operation
         is failed due to invalid path of the upload image. "
    ::= { cie1000FirmwareStatusImageUpload 1 }

cie1000FirmwareStatusSwitchTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CIE1000FirmwareStatusSwitchEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This is a table of status of images in switch."
    ::= { cie1000FirmwareStatus 3 }

cie1000FirmwareStatusSwitchEntry OBJECT-TYPE
    SYNTAX      CIE1000FirmwareStatusSwitchEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Each entry has a set of image status."
    INDEX       { cie1000FirmwareStatusSwitchSwitchId }
    ::= { cie1000FirmwareStatusSwitchTable 1 }

CIE1000FirmwareStatusSwitchEntry ::= SEQUENCE {
    cie1000FirmwareStatusSwitchSwitchId   Integer32,
    cie1000FirmwareStatusSwitchChipId     CIE1000DisplayString,
    cie1000FirmwareStatusSwitchBoardType  CIE1000DisplayString,
    cie1000FirmwareStatusSwitchPortCnt    Unsigned32,
    cie1000FirmwareStatusSwitchProduct    CIE1000DisplayString,
    cie1000FirmwareStatusSwitchVersion    CIE1000DisplayString,
    cie1000FirmwareStatusSwitchBuiltDate  CIE1000DisplayString
}

cie1000FirmwareStatusSwitchSwitchId OBJECT-TYPE
    SYNTAX      Integer32 (1..16)
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The ID of switch."
    ::= { cie1000FirmwareStatusSwitchEntry 1 }

cie1000FirmwareStatusSwitchChipId OBJECT-TYPE
    SYNTAX      CIE1000DisplayString (SIZE(0..31))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "ID of chip."
    ::= { cie1000FirmwareStatusSwitchEntry 2 }

cie1000FirmwareStatusSwitchBoardType OBJECT-TYPE
    SYNTAX      CIE1000DisplayString (SIZE(0..63))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Type of board."
    ::= { cie1000FirmwareStatusSwitchEntry 3 }

cie1000FirmwareStatusSwitchPortCnt OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Count of ports."
    ::= { cie1000FirmwareStatusSwitchEntry 4 }

cie1000FirmwareStatusSwitchProduct OBJECT-TYPE
    SYNTAX      CIE1000DisplayString (SIZE(0..63))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Product name."
    ::= { cie1000FirmwareStatusSwitchEntry 5 }

cie1000FirmwareStatusSwitchVersion OBJECT-TYPE
    SYNTAX      CIE1000DisplayString (SIZE(0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Image version."
    ::= { cie1000FirmwareStatusSwitchEntry 6 }

cie1000FirmwareStatusSwitchBuiltDate OBJECT-TYPE
    SYNTAX      CIE1000DisplayString (SIZE(0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The built date when the image is built."
    ::= { cie1000FirmwareStatusSwitchEntry 7 }

cie1000FirmwareControl OBJECT IDENTIFIER
    ::= { cie1000FirmwareMibObjects 4 }

cie1000FirmwareControlGlobals OBJECT IDENTIFIER
    ::= { cie1000FirmwareControl 1 }

cie1000FirmwareControlGlobalsSwapFirmware OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Swap firmware between active (primary) and alternative (backup). true
         is to swap the firmware. false is to do nothing."
    ::= { cie1000FirmwareControlGlobals 1 }

cie1000FirmwareControlImageUpload OBJECT IDENTIFIER
    ::= { cie1000FirmwareControl 2 }

cie1000FirmwareControlImageUploadDoUpload OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Action to do upload image or not. true is to do the upload operation.
         false is to do nothing. The upload operation may need longer time to
         upload the image, so the SNMP timeout time needs to be modified
         accordingly."
    ::= { cie1000FirmwareControlImageUpload 1 }

cie1000FirmwareControlImageUploadImageType OBJECT-TYPE
    SYNTAX      CIE1000FirmwareUploadImageEnum
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Type of image to upload. bootloader(0) is to upload bootloader.
         firmware(1) is to upload application firmware."
    ::= { cie1000FirmwareControlImageUpload 2 }

cie1000FirmwareControlImageUploadUrl OBJECT-TYPE
    SYNTAX      CIE1000DisplayString (SIZE(0..255))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The location of image to upload. It is a specific character string that
         constitutes a reference to a resource. Syntax:
         <protocol>://[<username>[:<password>]@]<host>[:<port>][/<path>]/<file_name>
         For example, tftp://10.10.10.10/new_image_path/new_image.dat,
         http://username:password@10.10.10.10:80/new_image_path/new_image.dat. A
         valid file name is a text string drawn from alphabet (A-Za-z), digits
         (0-9), dot (.), hyphen (-), under score(_). The maximum length is 63
         and hyphen must not be first character. The file name content that only
         contains '.' is not allowed."
    ::= { cie1000FirmwareControlImageUpload 3 }

cie1000FirmwareMibConformance OBJECT IDENTIFIER
    ::= { cie1000FirmwareMib 2 }

cie1000FirmwareMibCompliances OBJECT IDENTIFIER
    ::= { cie1000FirmwareMibConformance 1 }

cie1000FirmwareMibGroups OBJECT IDENTIFIER
    ::= { cie1000FirmwareMibConformance 2 }

cie1000FirmwareStatusImageTableInfoGroup OBJECT-GROUP
    OBJECTS     { cie1000FirmwareStatusImageNumber,
                  cie1000FirmwareStatusImageType,
                  cie1000FirmwareStatusImageName,
                  cie1000FirmwareStatusImageVersion,
                  cie1000FirmwareStatusImageBuiltDate,
                  cie1000FirmwareStatusImageCodeRevision }
    STATUS      current
    DESCRIPTION
        "A collection of objects."
    ::= { cie1000FirmwareMibGroups 1 }

cie1000FirmwareStatusImageUploadInfoGroup OBJECT-GROUP
    OBJECTS     { cie1000FirmwareStatusImageUploadStatus }
    STATUS      current
    DESCRIPTION
        "A collection of objects."
    ::= { cie1000FirmwareMibGroups 2 }

cie1000FirmwareStatusSwitchTableInfoGroup OBJECT-GROUP
    OBJECTS     { cie1000FirmwareStatusSwitchSwitchId,
                  cie1000FirmwareStatusSwitchChipId,
                  cie1000FirmwareStatusSwitchBoardType,
                  cie1000FirmwareStatusSwitchPortCnt,
                  cie1000FirmwareStatusSwitchProduct,
                  cie1000FirmwareStatusSwitchVersion,
                  cie1000FirmwareStatusSwitchBuiltDate }
    STATUS      current
    DESCRIPTION
        "A collection of objects."
    ::= { cie1000FirmwareMibGroups 3 }

cie1000FirmwareControlGlobalsInfoGroup OBJECT-GROUP
    OBJECTS     { cie1000FirmwareControlGlobalsSwapFirmware }
    STATUS      current
    DESCRIPTION
        "A collection of objects."
    ::= { cie1000FirmwareMibGroups 4 }

cie1000FirmwareControlImageUploadInfoGroup OBJECT-GROUP
    OBJECTS     { cie1000FirmwareControlImageUploadDoUpload,
                  cie1000FirmwareControlImageUploadImageType,
                  cie1000FirmwareControlImageUploadUrl }
    STATUS      current
    DESCRIPTION
        "A collection of objects."
    ::= { cie1000FirmwareMibGroups 5 }

cie1000FirmwareMibCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The compliance statement for the implementation."

    MODULE      -- this module

    MANDATORY-GROUPS { cie1000FirmwareStatusImageTableInfoGroup,
                       cie1000FirmwareStatusImageUploadInfoGroup,
                       cie1000FirmwareStatusSwitchTableInfoGroup,
                       cie1000FirmwareControlGlobalsInfoGroup,
                       cie1000FirmwareControlImageUploadInfoGroup }

    ::= { cie1000FirmwareMibCompliances 1 }

END
