19 releases (8 stable)
| 1.7.0-RC1 | Nov 14, 2025 |
|---|---|
| 1.6.0 | Jun 24, 2024 |
| 1.6.0-M2 | Apr 25, 2024 |
| 1.5.2 | Jan 16, 2024 |
| 1.2.0 | Nov 11, 2022 |
#260 in Network programming
931 downloads per month
Used in dnp3time
1.5MB
39K
SLoC
Commercial library by Step Function I/O
DNP3
Rust implementation of DNP3 (IEEE 1815) with idiomatic bindings for C, C++, .NET, and Java.
Features
- Subset Level 3 master and outstation components in a single library
- Written in safe Rust with idiomatic bindings for C, C++, .NET Core, and Java.
- Supports TCP, TLS, and serial communication channels
- TLS is implemented using rustls not OpenSSL.
- Automatic mapping between DNP3 and higher-level measurement types
- Built-in logging and protocol decoding
- Blazing fast (and secure) zero-copy / zero-allocation parsing of application data
- Fully asynchronous implementation scales to the OS limit
- Runs on all platforms and operating systems supported by the Tokio runtime:
- Official support for: Windows x64 and Linux x64, AArch64, ARMv7 and ARMv6
- Unofficial support: MacOS, PowerPC, MIPS, FreeBSD, and others
Cargo Features
Default features can be disabled at compile time:
tls- Build the library with support for mutually authenticated TLS using ring for cryptography.tls-aws-lc- Same as thetlsfeature but uses aws-lc-rs for cryptography.serial- Build the library with support for serial ports
Optional features that may be enabled at compile time:
serialize- Add serde de(serialization) support for public configuration types.
License
This crate is made available under a non-commercial / non-production license.
Refer to LICENSE.txt for the terms
of this non-commercial license.
This software is publicly available, but is not "open source". You must purchase a commercial license to use this software for profit.
Please inquire about commercial licensing on our website:
Bindings
Bindings in C, C++, Java, and .NET Core are available for this library. See the documentation for more details.
Dependencies
~8–33MB
~473K SLoC