getifaddrs

Crates.iogetifaddrs
lib.rsgetifaddrs
version0.1.5
sourcesrc
created_at2024-09-04 22:11:19.425867
updated_at2024-11-14 17:35:01.185063
descriptionA cross-platform library for retrieving network interface information
homepage
repositoryhttps://github.com/mmastrac/getifaddrs
max_upload_size
id1363881
size38,759
Matt Mastracci (mmastrac)

documentation

README

getifaddrs

A cross-platform library for retrieving network interface information.

This crate provides a simple and consistent API for querying network interface details across different operating systems. It supports Unix-like systems (Linux, macOS, *BSD) and Windows.

Features

  • Retrieve network interface information (name, IP address, netmask, flags, etc.)
  • Filter interfaces based on various criteria (loopback, IPv4/IPv6, name, index)
  • Cross-platform support (Unix-like systems and Windows)
  • Provides a cross-platform implementation of if_indextoname and if_nametoindex

Usage

Add this to your Cargo.toml:

[dependencies]
getifaddrs = "0.1"

Example

use getifaddrs::{getifaddrs, InterfaceFlags};

fn main() -> std::io::Result<()> {
    for interface in getifaddrs()? {
        println!("Interface: {}", interface.name);
        println!("  Address: {}", interface.address);
        if let Some(netmask) = interface.netmask {
            println!("  Netmask: {}", netmask);
        }
        println!("  Flags: {:?}", interface.flags);
        if interface.flags.contains(InterfaceFlags::UP) {
            println!("  Status: Up");
        } else {
            println!("  Status: Down");
        }
        println!();
    }
    Ok(())
}

License

This project is licensed under the MIT License.

Commit count: 16

cargo fmt