SIMPLE-MIB DEFINITIONS ::= BEGIN

------------------------------------------------------------------------
-- Simple example MIB for python-netsnmpagent
-- Copyright (c) 2012-2016 Pieter Hollants <pieter@hollants.com>
-- Licensed under the GNU Lesser Public License (LGPL) version 3
------------------------------------------------------------------------

-- Imports
IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
    Integer32, Unsigned32, Counter32, Counter64, TimeTicks, IpAddress,
    enterprises
        FROM SNMPv2-SMI
    TEXTUAL-CONVENTION, DisplayString
        FROM SNMPv2-TC
    MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
        FROM SNMPv2-CONF
    agentxObjects
        FROM AGENTX-MIB;

-- Description and update information                                                                                                            
simpleMIB MODULE-IDENTITY
    LAST-UPDATED "201307070000Z"
    ORGANIZATION "N/A"
    CONTACT-INFO
        "Editor:
        Pieter Hollants
        EMail: <pieter@hollants.com>"
    DESCRIPTION
        "Simple example MIB for python-netsnmpagent"

    REVISION    "201307070000Z"
    DESCRIPTION
        "A simple example MIB for python-netsnmpagent's simple.py."

    ::= { agentxObjects 30187 }

-- Definition of a generic SimpleNotificationStatus type
SimpleNotificationStatus ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "Indicates the enabling or disabling of a particular class of
        notifications."
    SYNTAX INTEGER {
        disabled (0),   -- This class of notifications is disabled
        enabled  (1)    -- This class of notifications is enabled
}

-- Definition of MIB's root nodes

simpleMIBObjects         OBJECT IDENTIFIER ::= { simpleMIB 1 }
simpleMIBNotifications   OBJECT IDENTIFIER ::= { simpleMIB 2 }
simpleMIBConformance     OBJECT IDENTIFIER ::= { simpleMIB 3 }

simpleScalars            OBJECT IDENTIFIER ::= { simpleMIBObjects 1 }
simpleTables             OBJECT IDENTIFIER ::= { simpleMIBObjects 2 }

------------------------------------------------------------------------
-- Scalars
------------------------------------------------------------------------

simpleUnsigned OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "A read-write, unsigned, 32-bits integer value."
    ::= { simpleScalars 1 }

simpleUnsignedRO OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A read-only, unsigned, 32-bits integer value."
    ::= { simpleScalars 2 }

simpleInteger OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "A read-write, signed, 32-bits integer value."
    ::= { simpleScalars 3 }

simpleIntegerRO OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A read-only, signed, 32-bits integer value."
    ::= { simpleScalars 4 }

simpleCounter32 OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A read-only, unsigned, 32-bits counter value."
    ::= { simpleScalars 5 }

simpleCounter64 OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A read-only, unsigned, 64-bits counter value."
    ::= { simpleScalars 6 }

simpleTimeTicks OBJECT-TYPE
    SYNTAX      TimeTicks
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "A read-only, unsigned, 32-bits TimeTicks value."
    ::= { simpleScalars 7 }

simpleIpAddress OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "A 32-bits IPv4 address."
    ::= { simpleScalars 8 }

SimpleOctetString ::= TEXTUAL-CONVENTION
    DISPLAY-HINT    "1024t"
    STATUS          current
    DESCRIPTION
        "An octet string containing characters in UTF-8 encoding."
    SYNTAX          OCTET STRING (SIZE (1..1024))

simpleOctetString OBJECT-TYPE
    SYNTAX      SimpleOctetString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An UTF-8 encoded string value."
    ::= { simpleScalars 9 }

simpleDisplayString OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An ASCII string value."
    ::= { simpleScalars 10 }

------------------------------------------------------------------------
-- Tables
------------------------------------------------------------------------

firstTableNumber OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of entries in firstTable."
    ::= { simpleTables 1 }

firstTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF FirstTableEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The first simple table"
    ::= { simpleTables 2 }

FirstTableEntry ::=
    SEQUENCE {
        firstTableEntryIndex  DisplayString,
        firstTableEntryDesc   DisplayString,
        firstTableEntryValue  Integer32
    }

firstTableEntry OBJECT-TYPE
    SYNTAX      FirstTableEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A particular firstTable row."
    INDEX { firstTableEntryIndex }
    ::= { firstTable 1 }

firstTableEntryIndex OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index column used to generate string indices into
        firstTable."
    ::= { firstTableEntry 1 }

firstTableEntryDesc OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A firstTableEntry's description."
    ::= { firstTableEntry 2 }

firstTableEntryValue OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A firstTableEntry's value."
    ::= { firstTableEntry 3 }

secondTableNumber OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of entries in secondTable."
    ::= { simpleTables 3 }

secondTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SecondTableEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The second simple table"
    ::= { simpleTables 4 }

