-- *****************************************************************
-- DELL-NETWORKING-COPY-CONFIG-MIB
--
--
-- Copyright (c) 2003-2014 by Dell Inc. All Rights Reserved.
-- All rights reserved.
-- *****************************************************************
--

DELL-NETWORKING-COPY-CONFIG-MIB DEFINITIONS ::= BEGIN

IMPORTS

        MODULE-IDENTITY, OBJECT-TYPE,
        IpAddress, TimeTicks, NOTIFICATION-TYPE
            FROM SNMPv2-SMI
        TEXTUAL-CONVENTION,
		RowStatus,
        DisplayString
            FROM SNMPv2-TC
        InetAddressType, InetAddress
              FROM INET-ADDRESS-MIB
        MODULE-COMPLIANCE,
        OBJECT-GROUP
            FROM SNMPv2-CONF
        dellNetMgmt
            FROM DELL-NETWORKING-SMI
        ;
 
dellNetCopyConfigMib   MODULE-IDENTITY
        LAST-UPDATED    "200905141300Z"
        ORGANIZATION    "Dell Inc."
        CONTACT-INFO  
                        "http://www.dell.com/support"
        DESCRIPTION
            "Dell Networking OS Copy Config MIB provides copying of running-config to
            to startup-config and vice-versa, and Dell Networking OS files to local
            disk or other system via ftp or tftp.  
            "
        REVISION     "200905141300Z"
        DESCRIPTION 
            "Added New enum for usbflash filesystem in Exascale"
        REVISION     "200706191200Z"
        DESCRIPTION
            "Update description to copy from remote server to local"
        REVISION     "200303011200Z"
        DESCRIPTION
            "Initial Revision"
        ::= { dellNetMgmt 5 }   


dellNetCopyConfigObjects    OBJECT IDENTIFIER ::= { dellNetCopyConfigMib 1 }
dellNetCopyConfig           OBJECT IDENTIFIER ::= { dellNetCopyConfigObjects 1 } 
dellNetCopyConfigTraps      OBJECT IDENTIFIER ::= { dellNetCopyConfigObjects 2 } 


DellNetConfigFileLocation ::= INTEGER {
	flash(1),
	slot0(2),
    tftp(3),
        ftp(4),
        scp(5),
        usbflash(6),
        nfsmount(7)
        }
-- TEXTUAL-CONVENTION
--  Status
--    mandatory
--  Descr
--    The various location of the files on which a config-copy
--    request can be performed.
--    The option currently is limited to the master RPM.
--    RPM1 location will be supported in near future.
--    usbflash option is supported only on Exascale E-Series.


DellNetConfigFileType ::= INTEGER {
	dellNetFile (1),
        runningConfig(2),
        startupConfig(3)
        }
-- TEXTUAL-CONVENTION
--  Status
--    mandatory
--  Descr
--    The various types of files on which a config-copy
--    request can be performed.
--    dellNetFile can be any text or binary files as long
--    the file is a valid files

DellNetConfigCopyState ::= INTEGER {
        running(1),
        successful(2),
        failed(3)
        }
-- TEXTUAL-CONVENTION
--  Status
--    mandatory
--  Descr
--    The state of a tftp config-copy operation. 
--     The description of each state is given below:
--    
--     running:     only one config-copy request can run 
--                  at any time. A newly activated 
--                  config request will received state as failed  
--                  if another request is in progress.
--                  But, if the current request is queried, 
--                  the state is set to running. 
--    
--     successsful: the state when a config-copy request is
--                  successfully completed.
--    
--     failed:      to verify if there is a copy request in progress,
--                  query the system with the copy mib.
--                  Otherwise, the config-copy request failed.


DellNetConfigCopyFailCause ::= INTEGER {
        badFileName(1),
        copyInProgress(2),
	diskFull(3),
	fileExist(4),
	fileNotFound(5),
        timeout(6),
        unknown(7)
        }
-- TEXTUAL-CONVENTION
--  Status
--    mandatory
--  Descr
--    The reason a config-copy request failed.



