-- *****************************************************************
-- CISCO-SM-FILE-DOWNLOAD-MIB.my: File Download to Service Module MIB
-- April 2000, Jyotsna Gummaraju
-- May   2002, Subra Hegde
-- Copyright (c) 2000,2002 by cisco Systems, Inc.
-- All rights reserved.
-- *****************************************************************
    Unsigned32                          FROM SNMPv2-SMI
    RowStatus, DisplayString            FROM SNMPv2-TC
    ciscoMgmt                           FROM CISCO-SMI;
    LAST-UPDATED "200205210000Z"
    ORGANIZATION "Cisco Systems, Inc."
    CONTACT-INFO "Cisco Systems
                  Customer Service

                  Postal: 170 W Tasman Drive
                  San Jose, CA  95134

                  Tel: +1 800 553-NETS

                  E-mail: cs-wanatm@cisco.com"
        "The MIB module for downloading files to the Service 
         Modules specifically designed for an architecture
         containing a controller card and a group of sub-
         ordinate cards or service modules (as in a Switch).

         These files could contain information for performing
         any specific operation on the modules. For example, 
         they could contain information on statistics retrieval 
         like, the statistics type, bucket interval etc. The 
         format of these files is implementation dependent." 

    REVISION "200205210000Z"
        "Importing Unsigned32 from SNMPv2-SMI."
    REVISION   "200102020000Z"
        "Initial version of the MIB Module."
    ::= { ciscoMgmt 199 }

csFileMIBObjects  OBJECT IDENTIFIER ::= { ciscoSmFileDownloadMIB 1 }

csDefineFile    OBJECT IDENTIFIER ::= { csFileMIBObjects 1 }
csFileStatus    OBJECT IDENTIFIER ::= { csFileMIBObjects 2 }

--    Terminologies used:
--       Switchover :
--           In a redundant configuration, a standby card becomes
--           active.
--       Service Module(SM) :
--           Service Module(SM) is defined as any Module which
--           provides services such as ATM, Frame Relay or Voice
--           in a Wide Area Network(WAN) switch.

-- File Parameter Table

csDefineFileTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CsDefineFileEntry
    MAX-ACCESS  not-accessible
    STATUS      current
        "A table of files that have been downloaded on some non-
        volatile storage (For example: Hard Disk, Flash Disk etc)
        on the controller card by mechanisms such as ftp, tftp etc 
        and available for transfer to applicable service modules."
    ::= { csDefineFile 1 }

csDefineFileEntry OBJECT-TYPE
    SYNTAX      CsDefineFileEntry
    MAX-ACCESS  not-accessible
    STATUS      current
        "Information for processing the file to be downloaded
         to service modules.

         To process a file an application creates an entry in
         this table. This entry contains information on the 
         file name (csDefineFileName), file operation i.e whether 
         to download contents from the file specified or from 
         contents saved in the database (csDefineFileOperation), 
         slot number of the service module to download to 
         (csDefineSlotNumber), etc. 
         When the entry status (csDefineFileEntryStatus) in this 
         table is 'active', the application uses csDefineFileOperation 
         to perform the necessary operation on the file. 

         csDefineFileStatus contains the overall status of file 
         validation and download. Corresponding entries are created 
         in csFileStatusTable that contains the slot-specific status 
         of the download to service modules.
         Entries may not be modified or deleted if csDefineFileStatus 
         has a value of 'inProgress'. Further, the entries may not be 
         deleted if csDefineFileEntryStatus is 'active' i.e if the 
         current entry status is 'active', it has to be set to 
         'notInService' before deletion. 
         Deleting an entry in csDefineFileTable deletes any 
         corresponding entries in csFileStatusTable.

         Rows may not be created without explicitly setting
         csDefineFileEntryStatus to either 'createAndGo' or
    INDEX       { csDefineFileIndex }
    ::= { csDefineFileTable 1 }

CsDefineFileEntry ::= SEQUENCE {
    csDefineFileIndex           Unsigned32,
    csDefineFileName            DisplayString,
    csDefineSlotNumber          Unsigned32,
    csDefineFileStatus          INTEGER,
    csDefineFileOperation       INTEGER,
    csDefineFileEntryStatus     RowStatus

csDefineFileIndex OBJECT-TYPE
    SYNTAX      Unsigned32 (1..4294967295)
    MAX-ACCESS  not-accessible
    STATUS      current
        "An integer to uniquely identify this entry."
    ::= { csDefineFileEntry 1 }

csDefineFileName OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (1..255))
    MAX-ACCESS  read-create
    STATUS      current
        "The name of the file that has been downloaded on some 
         non-volatile storage on the controller card.

        Explicit device or path names could be prepended 
        to the file name."
    ::= { csDefineFileEntry 2 }

csDefineSlotNumber OBJECT-TYPE
    SYNTAX      Unsigned32 (1..32 | 100)
    MAX-ACCESS  read-create
    STATUS      current
        " An integer that specifies the slot number of  the
          service module to which the file needs to be downloaded.
          A value of 100 would indicate that file needs to be 
          downloaded to all applicable service modules."
    ::= { csDefineFileEntry 3 }

