UCD-DLMOD-MIB DEFINITIONS ::= BEGIN

-- Why do we have dlmodNextIndex if the dlmodTable is read-write?
-- What exactly is the dlmodName and dlmodPath?
-- Should there not be a timestamp associated with dlmodError?
-- What exactly do the dlmodStatus enumerations mean?

IMPORTS
    OBJECT-TYPE, MODULE-IDENTITY, Integer32	FROM SNMPv2-SMI
    DisplayString				FROM SNMPv2-TC
    ucdExperimental				FROM UCD-SNMP-MIB;

ucdDlmodMIB MODULE-IDENTITY
    LAST-UPDATED "200001260000Z"
    ORGANIZATION "University of California, Davis"
    CONTACT-INFO    
	"This mib is no longer being maintained by the University of
	 California and is now in life-support-mode and being
	 maintained by the net-snmp project.  The best place to write
	 for public questions about the net-snmp-coders mailing list
	 at net-snmp-coders@lists.sourceforge.net.

         postal:   Wes Hardaker
                   P.O. Box 382
                   Davis CA  95617

         email:    net-snmp-coders@lists.sourceforge.net
        "
    DESCRIPTION
	"This file defines the MIB objects for dynamic 
	 loadable MIB modules."

    REVISION	 "200001260000Z"
    DESCRIPTION
	"Renamed MIB root object"

    REVISION	 "9912100000Z"
    DESCRIPTION
	"SMIv2 version converted from older MIB definitions."
    ::= { ucdExperimental 14 }

dlmodNextIndex OBJECT-TYPE 
    SYNTAX	Integer32
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"The index number of next appropiate unassigned entry
	 in the dlmodTable."
    ::= { ucdDlmodMIB 1 }

dlmodTable OBJECT-TYPE 
    SYNTAX	SEQUENCE OF DlmodEntry
    MAX-ACCESS	not-accessible
    STATUS	current
    DESCRIPTION
	"A table of dlmodEntry."
    ::= { ucdDlmodMIB 2 }

dlmodEntry OBJECT-TYPE
    SYNTAX	DlmodEntry
    MAX-ACCESS	not-accessible
    STATUS	current
    DESCRIPTION
	"The parameters of dynamically loaded MIB module."
    INDEX	{ dlmodIndex }
    ::= { dlmodTable 1 }

DlmodEntry ::= SEQUENCE {
    dlmodIndex	Integer32,
    dlmodName	DisplayString,
    dlmodPath	DisplayString,
    dlmodError	DisplayString,
    dlmodStatus	INTEGER
}

dlmodIndex OBJECT-TYPE
    SYNTAX	Integer32 (1..65535)
    MAX-ACCESS	not-accessible
    STATUS	current
    DESCRIPTION
	"An index that uniqely identifies an entry in the dlmodTable."
    ::= { dlmodEntry 1 }

dlmodName OBJECT-TYPE
    SYNTAX	DisplayString
    MAX-ACCESS	read-write
    STATUS	current
    DESCRIPTION
	"The module name."
    ::= { dlmodEntry 2 }

dlmodPath OBJECT-TYPE
    SYNTAX	DisplayString
    MAX-ACCESS	read-write
    STATUS	current
    DESCRIPTION
	"The path of the module executable file."
    ::= { dlmodEntry 3 } 

dlmodError OBJECT-TYPE
    SYNTAX	DisplayString
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
	"The last error from dlmod_load_module."
    ::= { dlmodEntry 4 }

dlmodStatus OBJECT-TYPE
    SYNTAX	INTEGER {
		    loaded(1),
		    unloaded(2),
		    error(3),
		    load(4),
		    unload(5),
		    create(6),
		    delete(7)
		}
    MAX-ACCESS	read-write
    STATUS	current
    DESCRIPTION
	"The current status of the loaded module."
    ::= { dlmodEntry 5 }

END
