-- *****************************************************************
-- DLINKPRIME-SYSTEM-FILE-MIB: D-Link System File MIB
--
--  Copyright (c) 2014 D-Link Corporation, all rights reserved.
--
-- *****************************************************************


DLINKPRIME-SYSTEM-FILE-MIB DEFINITIONS ::= BEGIN

    IMPORTS
        MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, IpAddress
            FROM SNMPv2-SMI
        MODULE-COMPLIANCE, OBJECT-GROUP
            FROM SNMPv2-CONF
        TEXTUAL-CONVENTION, TruthValue, RowStatus, DisplayString
		    FROM SNMPv2-TC
        dlinkPrimeCommon
            FROM DLINK-ID-REC-MIB;

    dlinkPrimeSystemFileMIB MODULE-IDENTITY
        LAST-UPDATED    "201405260000Z"
        ORGANIZATION    "D-Link Corp."
        CONTACT-INFO
            "   D-Link Corporation

                Postal: No. 289, Sinhu 3rd Rd., Neihu District,
                        Taipei City 114, Taiwan, R.O.C
                Tel:     +886-2-66000123
                E-mail: tsd@dlink.com.tw
            "
        DESCRIPTION
            "This MIB module defines objects for managing system critical files
            (e.g configuration and firmware.)
            "
        REVISION        "201405260000Z"
        DESCRIPTION
            "This is the first version of the MIB file."

        ::= { dlinkPrimeCommon 22 }

--
-- Node definitions
--

    dpsfMIBNotifications OBJECT IDENTIFIER ::= { dlinkPrimeSystemFileMIB 0 }
    dpsfMIBObjects       OBJECT IDENTIFIER ::= { dlinkPrimeSystemFileMIB 1 }
    dpsfMIBConformance	OBJECT IDENTIFIER ::= { dlinkPrimeSystemFileMIB 2 }

-- -----------------------------------------------------------------------------
    dpsfBootInfoObjects		OBJECT IDENTIFIER ::= { dpsfMIBObjects 1 }

    dpsfCheckingBootImageCheck OBJECT-TYPE
        SYNTAX          TruthValue
        MAX-ACCESS      read-write
        STATUS          current
        DESCRIPTION
            "This object indicates whether displays the information of the
            specified next boot image to let user understand whether the
            specified file is suitable to be a boot image or not, which some
            information should be displayed such as purpose of the file,
            version number, time stamp, and checksum etc.
            "
        ::= { dpsfBootInfoObjects 1 }

    dpsfBootImageCheckResult OBJECT-TYPE
        SYNTAX          DisplayString
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION
            "This object indicates the information of the specified next boot
            image such as the purpose of the file, version number, time stamp,
            and checksum etc.
            "
        ::= { dpsfBootInfoObjects 2 }

-- -----------------------------------------------------------------------------
    dpsfBootImageTable OBJECT-TYPE
        SYNTAX          SEQUENCE OF DpsfBootImageEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION
            "The table is used to display information for boot images of units."
        ::= { dpsfBootInfoObjects 3 }

	dpsfBootImageEntry OBJECT-TYPE
        SYNTAX          DpsfBootImageEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION
            "An entry contains version information of a system."
        INDEX   {
            dpsfBootImageIndex
        }
        ::= { dpsfBootImageTable 1 }

    DpsfBootImageEntry ::= SEQUENCE {
		dpsfBootImageIndex   	Unsigned32,
        dpsfBootImageInWorking   TruthValue
    }

	dpsfBootImageIndex OBJECT-TYPE
        SYNTAX          Unsigned32 (1..65535)
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION
             "This object indicates the index of boot image."
        ::= { dpsfBootImageEntry 1 }

    dpsfBootImageInWorking OBJECT-TYPE
        SYNTAX          TruthValue
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION
            "This object indicates whether the entry is the current boot image."
        ::= { dpsfBootImageEntry 2 }

