aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* compat: work around qcom 4.9 backportsJason A. Donenfeld2018-05-221-0/+3
| | | | | | | Qualcomm backported the get_random_u32 patch, even though kernel.org didn't, which is a problem. They also backported another patch in the same place which defines a new macro variable, so use this as a differentiator.
* qemu: bump default kernel for gcc 8.1Jason A. Donenfeld2018-05-221-1/+1
|
* allowedips: set pointer to null before freeingJason A. Donenfeld2018-05-221-2/+3
|
* version: bump snapshot0.0.20180519Jason A. Donenfeld2018-05-192-2/+2
|
* timers: no need to clear keepalive in persistent keepaliveJason A. Donenfeld2018-05-191-4/+1
| | | | | | | | We do this after sending the keepalive anyway. This is something of a regression, though, since before we'd cancel and then send, but now we send and then cancel, so it introduces a potential race, but hopefully that isn't too big of a deal.
* timers: clear send_keepalive timer on sending handshake responseJason A. Donenfeld2018-05-193-6/+12
| | | | | | We reorganize this into also doing so on sending keepalives itself, which means the state machine is much more consistent, even if this was already implied.
* timers: fix up commentJason A. Donenfeld2018-05-191-2/+2
|
* timers: remove slack_timeJason A. Donenfeld2018-05-191-8/+2
| | | | | It's already done implicitly by recent kernels and it's not adding much here.
* timers: reinitialize state on initJason A. Donenfeld2018-05-181-0/+3
|
* tools: fix errno propagation and messagesJason A. Donenfeld2018-05-185-9/+8
|
* timers: round up instead of down in slack_timeJason A. Donenfeld2018-05-181-2/+2
| | | | | | | | | On systems with a 100hz tick, this causes handshakes to be retried in slightly less than 5 seconds, which means they aren't sent at all. This has the effect of the handshakes entirely stopping their retry cycle until the next data packet is sent. Reported-by: Andrew He <andrewhe@mit.edu>
* chacha20poly1305: add mips32 implementationRené van Dorst2018-05-184-5/+913
| | | | Signed-off-by: René van Dorst <opensource@vdorst.com>
* device: remove allowedips before individual peersJason A. Donenfeld2018-05-181-1/+1
| | | | This avoids an O(n^2) traversal in favor of an O(n) one.
* wg-quick: darwin: simpler inclusion checkJason A. Donenfeld2018-05-171-1/+1
|
* wg-quick: darwin: reorder functionsJason A. Donenfeld2018-05-171-19/+19
|
* wg-quick: darwin: networksetup does not like missing stdioJason A. Donenfeld2018-05-171-1/+1
|
* wg-quick: darwin: avoid routing loop if no defaultJason A. Donenfeld2018-05-171-6/+16
|
* wg-quick: darwin: sometimes there are no network servicesJason A. Donenfeld2018-05-171-2/+1
|
* wg-quick: use invoking shell in auto rootingJason A. Donenfeld2018-05-162-2/+3
|
* wg-quick: add intentionally undocumented userspace implementation knobJason A. Donenfeld2018-05-162-3/+3
| | | | | | This knob might disappear at some point, and we don't want to encourage its use, so it's not being documented, but this should help with development of new implementations.
* wg-quick: darwin: use bash from environment and require bash 4+Jason A. Donenfeld2018-05-162-23/+23
| | | | | | For properly configured Homebrew installations /usr/local/bin should be before /bin, so this should still work. This allows the script to be used in more than one setting.
* wg-quick: darwin: restore DNS on downJason A. Donenfeld2018-05-161-13/+25
|
* wg-quick: darwin: bash correctnessJason A. Donenfeld2018-05-161-5/+4
|
* wg-quick: darwin: remove v6 routes after shutdownJason A. Donenfeld2018-05-161-3/+3
| | | | This works around a Darwin kernel bug regarding interface removal.
* wg-quick: darwin: ensure socket directory existsJason A. Donenfeld2018-05-161-5/+1
|
* version: bump snapshot0.0.20180514Jason A. Donenfeld2018-05-152-2/+2
|
* wg-quick: add darwin implementationJason A. Donenfeld2018-05-151-0/+444
| | | | It's pretty rough and leaves much to be desired, but it works.
* compat: backport for OpenSUSE 15Jason A. Donenfeld2018-05-141-1/+1
|
* wg-quick: add wg symlinkJason A. Donenfeld2018-05-141-0/+1
|
* wg-quick: add android implementationJason A. Donenfeld2018-05-141-0/+666
|
* tools: reorganize for multiplatform wg-quickJason A. Donenfeld2018-05-145-7/+9
|
* allowedips: Fix graphviz output after endianness patchJonathan Neuschäfer2018-05-141-3/+16
| | | | | | | | | | | | Commit 5e3532e ("allowedips: use native endian on lookup") did two things: It changed the endianness of (struct allowedips_node).bits to native endian, and it moved the CIDR masking to the output code path (walk_by_peer). Adjust print_node in src/selftest/allowedips.h to deal with these changes. Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
* version: bump snapshot0.0.20180513Jason A. Donenfeld2018-05-132-2/+2
|
* compat: don't clear header bits on RHELJason A. Donenfeld2018-05-131-1/+4
| | | | | | | | | | The 3.10 kernel from Red Hat puts head_frag in between headers_start and headers_end. This is triggered on the latest i40e driver. This results in the packet being freed incorrectly, crashing the system. So, this patch just ensures we don't zero any of the header bits. The whole issue of zeroing header bits probably should be revisited sometime somewhat soon.
* compat: handle RHEL 7.5's recent backportsJason A. Donenfeld2018-05-131-5/+5
|
* queueing: preserve pfmemalloc header bitJason A. Donenfeld2018-05-131-0/+2
|
* chacha20poly1305: make gcc 8.1 happySamuel Neves2018-05-131-2/+2
| | | | | | | | | | | | | | | GCC 8.1 does not know about the invariant `0 <= ctx->num < POLY1305_BLOCK_SIZE`. This results in a warning that `memcpy(ctx->data + num, inp, len);` may overflow the `data` field, which is correct for arbitrary values of `num`. To make the invariant explicit we ensure that `num` is in the required range. An alternative would be to change `ctx->num` to a 4-bit bitfield at the point of declaration. This changes the code from `test ebp, ebp; jz end` to `and ebp, 15; jz end`, which have identical performance characteristics. Signed-off-by: Samuel Neves <sneves@dei.uc.pt>
* socket: use skb_put_dataJason A. Donenfeld2018-05-132-3/+12
|
* wg-quick: preliminary support for go implementationJason A. Donenfeld2018-05-101-1/+7
|
* allowedips: simplify arithmeticJason A. Donenfeld2018-05-101-1/+1
| | | | Suggested-by: Samuel Neves <sneves@dei.uc.pt>
* allowedips: produce better assembly with unsigned arithmeticJason A. Donenfeld2018-05-101-9/+9
| | | | Suggested-by: Samuel Neves <sneves@dei.uc.pt>
* allowedips: use native endian on lookupJason A. Donenfeld2018-05-101-21/+40
|
* allowedips: add selftest for allowedips_walk_by_peerJason A. Donenfeld2018-05-101-1/+60
| | | | | | Also we satisfy lockdep here. Suggested-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
* qemu: retry on 404 in wget for kernel.org raceJason A. Donenfeld2018-04-231-3/+1
|
* version: bump snapshot0.0.20180420Jason A. Donenfeld2018-04-202-2/+2
|
* poly1305: do not place constants in different sectionsJason A. Donenfeld2018-04-181-14/+1
| | | | | | | We're referencing these constants as one contiguous blob, so if there's any merging that goes on with other constants elsewhere (such as the kernel's current poly1305 implementation that we hope to replace), then these will be reordered and have the wrong values.
* compat: remove unused dev_recursion_level backportJason A. Donenfeld2018-04-161-7/+0
|
* blake2s: remove unused helperJason A. Donenfeld2018-04-161-5/+0
|
* send: simplify skb_padding with nice macroJason A. Donenfeld2018-04-161-4/+3
|
* send: account for route-based MTUJason A. Donenfeld2018-04-155-3/+26
| | | | | | | | | | It might be that a particular route has a different MTU than the interface, via `ip route add ... dev wg0 mtu 1281`, for example. In this case, it's important that we don't accidently pad beyond the end of the MTU. We accomplish that in this patch by carrying forward the MTU from the dst if it exists. We also add a unit test for this issue. Reported-by: Roman Mamedov <rm.wg@romanrm.net>