1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
#![doc(html_root_url = "https://docs.rs/snmp_mp/0.1.0")] //! # Primitives to send and receive SNMP messages. //! //! Supported PDU types: //! //! * GetRequest //! * GetNextRequest //! * GetBulkRequest //! * Response //! * SetRequest //! * SNMPv2-Trap //! * InformRequest //! //! ## Examples //! //! ``` //! use snmp_mp::{ObjectIdent, SnmpMsg, VarBind}; //! //! let mut msg = SnmpMsg::new(1); //! msg.set_reportable_flag(); //! //! if let Some(scoped_pdu) = msg.scoped_pdu_data.plaintext_mut() { //! let sys_desc = ObjectIdent::from_slice(&[0x01, 0x03, 0x06, 0x01, 0x02, 0x01, 0x01, 0x01, 0x00]); //! let var_bind = VarBind::new(sys_desc); //! //! scoped_pdu //! .set_request_id(1) //! .set_engine_id(b"context_engine_id") //! .push_var_bind(var_bind); //! } //! //! let encoded_msg = msg.encode(); //! // Send the encoded message over the network. //! ``` //! //! [encrypt_scoped_pdu](struct.SnmpMsg.html#method.encrypt_scoped_pdu) and //! [decrypt_scoped_pdu](struct.SnmpMsg.html#method.decrypt_scoped_pdu) are provided to make it //! easy to use a security model: //! //! ``` //! # use snmp_mp::SnmpMsg; //! # let mut msg = SnmpMsg::new(1); //! msg.encrypt_scoped_pdu(|encoded_scoped_pdu| { //! // A security model encrypts and returns the scoped PDU. //! // let (encrypted_scoped_pdu, priv_params) = //! // priv_key.encrypt(encoded_scoped_pdu, &security_params, salt); //! // security_params.set_priv_params(&priv_params); //! //! # let encrypted_scoped_pdu = encoded_scoped_pdu; //! encrypted_scoped_pdu //! }); //! //! msg.decrypt_scoped_pdu(|encrypted_scoped_pdu| { //! // A security model returns the decrypted scoped PDU wrapped in an `Option`. //! // priv_key //! // .decrypt(encrypted_scoped_pdu, &security_params) //! // .ok() //! # None //! }); //! ``` #[macro_use] extern crate bitflags; mod error; mod object_ident; mod pdu_error_status; mod pdu_type; mod scoped_pdu; mod scoped_pdu_data; mod snmp_msg; mod var_bind; pub use error::MsgProcessingError; pub use object_ident::ObjectIdent; pub use pdu_error_status::PduErrorStatus; pub use pdu_type::PduType; pub use scoped_pdu::ScopedPdu; pub use scoped_pdu_data::ScopedPduData; pub use snmp_msg::SnmpMsg; pub use var_bind::{VarBind, VarValue}; /// Type alias for the result of a message processing operation. pub type MsgProcessingResult<T> = Result<T, MsgProcessingError>; const SNMP_V3: u32 = 3;