-- *****************************************************************
-- 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.
-- 
-- *****************************************************************
CISCO-SM-FILE-DOWNLOAD-MIB DEFINITIONS ::= BEGIN
 
IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,
    Unsigned32                          FROM SNMPv2-SMI
    RowStatus, DisplayString		FROM SNMPv2-TC
    MODULE-COMPLIANCE, OBJECT-GROUP	FROM SNMPv2-CONF
    ciscoMgmt				FROM CISCO-SMI;
 
ciscoSmFileDownloadMIB MODULE-IDENTITY
    LAST-UPDATED "200205210000Z"
    ORGANIZATION "Cisco Systems, Inc."
    CONTACT-INFO "Cisco Systems
                  Customer Service

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

                  Tel: +1 800 553-NETS

                  E-mail: cs-wanatm@cisco.com"
    DESCRIPTION
	"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"
    DESCRIPTION
        "Importing Unsigned32 from SNMPv2-SMI."
   
    REVISION   "200102020000Z"
    DESCRIPTION
        "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
    DESCRIPTION
	"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
    DESCRIPTION
	"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
	 'createAndWait'."
    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
    DESCRIPTION
	"An integer to uniquely identify this entry."
    ::= { csDefineFileEntry 1 }

csDefineFileName OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (1..255))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
	"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
    DESCRIPTION   
	" 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 { 
			inProgress(1), 
			success(2),
			noMemory(3),
			fileOpenFailed(4),
			fileReadFailed(5),
			fileNotValid(6), 
			downloadFailed(7),
			aborted(8),
			dbUpdateFailed(9),
			miscError(10) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
	"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
    DESCRIPTION   
	" 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
    DESCRIPTION
	"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
    DESCRIPTION
	"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
    DESCRIPTION
	"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
    DESCRIPTION
	"Slot number that has an applicable service module."
    ::= { csFileStatusEntry 1 }

csFileSlotState	 OBJECT-TYPE
    SYNTAX 	INTEGER {
		inProgress(1),
		notProcessed(2),
		success(3),
		fileOpenFailed(4),
		fileWriteFailed(5),
		aborted(6),
		miscFailure(7)
		}
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
	"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

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

-- Units of Conformance

csDefineFileGroup OBJECT-GROUP
	OBJECTS {
		csDefineFileName,
	 	csDefineSlotNumber,
		csDefineFileStatus,
		csDefineFileOperation,
		csDefineFileEntryStatus	
	}
	STATUS current
	DESCRIPTION
		"File download management."
	::= { csFileMIBGroups 1 }

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

END


