openwrt/package/network/services
Jason A. Donenfeld 81f3f6540e wireguard: bump to 1.0.20200506
* compat: timeconst.h is a generated artifact

Before we were trying to check for timeconst.h by looking in the kernel
source directory. This isn't quite correct on configurations in which
the object directory is separate from the kernel source directory, for
example when using O="elsewhere" as a make option when building the
kernel. The correct fix is to use $(CURDIR), which should point to
where we want.

* compat: use bash instead of bc for HZ-->USEC calculation

This should make packaging somewhat easier, as bash is generally already
available (at least for dkms), whereas bc isn't provided by distros by
default in their build meta packages.

* socket: remove errant restriction on looping to self

It's already possible to create two different interfaces and loop
packets between them. This has always been possible with tunnels in the
kernel, and isn't specific to wireguard. Therefore, the networking stack
already needs to deal with that. At the very least, the packet winds up
exceeding the MTU and is discarded at that point. So, since this is
already something that happens, there's no need to forbid the not very
exceptional case of routing a packet back to the same interface; this
loop is no different than others, and we shouldn't special case it, but
rather rely on generic handling of loops in general. This also makes it
easier to do interesting things with wireguard such as onion routing.
At the same time, we add a selftest for this, ensuring that both onion
routing works and infinite routing loops do not crash the kernel. We
also add a test case for wireguard interfaces nesting packets and
sending traffic between each other, as well as the loop in this case
too. We make sure to send some throughput-heavy traffic for this use
case, to stress out any possible recursion issues with the locks around
workqueues.

* send: cond_resched() when processing tx ringbuffers

Users with pathological hardware reported CPU stalls on CONFIG_
PREEMPT_VOLUNTARY=y, because the ringbuffers would stay full, meaning
these workers would never terminate. That turned out not to be okay on
systems without forced preemption. This commit adds a cond_resched() to
the bottom of each loop iteration, so that these workers don't hog the
core. We don't do this on encryption/decryption because the compat
module here uses simd_relax, which already includes a call to schedule
in preempt_enable.

* selftests: initalize ipv6 members to NULL to squelch clang warning

This fixes a worthless warning from clang.

* send/receive: use explicit unlikely branch instead of implicit coalescing

Some code readibility cleanups.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
(cherry picked from commit 4f6343ffe7)
2020-05-07 13:50:33 +02:00
..
dnsmasq dnsmasq: fix dnssec+ntp chicken-and-egg workaround (FS#2574) 2020-04-25 20:51:46 +02:00
dropbear dropbear: allow build without dbclient 2019-04-18 22:34:19 +02:00
ead ead: use new protocol setting API since libpcap 1.9.0 2018-07-27 11:17:20 +02:00
hostapd wpad-wolfssl: fix crypto_bignum_sub() 2020-05-01 16:19:47 +01:00
igmpproxy igmpproxy: drop SSDP packets 2018-07-30 10:43:36 +02:00
ipset-dns ipset-dns: bump to git HEAD 2017-10-08 20:51:03 +03:00
lldpd lldpd: add option to edit hostname 2019-05-11 16:37:11 +02:00
odhcpd odhcpd: fix PKG_SOURCE_DATE 2020-05-07 08:02:06 +02:00
omcproxy omcproxy: define configuration file 2019-02-27 10:26:14 +01:00
openvpn build: include BUILD_VARIANT in PKG_BUILD_DIR 2019-09-04 13:35:17 +02:00
openvpn-easy-rsa openvpn-easy-rsa: update to 3.0.4 2018-07-30 10:43:38 +02:00
ppp ppp: backport security fixes 2020-02-26 16:40:43 +01:00
relayd relayd: bump to version 2020-04-25 2020-04-27 10:58:16 +01:00
samba36 samba36: allow build with no ipv6 support 2019-02-17 19:22:39 +01:00
uhttpd uhttpd: update to 19.07 Git HEAD 2020-05-06 20:24:38 +02:00
umdns umdns: update to version 2020-04-25 2020-04-27 10:58:15 +01:00
wireguard wireguard: bump to 1.0.20200506 2020-05-07 13:50:33 +02:00