-- ***************************************************************** -- CISCO-CONFIG-COPY-MIB.my: MIB for copying a Cisco router's -- config -- -- December 1997, Ramanathan R. Kavasseri -- -- Copyright (c) 2005, 1998, 2008 by cisco Systems Inc. -- All rights reserved. -- ***************************************************************** -- CISCO-CONFIG-COPY-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, IpAddress, Unsigned32 FROM SNMPv2-SMI TEXTUAL-CONVENTION, DisplayString, TimeStamp, RowStatus, TruthValue FROM SNMPv2-TC MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP FROM SNMPv2-CONF SnmpAdminString FROM SNMP-FRAMEWORK-MIB ciscoMgmt FROM CISCO-SMI InetAddressType, InetAddress FROM INET-ADDRESS-MIB FcNameIdOrZero FROM CISCO-ST-TC; ciscoConfigCopyMIB MODULE-IDENTITY LAST-UPDATED "200504060000Z" 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-snmp@cisco.com" DESCRIPTION "This MIB facilitates writing of configuration files of an SNMP Agent running Cisco's IOS in the following ways: to and from the net, copying running configurations to startup configurations and vice-versa, and copying a configuration (running or startup) to and from the local IOS file system." REVISION "200504060000Z" DESCRIPTION "Added new enumeration value fabricStartupConfig to ConfigFileType textual convention. Added new table ccCopyErrorTable. Added new enumeration values: systemNotReady and requestAborted to ConfigCopyFailCause." REVISION "200403170000Z" DESCRIPTION "The object ccCopyServerAddress is deprecated since it supports only IPv4 address. Two new objects are defined ccCopyServerAddressType and ccCopyServerAddressRev1." REVISION "200212170000Z" DESCRIPTION "Added a new enumeration value someConfigApplyFailed(7) to ConfigCopyFailCause TC." REVISION "200205300000Z" DESCRIPTION "Added sftp protocol as an option for ConfigCopyProtocol." REVISION "200205070000Z" DESCRIPTION "Added scp protocol as an option for ConfigCopyProtocol. Added unsupportedProtocol(6) as an option for the ConfigCopyFailCause TC." REVISION "200203280000Z" DESCRIPTION "Imported Unsigned32 from SNMPv2-SMI instead of CISCO-TC" ::= { ciscoMgmt 96 } -- A config-copy operation is a request to copy a configuration -- file of an SNMP Agent running Cisco's IOS in the following ways: -- 1. to or from the net (via a protocol like tftp, ftp, rcp, -- scp or sftp). -- 2. copying running configurations to startup -- configurations and vice-versa. -- 3. copy a running or startup config to a file -- to the local IOS file system and vice versa." -- -- The term "agent-config" will be used in this MIB to refer to -- either the running config or the startup config. It will be -- used as a short way of saying "either running config or the -- startup config". ConfigCopyProtocol ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "The protocol file transfer protocol that should be used to copy the configuration file over the network. If the config file transfer is to occur locally on the SNMP agent, the method of transfer is left up to the implementation, and is not restricted to the protocols below. tftp: Transfer File Transfer Protocol ftp: File Transfer protocol rcp: Remote Copy Protocol scp: Secure Copy Protocol sftp: Secure File Transfer Protocol" SYNTAX INTEGER { tftp(1), ftp(2), rcp(3), scp(4), sftp(5) } ConfigCopyState ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "The state of a TFTP config-copy operation. The description of each state is given below: waiting: only one config-copy request can run at any time. A newly activated config-copy request is placed in this state if another request has already been activated. running: this state signifies that the config-copy request is running. successful: the state when a config-copy request is successfully completed. failed: the config-copy request was unsuccessful." SYNTAX INTEGER { waiting(1), running(2), successful(3), failed(4) } ConfigCopyFailCause ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "The reason a config-copy request failed. unknown: very descriptive. badFileName: check your file name/path/permissions. timeout: the network may be overloaded, or the remote file server may not be responding. noMem: the Agent wasn't able to allocate memory for the config-copy operation. noConfig: the agent-config selected as the source was non-existent. unsupportedProtocol: the protocol is not supported by the agent. someConfigApplyFailed: applying of some of the configuration commands failed. systemNotReady: system is not ready to copy. requestAborted: config copy operation aborted." SYNTAX INTEGER { unknown(1), badFileName(2), timeout(3), noMem(4), noConfig(5), unsupportedProtocol(6), someConfigApplyFailed(7), systemNotReady(8), requestAborted(9) } ConfigFileType ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "The various types of files on which a config-copy operation can be performed. networkFile: file on another network device, e.g. a file-server on the network. iosFile: a file on the local agent, other than startup or running config. startupConfig: a startup config file. runningConfig: a running config file. terminal: a terminal (e.g. the console window) on which the config is to be displayed. fabricStartupConfig: a file type which can be used for a destination file; when a running-config is to copied to a destination of this type, the file is copied to the startup config on all devices in the fabric. Such a fabric could, for example, be a Fibre Channel fabric, or even a MAC-based fabric." SYNTAX INTEGER { networkFile(1), iosFile(2), startupConfig(3), runningConfig(4), terminal(5), fabricStartupConfig(6) } ciscoConfigCopyMIBObjects OBJECT IDENTIFIER ::= { ciscoConfigCopyMIB 1 } ccCopy OBJECT IDENTIFIER ::= { ciscoConfigCopyMIBObjects 1 } ccCopyTable OBJECT-TYPE SYNTAX SEQUENCE OF CcCopyEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of config-copy requests." ::= { ccCopy 1 } ccCopyEntry OBJECT-TYPE SYNTAX CcCopyEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A config-copy request. A management station wishing to create an entry should first generate a random serial number to be used as the index to this sparse table. The station should then create the associated instance of the row status and row index objects. It must also, either in the same or in successive PDUs, create an instance of ccCopySourceFileType and ccCopyDestFileType. At least one of the file types defined in ConfigFileType TC must be an agent-config file type (i.e. 'startupConfig' or 'runningConfig'). If one of the file types is a 'networkFile', a valid ccCopyFileName and ccCopyServerAddressType and ccCopyServerAddressRev1 or just ccCopyServerAddress must be created as well. If ccCopyServerAddress is created then ccCopyServerAddressRev1 will store the same IP address and ccCopyServerAddressType will take the value 'ipv4'. For a file type of 'iosFile', only a valid ccCopyFileName needs to be created as an extra parameter. It should also modify the default values for the other configuration objects if the defaults are not appropriate. Once the appropriate instance of all the configuration objects have been created, either by an explicit SNMP set request or by default, the row status should be set to active to initiate the request. Note that this entire procedure may be initiated via a single set request which specifies a row status of createAndGo as well as specifies valid values for the non-defaulted configuration objects. Once the config-copy request has been created (i.e. the ccCopyEntryRowStatus has been made active), the entry cannot be modified - the only operation possible after this is to delete the row. Once the request completes, the management station should retrieve the values of the status objects of interest, and should then delete the entry. In order to prevent old entries from clogging the table, entries will be aged out, but an entry will ever be deleted within 5 minutes of completing." INDEX { ccCopyIndex } ::= { ccCopyTable 1 } CcCopyEntry ::= SEQUENCE { ccCopyIndex Unsigned32, ccCopyProtocol ConfigCopyProtocol, ccCopySourceFileType ConfigFileType, ccCopyDestFileType ConfigFileType, ccCopyServerAddress IpAddress, ccCopyFileName DisplayString, ccCopyUserName DisplayString, ccCopyUserPassword DisplayString, ccCopyNotificationOnCompletion TruthValue, ccCopyState ConfigCopyState, ccCopyTimeStarted TimeStamp, ccCopyTimeCompleted TimeStamp, ccCopyFailCause ConfigCopyFailCause, ccCopyEntryRowStatus RowStatus, ccCopyServerAddressType InetAddressType, ccCopyServerAddressRev1 InetAddress } ccCopyIndex OBJECT-TYPE SYNTAX Unsigned32 (1..2147483647 ) MAX-ACCESS not-accessible STATUS current DESCRIPTION "Object which specifies a unique entry in the ccCopyTable. A management station wishing to initiate a config-copy operation should use a random value for this object when creating or modifying an instance of a ccCopyEntry. The RowStatus semantics of the ccCopyEntryRowStatus object will prevent access conflicts." ::= { ccCopyEntry 1 } ccCopyProtocol OBJECT-TYPE SYNTAX ConfigCopyProtocol MAX-ACCESS read-create STATUS current DESCRIPTION "The protocol to be used for any copy. If the copy operation occurs locally on the SNMP agent (e.g. 'runningConfig' to 'startupConfig'), this object may be ignored by the implementation." DEFVAL { tftp } ::= { ccCopyEntry 2 } ccCopySourceFileType OBJECT-TYPE SYNTAX ConfigFileType MAX-ACCESS read-create STATUS current DESCRIPTION "Specifies the type of file to copy from. Either the ccCopySourceFileType or the ccCopyDestFileType (or both) must be of type 'runningConfig' or 'startupConfig'. Also, the ccCopySourceFileType must be different from the ccCopyDestFileType. If the ccCopySourceFileType has the value of 'networkFile', the ccCopyServerAddress/ ccCopyServerAddressRev1 and ccCopyServerAddressType and ccCopyFileName must also be created, and 3 objects together (ccCopySourceFileType, ccCopyServerAddressRev1, ccCopyFileName) will uniquely identify the source file. If ccCopyServerAddress is created then ccCopyServerAddressRev1 will store the same IP address and ccCopyServerAddressType will take the value 'ipv4'. If the ccCopySourceFileType is 'iosFile', the ccCopyFileName must also be created, and the 2 objects together (ccCopySourceFileType, ccCopyFileName) will uniquely identify the source file." ::= { ccCopyEntry 3 } ccCopyDestFileType OBJECT-TYPE SYNTAX ConfigFileType MAX-ACCESS read-create STATUS current DESCRIPTION "specifies the type of file to copy to. Either the ccCopySourceFileType or the ccCopyDestFileType (or both) must be of type 'runningConfig' or 'startupConfig'. Also, the ccCopySourceFileType must be different from the ccCopyDestFileType. If the ccCopyDestFileType has the value of 'networkFile', the ccCopyServerAddress/ccCopyServerAddressType and ccCopyServerAddressRev1 and ccCopyFileName must also be created, and 3 objects together (ccCopyDestFileType, ccCopyServerAddressRev1, ccCopyFileName) will uniquely identify the destination file. If ccCopyServerAddress is created then ccCopyServerAddressRev1 will store the same IP address and ccCopyServerAddressType will take the value 'ipv4'. If the ccCopyDestFileType is 'iosFile', the ccCopyFileName must also be created, and the 2 objects together (ccCopyDestFileType, ccCopyFileName) will uniquely identify the destination file." ::= { ccCopyEntry 4 } ccCopyServerAddress OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS read-create STATUS deprecated DESCRIPTION "The IP address of the TFTP server from (or to) which to copy the configuration file. This object must be created when either the ccCopySourceFileType or ccCopyDestFileType has the value 'networkFile'. Values of 0.0.0.0 or FF.FF.FF.FF for ccCopyServerAddress are not allowed. Since this object can just hold only IPv4 Transport type, it is deprecated and replaced by ccCopyServerAddressRev1." ::= { ccCopyEntry 5 } ccCopyFileName OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-create STATUS current DESCRIPTION "The file name (including the path, if applicable) of the file. This object must be created when either the ccCopySourceFileType or ccCopyDestFileType has the value 'networkFile' or 'iosFile'." ::= { ccCopyEntry 6 } ccCopyUserName OBJECT-TYPE SYNTAX DisplayString (SIZE (1..40)) MAX-ACCESS read-create STATUS current DESCRIPTION "Remote username for copy via FTP, RCP, SFTP or SCP protocol. This object must be created when the ccCopyProtocol is 'rcp', 'scp', 'ftp', or 'sftp'. If the protocol is RCP, it will override the remote username configured through the rcmd remote-username configuration command. The remote username is sent as the server username in an RCP command request sent by the system to a remote RCP server." ::= { ccCopyEntry 7 } ccCopyUserPassword OBJECT-TYPE SYNTAX DisplayString (SIZE (1..40)) MAX-ACCESS read-create STATUS current DESCRIPTION "Password used by FTP, SFTP or SCP for copying a file to/from an FTP/SFTP/SCP server. This object must be created when the ccCopyProtocol is FTP or SCP. Reading it returns a zero-length string for security reasons." ::= { ccCopyEntry 8 } ccCopyNotificationOnCompletion OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-create STATUS current DESCRIPTION "Specifies whether or not a ccCopyCompletion notification should be issued on completion of the TFTP transfer. If such a notification is desired, it is the responsibility of the management entity to ensure that the SNMP administrative model is configured in such a way as to allow the notification to be delivered." DEFVAL { false } ::= { ccCopyEntry 9 } ccCopyState OBJECT-TYPE SYNTAX ConfigCopyState MAX-ACCESS read-only STATUS current DESCRIPTION "Specifies the state of this config-copy request. This value of this object is instantiated only after the row has been instantiated, i.e. after the ccCopyEntryRowStatus has been made active." ::= { ccCopyEntry 10 } ccCopyTimeStarted OBJECT-TYPE SYNTAX TimeStamp MAX-ACCESS read-only STATUS current DESCRIPTION "Specifies the time the ccCopyState last transitioned to 'running', or 0 if the state has never transitioned to 'running'(e.g., stuck in 'waiting' state). This object is instantiated only after the row has been instantiated." ::= { ccCopyEntry 11 } ccCopyTimeCompleted OBJECT-TYPE SYNTAX TimeStamp MAX-ACCESS read-only STATUS current DESCRIPTION "Specifies the time the ccCopyState last transitioned from 'running' to 'successful' or 'failed' states. This object is instantiated only after the row has been instantiated. Its value will remain 0 until the request has completed." ::= { ccCopyEntry 12 } ccCopyFailCause OBJECT-TYPE SYNTAX ConfigCopyFailCause MAX-ACCESS read-only STATUS current DESCRIPTION "The reason why the config-copy operation failed. This object is instantiated only when the ccCopyState for this entry is in the 'failed' state." ::= { ccCopyEntry 13 } ccCopyEntryRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "The status of this table entry. Once the entry status is set to active, the associated entry cannot be modified until the request completes (ccCopyState transitions to 'successful' or 'failed' state)." ::= { ccCopyEntry 14 } ccCopyServerAddressType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS read-create STATUS current DESCRIPTION "This object indicates the transport type of the address contained in ccCopyServerAddressRev1 object. This must be created when either the ccCopySourceFileType or ccCopyDestFileType has the value 'networkFile'." ::= { ccCopyEntry 15 } ccCopyServerAddressRev1 OBJECT-TYPE SYNTAX InetAddress MAX-ACCESS read-create STATUS current DESCRIPTION "The IP address of the TFTP server from (or to) which to copy the configuration file. This object must be created when either the ccCopySourceFileType or ccCopyDestFileType has the value 'networkFile'. All bits as 0s or 1s for ccCopyServerAddressRev1 are not allowed. The format of this address depends on the value of the ccCopyServerAddressType object." ::= { ccCopyEntry 16 } ccCopyErrorTable OBJECT-TYPE SYNTAX SEQUENCE OF CcCopyErrorEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table containing information about the failure cause of the config copy operation. An entry is created only when the value of ccCopyState changes to 'failed' for a config copy operation. Not all combinations of ccCopySourceFileType and ccCopyDestFileType need to be supported. For example, an implementation may choose to support only the following combination: ccCopySourceFileType = 'runningConfig' ccCopyDestFileType = 'fabricStartupConfig'. In the case where a fabric wide config copy operation is being performed, for example by selecting ccCopyDestFileType value to be 'fabricStartupConfig', it is possible that the fabric could have more than one device. In such cases this table would have one entry for each device in the fabric. In this case even if the operation succeeded in one device and failed in another, the operation as such has failed, so the global state represented by ccCopyState 'failed', but for the device on which it was success, ccCopyErrorDescription would have the distinguished value, 'success'. Once the config copy operation completes and if an entry gets instantiated, the management station should retrieve the values of the status objects of interest. Once an entry in ccCopyTable is deleted by management station, all the corresponding entries with the same ccCopyIndex in this table are also deleted. In order to prevent old entries from clogging the table, entries age out at the same time as the corresponding entry with same ccCopyIndex in ccCopyTable ages out." ::= { ccCopy 2 } ccCopyErrorEntry OBJECT-TYPE SYNTAX CcCopyErrorEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry containing information about the outcome at one destination of a failed config copy operation." INDEX { ccCopyIndex, ccCopyErrorIndex } ::= { ccCopyErrorTable 1 } CcCopyErrorEntry ::= SEQUENCE { ccCopyErrorIndex Unsigned32, ccCopyErrorDeviceIpAddressType InetAddressType, ccCopyErrorDeviceIpAddress InetAddress, ccCopyErrorDeviceWWN FcNameIdOrZero, ccCopyErrorDescription SnmpAdminString } ccCopyErrorIndex OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS not-accessible STATUS current DESCRIPTION "A monotonically increasing integer for the sole purpose of indexing entries in this table. When a config copy operation has multiple destinations, then this index value is used to distinguish between those multiple destinations." ::= { ccCopyErrorEntry 1 } ccCopyErrorDeviceIpAddressType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS read-only STATUS current DESCRIPTION "The type of Internet address for this destination device on which config copy operation is performed." ::= { ccCopyErrorEntry 2 } ccCopyErrorDeviceIpAddress OBJECT-TYPE SYNTAX InetAddress MAX-ACCESS read-only STATUS current DESCRIPTION "The IP address of this destination device on which config copy operation is performed. The object value has to be consistent with the type specified in ccCopyErrorDeviceIpAddressType." ::= { ccCopyErrorEntry 3 } ccCopyErrorDeviceWWN OBJECT-TYPE SYNTAX FcNameIdOrZero MAX-ACCESS read-only STATUS current DESCRIPTION "The World Wide Name (WWN) of this destination device on which config copy operation is performed. The value of this object is zero-length string if WWN is unassigned or unknown. For example, devices which do not support fibre channel would not have WWN." ::= { ccCopyErrorEntry 4 } ccCopyErrorDescription OBJECT-TYPE SYNTAX SnmpAdminString MAX-ACCESS read-only STATUS current DESCRIPTION "The error description for the error happened for this destination of this config copy operation." ::= { ccCopyErrorEntry 5 } ciscoConfigCopyMIBTrapPrefix OBJECT IDENTIFIER ::= { ciscoConfigCopyMIB 2 } ccCopyMIBTraps OBJECT IDENTIFIER ::= { ciscoConfigCopyMIBTrapPrefix 1 } ccCopyCompletion NOTIFICATION-TYPE OBJECTS { ccCopyServerAddress, ccCopyFileName, ccCopyState, ccCopyTimeStarted, ccCopyTimeCompleted, ccCopyFailCause } STATUS current DESCRIPTION "A ccCopyCompletion trap is sent at the completion of a config-copy request. The ccCopyFailCause is not instantiated, and hence not included in a trap, when the ccCopyState is success." ::= { ccCopyMIBTraps 1 } ciscoConfigCopyMIBConformance OBJECT IDENTIFIER ::= { ciscoConfigCopyMIB 3 } ccCopyMIBCompliances OBJECT IDENTIFIER ::= { ciscoConfigCopyMIBConformance 1 } ccCopyMIBGroups OBJECT IDENTIFIER ::= { ciscoConfigCopyMIBConformance 2 } ccCopyMIBCompliance MODULE-COMPLIANCE STATUS deprecated DESCRIPTION "The compliance statement for Cisco agents which implement the Cisco ConfigCopy MIB. This MIB should be implemented on all Cisco agents that support copying of configs via the CLI. This compliance is deprecated and new compliance ccCopyMIBComplianceRev1 is defined." MODULE -- this module MANDATORY-GROUPS { ccCopyGroup, ccCopyNotificationsGroup } ::= { ccCopyMIBCompliances 1 } ccCopyMIBComplianceRev1 MODULE-COMPLIANCE STATUS deprecated DESCRIPTION "The compliance statement for Cisco agents which implement the Cisco ConfigCopy MIB. This MIB should be implemented on all Cisco agents that support copying of configs via the CLI. This compliance module deprecates ccCopyMIBCompliance." MODULE -- this module MANDATORY-GROUPS { ccCopyGroupRev1, ccCopyNotificationsGroup } ::= { ccCopyMIBCompliances 2 } ccCopyMIBComplianceRev2 MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for Cisco agents which implement the Cisco ConfigCopy MIB. This MIB should be implemented on all Cisco agents that support copying of configs via the CLI. This compliance module deprecates ccCopyMIBComplianceRev1." MODULE -- this module MANDATORY-GROUPS { ccCopyGroupRev1, ccCopyNotificationsGroup } GROUP ccCopyErrorGroup DESCRIPTION "Implementation of this group is optional." ::= { ccCopyMIBCompliances 3 } -- units of conformance ccCopyGroup OBJECT-GROUP OBJECTS { ccCopyProtocol, ccCopySourceFileType, ccCopyDestFileType, ccCopyServerAddress, ccCopyFileName, ccCopyUserName, ccCopyUserPassword, ccCopyNotificationOnCompletion, ccCopyState, ccCopyTimeStarted, ccCopyTimeCompleted, ccCopyFailCause, ccCopyEntryRowStatus } STATUS deprecated DESCRIPTION "A collection of objects providing the ability to copy an agent-configuration file. This Group is deprecated and new group is defined." ::= { ccCopyMIBGroups 1 } ccCopyNotificationsGroup NOTIFICATION-GROUP NOTIFICATIONS { ccCopyCompletion } STATUS current DESCRIPTION "The notification used to indicate that a config-copy operation to or from the agent has been completed." ::= { ccCopyMIBGroups 2 } ccCopyGroupRev1 OBJECT-GROUP OBJECTS { ccCopyProtocol, ccCopySourceFileType, ccCopyDestFileType, ccCopyServerAddressType, ccCopyServerAddressRev1, ccCopyFileName, ccCopyUserName, ccCopyUserPassword, ccCopyNotificationOnCompletion, ccCopyState, ccCopyTimeStarted, ccCopyTimeCompleted, ccCopyFailCause, ccCopyEntryRowStatus } STATUS current DESCRIPTION "A collection of objects providing the ability to copy an agent-configuration file. This group deprecates the old group ccCopyGroup." ::= { ccCopyMIBGroups 3 } ccCopyErrorGroup OBJECT-GROUP OBJECTS { ccCopyErrorDeviceIpAddressType, ccCopyErrorDeviceIpAddress, ccCopyErrorDeviceWWN, ccCopyErrorDescription } STATUS current DESCRIPTION "A collection of objects providing the result of a config copy operation when the value of ccCopyDestFileType is 'fabricStartupConfig' and value of ccCopyState is 'failed'." ::= { ccCopyMIBGroups 4 } END