diff options
| -rw-r--r-- | talpid-core/Cargo.toml | 2 | ||||
| -rw-r--r-- | talpid-core/src/tunnel/openvpn/windows.rs | 11 |
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 { |