dellNetCopyTable OBJECT-TYPE
    SYNTAX SEQUENCE OF DellNetCopyEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A table of config-copy requests."
    ::= { dellNetCopyConfig 1 }

dellNetCopyEntry OBJECT-TYPE
    SYNTAX DellNetCopyEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A config-copy request.
        
	To use this copy on NMS, user must first query the MIB.
        if the query returns the result of the previous copied and
        there is no pending copy operation, user can submit a SNMP
        SET with a random number as index with the appropraite
        information as specified by this MIB and the row status as
        CreateAndGo.  

        The system will only keep the last 5 copy requests as the history.
        If there are ten entries in the copy request table,  the subsequent 
        copy request will replace the existing one in the copy table. 

	1) To copy running-config from local directory to startup-config. Set the following
	mib objects in the copy table

	copySrcFileType		: runningConfig (2)
	copyDestFileType	: startupConfig (3)

	2) To copy startup-config from local directory to a remote site. Set the following
	mib objects in the copy table

	copySrcFileType		: startupConfig (3)
	copyDestFileType	: dellNetFile (1)
	copyDestFileLocation	: ftp (4)
	copyDestFileName	: /user/tester1/ftp/
    	copyServerAddress 	: 172.20.10.123
    	copyUserName 		: tester1
    	copyUserPassword 	: mypasswd

	3) To copy a file from local directory to a remote site. Set the following
	mib objects in the copy table

	copySrcFileType		: dellNetFile (1)
	copySrcFileLocation	: slot0 (2)
	copySrcFileName		: NVTRACE_LOG_DIR/LP4-nvtrace-0
	copyDestFileType	: dellNetFile (1)
	copyDestFileLocation	: ftp (4)
	copyDestFileName	: /usr/tester1/trace/backup/LP4-nvtrace-0
    	copyServerAddress 	: 172.20.10.123
    	copyUserName 		: tester1
    	copyUserPassword 	: mypasswd
	"

    INDEX { copyConfigIndex }
    ::= { dellNetCopyTable 1 }


DellNetCopyEntry ::= SEQUENCE {
    copyConfigIndex 		INTEGER,
    copySrcFileType 		DellNetConfigFileType,
    copySrcFileLocation 	DellNetConfigFileLocation,
    copySrcFileName 		DisplayString,
    copyDestFileType 		DellNetConfigFileType,
    copyDestFileLocation	DellNetConfigFileLocation,
    copyDestFileName 		DisplayString,
    copyServerAddress 		IpAddress,
    copyUserName 		DisplayString,
    copyUserPassword 		DisplayString,
    copyState 			DellNetConfigCopyState,
    copyTimeStarted 		TimeTicks,
    copyTimeCompleted 		TimeTicks,
    copyFailCause 		DellNetConfigCopyFailCause,
    copyEntryRowStatus 		RowStatus,
    copyServerInetAddressType	InetAddressType,
    copyServerInetAddress	InetAddress
    }

copyConfigIndex OBJECT-TYPE
    SYNTAX INTEGER
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "To initiate a config copy request, user should
         assign a positive random value as an index.
        "
    ::= { dellNetCopyEntry 1 }

copySrcFileType OBJECT-TYPE
    SYNTAX DellNetConfigFileType
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "Specifies the type of file to copy from. 

        if the copySrcFileType is runningConfig(2) or
        startupConfig(3), the default DellNetConfigFileLocation is 
        flash(1).
        
        If the copySrcFileType has the value of 
        dellNetFile(1), it is expected that the copySrcFileLocation
        and copySrcFileName must also be spcified. The three 
        objects together will uniquely identify the source file.
        
        "
    ::= { dellNetCopyEntry 2 }

copySrcFileLocation OBJECT-TYPE
    SYNTAX DellNetConfigFileLocation
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "Specifies the location of source file.

        If the copySrcFileType has the value of 
        dellNetFile(1), it is expected that the copySrcFileType
        and copySrcFileName must also be spcified. The three
        objects together will uniquely identify the source file.

        If the copySrcFileLocation has the value of
        ftp(4) or scp(5), it is expected the login information liked 
        copyServerAddress, copyUserName, and copyUserPassword
        also be spcified. 
        
        "
    ::= { dellNetCopyEntry 3 }

