kilo/vendor/golang.zx2c4.com/wireguard/wgctrl
leonnicolas 6a696e03e7
migrate to golang.zx2c4.com/wireguard/wgctrl (#239)
* migrate to golang.zx2c4.com/wireguard/wgctrl

This commit introduces the usage of wgctrl.
It avoids the usage of exec calls of the wg command
and parsing the output of `wg show`.

Signed-off-by: leonnicolas <leonloechner@gmx.de>

* vendor wgctrl

Signed-off-by: leonnicolas <leonloechner@gmx.de>

* apply suggestions from code review

Remove wireguard.Enpoint struct and use net.UDPAddr for the resolved
endpoint and addr string (dnsanme:port) if a DN was supplied.

Signed-off-by: leonnicolas <leonloechner@gmx.de>

* pkg/*: use wireguard.Enpoint

This commit introduces the wireguard.Enpoint struct.
It encapsulates a DN name with port and a net.UPDAddr.
The fields are private and only accessible over exported Methods
to avoid accidental modification.

Also iptables.GetProtocol is improved to avoid ipv4 rules being applied
by `ip6tables`.

Signed-off-by: leonnicolas <leonloechner@gmx.de>

* pkg/wireguard/conf_test.go: add tests for Endpoint

Signed-off-by: leonnicolas <leonloechner@gmx.de>

* cmd/kg/main.go: validate port range

Signed-off-by: leonnicolas <leonloechner@gmx.de>

* add suggestions from review

Signed-off-by: leonnicolas <leonloechner@gmx.de>

* pkg/mesh/mesh.go: use Equal func

Implement an Equal func for Enpoint and use it instead of comparing
strings.

Signed-off-by: leonnicolas <leonloechner@gmx.de>

* cmd/kgctl/main.go: check port range

Signed-off-by: leonnicolas <leonloechner@gmx.de>

* vendor

Signed-off-by: leonnicolas <leonloechner@gmx.de>
2022-01-30 17:38:45 +01:00
..
internal migrate to golang.zx2c4.com/wireguard/wgctrl (#239) 2022-01-30 17:38:45 +01:00
wgtypes migrate to golang.zx2c4.com/wireguard/wgctrl (#239) 2022-01-30 17:38:45 +01:00
.cibuild.sh migrate to golang.zx2c4.com/wireguard/wgctrl (#239) 2022-01-30 17:38:45 +01:00
.gitignore migrate to golang.zx2c4.com/wireguard/wgctrl (#239) 2022-01-30 17:38:45 +01:00
CONTRIBUTING.md migrate to golang.zx2c4.com/wireguard/wgctrl (#239) 2022-01-30 17:38:45 +01:00
LICENSE.md migrate to golang.zx2c4.com/wireguard/wgctrl (#239) 2022-01-30 17:38:45 +01:00
README.md migrate to golang.zx2c4.com/wireguard/wgctrl (#239) 2022-01-30 17:38:45 +01:00
client.go migrate to golang.zx2c4.com/wireguard/wgctrl (#239) 2022-01-30 17:38:45 +01:00
doc.go migrate to golang.zx2c4.com/wireguard/wgctrl (#239) 2022-01-30 17:38:45 +01:00
os_linux.go migrate to golang.zx2c4.com/wireguard/wgctrl (#239) 2022-01-30 17:38:45 +01:00
os_openbsd.go migrate to golang.zx2c4.com/wireguard/wgctrl (#239) 2022-01-30 17:38:45 +01:00
os_userspace.go migrate to golang.zx2c4.com/wireguard/wgctrl (#239) 2022-01-30 17:38:45 +01:00
os_windows.go migrate to golang.zx2c4.com/wireguard/wgctrl (#239) 2022-01-30 17:38:45 +01:00

README.md

wgctrl Test Status Go Reference Go Report Card

Package wgctrl enables control of WireGuard devices on multiple platforms.

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

MIT Licensed.

go get golang.zx2c4.com/wireguard/wgctrl

Overview

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 (read-only), via ioctl 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.

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.