-- *****************************************************************
-- CISCO-SYS-INFO-LOG-MIB: MIB for Information Logging Configuration
--
-- January 2003, Binh P Le
--
-- Copyright (c) 2003-2005 by Cisco Systems, Inc.
-- All rights reserved.
-- *****************************************************************

CISCO-SYS-INFO-LOG-MIB DEFINITIONS ::= BEGIN

IMPORTS
    OBJECT-TYPE,
    MODULE-IDENTITY,
    NOTIFICATION-TYPE,
    Unsigned32
        FROM SNMPv2-SMI
 
    RowStatus,
    TruthValue
        FROM SNMPv2-TC

    InetAddress,
    InetAddressType
        FROM INET-ADDRESS-MIB

    MODULE-COMPLIANCE,
    OBJECT-GROUP,
    NOTIFICATION-GROUP
        FROM SNMPv2-CONF

    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB

    ciscoMgmt
        FROM CISCO-SMI;
    
ciscoSysInfoLogMIB MODULE-IDENTITY
    LAST-UPDATED "200508121000Z" 
    ORGANIZATION "Cisco System, 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-lan-switch-snmp@cisco.com"
    DESCRIPTION 
        "This MIB provides the configuration of System Information 
         Logging feature, which allows a certain number of commands
         to be executed periodically via command line interface, 
         and stores the result into a file on a configured server."

    REVISION   "200508121000Z"
    DESCRIPTION
         "Added new value ftp(3) to csilServerProtocol.
          Added new value ftpError(10) to csilServerLastStatus."

    REVISION   "200301241000Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= {ciscoMgmt 330}

ciscoSysInfoLogMIBNotifs   OBJECT IDENTIFIER ::= {ciscoSysInfoLogMIB 0}
ciscoSysInfoLogMIBObjects  OBJECT IDENTIFIER ::= {ciscoSysInfoLogMIB 1}
ciscoSysInfoLogMIBConform  OBJECT IDENTIFIER ::= {ciscoSysInfoLogMIB 2}

csilGlobalConfig  OBJECT IDENTIFIER ::= {ciscoSysInfoLogMIBObjects 1}
csilServerConfig  OBJECT IDENTIFIER ::= {ciscoSysInfoLogMIBObjects 2}
csilCommandConfig OBJECT IDENTIFIER ::= {ciscoSysInfoLogMIBObjects 3}

-- csilGlobalConfig group

csilSysInfoLogEnabled OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Specifies whether System Information Logging has been
         enabled in the system or not."
    ::= {csilGlobalConfig 1}

csilSysInfoLogNotifEnabled OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object controls whether notifications will be generated 
         by system logging process or not."
    ::= {csilGlobalConfig 2}

-- csilServerConfig group

csilMaxServerAllowed OBJECT-TYPE
    SYNTAX      Unsigned32 (0..65535)
    UNITS       "servers"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Specifies the maximum number of entries that can be configured
         in csilServerTable. A value of zero indicates no limit on the
         numbers of  entries in the csilServerTable."
    ::= {csilServerConfig 1}

csilMaxProfilePerServerAllowed OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "profiles"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicates the maximum number of command profiles allowed to
         configure for a logging server. A profile defines a set of 
         commands that will be used for system information logging 
         purpose."
    ::= {csilServerConfig 2}

csilServerTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CsilServerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of servers used to keep the data files for System
         Information Logging purpose."
    ::= {csilServerConfig 3}

csilServerEntry OBJECT-TYPE
    SYNTAX      CsilServerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Information about a server to keep the data file for System
         Information Logging purpose. Entries in this table can be 
         created or deleted using csilServerRowStatus object."
    INDEX {csilServerIndex}
    ::= {csilServerTable 1}

