1 个不稳定版本
0.1.0 | 2020 年 8 月 28 日 |
---|
#8 在 #snmp
用于 msnmp
79KB
1K SLoC
SNMPv3 消息处理
SNMP 消息处理 实现了准备发送消息和从接收到的消息中提取数据的原语。
支持的 PDU 类型
- GetRequest
- GetNextRequest
- GetBulkRequest
- Response
- SetRequest
- SNMPv2-Trap
- InformRequest
许可证
许可方式为以下之一
- Apache License, Version 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确说明,否则根据 Apache-2.0 许可证定义,任何有意提交以包含在作品中的贡献,都应按照上述方式双许可,不附加任何额外条款或条件。
lib.rs
:
用于发送和接收 SNMP 消息的原语。
支持的 PDU 类型
- GetRequest
- GetNextRequest
- GetBulkRequest
- Response
- SetRequest
- SNMPv2-Trap
- InformRequest
示例
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 和 decrypt_scoped_pdu 提供了使用安全模型的便捷方式
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
});
依赖项
~355KB