Crate getaddrs [−] [src]
getaddrs
provides a safe interface for the system's network interface data.
The InterfaceAddrs
struct provides access to the system's network
interface data. You can either iterate over it or consume it and convert
it into an InterfaceMap
(a HashMap<String, Vec<InterfaceAddr>>
) for
more convenient access by interface name.
Examples
You can access the basic information of the system in a few lines. The following program prints all the known addresses.
use getaddrs::InterfaceAddrs; let addrs = InterfaceAddrs::query_system() .expect("System has no network interfaces."); for addr in addrs { println!("{}: {:?}", addr.name, addr.address); }
The InterfaceFlags
struct provides access to info about the
state of an interface. This program prints the addresses of only
interfaces which are up.
use getaddrs::{InterfaceAddrs, if_flags}; let addrs = InterfaceAddrs::query_system() .expect("System has no network interfaces."); for addr in addrs { if addr.flags.contains(if_flags::IFF_UP) { println!("{}: {:?}", addr.name, addr.address); } }
You can convert the InterfaceAddrs
struct into a HashMap
easily.
InterfaceMap
is an alias for HashMap<String, Vec<InterfaceAddr>>
for
easier reference.
use getaddrs::{InterfaceAddrs, InterfaceAddr, InterfaceMap}; use std::collections::HashMap; let interfaces: InterfaceMap = InterfaceAddrs::query_system() .expect("System has no network interfaces.") .into(); // Convert to a hash map // Print all the addresses of the loopback interface if let Some(addrs) = interfaces.get("lo") { println!("Loopback addresses:"); for addr in addrs { println!("\t{:?}", addr); } }
Modules
if_flags |
Structs
InterfaceAddr |
Represents the configuration and state of a network interface. Interfaces are uniquely identified by name, and each interface is likely to be referred to multiple times, e.g. one for IPv4 and one for IPv6. |
InterfaceAddrs |
Represents a handle into the operating system's knowledge about network interfaces present on the system. Allows the user to iterate over interface configurations. |
Enums
InterfaceIfu |
Represents the ifu of an interface: either its broadcast address or point-to-point destination address. |
Type Definitions
InterfaceMap |