Skip to main content

Crate rustnetconf

Crate rustnetconf 

Source
Expand description

§rustnetconf

An async-first NETCONF 1.0/1.1 client library for Rust.

Built on tokio and russh for high-performance, memory-safe network device management.

§Quick Start

use rustnetconf::{Client, Datastore};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut client = Client::connect("10.0.0.1:830")
        .username("admin")
        .password("secret")
        .connect()
        .await?;

    let config = client.get_config(Datastore::Running).await?;
    println!("{config}");

    client.close_session().await?;
    Ok(())
}

§Architecture

Client (thin wrapper) → Session (protocol state) → Framing → Transport (SSH)

See ARCHITECTURE.md for full design details.

Re-exports§

pub use client::Client;
pub use client::ClientBuilder;
pub use client::EditConfigBuilder;
pub use error::NetconfError;
pub use facts::Facts;
pub use notification::Notification;
pub use rpc::RpcErrorInfo;
pub use types::Datastore;
pub use types::DefaultOperation;
pub use types::ErrorOption;
pub use types::LoadAction;
pub use types::LoadFormat;
pub use types::OpenConfigurationMode;
pub use types::TestOption;

Modules§

capability
NETCONF capability URIs and negotiation logic.
client
Thin ergonomic client wrapper over Session.
error
Layered error types for rustnetconf.
facts
Device facts — basic identification gathered after session establishment.
framing
NETCONF message framing layer.
notification
NETCONF event notification types and parsing (RFC 5277).
pool
Async connection pool for managing NETCONF sessions to multiple devices.
rpc
NETCONF RPC serialization and response parsing.
session
NETCONF session management.
transport
Transport layer abstraction for NETCONF.
types
Core types used throughout rustnetconf.
vendor
Vendor profile abstraction for multi-vendor NETCONF support.