Merge pull request #20 from shellrow/19-upgrade-dependencies

19 upgrade dependencies
main
shellrow 2 years ago committed by GitHub
commit 3f20b971ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      Cargo.toml
  2. 16
      src/interface/windows.rs

@ -1,6 +1,6 @@
[package] [package]
name = "default-net" name = "default-net"
version = "0.12.0" version = "0.13.0"
authors = ["shellrow <shellrow@protonmail.com>"] authors = ["shellrow <shellrow@protonmail.com>"]
edition = "2021" edition = "2021"
description = "Cross-platform library for network interface and gateway" description = "Cross-platform library for network interface and gateway"
@ -17,7 +17,7 @@ libc = "0.2"
memalloc = "0.1.0" memalloc = "0.1.0"
[target.'cfg(windows)'.dependencies.windows] [target.'cfg(windows)'.dependencies.windows]
version = "0.30.0" version = "0.32.0"
features = ["Win32_Foundation","Win32_NetworkManagement_IpHelper", "Win32_Networking_WinSock"] features = ["Win32_Foundation","Win32_NetworkManagement_IpHelper", "Win32_Networking_WinSock"]
[target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies] [target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies]

@ -32,7 +32,7 @@ fn get_mac_through_arp(src_ip: Ipv4Addr, dst_ip: Ipv4Addr) -> MacAddr {
let mut out_buf_len : u32 = 6; let mut out_buf_len : u32 = 6;
let mut target_mac_addr: [u8; 6] = [0; 6]; let mut target_mac_addr: [u8; 6] = [0; 6];
let res = unsafe { SendARP(dst_ip_int, src_ip_int, target_mac_addr.as_mut_ptr() as *mut c_void, &mut out_buf_len) }; let res = unsafe { SendARP(dst_ip_int, src_ip_int, target_mac_addr.as_mut_ptr() as *mut c_void, &mut out_buf_len) };
if res == NO_ERROR { if res == NO_ERROR.0 {
MacAddr::new(target_mac_addr) MacAddr::new(target_mac_addr)
}else{ }else{
MacAddr::zero() MacAddr::zero()
@ -47,19 +47,17 @@ pub fn interfaces() -> Vec<Interface> {
let mut mem = unsafe { allocate(dwsize as usize) } as *mut IP_ADAPTER_ADDRESSES_LH; let mut mem = unsafe { allocate(dwsize as usize) } as *mut IP_ADAPTER_ADDRESSES_LH;
let mut retries = 3; let mut retries = 3;
let mut ret_val; let mut ret_val;
let family: u32 = AF_UNSPEC;
let flags: u32 = GAA_FLAG_INCLUDE_GATEWAYS;
loop { loop {
let old_size = dwsize as usize; let old_size = dwsize as usize;
ret_val = unsafe { GetAdaptersAddresses(family, flags, std::ptr::null_mut::<std::ffi::c_void>(), mem, &mut dwsize) }; ret_val = unsafe { GetAdaptersAddresses(AF_UNSPEC, GAA_FLAG_INCLUDE_GATEWAYS, std::ptr::null_mut::<std::ffi::c_void>(), mem, &mut dwsize) };
if ret_val != ERROR_BUFFER_OVERFLOW || retries <= 0 { if ret_val != ERROR_BUFFER_OVERFLOW.0 || retries <= 0 {
break; break;
} }
unsafe { deallocate(mem as *mut u8, old_size as usize) }; unsafe { deallocate(mem as *mut u8, old_size as usize) };
mem = unsafe { allocate(dwsize as usize) as *mut IP_ADAPTER_ADDRESSES_LH }; mem = unsafe { allocate(dwsize as usize) as *mut IP_ADAPTER_ADDRESSES_LH };
retries -= 1; retries -= 1;
} }
if ret_val == NO_ERROR { if ret_val == NO_ERROR.0 {
// Enumerate all adapters // Enumerate all adapters
let mut cur = mem; let mut cur = mem;
while !cur.is_null() { while !cur.is_null() {
@ -108,7 +106,7 @@ pub fn interfaces() -> Vec<Interface> {
let addr = unsafe { (*cur_a).Address }; let addr = unsafe { (*cur_a).Address };
let prefix_len = unsafe{ (*cur_a).OnLinkPrefixLength }; let prefix_len = unsafe{ (*cur_a).OnLinkPrefixLength };
let sockaddr = unsafe { *addr.lpSockaddr }; let sockaddr = unsafe { *addr.lpSockaddr };
if sockaddr.sa_family == AF_INET as u16 { if sockaddr.sa_family == AF_INET.0 as u16{
let sockaddr: *mut SOCKADDR_IN = addr.lpSockaddr as *mut SOCKADDR_IN; let sockaddr: *mut SOCKADDR_IN = addr.lpSockaddr as *mut SOCKADDR_IN;
let a = unsafe { (*sockaddr).sin_addr.S_un.S_addr }; let a = unsafe { (*sockaddr).sin_addr.S_un.S_addr };
let ipv4 = if cfg!(target_endian = "little") { let ipv4 = if cfg!(target_endian = "little") {
@ -118,7 +116,7 @@ pub fn interfaces() -> Vec<Interface> {
}; };
let ipv4_net: Ipv4Net = Ipv4Net::new(ipv4, prefix_len); let ipv4_net: Ipv4Net = Ipv4Net::new(ipv4, prefix_len);
ipv4_vec.push(ipv4_net); ipv4_vec.push(ipv4_net);
} else if sockaddr.sa_family == AF_INET6 as u16 { } else if sockaddr.sa_family == AF_INET6.0 as u16 {
let sockaddr: *mut SOCKADDR_IN6 = addr.lpSockaddr as *mut SOCKADDR_IN6; let sockaddr: *mut SOCKADDR_IN6 = addr.lpSockaddr as *mut SOCKADDR_IN6;
let a = unsafe { (*sockaddr).sin6_addr.u.Byte }; let a = unsafe { (*sockaddr).sin6_addr.u.Byte };
let ipv6 = Ipv6Addr::from(a); let ipv6 = Ipv6Addr::from(a);
@ -134,7 +132,7 @@ pub fn interfaces() -> Vec<Interface> {
while !cur_g.is_null() { while !cur_g.is_null() {
let addr = unsafe { (*cur_g).Address }; let addr = unsafe { (*cur_g).Address };
let sockaddr = unsafe { *addr.lpSockaddr }; let sockaddr = unsafe { *addr.lpSockaddr };
if sockaddr.sa_family == AF_INET as u16 { if sockaddr.sa_family == AF_INET.0 as u16 {
let sockaddr: *mut SOCKADDR_IN = addr.lpSockaddr as *mut SOCKADDR_IN; let sockaddr: *mut SOCKADDR_IN = addr.lpSockaddr as *mut SOCKADDR_IN;
let a = unsafe { (*sockaddr).sin_addr.S_un.S_addr }; let a = unsafe { (*sockaddr).sin_addr.S_un.S_addr };
let ipv4 = if cfg!(target_endian = "little") { let ipv4 = if cfg!(target_endian = "little") {

Loading…
Cancel
Save