#tun #queue #devices #multiple #replace #creation #aims

hypertube

超管是一个用于创建和使用TUN设备的库

7个版本

0.2.2 2023年9月10日
0.2.1 2023年9月10日
0.1.1 2023年9月10日
0.0.2 2023年9月4日

#342硬件支持

每月 33 次下载

MIT 许可证

20KB
396

超管

超管是一个用于创建和使用TUN设备的库。超管旨在作为 tun 的替代品,旨在改进命令行界面,并允许同时写入和读取多个队列。

超管不是tun的完美替代品

超管API与tun类似,但并不完全相同。此外,超管目前不是像tun那样跨平台的,但我计划将来实现它。

用法

要创建一个TUN设备,请使用DeviceBuilder。有几种创建DeviceBuilder的方式

  • 超管::构建器()
  • DeviceBuilder::new()DeviceBuilder::default()
  • 设备::构建器()

例如。

let device = builder()
    .build()
    .unwrap();

现在要写入一个Device。要写入或读取一个Device,您需要创建一个队列。有两种类型的队列:阻塞和非阻塞。

let device = builder()
    .with_num_queues(2) 
    .build()
    .unwrap();

let queue1 = device.queue(0);
let queue2 = device.queue_nonblocking(1);

queue2.write(&[some bytes here]);

let mut buf = [0; some size];

queue1.read(&mut buf);

阻塞和非阻塞队列都可以从同一个队列池中访问。队列池是在设备构建时创建的。您可以通过调用Device.create_queue()将队列添加到池中,这将返回新队列的索引,以便于访问。

待办事项

  • 文档
  • 非阻塞队列
  • IPv6 支持
  • 跨平台支持

依赖项

~240KB