mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-01-27 18:18:55 +00:00
At present, the definition of `Device` is heavily nested with conditional code. I've found this hard to understand and navigate. Recent refactorings now made it possible to remove a lot of these layers so we primarily deal with two concepts: - A `Device` which offers async read and non-blocking write functions - A `Tun` abstraction which is platform-specific Instead of dedicated modules, I chose to feature-flag individual functions on `Device` with `#[cfg(target_family = "unix")]` and `#[cfg(target_family = "windows")]`. I find this easier to understand because the code is right next to each other. In addition, changing the module hierarchy of `Device` allows us to remove `async` from the public API which is only introduced by the use of `rtnetlink` in Linux. Instead of making functions across all `Tun` implementations `async`, we embed a "worker" within the `linux::Tun` implementation that gets polled before `poll_read`. --------- Co-authored-by: Gabi <gabrielalejandro7@gmail.com>
Connlib
Firezone's connectivity library shared by all clients.
🚧 Disclaimer 🚧
NOTE: This repository is undergoing heavy construction. You could say we're Building In The Open™ in true open source spirit. Do not attempt to use anything released here until this notice is removed. You have been warned.
Building Connlib
Setting the CONNLIB_MOCK environment variable when packaging for Apple or Android will activate the mock feature flag, replacing connlib's normal connection logic with a mock for testing purposes.
- You'll need a Rust toolchain installed if you don't have one already. We recommend following the instructions at https://rustup.rs.
rustup showwill install all needed targets since they are added torust-toolchain.toml.- Follow the relevant instructions for your platform:
- Apple
- Android
- Linux
- Windows
Apple
Connlib should build successfully with recent macOS and Xcode versions assuming you have Rust installed. If not, open a PR with the notes you found.