6a696e03e7
* 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> |
||
---|---|---|
.. | ||
internal | ||
wgtypes | ||
.cibuild.sh | ||
.gitignore | ||
client.go | ||
CONTRIBUTING.md | ||
doc.go | ||
LICENSE.md | ||
os_linux.go | ||
os_openbsd.go | ||
os_userspace.go | ||
os_windows.go | ||
README.md |
wgctrl
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
- See https://git.zx2c4.com/wireguard-openbsd/about/ for details.
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.