"PreStartupCommand": "wg genkey | tee privatekey | wg pubkey",
"PostStartupCommand": "export SUBNET_IP=$(echo $SUBNET | cut -d'/' -f 1); ip link del flannel.1 2>/dev/null; echo $PATH >&2; wg-add.sh flannel.1 && wg set flannel.1 listen-port 51820 private-key privatekey && ip addr add $SUBNET_IP/32 dev flannel.1 && ip link set flannel.1 up && ip route add $NETWORK dev flannel.1",
"ShutdownCommand": "ip link del flannel.1",
"SubnetAddCommand": "read PUBLICKEY; wg set flannel.1 peer $PUBLICKEY endpoint $PUBLIC_IP:51820 allowed-ips $SUBNET",
"SubnetRemoveCommand": "read PUBLICKEY; wg set flannel.1 peer $PUBLICKEY remove"
Usage:fmt.Sprintf("(experimental) One of '%s', '%s', '%s', or '%s'",config.FlannelBackendNone,config.FlannelBackendVXLAN,config.FlannelBackendIPSEC,config.FlannelBackendWireguard),
output="$(ip route get "${BASH_REMATCH[1]}"||true)"
[[($output=~ mtu\ ([0-9]+)||($output=~ dev\ ([^ ]+)&&$(ip link show dev "${BASH_REMATCH[1]}")=~ mtu\ ([0-9]+)))&&${BASH_REMATCH[1]}-gt$mtu]]&&mtu="${BASH_REMATCH[1]}"
done < <(wg show "$1" endpoints)
if[[$mtu-eq 0 ]];then
read-r output < <(ip route show default ||true)||true
[[($output=~ mtu\ ([0-9]+)||($output=~ dev\ ([^ ]+)&&$(ip link show dev "${BASH_REMATCH[1]}")=~ mtu\ ([0-9]+)))&&${BASH_REMATCH[1]}-gt$mtu]]&&mtu="${BASH_REMATCH[1]}"
fi
[[$mtu-gt 0 ]]||mtu=1500
ip link set mtu $(( mtu -80)) up dev "$1"
}
# probe for any modules that may be needed
modprobe wireguard
modprobe tun
# try wireguard kernel module first
ip link add "$1"type wireguard &&exit
# try boringtun and let it drop privileges
boringtun "$1"&& auto-mtu "$1"&&exit
# try boringtun w/o dropping privileges
WG_SUDO=1 boringtun "$1"&& auto-mtu "$1"&&exit
# try wireguard-go - p.s. should not use wireguard-go, it leaks memory