csDefineFileStatus OBJECT-TYPE
    SYNTAX      INTEGER { 
                        miscError(10) }
    MAX-ACCESS  read-only
    STATUS      current
        "The overall status of the file validation and service module
         download as surmised by the controller card. A more detailed 
         status on service module downloads could be obtained in 
         csFileStatusTable which stores download information specific 
         to a particular slot. 

        inProgress - processing file validation/download request
        success - file has been validated and downloaded to all 
                  applicable service modules (as per value in 
                  csDefineSlotNumber) successfully.              
        noMemory - failure due to insufficient dynamic memory
        fileOpenFailed - failure to open the file downloaded to some 
                         non-volatile storage on the controller card. 
        fileReadFailed - failure to read the file downloaded to some 
                         non-volatile storage on the controller card.
        fileNotValid - file parsing/validation failed
        downloadFailed - download to service module failed
        aborted - download aborted due to switchover in a
                  redundant controller card configuration
        dbUpdateFailed - error in accessing/updating the database
        miscError - miscellaneous error due to lack of internal
                    resource (eg. error obtaining semaphore etc)
        This object is valid only after the entry status becomes 'active'.

        This object is especially useful when csDefineSlotNumber has a
        value of 100 signifying a download to all applicable service 
        modules. This object gives overall status of the download request 
        and hence, has a value of 'downloadFailed' even if one SM fails 
        the download. csFileStatusTable could be consulted for the purpose
        of obtaining a list of SMs that failed the download and their 
        corresponding reasons."
    DEFVAL      { inProgress }
    ::= { csDefineFileEntry 4 }

csDefineFileOperation   OBJECT-TYPE
    SYNTAX      INTEGER { sendToSMsOnly(1), updateAndSend(2) }
    MAX-ACCESS  read-create
    STATUS      current
        " An integer that defines the file operation: 
        sendToSMsOnly - send file contents saved in database to all 
                        applicable service modules.
        updateAndSend - validate file, save contents into database
                        and send to all applicable service modules.

        The database here refers to either a disk or a RAM database that
        is saved during controller card switchovers. The file contents 
        are saved prior to service module download. In case of failure 
        to download to SMs,the operation could be re-initiated with 
        csDefineFileOperation having value sendToSMsOnly. This would 
        avoid unnecessary download of the same file to controller card 
        storage and file parsing/validation. "
    ::= { csDefineFileEntry 5 } 
csDefineFileEntryStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
        "The control that allows creation, modification, and 
        deletion of entries. For detailed rules see the DESCRIPTION
        for csDefineFileEntry."
    ::= { csDefineFileEntry 6 }

-- File status table per service module basis.

csFileStatusTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CsFileStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
        "A table containing status of the downloaded file for each 
         applicable service module."
    ::= { csFileStatus 1 }

csFileStatusEntry OBJECT-TYPE
    SYNTAX      CsFileStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
        "Status of file download to a particular service module.
         Entries start to exist in this table only when csDefineFileStatus
         has been set to 'inProgress'. The number of entries per 
         csFileStatusTable is dependant on csDefineSlotNumber specified. 
         If a valid slot number (between values 1 and 32) is specified then 
         this table would contain only one entry for the slot number 
         specified. If csDefineSlotNumber has value 100, signifying a 
         download to all SMs, an entry exists in csFileStatusTable for each 
         applicable service module on the shelf. Hence, an entry in 
         csDefineFileTable could result in multiple entries in 
         csFileStatusTable. Related entries can be associated due to the 
         common index, csDefineFileIndex, in the tables."
    INDEX       { csDefineFileIndex, csFileStatusSlotNumber }
    ::= { csFileStatusTable 1 }

CsFileStatusEntry ::= SEQUENCE {
        csFileStatusSlotNumber          Unsigned32,
        csFileSlotState                 INTEGER

csFileStatusSlotNumber OBJECT-TYPE
    SYNTAX      Unsigned32 (1..32)
    MAX-ACCESS  not-accessible
    STATUS      current
        "Slot number that has an applicable service module."
    ::= { csFileStatusEntry 1 }

csFileSlotState  OBJECT-TYPE
    MAX-ACCESS  read-only
    STATUS      current
        "The status of the file download to each applicable service
         module. This status is specific to each slot.

        inProgress      currently downloading file to service module
        notProcessed    not started downloading to service module
        success         successfully downloaded file to service module
        fileOpenFailed  failed to open file on service module
        fileWriteFailed failed to write file on service module
        aborted         download was terminated (eg. due to switchover
                        in a redundant configuration)
        miscFailure     miscellaneous error during file download"
    DEFVAL      { notProcessed } 
    ::= { csFileStatusEntry 2 }

-- Notification Information

csFileMIBNotificationPrefix OBJECT IDENTIFIER ::= 
        { ciscoSmFileDownloadMIB 2 }    

csFileMIBNotifications OBJECT IDENTIFIER ::=
        { csFileMIBNotificationPrefix 0 }

-- Conformance Information

csFileMIBConformance OBJECT IDENTIFIER ::= 
        { ciscoSmFileDownloadMIB 3 }

csFileMIBCompliances OBJECT IDENTIFIER ::=
        { csFileMIBConformance 1 }
csFileMIBGroups      OBJECT IDENTIFIER ::=
        { csFileMIBConformance 2 }

-- Compliance

        STATUS current
                "The compliance statement for entities that implement 
                 file downloads."
        MODULE  -- this module
                MANDATORY-GROUPS { 
        ::= { csFileMIBCompliances 1 }

-- Units of Conformance

csDefineFileGroup OBJECT-GROUP
        OBJECTS {
        STATUS current
                "File download management."
        ::= { csFileMIBGroups 1 }

csFileStatusGroup OBJECT-GROUP
        OBJECTS {
        STATUS current
                "File status management for applicable
                 service modules."
        ::= { csFileMIBGroups 2 }