summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorEmīls <emils@mullvad.net>2020-11-06 14:39:52 +0000
committerEmīls <emils@mullvad.net>2020-11-09 10:49:36 +0000
commit4487c1efab4c86b93d271e8542d631967ee31724 (patch)
tree0c21fa9cfb9e852b24eba1b9444971a1c5d5236e
parent98209f1669c0834fe48729f020b15646916903b8 (diff)
downloadmullvadvpn-4487c1efab4c86b93d271e8542d631967ee31724.tar.xz
mullvadvpn-4487c1efab4c86b93d271e8542d631967ee31724.zip
Enable NM's WireGuard via an environment variable
-rw-r--r--talpid-core/src/dns/linux/mod.rs2
-rw-r--r--talpid-core/src/tunnel/wireguard/mod.rs15
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");
}