SecondTableEntry ::=
    SEQUENCE {
        secondTableEntryIndex  Integer32,
        secondTableEntryDesc   DisplayString,
        secondTableEntryValue  Unsigned32
    }

secondTableEntry OBJECT-TYPE
    SYNTAX      SecondTableEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A particular secondTable row."
    INDEX { secondTableEntryIndex }
    ::= { secondTable 1 }

secondTableEntryIndex OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index column used to generate numerical indices into
        secondTable."
    ::= { secondTableEntry 1 }

secondTableEntryDesc OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An secondTableEntry's description."
    ::= { secondTableEntry 2 }

secondTableEntryValue OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An secondTableEntry's value."
    ::= { secondTableEntry 3 }

thirdTableNumber OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of entries in thirdTable."
    ::= { simpleTables 5 }

thirdTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF FirstTableEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The third simple table"
    ::= { simpleTables 6 }

FirstTableEntry ::=
    SEQUENCE {
        thirdTableEntryIndex  IpAddress,
        thirdTableEntryDesc   DisplayString,
        thirdTableEntryValue  Integer32
    }

thirdTableEntry OBJECT-TYPE
    SYNTAX      FirstTableEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A particular thirdTable row."
    INDEX { thirdTableEntryIndex }
    ::= { thirdTable 1 }

thirdTableEntryIndex OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index column used to generate IpAddress indices into
        thirdTable."
    ::= { thirdTableEntry 1 }

thirdTableEntryDesc OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A thirdTableEntry's description."
    ::= { thirdTableEntry 2 }

thirdTableEntryValue OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A thirdTableEntry's value."
    ::= { thirdTableEntry 3 }

------------------------------------------------------------------------
-- Notifications
------------------------------------------------------------------------

events      OBJECT IDENTIFIER ::= { simpleMIBNotifications 0 }
operation   OBJECT IDENTIFIER ::= { simpleMIBNotifications 1 }

simpleUnsignedROChange NOTIFICATION-TYPE
    OBJECTS {
        simpleUnsignedRO
    }
    STATUS  current
    DESCRIPTION
        "A simpleScalarsChange notification signifies that there has
        been a change to the value of simpleUnsignedRO."
    ::= { events 1 }

firstTableChange NOTIFICATION-TYPE
    OBJECTS {
        firstTableEntryDesc, firstTableEntryValue
    }
    STATUS  current
    DESCRIPTION
        "A firstTableChange notification signifies that there has
        been a change to an firstTableEntry."
    ::= { events 2 }

simpleUnsignedROChangeNotificationsEnabled OBJECT-TYPE
    SYNTAX      SimpleNotificationStatus
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls whether simpleUnsignedROChange notifications are
        enabled or disabled."
    ::= { operation 1 }

firstTableChangeNotificationsEnabled OBJECT-TYPE
    SYNTAX      SimpleNotificationStatus
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls whether firstTableChange notifications are
        enabled or disabled."
    ::= { operation 2 }

------------------------------------------------------------------------
-- Conformance
------------------------------------------------------------------------

simpleMIBGroups      OBJECT IDENTIFIER ::= { simpleMIBConformance 1 }
simpleMIBCompliances OBJECT IDENTIFIER ::= { simpleMIBConformance 2 }

simpleMIBScalarsGroup OBJECT-GROUP
    OBJECTS {
        simpleInteger, simpleIntegerRO,
        simpleUnsigned, simpleUnsignedRO,
        simpleCounter32, simpleCounter64,
        simpleTimeTicks,
        simpleIpAddress,
        simpleOctetString, simpleDisplayString,
        simpleUnsignedROChangeNotificationsEnabled
    }
    STATUS  current
    DESCRIPTION
        "A collection of objects related to simpleScalars."
    ::= { simpleMIBGroups 1 }

simpleMIBTablesGroup OBJECT-GROUP
    OBJECTS {
        firstTableNumber,
        firstTableEntryDesc, firstTableEntryValue,
        firstTableChangeNotificationsEnabled,
        secondTableNumber,
        secondTableEntryDesc, secondTableEntryValue
    }
    STATUS  current
    DESCRIPTION
        "A collection of objects related to simpleTables."
    ::= { simpleMIBGroups 2 }

simpleMIBScalarsNotificationsGroup NOTIFICATION-GROUP
    NOTIFICATIONS {
        simpleUnsignedROChange
    }
    STATUS  current
    DESCRIPTION
        "The notifications which indicate specific changes in
        simpleMIBScalars."
    ::= { simpleMIBGroups 3 }

simpleMIBTablesNotificationsGroup NOTIFICATION-GROUP
    NOTIFICATIONS {
        firstTableChange
    }
    STATUS  current
    DESCRIPTION
        "The notifications which indicate specific changes in
        simpleTables."
    ::= { simpleMIBGroups 4 }

END
