summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock1
-rw-r--r--talpid-core/Cargo.toml1
-rw-r--r--talpid-core/src/lib.rs2
-rw-r--r--talpid-core/src/tunnel/mod.rs22
4 files changed, 25 insertions, 1 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 699e31e4a5..05ff2b7f7c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1654,6 +1654,7 @@ dependencies = [
"uuid 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"which 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"widestring 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winreg 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
diff --git a/talpid-core/Cargo.toml b/talpid-core/Cargo.toml
index 23df76dfd8..1041d184a3 100644
--- a/talpid-core/Cargo.toml
+++ b/talpid-core/Cargo.toml
@@ -43,6 +43,7 @@ tokio-core = "0.1"
[target.'cfg(windows)'.dependencies]
widestring = "0.3"
+winreg = "0.5"
[dev-dependencies]
tempfile = "3.0"
diff --git a/talpid-core/src/lib.rs b/talpid-core/src/lib.rs
index 55df5e135f..ecc530aec3 100644
--- a/talpid-core/src/lib.rs
+++ b/talpid-core/src/lib.rs
@@ -34,6 +34,8 @@ extern crate tokio_core;
extern crate uuid;
#[cfg(target_os = "linux")]
extern crate which;
+#[cfg(windows)]
+extern crate winreg;
extern crate openvpn_plugin;
extern crate talpid_ipc;
diff --git a/talpid-core/src/tunnel/mod.rs b/talpid-core/src/tunnel/mod.rs
index 9ae88a70e9..6756f07416 100644
--- a/talpid-core/src/tunnel/mod.rs
+++ b/talpid-core/src/tunnel/mod.rs
@@ -317,5 +317,25 @@ impl CloseHandle {
}
fn is_ipv6_enabled_in_os() -> bool {
- true
+ #[cfg(windows)]
+ {
+ use winreg::enums::*;
+ use winreg::RegKey;
+
+ const IPV6_DISABLED: u8 = 0xFF;
+
+ RegKey::predef(HKEY_LOCAL_MACHINE)
+ .open_subkey(r#"SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"#)
+ .and_then(|ipv6_config| ipv6_config.get_value("DisabledComponents"))
+ .map(|ipv6_disabled_bits: u32| (ipv6_disabled_bits & 0xFF) == IPV6_DISABLED as u32)
+ .unwrap_or(false)
+ }
+ #[cfg(target_os = "linux")]
+ {
+ true
+ }
+ #[cfg(target_os = "macos")]
+ {
+ true
+ }
}