Commit graph

809 commits

Author SHA1 Message Date
Mathias Hall-Andersen edbce6b400 Merge branch 'master' of ssh://git.zx2c4.com/wireguard-go 2018-05-05 02:23:03 +02:00
Mathias Hall-Andersen 6db41d5a26 Initial version of migration to new event model
- Begin move away from global timer state.
- Made logging format more consistent
2018-05-05 02:20:52 +02:00
Jason A. Donenfeld e1de0f229a uapi: use kqueue for sock deletion on darwin 2018-05-04 21:51:55 +02:00
Jason A. Donenfeld ac898bb35a tun: print automatically assigned interface name to stdout
This way scripts know what process they just started.
2018-05-04 21:20:19 +02:00
Jason A. Donenfeld de7ecc571b tun: allow darwin to auto assign names 2018-05-04 21:11:51 +02:00
Jason A. Donenfeld 0f322f83f5 warning: put into main 2018-05-04 19:50:08 +02:00
Jason A. Donenfeld a040786645 global: Add SPDX tags and copyright header
Mathias should probably add his copyright headers to each file too.
2018-05-03 15:06:25 +02:00
Jason A. Donenfeld 209dd22ea0 Daemonize with environment variable 2018-05-03 14:55:10 +02:00
Jason A. Donenfeld 258a9223b9 Start to dust off Darwin 2018-05-03 14:55:10 +02:00
Jason A. Donenfeld 168ef61a63 Add missing locks and fix debug output, and try to flush queues
Flushing queues on exit is sort of a partial solution, but this could be
better. Really what we want is for no more packets to be enqueued after
isUp is set to false.
2018-05-01 17:46:28 +02:00
Jason A. Donenfeld b34604245e Clear src cache if route changes to new ifindex 2018-04-27 05:41:07 +02:00
Jason A. Donenfeld 92261b770f Fix error handling and cleanup of netlink listener 2018-04-27 02:47:31 +02:00
Jason A. Donenfeld 0715bdf353 Fix wrong debug messages 2018-04-20 07:13:40 +02:00
Jason A. Donenfeld 5ba84696e2 Rework sticky sockets 2018-04-20 06:51:28 +02:00
Jason A. Donenfeld f5c256affd Check for correct first nibble
The code before assumed that the flow label was always zero.
2018-04-20 06:51:28 +02:00
Jason A. Donenfeld 4973ea0c9e Signal using select and a pipe for bringing down TUN reader
Waiting on resolution of these to fix in better way:
- https://github.com/golang/go/issues/22939
- https://github.com/golang/go/issues/24331
2018-04-20 04:16:34 +02:00
Jason A. Donenfeld 676bb91434 We can determine the interface name ourselves 2018-04-19 16:00:20 +02:00
Jason A. Donenfeld ab875491c0 Do not hard code MTU default 2018-04-19 15:54:51 +02:00
Mathias Hall-Andersen ac9912345b Fixed read from closed channel
A premature waitgroup .Done resulted in reading from closed channel.
This caused a nil-pointer deref & crash.

Added additional debugging when closing routines.
2018-04-18 20:29:48 +02:00
Jason A. Donenfeld 26a56a652e Allow determining name 2018-04-18 16:42:30 +02:00
Jason A. Donenfeld 0b940a7568 Use socketcall on x86 2018-04-18 10:17:04 +02:00
Jason A. Donenfeld eb6728400b Use simple 16-bit integer for persistent keepalive
Races for this aren't a huge problem.
2018-04-18 07:24:33 +02:00
Jason A. Donenfeld 099219be2a Align 64-bit atomics
64-bit varibles that are accessed using the Go atomic functions must be
8-byte aligned on 32-bit platforms. Otherwise there are crashes.
2018-04-18 06:54:21 +02:00
Mathias Hall-Andersen 6cecaf3157 Begin work on full device<->device unit-test
To simulate a full interaction between two WireGuard
instances without networking, using dummy instances of the interfaces
2018-03-08 16:44:46 +01:00
Jason A. Donenfeld fd248c6cb1 Support nopi mode 2018-02-28 19:58:51 +01:00
Jason A. Donenfeld 09de7d1342 Close tun fd when bringing down tunnel 2018-02-18 22:54:33 +01:00
Jason A. Donenfeld 519c5d200a Fix timer typo 2018-02-18 20:58:43 +01:00
Mathias Hall-Andersen 9de17e6c9c Seperated fwmark update code into function 2018-02-18 20:49:03 +01:00
Jason A. Donenfeld 8f1d1b8c54 MPLv2 for App Store 2018-02-13 19:43:47 +01:00
Dominik Süß fa37039c3b Reimplemented bind_rtmgrp in pure Go
Getting rid of the Cgo dependency for listing on netlink.

