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)};
    let mut buf = [0;65535];
    loop {
        let len = dev.recv(&mut buf).unwrap();
        println!("buf= {:?}",&buf[..len]);
    }
}

Modules§

async_framedasync_io or async_tokio

Structs§

AsyncDeviceasync_io or async_tokio
An async Tun/Tap device wrapper around a Tun/Tap device.
DeviceBuilder
A builder for configuring a TUN/TAP interface.
DeviceImpl
A TUN device using the TUN/TAP Linux driver.
GROTable
send_multiple Using GROTable to assist in writing data
SyncDevice
A transparent wrapper around DeviceImpl, providing synchronous I/O operations.

Enums§

Layer
Represents the OSI layer at which the TUN interface operates.

Constants§

IDEAL_BATCH_SIZE
https://github.com/WireGuard/wireguard-go/blob/master/conn/conn.go#L19
PACKET_INFORMATION_LENGTH
VIRTIO_NET_HDR_LEN

Traits§

ExpandBuffer
ToIpv4Address
Trait for converting various types into an IPv4 address.
ToIpv4Netmask
Trait for converting various types into an IPv4 netmask (prefix length).
ToIpv6Address
Trait for converting various types into an IPv6 address.
ToIpv6Netmask
Trait for converting various types into an IPv6 netmask (prefix length).