copySrcFileName OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "The file name (including the path, if applicable) of
        the file. If copySourceFileType is set to runningConfig or
        startupConfig, copySrcFileName is not needed.
        "
    ::= { dellNetCopyEntry 4 }

copyDestFileType OBJECT-TYPE
    SYNTAX DellNetConfigFileType
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "Specifies the type of file to copy to. 

        if the copyDestFileType is runningConfig(2) or
        startupConfig(3), the default dellNetDestFileLocation is 
        flash(1).
        
        If the copyDestFileType has the value of 
        dellNetFile(1), it is expected that the copyDestFileLocation
        and copyDestFileName must also be spcified. The three 
        objects together will uniquely identify the destination file.
        
        "
    ::= { dellNetCopyEntry 5 }

copyDestFileLocation OBJECT-TYPE
    SYNTAX DellNetConfigFileLocation
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "Specifies the location of destination file.

        If the copyDestFileType has the value of 
        dellNetFile(1), it is expected that the copyDestFileType
        and copyDestFileName must also be spcified. The three
        objects together will uniquely identify the destination file.

        If the copyDestFileLocation has the value of
        ftp(4) or scp(5), it is expected the login information liked 
        copyServerAddress, copyUserName, and copyUserPassword
        also be spcified. 

        "
    ::= { dellNetCopyEntry 6 }

copyDestFileName OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "Specifies the location of destination file.

        If the copyDestFileType has the value of
        dellNetFile(1), it is expected that the dellNetCopyDestFileTyp
        and copyDestFileLocation must also be spcified. The three
        objects together will uniquely identify the source file.

        If the copyDestFileLocation has the value of
        ftp(4) or scp(5), it is expected the login information liked 
        copyServerAddress, copyUserName, and copyUserPassword
        also be spcified. 

        "
    ::= { dellNetCopyEntry 7 }

copyServerAddress OBJECT-TYPE
    SYNTAX IpAddress
    MAX-ACCESS read-write
    STATUS deprecated
    DESCRIPTION
        "The ip address of the tftp server from (or to) 
        which to copy the configuration file. 

        Values of 0.0.0.0 or FF.FF.FF.FF for
        copyServerAddress are not allowed.

        If the copyDestFileLocation has the value of
        ftp(4) or scp(5), it is expected the login information liked 
        copyServerAddress, copyUserName, and copyUserPassword
        also be spcified. 

        "
    ::= { dellNetCopyEntry 8 }

copyUserName OBJECT-TYPE
    SYNTAX DisplayString(SIZE(1..15))
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "Remote user name for copy via ftp, or scp. 

        If the copyDestFileLocation has the value of
        ftp(4) or scp(5), it is expected the login information liked 
        copyServerAddress, copyUserName, and copyUserPassword
        also be spcified. 

        "
    ::= { dellNetCopyEntry 9 }

copyUserPassword OBJECT-TYPE
    SYNTAX DisplayString(SIZE(1..15))
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "Password used by ftp, scp for copying a 
        file to an ftp/scp server. 

        If the copyDestFileLocation has the value of
        ftp(4) or scp(5), it is expected the login information liked 
        copyServerAddress, copyUserName, and copyUserPassword
        also be spcified. 

        "
    ::= { dellNetCopyEntry 10 }

copyState OBJECT-TYPE
    SYNTAX DellNetConfigCopyState
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The state of config-copy operation.
        "
    ::= { dellNetCopyEntry 11 }

copyTimeStarted OBJECT-TYPE
    SYNTAX TimeTicks
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The timetick when the copy started.
        "
    ::= { dellNetCopyEntry 12 }

copyTimeCompleted OBJECT-TYPE
    SYNTAX TimeTicks
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The timetick when the copy completed.
        "
    ::= { dellNetCopyEntry 13 }

copyFailCause OBJECT-TYPE
    SYNTAX DellNetConfigCopyFailCause
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "
        The reason a config-copy request failed.
        "
    ::= { dellNetCopyEntry 14 }