-- -----------------------------------------------------------------------------
    dpsfCopyTable OBJECT-TYPE
       SYNTAX           SEQUENCE OF DpsfCopyEntry
       MAX-ACCESS       not-accessible
       STATUS           current
       DESCRIPTION
           "A table contains the information for file copy. There will at any
           time be either 0 or 1 row in this table, and the only valid index
           for this table is 1.  It is only a table so that we may take
           advantage of the RowStatus textual convention for configuring
           the copying parameters."
       ::= { dpsfMIBObjects 2 }

    dpsfCopyEntry OBJECT-TYPE
       SYNTAX           DpsfCopyEntry
       MAX-ACCESS       not-accessible
       STATUS           current
       DESCRIPTION
           "An entry contains parameters for copy."
       INDEX  { dpsfCopyIndex }
       ::= { dpsfCopyTable 1 }

    DpsfCopyEntry ::= SEQUENCE {
        dpsfCopyIndex                Unsigned32,
        dpsfCopyType                 INTEGER,
        dpsfCopySrcUrl               OCTET STRING,
        dpsfCopyDstUrl               OCTET STRING,
        dpsfCopyRemoteAddr           IpAddress,
        dpsfCopyErrorStatus          DisplayString,
        dpsfCopyRowStatus            RowStatus
        }

    dpsfCopyIndex OBJECT-TYPE
        SYNTAX          Unsigned32 (1)
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION
            "This object uniquely identifies this row.
            The only legal value for this object is 1."
        ::= { dpsfCopyEntry 1 }

    dpsfCopyType OBJECT-TYPE
        SYNTAX          INTEGER {
            localToTftpRemote(1),
            tftpRemoteToLocal(2)
        }
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION
            "This object indicates the type of the copy.
            'localToTftpRemote' - Upload file remote host via TFTP.
            'tftpRemoteToLocal' - Download file from remote host via TFTP.
            "
       ::= { dpsfCopyEntry 2 }

    dpsfCopySrcUrl OBJECT-TYPE
        SYNTAX      OCTET STRING (SIZE (0..799))
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object indicates the source URL for the source file to be copied.
            The special form 'image1' and 'image2' 
            are reserved to indicate the system files.
            "
        ::= { dpsfCopyEntry 3 }

    dpsfCopyDstUrl OBJECT-TYPE
        SYNTAX      OCTET STRING (SIZE (0..799))
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object indicates the destination URL for the copied file.
            The special form 'image1', and 'image2' are reserved to 
            indicate the system files.
            "
        ::= { dpsfCopyEntry 4 }

    dpsfCopyRemoteAddr OBJECT-TYPE
        SYNTAX             IpAddress
        MAX-ACCESS         read-create
        STATUS             current
        DESCRIPTION
           "This object indicates the address of the remote host.
           "
        ::= { dpsfCopyEntry 5 }

    dpsfCopyErrorStatus  OBJECT-TYPE
        SYNTAX          DisplayString
        MAX-ACCESS      read-only
        STATUS       current
        DESCRIPTION
            "Status of file copy."
        ::= { dpsfCopyEntry 6 }

    dpsfCopyRowStatus OBJECT-TYPE
        SYNTAX          RowStatus
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION
            "The status of this conceptual row.
            The writable columns in a row cannot be changed if the row is
            'active'."
        ::= { dpsfCopyEntry 7 }

-- -----------------------------------------------------------------------------
    dpsfCfgReplaceTable OBJECT-TYPE
       SYNTAX           SEQUENCE OF DpsfCfgReplaceEntry
       MAX-ACCESS       not-accessible
       STATUS           current
       DESCRIPTION
           "A table contains the information for replacing the current running
           configuration file. There will at any time be either 0 or 1 row
           in this table, and the only valid index for this table is 1."
       ::= { dpsfMIBObjects 3 }

    dpsfCfgReplaceEntry OBJECT-TYPE
       SYNTAX           DpsfCfgReplaceEntry
       MAX-ACCESS       not-accessible
       STATUS           current
       DESCRIPTION
           "An entry contains parameters for configure replace."
       INDEX  { dpsfCfgReplaceIndex }
       ::= { dpsfCfgReplaceTable 1 }

    DpsfCfgReplaceEntry ::= SEQUENCE {
        dpsfCfgReplaceIndex               Unsigned32,
        dpsfCfgReplaceSrcType             INTEGER,
        dpsfCfgReplaceSrcUrl              OCTET STRING,
        dpsfCfgReplaceRemoteAddr          IpAddress,
        dpsfCfgReplaceErrorStatus         DisplayString,
        dpsfCfgReplaceRowStatus           RowStatus
        }

    dpsfCfgReplaceIndex OBJECT-TYPE
        SYNTAX          Unsigned32 (1)
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION
            "This object uniquely identifies this row.
            The only legal value for this object is 1."
        ::= { dpsfCfgReplaceEntry 1 }

    dpsfCfgReplaceSrcType OBJECT-TYPE
        SYNTAX          INTEGER {
            tftpRemote(1)
        }
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION
            "This object indicates where to get the file to replace the current
            running configuration.

            'tftpRemote' - Get the replacing configuration file from remote host via TFTP.
            "
       ::= { dpsfCfgReplaceEntry 2 }

    dpsfCfgReplaceSrcUrl OBJECT-TYPE
        SYNTAX      OCTET STRING (SIZE (0..799))
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object indicates the source URL for the source configuration file
            to be executed."
        ::= { dpsfCfgReplaceEntry 3 }

    dpsfCfgReplaceRemoteAddr OBJECT-TYPE
        SYNTAX             IpAddress
        MAX-ACCESS         read-create
        STATUS             current
        DESCRIPTION
           "This object indicates the address of the remote host.
           "
        ::= { dpsfCfgReplaceEntry 4 }

    dpsfCfgReplaceErrorStatus  OBJECT-TYPE
        SYNTAX          DisplayString
        MAX-ACCESS      read-only
        STATUS       current
        DESCRIPTION
            "This object indicates the processing status about the replacement of
            current running configuration.
            "
        ::= { dpsfCfgReplaceEntry 5 }

    dpsfCfgReplaceRowStatus OBJECT-TYPE
        SYNTAX          RowStatus
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION
            "The status of this conceptual row.
            The writable columns in a row cannot be changed if the row is
            'active'."
        ::= { dpsfCfgReplaceEntry 6 }

