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 |
|
Arceliar
|
f62bc842ae
|
fix memory leak in session nonce map
|
2019-08-24 18:23:54 -05:00 |
|
Arceliar
|
48bbdac9b3
|
add a helper actor to the link reader to make it play nicer with backpressure
|
2019-08-24 16:27:12 -05:00 |
|
Arceliar
|
99be6b037d
|
stop synchronizing message reads for now, not 100% safe but I don't have any better ideas
|
2019-08-24 16:13:34 -05:00 |
|
Arceliar
|
209d2ffea5
|
correctly call peer.sendPacketsFrom in the switch
|
2019-08-24 16:04:05 -05:00 |
|
Arceliar
|
8c7e9ec7c0
|
fix debug builds
|
2019-08-24 15:32:19 -05:00 |
|
Arceliar
|
c573170886
|
remove switch doworker loop, start a dummy loop to respond to (unused) reconfiguration instead
|
2019-08-24 15:27:56 -05:00 |
|
Arceliar
|
998c76fd8c
|
more switch migration
|
2019-08-24 15:22:46 -05:00 |
|
Arceliar
|
555b4c18d4
|
a little switch cleanup
|
2019-08-24 15:05:18 -05:00 |
|
Arceliar
|
498bc395e2
|
start migrating switch to the actor model
|
2019-08-24 14:56:33 -05:00 |
|
Arceliar
|
b337228aa4
|
minor fixes to peer stuff
|
2019-08-24 14:24:42 -05:00 |
|
Arceliar
|
0539dee900
|
warning about possible deadlock in legacy channel send, need to migrate the link code to fix it
|
2019-08-24 13:25:38 -05:00 |
|
Arceliar
|
034fece33f
|
more peer migration
|
2019-08-24 13:15:29 -05:00 |
|
Arceliar
|
ecd23ce9fc
|
safer linkloop
|
2019-08-24 12:59:20 -05:00 |
|
Arceliar
|
88161009e9
|
more peer migration
|
2019-08-24 12:55:49 -05:00 |
|
Arceliar
|
775fb535dc
|
start converting the peer struct into an actor
|
2019-08-24 12:46:24 -05:00 |
|
Arceliar
|
ef15a6bd79
|
tunConn cleanup
|
2019-08-24 11:44:21 -05:00 |
|
Arceliar
|
4893a07696
|
start migrating tunConn to the actor model
|
2019-08-24 11:38:47 -05:00 |
|
Arceliar
|
b582c444f8
|
minor cleanup
|
2019-08-24 01:57:08 -05:00 |
|
Arceliar
|
1e346aaad0
|
have the conn actor receive messages from the session actor and either pass them to a callback or buffer them in a channel for Read to use if no callback was set
|
2019-08-24 01:52:21 -05:00 |
|
Arceliar
|
9948e3d659
|
add Conn.WriteFrom to allow actor-based sending
|
2019-08-24 00:44:02 -05:00 |
|
Arceliar
|
da9f7151e3
|
more conn migration
|
2019-08-24 00:17:37 -05:00 |
|
Arceliar
|
6ecbc439f0
|
start migrating Conn to be an actor
|
2019-08-23 23:36:00 -05:00 |
|
Arceliar
|
cac3444d9a
|
fix debug builds
|
2019-08-23 22:40:13 -05:00 |
|
Arceliar
|
cf9880464b
|
explicitly consider the session finished case, and make a note that we could fix the packet drop situation by making the Conn into an actor too
|
2019-08-23 22:36:59 -05:00 |
|
Arceliar
|
e3603c0462
|
clean up unused session code
|
2019-08-23 22:25:40 -05:00 |
|
Arceliar
|
533da351f9
|
fix actor EnqueueFrom stack overflow (use nil now to send from self) and replace session send/recv workers with actor functions
|
2019-08-23 22:23:01 -05:00 |
|
Arceliar
|
436c84ca33
|
refactor sessions to store a pointer to router instead of core
|
2019-08-23 20:53:00 -05:00 |
|
Arceliar
|
5bb85cf07b
|
refactor searches to store a pointer to router instead of core
|
2019-08-23 20:42:38 -05:00 |
|
Arceliar
|
e7024a00e7
|
have dht store a pointer to router instead of core
|
2019-08-23 20:35:54 -05:00 |
|
Arceliar
|
ebd806f27a
|
move router member initialization into router.init
|
2019-08-23 20:29:16 -05:00 |
|
Arceliar
|
9835c63818
|
refactor things the router owns (dht, sessions, searches) into that struct, to make the ownership more explicit
|
2019-08-23 20:26:15 -05:00 |
|
Arceliar
|
bbcbbaf3b1
|
start migrating sessionInfo to be an actor
|
2019-08-23 20:05:18 -05:00 |
|
Arceliar
|
8e89816099
|
more router migration: rename functions that should only be called internally by the actor
|
2019-08-23 18:59:34 -05:00 |
|
Arceliar
|
232e6d3cb3
|
more router migration
|
2019-08-23 18:55:41 -05:00 |
|
Arceliar
|
9d7e7288c6
|
start migrating the router to an actor
|
2019-08-23 18:47:15 -05:00 |
|
Arceliar
|
12ce8c6a0a
|
Merge pull request #512 from neilalexander/cryptokey
Cryptokey routing changes
|
2019-08-20 20:23:00 -05:00 |
|
Arceliar
|
226dd6170d
|
hopefully prevent a deadlock
|
2019-08-20 18:49:53 -05:00 |
|
Arceliar
|
4156aa3003
|
move ckr checks into the tunConn code
|
2019-08-20 18:10:08 -05:00 |
|
Neil Alexander
|
b79829c43b
|
Merge branch 'develop' into cryptokey
|
2019-08-20 09:43:17 +01:00 |
|
Neil Alexander
|
b6e67bc0ba
|
Check CKR remotes when receiving traffic
|
2019-08-20 09:38:46 +01:00 |
|
Neil Alexander
|
2b6462c8a9
|
Strict checking of Yggdrasil source/destination addresses
|
2019-08-20 09:38:27 +01:00 |
|
Arceliar
|
834a6a6f1a
|
don't allocate a new child cancellation in Conn read/write calls if no deadline is set
|
2019-08-19 18:06:05 -05:00 |
|
Neil Alexander
|
2a629880fd
|
Rename crypto-key config options, improve control flow
|
2019-08-19 10:28:30 +01:00 |
|
Arceliar
|
8af1a7086c
|
when a link becomes idle and packet are buffered that the link could send, send at least 65535 bytes worth instead of 1 packet, this reduces syscall overhead when small packets are sent through the network
|
2019-08-18 12:29:07 -05:00 |
|
Arceliar
|
62337bcd64
|
allow links to send multiple packets at once, currently we still only bother to send 1 at a time from the switch level
|
2019-08-18 12:17:54 -05:00 |
|
Arceliar
|
fd5f3ca764
|
fix heap pop order
|
2019-08-16 23:07:40 -05:00 |
|
Arceliar
|
03b8af9f1a
|
keep track of recent nonces with a heap and a map instead of a fixed-size bitmask
|
2019-08-16 18:37:16 -05:00 |
|
Neil Alexander
|
5b054766a2
|
Update comments in handleIn, add switch_getFlowLabelFromCoords helper (in case it is useful if we try to consider flowlabels in multi-link scenarios)
|
2019-08-15 10:54:04 +01:00 |
|
Arceliar
|
1a2b7a8b60
|
test a change to how switch hops are selected when multiple links are idle
|
2019-08-14 17:57:36 -05:00 |
|
Neil Alexander
|
f26f071901
|
Merge pull request #497 from Slex/issues/488
Implement feature from https://github.com/yggdrasil-network/yggdrasil…
|
2019-08-14 20:11:15 +01:00 |
|
Neil Alexander
|
33cd10c463
|
Merge branch 'issues/488' of github.com:slex/yggdrasil-go into issues/488
|
2019-08-14 19:58:45 +01:00 |
|
Neil Alexander
|
4702da2bcb
|
Use new netlink library (fixes #493)
|
2019-08-14 19:32:40 +01:00 |
|
Neil Alexander
|
d9fabad8bc
|
Merge pull request #502 from Arceliar/linkleak
Try to fix leaks in #501
|
2019-08-14 07:17:39 +01:00 |
|
Arceliar
|
46c5df1c23
|
when we abandon a link because we already have a connection to that peer, only wait for the connection to close if it's an *outgoing* link, otherwise incomming connection attempts can cause us to leak links
|
2019-08-13 18:49:49 -05:00 |
|
Arceliar
|
b2cb1d965c
|
avoid leaking sessions when no listener exists, or blocking if it's busy
|
2019-08-12 18:22:30 -05:00 |
|
Arceliar
|
277da1fe60
|
make sure searches don't end if try to continue (in parallel) with nowhere left to send, but we just sent a search and are still waiting for a response
|
2019-08-11 13:11:14 -05:00 |
|
Arceliar
|
7a28eb787e
|
try to fix a few edge cases with searches that could lead them to ending without the callback being run or without cleaning up the old search info
|
2019-08-11 13:00:19 -05:00 |
|
Slex
|
589ad638ea
|
Implement feature from https://github.com/yggdrasil-network/yggdrasil-go/issues/488
|
2019-08-11 00:31:22 +03:00 |
|
Arceliar
|
5e81a0c421
|
Use a separate buffer per session for incoming packets, so 1 session that floods won't block other sessions
|
2019-08-07 18:08:31 -05:00 |
|
Arceliar
|
9ab08446ff
|
make sure the sessionInfo.recvWorker doesn't block if sinfo.recv somehow fills
|
2019-08-07 17:40:50 -05:00 |
|
Neil Alexander
|
c99ed9fb60
|
Merge pull request #491 from Arceliar/flowkey
Fix the old flowkey stuff so congestion control actually works...
|
2019-08-07 10:33:17 +01:00 |
|
Arceliar
|
d795ab1b65
|
minor allocation fix
|
2019-08-06 20:51:38 -05:00 |
|
Arceliar
|
790524bd1c
|
copy/paste old flowkey logic into a util function, add a struct of key and packet, make WriteNoCopy accept this instead of a slice
|
2019-08-06 19:25:55 -05:00 |
|
Arceliar
|
679866d5ff
|
have createSession fill the sessionInfo.cancel field, have Conn use Conn.session.cancel instead of storing its own cancellation, this should prevent any of these things from being both nil and reachable at the same time
|
2019-08-05 19:11:28 -05:00 |
|
Arceliar
|
8a85149817
|
remove src/.DS_Store
|
2019-08-05 18:50:08 -05:00 |
|
Arceliar
|
84a4f54217
|
temporary fix to nil pointer, better to make sure it's never nil
|
2019-08-05 18:49:15 -05:00 |
|
Neil Alexander
|
bd3b42022b
|
Merge pull request #480 from Arceliar/speedup
Speedup
|
2019-08-05 10:24:54 +01:00 |
|
Neil Alexander
|
2ee00fcc09
|
Return box_pub_key as hex string in JSON (replaces #481)
|
2019-08-05 10:21:40 +01:00 |
|
Neil Alexander
|
3a2ae9d902
|
Update API to represent coords as []uint64
|
2019-08-05 10:17:19 +01:00 |
|
Neil Alexander
|
37533f157d
|
Make some API changes (currently broken)
|
2019-08-05 00:30:12 +01:00 |
|
Arceliar
|
979c3d4c07
|
move some potentially blocking operations out of session pool workers, minor cleanup
|
2019-08-04 16:29:58 -05:00 |
|
Arceliar
|
c55d7b4705
|
have the switch queue drop packts to ourself when the total size of all packets is at least queueTotalMaxSize, instead of an arbitrary unconfigurable packet count
|
2019-08-04 16:16:49 -05:00 |
|
Arceliar
|
6803f209b0
|
have tuntap code use Conn.ReadNoCopy and Conn.WriteNoCopy to avoid copying between slices
|
2019-08-04 15:59:51 -05:00 |
|
Arceliar
|
5d5486049b
|
add Conn.ReadNoCopy and Conn.WriteNoCopy that transfer ownership of a slice instead of copying, have Read and Write use the NoCopy versions under the hood and just manage copying as needed
|
2019-08-04 15:53:34 -05:00 |
|
Arceliar
|
07f14f92ed
|
disable crypto and switch buffer changes from testing
|
2019-08-04 15:25:14 -05:00 |
|
Arceliar
|
0ba8c6a34f
|
have the stream code use bufio instead of copying manually to an input buffer, slightly reduces total uses of memmove
|
2019-08-04 15:21:04 -05:00 |
|
Arceliar
|
75b931f37e
|
eliminate some more copying between slices
|
2019-08-04 14:50:19 -05:00 |
|
Arceliar
|
f52955ee0f
|
WARNING: CRYPTO DISABLED while speeding up stream writeMsg
|
2019-08-04 14:18:59 -05:00 |
|
Arceliar
|
1e6a6d2160
|
use session.cancel in the router to make blocking safe, reduce size of fromRouter buffer so the drops in the switch are closer to the intended front-drop behavior
|
2019-08-04 02:21:41 -05:00 |
|
Arceliar
|
7bf5884ac1
|
remove some lossy channel sends that should be safe to allow to block
|
2019-08-04 02:14:45 -05:00 |
|
Arceliar
|
6da5802ae5
|
don't block forever in Write if the session is cancelled, cleanup Conn.Read slightly
|
2019-08-04 02:08:47 -05:00 |
|
Arceliar
|
144c823bee
|
just use a sync.Pool as the bytestore to not overcomplicate things, the allocations from interface{} casting don't seem to actually hurt in practice right now
|
2019-08-04 00:28:13 -05:00 |
|
Arceliar
|
cbbb61b019
|
fix another drain on the bytestore
|
2019-08-04 00:00:41 -05:00 |
|
Arceliar
|
00e9c3dbd9
|
do session crypto work using the worker pool
|
2019-08-03 23:27:52 -05:00 |
|
Arceliar
|
befd1b43a0
|
refactor session worker code slightly
|
2019-08-03 23:14:51 -05:00 |
|
Arceliar
|
7a9ad0c8cc
|
add workerpool to util
|
2019-08-03 23:10:37 -05:00 |
|
Arceliar
|
b9987b4fdc
|
reduce time spent with a mutex held in sessionInfo.recvWorker
|
2019-08-03 22:47:10 -05:00 |
|
Arceliar
|
099bd3ae1e
|
reduce part of sendWorker that needs to keep a mutex
|
2019-08-03 22:35:10 -05:00 |
|
Arceliar
|
72ed541bf3
|
a little cleanup to Conn functions
|
2019-08-03 22:07:38 -05:00 |
|
Arceliar
|
5dfc71e1ee
|
put bytes back when done
|
2019-08-03 22:00:47 -05:00 |
|
Arceliar
|
df0090e32a
|
Add per-session read/write workers, work in progress, they still unfortunately need to take a mutex for safety
|
2019-08-03 21:46:18 -05:00 |
|
Neil Alexander
|
853054eb62
|
Merge pull request #475 from Arceliar/misc
Misc
|
2019-07-29 20:24:49 +01:00 |
|
Arceliar
|
406e143f7f
|
move some logic from TunAdapter.reader into a new function, TunAdapter.readerPacketHandler
|
2019-07-28 23:33:04 -05:00 |
|
Neil Alexander
|
7c4c1558ff
|
Merge pull request #474 from neilalexander/gomobile
Various API changes and simplifications to fix mobile builds
|
2019-07-28 19:34:06 +01:00 |
|
Neil Alexander
|
cbc8711dd3
|
Remove mobile module, since it can now be moved into another repository
|
2019-07-28 13:39:29 +01:00 |
|
Neil Alexander
|
c9554f82be
|
Formatting tweaks in api.go
|
2019-07-28 11:35:16 +01:00 |
|
Neil Alexander
|
24f4754f2b
|
Export NodeInfoPayload type, rename some API functions
|
2019-07-28 11:30:24 +01:00 |
|
Arceliar
|
38e1503b28
|
split up some of the tun reader logic into a separate worker, so the main loop can be mostly just syscalls
|
2019-07-27 20:09:43 -05:00 |
|
Arceliar
|
b66bea813b
|
rename a couple of things and move a PutBytes so it happens sooner
|
2019-07-27 18:23:55 -05:00 |
|
Arceliar
|
9e118884d4
|
remove some commented code
|
2019-07-27 18:12:06 -05:00 |
|
Arceliar
|
e0a3055c2f
|
get rid of session workers, new util.PutBytes/GetBytes logic
|
2019-07-27 18:10:32 -05:00 |
|
Neil Alexander
|
377f88512b
|
Remove commented out router function
|
2019-07-27 15:57:19 +01:00 |
|
Neil Alexander
|
de1005e4fa
|
Various API changes and simplifications to fix mobile builds
|
2019-07-27 15:00:09 +01:00 |
|
Neil Alexander
|
195d577151
|
Add IFF_NODAD/IFF_SECURED, define consts
|
2019-07-27 13:30:47 +01:00 |
|
Arceliar
|
e5bb9bcb8d
|
change how searches are initialized so we actually send a dhtReq to ourself and get a response, in case we're the destination
|
2019-07-26 17:44:40 -05:00 |
|
Neil Alexander
|
6263fa287c
|
Merge pull request #467 from neilalexander/debugtext
Send PPROF output text to stderr
|
2019-07-23 08:15:03 +01:00 |
|
Neil Alexander
|
f208b7f542
|
Merge pull request #469 from neilalexander/fix468
Don't send IP back twice with getPeers
|
2019-07-23 08:14:49 +01:00 |
|
Neil Alexander
|
de9d0a6cf1
|
Redirect Conn session closure errors to debug channel
|
2019-07-22 22:41:55 +01:00 |
|
Neil Alexander
|
8669091a08
|
Don't send IP back twice with getPeers
|
2019-07-22 19:45:48 +01:00 |
|
Neil Alexander
|
34ac5c9197
|
Send PPROF output text to stderr instead of stdout so that it doesn't break -genconf
|
2019-07-20 21:56:53 +01:00 |
|
Neil Alexander
|
48ad3c5d7f
|
Update water go.mod references, fix some bugs in TAP mode (which should hopefully fix Windows support too)
|
2019-07-20 16:13:54 +01:00 |
|
Neil Alexander
|
36201895e7
|
Don't mangle bs slice in TAP mode
|
2019-07-20 12:10:05 +01:00 |
|
Neil Alexander
|
2582df752d
|
Fix resetting Windows adapter (reverting previous change)
|
2019-07-20 11:43:30 +01:00 |
|
Neil Alexander
|
1a5c2a4942
|
Update Windows module a bit - capture TAP setup errors earlier, refer to newer version of water which should fix #456
|
2019-07-19 22:21:30 +01:00 |
|
Arceliar
|
cf3ebe04a7
|
have Conn use Cancellation instead of manually setting up timers
|
2019-07-17 21:37:45 -05:00 |
|
Arceliar
|
6bf182e341
|
add util.CancellationChild() and run gofmt
|
2019-07-17 21:15:02 -05:00 |
|
Arceliar
|
06e8403aaf
|
add cancellation code to util, like context but just the cancellation parts + some error logic
|
2019-07-17 21:09:22 -05:00 |
|
Arceliar
|
5301207480
|
fix possible unsafe memory use in Conn.Read
|
2019-07-17 18:25:38 -05:00 |
|
Neil Alexander
|
06330f503f
|
Recover if stillAlive fails
|
2019-07-18 00:02:16 +01:00 |
|
Neil Alexander
|
311c612f2e
|
Only flag stillAlive on successful write
|
2019-07-17 23:23:19 +01:00 |
|
Neil Alexander
|
307b24d8cb
|
Fix Conn.Read/Conn.Write behavior after Conn.Close, get rid of second TUN/TAP conn reader goroutine, no longer use deadlines
|
2019-07-17 21:42:17 +01:00 |
|
Neil Alexander
|
1bf1c6eb36
|
Revert "Remove stillAlive code from TUN/TAP conn as it is no longer required with the new deadlines"
This reverts commit eec70bf2f2 .
|
2019-07-17 19:43:29 +01:00 |
|
Neil Alexander
|
eec70bf2f2
|
Remove stillAlive code from TUN/TAP conn as it is no longer required with the new deadlines
|
2019-07-17 13:53:16 +01:00 |
|
Neil Alexander
|
7d1c03d2ac
|
Only call stillAlive if channel read succeeds
|
2019-07-17 12:07:16 +01:00 |
|
Neil Alexander
|
747b50bb7c
|
Try to improve handling of timeouts
|
2019-07-17 11:13:53 +01:00 |
|
Neil Alexander
|
d34600b5f9
|
Try to fix TUN/TAP conn reader leakage
|
2019-07-17 10:12:10 +01:00 |
|
Neil Alexander
|
145a43e5f0
|
Fix #413 by always generating public keys from private ones instead of trusting public keys supplied by config
|
2019-07-16 09:49:28 +01:00 |
|
Neil Alexander
|
ea9d5db16d
|
Make admin socket output a bit friendlier (fixes #385)
|
2019-07-07 19:41:53 +01:00 |
|
Neil Alexander
|
30c03369cd
|
Try to fix CKR setup deadlock, fix some Windows output formatting
|
2019-07-06 20:08:32 +01:00 |
|
Neil Alexander
|
a10c141896
|
Fix data race on peermacs
|
2019-07-06 15:15:43 +01:00 |
|
Neil Alexander
|
e8272926a4
|
Fix TAP mode
|
2019-07-06 15:08:17 +01:00 |
|
Neil Alexander
|
618d46a7b3
|
Don't block on adding peers in case one is unreachable and we are forced to wait for timeout
|
2019-07-06 12:12:30 +01:00 |
|
Neil Alexander
|
12486b0557
|
Try to more gracefully handle shutdowns on Windows
|
2019-07-06 11:52:30 +01:00 |
|
Arceliar
|
86c30a1fc4
|
fix another panic from a send on a closed session worker channel, from races between Conn.Read/Write/Close
|
2019-07-01 18:55:07 -05:00 |
|
Arceliar
|
cd29fde178
|
temporary workaround to concurrency bug in sessions.getSharedKey
|
2019-06-29 19:32:15 -05:00 |
|
Arceliar
|
fbe44ea973
|
fix bug in session api code
|
2019-06-29 19:25:34 -05:00 |
|
Arceliar
|
40553a6a44
|
make GetSessions use the session workers to avoid races
|
2019-06-29 18:56:26 -05:00 |
|
Arceliar
|
d39428735d
|
recover if we try to send to a closed session worker due to a race between a Conn.Write call and a Conn.Close call
|
2019-06-29 18:50:21 -05:00 |
|
Arceliar
|
28db566b37
|
fix concurrency bug in iface.go
|
2019-06-29 18:44:24 -05:00 |
|
Arceliar
|
7d58a7ef3e
|
fix channel multiple close bug and concurrency bug in the way sessionInfo.close was being called
|
2019-06-29 17:44:28 -05:00 |
|
Arceliar
|
818eca90db
|
fix nil pointer deref if searches fail, block dial until a search exceeds or a timeout passes (todo: replace timer with context)
|
2019-06-29 16:10:02 -05:00 |
|
Arceliar
|
8ecf99d8a9
|
Merge pull request #443 from Arceliar/dial
Bugfix in dial code
|
2019-06-29 12:21:19 -05:00 |
|
Arceliar
|
784acba823
|
I think this fixes the concurrent map read/write panic
|
2019-06-29 12:14:44 -05:00 |
|
Neil Alexander
|
0d23342358
|
Merge pull request #441 from Arceliar/dial
Dial
|
2019-06-29 10:52:05 +01:00 |
|
Arceliar
|
e88bef35c0
|
get rid of old buffered session packets
|
2019-06-28 20:02:58 -05:00 |
|
Arceliar
|
e7cb76cea3
|
clean up unused old session maps
|
2019-06-28 19:21:44 -05:00 |
|
Arceliar
|
c808be514f
|
make tunAdapter.wrap return the right thing
|
2019-06-28 19:11:28 -05:00 |
|
Arceliar
|
5df110ac79
|
make Dial block until the search finishes, and use it as such
|
2019-06-28 18:42:31 -05:00 |
|
Neil Alexander
|
ac8ff740ee
|
Merge pull request #438 from neilalexander/multicast
Try and solidify multicast interface behavior
|
2019-06-29 00:38:38 +01:00 |
|
Neil Alexander
|
27b3b9b49b
|
Return new copy of interfaces on each Interfaces() call
|
2019-06-29 00:12:56 +01:00 |
|
Neil Alexander
|
93a323c62c
|
Add support for logging to file or syslog instead of stdout
|
2019-06-28 23:45:04 +01:00 |
|
Arceliar
|
29a0f8b572
|
some minor refactoring to dht callbacks and searches, work in progress
|
2019-06-25 19:31:29 -05:00 |
|
Neil Alexander
|
54f1804101
|
Try and solidify multicast interface behavior
|
2019-06-20 15:11:55 +01:00 |
|
Neil Alexander
|
2fd3ac6837
|
Merge pull request #432 from neilalexander/gatekeeper
Implement session gatekeeper functions
|
2019-06-13 23:41:42 +01:00 |
|
Neil Alexander
|
f545060e89
|
Add notes on isSessionAllowed checks
|
2019-06-13 23:37:53 +01:00 |
|
Neil Alexander
|
9a7d350884
|
Fix expressions
|
2019-06-11 23:48:00 +01:00 |
|
Neil Alexander
|
e229ad6e2b
|
Update comments
|
2019-06-11 12:52:13 +01:00 |
|
Neil Alexander
|
720a078a35
|
Add SetSessionGatekeeper
This allows you to define a function which determines whether a session connection (either incoming or outgoing) is allowed based on the public key.
|
2019-06-11 10:52:21 +01:00 |
|
Neil Alexander
|
17175b49f2
|
Add multicast interfaces to platform-specific defaults (this makes it easier to avoid bringing AWDL up by default on macOS as an example, or over L2 VPNs when not expected)
|
2019-06-11 10:18:59 +01:00 |
|
Arceliar
|
4b56849b08
|
fix issue with sessions dying and never being fixed
|
2019-06-10 22:09:12 -05:00 |
|
Arceliar
|
1addf08ccd
|
don't have Conn.Read return an error for temorary crypto failures from e.g. out of order packets, just drop the packet and keep blocking until there's usable traffic
|
2019-05-31 17:51:01 -05:00 |
|
Neil Alexander
|
f0422dbd8b
|
Fix panic when determining if CKR is enabled
|
2019-05-30 17:33:59 +01:00 |
|
Neil Alexander
|
9e086e70f0
|
Don't indefinitely block TUN/TAP reader goroutine when a conn error happens
|
2019-05-30 12:44:47 +01:00 |
|
Neil Alexander
|
0096d1ae3e
|
Re-add ICMPv6 packet too big handling
|
2019-05-29 20:16:17 +01:00 |
|
Neil Alexander
|
3b6c726a3c
|
Fix bug where MTU was ignored by sessions, resulting in default 1280
|
2019-05-29 19:11:12 +01:00 |
|
Neil Alexander
|
78eb40cbad
|
Record session uptime (purely for the admin socket)
|
2019-05-29 12:59:36 +01:00 |
|
Arceliar
|
b2513fce56
|
have the tunConn close things after a 2 minute timeout
|
2019-05-28 18:35:52 -05:00 |
|
Arceliar
|
5ea864869a
|
don't spam searches for unused connections. todo: timeout old connections somehow
|
2019-05-23 20:27:52 -05:00 |
|
Neil Alexander
|
70774fc3de
|
Reimplement get/setTunnelRouting, add/removeSourceSubnet, add/removeRoute, getRoutes, getSourceSubnets, make CKR threadsafe
|
2019-05-20 21:45:33 +01:00 |
|
Neil Alexander
|
5b8d8a9341
|
Reimplement getNodeInfo, dhtPing, get/add/removeAllowedEncryptionPublicKey, add/removePeer
|
2019-05-20 19:51:44 +01:00 |
|
Neil Alexander
|
e9e2d7bc6f
|
Remove debug println
|
2019-05-19 22:03:20 +01:00 |
|
Neil Alexander
|
d575b83ec1
|
Refactor admin socket somewhat, allow modules to set up their own handlers
|
2019-05-19 22:02:04 +01:00 |
|
Neil Alexander
|
8ef1978cb1
|
Start factoring out the admin socket into a separate module (not all functions implemented yet)
|
2019-05-19 17:27:48 +01:00 |
|
Neil Alexander
|
7ca5a2533d
|
Implement GetDHT, GetSwitchQueues, GetSessions
|
2019-05-19 16:29:04 +01:00 |
|
Neil Alexander
|
8a6f6f3b2b
|
Implement GetPeers and GetSwitchPeers API functions in Core, in preparation for breaking out the admin socket into a separate module
|
2019-05-18 17:21:02 +01:00 |
|
Neil Alexander
|
ce60609906
|
Remove wrappedConn as unnecessary
|
2019-05-18 16:16:32 +01:00 |
|
Neil Alexander
|
1b3ec0b93f
|
Fix multicast start check so that it shouldn't give up if interfaces aren't up when Yggdrasil starts (fixes #405)
|
2019-05-17 22:59:29 +01:00 |
|
Neil Alexander
|
ae2cc13d14
|
Fix configuration reloading support
|
2019-05-17 22:29:52 +01:00 |
|
Neil Alexander
|
71ccaf753e
|
Add crypto-key routing into TUN/TAP
|
2019-05-17 22:09:20 +01:00 |
|
Arceliar
|
9c01947b1c
|
reduce allocations in switch
|
2019-05-16 18:10:47 -05:00 |
|
Arceliar
|
522ed147b1
|
use the subnet derived ID/mask when creating a connection based on a subnet address, fix a potential blocking channel send in tuntap/conn.go, and get debug.go compiling well enough to profile things (the sim is currently still broken)
|
2019-05-15 18:01:26 -05:00 |
|
Arceliar
|
efdaea1b5e
|
fix some races and GetBytes/PutBytes usage, but this still seems to deadlock somewhere in iperf tests
|
2019-05-02 17:37:49 -05:00 |
|
Neil Alexander
|
5f66c4c95c
|
Try using separate workers for each TUN/TAP connection (sometimes produces duplicate packets when communicating with both the node address and a subnet address, sometimes also can't Ctrl-C to quit)
|
2019-04-28 17:14:09 +01:00 |
|
Arceliar
|
6469e39ff1
|
workaround to random timeouts
|
2019-04-26 22:42:05 -05:00 |
|
Arceliar
|
5d323861f0
|
properly fix the memory errors, it was caused by a function returning and PutBytes-ing a buffer before a worker had a chance to decrypt the buffer, so it would GetBytes the same buffer by dumb luck and then get an illegal overlap
|
2019-04-26 22:21:31 -05:00 |
|
Arceliar
|
01ea6d3d80
|
somehow this doesn't seem to deadlock or crash from buffer reuse (util.PutBytes), but I have no idea why it was doing that before and not now
|
2019-04-26 21:49:11 -05:00 |
|
Arceliar
|
15051b0a3c
|
Add deadline timers, keep searches alive until they complete (or the conn is closed) to keep Write from blocking forever
|
2019-04-26 19:31:47 -05:00 |
|
Arceliar
|
0059baf36c
|
add a newConn function that returns a pointer to a Conn with atomics properly initialized
|
2019-04-26 18:07:57 -05:00 |
|
Neil Alexander
|
75130f7735
|
Fix TAP support again
|
2019-04-23 11:46:16 +01:00 |
|
Neil Alexander
|
2b44f5d2f6
|
Fix TAP support
|
2019-04-23 11:37:32 +01:00 |
|
Neil Alexander
|
b4513ca2e8
|
Re-add support for TAP mode
|
2019-04-23 10:43:07 +01:00 |
|
Neil Alexander
|
870b2b6a2e
|
Remove CKR from src/yggdrasil (it will be moved into tuntap)
|
2019-04-23 10:28:40 +01:00 |
|
Neil Alexander
|
2bee3cd7ca
|
Update TODOs at top of tun.go
|
2019-04-23 00:04:22 +01:00 |
|
Neil Alexander
|
d7a1c04748
|
It works, sort of, amazingly
|
2019-04-22 23:58:59 +01:00 |
|
Neil Alexander
|
e1a2d666bf
|
Clean up router, tweaks
|
2019-04-22 23:12:13 +01:00 |
|
Neil Alexander
|
6e528799e9
|
Conn Read/Write operations will block while search completes
|
2019-04-22 22:38:37 +01:00 |
|
Neil Alexander
|
ea8948f378
|
TUN/TAP addr/subnet to Conn mappings, other fixes
|
2019-04-22 20:06:39 +01:00 |
|
Neil Alexander
|
9778f5d2b8
|
Fix search behaviour on closed Conns, various other fixes
|
2019-04-22 15:00:19 +01:00 |
|
Neil Alexander
|
bbd1246f7b
|
Fix bug in mask generation for outbound dials, change iface reader mutexes to read-only locks unless RW is needed
|
2019-04-22 11:49:47 +01:00 |
|
Neil Alexander
|
ccf03fd3b6
|
Don't write huge mostly empty buffers unnecessarily
|
2019-04-22 11:22:40 +01:00 |
|
Neil Alexander
|
47eb2fc47f
|
Break deadlock by creating session recv queue when session is created instead of repointing at search completion, also make expired atomic
|
2019-04-22 11:20:35 +01:00 |
|
Arceliar
|
5a02e2ff44
|
apparently it was these callbacks that were sometimes deadlocking things
|
2019-04-21 22:31:56 -05:00 |
|
Arceliar
|
9ce7fe2e3f
|
fix tun/tap CIDR notation so things work on linux, may break other platforms for all I know
|
2019-04-21 20:56:12 -05:00 |
|
Arceliar
|
5dada3952c
|
use a session worker to try to avoid mutex hell. compiles, but incomplete and doesn't work yet
|
2019-04-21 20:38:14 -05:00 |
|
Neil Alexander
|
0b8f5b5dda
|
Tweaks
|
2019-04-21 12:28:46 +01:00 |
|
Neil Alexander
|
781cd7571f
|
Fix race on tun conns, but still deadlocks if more than one connection is opened
|
2019-04-21 12:00:31 +01:00 |
|
Neil Alexander
|
79bcfbf175
|
Change some mutexes to atomics, change conns map to pointers, sort of works but seems to deadlock very easily
|
2019-04-21 11:50:41 +01:00 |
|
Neil Alexander
|
62621f2960
|
Some tweaks
|
2019-04-20 20:22:58 +01:00 |
|
Neil Alexander
|
d01662c1fb
|
Try to convert TUN/TAP to use new yggdrasil.Conn, search masks are still broken
|
2019-04-20 16:32:27 +01:00 |
|
Neil Alexander
|
f3e742a297
|
Squash a whole load of races (and mutex half the world)
|
2019-04-20 11:53:38 +01:00 |
|
Neil Alexander
|
24281d4049
|
Fix Read, update sample
|
2019-04-19 23:47:11 +01:00 |
|
Neil Alexander
|
e31b914e38
|
Improve errors and handling of expired sessions
|
2019-04-19 23:30:43 +01:00 |
|
Neil Alexander
|
7e726b0afb
|
Listener should clean up a bit more when closing
|
2019-04-19 23:04:09 +01:00 |
|
Neil Alexander
|
aac88adbed
|
Listen-Accept-Read-Write pattern now works, amazingly
|
2019-04-19 22:57:52 +01:00 |
|
Neil Alexander
|
27b78b925d
|
Move mutexes around
|
2019-04-19 21:23:15 +01:00 |
|
Neil Alexander
|
e3eadba4b7
|
Protect session nonces with mutexes, modify sent/received bytes atomically
|
2019-04-19 20:10:41 +01:00 |
|
Neil Alexander
|
ade684beff
|
Signal when a session is closed, other tweaks
|
2019-04-19 10:55:15 +01:00 |
|
Neil Alexander
|
c593721362
|
Tweaks
|
2019-04-19 00:33:54 +01:00 |
|
Neil Alexander
|
b20c8b6da5
|
Move some things around a bit, delete session workers
|
2019-04-19 00:11:43 +01:00 |
|
Neil Alexander
|
b2f4f2e1b6
|
Update errors, update Write
|
2019-04-19 00:07:26 +01:00 |
|
Neil Alexander
|
160e01e84f
|
Searches called from api.go, various other tweaks, searches now have a callback for success/failure, node ID now reported by admin socket
|
2019-04-18 23:38:23 +01:00 |
|
Neil Alexander
|
eef2a02d0a
|
Experiment with new API
|
2019-04-18 16:38:24 +01:00 |
|
Neil Alexander
|
24fa8355f1
|
Merge pull request #401 from neilalexander/modular
Refactoring for Yggdrasil library
|
2019-04-17 18:35:10 +01:00 |
|
Neil Alexander
|
9bc24f8dbf
|
Return both current and previous config when replacing
|
2019-04-15 22:00:38 +01:00 |
|
cathugger
|
4488189a75
|
wire: cleaner and faster wire_intToUint and wire_intFromUint
Bit operations are much faster on most processors than multiplication.
Also specify that it's zigzag to ease finding additional documentation for it.
|
2019-04-06 21:34:47 +03:00 |
|
Neil Alexander
|
2e72c7c93d
|
Fix mobile logging
|
2019-04-01 22:45:30 +01:00 |
|
Neil Alexander
|
90feae6a7d
|
Comment out AWDL (doesn't work in iOS properly) and move out of main package
|
2019-04-01 20:12:39 +01:00 |
|
Neil Alexander
|
350b51cabb
|
TUN/TAP now uses config, log, etc from adapter.go
|
2019-04-01 20:10:14 +01:00 |
|
Neil Alexander
|
58f5cc88d0
|
Fix session bug, fix dummy adapter, fix mobile framework builds
|
2019-04-01 19:59:50 +01:00 |
|
Neil Alexander
|
047717abf2
|
Break out mobile and dummy adapter
|
2019-04-01 18:02:06 +01:00 |
|
Neil Alexander
|
39baf7365c
|
Unexport/modify some interfaces to revive broken iOS/Android builds
|
2019-03-30 00:09:35 +00:00 |
|
Neil Alexander
|
4c0c3a23cb
|
Fix bugs
|
2019-03-29 18:24:57 +00:00 |
|
Neil Alexander
|
f19a4e4398
|
More godoc improvements
|
2019-03-29 18:18:31 +00:00 |
|
Neil Alexander
|
b5ac65cacb
|
Rearrange public interface, godoc improvements
|
2019-03-29 18:05:17 +00:00 |
|
Neil Alexander
|
399e1a2ffe
|
Make AddPeer remember added peer (as opposed to CallPeer which does not)
|
2019-03-29 08:58:30 +00:00 |
|
Neil Alexander
|
a830521078
|
Don't crash if Yggdrasil is started with no router adapter
|
2019-03-29 08:38:09 +00:00 |
|
Neil Alexander
|
dd05a7f2a8
|
Tweaks
|
2019-03-28 19:09:19 +00:00 |
|
Neil Alexander
|
fd0b614f9c
|
Temporarily disable debug CircleCI builds as I don't know how badly I've broken the sim with this PR
|
2019-03-28 18:03:14 +00:00 |
|
Neil Alexander
|
7ea4e9575e
|
Break out multicast into a separate package
|
2019-03-28 16:13:14 +00:00 |
|
Neil Alexander
|
03bc7bbcd6
|
Fix TUN/TAP for non-Darwin platforms
|
2019-03-28 15:32:01 +00:00 |
|
Neil Alexander
|
eb22ed44ac
|
Add new reject channel to router so we can send back rejected packets to adapter (e.g. for ICMPv6 Packet Too Big), implement ICMPv6 PTB in TUN/TAP instead of router
|
2019-03-28 09:50:13 +00:00 |
|
Neil Alexander
|
0715e829c2
|
Fix adapter setup and no longer panics on packets shorter than IP header
|
2019-03-28 09:12:00 +00:00 |
|
Neil Alexander
|
0b494a8255
|
Refactoring: move tuntap and icmpv6 into separate package
|
2019-03-28 00:30:25 +00:00 |
|
Neil Alexander
|
5bacfabae7
|
Handle cases where link-local addresses may disappear or change
|
2019-03-13 17:43:33 +00:00 |
|
Neil Alexander
|
41872820c3
|
Remove isAutoconf option to GenerateConfig
|
2019-03-12 19:18:43 +00:00 |
|
Neil Alexander
|
4062c93e18
|
Re-order config, update default Listen
|
2019-03-12 19:04:30 +00:00 |
|
Neil Alexander
|
830be7f4db
|
Update comments again
|
2019-03-12 16:06:12 +00:00 |
|
Neil Alexander
|
dc3a05f13a
|
Correctly classify link-local addresses in the TCP handler, fix AllowedPublicEncryptionKeys warning
|
2019-03-12 16:03:02 +00:00 |
|
Neil Alexander
|
c388885a92
|
Update config comments for AllowedEncryptionPublicKeys
|
2019-03-12 15:29:42 +00:00 |
|
Neil Alexander
|
229de91a3a
|
Fix AllowedEncryptionPublicKeys so that it works in incoming connections and not outgoing ones
|
2019-03-12 15:01:27 +00:00 |
|
Neil Alexander
|
ec19c479dd
|
Add comment about no reloading for LinkLocalTCPPort
|
2019-03-10 19:17:03 +00:00 |
|
Neil Alexander
|
9d5ca85424
|
Add LinkLocalTCPPort option
|
2019-03-10 19:08:56 +00:00 |
|
Neil Alexander
|
3c2cdfea1c
|
Keep AWDL awake, or wake it up again after a minute if suspended for some reason (e.g. sleep)
|
2019-03-10 18:05:27 +00:00 |
|
Arceliar
|
3c696c3e55
|
use idle time in switch decisions to force it to try all links
|
2019-03-09 19:27:52 -06:00 |
|
Arceliar
|
c7b4bfcef5
|
misc fixes
|
2019-03-09 18:08:26 -06:00 |
|
Neil Alexander
|
03eec4b14d
|
Don't leak interface name via multicast, ensure zone is always correct when dialling link-local
|
2019-03-09 09:24:52 +00:00 |
|
Arceliar
|
a0e6edd219
|
Merge pull request #360 from neilalexander/multilink
Support for multiple listeners
|
2019-03-08 18:56:47 -06:00 |
|
Arceliar
|
426d157025
|
make sure we don't replace an existing listener
|
2019-03-08 18:51:07 -06:00 |
|
Neil Alexander
|
917ca6c1c5
|
Make changes based on review comments
|
2019-03-08 10:26:46 +00:00 |
|
Arceliar
|
02b1892cc5
|
try to switch parents if a parent link is blocked
|
2019-03-07 21:36:12 -06:00 |
|
Neil Alexander
|
57eb6eaeb0
|
Clean up config package
|
2019-03-06 17:45:47 +00:00 |
|
Neil Alexander
|
b8cabf3212
|
Support removing Listen interfaces at runtime properly
|
2019-03-06 16:40:48 +00:00 |
|
Neil Alexander
|
18ef28a477
|
Fix default Listen config
|
2019-03-06 13:00:45 +00:00 |
|
Neil Alexander
|
531d9f39ca
|
Fix multicast bug, set static multicast interval 15 seconds
|
2019-03-06 12:15:40 +00:00 |
|
Neil Alexander
|
c0d5a8c0bd
|
Clean up old listeners first
|
2019-03-06 12:09:57 +00:00 |
|
Neil Alexander
|
f4e17b9a9f
|
Properly handle multicast interfaces going up and down
|
2019-03-06 12:07:33 +00:00 |
|
Neil Alexander
|
de2aff2758
|
Refactor multicast so that it creates a new TCP listener for each interface with LL addresses (so that it will not break if Listen is not set with a wildcard address)
|
2019-03-06 11:06:13 +00:00 |
|
Neil Alexander
|
19267beb9e
|
Merge branch 'develop' into multilink
|
2019-03-05 22:07:20 +00:00 |
|
Neil Alexander
|
236692bdc4
|
Add getTunnelRouting and setTunnelRouting (fixes #362)
|
2019-03-05 17:55:46 +00:00 |
|
Neil Alexander
|
a17d6d3a68
|
Fix getTunTap (fixes #363)
|
2019-03-05 17:37:26 +00:00 |
|
Neil Alexander
|
2ef823e69c
|
Fix deadlock when reconfiguring multicast
|
2019-03-04 23:16:46 +00:00 |
|
Neil Alexander
|
88925d3e06
|
Centralise call/listen functions in link.go
|
2019-03-04 22:45:35 +00:00 |
|
Neil Alexander
|
61774aed3b
|
Show proto in admin socket, link linkInfo from peer, other fixes
|
2019-03-04 20:33:08 +00:00 |
|
Neil Alexander
|
2b8648e2b3
|
Fix debug builds
|
2019-03-04 19:04:09 +00:00 |
|
Neil Alexander
|
0be0b078cb
|
Remove unused types in link.go
|
2019-03-04 19:00:06 +00:00 |
|
Neil Alexander
|
eeede4e6d0
|
Fix some obvious concurrency bugs
|
2019-03-04 18:47:40 +00:00 |
|
Neil Alexander
|
82bb95b77f
|
Some more (inelegant) multiple listener code plus some reconfigure support
|
2019-03-04 18:41:32 +00:00 |
|
Neil Alexander
|
be8db0c120
|
Support multiple TCP listeners
|
2019-03-04 17:52:57 +00:00 |
|
Neil Alexander
|
ae79246a66
|
Move TCP under link.go
|
2019-03-04 17:09:48 +00:00 |
|
Neil Alexander
|
918ce5a3fc
|
Add a timeout on the UNIX admin socket check
|
2019-03-03 19:32:36 +00:00 |
|
Neil Alexander
|
c940bae9e3
|
Update output
|
2019-03-03 14:15:01 +00:00 |
|
Neil Alexander
|
8f66d5b8dd
|
Try to clean up UNIX admin socket
|
2019-03-03 14:09:54 +00:00 |
|
Neil Alexander
|
3c733eadb4
|
Merge pull request #350 from neilalexander/awdl
Wake AWDL for multicast peering on macOS
|
2019-03-02 10:33:47 +00:00 |
|