#network

default-net

Cross-platform library for network interface and gateway

9 releases (breaking)

Uses new Rust 2021

0.11.0 May 5, 2022
0.9.0 Mar 28, 2022
0.5.0 Nov 13, 2021
0.2.0 May 6, 2021

#440 in Network programming

Download history 689/week @ 2022-08-09 748/week @ 2022-08-16 639/week @ 2022-08-23 631/week @ 2022-08-30 545/week @ 2022-09-06 461/week @ 2022-09-13 302/week @ 2022-09-20 342/week @ 2022-09-27 437/week @ 2022-10-04 439/week @ 2022-10-11 539/week @ 2022-10-18 765/week @ 2022-10-25 853/week @ 2022-11-01 670/week @ 2022-11-08 897/week @ 2022-11-15 1021/week @ 2022-11-22

3,541 downloads per month
Used in fewer than 11 crates

MIT license

81KB
2K SLoC

default-net Crates.io License

default-net provides a cross-platform API for network interface and gateway.

  • Get default Network Interface and Gateway information
  • Get list of available Network Interfaces

Supported platform

  • Linux
  • macOS
  • Windows

Usage

Add default-net to your dependencies

[dependencies]
default-net = "0.11.0"

Example

The following example retrieves and displays information about the default network interface.

use default_net;

fn main(){
    match default_net::get_default_interface() {
        Ok(default_interface) => {
            println!("Default Interface");
            println!("\tIndex: {}", default_interface.index);
            println!("\tName: {}", default_interface.name);
            println!("\tFriendly Name: {:?}", default_interface.friendly_name);
            println!("\tDescription: {:?}", default_interface.description);
            println!("\tType: {}", default_interface.if_type.name());
            if let Some(mac_addr) = default_interface.mac_addr {
                println!("\tMAC: {}", mac_addr);
            }else{
                println!("\tMAC: (Failed to get mac address)");
            }
            println!("\tIPv4: {:?}", default_interface.ipv4);
            println!("\tIPv6: {:?}", default_interface.ipv6);
            println!("\tFlags: {:?}", default_interface.flags);
            println!("\tTransmit Speed: {:?}", default_interface.transmit_speed);
            println!("\tReceive Speed: {:?}", default_interface.receive_speed);
            if let Some(gateway) = default_interface.gateway {
                println!("Default Gateway");
                println!("\tMAC: {}", gateway.mac_addr);
                println!("\tIP: {}", gateway.ip_addr);
            }else {
                println!("Default Gateway: (Not found)");
            }
        },
        Err(e) => {
            println!("{}", e);
        },
    }
}

Tested on

  • Linux
    • Ubuntu
      • 21.10
      • 20.04
      • 18.04
    • Kali
      • 2022.1 (VM)
      • 2021.1 (VM)
  • macOS 11.6
  • Windows
    • Windows 10 21H2 19044.1586
    • Windows 11 21H2 22000.493 (VM)

For more details, see examples or doc.

Dependencies

~0–44MB
~724K SLoC