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, mode ParseMode) 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
- type ParseMode
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetUnresolvedEndpoints ¶
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
// WireGuard-go binary path, left empty for kernel WireGuard
WgBin string
}
Config represents full wg-quick like config structure