Commit Graph

750 Commits

Author SHA1 Message Date
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
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
5df110ac79 make Dial block until the search finishes, and use it as such 2019-06-28 18:42:31 -05: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
f545060e89
Add notes on isSessionAllowed checks 2019-06-13 23:37:53 +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
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
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
5ea864869a don't spam searches for unused connections. todo: timeout old connections somehow 2019-05-23 20:27:52 -05:00
Neil Alexander
5b8d8a9341
Reimplement getNodeInfo, dhtPing, get/add/removeAllowedEncryptionPublicKey, add/removePeer 2019-05-20 19:51:44 +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
ae2cc13d14
Fix configuration reloading support 2019-05-17 22:29:52 +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
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
870b2b6a2e
Remove CKR from src/yggdrasil (it will be moved into tuntap) 2019-04-23 10:28:40 +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
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
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
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
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
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
dc3a05f13a
Correctly classify link-local addresses in the TCP handler, fix AllowedPublicEncryptionKeys warning 2019-03-12 16:03:02 +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
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
b8cabf3212
Support removing Listen interfaces at runtime properly 2019-03-06 16:40:48 +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