1#[cfg(target_os = "windows")]
5pub fn win_ifname_to_addr(name: &str) -> std::io::Result<std::net::IpAddr> {
6 macro_rules! ioerr {
7 ($e:expr) => {
8 std::io::Error::new(std::io::ErrorKind::NotFound, $e)
9 };
10 }
11
12 let adapters = ipconfig::get_adapters().map_err(|e| ioerr!(e))?;
13 adapters
14 .iter()
15 .find(|a| a.friendly_name() == name)
16 .ok_or_else(|| ioerr!(format!("No such adapter name [{}]", name)))?
17 .ip_addresses()
18 .first()
19 .ok_or_else(|| ioerr!(format!("No such ip address for name [{}]", name)))
20 .copied()
21}