NET-SNMP-EXTEND-MIB DEFINITIONS ::= BEGIN

IMPORTS
    nsExtensions FROM NET-SNMP-AGENT-MIB
    OBJECT-TYPE, MODULE-IDENTITY, Integer32 FROM SNMPv2-SMI
    OBJECT-GROUP FROM SNMPv2-CONF
    DisplayString, RowStatus, StorageType FROM SNMPv2-TC;

netSnmpExtendMIB MODULE-IDENTITY
    LAST-UPDATED "201003170000Z"
    ORGANIZATION "www.net-snmp.org"
    CONTACT-INFO "net-snmp-coders@lists.sourceforge.net"
    DESCRIPTION "Scripted extensions for the Net-SNMP agent."
    REVISION "201003170000Z"
    DESCRIPTION "Corrected nsExtendConfigTable definitions."
    ::= { nsExtensions 1 }

nsExtendObjects OBJECT IDENTIFIER ::= { nsExtensions 2 }
nsExtendGroups  OBJECT IDENTIFIER ::= { nsExtensions 3 }

nsExtendNumEntries OBJECT-TYPE
    SYNTAX INTEGER
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "The number of configured extension rows."
    ::= { nsExtendObjects 1 }

nsExtendConfigTable OBJECT-TYPE
    SYNTAX SEQUENCE OF NsExtendConfigEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "Configuration for scripted extensions."
    ::= { nsExtendObjects 2 }

nsExtendConfigEntry OBJECT-TYPE
    SYNTAX NsExtendConfigEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "One extension configuration row."
    INDEX { nsExtendToken }
    ::= { nsExtendConfigTable 1 }

NsExtendConfigEntry ::= SEQUENCE {
    nsExtendToken       DisplayString,
    nsExtendCommand     DisplayString,
    nsExtendArgs        DisplayString,
    nsExtendInput       DisplayString,
    nsExtendCacheTime   INTEGER,
    nsExtendExecType    INTEGER,
    nsExtendRunType     INTEGER,
    nsExtendStorage     StorageType,
    nsExtendStatus      RowStatus
}

nsExtendToken OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "The extension token."
    ::= { nsExtendConfigEntry 1 }

nsExtendCommand OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "The executable or command."
    ::= { nsExtendConfigEntry 2 }

nsExtendArgs OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "Command-line arguments."
    DEFVAL { ''H }
    ::= { nsExtendConfigEntry 3 }

nsExtendInput OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "Standard input for the command."
    DEFVAL { ''H }
    ::= { nsExtendConfigEntry 4 }

nsExtendCacheTime OBJECT-TYPE
    SYNTAX INTEGER
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "Output cache lifetime in seconds; -1 disables caching."
    DEFVAL { 5 }
    ::= { nsExtendConfigEntry 5 }

nsExtendExecType OBJECT-TYPE
    SYNTAX INTEGER { exec(1), shell(2) }
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "Command invocation mechanism."
    DEFVAL { exec }
    ::= { nsExtendConfigEntry 6 }

nsExtendRunType OBJECT-TYPE
    SYNTAX INTEGER { run-on-read(1), run-on-set(2), run-command(3) }
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "Command invocation condition."
    DEFVAL { run-on-read }
    ::= { nsExtendConfigEntry 7 }

nsExtendStorage OBJECT-TYPE
    SYNTAX StorageType
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "Row storage type."
    DEFVAL { volatile }
    ::= { nsExtendConfigEntry 20 }

nsExtendStatus OBJECT-TYPE
    SYNTAX RowStatus
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "Row status."
    ::= { nsExtendConfigEntry 21 }

nsExtendOutput1Table OBJECT-TYPE
    SYNTAX SEQUENCE OF NsExtendOutput1Entry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "Basic extension output."
    ::= { nsExtendObjects 3 }

nsExtendOutput1Entry OBJECT-TYPE
    SYNTAX NsExtendOutput1Entry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "Basic output for one configured extension."
    AUGMENTS { nsExtendConfigEntry }
    ::= { nsExtendOutput1Table 1 }

NsExtendOutput1Entry ::= SEQUENCE {
    nsExtendOutput1Line DisplayString,
    nsExtendOutputFull  DisplayString,
    nsExtendOutNumLines Integer32,
    nsExtendResult      Integer32
}

nsExtendOutput1Line OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "First output line."
    ::= { nsExtendOutput1Entry 1 }

nsExtendOutputFull OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "Combined command output."
    ::= { nsExtendOutput1Entry 2 }

nsExtendOutNumLines OBJECT-TYPE
    SYNTAX Integer32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "Number of output lines."
    ::= { nsExtendOutput1Entry 3 }

nsExtendResult OBJECT-TYPE
    SYNTAX Integer32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "Command result code."
    ::= { nsExtendOutput1Entry 4 }

nsExtendOutput2Table OBJECT-TYPE
    SYNTAX SEQUENCE OF NsExtendOutput2Entry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "Line-oriented extension output."
    ::= { nsExtendObjects 4 }

nsExtendOutput2Entry OBJECT-TYPE
    SYNTAX NsExtendOutput2Entry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "One output line."
    INDEX { nsExtendToken, nsExtendLineIndex }
    ::= { nsExtendOutput2Table 1 }

NsExtendOutput2Entry ::= SEQUENCE {
    nsExtendLineIndex INTEGER,
    nsExtendOutLine   DisplayString
}

nsExtendLineIndex OBJECT-TYPE
    SYNTAX INTEGER (1..1024)
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "One-based output line index."
    ::= { nsExtendOutput2Entry 1 }

nsExtendOutLine OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "One command output line."
    ::= { nsExtendOutput2Entry 2 }

nsExtendConfigGroup OBJECT-GROUP
    OBJECTS {
        nsExtendCommand, nsExtendArgs, nsExtendInput, nsExtendCacheTime,
        nsExtendExecType, nsExtendRunType, nsExtendStorage, nsExtendStatus,
        nsExtendNumEntries
    }
    STATUS current
    DESCRIPTION "Extension configuration objects."
    ::= { nsExtendGroups 1 }

nsExtendOutputGroup OBJECT-GROUP
    OBJECTS {
        nsExtendOutNumLines, nsExtendResult, nsExtendOutLine,
        nsExtendOutput1Line, nsExtendOutputFull
    }
    STATUS current
    DESCRIPTION "Extension output objects."
    ::= { nsExtendGroups 2 }

END