-- -----------------------------------------------------------------------------
    dpsfClearRunCfg OBJECT-TYPE
        SYNTAX      INTEGER   {
            clear_cfg_ip_reboot(1),
            clear_cfg_no_ip_reboot(2),
            clear_cfg_no_reboot(3),
            noOp(4)
        }
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "When set to 'clear_cfg_ip_reboot', this object is used to clear 
            running-config including IP address and save to flash then reboot.
            When set to 'clear_cfg_no_ip_reboot', this object is used to clear 
            running-config except IP address  and save to flash then reboot.
            When set to 'clear_cfg_no_reboot', this object is used to clear
            running-config including IP address and save to flash but no reboot.
            No action is taken if this object is set to 'noOp'.
            When read, the value 'noOp' is returned."
        ::= { dpsfMIBObjects 4 }

-- -----------------------------------------------------------------------------
    dpsfResetSystem OBJECT-TYPE
        SYNTAX      INTEGER   {
            reset(1),
            noOp(2)
        }
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "This object is used to reset system when set to 'reset'.
            It will clear system configuration, save and reboot the system.
            No action is taken if this object is set to 'noOp'.
            When read, the value 'noOp' is returned."
        ::= { dpsfMIBObjects 5 }

-- -----------------------------------------------------------------------------
    dpsfCompliances   OBJECT IDENTIFIER ::= { dpsfMIBConformance 1 }

    dpsfCompliance MODULE-COMPLIANCE
        STATUS      current
        DESCRIPTION
            "The compliance statement for entities which implement the
            DLINKPRIME-SYSTEM-FILE-MIB."
        MODULE
            MANDATORY-GROUPS {
                dpsfBootInfoGroup,
                dpsfCopyGroup,
                dpsfCfgReplaceGroup,
                dpsfClearCfgGroup
            }
        OBJECT  dpsfCopyType
            DESCRIPTION
                "It is compliant to support only a subset of
                values: 'localToTftpRemote', and
                'tftpRemoteToLocal'."

        OBJECT  dpsfCfgReplaceSrcType
            DESCRIPTION
                "It is compliant to support only a subset of
                values: 'tftpRemote'."

        ::= { dpsfCompliances 1 }

    dpsfGroups   OBJECT IDENTIFIER ::= { dpsfMIBConformance 2 }

    dpsfBootInfoGroup OBJECT-GROUP
        OBJECTS {
            dpsfCheckingBootImageCheck,
            dpsfBootImageCheckResult,
            dpsfBootImageInWorking
        }
        STATUS      current
        DESCRIPTION
            "A collection of objects providing information about the boot configuration
            and boot image."
        ::= { dpsfGroups 1 }

    dpsfCopyGroup OBJECT-GROUP
        OBJECTS {
            dpsfCopyType,
            dpsfCopySrcUrl,
            dpsfCopyDstUrl,
            dpsfCopyRemoteAddr,
            dpsfCopyErrorStatus,
            dpsfCopyRowStatus
        }
        STATUS      current
        DESCRIPTION
            "A collection of objects providing information for the parameters
            of the copy function."
        ::= { dpsfGroups 2 }

    dpsfCfgReplaceGroup OBJECT-GROUP
        OBJECTS {
            dpsfCfgReplaceSrcType,
            dpsfCfgReplaceSrcUrl,
            dpsfCfgReplaceRemoteAddr,
            dpsfCfgReplaceErrorStatus,
            dpsfCfgReplaceRowStatus
        }
        STATUS      current
        DESCRIPTION
            "A collection of objects providing information for the parameters
            of the configure replace function."
        ::= { dpsfGroups 3 }

    dpsfClearCfgGroup OBJECT-GROUP
        OBJECTS {
            dpsfClearRunCfg,
            dpsfResetSystem
        }
        STATUS      current
        DESCRIPTION
            "An object providing the clear function."
        ::= { dpsfGroups 4 }

END
