wgctrl: golang.zx2c4.com/wireguard/wgctrl Index | Files | Directories

package wgctrl

import "golang.zx2c4.com/wireguard/wgctrl"

Package wgctrl enables control of WireGuard devices on multiple platforms.

For more information on WireGuard, please see https://www.wireguard.com/.

go get golang.zx2c4.com/wireguard/wgctrl


wgctrl can control multiple types of WireGuard devices, including:

- Linux kernel module devices, via generic netlink
- userspace devices (e.g. wireguard-go), via the userspace configuration protocol
  - both UNIX-like and Windows operating systems are supported
- **Experimental:** OpenBSD kernel module devices, via ioctl interface
  See <https://git.zx2c4.com/wireguard-openbsd/about/> for details. Specify
  environment variable WGCTRL_OPENBSD_KERNEL=1 to enable this interface.

As new operating systems add support for in-kernel WireGuard implementations, this package should also be extended to support those native implementations.

If you are aware of any efforts on this front, please file an issue: https://github.com/WireGuard/wgctrl-go/issues/new.

This package implements WireGuard configuration protocol operations, enabling the configuration of existing WireGuard devices. Operations such as creating WireGuard devices, or applying IP addresses to those devices, are out of scope for this package.


Package Files

client.go doc.go os_linux.go

type Client Uses

type Client struct {
    // contains filtered or unexported fields

A Client provides access to WireGuard device information.

func New Uses

func New() (*Client, error)

New creates a new Client.

func (*Client) Close Uses

func (c *Client) Close() error

Close releases resources used by a Client.

func (*Client) ConfigureDevice Uses

func (c *Client) ConfigureDevice(name string, cfg wgtypes.Config) error

ConfigureDevice configures a WireGuard device by its interface name.

Because the zero value of some Go types may be significant to WireGuard for Config fields, only fields which are not nil will be applied when configuring a device.

If the device specified by name does not exist or is not a WireGuard device, an error is returned which can be checked using os.IsNotExist.

func (*Client) Device Uses

func (c *Client) Device(name string) (*wgtypes.Device, error)

Device retrieves a WireGuard device by its interface name.

If the device specified by name does not exist or is not a WireGuard device, an error is returned which can be checked using os.IsNotExist.

func (*Client) Devices Uses

func (c *Client) Devices() ([]*wgtypes.Device, error)

Devices retrieves all WireGuard devices on this system.


internal/wginternalPackage wginternal contains shared internal types for wgctrl.
internal/wglinuxPackage wglinux provides internal access to Linux's WireGuard generic netlink interface.
internal/wglinux/internal/wghPackage wgh is an auto-generated package which contains constants and types used to access WireGuard information using generic netlink.
internal/wgopenbsdPackage wgopenbsd provides internal access to OpenBSD's WireGuard ioctl interface.
internal/wgtestPackage wgtest contains shared testing utilities for package wgctrl.
internal/wguserPackage wguser provides internal access to the userspace WireGuard configuration protocol interface.
wgtypesPackage wgtypes provides shared types for the wgctrl family of packages.

Package wgctrl imports 5 packages (graph) and is imported by 16 packages. Updated 2020-05-15. Refresh now. Tools for package owners.