#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub struct SnmpMessage {
pub version: SnmpVersion,
pub community: String,
pub pdu_kind: SnmpPduKind,
pub request_id: i32,
pub varbind_oids: Vec<String>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(rename_all = "snake_case"))]
#[non_exhaustive]
pub enum SnmpVersion {
V1,
V2c,
V3,
Other(i64),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(rename_all = "snake_case"))]
#[non_exhaustive]
pub enum SnmpPduKind {
GetRequest,
GetNextRequest,
GetResponse,
SetRequest,
GetBulkRequest,
InformRequest,
TrapV1,
TrapV2,
Report,
Other,
}
impl SnmpPduKind {
pub fn as_str(&self) -> &'static str {
match self {
Self::GetRequest => "get_request",
Self::GetNextRequest => "get_next_request",
Self::GetResponse => "get_response",
Self::SetRequest => "set_request",
Self::GetBulkRequest => "get_bulk_request",
Self::InformRequest => "inform_request",
Self::TrapV1 => "trap_v1",
Self::TrapV2 => "trap_v2",
Self::Report => "report",
Self::Other => "other",
}
}
}