Commit graph

844 commits

Author SHA1 Message Date
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
Mathias Hall-Andersen 1e42b14022 Merge branch 'timer-teardown' of git.zx2c4.com:wireguard-go into timer-teardown 2018-02-01 11:20:36 +01:00
Mathias Hall-Andersen a57c790e36 Added binary to .gitignore 2018-01-31 10:11:36 +01:00
Mathias Hall-Andersen f73d2fb2d9 Added initial version of peer teardown
There is a double lock issue with device.Close which has yet to be
resolved.
2018-01-26 22:52:32 +01:00
Mathias Hall-Andersen 068d932f2c Fixed potential DoS issue 2018-01-16 14:57:12 +01:00
Mathias Hall-Andersen 1dd590b91b Work on timer teardown + bug fixes
Added waitgroups to peer struct for routine
start / stop synchronisation
2018-01-13 09:00:37 +01:00
Mathias Hall-Andersen 5f01086f19 Fixed fwmark update without device status change
An update of the fwmark was missing,
when the device was not bought up after the change.
2018-01-09 17:26:18 +01:00
Mathias Hall-Andersen 9360bac632 Revert "Peer timer teardown"
This reverts commit d73f960aab.

Problems with deadlocking arises due to orphaned packets in per-peer
queues. Additional work on this issue continues in seperate branch.
2018-01-04 14:24:14 +01:00
Mathias Hall-Andersen d73f960aab Peer timer teardown 2017-12-29 17:42:09 +01:00
Mathias Hall-Andersen 996c7c4d8a Removed IFF_NO_PI from TUN linux
This change was needed for the Linux TUN status hack
to work properly (not increment the error counter).

This commit also updates the TUN interface to allow for
the construction / removal of the TUN info headers in-place.
2017-12-04 21:39:06 +01:00
Mathias Hall-Andersen 9fef0ca2fb Removed profiler code 2017-12-02 00:00:45 +01:00
Mathias Hall-Andersen eaca1ee1f7 More consistent use of signal struct 2017-12-01 23:37:26 +01:00
Mathias Hall-Andersen cb09125dc4 Fixed receive path infinite loop 2017-12-01 00:03:06 +01:00
Mathias Hall-Andersen cd369cde45 Added missing exit codes 2017-11-30 23:30:29 +01:00
Mathias Hall-Andersen 02ce67294c Refactor timers.go 2017-11-30 23:22:40 +01:00
Mathias Hall-Andersen 479a6f240e Fixed typos 2017-11-29 21:12:09 +01:00