netwatcher
netwatcher
is a cross-platform Rust 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.
Current platform suport
Platform | Min Version | List | Watch | Notes |
---|---|---|---|---|
Windows | - | ✅ | ✅ | |
Mac | 10.14 | ✅ | ✅ | |
Linux | - | ✅ | ✅ | Creates a background thread |
iOS | 12.0 | ✅ | ✅ | |
Android | - | ✅ | ❌ | Linux-style watch fails on Android 11+ due to privacy restrictions. Alternatives WIP. |
Usage
Listing interfaces
/// Returns a HashMap from ifindex (a `u32`) to an `Interface` struct
let interfaces = list_interfaces.unwrap;
for i in interfaces.values
Watching for changes to interfaces
let handle = watch_interfaces;
// keep `handle` alive as long as you want callbacks
// ...
drop;
Licence
Apache License Version 2.0 - see LICENSE
.