aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/wireguard/Makefile
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2017-10-13 17:05:18 +0200
committerStijn Tintel <stijn@linux-ipv6.be>2017-10-16 14:03:39 +0300
commit907d8703f492bca533743c327ffe60a7405aee28 (patch)
treeaa31037b5f2655873e79b19d8e49a6e32e46e9c9 /package/network/services/wireguard/Makefile
parentbff16304b0bf5ebc98a6599235cc19512d051888 (diff)
downloadupstream-907d8703f492bca533743c327ffe60a7405aee28.tar.gz
upstream-907d8703f492bca533743c327ffe60a7405aee28.tar.bz2
upstream-907d8703f492bca533743c327ffe60a7405aee28.zip
wireguard: add wireguard to base packages
Move wireguard from openwrt/packages to base a package. This follows the pattern of kmod-cake and openvpn. Cake is a fast-moving experimental kernel module that many find essential and useful. The other is a VPN client. Both are inside of core. When you combine the two characteristics, you get WireGuard. Generally speaking, because of the extremely lightweight nature and "stateless" configuration of WireGuard, many view it as a core and essential utility, initiated at boot time and immediately configured by netifd, much like the use of things like GRE tunnels. WireGuard has a backwards and forwards compatible Netlink API, which means the userspace tools should work with both newer and older kernels as things change. There should be no versioning requirements, therefore, between kernel bumps and userspace package bumps. Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Acked-by: Jo-Philipp Wich <jo@mein.io> Acked-by: Felix Fietkau <nbd@nbd.name> (cherry picked from commit 699c6fcc314225f79156a26db418e15bbc6bf10f)
Diffstat (limited to 'package/network/services/wireguard/Makefile')
-rw-r--r--package/network/services/wireguard/Makefile116
1 files changed, 116 insertions, 0 deletions
diff --git a/package/network/services/wireguard/Makefile b/package/network/services/wireguard/Makefile
new file mode 100644
index 0000000000..90d74ad94c
--- /dev/null
+++ b/package/network/services/wireguard/Makefile
@@ -0,0 +1,116 @@
+#
+# Copyright (C) 2016-2017 Jason A. Donenfeld <Jason@zx2c4.com>
+# Copyright (C) 2016 Baptiste Jonglez <openwrt@bitsofnetworks.org>
+# Copyright (C) 2016-2017 Dan Luedtke <mail@danrl.com>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+
+include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/kernel.mk
+
+PKG_NAME:=wireguard
+
+PKG_VERSION:=0.0.20171011
+PKG_RELEASE:=1
+
+PKG_SOURCE:=WireGuard-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=https://git.zx2c4.com/WireGuard/snapshot/
+PKG_HASH:=e2e44ff658743507bca0f6b443c2f85aacc48d507ba2dcd4812717145df10b96
+
+PKG_LICENSE:=GPL-2.0 Apache-2.0
+PKG_LICENSE_FILES:=COPYING
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/WireGuard-$(PKG_VERSION)
+PKG_BUILD_PARALLEL:=1
+PKG_USE_MIPS16:=0
+
+# WireGuard's makefile needs this to know where to build the kernel module
+export KERNELDIR:=$(LINUX_DIR)
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/wireguard/Default
+ SECTION:=net
+ CATEGORY:=Network
+ SUBMENU:=VPN
+ URL:=https://www.wireguard.com
+ MAINTAINER:=Baptiste Jonglez <openwrt@bitsofnetworks.org>, \
+ Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>, \
+ Dan Luedtke <mail@danrl.com>, \
+ Jason A. Donenfeld <Jason@zx2c4.com>
+endef
+
+define Package/wireguard/Default/description
+ WireGuard is a novel VPN that runs inside the Linux Kernel and utilizes
+ state-of-the-art cryptography. It aims to be faster, simpler, leaner, and
+ more useful than IPSec, while avoiding the massive headache. It intends to
+ be considerably more performant than OpenVPN. WireGuard is designed as a
+ general purpose VPN for running on embedded interfaces and super computers
+ alike, fit for many different circumstances. It uses UDP.
+endef
+
+define Package/wireguard
+ $(call Package/wireguard/Default)
+ TITLE:=WireGuard meta-package
+ DEPENDS:=+wireguard-tools +kmod-wireguard
+endef
+
+include $(INCLUDE_DIR)/kernel-defaults.mk
+include $(INCLUDE_DIR)/package-defaults.mk
+
+# Used by Build/Compile/Default
+MAKE_PATH:=src/tools
+
+define Build/Compile
+ $(MAKE) $(KERNEL_MAKEOPTS) M="$(PKG_BUILD_DIR)/src" modules
+ $(call Build/Compile/Default)
+endef
+
+define Package/wireguard/install
+ true
+endef
+
+define Package/wireguard/description
+ $(call Package/wireguard/Default/description)
+endef
+
+define Package/wireguard-tools
+ $(call Package/wireguard/Default)
+ TITLE:=WireGuard userspace control program (wg)
+ DEPENDS:=+libmnl +ip
+endef
+
+define Package/wireguard-tools/description
+ $(call Package/wireguard/Default/description)
+
+ This package provides the userspace control program for WireGuard,
+ `wg(8)`, and a netifd protocol helper.
+endef
+
+define Package/wireguard-tools/install
+ $(INSTALL_DIR) $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/tools/wg $(1)/usr/bin/
+ $(INSTALL_DIR) $(1)/lib/netifd/proto/
+ $(INSTALL_BIN) ./files/wireguard.sh $(1)/lib/netifd/proto/
+endef
+
+define KernelPackage/wireguard
+ SECTION:=kernel
+ CATEGORY:=Kernel modules
+ SUBMENU:=Network Support
+ TITLE:=WireGuard kernel module
+ DEPENDS:=+IPV6:kmod-udptunnel6 +kmod-udptunnel4
+ FILES:= $(PKG_BUILD_DIR)/src/wireguard.$(LINUX_KMOD_SUFFIX)
+ AUTOLOAD:=$(call AutoProbe,wireguard)
+endef
+
+define KernelPackage/wireguard/description
+ $(call Package/wireguard/Default/description)
+
+ This package provides the kernel module for WireGuard.
+endef
+
+$(eval $(call BuildPackage,wireguard))
+$(eval $(call BuildPackage,wireguard-tools))
+$(eval $(call KernelPackage,wireguard))