# snmp_pdus

### MODULE

snmp_pdus

### MODULE SUMMARY

Encode and Decode Functions for SNMP PDUs

### DESCRIPTION

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.

### EXPORTS

`dec_message([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([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([byte()]) -> Pdu`

Types:

`Pdu = #pdu`

Decodes a list of bytes into an SNMP Pdu.

`dec_scoped_pdu([byte()]) -> ScopedPdu`

Types:

`ScopedPdu = #scoped_pdu`

Decodes a list of bytes into an SNMP ScopedPdu.

`dec_scoped_pdu_data([byte()]) -> ScopedPduData`

Types:

`ScopedPduData = #scoped_pdu | EncryptedPDU`
`EncryptedPDU = [byte()]`

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([byte()]) -> UsmSecParams`

Types:

`UsmSecParams = #usmSecurityParameters`

Decodes a list of bytes into an SNMP UsmSecurityParameters

`enc_encrypted_scoped_pdu(EncryptedScopedPdu) -> [byte()]`

Types:

`EncryptedScopedPdu = [byte()]`

Encodes an encrypted SNMP ScopedPdu into an OCTET STRING that can de used as the `data` field in a `message` record, that later can be encoded with a call to `enc_message_only/1`.

This function should be used whenever the `ScopedPDU` is encrypted.

`enc_message(Message) -> [byte()]`

Types:

`Message = #message`

Encodes a message record to a list of bytes.

`enc_message_only(Message) -> [byte()]`

Types:

`Message = #message`

`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(Pd) -> [byte()]`

Types:

`Pdu = #pdu`

Encodes an SNMP Pdu into a list of bytes.

`enc_scoped_pdu(ScopedPdu) -> [byte()]`

Types:

`ScopedPdu = #scoped_pdu`

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) -> [byte()]`

Types:

`UsmSecParams = #usmSecurityParameters`

Encodes SNMP UsmSecurityParameters into a list of bytes.

### AUTHORS

Martin Björklund - support@erlang.ericsson.se
Klas Eriksson - support@erlang.ericsson.se

snmp 3.4
Copyright © 1991-2003 Ericsson Utvecklings AB