Neil Alexander
|
328dd6c054
|
Merge branch 'develop' into goodbyewater
|
2019-11-26 09:20:15 +00:00 |
|
Arceliar
|
98339cdc3f
|
possible fix if monotonic time resolution is related to packet reordering
|
2019-11-25 17:40:58 -06:00 |
|
Neil Alexander
|
837e7da792
|
Force packets through the switch to be buffered (seems to help the reordering problem on Windows)
|
2019-11-25 20:13:41 +00:00 |
|
Arceliar
|
3e07995518
|
it helps to actually set the flag...
|
2019-11-24 18:53:58 -06:00 |
|
Arceliar
|
27cc57dbbc
|
attempt to prevent incorrect idle notification in switch, needs testing
|
2019-11-24 18:24:17 -06:00 |
|
Arceliar
|
2e95a3131c
|
comment out pointless error that prints on some platforms and not others
|
2019-11-24 15:37:37 -06:00 |
|
Arceliar
|
2982b53555
|
make offset generic over TUN_OFFSET_BYTES so we can make this platform dependent
|
2019-11-24 15:09:28 -06:00 |
|
Arceliar
|
f6f9b3ef76
|
include offset in expected bytes written
|
2019-11-24 15:01:20 -06:00 |
|
Arceliar
|
6560aac1e9
|
fix error spam on shutdown
|
2019-11-24 13:42:56 -06:00 |
|
Neil Alexander
|
746fac6594
|
Fix go.mod/go.sum again and update DoAsSystem call
|
2019-11-23 13:56:48 +00:00 |
|
Neil Alexander
|
d0a307db97
|
Use Wireguard's DoAsSystem, fix build tags and go.mod/go.sum
|
2019-11-23 13:46:05 +00:00 |
|
Neil Alexander
|
0529910b01
|
Reuse GUID so Windows no longer keeps creating new networks each time Yggdrasil starts
|
2019-11-23 13:34:27 +00:00 |
|
Neil Alexander
|
baebaabc43
|
Fix typo
|
2019-11-22 20:16:24 +00:00 |
|
Neil Alexander
|
3a0870a448
|
Fix IfName 'auto' behaviour on Windows
|
2019-11-22 20:11:39 +00:00 |
|
Neil Alexander
|
f95ebeb821
|
Remove references to TAP
|
2019-11-22 20:08:19 +00:00 |
|
Neil Alexander
|
7d00206f4b
|
Update platform defaults, handling of 'auto' on Linux/Darwin
|
2019-11-22 20:07:08 +00:00 |
|
Neil Alexander
|
b27ada9191
|
Fix bad Name() calls
|
2019-11-22 18:39:27 +00:00 |
|
Neil Alexander
|
235b64345e
|
Configure addresses and MTUs, fix bugs
|
2019-11-22 18:34:43 +00:00 |
|
Neil Alexander
|
f5517acc81
|
Drop Water, use Wireguard tun library, drop TAP support
|
2019-11-22 16:43:50 +00:00 |
|
Arceliar
|
248a08b2f1
|
send a message to the sessions to update mtu instead of trying to update it directly
|
2019-11-21 19:23:44 -06:00 |
|
Neil Alexander
|
7c18c6806d
|
Further updates, notify sessions about updated MTU from API call
|
2019-11-21 09:54:36 +00:00 |
|
Neil Alexander
|
d1c445dc41
|
Thread safety for MTU API functions
|
2019-11-21 09:28:36 +00:00 |
|
Neil Alexander
|
e90be6f569
|
Add API functions for manipulating maximum session MTU, fix TUN/TAP to use that
|
2019-11-21 00:02:39 +00:00 |
|
Neil Alexander
|
d06c40ad19
|
Use existing constant
|
2019-11-20 22:40:48 +00:00 |
|
Neil Alexander
|
9fca3640f9
|
Fix couple of issues with MTU calculations
|
2019-11-20 22:11:52 +00:00 |
|
Arceliar
|
6b6a5a2906
|
Merge pull request #608 from neilalexander/mtu
Improve MTU handling
|
2019-11-19 19:37:25 -06:00 |
|
Arceliar
|
c0be481cde
|
Merge pull request #605 from wfleurant/src-version
Src version: return unknown not yggdrasilctl
|
2019-11-19 19:35:45 -06:00 |
|
Neil Alexander
|
f49d9de421
|
Fix setting up of MTU when value is outside of acceptable bounds, also account for ethernet headers in calculations, notify about clipping to stdout
|
2019-11-19 14:20:11 +00:00 |
|
Arceliar
|
5f1aea3636
|
fix deadlock when AddPeer fails
|
2019-11-12 21:01:32 -06:00 |
|
William Fleurant
|
49ba5bae17
|
yggdrasil: buildName should report unknown
|
2019-11-11 00:24:50 -05:00 |
|
Arceliar
|
6d3aefb825
|
fix a data race when an existing session's coords are updated in response to a successful search
|
2019-10-27 19:55:35 -05:00 |
|
Neil Alexander
|
cee28d11f8
|
Merge pull request #593 from Arceliar/bindtodevice
BindToDevice
|
2019-10-26 11:36:24 +01:00 |
|
Arceliar
|
710815fed5
|
add dummy functions for other platforms
|
2019-10-25 19:32:53 -05:00 |
|
Arceliar
|
cfc1e6b83d
|
fix a crash when shutting down if no multicast interfaces are configured
|
2019-10-25 18:40:09 -05:00 |
|
Arceliar
|
bcacfb0638
|
test adding BindToDevice to linux. if it works then we'll want to rethink slightly how we get the tcpContext on every platform, to make this compile everywhere and look a little cleaner
|
2019-10-25 18:33:23 -05:00 |
|
Arceliar
|
97a85e1d44
|
Merge pull request #583 from neilalexander/modules
Define module.Module interface
|
2019-10-24 21:48:05 -05:00 |
|
Neil Alexander
|
cd93969930
|
Fix isOpen for TUN/TAP actor
|
2019-10-24 23:37:39 +01:00 |
|
Neil Alexander
|
de3bdfa524
|
No longer use atomic for isOpen in multicast
|
2019-10-24 23:31:47 +01:00 |
|
Neil Alexander
|
d37133e311
|
Fix merge conflict from develop
|
2019-10-24 10:22:02 +01:00 |
|
Neil Alexander
|
5ca81f916e
|
Fix deadlocks
|
2019-10-24 09:54:57 +01:00 |
|
Neil Alexander
|
7341fcb9bc
|
Merge branch 'develop' into fix581
|
2019-10-24 09:29:29 +01:00 |
|
Neil Alexander
|
d58f88d29a
|
Update builds to Go 1.13 as this is required for TLS (apparently golang.org/x/crypto/ed25519 is not acceptable to the crypto/tls module and this prevents Yggdrasil from starting)
|
2019-10-24 09:28:09 +01:00 |
|
Neil Alexander
|
f784f33c2d
|
Backport fix for #581 from #583
|
2019-10-24 09:25:31 +01:00 |
|
Arceliar
|
c3dee478f5
|
fix ed25519 dependency for golang 1.12 and earlier, though we may want to update builds to 1.13 anyway...
|
2019-10-23 20:38:09 -05:00 |
|
Arceliar
|
996c6b4f47
|
add one TODO comment and run gofmt
|
2019-10-23 20:28:11 -05:00 |
|
Neil Alexander
|
cd77727c1e
|
Set TCP socket options before upgrading connection
|
2019-10-23 18:24:08 +01:00 |
|
Neil Alexander
|
6a22e6c9de
|
Initial connection upgrade/TLS peering support
|
2019-10-23 17:26:35 +01:00 |
|
Neil Alexander
|
337626a32c
|
Act multicast updates for safety
|
2019-10-23 11:12:51 +01:00 |
|
Neil Alexander
|
a072e063d8
|
Define module.Module interface, update admin/tuntap/multicast modules to comply with it, fix #581
|
2019-10-23 10:44:58 +01:00 |
|
Arceliar
|
ea085663ea
|
slight cleanup of dial's timeout
|
2019-10-21 20:52:16 -05:00 |
|
Arceliar
|
681c8ca6f9
|
safer dial timeout handling, in case it was used with a nil context or a context that had no timeout set
|
2019-10-21 20:47:50 -05:00 |
|
Arceliar
|
eccd9a348f
|
give yggdrasil.Dialer the same interface as a net.Dialer, so the only differences are what fields exist in the struct
|
2019-10-21 19:44:06 -05:00 |
|
Arceliar
|
efc0b9ef9f
|
Merge branch 'develop' into netconn
|
2019-10-21 18:47:40 -05:00 |
|
Arceliar
|
a81476f489
|
fix incorrectly held mutex in ckr getPublicKeyForAddress
|
2019-10-20 20:00:55 -05:00 |
|
Arceliar
|
cb40874f97
|
have listener return a net.Conn, adjust yggdrasil.Conn to match this interface
|
2019-10-19 15:10:28 -05:00 |
|
Arceliar
|
3491292599
|
code cleanup
|
2019-10-12 15:46:56 -05:00 |
|
Arceliar
|
31ce854835
|
update session when a search for an existing session finishes
|
2019-10-12 15:37:40 -05:00 |
|
Arceliar
|
a1c413f769
|
fix nil pointer dereference in yggdrasil.Conn.search
|
2019-10-06 11:53:14 -05:00 |
|
Arceliar
|
c38e40e8e3
|
actually use doCancel in writeNoCopy
|
2019-10-05 12:23:21 -05:00 |
|
Arceliar
|
83e3a24423
|
Merge pull request #562 from AwesomePatrol/dev/patrol/bench01
#60 Add simple tests and benchmark
|
2019-10-05 12:20:27 -05:00 |
|
Arceliar
|
f474869ad9
|
cleanup bad comment
|
2019-10-05 12:17:40 -05:00 |
|
Arceliar
|
fb3430207c
|
don't fail if there's an error setting bbr, just log it and continue
|
2019-10-05 11:03:38 -05:00 |
|
Arceliar
|
8e22d7137a
|
use bbr congestion control on linux, note that we're not doing anything intelligent with the errors right now if setting it fails
|
2019-10-05 10:47:15 -05:00 |
|
Arceliar
|
f22eac497b
|
typo
|
2019-10-03 18:50:33 -05:00 |
|
Arceliar
|
b2922189b8
|
fix deadlock from use of phony.Block by actors when ckr is enabled
|
2019-10-03 18:44:47 -05:00 |
|
Aleksander Mistewicz
|
783959208c
|
Add more comments to explain helper functions
|
2019-09-28 14:41:53 +02:00 |
|
Aleksander Mistewicz
|
8053766092
|
Add verbosity setting
|
2019-09-28 14:25:42 +02:00 |
|
Aleksander Mistewicz
|
21b236771b
|
Add a simple transfer benchmark
|
2019-09-28 14:25:42 +02:00 |
|
Aleksander Mistewicz
|
8677a042cf
|
Wait for nodes to negotiate
|
2019-09-28 14:25:42 +02:00 |
|
Aleksander Mistewicz
|
fffbbbcbd3
|
Pass message between nodes
|
2019-09-28 14:25:42 +02:00 |
|
Aleksander Mistewicz
|
d96fb27ab8
|
Add simple connection test
|
2019-09-28 14:25:42 +02:00 |
|
Arceliar
|
0f99d590a1
|
typo, ipv6->ipv4
|
2019-09-26 18:15:26 -05:00 |
|
Arceliar
|
e16d3efb0a
|
check packet length before checking if it's an ipv6 packet, and add some trace level logging whenever a packet is rejected for being too short to parse
|
2019-09-26 18:11:58 -05:00 |
|
Arceliar
|
a87581b0fa
|
Merge pull request #556 from Arceliar/switch
Switch hack
|
2019-09-25 17:58:01 -05:00 |
|
Arceliar
|
ac58c3586e
|
cleanup/comments
|
2019-09-25 17:53:25 -05:00 |
|
Neil Alexander
|
d27891aaf6
|
Merge pull request #528 from yggdrasil-network/documentation
Documentation updates
|
2019-09-25 17:09:09 +01:00 |
|
Arceliar
|
b9e74f34ec
|
replace the send-to-self with a timer and an arbitrary timeout; i don't really like this but it seems to work better (1 ms is fast by human standards but an eternity for a syscall or the scheduler, so i think that's reasonable)
|
2019-09-24 18:28:13 -05:00 |
|
Arceliar
|
8c64e6fa09
|
explicitly notify the switch when a link appears to be blocked in a send instead of assuming this is the case for all idle links. how we decide when it's really blocked still needs testing/optimizing
|
2019-09-24 18:01:35 -05:00 |
|
Arceliar
|
691192ff5a
|
weird scheduler hack, seems to tend to make things more stable without actually locking streams to any particular link
|
2019-09-21 14:33:45 -05:00 |
|
Arceliar
|
87658f83e9
|
Revert "force things to buffer in the switch if the best link is currently busy. note that other links can end up sending if they become non-idle for other reasons. this is a temporary workaround to packet reordering, until we can figure out a better solution"
This reverts commit 80ba24d512 .
|
2019-09-20 23:09:12 -05:00 |
|
Arceliar
|
8003ea0f3e
|
use a separate multicast beacon interval per multicast interface
|
2019-09-20 17:42:42 -05:00 |
|
Neil Alexander
|
1cd4b6e8dd
|
Increase multicast interval at startup from 1s to 15s
|
2019-09-20 10:08:41 +01:00 |
|
Arceliar
|
f9163a56b6
|
fix race between listener accepting and shutting down
|
2019-09-19 19:50:45 -05:00 |
|
Arceliar
|
eeb34ce4e4
|
modify TcpListener
|
2019-09-19 19:45:17 -05:00 |
|
Arceliar
|
93e81867fd
|
have link.stop signal active links to close, have tcp.stop wait for all listeners and active connections to close
|
2019-09-19 19:15:59 -05:00 |
|
Neil Alexander
|
681e9afc79
|
Merge develop into bugfixes
|
2019-09-19 09:05:56 +01:00 |
|
Neil Alexander
|
7b1678a11d
|
Goroutines in _addPeerLoop from bugfixes
|
2019-09-19 09:04:25 +01:00 |
|
Neil Alexander
|
5a382e7e0b
|
Cherrypick fixes for _addPeerLoop memory leak for now
|
2019-09-19 08:55:55 +01:00 |
|
Arceliar
|
995d67cca8
|
fix leak in _addPeerLoop
|
2019-09-18 18:46:03 -05:00 |
|
Arceliar
|
92d9274f3f
|
resolve conflicts
|
2019-09-18 18:40:01 -05:00 |
|
Arceliar
|
2d64a6380a
|
misc other fixes
|
2019-09-18 18:33:51 -05:00 |
|
Neil Alexander
|
909e4e29a8
|
Don't spawn goroutines for addPeerLoop, TCP connect timeout of 5 seconds for now
|
2019-09-18 23:44:28 +01:00 |
|
Neil Alexander
|
64570a8d3e
|
Merge pull request #542 from Arceliar/switch
Switch
|
2019-09-18 20:26:48 +01:00 |
|
Neil Alexander
|
0a12e4b1c1
|
Revert "Catch a nil pointer when sending a session packet to a conn, this shouldn't happen but it's caused multiple crashes in conn.recvMsg"
This reverts commit be35675d0f .
|
2019-09-18 20:26:06 +01:00 |
|
Neil Alexander
|
ddaaa865cb
|
Be more verbose when a peer or listener is badly formatted
|
2019-09-18 19:58:41 +01:00 |
|
Neil Alexander
|
94cf2854a9
|
Fix panic where slice goes out of bounds because iface.Read returns less than zero (which might happen when the TUN/TAP interface is closed)
|
2019-09-18 19:48:53 +01:00 |
|
Neil Alexander
|
ae0b2672ff
|
Fix #539
|
2019-09-18 19:48:16 +01:00 |
|
Neil Alexander
|
2dc136f94a
|
Multicast actor to prevent races
|
2019-09-18 16:51:46 +01:00 |
|
Neil Alexander
|
b959f53fee
|
Shut down listeners when stopping
|
2019-09-18 16:32:22 +01:00 |
|
Neil Alexander
|
b0df9e2f31
|
Fix race when adding peers
|
2019-09-18 16:15:33 +01:00 |
|
Neil Alexander
|
c78a4cb28f
|
Only stop timers if they are running
|
2019-09-18 15:34:26 +01:00 |
|
Neil Alexander
|
366fe7e772
|
Allow multicast to be shut down more sanely
|
2019-09-18 15:31:43 +01:00 |
|
Neil Alexander
|
00a972b74e
|
Disconnect peers when stopping, stop modules before core
|
2019-09-18 15:22:17 +01:00 |
|
Neil Alexander
|
846df4789a
|
Be more verbose when a peer or listener is badly formatted
|
2019-09-18 15:01:19 +01:00 |
|
Neil Alexander
|
200b3623b2
|
Fix #539
|
2019-09-18 14:32:28 +01:00 |
|
Neil Alexander
|
e9bacda0b3
|
Catch a nil pointer when sending a session packet to a conn, this shouldn't happen but it's caused multiple crashes in conn.recvMsg
|
2019-09-18 14:07:26 +01:00 |
|
Neil Alexander
|
c3016e680c
|
Fix panic where slice goes out of bounds because iface.Read returns less than zero (which might happen when the TUN/TAP interface is closed)
|
2019-09-18 14:05:18 +01:00 |
|
Neil Alexander
|
40204caab6
|
Try to fix race condition in sessions.reset
|
2019-09-18 14:03:31 +01:00 |
|
Neil Alexander
|
be35675d0f
|
Catch a nil pointer when sending a session packet to a conn, this shouldn't happen but it's caused multiple crashes in conn.recvMsg
|
2019-09-18 13:37:01 +01:00 |
|
Arceliar
|
80ba24d512
|
force things to buffer in the switch if the best link is currently busy. note that other links can end up sending if they become non-idle for other reasons. this is a temporary workaround to packet reordering, until we can figure out a better solution
|
2019-09-17 19:42:07 -05:00 |
|
Arceliar
|
0141180279
|
cleanup
|
2019-09-09 19:25:10 -05:00 |
|
Arceliar
|
10a828af2c
|
when forwarding traffic, break distance ties by favoring the link that sent the most recent switch update the fastest
|
2019-09-09 19:20:46 -05:00 |
|
Arceliar
|
2426a87ccc
|
really finish initializing the session before returning it / giving up control of the router, in the Conn.search function used by Dial
|
2019-09-03 19:03:12 -05:00 |
|
Neil Alexander
|
af3dcb44d8
|
Update config.go godoc
|
2019-09-02 09:45:11 +01:00 |
|
Arceliar
|
b3361d4bbc
|
package level documentation for address/crypto/util
|
2019-09-01 19:01:33 -05:00 |
|
Arceliar
|
cd99d04bd4
|
document address, crypto, and util
|
2019-09-01 18:53:45 -05:00 |
|
Neil Alexander
|
903a8921fc
|
Update api.go godoc
|
2019-09-01 23:47:47 +01:00 |
|
Neil Alexander
|
935324efe1
|
Update conn.go godoc
|
2019-09-01 23:33:51 +01:00 |
|
Neil Alexander
|
9e8e1c5a41
|
Documentation updates
|
2019-09-01 23:10:46 +01:00 |
|
Neil Alexander
|
01517e5dc3
|
Create doc.go for godoc preamble
|
2019-09-01 22:43:27 +01:00 |
|
Arceliar
|
8c52ccadf9
|
make dial fail if a session to the same node already exists, fixes race between simultaneous connections to a node's 200 address and one of its 300 addresses, should also fix races between a search and an accepted listen
|
2019-09-01 14:07:00 -05:00 |
|
Arceliar
|
8d2c31d39c
|
add some artifical delay to windows netsh commands, since it seems like maybe they don't take effect immediately, and this was leading to races when setting MTU
|
2019-09-01 13:20:48 -05:00 |
|
Arceliar
|
c53831696b
|
make tun stop check that iface is not nil, in case it wasn't set for some reason (windows bugs)
|
2019-09-01 13:06:25 -05:00 |
|
Arceliar
|
d08c2eb237
|
stop exporting ReadNoCopy and WriteNoCopy, since we use the actor functions / callbacks and everything else should use Read and Write instead...
|
2019-09-01 13:04:10 -05:00 |
|
Arceliar
|
3a493fe894
|
gc more often on mobile
|
2019-09-01 11:08:25 -05:00 |
|
Arceliar
|
cabdc27a54
|
change how nonce is tracked, so we allow packets if we've recently received a highest nonce ever, but don't bother tracking all received nonce values, this means duplicate packets are possible but only for a small window of time (and significantly reduces memory usage per session)
|
2019-08-31 17:39:05 -05:00 |
|
Arceliar
|
a64f7320d8
|
update phony, add mobile versions of util bytes functions that don't try to store anything
|
2019-08-31 16:27:36 -05:00 |
|
Arceliar
|
7649ea0f9f
|
remove sessionInfo.doFunc, have the api just use phony.Block instead
|
2019-08-29 21:59:28 -05:00 |
|
Neil Alexander
|
1f658cce76
|
Add Core actor
|
2019-08-28 19:53:52 +01:00 |
|
Neil Alexander
|
aa0770546e
|
Move responsibility for configuring max queue size into switch
|
2019-08-28 19:39:23 +01:00 |
|
Neil Alexander
|
fc9a1c6c31
|
Simplify reconfiguration
|
2019-08-28 19:31:04 +01:00 |
|
Neil Alexander
|
764f9c8e11
|
Remove legacy debug functions
|
2019-08-28 17:24:41 +01:00 |
|
Neil Alexander
|
881d0a1ada
|
Fix DEBUG_getDHTSize
|
2019-08-28 12:46:49 +01:00 |
|
Neil Alexander
|
e553f3e013
|
Reconfigure functions now ran by actors
|
2019-08-28 12:46:12 +01:00 |
|
Neil Alexander
|
607c906820
|
Pointer receivers for phony.Block
|
2019-08-28 12:26:44 +01:00 |
|
Neil Alexander
|
5d7d84f827
|
Remove router.doAdmin and switchTable.doAdmin
|
2019-08-28 12:17:19 +01:00 |
|
Arceliar
|
a8b323acdd
|
have an actor manage the crypto worker pool instead of each session trying to use it directly, this should result in a fairer round-robin behavior in cases where crypto congestion is the bottleneck
|
2019-08-27 20:01:37 -05:00 |
|
Arceliar
|
3845f81357
|
update to latest phony, adjust interface use accordingly
|
2019-08-27 19:43:54 -05:00 |
|
Arceliar
|
4d9c6342a7
|
more link updates
|
2019-08-26 18:37:38 -05:00 |
|
Arceliar
|
c97dd4ad28
|
fix dial bug
|
2019-08-26 00:38:14 -05:00 |
|
Arceliar
|
ab59129557
|
have the writer clean things up. note that their still seem to be bugs in the main linkInterface actor's state machine--links sometimes just die, presumably because they're dropped from the switch and never replaced
|
2019-08-25 23:24:18 -05:00 |
|
Arceliar
|
bd3eaefb72
|
more link migration
|
2019-08-25 22:55:17 -05:00 |
|
Arceliar
|
b5b179904b
|
ugly work-in-progress to migrate link to the actor model
|
2019-08-25 22:19:20 -05:00 |
|
Arceliar
|
dffd70119d
|
remove session shutdown goroutine, just send a message instead
|
2019-08-25 19:13:47 -05:00 |
|
Arceliar
|
b2a2e251ad
|
more TunAdapter migration
|
2019-08-25 18:53:11 -05:00 |
|
Arceliar
|
aaf34c6304
|
start migrating the TunAdapter to the actor model
|
2019-08-25 18:08:43 -05:00 |
|
Arceliar
|
502f2937a9
|
a couple race fixes and use timer.AfterFunc instead of sleeping goroutines or ticker in a few places
|
2019-08-25 17:00:02 -05:00 |
|
Arceliar
|
a3d4d8125b
|
make the main library reconfiguration more actor-friendly
|
2019-08-25 12:10:59 -05:00 |
|
Arceliar
|
aa30c6cc98
|
upgrade phony dependency and switch to its new interface
|
2019-08-25 10:36:09 -05:00 |
|
Arceliar
|
5312b21665
|
Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into actors
|
2019-08-24 18:30:15 -05:00 |
|