--
-- draft-ietf-syslog-device-mib-01
--
DRAFT-IETF-SYSLOG-DEVICE-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,
              Unsigned32, Counter32, Gauge32, snmpModules
              FROM SNMPv2-SMI
    RowStatus, TEXTUAL-CONVENTION, TimeStamp
              FROM SNMPv2-TC
    InetAddressType, InetAddress
              FROM INET-ADDRESS-MIB
    MODULE-COMPLIANCE, OBJECT-GROUP
              FROM SNMPv2-CONF
    SnmpAdminString
              FROM SNMP-FRAMEWORK-MIB
    rlSyslog
              FROM CISCOSB-MIB;

snmpSyslogDeviceMIB  MODULE-IDENTITY
    LAST-UPDATED "200206061841Z" -- Thu Jun  6 18:41 GMT 2002


    ORGANIZATION "IETF Syslog Working Group"
    CONTACT-INFO
        "        Bruno Pape
         Postal: Enterasys Networks, Inc.
                 35 Industrial Way
                 Rochester, NH 03867
         Tel:    +1 603 337 0446
         Email:  bpape@enterasys.com"

    DESCRIPTION
        "This MIB module defines a portion of the SNMP enterprise
         MIBs pertaining to the configuration and generation of
         Syslog compatible diagnostic messages."

    REVISION "200206061841Z" -- Thu Jun  6 18:41 GMT 2002
    DESCRIPTION
        "The initial version of this MIB module."
    ::= { rlSyslog 1 }

-- -------------------------------------------------------------
-- Textual Conventions
-- -------------------------------------------------------------

SyslogUdpPort  ::=  TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "The UDP port number the syslog device is using to send
         requests to this syslog collector.  514 is the IANA
         assigned port number for syslog."
    SYNTAX      Unsigned32

SyslogFacility  ::=  TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "This textual convention maps out to the facilities
         available for syslog messages.

         The value no-map(24) indicates that the appropriate
         facility will be provided by the individual applications
         on the managed entity.  If this option is not available
         on a particular entity the set of this value will fail
         with an error-status of wrongValue."
    SYNTAX  INTEGER {
                      local0(16),
                      local1(17),
                      local2(18),
                      local3(19),
                      local4(20),
                      local5(21),
                      local6(22),
                      local7(23),
                      no-map(24)
                    }

SyslogSeverity  ::=  TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "This textual convention maps out to the severity levels
         of syslog messages.  The syslog protocol uses the values
         0 (emergency), to 7 (debug)."
    SYNTAX  INTEGER {
                      emergency(0),
                      alert(1),
                      critical(2),
                      error(3),
                      warning(4),
                      notice(5),
                      info(6),
                      debug(7)
                    }

-- -------------------------------------------------------------
-- snmpSyslogDeviceMIB  groupings
-- -------------------------------------------------------------

snmpSyslogDevice          OBJECT IDENTIFIER
                      ::= { snmpSyslogDeviceMIB 1 }

snmpSyslogCollector          OBJECT IDENTIFIER
                      ::= { snmpSyslogDeviceMIB 2 }

snmpSyslogApplication     OBJECT IDENTIFIER
                      ::= { snmpSyslogDeviceMIB 3 }

-- -------------------------------------------------------------
-- snmpSyslogDevice group
-- -------------------------------------------------------------

snmpSyslogDeviceMessages OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of messages successfully delivered to
         the upstream side of the syslog device software
         for processing."
    ::= { snmpSyslogDevice 1 }

snmpSyslogDeviceMessagesDropped OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of messages unable to be queued to
         the downstream side of the syslog device software
         for transmitting."
    ::= { snmpSyslogDevice 2 }

snmpSyslogDeviceLastMessageTime OBJECT-TYPE
    SYNTAX      TimeStamp
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The sysUpTime of the last attempt, successful or
         otherwise, to queue a message to the downstream
         side of the syslog device software."
    ::= { snmpSyslogDevice 3 }

