Function local_ip_address::linux::list_afinet_netifas
source · pub fn list_afinet_netifas() -> Result<Vec<(String, IpAddr)>, Error>
Expand description
Perform a search over the system’s network interfaces using Netlink Route information,
retrieved network interfaces belonging to both socket address families
AF_INET
and AF_INET6
are retrieved along with the interface address name.
§Example
use std::net::IpAddr;
use local_ip_address::list_afinet_netifas;
let ifas = list_afinet_netifas().unwrap();
if let Some((_, ipaddr)) = ifas
.iter()
.find(|(name, ipaddr)| *name == "en0" && matches!(ipaddr, IpAddr::V4(_))) {
// This is your local IP address: 192.168.1.111
println!("This is your local IP address: {:?}", ipaddr);
}
Examples found in repository?
examples/show_ip_and_ifs.rs (line 24)
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
fn main() {
match local_ip() {
Ok(ip) => println!("Local IPv4: {}", ip),
Err(err) => println!("Failed to get local IPv4: {}", err),
};
match local_ipv6() {
Ok(ip) => println!("Local IPv6: {}", ip),
Err(err) => println!("Failed to get local IPv6: {}", err),
};
// this is only supported on linux currently
#[cfg(target_os = "linux")]
match local_broadcast_ip() {
Ok(ip) => println!("Local broadcast IPv4: {}", ip),
Err(err) => println!("Failed to get local broadcast IPv4: {}", err),
};
match list_afinet_netifas() {
Ok(netifs) => {
println!("Got {} interfaces", netifs.len());
for netif in netifs {
println!("IF: {}, IP: {}", netif.0, netif.1);
}
}
Err(err) => println!("Failed to get list of network interfaces: {}", err),
};
}