mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-03-22 05:41:54 +00:00
As a next step in refactoring the tunnel implementation, I am removing the `device_handler` task and instead use a poll-based function to read from the device. Removing the task means there is one less component that accesses the `Tunnel` via shared-memory. The final one after this PR is the `peer_handler`. Once all shared-access is gone, we can stop using `Arc<Tunnel>` and with it, remove all uses of `Mutex` in the tunnel and simply use `&mut self`. To remove the `device_handler`, we introduce a `Device::poll_read` function that we call as the very first thing in the `Tunnel`'s poll-function. At a later point, we want to think about prioritization within the event loop. I'd suggest deferring that until we have removed the locks as handling the guards is a bit finicky at this stage.
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.