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.