CsilServerEntry ::= SEQUENCE {
   csilServerIndex            Unsigned32,
   csilServerAddressType      InetAddressType,
   csilServerAddress          InetAddress,
   csilServerProfileIndex     Unsigned32,
   csilServerProtocol         INTEGER,
   csilServerInterval         Unsigned32,
   csilServerLoggingFileName  SnmpAdminString,
   csilServerRcpUserName      SnmpAdminString,
   csilServerLastStatus       INTEGER,
   csilServerRowStatus        RowStatus
}

csilServerIndex OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An arbitrary index assigned by the NMS to identify the
         entry. Maximum value of this object is limited by the
         value of csilMaxServerAllowed."
    ::= {csilServerEntry 1}

csilServerAddressType OBJECT-TYPE
    SYNTAX        InetAddressType
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
       "Specifies the type of address used to determine the address
        of the server to be used for logging system information."
    ::= {csilServerEntry 2}

csilServerAddress OBJECT-TYPE
    SYNTAX        InetAddress
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "Specifies the address of the remote host used for logging
         system information."
    ::= {csilServerEntry 3}

csilServerProfileIndex OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "Specifies the profile assigned to this server. A profile is a 
         set of specific commands defined in csilCommandConfigTable, 
         which will be executed in the period specified by the object 
         csilServerInterval for logging system information to the 
         server."
    ::= {csilServerEntry 4}

csilServerProtocol OBJECT-TYPE
    SYNTAX       INTEGER { tftp(1), rcp(2), ftp(3) }
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION 
        "Specifies the file transfer protocol to be used for logging 
         system information.

         - tftp(1): indicates that tftp is used for logging system
                    information.

         - rcp(2):  indicates that rcp is used for logging system
                    information.

         - ftp(3):  indicates that ftp is used for logging system
                    information."
    ::= {csilServerEntry 5}

csilServerRcpUserName OBJECT-TYPE
    SYNTAX       SnmpAdminString
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION 
        "Specifies the remote user name used to download system
         information via RCP protocol. This object must be set when
         csilServerProtocol is set to rcp(2). This object will have
         no effect for protocols other than RCP."
    DEFVAL       { "" }
    ::= {csilServerEntry 6}

csilServerInterval OBJECT-TYPE
    SYNTAX       Unsigned32
    UNITS        "minutes"
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
        "A period of time, measured in unit of minutes. This object
         specifies how often the command set is executed for 
         logging system information."
    DEFVAL       { 1440 }
    ::= {csilServerEntry 7}

csilServerLoggingFileName OBJECT-TYPE
    SYNTAX        SnmpAdminString
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "Specifies the file name used for logging system 
         information."
    ::= {csilServerEntry 8}

csilServerLastStatus OBJECT-TYPE
    SYNTAX        INTEGER {
                    none(1),
                    noLogFile(2),
                    noCommand(3),
                    linkBlock(4),
                    authError(5),
                    addrError(6),
                    copying(7),
                    writeError(8),
                    success(9),
                    ftpError(10)
                  }
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Indicates the status of the last system information 
         logging process into the server. 

           - none(1): initial state. No process has been started.
           - noLogFile(2): there is no log file has been configured.
           - noCommand(3): there is no command has been configured.
           - linkBlock(4): another process might have taken the 
                 rcp or tftp connection at the time the interval
                 is due.
           - authError(5): authentication failed.
           - addrError(6): an error occurs due to the destination
                 address is not reachable.
           - copying(7)  : logging process to destination server is
                 in progress.
           - writeError(8): an error occurs while copying logging
                 information to the server.
           - success(9): logging process completed successfully.
           - ftpError(10): an error occurs during ftp operation."
    ::= {csilServerEntry 9}

csilServerRowStatus OBJECT-TYPE
    SYNTAX        RowStatus
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "This object is used to manage the creation, modification 
         and deletion of rows in the table.

         Except of csilServerRcpUserName, all other objects need to
         be set before csilServerRowStatus can be set to 'active'.
         When this object is set to be 'active', the entry can not be
         modified."
    ::= {csilServerEntry 10}