Ported original patch from "syscall" to "golang.org/x/sys/unix".

Signed-off-by: Dominik Süß <dominik.suess@outlook.at>
Co-Authored-By: Mathias Hall-Andersen <mathias@hall-andersen.dk>
2018-02-13 16:43:07 +01:00
Jason A. Donenfeld ff8f3a412e Use relative imports 2018-02-12 23:49:41 +01:00
Mathias Hall-Andersen ea4ea6f933 Revert "Don't use modules"
This reverts commit bffe99aead.
2018-02-12 22:29:11 +01:00
Jason A. Donenfeld bffe99aead Don't use modules
Feel free to revert this if you have a strong feeling about it. But so
far as I can see, it adds a lot of complexity for basically no upsides.
2018-02-12 20:13:03 +01:00
Mathias Hall-Andersen 77285c99aa Moved test-processes to background 2018-02-11 23:31:53 +01:00
Mathias Hall-Andersen 6cba91999c TUN status hack was causing spam during shutdown 2018-02-11 23:26:54 +01:00
Mathias Hall-Andersen 04ded4c631 Added missing mutex acquisition 2018-02-11 23:07:07 +01:00
Mathias Hall-Andersen 8bdadaae59 Removed exported methods from ratelimiter package 2018-02-11 23:01:55 +01:00
Mathias Hall-Andersen 5f0a91a127 Moved ratelimiter to internal package 2018-02-11 22:53:39 +01:00
Mathias Hall-Andersen 1cf23c0005 Moved tai64n into sub-package 2018-02-11 19:25:33 +01:00
Mathias Hall-Andersen 743364f647 Fixed tabs 2018-02-11 19:02:50 +01:00
Mathias Hall-Andersen 73cb1a1155 Reverted event changes
This feature was not needed for Android, upon further inspection.
2018-02-11 18:55:30 +01:00
Mathias Hall-Andersen b461343171 Started migration to sub-packages 2018-02-09 18:56:00 +01:00
Jason A. Donenfeld 51a6001bb9 Go treats underscores specially
In case there's ever a platform called helpers or protocol, we don't
want to be doing this.
2018-02-07 18:59:41 +01:00
Mathias Hall-Andersen ceccd39420 Work on logging format 2018-02-04 19:18:44 +01:00
Mathias Hall-Andersen 283e7117cf Merge branch 'master' into timer-teardown 2018-02-04 16:48:03 +01:00
Mathias Hall-Andersen 9c5083bd19 Removed debugging locks 2018-02-04 16:46:24 +01:00
Mathias Hall-Andersen a0f54cbe5a Align with go library layout 2018-02-04 16:08:26 +01:00
Mathias Hall-Andersen 5871ec04de Fixed tests 2018-02-02 20:45:25 +01:00
Mathias Hall-Andersen 4f97b52ea6 Clear cryptographic state when interface down
Attempts to clear the cryptographic state for every
peer when the device goes down.
2018-02-02 17:24:29 +01:00
Mathias Hall-Andersen 029410b118 Rework of entire locking system
Locking on the Device instance is now much more fined-grained,
seperating out the fields into "resources" st. most common interactions
only require a small number.
2018-02-02 16:40:14 +01:00