gluxon / wireguard-uapi-rs

MIT License
31 stars 9 forks source link

wireguard-uapi-rs

Build Status codecov Crates version docs.rs MIT

This library implements the WireGuard Netlink API in Rust for Linux.

Here's a quick example.

use failure;
use wireguard_uapi::{DeviceInterface, WgSocket};

fn main() -> Result<(), failure::Error> {
  let mut wg = WgSocket::connect()?;
  let device = wg.get_device(DeviceInterface::from_name("wgtest0"))?;

  print_device(&device);
  Ok(())
}

Permissions

Compiled binaries need the CAP_NET_ADMIN capability to read network interfaces. If you're getting an access error while using this library, make sure the compiled executable has that permission. If you trust your compiled binary, one way to grant it is:

sudo setcap CAP_NET_ADMIN=+eip ./my-compiled-binary

Disclaimer

This isn't an official WireGuard product. (Although I'm interested in making it so.)

Feel free to file bugs.