-- csilCommandConfig group

csilMaxCommandPerProfile OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Specifies the maximum commands allowed in a profile. A
         value of zero indicates no limitation on the number of
         commands allowed in a profile."
    ::= {csilCommandConfig 1}


csilCommandsTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CsilCommandsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A table of commands for System Information Logging 
         purpose."
    ::= {csilCommandConfig 2}

csilCommandsEntry OBJECT-TYPE
    SYNTAX        CsilCommandsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION 
        "An entry contains the command logging information regarding
         a profile and a command index combination. Entries in this 
         table can be created or deleted using csilCommandStatus
         object."
    INDEX {csilCommandProfileIndex,
           csilCommandIndex}
    ::= {csilCommandsTable 1}

CsilCommandsEntry ::= SEQUENCE {
    csilCommandProfileIndex  Unsigned32,
    csilCommandIndex         Unsigned32,
    csilCommandString        SnmpAdminString,
    csilCommandExecOrder     Unsigned32,
    csilCommandStatus        RowStatus
}

csilCommandProfileIndex OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An arbitrary index assigned by NMS to uniquely identify a
         profile. A profile contains a set of commands that will be
         executed periodically for the purpose of logging system 
         information."
    ::= {csilCommandsEntry 1}

csilCommandIndex OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An arbitrary index assigned by NMS, which is combined with 
         the value of csilCommandProfileIndex object to uniquely 
         identify an entry."
    ::= {csilCommandsEntry 2}

csilCommandString OBJECT-TYPE
    SYNTAX        SnmpAdminString  (SIZE (1..255))
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "Specifies the command to be executed."
    ::= {csilCommandsEntry 3}

csilCommandExecOrder OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "Specifies the order in which the command specified in the 
         object csilCommandLog will be executed periodically for
         loging system information. Value of this object need not to
         be consistent as it can be changed during the configuration
         of the command set. Execution order of commands in the
         lower part of the list will be moved up or pushed down when
         a command is removed from or inserted to a position in the
         middle of the list, respectively. For example, there is a 
         list of three commands 'show A', 'show B' and 'show C' with
         the execution orders as 1, 2 and 3 respectively. If 'show
         B' is removed from the list, the execution order of 'show
         C' will be changed from 3 to 2. If 'show D' is added to the
         list with the execution order as 2, the execution order of 
         'show B' and 'show C' will be changed to 3 and 4, 
         respectively.
         
         Execution order of new commands appended to the list must be
         continuous with the execution order of the last existing 
         command on the list, otherwise it will be rejected."
    ::= {csilCommandsEntry 4}
         
csilCommandStatus OBJECT-TYPE
    SYNTAX        RowStatus
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "This object is used to manage the creation, modification and 
         deletion of rows in this table. 

         Value of this object can be set to 'active' only when value of
         other columns have been assigned. The entry may not be 
         modified when value of this object is 'active'."
    ::= {csilCommandsEntry 5}

-- Notification

csilLoggingFailNotif NOTIFICATION-TYPE
    OBJECTS {
         csilServerLastStatus
    }
    STATUS        current
    DESCRIPTION
        "A csilLoggingFailNotif is sent for an unsuccessful system
         information logging process, specifically when value of
         csilServerLastStatus is changed to any one of the failure
         states (2, 3, 4, 5, 6 and 8)."
    ::= {ciscoSysInfoLogMIBNotifs 1} 

------------------------------------------
-- Conformance Information
------------------------------------------
ciscoSysInfoLogMIBCompliances 
                  OBJECT IDENTIFIER ::= {ciscoSysInfoLogMIBConform 1}
ciscoSysInfoLogMIBGroups 
                  OBJECT IDENTIFIER ::= {ciscoSysInfoLogMIBConform 2}

-- Compliance

