Documentation ¶
Index ¶
- func Down(cfg *Config, iface string, logger zerolog.Logger) error
- func GetUnresolvedEndpoints(name string) (map[wgtypes.Key]string, error)
- func MatchConfig(pattern string) map[string]*Config
- func ParseKey(key string) (wgtypes.Key, error)
- func PeerStatus(iface string) (map[wgtypes.Key]*wgtypes.Peer, error)
- func Sync(cfg *Config, iface string, logger zerolog.Logger) error
- func SyncAddress(cfg *Config, link netlink.Link, logger zerolog.Logger) error
- func SyncLink(cfg *Config, iface string, logger zerolog.Logger) (netlink.Link, error)
- func SyncRoutes(cfg *Config, link netlink.Link, managedRoutes []net.IPNet, ...) error
- func SyncWireguardDevice(cfg *Config, link netlink.Link, logger zerolog.Logger) error
- func Up(cfg *Config, iface string, logger zerolog.Logger) error
- type Config
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetUnresolvedEndpoints ¶
func MatchConfig ¶
func Sync ¶
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, if Table is not off
func SyncAddress ¶
SyncAddress adds/deletes all lind assigned IPV4 addressed as specified in the config
func SyncLink ¶
SyncLink syncs 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, logger zerolog.Logger) error
SyncRoutes adds/deletes all route assigned IPV4 addressed as specified in the config
func SyncWireguardDevice ¶
SyncWireguardDevice syncs 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 // WireGuard-go binary path, left empty for kernel WireGuard WgBin string }
Config represents full wg-quick like config structure