非常教程

Erlang 20参考手册

snmp

检测函数的定义 | 11. Definition of Instrumentation Functions

仪表功能定义部分描述了代理在不同时间调用的用户定义功能。

11.1 可变仪表

对于标量变量,f(Operation, ...)必须定义一个函数。

Operation可以是newdeletegetis_set_okset,或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类型,则返回值应是整数或设置的位列表。
  • {noValue, noSuchName}(SNMPv1的)
  • {noValue, noSuchObject | noSuchInstance}(SNMPv2)的
  • genErr。在发生错误时使用。请注意,这应该是一个内部处理错误,例如由某个编程错误引起的错误。如果该变量不存在,请使用{noValue, noSuchName}{noValue, noSuchInstance}

f(is_set_ok, NewValue , ExtraArgs)

该函数f(is_set_ok, NewValue [, ExtraArgs])在设置请求处理的第一阶段被调用,以便可以检查新值是否存在不一致。

NewValue保证是正确的类型,长度和范围内,如在MIB中所指定的。如果对象是枚举整型或类型BITS,则使用整数值。

该功能是可选的。

如果这个函数被调用,它将会再次调用,要么undoset作为第一个参数。

有效的返回值
  • noError
  • badValue | noSuchName | genErr(SNMPv1)
  • noAccess | noCreation | inconsistentValue | resourceUnavailable | inconsistentName | genErr(SNMPv2)

f(undo, NewValue , ExtraArgs)

如果发生错误,则在调用is_set_ok函数后调用此函数。 如果为此对象调用set,则不会调用undo。

NewValue保证是正确的类型,长度和范围内,如在MIB中所指定的。如果对象是枚举整型或类型BITS,则使用整数值。

该功能是可选的。

有效的返回值
  • noError
  • genErr(SNMPv1)
  • undoFailed | genErr(SNMPv2)

f(set,NewValue,ExtraArgs)

这个函数被调用来执行设置请求处理的第二阶段的设置。只有当相应的is_set_ok函数存在并返回noError时才会调用。

NewValue保证是正确的类型,长度和范围内,如在MIB中所指定的。如果对象是枚举整型或类型BITS,则使用整数值。

该功能是强制性的。

有效的返回值
  • noError
  • genErr(SNMPv1)
  • commitFailed | undoFailed | genErr(SNMPv2)

11.2 表仪器

对于表格,f(Operation, ...)应该定义一个函数(所显示的函数将以此为例f)。

Operation可以是newdeletegetnextis_set_okundoset

如果发生错误,所有仪器功能可能会返回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是表示列号的整数列表。 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}
  • genErr。在发生错误时使用。请注意,这应该是一个内部处理错误,例如由某个编程错误引起的错误。如果某列不存在,请使用{noValue, noSuchName}{noValue, noSuchInstance}

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 是一个整数列表,大于或等于零,表示列号。
有效的返回值
  • 列表中包含尽可能多的元素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整数后面的列表表示(整数列表)。
  • Cols是{Column,NewValue}的列表,其中Column是一个整数,并且NewValue保证在MIB中指定的类型,长度和范围内都是正确的。 如果对象是枚举整型或类型BITS,则使用整数值。 该列表按列(增加)排序,每列保证是有效的列号。
有效的返回值
  • {noError, 0}
  • {Error, Column},其中Erroris_set_ok变量相同,且Column表示故障列。Column必须是Cols列表中的一列。

f(undo, RowIndex, Cols , ExtraArgs)

如果发生错误,函数f(撤消,RowIndex,Cols [,ExtraArgs])将在is_set_ok函数之后调用。 如果为此对象调用set,则不会调用undo。

该功能是可选的。

参数
  • RowIndex是定义行的键值的整数列表。 RowIndex是OBJECT IDENTIFIER中Cols整数后面的列表表示(整数列表)。
  • Cols是{Column,NewValue}的列表,其中Column是一个整数,并且NewValue保证在MIB中指定的类型,长度和范围内都是正确的。 如果对象是枚举整型或类型BITS,则使用整数值。 该列表按列(增加)排序,每列保证是有效的列号。
有效的返回值
  • {noError,0}
  • {Error,Column}其中Error与变量的撤消相同,Column表示错误的列。 列必须是列表列中的一列。

f(set, RowIndex, Cols , ExtraArgs)

该函数f(set, RowIndex, Cols [, ExtraArgs])被调用来执行设置请求处理的第二阶段中的设置。只有在相应的is_set_ok函数不存在或返回{noError, 0}时才会调用它。

该功能是强制性的。

参数
  • RowIndex是定义行的键值的整数列表。 RowIndex是OBJECT IDENTIFIER中Cols整数后面的列表表示(整数列表)。
  • Cols是{Column,NewValue}的列表,其中Column是一个整数,并且NewValue保证在MIB中指定的类型,长度和范围内都是正确的。 如果对象是枚举整型或类型BITS,则使用整数值。 该列表按列(增加)排序,每列保证是有效的列号。
有效的返回值
  • {noError,0}
  • {Error,Column}其中Error与变量设置相同,Column表示错误的列。 列必须是列表列中的一列。

snmp相关

1.1. SNMP简介 | 1. SNMP Introduction
2.2.代理功能描述 | 2. Agent Functional Description
3.3.管理功能描述 | 3. Manager Functional Description
4.4. MIB编译器 | 4. The MIB Compiler
5.5.运行应用程序 | 5. Running the application
6.6.代理配置文件的定义 | 6. Definition of Agent Configuration Files
7.7. Manager配置文件的定义 | 7. Definition of Manager Configuration Files
8.8.代理实现示例 | 8. Agent Implementation Example
9.9.管理实施例 | 9. Manager Implementation Example
10.10.检测函数 | 10. Instrumentation Functions
11.Net if的定义 | 12. Definition of Agent Net if
12.管理Netif 的定义 | 13. Definition of Manager Net if
13.14.审计跟踪日志 | 14. Audit Trail Log
14.15.高级代理主题 | 15. Advanced Agent Topics
15.16. SNMP Appendix A
16.17. SNMP Appendix B
17.snmp
18.snmpa
19.snmpa_conf
20.snmpa_discovery_handler
21.snmpa_error
22.snmpa_error_io
23.snmpa_error_logger
24.snmpa_error_report
25.snmpa_local_db
26.snmpa_mib_data
27.snmpa_mib_storage
28.snmpa_mpd
29.snmpa_network_interface
30.snmpa_network_interface_filter
31.snmpa_notification_delivery_info_receiver
32.snmpa_notification_filter
33.snmpa_supervisor
34.snmpc
35.snmpm
36.snmpm_conf
37.snmpm_mpd
38.snmpm_network_interface
39.snmpm_network_interface_filter
40.snmpm_user
41.snmp_community_mib
42.snmp_framework_mib
43.snmp_generic
44.snmp_index
45.snmp_notification_mib
46.snmp_pdus
47.snmp_standard_mib
48.snmp_target_mib
49.snmp_user_based_sm_mib
50.snmp_view_based_acm_mib
Erlang 20

Erlang 是一种通用的面向并发的编程语言,可应付大规模开发活动的程序设计语言和运行环境。

主页 https://www.erlang.org/
源码 https://github.com/erlang/otp
版本 20
发布版本 20.1