Crate tun_rs

Crate tun_rs 

Source
Expand description

§Example:

use tun_rs::DeviceBuilder;
let dev = DeviceBuilder::new()
            .name("utun7")
            .ipv4("10.0.0.12", 24, None)
            .ipv6("CDCD:910A:2222:5498:8475:1111:3900:2021", 64)
            .mtu(1400)
            .build_sync()
            .unwrap();
let mut buf = [0;65535];
loop {
    let len = dev.recv(&mut buf).unwrap();
    println!("buf= {:?}",&buf[..len]);
}

§Example IOS/Android/… :

#[cfg(unix)]
{
    use tun_rs::SyncDevice;
    // use PacketTunnelProvider/VpnService create tun fd
    let fd = 7799;
    let dev = unsafe{SyncDevice::from_fd(fd).unwrap()};
    let mut buf = [0;65535];
    loop {
        let len = dev.recv(&mut buf).unwrap();
        println!("buf= {:?}",&buf[..len]);
    }
}

Modules§

async_framed(async_io or async_tokio) and async_framed

Structs§

AsyncDeviceUnix and non-macOS
An async Tun/Tap device wrapper around a Tun/Tap device.
BorrowedAsyncDeviceasync_io or async_tokio
BorrowedSyncDeviceUnix
DeviceImplUnix and neither Windows, nor macOS, nor Linux and non-target_env=ohos, nor FreeBSD, nor OpenBSD, nor NetBSD
A TUN device for Android/iOS/…
InterruptEventUnix and interruptible
SyncDevice
A transparent wrapper around DeviceImpl, providing synchronous I/O operations.

Constants§

PACKET_INFORMATION_LENGTH
Length of the protocol info header