#以太网 #ioctl #命令 #信息 #接口 #端口 #siocethtool

ethernet-info

使用SIOCETHTOOL ioctl命令获取以太网信息的库

3个版本

0.0.4 2024年2月29日
0.0.3 2023年9月6日
0.0.2 2023年8月6日

#809网络编程

Download history 4/week @ 2024-03-14 20/week @ 2024-03-28 16/week @ 2024-04-04

每月下载量:102

GPL-2.0 许可协议

42KB
781 代码行

Ethernet Info

crates.io docs.rs ci coverage

该包提供了一种获取接口链路信息的方法,包括端口类型、支持的模式。由于该包基于ioctl命令,因此只能在Linux上使用。

示例

列出所有接口的ethtool相关信息。

use ethernet_info::get_ethernet_info;
let interfaces_eth_info = get_ethernet_info(None);
for interface_info in interfaces_eth_info {
    println!("interface: {}", interface_info.name());
    println!("Port: {}", interface_info.port());
    println!("Supported Ports: {:?}", interface_info.ports());
    println!("Supported: {:?}", interface_info.supported());
}

获取指定接口的ethtool相关信息。

use ethernet_info::get_ethernet_info;
let interfaces_eth_info = get_ethernet_info(Some("enp1s0"));
for interface_info in interfaces_eth_info {
    println!("interface: {}", interface_info.name());
    println!("Port: {}", interface_info.port());
    println!("Supported Ports: {:?}", interface_info.ports());
    println!("Supported: {:?}", interface_info.supported());
}

通过EthernetInfo获取指定接口的ethtool相关信息。

use ethernet_info::EthernetInfo;
if let Ok(interface_info) = EthernetInfo::try_from("enp1s0") {
    println!("interface: {}", interface_info.name());
    println!("Port: {}", interface_info.port());
    println!("Supported Ports: {:?}", interface_info.ports());
    println!("Supported: {:?}", interface_info.supported());
}

测试

此包依赖于硬件,某些测试可能无法在所有机器上通过。请自行更改测试选项。

依赖关系

~2.5MB
~54K SLoC