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
Neil Alexander
12e088ab9e
Remove unnecessary Cgo line
2019-03-01 19:34:53 +00:00
Neil Alexander
e99903bf72
Wake up AWDL on Darwin if awdl0 is an enabled multicast interface
2019-03-01 19:26:50 +00:00
Neil Alexander
a6ae159329
Give some more feedback that a configuration reload actually happens
2019-03-01 18:26:52 +00:00
Arceliar
304f22dc1d
re-enable session workers in a way that doesn't block and drops packets before decrypting if necessary
2019-02-28 20:05:21 -06:00
Arceliar
06df791efc
buffer packets moving from the switch to the router, allow them front drop if there's too many
2019-02-28 19:08:56 -06:00
Arceliar
371b5ca6a2
Change log message about AllowedEncryptionPublicKeys from Debug to Warn
2019-02-28 18:49:34 -06:00
Arceliar
2569242050
fixes to linkInterface.handler()
2019-02-26 21:07:56 -06:00
Arceliar
def4fb3587
fix timeout and improve logging on connection close
2019-02-24 14:48:16 -06:00
Arceliar
654407dc6d
close long-dead connections in link.go instead of in switch.go, this is important in case a connection opens but never bothers to send even one switch message
2019-02-24 13:24:55 -06:00
Arceliar
bb3edd5e55
add the relevant error to the default logging when a connection is closed
2019-02-24 12:59:30 -06:00
Arceliar
042adb0516
make sure the only place traffic is ever dropped is in the switch. this currently disables the dedicated crypto workers
2019-02-23 00:07:00 -06:00
Arceliar
e31962de0f
Merge branch 'develop' into switch
2019-02-16 16:26:20 -06:00
Arceliar
6f0bbbfb98
Debug some issues with the state machine that tracks idle connections in link.go
2019-02-15 19:35:10 -06:00
Arceliar
3c9c8672c9
Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into switch
2019-02-15 16:28:48 -06:00
Neil Alexander
0ca64b0abe
Remove ReadTimeout configuration option
2019-02-10 12:13:49 +00:00
Arceliar
21cecf4630
consistently prioritize which peer to forward to instead of letting it be partly random
2019-02-09 17:44:25 -06:00
Arceliar
ad43558fbb
fix bug in switch time
2019-02-09 15:30:17 -06:00
Arceliar
74ac535d55
slightly faster switch logic, should be easier to have a useful tie-breaker for peers that are equally close to the destination via the tree metric
2019-02-08 19:46:11 -06:00
Arceliar
41f49faaa0
get code running in the netns test again, remove unnecessary allocations that were found in profiling
2019-02-05 17:39:59 -06:00
Arceliar
2f8dd5dde0
remove race condition in setting peer.close by requiring it as an argument to newPeer
2019-02-03 15:50:25 -06:00
Arceliar
5ddf84f329
remove peers completely after a long switch timeout, this could use some improvement later
2019-02-03 15:22:14 -06:00
Arceliar
ebbe5f67ad
don't time out a link unless we were expecting an ack and didn't get one
2019-02-02 22:41:51 -06:00
Arceliar
b44a0f29f3
send an ack if we receive a packet and don't have any return traffic, keeping a legacy 4-second keep-alive in case there's no traffic at all to send (to be removed later, after nodes have upgraded), ideally we should either remove ReadTimeout or use it for the switch idle timeout instead
2019-02-02 22:18:55 -06:00
Neil Alexander
43f798e82e
Check link-local in tcp.go, track direction in link.go, fix compile error for mobile.go
2019-02-01 00:02:17 +00:00
Neil Alexander
ec5f7d9879
Enforce AllowedEncryptionPublicKeys for all peers inc. link-local
2019-01-31 23:47:20 +00:00
Neil Alexander
432f93de89
Check AllowedEncryptionPublicKeys
2019-01-31 23:29:18 +00:00
Neil Alexander
e36f88c75f
Info logging when link connects/disconnects
2019-01-31 23:18:02 +00:00
Arceliar
05962b2cbd
disable idle nodes in the switch instead of killing the connection entirely. this implementation is ugly, but i think it maybe works
2019-01-30 20:58:23 -06:00
Neil Alexander
2466c54a71
Update debug lines in link.go
2019-01-27 20:56:10 +00:00
Neil Alexander
1a3a67f205
Merge remote-tracking branch 'origin/develop' into link
...
Fix merge conflicts from flexible logging branch
2019-01-27 20:54:21 +00:00
Neil Alexander
22d2e0e4fe
Fix debug builds
2019-01-27 13:33:32 +00:00
Neil Alexander
0838928668
Add support for flexible logging levels
2019-01-27 13:31:43 +00:00
Arceliar
6ef0e47632
fix merge conflict
2019-01-26 14:27:37 -06:00
Arceliar
bca69df1f6
possible workaround to a deadlock
2019-01-26 14:07:18 -06:00
Neil Alexander
705b914d00
Move awdl into link
2019-01-23 19:42:33 +00:00
Neil Alexander
188a9e439d
Bug fixes for AWDL
2019-01-23 18:16:31 +00:00
Neil Alexander
2944be4faf
Further tweaks
2019-01-23 17:05:16 +00:00
Neil Alexander
81545fd9bf
Clean up
2019-01-23 15:16:22 +00:00
Neil Alexander
9c6cf50684
Adapt AWDL to link
2019-01-23 15:08:19 +00:00
Arceliar
7b2460662d
close the connection before blocking a duplicate link
2019-01-22 21:53:39 -06:00
Arceliar
f936151f2d
correctly clean up various things
2019-01-22 21:48:43 -06:00
Arceliar
eb8951081d
fix duplicate connection bug, I think this is also in develop
2019-01-22 21:23:57 -06:00
Arceliar
12c0e019dc
only create one interface, but still opens duplicate connections before it catches this, so more work is needed
2019-01-22 21:16:41 -06:00
Arceliar
f95663e923
actually finish initializing peers
2019-01-22 18:24:15 -06:00
Arceliar
137212d8cf
work in progress, establishes TCP connections and gets through metadata handshake using the link code, but doesn't seem to send traffic yet (no switch peers are created)
2019-01-21 23:08:50 -06:00
Arceliar
5a4d6481dd
Work in progress, add a linkInterfaceMsgIO interface type and make stream implement it, this will be used by link
2019-01-21 21:27:52 -06:00
Neil Alexander
ad6ec6ab11
Merge pull request #315 from neilalexander/flowlabel
...
Update switch flow separation for IPv4
2019-01-21 23:22:40 +00:00
Neil Alexander
62d4d62a77
Update comments
2019-01-21 16:24:29 +00:00
Neil Alexander
d3f67ad017
Improve command flow
2019-01-21 16:22:49 +00:00
Neil Alexander
cdfb930703
Update switch flow separation for IPv4
2019-01-21 12:27:29 +00:00
Arceliar
c8e1be0f73
link/stream refactoring bugfixes and gofmt
2019-01-19 16:37:45 -06:00
Neil Alexander
41a410f2a1
Initialise awdl.go from link.go, remove deadlock between awdl.create and link.create, other bits and pieces
2019-01-19 12:19:24 +00:00
Neil Alexander
c51a3340b1
Update awdl.go to use new link stuff (untested)
2019-01-19 00:42:53 +00:00
Neil Alexander
4ae36dfffe
Merge branch 'ios' into link
2019-01-19 00:23:38 +00:00
Neil Alexander
6fe3b01e90
Rename awdl.go to link.go, add stream.go, update tcp.go
2019-01-19 00:14:10 +00:00
Neil Alexander
30df632eb2
Merge branch 'develop' into ios
2019-01-17 23:15:00 +00:00
Neil Alexander
c839012580
Fix source address selection
2019-01-17 23:06:59 +00:00
Neil Alexander
9d5085492e
Handle session firewall using central config
2019-01-16 20:38:51 +00:00
Neil Alexander
fdf300a1ff
Handle AllowedEncryptionPublicKeys internally
2019-01-16 20:26:39 +00:00
Neil Alexander
68eb684f6d
Fix mobile.go now that multicast interfaces are handled internally
2019-01-16 19:27:44 +00:00
Neil Alexander
8baf593b62
Update source address selection when sintf specified
2019-01-16 14:52:27 +00:00
Neil Alexander
c85dbaea95
Fix missing nodeinfo.init
2019-01-16 13:23:26 +00:00
Neil Alexander
4fba558638
Fix concurrent map write in tcp.go
2019-01-16 13:20:12 +00:00
Neil Alexander
53be1b02f3
Check if accepting socket produced an error
2019-01-15 08:53:57 +00:00
Neil Alexander
2cd373fc1e
Remove unnecessary selects
2019-01-15 08:51:19 +00:00
Neil Alexander
39567bed83
Address some comments
2019-01-15 08:44:33 +00:00
Neil Alexander
3bf53796a7
Merge branch 'develop' into nodeconfig
2019-01-15 08:37:10 +00:00
Arceliar
248edf8319
Merge pull request #304 from deavmi/develop
...
Spelling fixes
2019-01-14 21:27:15 -06:00
Neil Alexander
d9ddf30faf
Fix debug builds
2019-01-14 19:29:22 +00:00
Neil Alexander
f6b663c257
Make multicasting use config instead of ifceExpr in Core
2019-01-14 19:27:13 +00:00
Neil Alexander
9e486ed4fe
Move nodeinfo into router
2019-01-14 19:05:16 +00:00
Neil Alexander
5cde3b5efc
Update nodeinfo in router reconfigure
2019-01-14 18:51:49 +00:00
Neil Alexander
9e186bdd67
Remove mutexes from CKR and use router goroutine/doAdmin for update config
2019-01-14 18:34:15 +00:00
Neil Alexander
51026d762e
Make session firewall thread-safe for config updates
2019-01-14 18:24:35 +00:00
Neil Alexander
bd04124e43
Reconfigure support for crypto-key routing
2019-01-14 18:06:41 +00:00
Neil Alexander
28072c9fe2
Make CKR thread-safe
2019-01-14 17:41:08 +00:00
Neil Alexander
87d393bd9f
Move add peer loop into Core, refresh it from active config
2019-01-14 17:21:15 +00:00
Neil Alexander
aed3c7e784
Give nodeconfig to tun
2019-01-14 14:25:52 +00:00
Neil Alexander
738a9da796
Merge branch 'develop' into nodeconfig
2019-01-14 14:01:38 +00:00
Neil Alexander
f556f3e2a8
Try to perform TCP-like key exchange
2019-01-13 22:57:37 +00:00
Neil Alexander
704e4a062f
Specify source interface when responding to multicast beacon
2019-01-13 22:51:34 +00:00
Neil Alexander
c8db66b17d
Remove unneeded AWDL context functions
2019-01-13 18:11:36 +00:00
Neil Alexander
4622a85c34
AWDL support for macOS/iOS
2019-01-13 18:08:41 +00:00
Neil Alexander
e24e859254
Add some comments, move AWDL functions to iOS-specific build tags
2019-01-10 11:31:04 +00:00
Neil Alexander
a371e34a18
Add Android support, add addStaticPeers
2019-01-10 10:44:44 +00:00
Tristan B. Kildaire
08a71af2d8
Spelling fixes for switch.go
2019-01-09 11:49:12 +02:00
Tristan B. Kildaire
345979b502
Spelling fixes for search.go
2019-01-09 11:44:45 +02:00
Tristan B. Kildaire
ab4be3424b
Spelling fixes for peer.go
2019-01-09 11:42:07 +02:00
Neil Alexander
6efac9a377
Add contexts
2019-01-06 14:12:10 +00:00
Neil Alexander
2034c9eab9
Fix missing pointer from awdlInterface to awdl
2019-01-05 23:00:49 +00:00
Neil Alexander
87362a21e2
Access NSLog through Cgo for iOS NetworkExtension logging
2019-01-05 21:59:07 +00:00
Neil Alexander
6bbd8c1b30
Rethink channels, more error throwing
2019-01-05 12:06:45 +00:00
Neil Alexander
90366dd853
Update handler behavior
2019-01-05 01:02:22 +00:00
Neil Alexander
1170ea9e98
Start linkloop
2019-01-05 00:52:41 +00:00
Neil Alexander
4363283a6f
Notify switch idle
2019-01-05 00:32:28 +00:00
Neil Alexander
00bf71a09a
Fight me Swift and your hexadecimal strings
2019-01-04 23:31:44 +00:00
Neil Alexander
5a36b4723a
Add AWDL calls to exposed API, handle proto traffic first
2019-01-04 17:41:03 +00:00
Neil Alexander
3878197a59
gofmt
2019-01-04 17:23:37 +00:00
Neil Alexander
f29a098488
Add experimental dummy interface for AWDL
2019-01-04 17:14:40 +00:00
Neil Alexander
d10a0d6137
Add GenerateConfigJSON, fix StartJSON
2019-01-03 22:50:08 +00:00
Neil Alexander
f7b0a85b5e
Add StartJSON
2019-01-02 23:15:36 +00:00
Neil Alexander
4ff3db2309
Add dummy tun, helper functions
2019-01-02 18:05:54 +00:00
Neil Alexander
53aeca8fa2
Add some simple functions for Swift bindings (iOS)
2019-01-01 23:25:20 +00:00
Neil Alexander
1e29465af1
Fix debug builds (hopefully)
2018-12-31 12:08:15 +00:00
Neil Alexander
4d3e90cbfe
Merge branch 'develop' into nodeconfig
2018-12-31 11:55:37 +00:00
Neil Alexander
fb47c9822f
getNodeInfo: Show own info if box_pub_key/coords not specified
2018-12-31 11:48:50 +00:00
Neil Alexander
cd86c33850
Try to tidy up a bit, move checks for if we are already calling/connected
...
Something I noticed when working on reconfigure support for the "Listen"
option is that we have some rather huge weaknesses in our multicasting
design. Right now if we change our Listen address, it's not really
possible for remote nodes to know whether they are still connected to
us, so they start connecting in response to our changed beacons. They
can't know that they already know about us until *after* the handshake
but this registers in the local client log as repeated Connect/Disconnects
even though the existing peerings never actually drop.
2018-12-30 21:11:16 +00:00
Neil Alexander
80c9a1bc12
Don't track localAddr in conns as it is irrelevant
2018-12-30 16:48:34 +00:00
Neil Alexander
cb4495902b
Allow updating Listen during runtime
2018-12-30 15:21:09 +00:00
Neil Alexander
f96747181d
Allow updating AdminListen during runtime
2018-12-30 12:26:55 +00:00
Neil Alexander
7fae1c993a
Handle errors from reconfigure tasks
2018-12-30 12:04:42 +00:00
Neil Alexander
2925920c70
Use mutex in switch/tcp init
2018-12-29 19:53:31 +00:00
Neil Alexander
fa7c4117b4
Use Core.config in init functions
2018-12-29 19:14:26 +00:00
Neil Alexander
219fb96553
Support notifying components for config reload, listen for SIGHUP
2018-12-29 18:51:51 +00:00
Neil Alexander
4e03bdb054
Don't process ICMPv6 messages when in TUN mode
2018-12-26 22:45:21 +00:00
Neil Alexander
74692b689a
Fix OpenBSD (tested and working on 6.4)
2018-12-26 12:25:28 +00:00
Neil Alexander
b3d6c9a385
Print when peermacs learned
2018-12-26 11:57:08 +00:00
Neil Alexander
9eeb482587
Use ICMPv6 NDP target instead of source address when populating peermacs
2018-12-26 11:51:21 +00:00
Arceliar
50ed92d6d2
insert a copy when calling dht.insertPeer
2018-12-26 00:18:51 -06:00
Tristan B. Kildaire
b66049c14f
Typo fix
...
Typo fix in function's header comment.
2018-12-22 11:31:52 +02:00
Neil Alexander
0dfdc789d3
Merge pull request #275 from neilalexander/nodeinfomask
...
Allow hiding nodeinfo defaults
2018-12-22 08:54:37 +00:00
Arceliar
59093aa43b
clean up node info immediately if it reaches the timeout or if it needs refreshing but won't be pinged due to being unimportant
2018-12-21 17:45:24 -06:00
Neil Alexander
f6b0075989
Case-insensitive checking of null if string, don't print the nodeinfo again
2018-12-21 10:04:32 +00:00
Neil Alexander
586deed0f9
Add NodeInfoPrivacy option for not including defaults, and also check for null/"null" instead of "hide"
2018-12-21 09:56:34 +00:00
Arceliar
f59852b1e1
adjust how dht throttle works, it should now back off faster, and back off even more if things are not in use
2018-12-20 20:16:51 -06:00
Neil Alexander
60549cfa09
Adds special keyword 'hide' for masking built-in nodeinfo defaults
2018-12-20 23:49:15 +00:00
Arceliar
dfcdafa55c
move special peer/dht insert logic form router.go to dht.go
2018-12-20 17:37:59 -06:00
Neil Alexander
8ec4c66f65
Multithread the admin socket
2018-12-17 19:06:52 +00:00
Neil Alexander
6e87791e50
Merge pull request #256 from Arceliar/tcp
...
Minor TCP change
2018-12-17 10:20:23 +00:00
Arceliar
300f471bab
don't SetKeepAlive[Period] on tcp connections, since the behavior is platform specific
2018-12-16 18:32:50 -06:00
Arceliar
db034ce6bd
replace panics with warning messages if the tun reader/writer return an error
2018-12-16 17:23:07 -06:00
Arceliar
d9f212dd39
don't panic if we write to a closed tun device because tun.close() was called
2018-12-16 17:01:59 -06:00
Arceliar
28c7d75a20
fix conflicts with nodeinfo and update that for new crypto type names
2018-12-15 18:11:02 -06:00
Arceliar
89f9f5defb
fix merge conflicts
2018-12-15 17:57:36 -06:00
Neil Alexander
e0ff3ca587
Rename Metadata to NodeInfo
2018-12-15 22:37:11 +00:00
Neil Alexander
226c72df16
Set max metadata size to 16kb
2018-12-15 13:18:35 +00:00
Neil Alexander
07c26176b6
Fix core.SetMetadata
2018-12-15 12:21:00 +00:00
Neil Alexander
9a5cf96c29
Rename admin socket getMeta to getMetadata
2018-12-15 12:18:52 +00:00
Neil Alexander
92bb63f196
Use metadata from config file
2018-12-15 11:38:51 +00:00
Neil Alexander
d9884a5cac
Make use of metadata cache
2018-12-15 11:15:48 +00:00
Neil Alexander
d07e0ddfa0
Default metadata
2018-12-15 10:56:46 +00:00
Neil Alexander
8b63e841ea
Make threadsafe, add cache
2018-12-15 10:39:31 +00:00
Arceliar
4875ab8954
peer thread safey for dhtInfo updates
2018-12-14 21:44:31 -06:00
Arceliar
570e85c297
remove debug code
2018-12-14 21:12:25 -06:00
Arceliar
ea4ca02681
fix code after moving address/crypto/util
2018-12-14 20:49:18 -06:00
Neil Alexander
cdd2e7910a
Merge remote-tracking branch 'origin/develop' into metadata
2018-12-15 00:48:54 +00:00
Neil Alexander
d5031a5cb6
Metadata exchange without sessions
2018-12-15 00:48:27 +00:00
Arceliar
2c68d41409
move files, still need to fix exports and compile errors
2018-12-14 18:30:36 -06:00
Arceliar
abd8b69979
send a switch message immediately when peering, and use OS-level TCP keep-alive (shouldn't matter right now, since we have application-level keep-alive that preempts it, but important later)
2018-12-14 18:15:35 -06:00
Neil Alexander
f9dc300787
Define Adapter base type/interface
2018-12-14 18:29:00 +00:00
Neil Alexander
8045cb4dc3
Define generic adapter type, rename tunDevice to tunAdapter
2018-12-14 18:21:08 +00:00
Neil Alexander
f28360ce4d
Fix debug builds (foiled by debug builds every time)
2018-12-14 18:10:39 +00:00
Neil Alexander
2a38ad07cd
Don't send ICMPv6 back when tun disabled
2018-12-14 18:08:40 +00:00
Neil Alexander
9eaa2566c1
Parameterise tun.init
2018-12-14 18:08:13 +00:00
Neil Alexander
3ca5f10733
Don't try to correct peers with no schemes in addPeer
2018-12-14 17:52:54 +00:00
Neil Alexander
10157483f9
Move tunDevice into router
2018-12-14 17:35:02 +00:00
Neil Alexander
a9907a7878
Fix debug builds after 64060a4
2018-12-12 22:59:55 +00:00
Neil Alexander
64060a447c
Remove metadata-peer association until we have some sensible way to cache it
2018-12-12 22:58:16 +00:00
Neil Alexander
74de8c9416
Consistent function naming for metadata
2018-12-12 22:48:04 +00:00
Neil Alexander
042a3400fe
Wrap the metadata with a mutex to guarantee thread safety across core/router/sessions
2018-12-12 22:40:49 +00:00
Neil Alexander
97464feba9
Working metadata exchange
2018-12-12 19:51:28 +00:00
Neil Alexander
6200136fce
Merge branch 'descriptive' into metadata
2018-12-12 18:04:49 +00:00
Arceliar
6901e2fc9a
Merge pull request #238 from neilalexander/afunix
...
Use AF_UNIX socket by default for admin API
2018-12-10 17:34:36 -06:00
Neil Alexander
90ace46587
Enforce CKR cache size more strongly
2018-12-10 22:30:31 +00:00
Neil Alexander
65e34bbbab
Enforce maximum CKR routing cache size
2018-12-10 22:19:08 +00:00
Neil Alexander
f09adc2192
Update getRoutes format
2018-12-10 22:04:37 +00:00