MCPcopy Index your code
hub / github.com/GamePad64/tunio

github.com/GamePad64/tunio @v0.3.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.3.0 ↗ · + Follow
144 symbols 218 edges 32 files 1 documented · 1% updated 19mo ago★ 324 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Tunio

Crates.io docs.rs

Create TUN/TAP interfaces in cross-platform and idiomatic Rust!

Features ⭐

  • Tokio support (optional).
  • TUN/TAP support.
  • Extensible architecture for adding other platforms later.

Short example 📜

```rust,no_run 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);

}

```

Supported platforms 🖥️

  • Windows, TUN only (using [Wintun] driver).
  • [Wintun] driver requires a prebuilt DLL inside application folder. Please, refer to [Wintun] documentation for more details.
  • Linux

macOS support for utun and feth drivers is planned. Feel free to post a PR, it is always greatly appreciated 😉

Related projects 🔗

  • [netconfig]: A high-level abstraction for gathering and changing network interface configuration.

Extension points exported contracts — how you extend this code

SyncQueueT (Interface)
(no doc) [4 implementers]
src/traits.rs
QueueFdT (Interface)
(no doc) [2 implementers]
src/platform/util.rs
PlatformIfConfigT (Interface)
(no doc) [3 implementers]
src/traits.rs
SessionQueueT (Interface)
(no doc) [2 implementers]
src/platform/wintun/queue.rs
DriverT (Interface)
(no doc) [3 implementers]
src/traits.rs
InterfaceT (Interface)
(no doc) [3 implementers]
src/traits.rs

Core symbols most depended-on inside this repo

get
called by 17
wintun-sys/src/wintun_h.rs
clone
called by 11
src/platform/wintun/wrappers/handle.rs
set
called by 6
wintun-sys/src/wintun_h.rs
write
called by 4
src/platform/wintun/queue.rs
name
called by 3
src/platform/utun/interface.rs
handle
called by 3
src/platform/wintun/event.rs
read
called by 3
src/platform/wintun/wrappers/session.rs
handle
called by 2
src/platform/utun/interface.rs

Shape

Method 96
Class 30
Function 10
Interface 6
Enum 2

Languages

Rust99%
C++1%

Modules by API surface

wintun-sys/src/wintun_h.rs37 symbols
src/platform/wintun/wrappers/session.rs11 symbols
src/platform/wintun/tokio_queue.rs9 symbols
src/platform/wintun/interface.rs8 symbols
src/platform/util.rs8 symbols
src/traits.rs6 symbols
src/platform/wintun/wrappers/adapter.rs6 symbols
src/platform/wintun/queue.rs6 symbols
src/platform/utun/interface.rs6 symbols
src/platform/linux/interface.rs6 symbols
src/platform/wintun/event.rs5 symbols
src/platform/wintun/tokio_interface.rs4 symbols

For agents

$ claude mcp add tunio \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact