async_snmp/handler/
context.rs

1//! Request context for MIB handlers.
2
3use std::net::SocketAddr;
4
5use bytes::Bytes;
6
7use crate::message::SecurityLevel;
8use crate::pdu::PduType;
9use crate::version::Version;
10
11use super::SecurityModel;
12
13/// Request context passed to MIB handlers.
14///
15/// Contains information about the incoming request for authorization decisions,
16/// including VACM-resolved access control information when VACM is enabled.
17#[derive(Debug, Clone)]
18pub struct RequestContext {
19    /// Source address of the request.
20    pub source: SocketAddr,
21    /// SNMP version.
22    pub version: Version,
23    /// Security model used.
24    pub security_model: SecurityModel,
25    /// Security name (community string or username).
26    pub security_name: Bytes,
27    /// Security level (v3 only, NoAuthNoPriv for v1/v2c).
28    pub security_level: SecurityLevel,
29    /// Context name (v3 only, empty for v1/v2c).
30    pub context_name: Bytes,
31    /// Request ID from the PDU.
32    pub request_id: i32,
33    /// PDU type (GetRequest, GetNextRequest, etc.).
34    pub pdu_type: PduType,
35    /// Resolved group name (if VACM enabled).
36    pub group_name: Option<Bytes>,
37    /// Read view name (if VACM enabled).
38    pub read_view: Option<Bytes>,
39    /// Write view name (if VACM enabled).
40    pub write_view: Option<Bytes>,
41}