Documentation
¶
Index ¶
- func Down(cfg *Config, iface string, logger logrus.FieldLogger) error
- func ParseKey(key string) (wgtypes.Key, error)
- func Sync(cfg *Config, iface string, logger logrus.FieldLogger) error
- func SyncAddress(cfg *Config, link netlink.Link, log logrus.FieldLogger) error
- func SyncLink(cfg *Config, iface string, log logrus.FieldLogger) (netlink.Link, error)
- func SyncRoutes(cfg *Config, link netlink.Link, managedRoutes []net.IPNet, ...) error
- func SyncWireguardDevice(cfg *Config, link netlink.Link, log logrus.FieldLogger) error
- func Up(cfg *Config, iface string, logger logrus.FieldLogger) error
- type Config
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Down ¶
func Down(cfg *Config, iface string, logger logrus.FieldLogger) error
Down destroys the wg interface. Mostly equivalent to `wg-quick down iface`
func Sync ¶
func Sync(cfg *Config, iface string, logger logrus.FieldLogger) error
Sync the config to the current setup for given interface It perform 4 operations: * SyncLink --> makes sure link is up and type wireguard * SyncWireguardDevice --> configures allowedIP & other wireguard specific settings * SyncAddress --> synces linux addresses bounded to this interface * SyncRoutes --> synces all allowedIP routes to route to this interface
func SyncAddress ¶
SyncAddress adds/deletes all lind assigned IPV4 addressed as specified in the config
func SyncLink ¶
SyncLink synces link state with the config. It does not sync Wireguard settings, just makes sure the device is up and type wireguard
func SyncRoutes ¶
func SyncRoutes(cfg *Config, link netlink.Link, managedRoutes []net.IPNet, log logrus.FieldLogger) error
SyncRoutes adds/deletes all route assigned IPV4 addressed as specified in the config
func SyncWireguardDevice ¶
SyncWireguardDevice synces wireguard vpn setting on the given link. It does not set routes/addresses beyond wg internal crypto-key routing, only handles wireguard specific settings
Types ¶
type Config ¶
type Config struct {
wgtypes.Config
// Address list of IP (v4 or v6) addresses (optionally with CIDR masks) to be assigned to the interface. May be specified multiple times.
Address []net.IPNet
// list of IP (v4 or v6) addresses to be set as the interface’s DNS servers. May be specified multiple times. Upon bringing the interface up, this runs ‘resolvconf -a tun.INTERFACE -m 0 -x‘ and upon bringing it down, this runs ‘resolvconf -d tun.INTERFACE‘. If these particular invocations of resolvconf(8) are undesirable, the PostUp and PostDown keys below may be used instead.
DNS []net.IP
// MTU is automatically determined from the endpoint addresses or the system default route, which is usually a sane choice. However, to manually specify an MTU to override this automatic discovery, this value may be specified explicitly.
MTU int
// Table — Controls the routing table to which routes are added.
Table int
// PreUp, PostUp, PreDown, PostDown — script snippets which will be executed by bash(1) before/after setting up/tearing down the interface, most commonly used to configure custom DNS options or firewall rules. The special string ‘%i’ is expanded to INTERFACE. Each one may be specified multiple times, in which case the commands are executed in order.
PreUp string
PostUp string
PreDown string
PostDown string
// RouteProtocol to set on the route. See linux/rtnetlink.h Use value > 4 or default 0
RouteProtocol int
// RouteMetric sets this metric on all managed routes. Lower number means pick this one
RouteMetric int
// Address label to set on the link
AddressLabel string
// SaveConfig — if set to ‘true’, the configuration is saved from the current state of the interface upon shutdown.
// Currently unsupported
SaveConfig bool
}
Config represents full wg-quick like config structure