Skip to content

A simple, well-tested, cross-platform Rust crate for Tun/Tap

License

Notifications You must be signed in to change notification settings

siegfried/utuntap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Universal Tun/Tap for Rust

Crates.io

This library aims to provide robust, well-tested, unified APIs to open Tun/Tap devices on different OSes. It is runtime-agnostic so that you can create your cross-platform wrappers for Tokio, async-std and so on.

Usage

It simply provides options to open Tun/Tap device files. More options are listed in the documentation.

use utuntap::tun;


let (mut file, filename) = tun::OpenOptions::new()
    .packet_info(false) // Only available on Linux
    .open(10)
    .expect("failed to open device");

Support Platforms

OS CI Status Comment
Linux Build Status musl is also supported.
OpenBSD builds.sr.ht status According to the manual, each packet read or written is prefixed with a tunnel header consisting of a 4-byte network byte order integer containing the address family. The values are listed here.
macOS TUN-only A 4-byte address family prefixed is required by read and write: [0u8, 0, 0, 2] for IPv4; [0u8, 0, 0, 10] for IPv6.

About

A simple, well-tested, cross-platform Rust crate for Tun/Tap

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published