You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

116 lines
3.3 KiB

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>
7 years ago
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>
7 years ago
  1. #
  2. # Copyright (C) 2016-2017 Jason A. Donenfeld <Jason@zx2c4.com>
  3. # Copyright (C) 2016 Baptiste Jonglez <openwrt@bitsofnetworks.org>
  4. # Copyright (C) 2016-2017 Dan Luedtke <mail@danrl.com>
  5. #
  6. # This is free software, licensed under the GNU General Public License v2.
  7. # See /LICENSE for more information.
  8. include $(TOPDIR)/rules.mk
  9. include $(INCLUDE_DIR)/kernel.mk
  10. PKG_NAME:=wireguard
  11. PKG_VERSION:=0.0.20170613
  12. PKG_RELEASE:=1
  13. PKG_SOURCE:=WireGuard-$(PKG_VERSION).tar.xz
  14. PKG_SOURCE_URL:=https://git.zx2c4.com/WireGuard/snapshot/
  15. PKG_HASH:=88ac77569eeb79c517318d58a0954caa0a4d2a6a1694e74c2a3b1c14438ac941
  16. PKG_LICENSE:=GPL-2.0
  17. PKG_LICENSE_FILES:=COPYING
  18. PKG_BUILD_DIR:=$(BUILD_DIR)/WireGuard-$(PKG_VERSION)
  19. PKG_BUILD_PARALLEL:=1
  20. PKG_USE_MIPS16:=0
  21. # Wireguard's makefile needs this to know where to build the kernel module
  22. export KERNELDIR:=$(LINUX_DIR)
  23. include $(INCLUDE_DIR)/package.mk
  24. define Package/wireguard/Default
  25. SECTION:=net
  26. CATEGORY:=Network
  27. SUBMENU:=VPN
  28. URL:=https://www.wireguard.io
  29. MAINTAINER:=Baptiste Jonglez <openwrt@bitsofnetworks.org>, \
  30. Dan Luedtke <mail@danrl.com>, \
  31. Jason A. Donenfeld <Jason@zx2c4.com>
  32. endef
  33. define Package/wireguard/Default/description
  34. WireGuard is a novel VPN that runs inside the Linux Kernel and utilizes
  35. state-of-the-art cryptography. It aims to be faster, simpler, leaner, and
  36. more useful than IPSec, while avoiding the massive headache. It intends to
  37. be considerably more performant than OpenVPN. WireGuard is designed as a
  38. general purpose VPN for running on embedded interfaces and super computers
  39. alike, fit for many different circumstances.
  40. It runs over UDP.
  41. endef
  42. define Package/wireguard
  43. $(call Package/wireguard/Default)
  44. TITLE:=Wireguard meta-package
  45. DEPENDS:=+wireguard-tools +kmod-wireguard
  46. endef
  47. include $(INCLUDE_DIR)/kernel-defaults.mk
  48. include $(INCLUDE_DIR)/package-defaults.mk
  49. # Used by Build/Compile/Default
  50. MAKE_PATH:=src/tools
  51. define Build/Compile
  52. $(MAKE) $(KERNEL_MAKEOPTS) M="$(PKG_BUILD_DIR)/src" modules
  53. $(call Build/Compile/Default)
  54. endef
  55. define Package/wireguard/install
  56. true
  57. endef
  58. define Package/wireguard/description
  59. $(call Package/wireguard/Default/description)
  60. endef
  61. define Package/wireguard-tools
  62. $(call Package/wireguard/Default)
  63. TITLE:=Wireguard userspace control program (wg)
  64. DEPENDS:=+libmnl
  65. endef
  66. define Package/wireguard-tools/description
  67. $(call Package/wireguard/Default/description)
  68. This package provides the userspace control program for wireguard, `wg`,
  69. and a netifd protocol helper.
  70. endef
  71. define Package/wireguard-tools/install
  72. $(INSTALL_DIR) $(1)/usr/bin/
  73. $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/tools/wg $(1)/usr/bin/
  74. $(INSTALL_DIR) $(1)/lib/netifd/proto/
  75. $(INSTALL_BIN) ./files/wireguard.sh $(1)/lib/netifd/proto/
  76. endef
  77. define KernelPackage/wireguard
  78. SECTION:=kernel
  79. CATEGORY:=Kernel modules
  80. SUBMENU:=Network Support
  81. TITLE:=Wireguard kernel module
  82. DEPENDS:=+IPV6:kmod-udptunnel6 +kmod-udptunnel4 +kmod-ipt-hashlimit
  83. FILES:= $(PKG_BUILD_DIR)/src/wireguard.$(LINUX_KMOD_SUFFIX)
  84. AUTOLOAD:=$(call AutoProbe,wireguard)
  85. endef
  86. define KernelPackage/wireguard/description
  87. $(call Package/wireguard/Default/description)
  88. This package provides the kernel module for wireguard.
  89. endef
  90. $(eval $(call BuildPackage,wireguard))
  91. $(eval $(call BuildPackage,wireguard-tools))
  92. $(eval $(call KernelPackage,wireguard))