Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | data: move from spinlocks to lockless data structurejd/lockless-queuing | Jason A. Donenfeld | 2017-09-16 | 1 | -1/+1 |
| | | | | | Reference: https://www.cs.rochester.edu/research/synchronization/pseudocode/queues.html Original-code-from: @aegis | ||||
* | data: entirely rework parallel system | Samuel Holland | 2017-09-15 | 1 | -1/+0 |
| | | | | | | This removes our dependency on padata. Signed-off-by: Samuel Holland <samuel@sholland.org> | ||||
* | qemu: enable debug info for debug qemu | Jason A. Donenfeld | 2017-09-15 | 1 | -0/+2 |
| | |||||
* | socket: improve reply-to-src algorithm | Jason A. Donenfeld | 2017-08-23 | 2 | -0/+41 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We store the destination IP of incoming packets as the source IP of outgoing packets. When we send outgoing packets, we then ask the routing table for which interface to use and which source address, given our inputs of the destination address and a suggested source address. This all is good and fine, since it means we'll successfully reply using the correct source address, correlating with the destination address for incoming packets. However, what happens when default routes change? Or when interface IP addresses change? Prior to this commit, after getting the response from the routing table of the source address, destination address, and interface, we would then make sure that the source address actually belonged to the outbound interface. If it didn't, we'd reset our source address to zero and re-ask the routing table, in which case the routing table would then give us the default IP address for sending that packet. This worked mostly fine for most purposes, but there was a problem: what if WireGuard legitimately accepted an inbound packet on a default interface using an IP of another interface? In this case, falling back to asking for the default source IP was not a good strategy, since it'd nearly always mean we'd fail to reply using the right source. So, this commit changes the algorithm slightly. Rather than falling back to using the default IP if the preferred source IP doesn't belong to the outbound interface, we have two checks: we make sure that the source IP address belongs to _some_ interface on the system, no matter which one (so long as it's within the network namespace), and we check whether or not the interface of an incoming packet matches the returned interface for the outbound traffic. If both these conditions are true, then we proceed with using this source IP address. If not, we fall back to the default IP address. | ||||
* | netns: work around linux 3.10 issues | Jason A. Donenfeld | 2017-08-03 | 1 | -0/+6 |
| | |||||
* | netns: explictly test reply to sender routing | Jason A. Donenfeld | 2017-08-03 | 1 | -1/+25 |
| | |||||
* | qemu: warn on all unseeded random usage when in debug mode | Jason A. Donenfeld | 2017-07-20 | 1 | -0/+1 |
| | |||||
* | global: wireguard.io --> wireguard.com | Jason A. Donenfeld | 2017-07-20 | 3 | -3/+3 |
| | | | | | Due to concerns with the .io TLD, we are switching to using wireguard.com instead. | ||||
* | qemu: update default testing kernel | Jason A. Donenfeld | 2017-07-07 | 1 | -1/+1 |
| | |||||
* | device: remove icmp conntrack hacks | Jason A. Donenfeld | 2017-06-26 | 1 | -2/+0 |
| | | | | This logic belongs upstream. | ||||
* | ratelimiter: rewrite from scratch | Jason A. Donenfeld | 2017-06-26 | 2 | -2/+1 |
| | | | | | | | This not only removes the depenency on x_tables, but it also gives us much better performance and memory usage. Now, systems are able to have millions of WireGuard interfaces, without having to worry about a thundering herd of garbage collection. | ||||
* | receive: trim incoming packets to IP header length | Jason A. Donenfeld | 2017-06-01 | 1 | -1/+1 |
| | |||||
* | tests: check for stats counter increases | Jason A. Donenfeld | 2017-05-17 | 1 | -0/+4 |
| | | | | | The kernel API for this has changed a lot, so this test is important to ensure our compat layer is doing the right thing. | ||||
* | qemu: new location for test kernels | Jason A. Donenfeld | 2017-05-17 | 1 | -3/+3 |
| | |||||
* | jerry-rig: symlinks are better for tree patching | Jason A. Donenfeld | 2017-05-17 | 1 | -1/+1 |
| | | | | | | Use a symlink instead of lots of ../../.. Suggested-by: Benedikt Morbach <benedikt.morbach@googlemail.com> | ||||
* | noise: redesign preshared key mode | Jason A. Donenfeld | 2017-05-17 | 1 | -2/+2 |
| | |||||
* | qemu: new packages and better debugging | Jason A. Donenfeld | 2017-05-17 | 2 | -12/+13 |
| | |||||
* | netns: cleanup and add diagram | Jason A. Donenfeld | 2017-04-14 | 1 | -7/+18 |
| | |||||
* | qemu: work on ARM64 | Jason A. Donenfeld | 2017-04-14 | 3 | -5/+21 |
| | |||||
* | compat: support 3.12 | Jason A. Donenfeld | 2017-04-09 | 1 | -0/+1 |
| | |||||
* | debug: cleanups | Jason A. Donenfeld | 2017-04-08 | 2 | -3/+3 |
| | |||||
* | qemu: ensure kernel is configured before headers are installed | Jason A. Donenfeld | 2017-04-08 | 1 | -1/+1 |
| | |||||
* | qemu: new stable kernel | Jason A. Donenfeld | 2017-04-04 | 1 | -1/+1 |
| | |||||
* | Update copyright | Jason A. Donenfeld | 2017-01-10 | 2 | -2/+2 |
| | |||||
* | qemu: kernel.org mirrors get updates slowly | Jason A. Donenfeld | 2016-12-29 | 1 | -2/+2 |
| | |||||
* | compat: support 3.18, 3.19, 4.0 | Jason A. Donenfeld | 2016-12-26 | 2 | -3/+3 |
| | |||||
* | qemu: 4.10 needs posix timers | Jason A. Donenfeld | 2016-12-26 | 1 | -0/+1 |
| | |||||
* | tests: avoid non-strict writes via printf | Jason A. Donenfeld | 2016-12-16 | 1 | -11/+8 |
| | |||||
* | qemu: bump kernel version | Jason A. Donenfeld | 2016-12-09 | 1 | -3/+3 |
| | |||||
* | tests: directly kill nmap | Jason A. Donenfeld | 2016-12-04 | 1 | -7/+12 |
| | |||||
* | tests: make sure ncat gets killed | Jason A. Donenfeld | 2016-12-04 | 3 | -11/+11 |
| | |||||
* | tests: be sure we get all messages | Jason A. Donenfeld | 2016-11-29 | 1 | -1/+6 |
| | |||||
* | ratelimiter: load hashlimit at modinsert time | Jason A. Donenfeld | 2016-11-29 | 1 | -1/+1 |
| | | | | This fixes a potential race with net_lock and rtnl_lock. | ||||
* | tests: veth does not come up immediately | Jason A. Donenfeld | 2016-11-21 | 1 | -0/+7 |
| | |||||
* | headers: cleanup notices | Jason A. Donenfeld | 2016-11-21 | 2 | -0/+4 |
| | |||||
* | main: add version to dmesg | Jason A. Donenfeld | 2016-11-21 | 1 | -1/+1 |
| | |||||
* | tests: trim output | Jason A. Donenfeld | 2016-11-15 | 1 | -20/+4 |
| | |||||
* | tests: use private ipv6 addresses | Jason A. Donenfeld | 2016-11-15 | 1 | -18/+18 |
| | |||||
* | socket: ensure that saddr routing can deal with interface removal | Jason A. Donenfeld | 2016-11-15 | 1 | -0/+32 |
| | |||||
* | qemu: kasan needs more memory | Jason A. Donenfeld | 2016-11-06 | 1 | -1/+1 |
| | |||||
* | qemu: use sparsemem always, for kasan | Jason A. Donenfeld | 2016-11-06 | 1 | -0/+1 |
| | |||||
* | qemu: fail if module selftests fail | Jason A. Donenfeld | 2016-11-05 | 1 | -2/+12 |
| | |||||
* | qemu: move marker to top and flush | Jason A. Donenfeld | 2016-11-05 | 1 | -3/+3 |
| | |||||
* | qemu: work around termio race condition | Jason A. Donenfeld | 2016-11-05 | 1 | -1/+6 |
| | |||||
* | qemu: move build outside of kernel dir to avoid kernel's make clean | Jason A. Donenfeld | 2016-11-05 | 2 | -3/+1 |
| | |||||
* | qemu: newer default kernel | Jason A. Donenfeld | 2016-11-03 | 1 | -1/+1 |
| | |||||
* | remote-run: reflect recent makefile changesexperimental-0.0.20161001 | Jason A. Donenfeld | 2016-09-29 | 1 | -1/+1 |
| | |||||
* | git: organize ignore files | Jason A. Donenfeld | 2016-09-29 | 1 | -0/+2 |
| | |||||
* | netns: remove dangling $@ | Jason A. Donenfeld | 2016-08-29 | 1 | -4/+4 |
| | |||||
* | tests: test jumbo frames with more transfer | Jason A. Donenfeld | 2016-08-21 | 1 | -4/+19 |
| |