diff options
| author | Emīls <emils@mullvad.net> | 2020-11-06 14:39:52 +0000 |
|---|---|---|
| committer | Emīls <emils@mullvad.net> | 2020-11-09 10:49:36 +0000 |
| commit | 4487c1efab4c86b93d271e8542d631967ee31724 (patch) | |
| tree | 0c21fa9cfb9e852b24eba1b9444971a1c5d5236e | |
| parent | 98209f1669c0834fe48729f020b15646916903b8 (diff) | |
| download | mullvadvpn-4487c1efab4c86b93d271e8542d631967ee31724.tar.xz mullvadvpn-4487c1efab4c86b93d271e8542d631967ee31724.zip | |
Enable NM's WireGuard via an environment variable
| -rw-r--r-- | talpid-core/src/dns/linux/mod.rs | 2 | ||||
| -rw-r--r-- | talpid-core/src/tunnel/wireguard/mod.rs | 15 |
2 files changed, 13 insertions, 4 deletions
diff --git a/talpid-core/src/dns/linux/mod.rs b/talpid-core/src/dns/linux/mod.rs index 37fcb06cd9..9eef807b71 100644 --- a/talpid-core/src/dns/linux/mod.rs +++ b/talpid-core/src/dns/linux/mod.rs @@ -152,5 +152,3 @@ pub fn will_use_nm() -> bool { crate::dns::imp::SystemdResolved::new().is_err() && crate::dns::imp::NetworkManager::new().is_ok() } - - diff --git a/talpid-core/src/tunnel/wireguard/mod.rs b/talpid-core/src/tunnel/wireguard/mod.rs index 45d5f1329d..852e5b0996 100644 --- a/talpid-core/src/tunnel/wireguard/mod.rs +++ b/talpid-core/src/tunnel/wireguard/mod.rs @@ -65,6 +65,10 @@ lazy_static! { static ref FORCE_USERSPACE_WIREGUARD: bool = env::var("TALPID_FORCE_USERSPACE_WIREGUARD") .map(|v| v != "0") .unwrap_or(false); + + static ref FORCE_NM_WIREGUARD: bool = env::var("TALPID_FORCE_NM_WIREGUARD") + .map(|v| v != "0") + .unwrap_or(false); } impl WireguardMonitor { @@ -149,7 +153,15 @@ impl WireguardMonitor { ) -> Result<Box<dyn Tunnel>> { #[cfg(target_os = "linux")] if !*FORCE_USERSPACE_WIREGUARD { - if !crate::dns::will_use_nm() { + if *FORCE_NM_WIREGUARD { + if let Ok(tunnel) = wireguard_kernel::NetworkManagerTunnel::new( + route_manager.runtime_handle(), + config, + ) { + log::debug!("Using NetworkManager to use kernel WireGuard implementation"); + return Ok(Box::new(tunnel)); + } + } else if !crate::dns::will_use_nm() { match wireguard_kernel::NetlinkTunnel::new(route_manager.runtime_handle(), config) { Ok(tunnel) => { log::debug!("Using kernel WireGuard implementation"); @@ -165,7 +177,6 @@ impl WireguardMonitor { } }; } - } else { log::debug!("Using userspace WireGuard implementation"); } |
