summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--talpid-core/Cargo.toml2
-rw-r--r--talpid-core/src/tunnel/openvpn/windows.rs11
2 files changed, 12 insertions, 1 deletions
diff --git a/talpid-core/Cargo.toml b/talpid-core/Cargo.toml
index b61de15494..1b2123a06e 100644
--- a/talpid-core/Cargo.toml
+++ b/talpid-core/Cargo.toml
@@ -72,7 +72,7 @@ tun = "0.5"
[target.'cfg(windows)'.dependencies]
widestring = "0.4"
winreg = { version = "0.7", features = ["transactions"] }
-winapi = { version = "0.3.6", features = [ "combaseapi", "handleapi", "ifdef", "libloaderapi", "netioapi", "stringapiset", "synchapi", "winbase", "winuser"] }
+winapi = { version = "0.3.6", features = ["combaseapi", "handleapi", "ifdef", "libloaderapi", "netioapi", "stringapiset", "synchapi", "winbase", "winerror", "winuser"] }
socket2 = "0.3"
pnet_packet = "0.26"
talpid-platform-metadata = { path = "../talpid-platform-metadata" }
diff --git a/talpid-core/src/tunnel/openvpn/windows.rs b/talpid-core/src/tunnel/openvpn/windows.rs
index f5112816b5..a97b923f92 100644
--- a/talpid-core/src/tunnel/openvpn/windows.rs
+++ b/talpid-core/src/tunnel/openvpn/windows.rs
@@ -13,6 +13,8 @@ use winapi::{
guiddef::GUID,
ifdef::NET_LUID,
minwindef::{BOOL, FARPROC, HINSTANCE, HMODULE},
+ netioapi::ConvertInterfaceLuidToGuid,
+ winerror::NO_ERROR,
},
um::{
libloaderapi::{
@@ -152,6 +154,15 @@ impl WintunAdapter {
pub fn luid(&self) -> NET_LUID {
unsafe { self.dll_handle.get_adapter_luid(self.handle) }
}
+
+ pub fn guid(&self) -> io::Result<GUID> {
+ let mut guid = mem::MaybeUninit::zeroed();
+ let result = unsafe { ConvertInterfaceLuidToGuid(&self.luid(), guid.as_mut_ptr()) };
+ if result != NO_ERROR {
+ return Err(io::Error::last_os_error());
+ }
+ Ok(unsafe { guid.assume_init() })
+ }
}
impl Drop for WintunAdapter {