You can download offline version here here.
Introduction
In many parts of the system, fine tuning can be done by using NetXMS built-in scripting language called NXSL (stands for NetXMS Scripting Language). NXSL was designed specifically to be used as embedded scripting language within NetXMS, and because of this has some specific features and limitations. Most notable is very limited access to data outside script boundaries – for example, from NXSL script you cannot access files on server, nor call external programs, nor even access data of the node object other than script is running for without explicit permission. NXSL is interpreted language – scripts first compiled into internal representation (similar to byte code in Java), which than executed inside NXSL VM.
Script security
Because NXSL provides functions for searching objects, and because all scripts are executed on management server, user with write access to only one node can potentially acquire information about nodes to which he normally does not have access. For example, without additional security checks user with write access to node A
and no access to node B
can create transformation script for DCI on node A
and use FindNodeObject function to access node B
and get information about it, thus breaking security settings.
To prevent such scenario, all NXSL functions capable of accessing NetXMS objects requires "current node" object to be provided. Reference to object being searched will only be returned if node object supplied as "current node" is in trusted nodes list of target object. For example, if variable $node
in script refers to NODE1
, and FindNodeObject($node, "NODE2")
called, NODE1
must be added to list of trusted nodes for NODE2
. In most places (transformation script, event processing policy, etc.) predefined variable $node
exists, which refers to node object on behalf of which script is being executed. It will be event source for event processing policy script, DCI owner for transformation script, and so on.
For environments where such strict security checks are not required (for example, all users have read access to all nodes), they can be disabled to simplify configuration. Enforcement of trusted nodes checking controlled by server’s configuration variable CheckTrustedNodes
. By default it is set to 1
and check of trusted nodes is enforced. To disable it, server’s configuration variable CheckTrustedNodes
must be set to 0
. The server restart is required to make this change effective.
Tutorial
Built-in Types
The following sections describe the standard types that are built into the interpreter.
The principal built-in types are numerics, sequences, mappings, classes, and instances.
Truth Value Testing
Any object can be tested for truth value, for use in an if or while condition or as operand of the Boolean operations below. The following values are considered false:
None
False
zero of any numeric type, for example, 0, 0.0, 0j.
any empty sequence, for example, '', (), [].
any empty mapping, for example, {}.
instances of user-defined classes, if the class defines a bool() or len() method, when that method returns the integer zero or bool value False. [1]
All other values are considered true — so objects of many types are always true.
Operations and built-in functions that have a Boolean result always return 0 or False for false and 1 or True for true, unless otherwise stated. (Important exception: the Boolean operations or and and always return one of their operands.)
Function Reference
String functions
ArrayToString()
ArrayToString() => void
…
chr()
chr() => void
…
d2x()
d2x(number, padding=0) => String
Convert decimal devValue
to hex string with optional left-padding with zeroes.
number |
Input value. |
padding |
Optional argument specifying target string length. |
Hex string.
>>> d2x(1234) 4D2 >>> d2x(1234, 8) 000004D2
format()
format() => void
…
index()
index() => void
…
inList()
inList(string, separator, token) => Boolean
Split input string
by separator
into elements and compare each element with token
.
string |
Input string. |
separator |
Elements separator. |
token |
Pattern to compare with. |
True
if token is found in input string.
>>> inList("1,2,3", ",", "1") true >>> inList("ab|cd|ef", "|", "test") false
left()
left() => void
…
length()
length() => void
…
lower()
lower() => void
…
ltrim()
ltrim() => void
…
ord()
ord() => void
…
right()
right() => void
…
rindex()
rindex() => void
…
rtrim()
rtrim() => void
…
SplitString()
SplitString() => void
…
substr()
substr() => void
…
trim()
trim() => void
…
upper()
upper() => void
…
x2d()
x2d(hexValue) => Integer
Convert hexadecimal string to decimal value.
hexValue |
Input value. |
Converted value.
>>> x2d("4D2") 1234
Math functions
abs()
abs(number) => Number
Returns the absolute value of the number.
number |
Input value. |
Absolue value of the input.
>>> abs(12.3) 12.3 >>> abs(-0.307) 0.307
acos()
acos() => void
…
asin()
asin() => void
…
ceil()
ceil(input) => Integer
Round up value.
input |
Input value. |
Value round up to nearest integer.
>>> ceil(2.3) 3.0 >>> ceil(3.8) 4.0 >>> ceil(-2.3) -2.0 >>> ceil(-3.8) -3.0
cos()
cos() => void
…
cosh()
cosh() => void
…
exp()
exp(input) => Float
Computes e**x
, the base-e exponential.
input |
Input number. |
>>> exp(2) 7.3890561
floor()
floor(input) => Integer
Round down value.
input |
Input value. |
Value round down to nearest integer.
>>> floor(2.3) 2 >>> floor(3.8) 3 >>> floor(-2.3) -3 >>> floor(-3.8) -4
log()
log() => void
…
log10()
log10() => void
…
max()
max() => void
…
min()
min() => void
…
pow()
pow() => void
…
round()
round() => void
…
sin()
sin() => void
…
sinh()
sinh() => void
…
tan()
tan() => void
…
tanh()
tanh() => void
…
Time related functions
gmtime()
gmtime() => void
…
localtime()
localtime() => void
…
mktime()
mktime() => void
…
strftime()
strftime() => void
…
time()
time() => void
…
Object functions
CreateContainer()
CreateContainer() => void
AF_ENABLE_NXSL_CONTAINER_FUNCS
…
CreateNode()
CreateNode() => void
AF_ENABLE_NXSL_CONTAINER_FUNCS
…
RenameObject()
RenameObject() => void
…
DeleteObject()
DeleteObject() => void
AF_ENABLE_NXSL_CONTAINER_FUNCS
…
ManageObject()
ManageObject() => void
…
UnmanageObject()
UnmanageObject() => void
…
Finding objects
GetAllNodes()
GetAllNodes() => void
…
FindObject()
FindObject() => void
…
FindNodeObject()
FindNodeObject(currentNode, key) => Node
Look up Node object by the key
(either string name or integer id) or return null
if not found.
Unless trusted node validation is disabled, currentNode
should be set to current context node (predefined variable $node
in most cases).
If validation is disabled, currentNode
is ignored and can be set to null
.
currentNode |
Lookup context or |
key |
Object name of id. |
Instance of Node object or null
if not found or not accessible.
>>> FindNodeObject($node, "server.netxms.org") object >>> FindNodeObject(null, 12) object >>> FindNodeObject($node, "bad_node_name") NULL
GetObjectParents()
GetObjectParents(object) => Array
Return array of object parents.
object |
Target object. |
Array of NetObj instances.
GetNodeParents()
GetNodeParents() => void
…
GetObjectChildren()
GetObjectChildren(object) => Array
Return array of child objects for the object.
object |
Target object. |
Array of NetObj instances.
GetNodeTemplates()
GetNodeTemplates() => void
…
Binding objects to containers
BindObject()
BindObject() => void
AF_ENABLE_NXSL_CONTAINER_FUNCS
…
UnbindObject()
UnbindObject() => void
AF_ENABLE_NXSL_CONTAINER_FUNCS
…
Interfaces
GetInterfaceName()
GetInterfaceName() => void
…
GetInterfaceObject()
GetInterfaceObject() => void
…
GetNodeInterfaces()
GetNodeInterfaces() => void
…
SetInterfaceExpectedState()
SetInterfaceExpectedState() => void
…
Custom attributes
GetCustomAttribute()
GetCustomAttribute(object, name) => String
Lookup custom attribute of the object.
Alternatively, attributes can be accessed as instance attribues (with →
, attribute should exist) or by using attribute@object
notion (which will return null
instead of runtime error if attribue is missing).
object |
Object to query. |
name |
Name of the custom attribute. |
String value of the custom attribute of null
if not found.
>>> GetCustomAttribute($node, "test") testvalue >>> $node->test testvalue >>> test@$node testvalue
SetCustomAttribute()
SetCustomAttribute(object, name, value) => void
Set custom attribute name
to value
on object
.
object |
Target object. |
name |
Custom attribute name. |
value |
Custom attribute value. |
>>> SetCustomAttribute($node, "test", "test value") >>> test@$node test value
DeleteCustomAttribute()
DeleteCustomAttribute(object, name) => void
Delete custom attribute name
from object
.
object |
Target object. |
name |
Name of the custom attribute. |
Maintenance mode
EnterMaintenance()
EnterMaintenance() => void
…
LeaveMaintenance()
LeaveMaintenance() => void
…
Data Collection
CreateDCI()
CreateDCI(node, origin, name, description, dataType, pollingInterval, retentionTime) => DCI
node |
Node object instance (e.g. |
origin |
data origin, supported values:
|
name |
name of the metric (e.g. "Agent.Version") |
description |
human readable description. |
dataType |
type of the collected data, supported values:
|
pollingInterval |
polling interval in seconds or |
retentionTime |
retention time in days or |
Instance of newly created DCI of null
if failed.
>>> d = CreateDCI($node, "agent", "Agent.Version", "Agent Version", "string", 0, 0); >>> println(d->id); 145
FindAllDCIs()
FindAllDCIs(node, nameFilter, descriptionFilter) => Array
Find all DCI on the node
matching nameFilter
and descriptionFilter
. Filter can contain glob symbols "?" and "*". If filter is null
, it’s ignored.
node |
Node object instance (e.g. |
nameFilter |
GLOB for mastching DCI name or |
descriptionFilter |
GLOB for mastching DCI description or |
Array of DCI.
>>> list = FindAllDCIs($node, "Server*", "*MAIN*");
>>> foreach (row : list) {
>>> println(row->id . ": " . row->description . " (" . row->name . ")");
>>> }
91: Server thread pool MAIN: usage (Server.ThreadPool.Usage(MAIN))
92: Server thread pool MAIN: normalized load average (1 minute) (Server.ThreadPool.LoadAverage(MAIN,1))
93: Server thread pool MAIN: current load (Server.ThreadPool.Load(MAIN))
>>> list = FindAllDCIs($node, "Server*");
>>> foreach (row : list) {
>>> println(row->id . ": " . row->description . " (" . row->name . ")");
>>> }
100: NetXMS server: database writer's request queue (other queries) (Server.AverageDBWriterQueueSize.Other)
101: NetXMS server: database writer's request queue (Server.AverageDBWriterQueueSize)
103: NetXMS server: data collector's request queue (Server.AverageDataCollectorQueueSize)
…
>>> list = FindAllDCIs($node, null, "*load average*");
>>> foreach (row : list) {
>>> println(row->id . ": " . row->description . " (" . row->name . ")");
>>> }
119: CPU: load average (15 minutes) (System.CPU.LoadAvg15)
123: CPU: load average (5 minutes) (System.CPU.LoadAvg5)
83: Server thread pool AGENT: normalized load average (1 minute) (Server.ThreadPool.LoadAverage(AGENT,1))
…
FindDCIByDescription()
FindDCIByDescription(node, description) => Integer
Find ID of the DCI on node by description (exact match). FindAllDCIs() can be used for pattern search.
node |
Node object instance (e.g. |
description |
Description of the DCI |
Integer ID of the DCI or null
if not found.
>>> d = FindDCIByDescription($node, "Agent Version"); >>> print(d); 144
FindDCIByName()
FindDCIByName(node, dciName) => Integer
Find ID of the DCI on node by name (exact match). FindAllDCIs() can be used for pattern search.
node |
Node object instance (e.g. |
dciName |
Name of the DCI |
Integer ID of the DCI or null
if not found.
>>> d = FindDCIByName($node, "Agent.Version"); >>> print(d); 144
GetAvgDCIValue()
GetAvgDCIValue(object, dciId, periodStart, periodEnd) => Number
Get the average value of the DCI for the given period. The DCI value type must be numeric.
object |
Instance of Node, Cluster, or MobileDevice object (e.g. |
dciId |
ID of the DCI to retrive. |
periodStart |
Unix timestamp of the period start. |
periodEnd |
Unix timestamp of the period end. |
Average value or null
on failure.
>>> obj = FindObject("Server1"); >>> dciID = FindDCIByName(obj, "CPU.Usage") >>> val = GetAvgDCIValue(obj, dciId, 0, time()); // time range from January 1, 1970 untill now >>> println("Average CPU Usage: ". val . "%"); Average CPU Usage: 17%
GetDCIValue()
GetDCIValue(node, dciId) => String or Table
Get last collected value of the DCI.
Return null
on error, Table instance for table DCI or String otherwise.
node |
Node object instance (e.g. |
Table for table DCIs, String, or null
if failed or no data is available.
>>> GetDCIValue($node, FindDCIByName($node, "Status")) 0 >>> GetDCIValue($node, FindDCIByName($node, "Non-Existing")) null
GetDCIValueByDescription()
GetDCIValueByDescription() => Boolean
…
node |
Node object instance (e.g. ) |
GetDCIValueByName()
GetDCIValueByName() => Boolean
…
node |
Node object instance (e.g. ) |
Agent related functions
AgentExecuteAction()
AgentExecuteAction(node, actionName, …) => Boolean
Execute agent action on given node. Optional arguments starting from 3rd are passed as action arguments to the agent.
node |
Node object instance (e.g. |
actionName |
Name of the action to be executed |
… |
Optional arguments for action |
Boolean indicator of success
>>> AgentExecuteAction($node, "System.Restart"); true >>> AgentExecuteAction($node, "Custom.RestartService", "jetty9"); true >>> AgentExecuteAction($node, "nonexisting action"); false
AgentExecuteActionWithOutput()
AgentExecuteActionWithOutput(node, actionName, …) => String
Execute agent action on given node and collect standard output of the application defined by action. Optional arguments starting from 3rd are passed as action arguments to the agent.
node |
Node object instance (e.g. |
actionName |
Name of the action to be executed |
… |
Optional arguments for action |
Output of the action or null
if execution failed.
>>> AgentExecuteActionWithOutput($node, "Custom.Ping", "10.10.8.16"); PING 10.10.8.16 (10.10.8.16): 56 data bytes 64 bytes from 10.10.8.16: icmp_seq=0 ttl=64 time=0.084 ms 64 bytes from 10.10.8.16: icmp_seq=1 ttl=64 time=0.120 ms 64 bytes from 10.10.8.16: icmp_seq=2 ttl=64 time=0.121 ms
AgentReadList()
AgentReadList(node, name) => Array
Request list metric directly from agent on given node.
node |
Node object instance (e.g. |
name |
List name |
Array of strings or null
if failed.
>>> supportedLists = AgentReadList($node, "Agent.SupportedLists"); >>> foreach (l : supportedLists) { println(l); } Agent.ActionList Agent.SubAgentList Agent.SupportedLists Agent.SupportedParameters Agent.SupportedPushParameters …
AgentReadParameter()
AgentReadParameter(node, name) => String
Request metric directly from agent on given node.
node |
Node object instance (e.g. |
name |
Metric name |
String value or null
if failed.
>>> v = AgentReadParameter($node, "Agent.Version") >>> println(v) 2.2.13
AgentReadTable()
AgentReadTable(node, name) => Table
Request table metric directly from agent on given node.
node |
Node object instance (e.g. |
name |
List name |
Instance of Table or null
if failed.
>>> t = AgentReadTable($node, "Agent.SubAgents"); >>> foreach (c : t->columns) { >>> print(c->name . " | "); >>> } >>> println(""); >>> foreach (row : t->rows) { >>> foreach(cell : row->values) { >>> print(cell . " | "); >>> } >>> println(""); >>> } NAME | VERSION | FILE | Darwin | 2.2.13 | darwin.nsm | FILEMGR | 2.2.13-3-g4c02b65c50 | filemgr.nsm | PING | 2.2.13-3-g4c02b65c50 | ping.nsm |
Alarm functions
FindAlarmById()
FindAlarmById() => void
…
FindAlarmByKey()
FindAlarmByKey() => void
…
FindAlarmByKeyRegex()
FindAlarmByKeyRegex() => void
…
Events
GetEventParameter()
GetEventParameter() => void
…
SetEventParameter()
SetEventParameter() => void
…
PostEvent()
PostEvent() => void
…
Miscelanious functions
_exit()
_exit(exitCode=0) => void
Stop script execution and return exitCode
.
exitCode |
Optional exit code for the script. Defaults to |
AddrInRange()
AddrInRange() => void
…
AddrInSubnet()
AddrInSubnet() => void
…
assert()
assert() => void
…
classof()
classof(instance) => String
Return class name of the instance
.
instance |
Instance of any class. |
Class name.
>>> classof($node) Node
CountryAlphaCode()
CountryAlphaCode(code) => String
Lookup country alpha code by numeric or alpha3 code.
code |
Numeric (3 digits) or 3-letter country code. |
Two letter country code or null
if country not found.
>>> CountryAlphaCode('020') AN >>> CountryAlphaCode('AND') AN >>> CountryAlphaCode('124') CA
CountryName()
CountryName() => void
…
CountScheduledTasksByKey()
CountScheduledTasksByKey() => void
…
CurrencyAlphaCode()
CurrencyAlphaCode() => void
…
CurrencyExponent()
CurrencyExponent() => void
…
CurrencyName()
CurrencyName() => void
…
DriverReadParameter()
DriverReadParameter() => void
…
EventCodeFromName()
EventCodeFromName() => void
…
EventNameFromCode()
EventNameFromCode() => void
…
GetConfigurationVariable()
GetConfigurationVariable(key, defaultValue=null) => void
Read server configuration parameter by key
.
key |
Configuration parameter name to lookup. |
defaultValue |
Optional argument with default value if key is not found. |
Value of the server configuration parameter. If key is not found, null
is returned or defaultValue
is specified.
>>> GetConfigurationVariable("NumberOfStatusPollers") 10 >>> GetConfigurationVariable("BadVariable") NULL >>> GetConfigurationVariable("BadVariable", 22) 22
gethostbyaddr()
gethostbyaddr() => void
…
gethostbyname()
gethostbyname() => void
…
GetSyslogRuleCheckCount()
GetSyslogRuleCheckCount() => void
…
GetSyslogRuleMatchCount()
GetSyslogRuleMatchCount() => void
…
map()
map(table, key, default=null) => String
Lookup value from mapping table.
table |
Lookup value from mapping table. |
key |
String key to lookup. |
default |
Optional default value. |
When key or table is not found, return null
or default value if provided.
mapList()
mapList(table, list, separator, default) => String
Lookup multiple keys (separated by user-defined separator) from mapping table. Result string is joined using the same separator.
table |
name or ID of the mapping table. |
list |
string of keys separated by |
separator |
separator used to split |
>>> mapList("table1", "10,20,30", ",") value1,value2,value3
random()
random() => void
…
ReadPersistentStorage()
ReadPersistentStorage(key) => String
Read value from global persistent key-value storage.
key |
String record key to lookup. |
Value referenced by key
or null
if key not exist.
>>> ReadPersistentStorage("key1") value1 >>> ReadPersistentStorage("key2") null >>> WritePersistentStorage("key2", "value2") >>> ReadPersistentStorage("key2") value2
SecondsToUptime()
SecondsToUptime() => void
…
sleep()
sleep() => void
…
sys()
sys() => void
…
trace()
trace(debugLevel, message) => void
Writes message
to NetXMS main log if current debug level is equal or higher than debugLevel
.
debugLevel |
Target debug level. |
message |
String to be written. |
>>> trace(0, "Test");
typeof()
typeof(instance) => string
Return type of the instance
.
instance |
Instance of the object or primitive. |
Name of the type.
>>> typeof(1) int32 >>> typeof(1L) int64 >>> typeof(%(1, 2, 3)) array >>> typeof(new Table()) object >>> typeof(null) null
WritePersistentStorage()
WritePersistentStorage(key, value) => void
Create or update value in global persistent key-value store.
key |
String key. |
value |
String value to be saved. |
>>> WritePersistentStorage("key1", "value1") >>> ReadPersistentStorage("key1") value1
weierstrass()
weierstrass() => void
…
Situations
FindSituation()
FindSituation() => void
…
GetSituationAttribute()
GetSituationAttribute() => void
…
Hashes and encoding
Base64Decode()
Base64Decode() => void
…
Base64Encode()
Base64Encode() => void
…
md5()
md5() => void
…
sha1()
sha1() => void
…
sha256()
sha256() => void
…
SNMP functions
CreateSNMPTransport()
CreateSNMPTransport(node) => SNMP_Transport
Create SNMP transport with communication settings defined on the node.
node |
Target node. |
Instance of SNMP_Transport or null
if failed.
>>> transport = CreateSNMPTransport(FindObject("Server1")) >>> print transport->snmpVersion 2c
SNMPGet()
SNMPGet(transport, oid) => SNMP_VarBind
Perform SNMP GET request for oid
over provided transport.
transport |
Transport created by CreateSNMPTransport(). |
oid |
SNMP OID string. |
Instance of SNMP_VarBind or null
on failure.
>>> transport = CreateSNMPTransport(FindObject("Server1")); >>> if (transport != null) { >>> oid = ".1.3.6.1.2.1.25.1.6.0"; // number of running processes >>> varbind = SNMPGet(transport, oid); >>> if (varbind != null) { >>> trace(1, varbind->name . "=" . varbind->value); >>> } >>> else { >>> trace(0, "SNMPGet() failed"); >>> } >>> }
SNMPGetValue()
SNMPGetValue(transport, oid) => String
Perform SNMP GET request for oid
over provided transport and return single string value instead of varbind.
This function is a wrapper for SNMPGet().
transport |
Transport created by CreateSNMPTransport(). |
oid |
SNMP OID string. |
String value of the result or null
on failure.
>>> transport = CreateSNMPTransport(FindObject("Server1")); >>> if (transport != null) { >>> oid = ".1.3.6.1.2.1.25.1.6.0"; // number of running processes >>> value = SNMPGetValue(transport, oid); >>> if (value != null) { >>> trace(1, value); >>> } >>> else { >>> trace(0, "SNMPGetValue() failed"); >>> } >>> }
SNMPSet()
SNMPSet(transport, oid, value, dataType) => Boolean
Perform SNMP SET request for oid
over provided transport. Return boolean success indicator.
value
is automatically converted from string based in dataType
. If dataType
is not provided, default type "STRING" will be used.
transport |
Transport created by CreateSNMPTransport(). |
oid |
SNMP OID string. |
value |
New value. |
dataType |
Type of the
|
>>> if (!SNMPSet(transport, oid, "192.168.0.1", "IPADDR") { >>> trace(1, "SNMPSet failed"); >>> }
SNMPWalk()
SNMPWalk(transport, oid) => Array
Perform SNMP WALK request for oid
over provided transport and return collected values as array of SNMP_VarBind or null
on failure.
transport |
Transport created by CreateSNMPTransport(). |
oid |
SNMP OID string. |
Array of SNMP_VarBind or null
or failure.
>>> transport = CreateSNMPTransport(FindObject("Server1")); >>> if (transport != null) { >>> oid = ".1.3.6.1.2.1.25.4.2.1.2"; // Names of the running processes >>> vars = SNMPWalk(transport, oid); >>> if (vars != null) { >>> foreach (v: vars) { >>> trace(1, v->name."=".v->value); >>> } >>> } >>> }
Filesystem functions
I/O functions are disabled by default. To enable, please modify server parameter "NXSL.EnableFileIOFunctions". |
CopyFile()
CopyFile() => void
AF_ENABLE_NXSL_FILE_IO_FUNCTIONS
…
CreateDirectory()
CreateDirectory() => void
AF_ENABLE_NXSL_FILE_IO_FUNCTIONS
…
DeleteFile()
DeleteFile() => void
AF_ENABLE_NXSL_FILE_IO_FUNCTIONS
…
FileAccess()
FileAccess() => void
AF_ENABLE_NXSL_FILE_IO_FUNCTIONS
…
OpenFile()
OpenFile() => void
AF_ENABLE_NXSL_FILE_IO_FUNCTIONS
…
RemoveDirectory()
RemoveDirectory() => void
AF_ENABLE_NXSL_FILE_IO_FUNCTIONS
…
RenameFile()
RenameFile() => void
AF_ENABLE_NXSL_FILE_IO_FUNCTIONS
…
Class Reference
Alarm
Represents NetXMS alarm.
Instance attributes
ackBy ⇒ Number
-
ID of user who acknowledged this alarm.
creationTime ⇒ Number
-
Unix timestamp of the alarm creation time.
dciId ⇒ Number
-
If alarm was created as a result of DCI threshold violation, this attribute will contain ID of the DCI.
eventCode ⇒ Number
-
Event code of originating event.
eventId ⇒ Number
-
ID of originating event.
helpdeskReference ⇒ String
-
Helpdesk system reference (e.g. issue ID).
helpdeskState ⇒ Number
-
Helpdesk state:
-
0 = Ignored
-
1 = Open
-
2 = Closed
-
id ⇒ Number
-
Unique identifier of the alarm.
key ⇒ String
-
Alarm key.
lastChangeTime ⇒ Number
-
Unix timestamp of the last update.
message ⇒ String
-
Alarm message.
originalSeverity ⇒ Number
-
Original severity of the alarm.
repeatCount ⇒ Number
-
Repeat count.
resolvedBy ⇒ Number
-
ID of user who resolved this alarm.
severity ⇒ Number
-
Current alarm severity.
sourceObject ⇒ Number
-
ID of the object where alarm is raised.
state ⇒ Number
-
Alarm state:
-
0 = Outstanding
-
1 = Acknowledged
-
2 = Resolved
-
17 = Sticky acknowledged
-
Instance methods
acknowledge() ⇒ Number
-
Acknowledge alarm. Return
0
on success or error code on failure. resolve() ⇒ Number
-
Resolve alarm. Return
0
on success or error code on failure. terminate() ⇒ Number
-
Terminate alarm. Return
0
on success or error code on failure.
Chassis
Instance attributes
controller
controllerId
flags
rack
rackId
rackHeight
rackPosition
Cluster
Instance attributes
nodes
zone
zoneUIN
Instance methods
getResourceOwner(name) ⇒ Node
-
Get node which currently owns named resource.
name |
String |
Name of the resource. |
Node object instance which currently owns resource of null
if failed.
Component
Instance attributes
class ⇒ String
-
Type of the component:
-
unknown
-
chassis
-
backplane
-
container
-
power supply
-
fan
-
sensor
-
module
-
port
-
stack
-
children ⇒ Array
-
List of direct children (Array of Component object intances).
description ⇒ String
firmware ⇒ String
-
Component firmware version, if available.
ifIndex ⇒ Number
model ⇒ String
-
Component model number, if available.
name ⇒ String
-
Component name, if available.
serial ⇒ String
-
Component serial number, if available.
vendor ⇒ String
-
Component vendor, if available.
Container
Object represent container, extends NetObj.
Instance attributes
autoBindScript ⇒ String
-
Source of the script for automatic binding.
isAutoBindEnabled ⇒ Boolean
-
Indicate if automatic binding is enabled.
isAutoUnbindEnabled ⇒ Boolean
-
Indicate if automatic unbinding is enabled.
Instance methods
setAutoBindMode(enableBind, enableUnbind) ⇒ void
-
Set automatic bind mode for the container.
enableBind |
Boolean |
Script should be used for automatic binding. |
enableUnbind |
Boolean |
Script should be used for automatic unbinding. |
setAutoBindScript(script) ⇒ void
-
Update automatic binding script source.
script |
String |
Script source. |
DataCollectionTarget
Instance methods
readInternalParameter(name) ⇒ String
DCI
Represents Data Collection Item (DCI).
Instance attributes
activeThresholdSeverity
comments
-
Comments (since 2.0-M5)
dataType
-
Configured data type; possible values are:
-
DCI::INT32 (0) = Integer
-
DCI::UINT32 (1) = Unsigned integer
-
DCI::INT64 (2) = 64 bit integer
-
DCI::UINT64 (3) = 64 bit unsigned integer
-
DCI::STRING (4) = String
-
DCI::FLOAT (5) = Floating point number
-
DCI::NULL (6) = null
-
description
-
Description
errorCount
-
Number of consecutive data collection errors
hasActiveThreshold
id
-
Unique DCI identifier
instance
-
DCI instance (only for single value DCIs)
instanceData
lastPollTime
-
Time of last DCI poll (either successful or not) as number of seconds since epoch (1 Jan 1970 00:00:00 UTC)
name
-
Parameter’s name
origin
-
Data origin (source); possible values are:
-
0 = Internal
-
1 = NetXMS agent
-
2 = SNMP agent
-
3 = Check Point SNMP agent
-
4 = Push
-
status
-
DCI status; possible values are:
-
0 = Active
-
1 = Disabled
-
2 = Not supported
-
systemTag
-
System tag. Always empty for user-defined DCIs.
template
templateId
templateItemId
type
-
DCI type:
-
1 = single value
-
2 = table
-
Event
Represents NetXMS event object.
Instance attributes
code ⇒ Number
-
Event code
customMessage ⇒ String
-
Custom message set in event processing policy by calling
setMessage
. id ⇒ Number
-
Unique event identifier.
message ⇒ String
-
Event message.
name ⇒ String
-
Event name.
parameters ⇒ Array
-
List of event parameters. Starting index is 1.
parameterNames ⇒ Array
-
List of named event parameters (e.g. "dciId"), which can be accessed by
object->parameterName
. severity ⇒ Number
-
Event severity code.
source ⇒ NetObj
-
Source object (inherited from NetObj, exact type can be checked with classof() function) for the event.
sourceId ⇒ Number
-
ID of the source object for the event.
timestamp
-
Unix timestamp of the event.
userTag
-
User tag associated with event (set by calling
setUserTag()
). $1…$n
-
Shortcut for
parameters[n]
(e.g. "$event→parameters[3]" can be replaced with "$event→$3"). $…
-
Named event parameters can be accessed directly by the name (e.g
$event->dciId
). List of available named parameters can be accessed withparameterNames
attribute.
Instance methods
setMessage(message) ⇒ void
-
Set event message to
message
.
message |
Message string |
setSeverity(severityCode) ⇒ void
-
Change event severity to
severityCode
.
severityCode |
Numeric severity code:
|
setUserTag(tag) ⇒ void
-
Set custom tag, which can be later accessed via
userTag
attribute.
tag |
String tag |
toJson() ⇒ String
-
Serialize object to JSON.
String representation of the object in JSON format.
FILE
Instance attributes
eof ⇒ ?
name ⇒ ?
Instance methods
close() ⇒ ?
read() ⇒ ?
readLine() ⇒ ?
write() ⇒ ?
writeLine() ⇒ ?
GeoLocation
Represents geographical location (defined by latitude and longitude).
Instance attributes
isManual ⇒ ?
isValid → ?
latitude ⇒ Number
-
Latitude as floating point number
latitudeText ⇒ String
-
Latitude as text
longitude ⇒ Number
-
Longitude as floating point number
longitudeText ⇒ String
-
Longitude as text
type ⇒ Number
-
Data source type:
-
0 – Unset
-
1 – Manual
-
2 - GPS
-
3 - Network
-
Constructors
GeoLocation(latitude, longitude, type=1)
-
Create instance of the class based on floating-point
latitude
andlongitude
. Optional argumenttype
can be used to override default value 1 ("Manual").
Constants
Value | Description |
---|---|
0 |
Unset (represents unknown location) |
1 |
Manual (set by system administrator) |
2 |
Automatic (obtained from GPS) |
3 |
Network (obtained from network, for example using WiFi AP database) |
Examples
>>> nodeLoc = $node->geolocation >>> println(nodeLoc->latitudeText) N 48° 00' 0.000" >>> println(nodeLoc->longitudeText) E 22° 00' 0.000"
>>> nodeLoc = GeoLocation(22.11, 48.12, 1) >>> $node->setGeoLocation(nodeLoc) >>> println($node->geolocation->latitudeText) N 48° 12' 0.000" >>> println($node->geolocation->longitudeText) E 22° 11' 0.000"
>>> $node->clearGeoLocation() >>> println($node->geolocation) null
InetAddress
Instance attributes
address → ?
family → ?
isAnyLocal → ?
isBroadcast → ?
isLinkLocal → ?
isLoopback → ?
isMulticast → ?
isValid → ?
isValidUnicast → ?
mask → ?
Constructors
InetAddress()
InetAddress(string)
Interface
Represent interface object. Inherit all attributes and methods of the NetObj class.
Constants
Code | Description |
---|---|
0 |
Unknown |
1 |
Up |
2 |
Down |
3 |
Testing |
Code | Description |
---|---|
0 |
Up |
1 |
Down |
2 |
Ignore |
Instance attributes
adminState
-
Administrative state of the interface.
alias
-
Interface alias (usually value of SNMP ifAlias).
bridgePortNumber
-
Bridge port number for this interface.
description
-
Interface description
dot1xBackendAuthState
-
802.1x back-end authentication state
dot1xPaeAuthState
-
802.1x PAE authentication state
expectedState
-
Expected state of the interface.
flags
Interface flags (bit mask, uint32
).
ifIndex
-
Interface index.
ifType
-
Interface type
ipAddressList → ?
ipNetMask
-
IP network mask (number of bits).
isExcludedFromTopology
-
TRUE
if this interface excluded from network topology isLoopback
-
TRUE
if this interface is a loopback isManuallyCreated
-
TRUE
if this interface object was created manually by NetXMS administrator isPhysicalPort
-
TRUE
if this interface object represents physical port macAddr
-
String representation of MAC address separated by ":".
mtu
-
Interface MTU (0 if unknown).
node
-
Parent node object
operState
-
Operational state.
peerInterface
-
Peer interface object if known, otherwise
null
. peerNode
-
Peer node object if known, otherwise
null
. port
-
Port number.
slot
-
Slot number.
speed
-
Speed of the interface.
vlans → ?
zone
-
Zone object (null if zoning is disabled).
zoneUIN → ?
Instance methods
setExcludeFromTopology(excluded) ⇒ void
-
Change
isExcludedFromTopology
flag.
excluded |
Boolean |
|
setExpectedState(newState) ⇒ void
-
Set expected state to
newState
.
newState |
Number |
New state as defined by Interface expected states. |
MobileDevice
Instance attributes
batteryLevel → ?
deviceId → ?
model → ?
osName → ?
osVersion → ?
serialNumber → ?
userId → ?
vendor → ?
NetObj
Base class for all NetXMS objects.
Constants
Code | Description |
---|---|
0 |
Normal |
1 |
Warning |
2 |
Minor |
3 |
Major |
4 |
Critical |
5 |
Unknown |
6 |
Unmanaged |
7 |
Disabled |
8 |
Testing |
Code | Description |
---|---|
0 |
Generic |
1 |
Subnet |
2 |
Node |
3 |
Interface |
4 |
Network |
5 |
Container |
6 |
Zone |
7 |
Service Root |
8 |
Template |
9 |
Template Group |
10 |
Template Root |
11 |
Network Service |
12 |
VPN Connector |
13 |
Condition |
14 |
Cluster |
Instance attributes
Object custom attributes can be accessed in the same way as instance attribute, if names do not overlap. GetCustomAttribute() should be used otherwise.
alarms
-
Array of Alarm objects of object`s active alarms.
city
-
Postal address - city.
comments
-
Object comments.
country
-
Postal address – country.
customAttributes
-
Hash map of object custom attributes.
geolocation
-
Object geographical location.
guid
-
Object GUID as
string
. id
-
Object identifier (
uint32
). ipAddr
-
Primary IP address (
string
). mapImage ⇒ ?
name
-
Object name.
postcode
-
Postal address – postal code.
status
streetAddress
-
Postal address – street.
type
Instance methods
clearGeoLocation() ⇒ void
-
Clears GeoLocation data from the node
setComments ⇒ ?
setGeoLocation(newLocation)
-
Sets node geographical location.
newLocation |
setMapImage() ⇒ ?
setStatusCalculation() ⇒ ?
setStatusPropagation() ⇒ ?
NewNode
Represents newly discovered node object. Used by discovery filters.
Instance attributes
agentVersion
-
NetXMS agent version string, if available.
ipAddr
-
String representation of IP address.
isAgent
-
TRUE
if NetXMS agent is detected on node. isBridge
-
TRUE
if node is a bridge. isCDP
-
TRUE
if node supports CDP (Cisco Discovery Protocol). isLLDP
-
TRUE
if node supports LLDP (Link Layer Discovery Protocol). isPrinter
-
TRUE
if node is a printer. isRouter
-
TRUE
if node is a router (has IP forwarding enabled). isSNMP
-
TRUE
if SNMP agent detected on node. isSONMP
-
TRUE
if node supports SONMP/NDP (Synoptics/Nortel Discovery Protocol). netMask
-
Number of bits in IP network mask.
platformName
-
Platform name reported by NetXMS agent.
snmpOID
-
SNMP object identifier (value of .1.3.6.1.2.1.1.2.0).
snmpVersion
-
Detected SNMP version:
-
0 = SNMP version 1
-
1 = SNMP version 2c
-
2 = SNMP version 3
-
subnet
-
IP subnet address as string. Example: node with IP address 192.168.2.7 and network mask 255.255.255.0, is in a subnet 192.168.2.0.
zone ⇒ ?
zoneUIN ⇒ ?
Node
Represents NetXMS node object. Extends DataCollectionTarget.
Instance attributes
agentCertificateSubject ⇒ ?
agentId ⇒ ?
agentVersion
-
NetXMS agent version as
string
. bootTime
-
Number of seconds since node start or
0
if unknown. bridgeBaseAddress
-
Base address of the switch formatted as 12 character
string
without separators. Value is only valid for bridges and switches. Special value000000000000
indicates that address is unknown. components ⇒ ?
dependentNodes ⇒ ?
driver
-
Named of selected device-specific SNMP driver.
flags
-
Bit mask of Node flags,
uint32
. hypervisorInfo ⇒ ?
hypervisorType ⇒ ?
is802_1x
-
TRUE
if node supports 802.1x. Equivalent ofisPAE
. isAgent ⇒ ?
-
TRUE
if NetXMS agent detected on node isBridge
-
TRUE if node is a bridge
isCDP
-
TRUE if node supports CDP (Cisco Discovery Protocol)
isInMaintenanceMode ⇒ ?
isLLDP
-
TRUE if node supports LLDP (Link Layer Discovery Protocol)
isLocalManagement
-
TRUE
if node is a local management server (NetXMS server) isLocalMgmt
-
TRUE
if node is a local management server (NetXMS server) isPAE
-
TRUE
if node supports 802.1x. Equivalent ofis802_1x
. isPrinter
-
TRUE
if node is a printer isRouter
-
TRUE
if node is a router (has IP forwarding enabled) isSNMP
-
TRUE
if SNMP agent detected on node isSONMP
-
TRUE
if node supports SONMP/NDP (Synoptics/Nortel Discovery Protocol) isSTP ⇒ ?
isVirtual ⇒ ?
lastAgentCommTime ⇒ ?
nodeSubType ⇒ ?
nodeType ⇒ ?
platformName
-
Platform name reported by NetXMS agent
rack ⇒ ?
rackHeight ⇒ ?
rackId ⇒ ?
rackPosition ⇒ ?
runtimeFlags
-
Bit mask of Node runtime flags,
uint32
. snmpOID
-
SNMP object identifier (result of
.1.3.6.1.2.1.1.2.0
request) snmpSysContact
-
SNMP system contact (result of
.1.3.6.1.2.1.1.4.0
request) snmpSysLocation
-
SNMP system location (result of
.1.3.6.1.2.1.1.6.0
request) snmpSysName
-
SNMP system name (result of
.1.3.6.1.2.1.1.5.0
request) snmpVersion
-
Configured SNMP version:
-
0: SNMP version 1
-
1: SNMP version 2c
-
2: SNMP version 3
-
sysDescription
-
System description (value of
System.Uname
for nodes with agents or.1.3.6.1.2.1.1.1.0
for SNMP nodes) zone
-
Zone object (
null
if zoning is disabled) zoneUIN ⇒ ?
Instance methods
void enableAgent(boolean flag)
-
Enable or disable usage of NetXMS agent for all polls.
void enableConfigurationPolling(boolean)
-
Enable or disable configuration polling for a node
enableDiscoveryPolling() ⇒ ?
enableIcmp(boolean)
-
Enable or disable usage of ICMP pings for status polls
enableRoutingTablePolling() ⇒ ?
enableSnmp(boolean)
-
Enable or disable usage of SNMP for all polls
enableStatusPolling
-
Enable or disable status polling for a node
enableTopologyPolling(boolean)
-
Enable or disable topology polling
Constants
Value | Description |
---|---|
0x003FFF7F |
NF_SYSTEM_FLAGS |
0xFFC00080 |
NF_USER_FLAGS |
0x00000001 |
NF_IS_SNMP |
0x00000002 |
NF_IS_NATIVE_AGENT |
0x00000004 |
NF_IS_BRIDGE |
0x00000008 |
NF_IS_ROUTER |
0x00000010 |
NF_IS_LOCAL_MGMT |
0x00000020 |
NF_IS_PRINTER |
0x00000040 |
NF_IS_OSPF |
0x00000080 |
NF_REMOTE_AGENT |
0x00000100 |
NF_IS_CPSNMP. CheckPoint SNMP agent on port 260 |
0x00000200 |
NF_IS_CDP |
0x00000400 |
NF_IS_NDP. Supports Nortel (Synoptics/Bay Networks) topology discovery |
0x00000400 |
NF_IS_SONMP. SONMP is an old name for NDP |
0x00000800 |
NF_IS_LLDP. Supports Link Layer Discovery Protocol |
0x00001000 |
NF_IS_VRRP. VRRP support |
0x00002000 |
NF_HAS_VLANS. VLAN information available |
0x00004000 |
NF_IS_8021X. 802.1x support enabled on node |
0x00008000 |
NF_IS_STP. Spanning Tree (IEEE 802.1d) enabled on node |
0x00010000 |
NF_HAS_ENTITY_MIB. Supports ENTITY-MIB |
0x00020000 |
NF_HAS_IFXTABLE. Supports ifXTable |
0x00040000 |
NF_HAS_AGENT_IFXCOUNTERS. Agent supports 64-bit interface counters |
0x00080000 |
NF_HAS_WINPDH. Node supports Windows PDH parameters |
0x00100000 |
NF_IS_WIFI_CONTROLLER. Node is wireless network controller |
0x00200000 |
NF_IS_SMCLP. Node supports SMCLP protocol |
0x00400000 |
NF_DISABLE_DISCOVERY_POLL |
0x00800000 |
NF_DISABLE_TOPOLOGY_POLL |
0x01000000 |
NF_DISABLE_SNMP |
0x02000000 |
NF_DISABLE_NXCP |
0x04000000 |
NF_DISABLE_ICMP |
0x08000000 |
NF_FORCE_ENCRYPTION |
0x10000000 |
NF_DISABLE_STATUS_POLL |
0x20000000 |
NF_DISABLE_CONF_POLL |
0x40000000 |
NF_DISABLE_ROUTE_POLL |
0x80000000 |
NF_DISABLE_DATA_COLLECT |
Value | Description |
---|---|
0x0001 |
QUEUED_FOR_STATUS_POLL |
0x0002 |
QUEUED_FOR_CONFIG_POLL |
0x0004 |
UNREACHABLE |
0x0008 |
AGENT_UNREACHABLE |
0x0010 |
SNMP_UNREACHABLE |
0x0020 |
QUEUED_FOR_DISCOVERY_POLL |
0x0040 |
FORCE_STATUS_POLL |
0x0080 |
FORCE_CONFIGURATION_POLL |
0x0100 |
QUEUED_FOR_ROUTE_POLL |
0x0200 |
CPSNMP_UNREACHABLE |
0x0400 |
RECHECK_CAPABILITIES |
0x0800 |
POLLING_DISABLED |
0x1000 |
CONFIGURATION_POLL_PASSED |
0x2000 |
QUEUED_FOR_TOPOLOGY_POLL |
0x4000 |
DELETE_IN_PROGRESS |
0x8000 |
NETWORK_PATH_PROBLEM |
NodeDependency
Instance attributes
id ⇒ ?
isAgentProxy ⇒ ?
isDataCollectionSource ⇒ ?
isICMPProxy ⇒ ?
isSNMPProxy ⇒ ?
type ⇒ ?
SNMP_Transport
Represents SNMP Transport functionality. Objects of this class are typically obtained from nodes that support SNMP. Objects of this class used to access SNMP functions of nodes.
Instance attributes
snmpVersion
-
SNMP version used by the transport. Can be "1", "2c" or "3"
SNMP_VarBind
Represents an SNMP varbind concept in NetXMS. A varbind logically consists of an OID and a value.
Instance attributes
name
-
Object name (OID string).
printableValue
-
Object value as a printable string.
type
-
ASN.1 type.
value
-
Object value as a string.
valueAsIp
-
Object value IP address, represented as string.
valueAsMac
-
Object value as MAC address, represented as string.
Subnet
Instance attributes
ipNetMask ⇒ ?
isSyntheticMask ⇒ ?
zone ⇒ ?
zoneUIN ⇒ ?
Instance methods
method() ⇒ void
-
Description.
Table
Represents table object (usually it’s value of table DCI).
Instance attributes
columnCount ⇒ Number
-
Number of columns.
columns ⇒ Array<TableColumn>
-
Array of column definitions.
rowCount ⇒ Numbers
-
Number of rows.
rows ⇒ Array<TableRow>
-
Array of rows with data.
title ⇒ String
-
Title of table.
Instance methods
addColumn(name, [type], [displayName], [isInstance]) ⇒ Number
addRow() ⇒ Number
deleteColumn(columnId) ⇒ void
deleteRow(rowId) ⇒ void
get(rowId, columnId) ⇒ String
getColumnIndex(columnName) ⇒ Number
getColumnName(columnId) ⇒ String
set(rowId, columnId, value) ⇒ void
TableColumn
Represents table column definition object (used by Table class).
Instance attributes
dataType
-
Data type
displayName
-
Display name
isInstanceColumn
-
TRUE
if column is marked as instance column name
-
Column name
TableRow
Instance attributes
index ⇒ Number
values ⇒ Array<String>
Instance methods
get(columnId) ⇒ String
set(columnId, value) ⇒ void
TIME
Class containing a calendar date and time broken down into its components. For convenience, all attributes has aliases to match struct tm provided in libc.
Instance attributes
sec ⇒ Number
tm_sec ⇒ Number
-
Seconds after the minute.
min ⇒ Number
tm_min ⇒ Number
-
Minutes after the hour.
hour ⇒ Number
tm_hour ⇒ Number
-
Hours since midnight.
mday ⇒ Number
tm_mday ⇒ Number
-
Day of the month.
mon ⇒ Number
tm_mon ⇒ Number
-
Months since January.
year ⇒ Number
tm_year ⇒ Number
-
Year.
yday ⇒ Number
tm_yday ⇒ Number
-
Days since January 1.
wday ⇒ Number
tm_wday ⇒ Number
-
Days since Sunday.
isdst ⇒ Boolean
tm_isdst ⇒ Boolean
-
Daylight Saving Time flag.
Zone
Represent network zone. Inherit all attributes and methods of the NetObj class.
Instance attributes
proxyNode ⇒ ?
proxyNodeId ⇒ ?
uin ⇒ ?
Global Constants
Formal Grammar
script ::= module | expression module ::= module_component { module_component } module_component ::= function | statement_or_block | use_statement use_statement ::= use any_identifier ";" any_identifier ::= IDENTIFIER | COMPOUND_IDENTFIER function ::= sub IDENTIFIER "(" [ identifier_list ] ")" block identifier_list ::= IDENTIFIER { "," IDENTIFIER } block ::= "{" { statement_or_block } "}" statement_or_block ::= statement | block statement ::= expression ";" | builtin_statement | ";" builtin_statement ::= simple_statement ";" | if_statement | do_statement | while_statement | for_statement | foreach_statement | switch_statement | array_statement | global_statement | break ";" continue ";" simple_statement ::= keyword [ expression ] keyword ::= exit | print | println | return if_statement ::= if "(" expression ")" statement_or_block [ else statement_or_block ] for_statement ::= for "(" expression ";" expression ";" expression ")" statement_or_block foreach_statement ::= foreach "(" IDENTIFIER ":" expression ")" statement_or_block while_statement ::= while "(" expression ")" statement_or_block do_statement ::= do statement_or_block while "(" expression ")" ";" switch_statement ::= switch "(" expression ")" "{" case { case } [ default ] "}" case ::= case constant ":" { statement_or_block } default ::= default ":" { statement_or_block } array_statement ::= [ global ] array identifier_list ";" global_statement ::= global global_variable_declaration { "," global_variable_declaration } ";" global_variable_declaration ::= IDENTIFIER [ "=" expression ] expression ::= "(" expression ")" | IDENTIFIER "=" expression | expression "->" IDENTIFIER | "-" expression | "!" expression | "~" expression | inc IDENTIFIER | dec IDENTIFIER | IDENTIFIER inc | IDENTIFIER dec | expression "+" expression | expression "-" expression | expression "*" expression | expression "/" expression | expression "%" expression | expression like expression | expression ilike expression | expression "~=" expression | expression match expression | expression imatch expression | expression "==" expression | expression "!=" expression | expression "<" expression | expression "<=" expression | expression ">" expression | expression ">=" expression | expression "&" expression | expression "|" expression | expression "^" expression | expression "&&" expression | expression "||" expression | expression "<<" expression | expression ">>" expression | expression "." expression | expression "?" expression ":" expression | operand operand ::= function_call | type_cast | constant | IDENTIFIER type_cast ::= builtin_type "(" expression ")" builtin_type ::= int32 | int64 | uint32 | uint64 | real | string function_call ::= IDENTIFIER "(" [ expression { "," expression } ] ")" constant ::= STRING | INT32 | INT64 | UINT32 | UINT64 | REAL | NULL
IDENTIFIER ::= [A-Za-z_\$][A-Za-z_\$0-9]* COMPOUND_IDENTIFIER ::= { IDENTIFIER}(::{ IDENTIFIER})+ INTEGER ::= \-?(0x)?[0-9]+ INT32 ::= INTEGER INT64 ::= {INTEGER}L UINT32 ::= {INTEGER}U UINT64 ::= {INTEGER}(UL|LU) REAL ::= \-?[0-9]+\.[0-9]+