8 个版本

0.4.1 2024年1月9日
0.4.0 2023年1月23日
0.3.5 2023年1月23日
0.3.3 2022年1月3日
0.0.1 2020年6月6日

#139 in Unix API

Download history 73/week @ 2024-04-29 61/week @ 2024-05-06 49/week @ 2024-05-13 119/week @ 2024-05-20 86/week @ 2024-05-27 95/week @ 2024-06-03 50/week @ 2024-06-10 71/week @ 2024-06-17 133/week @ 2024-06-24 152/week @ 2024-07-01 83/week @ 2024-07-08 71/week @ 2024-07-15 65/week @ 2024-07-22 82/week @ 2024-07-29 61/week @ 2024-08-05 70/week @ 2024-08-12

每月 283 次下载

MIT/Apache

245KB
6K SLoC

Rust 的 NetworkManager 绑定

Crates.io docs.rs license CI

NetworkManager 的 Rust 绑定,使用 D-Bus 消息总线系统

状态

注意:目前我无法抽出时间来维护这个项目。欢迎贡献者!!

该项目仍在开发中。目前实现的各个部分可以在文档中找到。

  • NetworkManager D-Bus API >= v1.24.2

使用方法

使用以下命令将 networkmanager 和 dbus 添加到您的 Cargo.toml

[dependencies]
networkmanager = "0.4"
dbus = "0.9"

示例

use networkmanager::devices::{Any, Device, Wired, Wireless};
use networkmanager::{Error, NetworkManager};

use dbus::blocking::Connection;

fn main() -> Result<(), Error> {
    let dbus_connection = Connection::new_system()?;

    let nm = NetworkManager::new(&dbus_connection);

    for dev in nm.get_devices()? {
        match dev {
            Device::Ethernet(x) => {
                println!("Is autoconnected: {:?}", x.autoconnect()?);
                println!("Speed: {:?}", x.speed()?);
                println!("S390 Subchannels: {:?}", x.s390_subchannels()?);
                println!("Carrier: {:?}", x.carrier()?);
            }
            Device::WiFi(x) => {
                println!("Access Point: {:?}", x.access_points()?);
            }
            _ => {}
        }
    }

    let enp0s2 = nm.get_device_by_ip_iface("enp0s2")?;
    match enp0s2 {
        Device::Ethernet(x) => {
            // NetworkManager >= 1.24
            // println!("Hardware Address: {:?}", Any::hw_address(&x)?);

            // NetworkManager < 1.24
            // println!("Hardware Address: {:?}", Wired::hw_address(&x)?);

            println!("Speed: {:?}", x.speed()?);
        }
        _ => {}
    }

    Ok(())
}

构建前提条件

  • Debian 及其衍生版本(例如 Ubuntu)

    • network-manager
    • libdbus-1-dev
    • pkg-config
  • Fedora

    • NetworkManager
    • dbus-devel
    • pkg-config

待办事项

  • 实现
    • 设备
      • 任何
      • 通用
      • 无线
      • 有线
      • ADSL
      • 蓝牙
      • 聚合
      • 桥接
      • 虚拟
      • 无限带宽
      • IP隧道
      • 低功耗蓝牙
      • macsec
      • macVLAN
      • 调制解调器
      • OLPCMesh
      • OVSBridge
      • OVSInterface
      • OVSPort
      • PPP
      • 统计信息
      • 团队
      • TUN/TAP
      • VETH
      • VLAN
      • VRF
      • VXLAN
      • Wi-Fi P2P
      • WiMax
      • Wireguard
      • Wpan
    • 配置
      • IP4
      • IP6
      • DHCP4
      • DHCP6
    • 接入点
    • 连接活动
    • NetworkManager(部分实现)
    • 代理管理器
    • 检查点
    • DNS管理器
    • PPP
    • 密钥代理
    • 设置
    • 连接设置
    • VPN 连接
    • VPN 插件
    • Wi-Fi P2P
    • WiMax NSP
  • 通用
    • 改进错误处理
    • dbus::arg::Variants 转换

许可证

许可权归以下之一

由您选择。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义的任何有意提交以包含在作品中的贡献,将按照上述方式双重许可,不附加任何额外条款或条件。

依赖项

~6MB
~133K SLoC