fix ip & route cfg on windows (#28)

This commit is contained in:
Sijie.Sun
2024-03-09 00:24:16 +08:00
committed by GitHub
parent 5f30747f62
commit cb0df51319
7 changed files with 82 additions and 38 deletions
+9 -3
View File
@@ -7,6 +7,7 @@ use std::{
use async_stream::stream;
use futures::{Future, FutureExt, Sink, SinkExt, Stream, StreamExt};
use network_interface::NetworkInterfaceConfig;
use tokio::{sync::Mutex, time::error::Elapsed};
use std::pin::Pin;
@@ -258,14 +259,19 @@ impl Tunnel for TunnelWithCustomInfo {
}
pub(crate) fn get_interface_name_by_ip(local_ip: &IpAddr) -> Option<String> {
let ifaces = pnet::datalink::interfaces();
if local_ip.is_unspecified() || local_ip.is_multicast() {
return None;
}
let ifaces = network_interface::NetworkInterface::show().ok()?;
for iface in ifaces {
for ip in iface.ips {
if ip.ip() == *local_ip {
for addr in iface.addr {
if addr.ip() == *local_ip {
return Some(iface.name);
}
}
}
tracing::error!(?local_ip, "can not find interface name by ip");
None
}