Expand description
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, UDP, 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
§Security
Written in safe Rust, with sources of panics restricted by lints, and the parsing of data received from the network proven panic-free at link time. See the security page of the guide for what is enforced and proven.
§Cargo Features
Default features can be disabled at compile time:
tls- Build the library with support for mutually authenticated TLS using ring for cryptography.serial- Build the library with support for serial ports
Optional features that may be enabled at compile time:
tls-aws-lc- Same as thetlsfeature but uses aws-lc-rs for cryptography.serialization- Add serde de(serialization) support for public configuration types.
The minimum supported Rust version is 1.88.
§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:
§AI-assisted development
Subject to the applicable license, AI assistants are welcome for evaluating, integrating, debugging,
and testing this library and for authorized maintenance. Section 2.6 prohibits using the library,
its source, documentation, tests, binaries, or derived materials to design, develop, specify, test,
validate, or improve any other implementation of a protocol it implements, including through
requirement extraction or use as a reference, oracle, or test peer. This applies regardless of
commercial, open-source, private, or competitive status, subject to the exceptions in the agreement.
The license does not permit redistributing the software, including sending it to an AI service for
any of those purposes. Text and data mining rights, including for AI training, are reserved subject
to the permissions and exceptions stated in Section 3.3. This summary does not amend the license.
The LICENSE.txt included with each release governs that release; the latest versions are
LICENSE.txt and
AGENTS.md.
§Bindings
Bindings in C, C++, Java, and .NET Core are available for this library. See the documentation for more details.
Modules§
- app
- Application layer types shared by both the master and outstation APIs
- decode
- Types used to control decoding in the log
- link
- Types specific to the link-layer
- master
- Types and traits specific to masters
- outstation
- Types and traits specific to outstations
- serial
- Entry points and types for serial
- tcp
- Entry points and types for TCP
- udp
- Entry points and types for UDP
Constants§
- VERSION
- Current version of the library