45 lines
915 B
Bash
45 lines
915 B
Bash
# Copyright (c) 2016 Gentoo Foundation
|
|
# All rights reserved. Released under the 2-clause BSD license.
|
|
|
|
wireguard_depend()
|
|
{
|
|
program /usr/bin/wg
|
|
after interface
|
|
before dhcp
|
|
}
|
|
|
|
wireguard_pre_start()
|
|
{
|
|
[[ $IFACE == wg* ]] || return 0
|
|
ip link delete dev "$IFACE" type wireguard 2>/dev/null
|
|
ebegin "Creating WireGuard interface $IFACE"
|
|
if ! ip link add dev "$IFACE" type wireguard; then
|
|
eend $?
|
|
return $?
|
|
fi
|
|
eend 0
|
|
|
|
ebegin "Configuring WireGuard interface $IFACE"
|
|
set -- $(_get_array "wireguard_$IFVAR")
|
|
if [[ -f $1 && $# -eq 1 ]]; then
|
|
/usr/bin/wg setconf "$IFACE" "$1"
|
|
else
|
|
eval /usr/bin/wg set "$IFACE" "$@"
|
|
fi
|
|
if [ $? -eq 0 ]; then
|
|
_up
|
|
eend 0
|
|
return
|
|
fi
|
|
e=$?
|
|
ip link delete dev "$IFACE" type wireguard 2>/dev/null
|
|
eend $e
|
|
}
|
|
|
|
wireguard_post_stop()
|
|
{
|
|
[[ $IFACE == wg* ]] || return 0
|
|
ebegin "Removing WireGuard interface $IFACE"
|
|
ip link delete dev "$IFACE" type wireguard
|
|
eend $?
|
|
}
|