检测函数的定义 | 11. Definition of Instrumentation Functions
11 仪表功能的定义
仪表功能定义
部分描述了代理在不同时间调用的用户定义功能。
11.1 可变仪表
对于标量变量,f(Operation, ...)
必须定义一个函数。
该Operation
可以是new
,delete
,get
,is_set_ok
,set
,或undo
。
如果发生错误,所有仪器功能可能会返回SNMPv1或SNMPv2错误代码。如果它返回一个SNMPv2代码,它将在发送到SNMPv1管理器之前转换为SNMPv1代码。建议对所有仪器功能使用SNMPv2错误代码,因为这些提供了更多详细信息。请参阅有关Appendix A
错误代码转换的说明。
f(new , ExtraArgs)
f(new [, ExtraArgs])
当MIB加载到代理中时,将为MIB中的每个变量调用该函数。这使得可以执行必要的初始化。
该功能是可选的。返回值被丢弃。
f(delete , ExtraArgs)
f(delete [, ExtraArgs])
当MIB从代理卸载时,将为MIB中的每个对象调用该函数。这使得执行必要的清理成为可能。
该功能是可选的。返回值被丢弃。
f(get , ExtraArgs)
f(get [, ExtraArgs])
当get-request或get-next请求引用变量时,该函数被调用。
该功能是强制性的。
有效的返回值
{value, Value}
。Value
必须的范围内正确的类型,长度,并且,否则genErr
在响应PDU返回。如果对象是枚举整数,则符号枚举值可以用作原子。如果对象是BITS类型,则返回值应是整数或设置的位列表。
f(is_set_ok, NewValue , ExtraArgs)
该函数f(is_set_ok, NewValue [, ExtraArgs])
在设置请求处理的第一阶段被调用,以便可以检查新值是否存在不一致。
NewValue
保证是正确的类型,长度和范围内,如在MIB中所指定的。如果对象是枚举整型或类型BITS,则使用整数值。
该功能是可选的。
如果这个函数被调用,它将会再次调用,要么undo
或set
作为第一个参数。
有效的返回值
noError
f(undo, NewValue , ExtraArgs)
如果发生错误,则在调用is_set_ok函数后调用此函数。 如果为此对象调用set,则不会调用undo。
NewValue
保证是正确的类型,长度和范围内,如在MIB中所指定的。如果对象是枚举整型或类型BITS,则使用整数值。
该功能是可选的。
有效的返回值
noError
f(set,NewValue,ExtraArgs)
这个函数被调用来执行设置请求处理的第二阶段的设置。只有当相应的is_set_ok
函数存在并返回noError
时才会调用。
NewValue
保证是正确的类型,长度和范围内,如在MIB中所指定的。如果对象是枚举整型或类型BITS,则使用整数值。
该功能是强制性的。
有效的返回值
noError
11.2 表仪器
对于表格,f(Operation, ...)
应该定义一个函数(所显示的函数将以此为例f
)。
该Operation
可以是new
,delete
,get
,next
,is_set_ok
,undo
或set
。
如果发生错误,所有仪器功能可能会返回SNMPv1或SNMPv2错误代码。如果它返回一个SNMPv2代码,它将在发送到SNMPv1管理器之前转换为SNMPv1代码。建议对所有仪器功能使用SNMPv2错误代码,因为这些提供了更多详细信息。请参阅有关Appendix A
错误代码转换的说明。
f(new , ExtraArgs)
f(new [, ExtraArgs])
当MIB被加载到代理中时,将为MIB中的每个对象调用该函数。这使得可以执行必要的初始化。
该功能是可选的。返回值被丢弃。
f(delete , ExtraArgs)
f(delete [, ExtraArgs])
当MIB从代理卸载时,将为MIB中的每个对象调用该函数。这使得可以执行任何必要的清理。
该功能是可选的。返回值被丢弃。
f(get, RowIndex, Cols , ExtraArgs)
f(get, RowIndex, Cols [, ExtraArgs])
当获取请求引用表时,该函数被调用。
该功能是强制性的。
参数
RowIndex是定义行的键值的整数列表。 RowIndex是OBJECT IDENTIFIER中Cols整数后面的列表表示(整数列表)。
有效的返回值
- 包含与列表一样多的元素的
Cols
列表,其中每个元素是相应列的值。每个元素可以是:
- `{value, Value}`. The `Value` must be of correct type, length and within ranges, otherwise `genErr` is returned in the response PDU. If the object is an enumerated integer, the symbolic enum value may be used (as an atom). If the object is of type BITS, the return value shall be an integer or a list of bits that are set.
- `{noValue, noSuchName}`(SNMPv1)
- `{noValue, noSuchObject | noSuchInstance}`(SNMPv2)
{noValue, Error}
。如果该行不存在,因为所有列都有{noValue, Error}
),{noValue, Error}
则可以返回单个元组。这是包含所有元素的列表的简写{noValue, Error}
。
f(get_next, RowIndex, Cols , ExtraArgs)
f(get_next, RowIndex, Cols [, ExtraArgs])
当get-next或get-bulk-request引用表时,该函数被调用。
RowIndex参数可能引用现有行或不存在的行,或者可能未指定。 列表列表可能引用不可访问的列或不存在的列。 对于Cols列表中的每一列,将确定相应的下一个实例,并返回其OBJECT IDENTIFIER的最后部分及其值。
该功能是强制性的。
参数
RowIndex
是一个整数列表(可能为空),它定义了一行的键值。这RowIndex
是列表表示(整数列表),它跟Cols
在OBJECT IDENTIFIER中的整数之后。
有效的返回值
- 列表中包含尽可能多的元素
Cols
每个元素可以是:
- `{NextOid, NextValue}`, where `NextOid` is the lexicographic next OBJECT IDENTIFIER for the corresponding column. This should be specified as the OBJECT IDENTIFER part following the table entry. This means that the first integer is the column number and the rest is a specification of the keys. `NextValue` is the value of this element.
- `endOfTable` if there are no accessible elements after this one.
{genErr, Column}
其中Column
表示导致错误的列。Column
必须是Cols
列表中的一列。请注意,这应该是一个内部处理错误,例如由某个编程错误引起的错误。如果某列不存在,则必须返回下一个可访问元素(或endOfTable
)。
f(is_set_ok, RowIndex, Cols , ExtraArgs)
该函数f(is_set_ok, RowIndex, Cols [, ExtraArgs])
在设置请求处理的第一阶段被调用,以便可以检查新值是否存在不一致。
如果函数被调用,它将被再次调用undo
,或set
作为第一个参数。
该功能是可选的。
参数
- RowIndex是定义行的键值的整数列表。 RowIndex是OBJECT IDENTIFIER中Cols整数后面的列表表示(整数列表)。
有效的返回值
{noError, 0}
f(undo, RowIndex, Cols , ExtraArgs)
如果发生错误,函数f(撤消,RowIndex,Cols [,ExtraArgs])将在is_set_ok函数之后调用。 如果为此对象调用set,则不会调用undo。
该功能是可选的。
参数
- RowIndex是定义行的键值的整数列表。 RowIndex是OBJECT IDENTIFIER中Cols整数后面的列表表示(整数列表)。
有效的返回值
- {noError,0}
f(set, RowIndex, Cols , ExtraArgs)
该函数f(set, RowIndex, Cols [, ExtraArgs])
被调用来执行设置请求处理的第二阶段中的设置。只有在相应的is_set_ok
函数不存在或返回{noError, 0}
时才会调用它。
该功能是强制性的。
参数
- RowIndex是定义行的键值的整数列表。 RowIndex是OBJECT IDENTIFIER中Cols整数后面的列表表示(整数列表)。
有效的返回值
- {noError,0}