snmpSyslogDeviceControl OBJECT-TYPE
    SYNTAX      BITS  {
        snmpSyslogDeviceControlConsoleLogging(0)
                                -- Log message to the console.
    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "A list of attributes to control the operation of the
         syslog device."
    ::= { snmpSyslogDevice 4 }

-- -------------------------------------------------------------
-- snmpSyslogCollector table group
-- -------------------------------------------------------------

snmpSyslogCollectorMaxEntries OBJECT-TYPE
    SYNTAX      Unsigned32 (1..8)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The maximum number of entries allowed in the
         snmpSyslogCollectorTable."
    ::= { snmpSyslogCollector 1 }

snmpSyslogCollectorNumEntries OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of entries currently in the
         snmpSyslogCollectorTable."
    ::= { snmpSyslogCollector 2 }

snmpSyslogCollectorTableNextAvailableIndex OBJECT-TYPE
    SYNTAX      Unsigned32 (0..8)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the numerically lowest available
         index within this entity, which may be used for the
         value of snmpSyslogCollectorIndex in the creation of a
         new entry in the snmpSyslogCollectorTable.

         An index is considered available if the index value
         falls within the range of 1 to 8 and is not being used
         to index an existing entry in the snmpSyslogCollectorTable
         contained within this entity.

         A value of zero indicates that all of the entries in the
         snmpSyslogCollectorTable are currently in use.

         This value SHOULD only be considered a guideline for
         management creation of snmpSyslogCollectorEntries, there
         is no requirement on management to create entries based
         upon this index value."
    ::= { snmpSyslogCollector 3 }

-- -------------------------------------------------------------
-- snmpSyslogCollector Table
-- -------------------------------------------------------------

snmpSyslogCollectorTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF EtsysSyslogCollectorEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table containing Syslog collector information."
    ::= { snmpSyslogCollector 4 }

snmpSyslogCollectorEntry OBJECT-TYPE
    SYNTAX      EtsysSyslogCollectorEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Defines the information to generate syslog messages to
         an aggregating agent or collector.

         Entries within this table with an access level of read-
         create MUST be considered non-volatile and MUST be
         maintained across entity resets."
    INDEX  { snmpSyslogCollectorIndex }
    ::= { snmpSyslogCollectorTable 1 }

EtsysSyslogCollectorEntry ::=
    SEQUENCE {
        snmpSyslogCollectorIndex
             Unsigned32,
        snmpSyslogCollectorDescription
             SnmpAdminString,
        snmpSyslogCollectorAddressType
             InetAddressType,
        snmpSyslogCollectorAddress
             InetAddress,
        snmpSyslogCollectorUdpPort
             SyslogUdpPort,
        snmpSyslogCollectorFacility
             SyslogFacility,
        snmpSyslogCollectorSeverity
             SyslogSeverity,
        snmpSyslogCollectorMessagesIgnored
             Counter32,
        snmpSyslogCollectorRowStatus
             RowStatus
    }

snmpSyslogCollectorIndex OBJECT-TYPE
    SYNTAX      Unsigned32 (1..8)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique arbitrary identifier for this syslog collector."
    ::= { snmpSyslogCollectorEntry 1 }

snmpSyslogCollectorDescription OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE(1..64))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Administratively assigned textual description of this
         syslog collector."
    ::= { snmpSyslogCollectorEntry 2 }

snmpSyslogCollectorAddressType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The type of Internet address by which the Syslog
         collector is specified in snmpSyslogCollectorAddress.

         Not all address types may be supported."
    ::= { snmpSyslogCollectorEntry 3 }

snmpSyslogCollectorAddress OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The Internet address for the Syslog message collector.

         The use of DNS domain names is discouraged, and agent
         support for them is optional.  Deciding when, and how
         often, to resolve them is an issue.  Not resolving them
         often enough means you might lose synchronization with
         the associated entry in the DNS server, and resolving
         them too often might leave you without access to the
         Syslog collector during critical network events."
    ::= { snmpSyslogCollectorEntry 4 }

