Files
packages/net/wireguard/Makefile
T
Jason A. Donenfeld c833b249a9 wireguard: version bump
From upstream's changelog:

  * timers: queue up killing ephemerals only if not already

  We fix up a small detail in the timer logic that changed during the last
  snapshot.

  * receive: trim incoming packets to IP header length

  Packets are now trimmed to their actual length, not their length+padding,
  before handing to the rest of the network subsystem, so that packets look
  pretty in tcpdump. This doesn't actually affect what userspace sees, since the
  kernel trims it at a later stage, but it does make pcaps a bit nicer to use.

  * curve25519: use more standard label convention in asm

  This ensures that perf(1) shows the function name instead of the label name.

  * compat: remove padata hotplug code

  Fixes building on kernels that have HOTPLUG enabled but no PADATA support.

  * config: add new line for style
  * device: do-while assignment style
  * peer: explicitly initialize atomic

  Style.

  * noise: fix race when replacing handshake

  Handle a situation in which three peers, all running on the same system, begin
  a handshake with all three of each other, at exactly the same time, on a
  multi-CPU system.

  * random: wait for random bytes when generating nonces and ephemerals

  We've been working with upstream to add a new API to the kernel for ensuring
  that the RNG actually is seeded. Until they merge it for 4.13, we provide a
  poly-fill to the compat code. This means that WireGuard will block during
  handshakes until the RNG has enough entropy, so that it's never in a
  circumstance in which ephemeral keys are generated from bad randomness.

  * go test: properly pad message
  * go test: correct tai64n and formatting
  * external-tests: add keepalive packet
  * go test: use x/crypto for blake2s now that we have 128-bit mac
  * external-tests: trim the fat

  Improvements for the external tests.

  * wg-quick: make sure we have empty table for both v6 and v4
  * wg-quick: match ipv6 default route more broadly

  Tiny nits with wg-quick, one of which should now allow multiple v6-only
  wg-quick instances running at the same time.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2017-06-13 15:35:26 +02:00

117 lines
3.3 KiB
Makefile

#
# 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.20170613
PKG_RELEASE:=1
PKG_SOURCE:=WireGuard-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://git.zx2c4.com/WireGuard/snapshot/
PKG_HASH:=88ac77569eeb79c517318d58a0954caa0a4d2a6a1694e74c2a3b1c14438ac941
PKG_LICENSE:=GPL-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.io
MAINTAINER:=Baptiste Jonglez <openwrt@bitsofnetworks.org>, \
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 runs over 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
endef
define Package/wireguard-tools/description
$(call Package/wireguard/Default/description)
This package provides the userspace control program for wireguard, `wg`,
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 +kmod-ipt-hashlimit
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))