Crate async_snmp

Crate async_snmp 

Source
Expand description

§async-snmp

Modern, async-first SNMP client library for Rust.

§Features

  • Full SNMPv1, v2c, and v3 support
  • Async-first API built on Tokio
  • Zero-copy BER encoding/decoding
  • Type-safe OID and value handling
  • Config-driven client construction

§Quick Start

use async_snmp::{Auth, Client, oid};
use std::time::Duration;

#[tokio::main]
async fn main() -> Result<(), async_snmp::Error> {
    // SNMPv2c client
    let client = Client::builder("192.168.1.1:161", Auth::v2c("public"))
        .timeout(Duration::from_secs(5))
        .connect()
        .await?;

    let result = client.get(&oid!(1, 3, 6, 1, 2, 1, 1, 1, 0)).await?;
    println!("sysDescr: {:?}", result.value);

    Ok(())
}

§SNMPv3 Example

use async_snmp::{Auth, Client, oid, v3::{AuthProtocol, PrivProtocol}};

#[tokio::main]
async fn main() -> Result<(), async_snmp::Error> {
    let client = Client::builder("192.168.1.1:161",
        Auth::usm("admin")
            .auth(AuthProtocol::Sha256, "authpass123")
            .privacy(PrivProtocol::Aes128, "privpass123"))
        .connect()
        .await?;

    let result = client.get(&oid!(1, 3, 6, 1, 2, 1, 1, 1, 0)).await?;
    println!("sysDescr: {:?}", result.value);

    Ok(())
}

Re-exports§

pub use agent::Agent;
pub use agent::AgentBuilder;
pub use agent::VacmBuilder;
pub use agent::VacmConfig;
pub use agent::View;
pub use client::Auth;
pub use client::BulkWalk;
pub use client::Client;
pub use client::ClientBuilder;
pub use client::ClientConfig;
pub use client::CommunityVersion;
pub use client::OidOrdering;
pub use client::UsmAuth;
pub use client::UsmBuilder;
pub use client::V3SecurityConfig;
pub use client::Walk;
pub use client::WalkMode;
pub use client::WalkStream;
pub use error::AuthErrorKind;
pub use error::CryptoErrorKind;
pub use error::DecodeErrorKind;
pub use error::EncodeErrorKind;
pub use error::Error;
pub use error::ErrorStatus;
pub use error::OidErrorKind;
pub use error::Result;
pub use handler::BoxFuture;
pub use handler::GetNextResult;
pub use handler::GetResult;
pub use handler::MibHandler;
pub use handler::OidTable;
pub use handler::RequestContext;
pub use handler::Response;
pub use handler::SecurityModel;
pub use handler::SetResult;
pub use message::SecurityLevel;
pub use notification::Notification;
pub use notification::NotificationReceiver;
pub use notification::NotificationReceiverBuilder;
pub use notification::UsmUserConfig;
pub use notification::validate_notification_varbinds;
pub use oid::Oid;
pub use pdu::GenericTrap;
pub use pdu::Pdu;
pub use pdu::PduType;
pub use pdu::TrapV1Pdu;
pub use transport::SharedUdpHandle;
pub use transport::SharedUdpTransport;
pub use transport::TcpTransport;
pub use transport::Transport;
pub use transport::UdpTransport;
pub use v3::AuthProtocol;
pub use v3::EngineCache;
pub use v3::LocalizedKey;
pub use v3::MasterKey;
pub use v3::MasterKeys;
pub use v3::ParseProtocolError;
pub use v3::PrivProtocol;
pub use value::Value;
pub use varbind::VarBind;
pub use version::Version;

Modules§

agent
SNMP Agent (RFC 3413).
ber
BER (Basic Encoding Rules) codec for SNMP.
cli
CLI utilities for async-snmp.
client
SNMP client implementation.
error
Error types for async-snmp.
format
Formatting utilities for SNMP values.
handler
Handler types and traits for SNMP MIB operations.
message
SNMP message wrappers.
notification
SNMP Notification Receiver (RFC 3413).
oid
Object Identifier (OID) type.
pdu
SNMP Protocol Data Units (PDUs).
prelude
Prelude module for convenient imports.
testing
Testing utilities exposed via the testing feature.
transport
Transport layer abstraction.
v3
SNMPv3 security module.
value
SNMP value types.
varbind
Variable binding (VarBind) type.
version
SNMP version enumeration.

Macros§

oid
Macro to create an OID at compile time.

Type Aliases§

SharedClient
Type alias for a client using the shared UDP transport.
TcpClient
Type alias for a client using a TCP connection.
UdpClient
Type alias for a client using a dedicated UDP socket.