net-misc/wireguard: add netifrc script
authorJason A. Donenfeld <zx2c4@gentoo.org>
Fri, 14 Oct 2016 16:25:20 +0000 (18:25 +0200)
committerJason A. Donenfeld <zx2c4@gentoo.org>
Fri, 14 Oct 2016 16:25:50 +0000 (18:25 +0200)
Package-Manager: portage-2.3.2

net-misc/wireguard/files/wireguard-openrc.sh [new file with mode: 0644]
net-misc/wireguard/wireguard-0.0.20161014.ebuild
net-misc/wireguard/wireguard-9999.ebuild

diff --git a/net-misc/wireguard/files/wireguard-openrc.sh b/net-misc/wireguard/files/wireguard-openrc.sh
new file mode 100644 (file)
index 0000000..9c3df6a
--- /dev/null
@@ -0,0 +1,43 @@
+# 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()
+{
+       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()
+{
+       ebegin "Removing WireGuard interface $IFACE"
+       ip link delete dev "$IFACE" type wireguard
+       eend $?
+}
index 83e13fc03a62929f5b07ed92b4c9a6f7234384e2..86294fa415029e789d8f0006de5cef322c330a83 100644 (file)
@@ -53,6 +53,8 @@ src_install() {
        dodoc -r contrib/examples
        linux-mod_src_install
        emake DESTDIR="${D}" PREFIX="${EPREFIX}/usr" -C src/tools install
+       insinto /$(get_libdir)/netifrc/net
+       newins "${FILESDIR}"/wireguard-openrc.sh wireguard.sh
 }
 
 pkg_postinst() {
index 83e13fc03a62929f5b07ed92b4c9a6f7234384e2..86294fa415029e789d8f0006de5cef322c330a83 100644 (file)
@@ -53,6 +53,8 @@ src_install() {
        dodoc -r contrib/examples
        linux-mod_src_install
        emake DESTDIR="${D}" PREFIX="${EPREFIX}/usr" -C src/tools install
+       insinto /$(get_libdir)/netifrc/net
+       newins "${FILESDIR}"/wireguard-openrc.sh wireguard.sh
 }
 
 pkg_postinst() {