-- ********************************************************************** -- -- Name: 3Com WSD Embedded Scripts MIB -- -- Description: -- -- This MIB allows control of an embedded scripting agent in an embedded agent. -- The MIB is not targetted at any specific scripting language or mechanism. -- This module provides two tables. The first allows an application to download -- small scripts to be executed. Other scripts can be stored locally on the -- device. The second (cmd table) is effectively a process table. Each process -- executes a script. -- -- This module replaces 3Com0022. The changes include the addition of error -- codes for executing scripts and the replacement of a script index with a -- name column in the command table. The latter allows a named script to -- be executed, which may exist in some script repository other than the -- macro table in this module. This allows extensions so that some agents -- for example could have local file systems that store a number of scripts. -- -- History Date Reason for Change -- -- 1.00 Issued as 3Com RFC. -- some history was lost -- 1.50 Added Abort and Next to cmdExecOperation -- -- ********************************************************************** -- Copyright (c) 3Com Corporation. All Rights Reserved. -- ********************************************************************** A3COM0048-EMBEDDED-SCRIPTS DEFINITIONS ::= BEGIN IMPORTS rmonExtensions FROM A3COM0004-GENERIC DisplayString FROM RFC1213-MIB OwnerString, EntryStatus FROM RMON-MIB OBJECT-TYPE FROM RFC-1212 ; command OBJECT IDENTIFIER ::= {rmonExtensions 5} cmdMacroTable OBJECT-TYPE SYNTAX SEQUENCE OF CmdMacroEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Extended RMON table that provides a macro execution facility on the remote unit." ::= {command 1} cmdMacroEntry OBJECT-TYPE SYNTAX CmdMacroEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "" INDEX {cmdMacroIndex} ::= {cmdMacroTable 1} CmdMacroEntry ::= SEQUENCE { cmdMacroIndex INTEGER, cmdMacroName DisplayString (SIZE(0..10)), cmdMacroString DisplayString (SIZE(0..255)), cmdMacroOwner OwnerString, cmdMacroStatus EntryStatus } cmdMacroIndex OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS not-accessible STATUS mandatory DESCRIPTION "Standard RMON index column." ::= {cmdMacroEntry 1} cmdMacroName OBJECT-TYPE SYNTAX DisplayString (SIZE(0..10)) ACCESS read-write STATUS mandatory DESCRIPTION "A short text name for this macro. This name can be referenced in the cmdTable to execute a script." ::= {cmdMacroEntry 2} cmdMacroString OBJECT-TYPE SYNTAX DisplayString (SIZE(0..255)) ACCESS read-write STATUS mandatory DESCRIPTION "Text macro that is represented by this control entry." ::= {cmdMacroEntry 3} cmdMacroOwner OBJECT-TYPE SYNTAX OwnerString ACCESS read-write STATUS mandatory DESCRIPTION "RMON Owner of this process." ::= {cmdMacroEntry 4} cmdMacroStatus OBJECT-TYPE SYNTAX EntryStatus ACCESS read-write STATUS mandatory DESCRIPTION "Rmon RowStatus for this macro definition." ::= {cmdMacroEntry 5} cmdExecTable OBJECT-TYPE SYNTAX SEQUENCE OF CmdExecEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Extended RMON table that provides a script execution facility on the remote unit. Note that scripts executed by this table do not have to reside in the macro table. A script is identified by its 'cmdExecMacroName'. The agent will search all available script sources for that named script. The script _may_ be found in the macro table but this is not mandated." ::= {command 2} cmdExecEntry OBJECT-TYPE SYNTAX CmdExecEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "" INDEX {cmdExecUnit, cmdExecIndex} ::= {cmdExecTable 1} CmdExecEntry ::= SEQUENCE { cmdExecUnit INTEGER, cmdExecIndex INTEGER, cmdExecProcessStatus INTEGER, cmdExecStartTime TimeTicks, cmdExecLastExecTime TimeTicks, cmdExecSystemTime TimeTicks, cmdExecStatement INTEGER, cmdExecOperation INTEGER, cmdExecLastError INTEGER, cmdExecOwner OwnerString, cmdExecStatus EntryStatus, cmdExecMacroName DisplayString } cmdExecUnit OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS not-accessible STATUS mandatory DESCRIPTION "Identifies one of a number of different 'execution units'. Genrally each of these is a separate processor in a distributed environment." ::= {cmdExecEntry 1} cmdExecIndex OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS not-accessible STATUS mandatory DESCRIPTION "Standard RMON index column." ::= {cmdExecEntry 2} cmdExecProcessStatus OBJECT-TYPE SYNTAX INTEGER { inactive (1), running (2), suspended (3), dying (4), paused (5), searching (6) } ACCESS read-only STATUS mandatory DESCRIPTION "The current status of this process. The various possible values are described as follows: inactive : This process is not currently executing any script. This is the default state after creating a row in the table. running: The process is currently executing a script, and that script is not currently blocked by any internal asynchronous activity. 'running' actually means that this process is capable of being scheduled and is in a 'ready to run' scheduling queue. suspended: The script being executed by this process is currently blocked waiting for the completion of some asynchronous activity. dying: The script that was being executed by this process has completed and is waiting to be tidied up. When the tidyup has been completed this process will either automatically be destroyed or will enter the 'inactive' state. paused: The script being executed has been manually stopped, generally for debug purposes. A script can enter this state either voluntarily be requesting the system to stop it (ie similar to a breakpoint) or can be paused by writing to the cmdExecOperation variable. searching: When a process is given a script to execute the engine must first find that script. The script is identified by name (spe cified in cmdExecMacroName). The agent must search all possible sources for the script, which may take some time. The MIB allows the script to be specified by any name and so some implementations may allow the name to identify a file on some remote file system, for example by using a URL. While the agent searches for the script the process enters the 'searching' state. If the agent locates the script it will enter the 'running' state. If the script cannot be located then the process re-enters the 'inactive' state." ::= {cmdExecEntry 3} cmdExecStartTime OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory DESCRIPTION "sysUpTime when this process was started." ::= {cmdExecEntry 4} cmdExecLastExecTime OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory DESCRIPTION "sysUpTime when this process last used any processor time." ::= {cmdExecEntry 5} cmdExecSystemTime OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory DESCRIPTION "Number of time-ticks used by this process." ::= {cmdExecEntry 6} cmdExecStatement OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS read-only STATUS mandatory DESCRIPTION "Generally scripts are broken into statements, this is just about true for any scripting mechanism. The statement number is generally useful for debugging. This object reports the current statement that will be executed _next_." ::= {cmdExecEntry 8} cmdExecOperation OBJECT-TYPE SYNTAX INTEGER { none (1), execute (2), suspend (3), continue (4), step (5), kill (6), Abort (7), Next (8) } ACCESS read-write STATUS mandatory DESCRIPTION "This object can be set to cause some action to be applied to a executing process. Note that this variable can only be set if the row- status is valid. Operations are: none - Value returned for _any_ read operation. execute - If the operational state of the macro is 'inactive' then this command will attempt to execute the script named in cmdMacroName. If the process is in any other state this command will be rejected. suspend - This command will suspend the process at the end of the current statement. Command is rejected if the macro is inactive. continue - If a macro is suspended due to a 'suspend' command this will cause it to continue execution from its current point. step - Execute the next statement and then stop. kill - Stop this process from running and put it in the inactive state. Note that this deletes all resource associated with the executing script, but not the process itself. abort - If the current macro status is 'suspended' Will cause it to terminate at its current point. next - Execute the next statement, stepping over child processes." ::= {cmdExecEntry 9} cmdExecLastError OBJECT-TYPE SYNTAX INTEGER { none (1), syntax (2), noResource (3), illegalAssignment (4), blockMismatch (5), badFnParams (6), stackOverflow (7), accessViolation (8), typeMismatch (9), nestTooDeep (10), runTimeError (11), noSuchVar (12), outOfRange (13), illegalLeftVal (14), brokenRemoteProc (15), sourceNotFound (16), missingSemiColon (17), missingEndList (18), missingEndOid (19), missingEndBracket (20), missingEndSubscript (21), missingEndParams (22), invalidQuoteStr (23), invalidGlobalName (24), namedVarNotSupported (25), processKilled (26), childDiedBadly (27), noTargetProcess (28), invalidBinaryImage (29), divideByZero (30), parentDiedPadly (31), nestedErrorHandler (32), rpcTargetDoesnotExist (33), rpcTargetNotSupported (34), assertionFailed (35), missingControlExpression( 36) } ACCESS read-only STATUS mandatory DESCRIPTION "Last error detected by this process or the script executing within the process." ::= {cmdExecEntry 10} cmdExecOwner OBJECT-TYPE SYNTAX OwnerString ACCESS read-write STATUS mandatory DESCRIPTION "RMON Owner of this process." ::= {cmdExecEntry 11} cmdExecStatus OBJECT-TYPE SYNTAX EntryStatus ACCESS read-write STATUS mandatory DESCRIPTION "Rmon RowStatus for this process." ::= {cmdExecEntry 12} cmdExecMacroName OBJECT-TYPE SYNTAX DisplayString ACCESS read-write STATUS mandatory DESCRIPTION "Name of the script to execute in the process. The script can reside in either the macro table in this MIB module, or in some other internal script repository." ::= {cmdExecEntry 13} END