查看源代码 snmp_pdus (snmp v5.18)
SNMP PDU 的编码和解码函数
在使用此模块 snmp_pdus
之前,应仔细研究 RFC1157、RFC1905 和/或 RFC2272。
模块 snmp_pdus
包含用于编码和解码 SNMP 协议数据单元 (PDU) 的函数。简而言之,此模块将字节列表转换为 Erlang 记录表示,反之亦然。记录定义可以在文件 snmp/include/snmp_types.hrl
中找到。如果使用 snmpv3,则包含 snmp_types.hrl
的模块必须在包含头文件之前定义常量 SNMP_USE_V3
。示例
-define(SNMP_USE_V3, true).
-include_lib("snmp/include/snmp_types.hrl").
在编写自己的网络进程时,必须显式地进行编码和解码。
摘要
类型
消息是版本相关的。 'vsn_hdr' 是一个 community 字符串(v1 和 v2)或一个 'v3_hdr' 记录 (v3)。 'data' 是一个 PDU(v1 和 v2c)或一个(可能加密的)'scopedPdu'。
函数
将字节列表解码为 SNMP 消息。请注意,如果存在 v3 消息,则不会解码 msgSecurityParameters
。它们必须通过调用安全模型特定的解码函数(例如 dec_usm_security_parameters/1
)显式解码。另请注意,如果 scopedPDU
已加密,则 data
字段中将存在 OCTET STRING 编码的 encryptedPDU
。
将字节列表解码为 SNMP 消息,但不解码消息的数据部分。这意味着,数据仍然是字节列表,通常是编码的 PDU
(v1 和 V2)或编码且可能加密的 scopedPDU
(v3)。
将字节列表解码为 SNMP Pdu。
将字节列表解码为 SNMP ScopedPdu。
将字节列表解码为 scoped pdu 记录,或者 - 如果 scoped pdu 已加密 - 解码为字节列表。
将字节列表解码为 SNMP UsmSecurityParameters。
将消息记录编码为字节列表。
Message
是一个记录,其中 data
字段被假定为已编码(字节列表)。如果存在 v1 或 v2 消息,则 data
字段是编码的 PDU
,如果存在 v3 消息,则 data
是编码且可能加密的 scopedPDU
。
将 SNMP Pdu 编码为字节列表。
将 SNMP ScopedPdu 编码为字节列表,该列表可以加密,并且在加密之后,可以通过调用 enc_encrypted_scoped_pdu/1
进行编码;或者它可以作为 message
记录中的 data
字段使用,然后可以通过 enc_message_only/1
进行编码。
将 SNMP UsmSecurityParameters 编码为字节列表。
类型
消息是版本相关的。 'vsn_hdr' 是一个 community 字符串(v1 和 v2)或一个 'v3_hdr' 记录 (v3)。 'data' 是一个 PDU(v1 和 v2c)或一个(可能加密的)'scopedPdu'。
-type msg_id() :: 0..2147483647.
-type msg_security_model() :: 0..2147483647.
-type pdu_type() ::
'get-request' | 'get-next-request' | 'get-bulk-request' | 'get-response' | 'set-request' |
'inform-request' | 'snmpv2-trap' | report.
-type version() :: 'version-1' | 'version-2' | 'version-3'.
函数
将字节列表解码为 SNMP 消息。请注意,如果存在 v3 消息,则不会解码 msgSecurityParameters
。它们必须通过调用安全模型特定的解码函数(例如 dec_usm_security_parameters/1
)显式解码。另请注意,如果 scopedPDU
已加密,则 data
字段中将存在 OCTET STRING 编码的 encryptedPDU
。
将字节列表解码为 SNMP 消息,但不解码消息的数据部分。这意味着,数据仍然是字节列表,通常是编码的 PDU
(v1 和 V2)或编码且可能加密的 scopedPDU
(v3)。
将字节列表解码为 SNMP Pdu。
-spec dec_scoped_pdu(Bytes) -> ScopedPDU when Bytes :: [byte()], ScopedPDU :: scoped_pdu().
将字节列表解码为 SNMP ScopedPdu。
-spec dec_scoped_pdu_data(Bytes) -> ScopedPduData when Bytes :: [byte()], ScopedPduData :: scoped_pdu() | EncryptedPDU, EncryptedPDU :: [byte()].
将字节列表解码为 scoped pdu 记录,或者 - 如果 scoped pdu 已加密 - 解码为字节列表。
-spec dec_usm_security_parameters(Bytes) -> UsmSecParams when Bytes :: [byte()], UsmSecParams :: usm_security_parameters().
将字节列表解码为 SNMP UsmSecurityParameters。
将消息记录编码为字节列表。
Message
是一个记录,其中 data
字段被假定为已编码(字节列表)。如果存在 v1 或 v2 消息,则 data
字段是编码的 PDU
,如果存在 v3 消息,则 data
是编码且可能加密的 scopedPDU
。
将 SNMP Pdu 编码为字节列表。
-spec enc_scoped_pdu(ScopedPdu) -> Bytes when ScopedPdu :: scoped_pdu(), Bytes :: [byte()].
将 SNMP ScopedPdu 编码为字节列表,该列表可以加密,并且在加密之后,可以通过调用 enc_encrypted_scoped_pdu/1
进行编码;或者它可以作为 message
记录中的 data
字段使用,然后可以通过 enc_message_only/1
进行编码。
-spec enc_usm_security_parameters(UsmSecParams) -> Bytes when UsmSecParams :: usm_security_parameters(), Bytes :: [byte()].
将 SNMP UsmSecurityParameters 编码为字节列表。