6 个版本
0.3.0 | 2022 年 6 月 26 日 |
---|---|
0.2.0 | 2022 年 5 月 31 日 |
0.1.3 | 2022 年 5 月 11 日 |
693 在 操作系统 中排名
每月 38 次下载
45KB
1K SLoC
Tunio
在跨平台和 Rust 风格中创建 TUN/TAP 接口!
特性 ⭐
- Tokio 支持(可选)。
- TUN/TAP 支持。
- 可扩展架构,便于以后添加其他平台。
简短示例 📜
use std::io::{Read, Write};
use tunio::traits::{DriverT, InterfaceT};
use tunio::{DefaultDriver, DefaultInterface};
fn main() {
// DefaultDriver is an alias for a supported driver for current platform.
// It may be not optimal for your needs (for example, it can lack support of TAP),
// but it will work in some cases. If you need another driver, then import and use it instead.
let mut driver = DefaultDriver::new().unwrap();
// Preparing configuration for new interface. We use `Builder` pattern for this.
let if_config = DefaultDriver::if_config_builder()
.name("iface1".to_string())
.build()
.unwrap();
// Then, we create the interface using config and start it immediately.
let mut interface = DefaultInterface::new_up(&mut driver, if_config).unwrap();
// The interface is created and running.
// Write to interface using Write trait
let buf = [0u8; 4096];
let _ = interface.write(&buf);
// Read from interface using Read trait
let mut mut_buf = [0u8; 4096];
let _ = interface.read(&mut mut_buf);
}
支持的平台 🖥️
计划支持 macOS 的 utun 和 feth 驱动。欢迎提交 PR,我们总是非常感激 😊
相关项目 🔗
netconfig
:用于收集和更改网络接口配置的高级抽象。
依赖项
~3–46MB
~674K SLoC