Jason A. Donenfeld
85b2378a07
Use go modules always
2018-10-12 01:45:33 +02:00
Jason A. Donenfeld
fddb949002
Do not build if nothing to do
2018-10-12 01:12:56 +02:00
Jason A. Donenfeld
5d6083df7e
Switch to go modules
2018-10-09 18:13:56 +02:00
Jason A. Donenfeld
b41922e5c8
version: bump snapshot
2018-10-01 17:58:31 +02:00
Jason A. Donenfeld
dbb72402f2
Adding missing queueconstants file
2018-10-01 16:11:31 +02:00
Jason A. Donenfeld
70bcf9ecb8
Make it easy to restrict queue sizes more
2018-09-25 02:31:02 +02:00
Jason A. Donenfeld
ebc7541953
Fix shutdown races
2018-09-24 01:52:02 +02:00
Jason A. Donenfeld
833597b585
More pooling
2018-09-24 00:37:43 +02:00
Jason A. Donenfeld
cf81a28dd3
Fixup buffer freeing
2018-09-22 05:43:03 +02:00
Jason A. Donenfeld
942abf948a
send: more precise padding calculation
2018-09-16 23:42:31 +02:00
Jason A. Donenfeld
47d1140361
device: preallocated buffers scheme
...
Not useful now but quite possibly later.
2018-09-16 23:10:19 +02:00
Jason A. Donenfeld
39d6e4f2f1
Change queueing drop order and fix memory leaks
...
If the queues are full, we drop the present packet, which is better for
network traffic flow. Also, we try to fix up the memory leaks with not
putting buffers from our shared pool.
2018-09-16 21:50:58 +02:00
Jason A. Donenfeld
1c02557013
send: use accessor function for buffer pool
2018-09-16 18:49:19 +02:00
Jason A. Donenfeld
5be541d147
global: fix up copyright headers
2018-09-16 18:49:19 +02:00
Jason A. Donenfeld
063becdc73
uapi: insert peer version placeholder
...
While we don't want people to ever use old protocols, people will
complain if the API "changes", so explicitly make the unset protocol
mean the latest, and add a dummy mechanism of specifying the protocol on
a per-peer basis, which we hope nobody actually ever uses.
2018-09-02 23:04:47 -06:00
Jason A. Donenfeld
15da869b31
Fix duplicate copyright line
2018-07-30 05:14:17 +02:00
Jason A. Donenfeld
3ad3e83c7a
uapi: allow overriding socket directory at compile time
2018-07-24 14:32:35 +02:00
Jason A. Donenfeld
2e13b7b0fb
send: better debug message for failed data packet
2018-07-16 16:05:36 +02:00
Jason A. Donenfeld
6b3b1c3b91
version: bump snapshot
2018-06-13 16:22:16 +02:00
Jason A. Donenfeld
6a5d0e2bcd
Support IPv6-less kernels
2018-06-12 01:32:46 +02:00
Jason A. Donenfeld
0ba551807f
Do not build tun device on ios
2018-06-09 03:31:17 +02:00
Jason A. Donenfeld
99d5aeeb27
Fix duplicated wording
2018-06-02 17:36:35 +02:00
Jason A. Donenfeld
a050431f26
Makefile: export PWD for OpenBSD's ksh(1)
...
Interestingly, ksh(1) on OpenBSD does not export PWD by default, and it
also has a notion of the "logical cwd" vs the "physical cwd", with the
latter being passed to chdir, but the former being stored in the
non-exported PWD and displayed to the user. This means that if you `cd`
into a directory that's comprised of symlinks, exec'd processes will see
the physical path. Observe:
# ksh
# mkdir a
# ln -s a b
# cd b
# pwd
/root/b
# ksh -c pwd
/root/a
The fact of separating physical and logical paths is not too uncommon
for shells (bash does it too), but not exporting PWD is very odd.
Since this is common behavior for many shells, libraries that return the
working directory will do something strange: they `stat(".")` and then
`stat(getenv("PWD"))`, and if these point to the same inode, they roll
with the value of `getenv("PWD")`, or otherwise fallback to asking the
kernel for the cwd.
Since PWD was not exported by ksh(1), Go's dep utility did not understand
it was operating inside of our faked GOPATH and became upset.
This patch works around the whole situation by simply exporting PWD
before executing dep.
2018-06-02 16:36:12 +02:00
Jason A. Donenfeld
0c976003c8
version: bump snapshot
2018-05-31 02:26:07 +02:00
Jason A. Donenfeld
955e89839f
Print version number in log
2018-05-30 01:09:18 +02:00
Jason A. Donenfeld
a4cd0216c0
Update deps
2018-05-28 01:39:37 +02:00
Jason A. Donenfeld
1d7845a600
Fix typo in timers
2018-05-27 22:55:15 +02:00
Jason A. Donenfeld
5079298ce2
Disable broadcast mode on *BSD
...
Keeping it on makes IPv6 problematic and confuses routing daemons.
2018-05-27 22:55:15 +02:00
Jason A. Donenfeld
fc3a7635e5
Disappointing anti-sticky experiment
2018-05-27 22:55:15 +02:00
Jason A. Donenfeld
2496cdd8e6
Fix tests
2018-05-24 19:58:16 +02:00
Jason A. Donenfeld
4365b4583f
Trick for being extra sensitive to route changes
2018-05-24 18:21:14 +02:00
Jason A. Donenfeld
bbf320c477
Back to sticky sockets on android
2018-05-24 17:53:00 +02:00
Jason A. Donenfeld
625d59da14
Do not build on Linux
2018-05-24 16:41:42 +02:00
Jason A. Donenfeld
2f2eca8947
Catch EINTR
2018-05-24 15:36:29 +02:00
Jason A. Donenfeld
66f6ca3e4a
Remove old makefile artifact
2018-05-24 03:13:46 +02:00
Jason A. Donenfeld
e6657638fc
version: bump snapshot
2018-05-24 02:25:51 +02:00
Jason A. Donenfeld
4a9de3218e
Add undocumented --version flag
2018-05-24 02:25:36 +02:00
Jason A. Donenfeld
28a167e828
Eye before ee except after see
2018-05-23 19:00:00 +02:00
Jason A. Donenfeld
99c6513d60
No zero sequence numbers
2018-05-23 18:30:55 +02:00
Jason A. Donenfeld
8a92a9109a
Don't cause a new fake gopath to call dep
2018-05-23 17:31:06 +02:00
Jason A. Donenfeld
0b647d1ca7
Infoleak ifnames and be more permissive
...
Listing interfaces is already permitted by the OS, so we allow this info
leak too.
2018-05-23 15:38:24 +02:00
Jason A. Donenfeld
588b9f01ae
Adopt GOPATH
...
GOPATH is annoying, but the Go community pushing me to adopt it is even
more annoying.
2018-05-23 05:18:13 +02:00
Jason A. Donenfeld
f70bd1fab3
Remove more windows cruft
2018-05-23 04:46:09 +02:00
Jason A. Donenfeld
40d5ff0c70
Cleanup
2018-05-23 03:58:27 +02:00
Jason A. Donenfeld
5a2228a5c9
Move replay into subpackage
2018-05-23 03:58:27 +02:00
Jason A. Donenfeld
0a63188afa
Move tun to subpackage
2018-05-23 03:58:27 +02:00
Jason A. Donenfeld
65a74f3175
Avoid sticky sockets on Android
...
The android policy routing system does insane things.
2018-05-22 23:22:23 +02:00
Jason A. Donenfeld
b4cef2524f
Fix integer conversions
2018-05-22 18:35:52 +02:00
Jason A. Donenfeld
7038de95e1
Bump dependencies for OpenBSD
2018-05-22 17:58:34 +02:00
Jason A. Donenfeld
82d12e85bb
Fix markdown
2018-05-22 16:47:15 +02:00
Jason A. Donenfeld
d6b694e161
Add OpenBSD tun driver support
2018-05-22 16:21:05 +02:00
Jason A. Donenfeld
794e494802
Fix code duplication
2018-05-22 14:59:29 +02:00
Jason A. Donenfeld
dd663a7ba4
Notes on FreeBSD limitations
2018-05-22 01:30:16 +02:00
Jason A. Donenfeld
8462c08cf2
Just in case darwin changes, we also shutdown
2018-05-22 01:27:29 +02:00
Jason A. Donenfeld
b8c9e13c6e
Call shutdown on route socket on freebsd
2018-05-22 01:26:47 +02:00
Jason A. Donenfeld
1c666576d5
User cookie is closer to fwmark than setfib
2018-05-21 20:13:39 +02:00
Jason A. Donenfeld
2ae22ac65d
Remove broken windows cruft
2018-05-21 19:00:58 +02:00
Jason A. Donenfeld
ff3f2455e5
Rework freebsd support
2018-05-21 18:48:48 +02:00
Jason A. Donenfeld
837a12c841
Close events channel when no status listener
2018-05-21 14:16:46 +02:00
Jason A. Donenfeld
7472930d4e
Straighten out UAPI logging
2018-05-21 03:38:50 +02:00
Jason A. Donenfeld
6307bfcdf4
Close hack listener before closing channel
2018-05-21 03:31:46 +02:00
Jason A. Donenfeld
e28d70f5b2
ratelimiter: do not run GC with nothing to do
2018-05-21 03:20:18 +02:00
Jason A. Donenfeld
84c5357cf3
Reasonable punctuation given the spacing
2018-05-21 02:50:39 +02:00
Jason A. Donenfeld
acb5481246
Fix data races in timers
2018-05-20 06:50:07 +02:00
Jason A. Donenfeld
18f43705ec
Fix race with closing event channel
...
There's still a tiny race on Linux, since the tun channel is written to
from two places.
2018-05-20 06:38:39 +02:00
Jason A. Donenfeld
058cedcf66
Style
2018-05-20 06:29:46 +02:00
Jason A. Donenfeld
c5fa3de24c
Remove unused mtu variable
2018-05-20 06:29:21 +02:00
Jason A. Donenfeld
1068d6b92b
Give bind its own wait group
...
In a waitgroup, all waits must come after all adds
2018-05-20 06:29:21 +02:00
Jason A. Donenfeld
5e924e5407
Avoid deadlock when the mutex isn't required, since these are atomics
...
Maybe this fixes the "double lock issue" in
f73d2fb2d96bc3fbc8bc4cce452e3c19689de01e?
2018-05-20 06:29:21 +02:00
Jason A. Donenfeld
b290cf05e3
Use proper status listener on Darwin
2018-05-20 06:29:21 +02:00
Jason A. Donenfeld
b95a4c61a5
Reduce the hack listener to once a second
2018-05-20 04:03:11 +02:00
Jason A. Donenfeld
a5b3340e5b
Fix race in netlink peer correlator
2018-05-20 03:37:42 +02:00
Jason A. Donenfeld
7c21a3de0a
Fix race in lock pending
2018-05-20 03:31:27 +02:00
Jason A. Donenfeld
0a68c1ab17
Fix race in stats
2018-05-20 03:26:46 +02:00
Jason A. Donenfeld
e04f9543c0
Fix race in packetInNonceQueueIsAwaitingKey
2018-05-20 03:24:14 +02:00
Jason A. Donenfeld
fa003b6933
Discourage building for Linux
2018-05-20 03:19:03 +02:00
Jason A. Donenfeld
75cdc5986a
Revert "Temporary work around. Please revert me"
...
This reverts commit 4312a7c70a .
2018-05-19 02:40:22 +02:00
Jason A. Donenfeld
5a267f0b8c
timers: no need to clear keepalive in persistent keepalive
...
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.
Kernel module commit a24b3e6e15ae1ea1291666e5da910caf43eedbaf
2018-05-19 02:40:22 +02:00
Jason A. Donenfeld
870734ab5e
timers: clear send_keepalive timer on sending handshake response
...
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.
Kernel module commit 30290ef1d2581a3e6ee8ffcdb05d580cfba976be
2018-05-19 02:40:22 +02:00
Jason A. Donenfeld
125976edce
Avoid using v6-mapped-v4
2018-05-18 05:02:35 +02:00
Jason A. Donenfeld
52d797ce1a
Style
2018-05-18 04:51:02 +02:00
Jason A. Donenfeld
711f929879
Fill out readme
2018-05-17 16:55:45 +02:00
Jason A. Donenfeld
846d721dfd
Finer-grained start-stop synchronization
2018-05-16 22:20:15 +02:00
Jason A. Donenfeld
23eca94508
Fix dir permissions
2018-05-15 19:57:43 +02:00
Jason A. Donenfeld
4312a7c70a
Temporary work around. Please revert me
2018-05-15 19:56:06 +02:00
Jason A. Donenfeld
207fd644e8
Lock timers on modification
2018-05-15 18:44:00 +02:00
Jason A. Donenfeld
ab02aacdd6
Avoid vendoring tooling as much as possible
2018-05-15 15:27:46 +02:00
Jason A. Donenfeld
0e4ebfa194
Add vendoring for Homebrew
2018-05-15 14:49:52 +02:00
Jason A. Donenfeld
cf161f270e
Do not send keepalive if closed
2018-05-15 13:29:52 +02:00
Jason A. Donenfeld
27091c3284
Fix refactoring mistakes
2018-05-15 06:28:42 +02:00
Jason A. Donenfeld
08d7602dc3
Improve makefile
2018-05-15 02:16:51 +02:00
Jason A. Donenfeld
115a2e3946
Use /dev/null as place holder
2018-05-14 20:06:33 +02:00
Jason A. Donenfeld
28c7eb4335
Print utun name on darwin
2018-05-14 19:33:35 +02:00
Jason A. Donenfeld
7a1a537f43
Mask IPs when showing from trie
...
Otherwise intermediate nodes that get collapsed to real nodes will
display the wrong value.
2018-05-14 17:57:58 +02:00
Jason A. Donenfeld
a62c770a99
Ugly hack to suppress warning on backgrounded process
2018-05-14 16:01:58 +02:00
Jason A. Donenfeld
09235d48d8
Better common bits function
2018-05-14 15:49:20 +02:00
Jason A. Donenfeld
7f1c9d1cc2
Fix noise test
2018-05-14 14:47:31 +02:00
Jason A. Donenfeld
021724a535
Cancelable netlink writes and better response correlation
2018-05-14 14:18:26 +02:00
Jason A. Donenfeld
795f76cffa
Netlink sockets can't be shutdown
2018-05-14 14:08:03 +02:00
Jason A. Donenfeld
2dfd4e7d8c
Cleanup socket file
2018-05-14 13:05:37 +02:00