Encode and Decode Functions for SNMP PDUs
RFC1157, RFC1905 and/or RFC2272 should be studied carefully before using this
module, snmp_pdus.
The module snmp_pdus contains functions for encoding and decoding of SNMP
protocol data units (PDUs). In short, this module converts a list of bytes to
Erlang record representations and vice versa. The record definitions can be
found in the file snmp/include/snmp_types.hrl. If snmpv3 is used, the module
that includes snmp_types.hrl must define the constant SNMP_USE_V3 before the
header file is included. Example:
-define(SNMP_USE_V3, true).
-include_lib("snmp/include/snmp_types.hrl").Encoding and decoding must be done explicitly when writing your own Net if process.
Summary
Types
The message is version dependent. 'vsn_hdr' is either a community string (v1 and v2) or a 'v3_hdr' record (v3). 'data' is either a PDU (v1 and v2c) or a (possibly encrypted) 'scopedPdu'.
Functions
Decodes a list of bytes into an SNMP Message. Note, if there is a v3 message,
the msgSecurityParameters are not decoded. They must be explicitly decoded by
a call to a security model specific decoding function, e.g.
dec_usm_security_parameters/1. Also note,
if the scopedPDU is encrypted, the OCTET STRING encoded encryptedPDU will be
present in the data field.
Decodes a list of bytes into an SNMP Message, but does not decode the data part
of the Message. That means, data is still a list of bytes, normally an encoded
PDU (v1 and V2) or an encoded and possibly encrypted scopedPDU (v3).
Decodes a list of bytes into an SNMP Pdu.
Decodes a list of bytes into an SNMP ScopedPdu.
Decodes a list of bytes into either a scoped pdu record, or - if the scoped pdu was encrypted - to a list of bytes.
Decodes a list of bytes into an SNMP UsmSecurityParameters.
Encodes a message record to a list of bytes.
Message is a record where the data field is assumed to be encoded (a list of
bytes). If there is a v1 or v2 message, the data field is an encoded PDU,
and if there is a v3 message, data is an encoded and possibly encrypted
scopedPDU.
Encodes an SNMP Pdu into a list of bytes.
Encodes an SNMP ScopedPdu into a list of bytes, which can be encrypted, and
after encryption, encoded with a call to enc_encrypted_scoped_pdu/1; or it can
be used as the data field in a message record, which then can be encoded
with enc_message_only/1.
Encodes SNMP UsmSecurityParameters into a list of bytes.
Types
The message is version dependent. 'vsn_hdr' is either a community string (v1 and v2) or a 'v3_hdr' record (v3). 'data' is either a PDU (v1 and v2c) or a (possibly encrypted) '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'.
Functions
dec_message(Bytes :: [byte()]) -> Message
Types
Message = message()
Decodes a list of bytes into an SNMP Message. Note, if there is a v3 message,
the msgSecurityParameters are not decoded. They must be explicitly decoded by
a call to a security model specific decoding function, e.g.
dec_usm_security_parameters/1. Also note,
if the scopedPDU is encrypted, the OCTET STRING encoded encryptedPDU will be
present in the data field.
dec_message_only(Bytes :: [byte()]) -> Message
Types
Message = message()
Decodes a list of bytes into an SNMP Message, but does not decode the data part
of the Message. That means, data is still a list of bytes, normally an encoded
PDU (v1 and V2) or an encoded and possibly encrypted scopedPDU (v3).
dec_pdu(Bytes :: [byte()]) -> Pdu
Decodes a list of bytes into an SNMP Pdu.
dec_scoped_pdu(Bytes :: [byte()]) -> ScopedPDU
Types
ScopedPDU = scoped_pdu()
Decodes a list of bytes into an SNMP ScopedPdu.
dec_scoped_pdu_data(Bytes :: [byte()]) -> ScopedPduData
Decodes a list of bytes into either a scoped pdu record, or - if the scoped pdu was encrypted - to a list of bytes.
dec_usm_security_parameters(Bytes :: [byte()]) -> UsmSecParams
Types
UsmSecParams = usm_security_parameters()
Decodes a list of bytes into an SNMP UsmSecurityParameters.
enc_message(Message :: message()) -> Bytes
Types
Bytes = [byte()]
Encodes a message record to a list of bytes.
enc_message_only(Message :: message()) -> Bytes
Types
Bytes = [byte()]
Message is a record where the data field is assumed to be encoded (a list of
bytes). If there is a v1 or v2 message, the data field is an encoded PDU,
and if there is a v3 message, data is an encoded and possibly encrypted
scopedPDU.
enc_pdu(Pdu :: pdu()) -> Bytes
Types
Bytes = [byte()]
Encodes an SNMP Pdu into a list of bytes.
enc_scoped_pdu(ScopedPdu :: scoped_pdu()) -> Bytes
Types
Bytes = [byte()]
Encodes an SNMP ScopedPdu into a list of bytes, which can be encrypted, and
after encryption, encoded with a call to enc_encrypted_scoped_pdu/1; or it can
be used as the data field in a message record, which then can be encoded
with enc_message_only/1.
enc_usm_security_parameters(UsmSecParams :: usm_security_parameters()) -> Bytes
Types
Bytes = [byte()]
Encodes SNMP UsmSecurityParameters into a list of bytes.