mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-03-21 21:41:48 +00:00
We encapsulate the internals of `Device` by providing high-level functions on `Device` itself and make all the fields private. From the outside, each consumer this only has an `Arc<Device>` that they can interact with. To achieve this, we use the `arc-swap` crate to atomically swap out the reference to the `Arc<Device>` instead of relying on an `RwLock`. Note that the _reference_ to this `ArcSwapOption` is also wrapped in an `Arc` because we need to share this pointer across many `peer_handler`s. Once we get rid of `Arc<Tunnel>`, this will become a lot simpler.
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.