copyEntryRowStatus OBJECT-TYPE
    SYNTAX RowStatus
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "
        The state of the copy operation.

        Uses CreateAndGo when you are performing the copy.
        The state is set to active when the copy is completed.
        "
    ::= { dellNetCopyEntry 15 }

copyServerInetAddressType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS read-write
    STATUS      current
    DESCRIPTION
        "
        The address type of copyServerInetAddress.
        Only ipv4 (1), ipv6 (2) and dns (16) types
        are supported.
        "
    ::= { dellNetCopyEntry 16 }

copyServerInetAddress OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS read-write
    STATUS      current
    DESCRIPTION
        "
        The IP address of the address ftp/tftp/scp server
        from or to which to copy the configuration file. 

        If the copyDestFileLocation has the value of
        ftp(4) or scp(5), it is expected the login 
        information copyUserName and copyUserPassword
        also be spcified. 
        "
    ::= { dellNetCopyEntry 17 }

    --
    -- ## Alarm Group or Traps
    --
   
    copyAlarmMibNotifications     OBJECT IDENTIFIER ::= { dellNetCopyConfigTraps 0 }
    copyAlarmVariable             OBJECT IDENTIFIER ::= { dellNetCopyConfigTraps 1 }
   
    --
    -- TRAP VarBind Data
    --
   
    copyAlarmLevel OBJECT-TYPE
        SYNTAX       INTEGER
        MAX-ACCESS   accessible-for-notify
        STATUS       current
        DESCRIPTION
            "the message warning level"
        ::= { copyAlarmVariable 1 }
   
    copyAlarmString OBJECT-TYPE
        SYNTAX       OCTET STRING
        MAX-ACCESS   accessible-for-notify
        STATUS       current
        DESCRIPTION
            "An generic string value in the TRAP object"
        ::= { copyAlarmVariable 2 }

    copyAlarmIndex OBJECT-TYPE
        SYNTAX       INTEGER
        MAX-ACCESS   accessible-for-notify
        STATUS       current
        DESCRIPTION
            "the index of the current copy. 
             Indicates the index of the current copy, i.e. copyConfigIndex of dellNetCopyTable. 
             Set to '-1' if copy executed by CLI"
        ::= { copyAlarmVariable 3 }

    --
    -- TRAPS
    --

    copyConfigCompleted  NOTIFICATION-TYPE
        OBJECTS         {   copyAlarmLevel,
                            copyAlarmString,
                            copyAlarmIndex
                        }
        STATUS          current
        DESCRIPTION
            "The agent generate this trap when a
             copy operational is completed."
        ::= { copyAlarmMibNotifications 1 }

    configConflict  NOTIFICATION-TYPE
        OBJECTS         {   copyAlarmLevel,
                            copyAlarmString,
                            copyAlarmIndex
                        }
        STATUS          current
        DESCRIPTION
            "The agent generate this trap when a
             configuration conflict found during audit."
        ::= { copyAlarmMibNotifications 2 }

    configConflictClear  NOTIFICATION-TYPE
        OBJECTS         {   copyAlarmLevel,
                            copyAlarmString,
                            copyAlarmIndex
                        }
        STATUS          current
        DESCRIPTION
            "The agent generate this trap when a
             configuration conflict resolved during audit."
        ::= { copyAlarmMibNotifications 3 }

    batchConfigCommitProgress  NOTIFICATION-TYPE
        OBJECTS         {   copyAlarmLevel,
                            copyAlarmString,
                            copyAlarmIndex
                        }
        STATUS          current
        DESCRIPTION
            "The agent generate this trap when a
             configuration commit is initiated."
        ::= { copyAlarmMibNotifications 4 }

    batchConfigCommitCompleted  NOTIFICATION-TYPE
        OBJECTS         {   copyAlarmLevel,
                            copyAlarmString,
                            copyAlarmIndex
                        }
        STATUS          current
        DESCRIPTION
            "The agent generate this trap when a
             configuration commit is completed."
        ::= { copyAlarmMibNotifications 5}


END
