Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
897c0de
Add boringtun as a 3rdparty module
oskirby Apr 16, 2026
6fb3691
Add support for specifying features when building rust crates
oskirby Apr 16, 2026
e851975
Add boringtun library to network extension build
oskirby Apr 16, 2026
2ba9f5b
Add class to parse and validate wireguard interface config
oskirby Apr 20, 2026
5f9b2d8
Initial attempt to add tunnel bringup in the network extension
oskirby Apr 20, 2026
f2d3de3
Split MacOS controller implementations for network extension
oskirby Apr 21, 2026
98bec8a
Get wireguard tunnel bringup to be somewhat stable
oskirby Apr 22, 2026
b9033a1
Implement routing table setup for allowed IP ranges
oskirby Apr 22, 2026
2a13199
Implement a parser method to the RoutePrefix class
oskirby Apr 22, 2026
1648a0f
Improve the debug experience by installing dSYM into bundle
oskirby Apr 23, 2026
8eb278d
Fix double-release in socket/source cleanup
oskirby Apr 23, 2026
4b6f033
Optimize heap usage and chase down a crash during tunnel shutdown
oskirby Apr 23, 2026
ecb85ef
Invert split tunneling logic - included flows are bound into VPN
oskirby Apr 23, 2026
b7152eb
Calculate MTU dynamically
oskirby Apr 23, 2026
a04d0d7
Use a dispatch queue to mutlithread the encryption workers
oskirby Apr 24, 2026
af688b9
More memory refinement - I think I fixed a leak too
oskirby Apr 24, 2026
72dbe24
Refactor statusUpdated signal to use a ControllerStatus class
oskirby Apr 24, 2026
8e5ece3
Make the ControllerStatus a Q_PROPERTY and tidy up getStatus() callbacks
oskirby Apr 24, 2026
238f9d8
Add logger support for NSError
oskirby Apr 25, 2026
6f130f1
Implement status reporting via handleAppMessage
oskirby Apr 27, 2026
e241892
The RouteManager is no longer necessary
oskirby Apr 27, 2026
75646c3
Fix a rebase fail in IOSController::checkStatus()
oskirby Apr 28, 2026
8093028
Fix ConnectionHealth compile fail on MZ_MOBILE
oskirby Apr 28, 2026
4a9cae6
Refactoring: Split wireguard tunnel and peer into separate classes
oskirby Apr 30, 2026
35920e9
Move packet rx and tx into their own worker threads
oskirby May 12, 2026
ad7c684
Configure the utun packet backlog size
oskirby May 13, 2026
51ba366
Move peer route setup into WireguardPeer class
oskirby May 14, 2026
c1699b5
Set RTF_HOST for host routes instead of using a netmask
oskirby May 14, 2026
c1e04e9
Turns out we can perform bypassing by binding the interface now
oskirby May 14, 2026
038fe7d
Initial attempt at server switching support
oskirby May 14, 2026
ecb8c7f
Fixup status generation for NetmgrController
oskirby Apr 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,6 @@
[submodule "3rdparty/c-ares"]
path = 3rdparty/c-ares
url = https://github.com/c-ares/c-ares
[submodule "3rdparty/boringtun"]
path = 3rdparty/boringtun
url = https://github.com/cloudflare/boringtun
1 change: 1 addition & 0 deletions 3rdparty/boringtun
Submodule boringtun added at fa9792
35 changes: 29 additions & 6 deletions macos/networkextension/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -52,19 +52,42 @@ set_target_properties(networkextension PROPERTIES
target_compile_options(networkextension PUBLIC "-fobjc-arc" "-fno-objc-arc-exceptions")
target_compile_definitions(networkextension PRIVATE "$<$<CONFIG:Debug>:MZ_DEBUG>")

# Improve the macOS debug experience - tune for LLDB and copy dSYM into
# the bundle when we are building for the Debug configuration.
target_compile_options(networkextension PRIVATE $<$<CONFIG:Debug>:-O0 -gfull -glldb>)
target_link_options(networkextension PRIVATE $<$<CONFIG:Debug>:-O0 -gfull -glldb>)
add_custom_command(TARGET networkextension POST_BUILD
COMMAND ${CMAKE_COMMAND} -E rm -rf $<TARGET_FILE:networkextension>.dSYM
COMMAND ${CMAKE_COMMAND} -E $<IF:$<CONFIG:Debug>,env,true> -- dsymutil $<TARGET_FILE:networkextension> -o $<TARGET_FILE:networkextension>.dSYM
)

target_link_libraries(networkextension PRIVATE ${FW_FOUNDATION})
target_link_libraries(networkextension PRIVATE ${FW_NW_EXTENSION})
target_sources(networkextension PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/bypasstcpflow.h
${CMAKE_CURRENT_SOURCE_DIR}/bypasstcpflow.mm
${CMAKE_CURRENT_SOURCE_DIR}/bypassudpflow.h
${CMAKE_CURRENT_SOURCE_DIR}/bypassudpflow.mm
${CMAKE_CURRENT_SOURCE_DIR}/interfaceconfig.h
${CMAKE_CURRENT_SOURCE_DIR}/interfaceconfig.mm
${CMAKE_CURRENT_SOURCE_DIR}/main.mm
${CMAKE_CURRENT_SOURCE_DIR}/routemanager.h
${CMAKE_CURRENT_SOURCE_DIR}/routemanager.mm
${CMAKE_CURRENT_SOURCE_DIR}/utils.h
${CMAKE_CURRENT_SOURCE_DIR}/utils.mm
${CMAKE_CURRENT_SOURCE_DIR}/wireguardpeer.h
${CMAKE_CURRENT_SOURCE_DIR}/wireguardpeer.mm
${CMAKE_CURRENT_SOURCE_DIR}/wireguardstatus.h
${CMAKE_CURRENT_SOURCE_DIR}/wireguardstatus.mm
${CMAKE_CURRENT_SOURCE_DIR}/wireguardtunnel.h
${CMAKE_CURRENT_SOURCE_DIR}/wireguardtunnel.mm
${CMAKE_CURRENT_SOURCE_DIR}/VPNSplitTunnelProvider.mm
)

include(${CMAKE_SOURCE_DIR}/scripts/cmake/rustlang.cmake)
add_rust_library(boringtun
PACKAGE_DIR ${CMAKE_SOURCE_DIR}/3rdparty/boringtun
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}
FEATURES ffi-bindings
CRATE_NAME boringtun
)
target_include_directories(networkextension PRIVATE ${CMAKE_SOURCE_DIR}/3rdparty/boringtun/boringtun/src)
target_link_libraries(networkextension PRIVATE boringtun)

# Install an embedded provisioning profile if one exists in the source directory.
if((NOT XCODE) AND (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/embedded.provisionprofile))
target_sources(networkextension PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/embedded.provisionprofile)
Expand Down
Loading
Loading