Contributing
Contributions are welcome! If you want to add features or fix bugs, here is how to get started.
Development Environment
You need Rust (stable). The project uses standard Cargo workflows.
Running Tests
cargo test
Code Style
The project uses rustfmt for formatting and clippy for linting.
# Format code
cargo fmt
# Run linter
cargo clippy -- -D warnings
Project Structure
src/main.rs: Entry point for the CLI binary.src/lib.rs: Library entry point (start_tunnels).src/config.rs: Argument parsing and configuration structs.src/wg.rs: WireGuard encapsulation/decapsulation logic.src/virtual_device.rs: The bridge between the Event Bus andsmoltcp.src/virtual_iface/: Contains thesmoltcpinterface polling loops for TCP and UDP.src/tunnel/: Logic for the local TCP/UDP listeners (the "real" sockets).src/events.rs: The asynchronous Event Bus implementation.