use alloc::vec::Vec;
use core::net::IpAddr;
#[doc(alias = "TRAP")]
#[doc(alias = "GET")]
#[doc(alias = "SET")]
#[doc(alias = "RESPONSE")]
#[doc(alias = "INFORM")]
#[doc(alias = "GETNEXT")]
#[doc(alias = "GETBULK")]
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum SnmpPduType {
Trap,
Get,
Set,
Response,
Inform,
GetNext,
GetBulk,
}
#[doc(alias = "AUTH")]
#[doc(alias = "MD5")]
#[doc(alias = "SHA")]
#[doc(alias = "SHA256")]
#[doc(alias = "SHA384")]
#[doc(alias = "SHA512")]
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum SnmpAuthType {
Md5,
Sha,
Sha256,
Sha384,
Sha512,
}
#[doc(alias = "PRIV")]
#[doc(alias = "DES")]
#[doc(alias = "AES")]
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum SnmpPrivType {
Des,
Aes,
}
#[doc(alias = "VARBIND")]
#[doc(alias = "NULLVAL")]
#[doc(alias = "STRING")]
#[doc(alias = "INT")]
#[doc(alias = "TIMETICKS")]
#[doc(alias = "IPVAL")]
#[doc(alias = "OIDVAL")]
#[doc(alias = "COUNTER32")]
#[doc(alias = "GAUGE32")]
#[doc(alias = "COUNTER64")]
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum VarBindType<'a> {
Null,
String(&'a str),
Int(i32),
TimeTicks(u32),
Ip(IpAddr),
OidVal(&'a str),
Counter32(u32),
Gauge32(u32),
Counter64(u64),
}
#[doc(alias = "VARBIND")]
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct VarBindAst<'a> {
pub oid: &'a str,
pub val: VarBindType<'a>,
}
#[doc(alias = "SNMP1")]
#[doc(alias = "RFC 1157")]
#[doc(alias = "RFC1157")]
#[doc(alias = "TRAP")]
#[doc(alias = "GET")]
#[doc(alias = "GETNEXT")]
#[doc(alias = "SET")]
#[doc(alias = "RESPONSE")]
#[doc(alias = "COMMUNITY")]
#[doc(alias = "ENTERPRISE")]
#[doc(alias = "AGENTIP")]
#[doc(alias = "GENTRAP")]
#[doc(alias = "SPECTRAP")]
#[doc(alias = "SYSUPTIME")]
#[doc(alias = "REQID")]
#[doc(alias = "VARBIND")]
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub struct Snmp1Spec<'a> {
pub community: Option<&'a str>,
pub enterprise: Option<&'a str>,
pub agent_ip: Option<IpAddr>,
pub gen_trap: Option<u32>,
pub spec_trap: Option<u32>,
pub sys_up_time: Option<u32>,
pub varbinds: Vec<VarBindAst<'a>>,
pub pdu_type: Option<SnmpPduType>,
}
#[doc(alias = "SNMP2")]
#[doc(alias = "SNMPv2c")]
#[doc(alias = "RFC 3416")]
#[doc(alias = "RFC3416")]
#[doc(alias = "RFC 1901")]
#[doc(alias = "RFC1901")]
#[doc(alias = "TRAP")]
#[doc(alias = "INFORM")]
#[doc(alias = "GET")]
#[doc(alias = "GETNEXT")]
#[doc(alias = "GETBULK")]
#[doc(alias = "SET")]
#[doc(alias = "RESPONSE")]
#[doc(alias = "COMMUNITY")]
#[doc(alias = "REQID")]
#[doc(alias = "NONREPEATERS")]
#[doc(alias = "MAXREPETITIONS")]
#[doc(alias = "SYSUPTIME")]
#[doc(alias = "OID")]
#[doc(alias = "VARBIND")]
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub struct Snmp2Spec<'a> {
pub community: Option<&'a str>,
pub varbinds: Vec<VarBindAst<'a>>,
pub pdu_type: Option<SnmpPduType>,
pub non_repeaters: Option<u32>,
pub max_repetitions: Option<u32>,
pub req_id: Option<u32>,
}
#[doc(alias = "SNMP3")]
#[doc(alias = "SNMPv3")]
#[doc(alias = "RFC 3414")]
#[doc(alias = "RFC3414")]
#[doc(alias = "RFC 3412")]
#[doc(alias = "RFC 3826")]
#[doc(alias = "RFC 7860")]
#[doc(alias = "TRAP")]
#[doc(alias = "INFORM")]
#[doc(alias = "GET")]
#[doc(alias = "GETNEXT")]
#[doc(alias = "GETBULK")]
#[doc(alias = "SET")]
#[doc(alias = "RESPONSE")]
#[doc(alias = "USER")]
#[doc(alias = "ENGINEID")]
#[doc(alias = "ENGINEBOOTS")]
#[doc(alias = "ENGINETIME")]
#[doc(alias = "CONTEXTNAME")]
#[doc(alias = "AUTH")]
#[doc(alias = "PRIV")]
#[doc(alias = "REQID")]
#[doc(alias = "NONREPEATERS")]
#[doc(alias = "MAXREPETITIONS")]
#[doc(alias = "SYSUPTIME")]
#[doc(alias = "OID")]
#[doc(alias = "VARBIND")]
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub struct Snmp3Spec<'a> {
pub user: Option<&'a str>,
pub engine_id: Option<&'a str>,
pub engine_boots: Option<u32>,
pub engine_time: Option<u32>,
pub context_name: Option<&'a str>,
pub auth: Option<(SnmpAuthType, &'a str)>,
pub priv_param: Option<(SnmpPrivType, &'a str)>,
pub varbinds: Vec<VarBindAst<'a>>,
pub pdu_type: Option<SnmpPduType>,
pub non_repeaters: Option<u32>,
pub max_repetitions: Option<u32>,
pub req_id: Option<u32>,
}
pub type SnmpVarBind<'a> = VarBindAst<'a>;
pub type SnmpValue<'a> = VarBindType<'a>;
pub type SnmpAuthProtocol = SnmpAuthType;
pub type SnmpPrivProtocol = SnmpPrivType;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum SnmpSecurityModel {
Usm,
}