safing-portmaster/service/network
Alexandr Stelnykovych ee8cde31f6 feat: Add Split Tunnel feature (Windows PoC)
Implement initial proof-of-concept for split tunnel functionality on Windows,
allowing applications to route traffic through a designated network interface
while bypassing default system routing.

Features:
- Split tunnel module with TCP/UDP proxy infrastructure
- Firewall integration with split tunnel verdict handling
- SplitTunneling context attached to connections
- Configuration options: enable toggle, interface selection, and policy rules
- UI display of split tunnel connection details in connection info panel
- Subsystem configuration for user-level access

Windows-specific implementation:
- Uses proxy-based interface routing on Windows
- Automatic or manual interface detection and binding
- Support for IPv4 and IPv6 traffic

Note: Linux implementation is under development. SPN takes precedence over
split tunnel when both are enabled, ensuring SPN connections bypass this feature.
2026-04-24 18:04:01 +03:00
..
iphelper Restructure modules (#1572) 2024-08-09 18:15:48 +03:00
netutils Restructure modules (#1572) 2024-08-09 18:15:48 +03:00
packet feat: add VerdictRerouteToSplitTun verdict type 2026-04-17 20:48:48 +03:00
proc Use CallLimiter2 2025-04-07 14:23:58 +02:00
reference Never allow permanent verdicts for ICMP connections 2024-04-10 14:10:34 +02:00
socket Fix linting errors 2024-03-27 16:17:58 +01:00
state Use CallLimiter2 2025-04-07 14:23:58 +02:00
api.go feat: add VerdictRerouteToSplitTun verdict type 2026-04-17 20:48:48 +03:00
api_test.go wip: migrate to mono-repo. SPN has already been moved to spn/ 2024-03-20 09:45:32 +01:00
clean.go Restructure modules (#1572) 2024-08-09 18:15:48 +03:00
connection.go feat: Add Split Tunnel feature (Windows PoC) 2026-04-24 18:04:01 +03:00
connection_android.go wip: migrate to mono-repo. SPN has already been moved to spn/ 2024-03-20 09:45:32 +01:00
connection_handler.go Restructure modules (#1572) 2024-08-09 18:15:48 +03:00
connection_store.go wip: migrate to mono-repo. SPN has already been moved to spn/ 2024-03-20 09:45:32 +01:00
database.go Restructure modules (#1572) 2024-08-09 18:15:48 +03:00
dns.go feat: add VerdictRerouteToSplitTun verdict type 2026-04-17 20:48:48 +03:00
metrics.go feat: add VerdictRerouteToSplitTun verdict type 2026-04-17 20:48:48 +03:00
module.go Feature/systemd query events (#1728) 2024-11-27 17:10:47 +02:00
multicast.go wip: migrate to mono-repo. SPN has already been moved to spn/ 2024-03-20 09:45:32 +01:00
ports.go Restructure modules (#1572) 2024-08-09 18:15:48 +03:00
status.go feat: add VerdictRerouteToSplitTun verdict type 2026-04-17 20:48:48 +03:00