#-MIBFILE: cisco-config-copy.mib

CISCO-CONFIG-COPY-MIB DEFINITIONS ::= BEGIN


DisplayString ::=
	OCTET STRING (SIZE(0..255))

PhysAddress ::=
	OCTET STRING

MacAddress ::=
	OCTET STRING (SIZE(6))

TruthValue ::=
	INTEGER {
	true(1),
	false(2)
	}

TestAndIncr ::=
	INTEGER (0..2147483647)

AutonomousType ::=
	OBJECT IDENTIFIER

InstancePointer ::=
	OBJECT IDENTIFIER

VariablePointer ::=
	OBJECT IDENTIFIER

RowPointer ::=
	OBJECT IDENTIFIER

RowStatus ::=
	INTEGER {
	active(1),
	notInService(2),
	notReady(3),
	createAndGo(4),
	createAndWait(5),
	destroy(6)
	}

TimeStamp ::=
	TimeTicks

TimeInterval ::=
	INTEGER (0..2147483647)

DateAndTime ::=
	OCTET STRING (SIZE(8|11))

StorageType ::=
	INTEGER {
	other(1),
	volatile(2),
	nonVolatile(3),
	permanent(4),
	readOnly(5)
	}

TDomain ::=
	OBJECT IDENTIFIER

TAddress ::=
	OCTET STRING (SIZE(1..255))

cisco OBJECT IDENTIFIER ::= { enterprises 9 }
ciscoMgmt OBJECT IDENTIFIER ::= { cisco 9 }
ConfigCopyProtocol ::=
	INTEGER {
	tftp(1),
	ftp(2),
	rcp(3),
	scp(4),
	sftp(5)
	}

ConfigCopyState ::=
	INTEGER {
	waiting(1),
	running(2),
	successful(3),
	failed(4)
	}

ConfigCopyFailCause ::=
	INTEGER {
	unknown(1),
	badFileName(2),
	timeout(3),
	noMem(4),
	noConfig(5),
	unsupportedProtocol(6),
	someConfigApplyFailed(7)
	}

ConfigFileType ::=
	INTEGER {
	networkFile(1),
	iosFile(2),
	startupConfig(3),
	runningConfig(4),
	terminal(5)
	}

ciscoConfigCopyMIB OBJECT IDENTIFIER ::= { ciscoMgmt 96 }

ciscoConfigCopyMIBObjects OBJECT IDENTIFIER ::= { ciscoConfigCopyMIB 1 }

ccCopy OBJECT IDENTIFIER ::= { ciscoConfigCopyMIBObjects 1 }

ccCopyTable OBJECT-TYPE
	SYNTAX SEQUENCE OF CcCopyEntry
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "A table of config-copy requests."
	::= { ccCopy 1 }


ccCopyEntry OBJECT-TYPE
	SYNTAX CcCopyEntry
	ACCESS read-only
	STATUS mandatory
	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 FileTypes must be an agent-config
file type (i.e.        startupConfig or runningConfig).
If one of the file types is a networkFile, a valid
ccCopyServerAddress and ccCopyFileName must be
created as well. For a file type of iosFile, only
a valid fileName 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 never 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
		}

ccCopyIndex OBJECT-TYPE
	SYNTAX INTEGER (1..2147483647)
	ACCESS read-only
	STATUS mandatory
	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 INTEGER {
	tftp(1),
	ftp(2),
	rcp(3),
	scp(4),
	sftp(5)
	}
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "The protocol to be used for any copy. 
Will default to tftp if not specified.

If the copy operation occurs locally on the SNMP agent
(e.g. runningCOnfigToStartupConfig), this object may
be ignored by the implementation."
	::= { ccCopyEntry 2 }


ccCopySourceFileType OBJECT-TYPE
	SYNTAX INTEGER {
	networkFile(1),
	iosFile(2),
	startupConfig(3),
	runningConfig(4),
	terminal(5)
	}
	ACCESS read-only
	STATUS mandatory
	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 and
ccCopyFileName must also be created, and these 3 
objects together (ccCopySourceFileType, 
ccCopyServerAddress, ccCopyFileName) will uniquely 
identify the source file.

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 INTEGER {
	networkFile(1),
	iosFile(2),
	startupConfig(3),
	runningConfig(4),
	terminal(5)
	}
	ACCESS read-only
	STATUS mandatory
	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 and 
ccCopyFileName must also be created, and these 
3 objects together
(ccCopyDestFileType, ccCopyServerAddress, 
ccCopyFileName) will uniquely identify the 
destination file.

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
	ACCESS read-only
	STATUS mandatory
	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."
	::= { ccCopyEntry 5 }


ccCopyFileName OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	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))
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "Remote user name 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 
user-name configured through the 
rcmd remote-username <username>
configuration command. 
The remote user-name is sent as the server user-name 
in an rcp command request sent by the system to a
remote rcp server."
	::= { ccCopyEntry 7 }


ccCopyUserPassword OBJECT-TYPE
	SYNTAX DisplayString (SIZE(1..40))
	ACCESS read-only
	STATUS mandatory
	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
	ACCESS read-only
	STATUS mandatory
	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."
	::= { ccCopyEntry 9 }


ccCopyState OBJECT-TYPE
	SYNTAX INTEGER {
	waiting(1),
	running(2),
	successful(3),
	failed(4)
	}
	ACCESS read-only
	STATUS mandatory
	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
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION "Specifies the time the ccCopyState last transitioned
to running, or 0 if the state has never transitioned to
running        (for e.g., stuck in waiting state).
This object is instantiated only after the row has been
instantiated."
	::= { ccCopyEntry 11 }


ccCopyTimeCompleted OBJECT-TYPE
	SYNTAX TimeStamp
	ACCESS read-only
	STATUS mandatory
	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 he request has completed."
	::= { ccCopyEntry 12 }


ccCopyFailCause OBJECT-TYPE
	SYNTAX INTEGER {
	unknown(1),
	badFileName(2),
	timeout(3),
	noMem(4),
	noConfig(5),
	unsupportedProtocol(6),
	someConfigApplyFailed(7)
	}
	ACCESS read-only
	STATUS mandatory
	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
	ACCESS read-only
	STATUS mandatory
	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 }


ciscoConfigCopyMIBTrapPrefix OBJECT IDENTIFIER ::= { ciscoConfigCopyMIB 2 }

ccCopyMIBTraps OBJECT IDENTIFIER ::= { ciscoConfigCopyMIBTrapPrefix 1 }

ciscoConfigCopyMIBConformance OBJECT IDENTIFIER ::= { ciscoConfigCopyMIB 3 }

ccCopyMIBCompliances OBJECT IDENTIFIER ::= { ciscoConfigCopyMIBConformance 1 }

ccCopyMIBGroups OBJECT IDENTIFIER ::= { ciscoConfigCopyMIBConformance 2 }

ccCopyGroup OBJECT IDENTIFIER ::= { ccCopyMIBGroups 1 }

ccCopyNotificationsGroup OBJECT IDENTIFIER ::= { ccCopyMIBGroups 2 }

ccCopyCompletion TRAP-TYPE
	ENTERPRISE ccCopyMIBTraps
	VARIABLES { ccCopyServerAddress, ccCopyFileName, ccCopyState, ccCopyTimeStarted, ccCopyTimeCompleted, ccCopyFailCause }
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."
	::= 1


END

