Crate netwatcher

Source
Expand description

§netwatcher

netwatcher is a cross-platform library for enumerating network interfaces and their IP addresses, featuring the ability to watch for changes to those interfaces efficiently. It uses platform-specific methods to detect when interface changes have occurred instead of polling, which means that you find out about changes more quickly and there is no CPU or wakeup overhead when nothing is happening.

§List example

/// Returns a HashMap from ifindex (a `u32`) to an `Interface` struct
let interfaces = netwatcher::list_interfaces().unwrap();
for i in interfaces.values() {
    println!("interface {} has {} IPs", i.name, i.ips.len());
}

§Watch example

let handle = netwatcher::watch_interfaces(|update| {
    // This callback will fire once immediately with the existing state
 
    // Update includes the latest snapshot of all interfaces
    println!("Current interface map: {:#?}", update.interfaces);
 
    // The `UpdateDiff` describes changes since previous callback
    // You can choose whether to use the snapshot, diff, or both
    println!("ifindexes added: {:?}", update.diff.added);
    println!("ifindexes removed: {:?}", update.diff.removed);
    for (ifindex, if_diff) in update.diff.modified {
        println!("Interface index {} has changed", ifindex);
        println!("Added IPs: {:?}", if_diff.addrs_added);
        println!("Removed IPs: {:?}", if_diff.addrs_removed);
    }
});
// keep `handle` alive as long as you want callbacks
// ...
drop(handle);

Structs§

Interface
Information about one network interface at a point in time.
InterfaceDiff
What changed within a single interface between updates, if it was present in both.
Update
Information delivered via callback when a network interface change is detected.
UpdateDiff
What changed between one Update and the next.
WatchHandle
A handle to keep alive as long as you wish to receive callbacks.

Enums§

Error
Errors in netwatcher or in one of the underlying platform integratinos.

Functions§

list_interfaces
Retrieve information about all enabled network interfaces and their IP addresses.
watch_interfaces
Retrieve interface information and watch for changes, which will be delivered via callback.