ciscoSysInfoLogMIBCompliance MODULE-COMPLIANCE
    STATUS     current
    DESCRIPTION
        "The compliance statement for agents which implement
         CISCO-SYS-INFO-LOG-MIB.

         OBJECT  csilMaxServerAllowed
         SYNTAX  Unsigned32(1)
         ACCESS-TYPE  read-only
         DESCRIPTION
             An implementation is only required to support one
             logging server.

         OBJECT  csilServerAddressType
         SYNTAX  InetAddressType (ipv4(1))
         DESCRIPTION
             An implementation is only required to support IPv4
             addresses.

         OBJECT csilMaxCommandPerProfile
         SYNTAX Unsigned32(15)
         ACCESS-TYPE read-only
         DESCRIPTION
             An implementation is only required to support maximum
             15 commands in a profile.

         OBJECT csilCommandString
         SYNTAX SnmpAdminString (SIZE (1..48))
         DESCRIPTION
             An implementation is only required to support commands
             not having more than 48 characters."

    MODULE  -- this module
         MANDATORY-GROUPS {
            csilGlobalConfigGroup,
            csilServerConfigGroup,
            csilCommandConfigGroup
         }

         OBJECT     csilServerRowStatus
         SYNTAX     INTEGER {active(1)}
         MIN-ACCESS read-only
         DESCRIPTION
             "Write access is not required, and only one of the
              six enumerated values for the RowStatus textual
              convention needs to be supported, specifically:
              active(1)."

         GROUP  csilNotifControlGroup
         DESCRIPTION
             "The csilNotifControlGroup is optional."

         GROUP  csilLoggingFailNotifGroup
         DESCRIPTION
             "The csilLoggingFailNotifGroup is optional."

         OBJECT      csilServerInterval
         SYNTAX      Unsigned32 (1..64800)
         MIN-ACCESS  read-only
         DESCRIPTION
             "An implementation is only required to support the
              interval from 1 minute to 45 days."

    ::= {ciscoSysInfoLogMIBCompliances 1}


-- Units of Conformance

csilGlobalConfigGroup  OBJECT-GROUP
    OBJECTS {
          csilSysInfoLogEnabled
   }
   STATUS      current
   DESCRIPTION
       "A collection of objects that provides the global
        configuration for logging system information."
   ::= {ciscoSysInfoLogMIBGroups 1}

csilServerConfigGroup OBJECT-GROUP
   OBJECTS {
          csilMaxServerAllowed,
          csilMaxProfilePerServerAllowed,
          csilServerAddress,
          csilServerAddressType,
          csilServerProfileIndex,
          csilServerProtocol,
          csilServerInterval,
          csilServerLoggingFileName,
          csilServerRcpUserName,
          csilServerLastStatus,
          csilServerRowStatus
    }
    STATUS     current
    DESCRIPTION
        "A collection of objects that provides the status and
         control of logging servers."
    ::= {ciscoSysInfoLogMIBGroups 2}

csilCommandConfigGroup OBJECT-GROUP
   OBJECTS {
          csilMaxCommandPerProfile,
          csilCommandString, 
          csilCommandExecOrder,
          csilCommandStatus
   }
   STATUS     current
   DESCRIPTION
       "A collection of objects that provides the status and
        control of commands used for logging system information."
   ::= {ciscoSysInfoLogMIBGroups 3}

csilNotifControlGroup OBJECT-GROUP
   OBJECTS {
          csilSysInfoLogNotifEnabled
   }
   STATUS     current
   DESCRIPTION
       "A collection of objects that provides the status and
        control of logging process notifications."
   ::= {ciscoSysInfoLogMIBGroups 4}

csilLoggingFailNotifGroup NOTIFICATION-GROUP
   NOTIFICATIONS {
          csilLoggingFailNotif
   }
   STATUS     current
   DESCRIPTION
       "A collection of notifications for supporting system information
        logging feature."
   ::= {ciscoSysInfoLogMIBGroups 5}
END