snmpSyslogCollectorUdpPort OBJECT-TYPE
    SYNTAX      SyslogUdpPort
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The UDP port number the syslog device is using to send
         requests to this syslog collector.
         If an entity only supports sending messages using a
         single UDP port to all collectors then this may optionally
         be implemented read-only, in which case the current
         value of snmpSyslogCollectorDefaultUdpPort will be used."
    ::= { snmpSyslogCollectorEntry 5 }

snmpSyslogCollectorFacility OBJECT-TYPE
    SYNTAX      SyslogFacility
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The syslog facility (local0-local7) that will be encoded
         in messages sent to this collector.

         If an entity only supports encoding a single facility in
         all messages to all collectors then this may optionally be
         implemented read-only, in which case the current value of
         snmpSyslogCollectorDefaultFacility will be used."
    ::= { snmpSyslogCollectorEntry 6 }


snmpSyslogCollectorSeverity OBJECT-TYPE
    SYNTAX      SyslogSeverity
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The maximum severity level of the messages that SHOULD
         be forwarded to the syslog collector.  The higher the level,
         the lower the severity.

         If an entity only supports filtering based on a single
         severity level for all collectors then this may optionally
         be implemented read-only, in which case the current value
         of snmpSyslogCollectorDefaultSeverity will be used."
    ::= { snmpSyslogCollectorEntry 7 }

snmpSyslogCollectorMessagesIgnored OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This is a count of messages not sent to this collector
         because the severity level of the message was above
         snmpSyslogCollectorSeverity, the higher the level,
         the lower the severity."
    ::= { snmpSyslogCollectorEntry 8 }

snmpSyslogCollectorRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object allows for the dynamic creation and deletion
         of entries within the snmpSyslogCollectorTable as well as
         the activation and deactivation of these entries.

         When this object's value is set to notInService(2) this
         collector will not be sent any messages, nor will any of its
         counters be incremented.

         The agent SHOULD not delete a row, except in the case of
         the loss of persistent storage.

         Refer to the RowStatus convention for further details on
         the behavior of this object."
    REFERENCE
        "RFC2579 (Textual Conventions for SMIv2)"
    ::= { snmpSyslogCollectorEntry 9 }


-- -------------------------------------------------------------
-- The Syslog Collector Defaults
-- -------------------------------------------------------------

snmpSyslogCollectorDefaultUdpPort OBJECT-TYPE
    SYNTAX      SyslogUdpPort
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The default UDP port number that the managed entity is
         using to send syslog messages.

         This value will be used as the default value for
         snmpSyslogCollectorUdpPort when creating rows in the
         snmpSyslogCollectorTable and either:

         1.)  no value is specified for snmpSyslogCollectorUdpPort, or

         2.)  snmpSyslogCollectorUdpPort is implemented read-only.

         If snmpSyslogCollectorUdpPort is implemented read-only,
         and this value is changed, it SHOULD affect the UDP
         port that is used to send syslog messages to all
         collectors as soon as it is practical.

         This parameter value is maintained across system reboots."
    DEFVAL  {514}
    ::= { snmpSyslogCollector 5 }

snmpSyslogCollectorDefaultFacility OBJECT-TYPE
    SYNTAX      SyslogFacility
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The default syslog facility (local0-local7) that will be
         encoded in syslog messages.

         This value will be used as the default value for
         snmpSyslogCollectorFacility when creating rows in the
         snmpSyslogCollectorTable and either:

         1.)  no value is specified for snmpSyslogCollectorFacility, or

         2.)  snmpSyslogCollectorFacility is implemented read-only.

         If snmpSyslogCollectorFacility is implemented read-only,
         and this value is changed, it SHOULD affect the syslog
         facility that is encoded in all syslog messages as soon
         as it is practical.

         This parameter value is maintained across system reboots."
    DEFVAL  {local7}
    ::= { snmpSyslogCollector 6 }

snmpSyslogCollectorDefaultSeverity OBJECT-TYPE
    SYNTAX      SyslogSeverity
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The default syslog message severity level that will be used
         to filter all syslog messages.

         This value will be used as the default value for
         snmpSyslogCollectorSeverity when creating rows in the
         snmpSyslogCollectorTable and either:

         1.)  no value is specified for snmpSyslogCollectorSeverity, or
         2.)  snmpSyslogCollectorSeverity is implemented read-only.

         The higher the severity level, the less critical it is.

         If snmpSyslogCollectorSeverity is implemented read-only,
         and this value is changed, it SHOULD affect the syslog
         message severity level that will be used to filter all
         syslog messages as soon as it is practical.

         This parameter value is maintained across system reboots."
    DEFVAL  {error}
    ::= { snmpSyslogCollector 7 }

-- -------------------------------------------------------------
-- snmpSyslogApplication group
-- -------------------------------------------------------------

snmpSyslogApplicationTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF EtsysSyslogApplicationEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
         "This is a table of applications on the managed entity
          that provide individual control over the severity level
          of the messages that they will generate."
    ::= { snmpSyslogApplication 1 }

snmpSyslogApplicationEntry OBJECT-TYPE
    SYNTAX      EtsysSyslogApplicationEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An individual application that provides that ability
         to control the messages that it generates based on a
         severity level.

         MUST be considered non-volatile and MUST be maintained
         across entity resets."
    INDEX    { snmpSyslogApplicationIndex }
    ::= { snmpSyslogApplicationTable 1 }

EtsysSyslogApplicationEntry ::=
    SEQUENCE {
        snmpSyslogApplicationIndex
             Unsigned32,
        snmpSyslogApplicationDescription
             SnmpAdminString,
        snmpSyslogApplicationMnemonic
             SnmpAdminString,
        snmpSyslogApplicationSeverity
             SyslogSeverity
    }

snmpSyslogApplicationIndex OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique arbitrary identifier for this application."
    ::= { snmpSyslogApplicationEntry 1 }

snmpSyslogApplicationDescription OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE(1..64))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Textual description of this application, assigned by
         the managed entity."
    ::= { snmpSyslogApplicationEntry 2 }

snmpSyslogApplicationMnemonic OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE(1..8))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An abbreviation of the textual description for this
         application, assigned by the managed entity.

         i.e. 'STP' for 'Spanning Tree Protocol', etc.

         This provides a mapping between the textual descriptions
         and the mnemonics used in the syslog messages."
    ::= { snmpSyslogApplicationEntry 3 }

snmpSyslogApplicationSeverity OBJECT-TYPE
    SYNTAX      SyslogSeverity
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The maximum severity level of the messages from this
         application that SHOULD be forwarded to the syslog
         device software for processing.

         The higher the severity level, the more verbose the
         messages."
    DEFVAL  {error}
    ::= { snmpSyslogApplicationEntry 4 }

-- -------------------------------------------------------------
-- Conformance Information
-- -------------------------------------------------------------

snmpSyslogDeviceConformance OBJECT IDENTIFIER
                          ::= { snmpSyslogDeviceMIB 4 }

snmpSyslogDeviceGroups OBJECT IDENTIFIER
                          ::= { snmpSyslogDeviceConformance 1 }

snmpSyslogDeviceCompliances OBJECT IDENTIFIER
                          ::= { snmpSyslogDeviceConformance 2 }

-- -------------------------------------------------------------
-- units of conformance
-- -------------------------------------------------------------

snmpSyslogDeviceGroup OBJECT-GROUP
    OBJECTS {
                snmpSyslogDeviceMessages,
                snmpSyslogDeviceMessagesDropped,
                snmpSyslogDeviceLastMessageTime,
                snmpSyslogDeviceControl
            }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing syslog message
         statistics."
    ::= { snmpSyslogDeviceGroups 1}

snmpSyslogCollectorGroup OBJECT-GROUP
    OBJECTS {
                snmpSyslogCollectorMaxEntries,
                snmpSyslogCollectorNumEntries,
                snmpSyslogCollectorTableNextAvailableIndex,
                snmpSyslogCollectorDescription,
                snmpSyslogCollectorAddressType,
                snmpSyslogCollectorAddress,
                snmpSyslogCollectorUdpPort,
                snmpSyslogCollectorFacility,
                snmpSyslogCollectorSeverity,
                snmpSyslogCollectorMessagesIgnored,
                snmpSyslogCollectorRowStatus
            }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing descriptions of
         syslog collectors for sending system messages to."
    ::= { snmpSyslogDeviceGroups 2}

snmpSyslogApplicationGroup OBJECT-GROUP
    OBJECTS {
                snmpSyslogApplicationDescription,
                snmpSyslogApplicationMnemonic,
                snmpSyslogApplicationSeverity
            }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing a mechanism to
         control the severity level of the messages individual
         application may generate."
    ::= { snmpSyslogDeviceGroups 3}

snmpSyslogCollectorDefaultsGroup OBJECT-GROUP
    OBJECTS {
                snmpSyslogCollectorDefaultUdpPort,
                snmpSyslogCollectorDefaultFacility,
                snmpSyslogCollectorDefaultSeverity
            }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing default values for
         the syslog collectors that can optionally be overridden
         on a per collector basis with snmpSyslogCollectorFacility,
         snmpSyslogCollectorSeverity, or snmpSyslogCollectorUdpPort."
    ::= { snmpSyslogDeviceGroups 4}

-- -------------------------------------------------------------
-- compliance statements
-- -------------------------------------------------------------

snmpSyslogDeviceCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
        "The compliance statement for devices that support sending
         system messages to a syslog collector."
    MODULE -- this module
    MANDATORY-GROUPS {
        snmpSyslogDeviceGroup,
        snmpSyslogCollectorGroup,
        snmpSyslogCollectorDefaultsGroup
    }

    GROUP       snmpSyslogApplicationGroup
    DESCRIPTION
        "The snmpSyslogApplication group is mandatory only for
         agents which support configuring the severity level of
         the messages that individual applications may generate."

    OBJECT      snmpSyslogCollectorUdpPort
    MIN-ACCESS  read-only
    DESCRIPTION
        "Write access is not required for implementations that
         do not support configuring the UDP port number on a
         per collector basis."

    OBJECT      snmpSyslogCollectorFacility
    MIN-ACCESS  read-only
    DESCRIPTION
        "Write access is not required for implementations that
         do not support configuring the syslog facility on a
         per collector basis."

    OBJECT      snmpSyslogCollectorSeverity
    MIN-ACCESS  read-only
    DESCRIPTION
        "Write access is not required for implementations that
         do not support configuring the message severity level
         on a per collector basis."

    OBJECT      snmpSyslogCollectorDefaultUdpPort
    MIN-ACCESS  read-only
    DESCRIPTION
        "Write access is not required for implementations that
         do not support configuring the UDP port number at all,
         or do not want to support a configurable default.
         Hopefully, it is only the later."

    OBJECT      snmpSyslogCollectorDefaultFacility
    MIN-ACCESS  read-only
    DESCRIPTION
        "Write access is not required for implementations that
         do not support configuring the syslog facility at all,
         or do not want to support a configurable default.
         Hopefully, it is only the later."
    OBJECT      snmpSyslogCollectorDefaultSeverity
    MIN-ACCESS  read-only
    DESCRIPTION
        "Write access is not required for implementations that
         do not support configuring the syslog facility at all,
         or do not want to support a configurable default.
         Hopefully, it is only the later."

    ::= { snmpSyslogDeviceCompliances 1 }

END

