Commit Graph

1446 Commits

Author SHA1 Message Date
Neil Alexander
57ea61b338 Remove reconfiguration on SIGHUP - it didn't work reliably anyway 2021-05-10 22:47:28 +01:00
Neil Alexander
e12c639c21 Remove obsolete switch options 2021-05-10 22:42:57 +01:00
Neil Alexander
05caf36f4e Fix AllowedPublicKeys 2021-05-10 22:39:12 +01:00
Neil Alexander
c20b66f3b6 Metadata/version tweaks 2021-05-10 22:31:01 +01:00
Neil Alexander
bb92e61e68 Remove encryption public key options (they are now derived from ed25519 key conversion in IW), also bump link version number 2021-05-10 22:06:38 +01:00
Arceliar
b48962a69a limit MTU to no more than what the packetconn claims to support 2021-05-09 11:27:37 -05:00
Arceliar
3bfd891fd4 reduce time keystore mutex is held and (apparently) fix a deadlock 2021-05-09 09:20:28 -05:00
Arceliar
ed85cf08f2 WIP close the ironwood PacketConn when shutting down 2021-05-08 12:31:26 -05:00
Arceliar
8bed79370b (broken state) WIP, compiles and passes the netns ping test 2021-05-08 11:52:22 -05:00
Arceliar
b345806e3f (broken state) more WIP (cleanup) 2021-05-08 11:35:04 -05:00
Arceliar
0f787364de (broken state) more tuntap WIP to add out-of-band key lookup 2021-05-08 11:32:57 -05:00
Arceliar
5b22392c66 (broken state) more WIP on tuntap stuff 2021-05-08 11:14:50 -05:00
Arceliar
0cff56fcc1 (broken state) WIP on tuntap 2021-05-08 10:39:07 -05:00
Arceliar
f1c37f8440 (broken state) WIP rewriting core to use ironwood 2021-05-08 08:35:58 -05:00
Arceliar
ace7b43b6d (broken state) WIP address migration 2021-05-08 07:25:53 -05:00
Arceliar
ae96148008 Merge branch 'pathfinder' of https://github.com/Arceliar/yggdrasil-go into future 2021-05-08 06:45:10 -05:00
Arceliar
6eb74a40e1
Merge pull request #751 from Arceliar/bugfix
Fix goroutine leak in link.go
2020-12-19 11:04:13 -06:00
Arceliar
78073429a2 Merge branch 'pathfinder' of https://github.com/Arceliar/yggdrasil-go into pathfinder 2020-12-19 06:03:59 -06:00
Arceliar
0ba2ad74fe use source routes in the dht (when available) 2020-12-19 06:03:28 -06:00
Arceliar
a8810c7ee9 if the link handler exits early due to an existing connection, then have it return a channel to that connection which closes when the connection is closed, so we can choose to block on that to avoid spamming connection attempts with dial 2020-12-13 16:29:03 -06:00
Arceliar
1daf3e7bd7 remove link.go block on oldIntf if we already have a connection to the same node, this spams connections, so it's not a good long-term fix if that's where the goroutine leak is 2020-12-13 16:16:14 -06:00
Neil Alexander
b9f35c5530
Return ICMPv6 Destination Unreachable for unknown destinations (#748)
* Return ICMPv6 Destination Unreachable for unknown destinations

* Update go.mod/go.sum for yggdrasil-extras

* go mod tidy
2020-12-06 19:47:25 +00:00
Neil Alexander
cb3d8647de
Merge pull request #744 from octeep/master
Fix DefaultIfName for OpenBSD
2020-12-06 13:48:09 +00:00
Arceliar
df1239b054 attempting to debug/fix a possible goroutine leak 2020-11-25 02:44:13 -06:00
Arceliar
939ffb02f8 adjust when dht reqs are reset 2020-11-14 15:05:02 -06:00
octeep
04e890fcc3
Change DefaultIfName from "/dev/tun0" to "tun0"
Specifying the full path to the interface in OpenBSD would result in:
panic: Interface name must be tun[0-9]*

Therefore, DefaultIfName should be changed to tun0 in order to make yggdrasil work out of the box.
2020-11-13 06:38:27 +00:00
Arceliar
428789f24c simplify switch parent selection and minor source routing improvements 2020-11-09 19:01:11 -06:00
Arceliar
144d42c773 send dht responses via reverse path (fixes some possible DDoS issues with the old coord approach) 2020-11-08 06:09:55 -06:00
Arceliar
0ac203b007 adjust how sessions learn source routes, try to recover faster if coords change (but assume the old path still works until we get a ping through that gives us a new path) 2020-11-08 05:39:30 -06:00
Arceliar
e19e938f64 safer pathfinding behavior 2020-11-07 15:19:09 -06:00
Arceliar
994c26e5f7 simplify pathfinder 2020-11-07 12:08:01 -06:00
Arceliar
b5cd40b801 WIP very simple insecure proof-of-concept for pathfinding and source routing 2020-11-07 10:50:55 -06:00
Arceliar
e2521de94d add path information to (protocol) traffic packets as they flow through the network, and a field for a reply path 2020-11-07 09:44:34 -06:00
Arceliar
36e4ce4b0b WIP rough implementation of the source routed part of hybrid routing, does not work if coord length is too long (>127 hops) 2020-11-07 07:10:13 -06:00
Arceliar
92dbb48eda add (but don't use) offset field for (protocol) traffic packets 2020-11-07 06:18:09 -06:00
Arceliar
1d1c6efa1f attempt to keep TCP listener alive if there's a temporary error (e.g. too many open files), just pause and retry later 2020-10-18 11:01:18 -05:00
Arceliar
b6c894bc01 Merge branch 'future' of https://github.com/yggdrasil-network/yggdrasil-go into develop-future 2020-10-11 07:35:28 -05:00
Arceliar
afebc1f93d
Merge pull request #712 from Arceliar/bugfix
[future] possibly fix missing switch peer issue
2020-10-11 07:34:19 -05:00
Neil Alexander
fdb296047b
Merge branch 'future' into develop-future 2020-09-27 20:28:26 +01:00
Ryan Westlund
d6d2d9c19a
Accept some golint suggestions (#690)
* Fixed some linter issues

* Simplified isBetter method

* Accept some linter suggestions

* Fix typo

Co-authored-by: klesomik <klesomiks@gmail.com>
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
2020-09-27 14:42:46 +01:00
Neil Alexander
48bf0ce210
Revert "Fix build"
This reverts commit e09ca6a089.
2020-09-27 13:28:13 +01:00
Neil Alexander
e09ca6a089
Fix build 2020-09-27 13:26:37 +01:00
Ryan Westlund
fcb6f5ca36
Set default conf file on FreeBSD to /usr/local/etc/yggdrasil.conf (#717) 2020-09-27 13:22:49 +01:00
Arceliar
33e3679458
multicast, use the prebuilt interface map when checking active listeners (#707) 2020-09-27 13:16:51 +01:00
Neil Alexander
d9fd68f18c
Fix build 2020-07-06 14:21:28 +01:00
Neil Alexander
a4a346c498
Merge branch 'develop' into future 2020-07-06 14:16:38 +01:00
George
48f008a8e2
Implement Core.RemovePeer method (#699) (#709)
Co-authored-by: George <zhoreeq@users.noreply.github.com>
2020-07-06 14:14:34 +01:00
Arceliar
3fded209df try to fix some possible races with how peers are added/removed and how they're blocked in the switch when they enter a bad state 2020-06-06 12:30:54 -05:00
Arceliar
aec82d7a39
Merge pull request #702 from Arceliar/switch
Precompute more for the switch lookup table
2020-05-30 18:39:43 -05:00
Arceliar
a1856258a9
Merge pull request #704 from Arceliar/queues
Faster queue logic
2020-05-30 18:39:33 -05:00
Arceliar
35e7542889
Merge pull request #706 from Arceliar/buffers
More buffer fine-tuning
2020-05-30 18:39:24 -05:00
Arceliar
c83b070c69 remove old switch lookup functions 2020-05-30 13:12:49 -05:00
Arceliar
0f28862e99 remove unused sequence number from switch 2020-05-30 10:48:59 -05:00
Arceliar
5e170e22e1 more switch fixes 2020-05-30 10:47:54 -05:00
Arceliar
3dc2242712 fix handling of keepAliveTimer and blocked state in link.go 2020-05-30 10:32:15 -05:00
Arceliar
8775075c18 debugging 2020-05-27 19:35:19 -05:00
Arceliar
905c28f7b2 fix some issues with the rewritten switch lookup tables 2020-05-27 19:31:17 -05:00
Arceliar
1df305d31c simplify how blocking is detected and packets are dequeued 2020-05-27 18:53:14 -05:00
Arceliar
09f9f4e8e4 use heap.Fix instead of heap.Remove + heap.Push when updating queues, this is theoretically faster 2020-05-25 20:09:57 -05:00
Arceliar
674d8b58b6 get things compiling again 2020-05-25 19:27:17 -05:00
Arceliar
152e9057a0 Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into future 2020-05-25 19:25:05 -05:00
Arceliar
85eec5ba8e tcp ygg-over-ygg debug logging 2020-05-25 19:13:37 -05:00
Arceliar
8345ae1fa3 don't allow ygg tcp connections to/from a local ygg address 2020-05-25 19:08:04 -05:00
Arceliar
dbc3b9b4c4
Merge pull request #701 from Arceliar/buffers
More buffer fine-tuning
2020-05-25 16:30:43 -05:00
Arceliar
366a8ba3dd Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into future 2020-05-25 16:28:12 -05:00
Neil Alexander
45810fa184
Merge pull request #703 from Arceliar/dht
Store less in the DHT
2020-05-25 22:18:00 +01:00
Arceliar
1f65ffb310 work-in-progress heap-based queue structure 2020-05-25 16:07:56 -05:00
Arceliar
761ae531cb work-in-progress faster queue logic 2020-05-25 15:19:32 -05:00
Arceliar
eefabb5f9f disregard nodes if they're unimportant, even if they're already in the DHT 2020-05-25 12:44:06 -05:00
Arceliar
40bfd207f5 don't store every node we hear from in the DHT, only ones we already know about or that are important 2020-05-25 12:23:38 -05:00
Arceliar
f9bc0b7aee use a more elaborate precomputed lookup table from the switch 2020-05-25 11:49:25 -05:00
Arceliar
38dcbb1e2f cleaner way to handle seq/idle checks for the peer 2020-05-24 17:49:48 -05:00
Arceliar
4382368b08 make sure the peer isn't idle before entering drop mode 2020-05-24 17:43:35 -05:00
Arceliar
9574308545 have the peer delay setting a max buffer size, in case things have unblocked in the mean time 2020-05-24 17:35:49 -05:00
Arceliar
7778a47a8f fix darwin compile problem 2020-05-24 15:46:18 -05:00
Arceliar
98816f34b2 don't spam calls to net.Interfaces and net.Interface.Addrs (hopefully) 2020-05-24 15:24:39 -05:00
Arceliar
1e471e3712 back to master's version of multicast, lets try rewriting it again 2020-05-24 14:43:38 -05:00
Arceliar
c2d6e9e8f1 close listener when a multicast interface is removed 2020-05-24 14:09:06 -05:00
Arceliar
77ded84ea5 simplify routerInterface 2020-05-23 12:21:23 -05:00
Arceliar
f2b9e95895 simplify routerInterface 2020-05-23 12:21:01 -05:00
Arceliar
07206b5d46 resolve merge conflicts 2020-05-23 11:33:37 -05:00
Arceliar
169b8747d4
Merge pull request #696 from Arceliar/bugfix
Bugfix
2020-05-23 11:24:03 -05:00
Arceliar
7063ddcc73 slightly cleaner fix to conn String deadlock issue 2020-05-23 11:16:03 -05:00
Arceliar
bc48e4bb80 fix deadlock in conn (unsafe use of phony.Block) 2020-05-23 11:11:11 -05:00
Arceliar
59896f17fd more cleanup 2020-05-23 10:28:57 -05:00
Arceliar
ef1e506a0c work-in-progress on more cleanup 2020-05-23 10:23:55 -05:00
Arceliar
59c5644a52 some peer/link cleanup 2020-05-23 10:08:23 -05:00
Arceliar
cf2edc99d1 correctly set peer.max 2020-05-17 13:32:58 -05:00
Arceliar
d43b93f60a safer check for the queues if we're blocked on a send, should work even if we're blocked on a link packet send 2020-05-17 13:23:15 -05:00
Arceliar
ff3c8cb687 less aggresive queue size reduction 2020-05-17 12:58:57 -05:00
Arceliar
d96ae156a1 slight change to peer function names/args 2020-05-17 12:27:43 -05:00
Arceliar
7720e169f2 when we detect we're blocked, only drop packets often enough to make sure the existing queue's size is non-increasing, and always drop the worst packet from a random flow with odds based on the total size of packets queued for that flow 2020-05-17 12:09:40 -05:00
Arceliar
6e92af1cd2 re-enable a minimum queue size of ~1 big packet 2020-05-17 08:49:40 -05:00
Arceliar
0dcc555eab cleaner startup/shutdown of the link writer's worker 2020-05-17 08:34:22 -05:00
Arceliar
15ac2595aa use a dedicated per-stream writer goroutine, send messages to it over a 1-buffered channel, this eliminates most of the false positive blocking that causes drops 2020-05-17 08:22:02 -05:00
Arceliar
527d443916 move where the queue size check before dropping would occur 2020-05-17 07:21:09 -05:00
Arceliar
62b9fab5f8 more work-in-progress, debugging why things are dropping so often 2020-05-16 18:56:04 -05:00
Arceliar
b17a035a05 workarounds to dropping being too aggressive 2020-05-16 17:40:11 -05:00
Arceliar
b132560f65 it helps to actually run the notifyQueued stuff... 2020-05-16 17:24:26 -05:00
Arceliar
052de98f12 work-in-progress on buffering overhaul 2020-05-16 17:07:47 -05:00
Arceliar
dc128121e5 update switch blockPeer/unblockPeer logic and dht reset when coords change 2020-05-16 09:25:57 -05:00
Neil Alexander
f70b2ebcea
Fix bad check 2020-05-09 12:49:02 +01:00
Neil Alexander
2a2ad76479
Use maps instead of slices 2020-05-09 12:38:20 +01:00
Arceliar
433e392bdf Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into future 2020-05-09 06:13:52 -05:00
Neil Alexander
a59fd2a489
Merge branch 'develop' into neilalexander/pinning 2020-05-09 12:12:24 +01:00
Arceliar
7779d86c5b maybe fix multicast deadlock on darwin 2020-05-09 05:56:36 -05:00
Neil Alexander
13a2d99fdc
Set SOCKS peer addr to resolved address 2020-05-09 11:26:09 +01:00
Neil Alexander
8b180e941a
Add SOCKS proxy auth (closes #423) 2020-05-09 11:24:32 +01:00
Neil Alexander
58345ac198
Track proxy addr and real peer addr in SOCKS mode 2020-05-09 10:53:58 +01:00
Neil Alexander
fbf59184ee
Use query string instead, allow specifying multiple keys (might be useful for DNS RR) 2020-05-09 00:43:19 +01:00
Neil Alexander
e849b3e119
Initial support for pinning public keys in peering strings 2020-05-08 23:23:48 +01:00
Arceliar
107d9f0e8b Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into future 2020-05-03 05:20:30 -05:00
Arceliar
95f4ec52a4 save only the link-local addresses for multicast 2020-05-03 05:06:59 -05:00
Arceliar
de79401bb2 only call (net.Interface).Addrs() once per minute per interface 2020-05-03 02:50:04 -05:00
Arceliar
02e1cb180d possibly reduce multicast cpu usage even more 2020-05-02 17:23:20 -05:00
Neil Alexander
127b7e311c
Clean up a bit 2020-05-02 22:37:12 +01:00
Neil Alexander
0c7cf65d27
Move some logging back to debug 2020-05-02 22:33:25 +01:00
Neil Alexander
a115d18595
Refactor the multicast code a bit 2020-05-02 22:26:41 +01:00
Arceliar
20ef591013 fix some crashes with races during peer setup 2020-05-02 11:16:11 -05:00
Arceliar
15162ee952 fix a panic from a doubly closed channel in the simlink 2020-05-02 10:51:26 -05:00
Arceliar
12d448f6d5 Merge branch 'future' of https://github.com/yggdrasil-network/yggdrasil-go into sim 2020-05-02 10:40:00 -05:00
Arceliar
22526d89ec Merge branch 'future' of https://github.com/yggdrasil-network/yggdrasil-go into sim 2020-05-02 10:09:03 -05:00
Arceliar
72afa05029 test dial/listen in the sim 2020-05-02 10:01:09 -05:00
Arceliar
6d89570860 eliminate most sync.Pool use, gives a safer but slightly slower interface 2020-05-02 06:44:51 -05:00
Arceliar
9c818c6278 work-in-progress on a new sim 2020-04-26 07:33:03 -05:00
Arceliar
9d0969db2b prevent a hypothetical block on link message sending 2020-04-05 14:57:05 -05:00
Arceliar
09efdfef9a fix bug in switch actor's cleanRoot, strict nonce handling at the session level, and add separate queues per stream to the packetqueue code 2020-04-03 19:26:48 -05:00
Arceliar
03a19997b8 Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into buffers 2020-04-03 00:33:01 -05:00
Arceliar
945930aa2c WIP have peer actors queue packets, temporarily a single simple FIFO queue with head drop 2020-04-03 00:32:26 -05:00
Arceliar
7a314afb31 check if an error was returned by Core._init and return it if so 2020-03-31 18:14:20 -05:00
Arceliar
9834f222db more work in progress actorizing the remaining parts of the switch 2020-03-29 19:01:50 -05:00
Arceliar
15b850be6e fix deadlock when running updateTable in the switch 2020-03-29 01:38:32 -05:00
Arceliar
d47797088f fix shutdown deadlock 2020-03-29 00:48:41 -05:00
Arceliar
e926a3be6d work in progress actorizing core.peers and replacing switch worker with per-peer switch-generated lookupTable 2020-03-29 00:23:38 -05:00
Arceliar
16309d2862 Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into buffers 2020-03-28 21:10:34 -05:00
Arceliar
1ac3a18aab
Fix a typo in search.go's comments 2020-03-23 18:03:31 -05:00
Arceliar
a09a83530f update search description in comments 2020-03-22 18:42:42 -05:00
Arceliar
b651e57203 allow searches to continue as long as the next hop is closer than the Nth closest node found so far where N is currently 16 instead of 1 (makes searches more reliable), and cache all intermediate search steps in the dht 2020-03-19 21:11:17 -05:00
Arceliar
4809879995 refactor switch code so calling lookupTable.lookup does most of the important work 2020-03-10 01:03:07 -05:00
Arceliar
cfd8641925 fix conflicts with memleak bugfix 2020-03-10 00:03:26 -05:00
Arceliar
8075a60900 possibly fix memory leak (if this works, i don't yet understand how the leak was happening originally) 2020-03-08 19:32:14 -05:00
Arceliar
f308e81bf3 in the switch, keep a separate set of queues per peer instead of a global queue 2020-02-18 20:13:39 -06:00
Neil Alexander
471fcd7fdf
Update doc.go dial example 2020-02-16 23:57:05 +00:00
Neil Alexander
6c731c4efc
Fix comment on LocalAddr 2020-02-16 23:45:11 +00:00
Neil Alexander
429189d11d
Use 'curve25519' instead of 'pubkey' 2020-02-16 23:44:20 +00:00
Neil Alexander
6b0b704645
Update comments 2020-02-16 23:30:47 +00:00
Neil Alexander
d16505e417
Update CKR 2020-02-16 23:26:18 +00:00
Neil Alexander
63936c11b5
Update tuntap module, return pointers 2020-02-16 23:21:58 +00:00
Neil Alexander
c107f891d2
Implement pubkeys in API functions 2020-02-16 23:12:39 +00:00
Arceliar
657777881b actually schedule the search cleanup code to run 2020-02-08 20:33:35 -06:00
Arceliar
8e05c6c6a7 better search cleanup, but needs more testing to make sure it really works 2020-02-08 20:26:37 -06:00
Arceliar
d0e6846173 work in progress to make searches use parallel threads per response, so one malicious node doesn't block progress from honest ones 2020-02-08 20:15:48 -06:00
Arceliar
d7d0c2629c don't deduplicate search responses, but limit the max number of nodes handled per response 2020-02-08 17:04:00 -06:00
Arceliar
cd9613fddc add some additional debug timing info and logging to dials, and fix an unnecessary delay in search startup 2020-02-07 22:34:54 -06:00
Arceliar
3faa0b2854 deduplicate the list of nodes to visit in a search (keeping newest rumors) 2020-02-06 20:47:53 -06:00
Arceliar
7c2cb9a02d more search fixes/updates 2020-02-06 20:21:17 -06:00
Arceliar
cd856426e5 search timing changes 2020-02-06 18:37:58 -06:00
Arceliar
70659bfb91 sort search response results before sending requests 2020-02-06 17:38:42 -06:00
Arceliar
7e64f54c1f log some info about searches and reduce search traffic (especially when things dead-end) 2020-02-01 13:58:08 -06:00
Neil Alexander
c48c4ddc80
Merge pull request #641 from Arceliar/misc
Misc tuning
2020-01-10 11:35:51 +00:00
Neil Alexander
2fc6f9a71d
Merge pull request #643 from adamruzicka/mtu
Unify MTU datatypes across the codebase
2020-01-07 22:39:38 +00:00
Neil Alexander
ef4d5553b6
Merge pull request #636 from cathugger/develop
util: fix possible OOB in IPv4 flowkey calc, use switch there
2020-01-07 22:38:31 +00:00
Arceliar
c3b1a6af65 some nodeinfo actor fixes and adjust search timeout 2020-01-06 18:37:43 -06:00
Neil Alexander
8c12fc4fdb
Merge branch 'develop' into misc 2020-01-05 23:04:51 +00:00
Neil Alexander
9304873047
Convert nodeinfo to actor 2020-01-05 22:15:52 +00:00
Adam Ruzicka
8358fe5c5c Unify MTU datatypes across the codebase
The codebase uses int and unit16 to represent MTU randomly. This change
unifies it to a MTU type from types package, which is currently uint16.
2020-01-05 18:01:22 +00:00
Arceliar
8513f8f4dc constant space searches that should play nicer if searching for an unreachable destination 2020-01-04 16:08:48 -06:00
Arceliar
201dbec63d always keep the 2 closest nodes in each direction around the dht ring, possibly helps things recover faster after joins/leaves 2019-12-25 19:01:20 -06:00
Arceliar
9fac5355eb make searches more parallel 2019-12-25 18:55:29 -06:00
cathugger
ff5de89762
util: fix possible OOB in IPv4 flowkey calc, use switch there
ihl may grow upto 15*4=60 so extract and check it before using it as offset in flowkey calculation.
also replace IFs with switches for protocol matching as it's less redundant and nicer to document.
2019-12-11 15:24:43 +02:00
Anatolii Kurotych
4159ccb893 Fix return value in Multicast.Stop() 2019-11-30 16:05:44 +02:00
Arceliar
729d2ca2ba
Update crypto.go 2019-11-29 17:14:27 -06:00
Dimitris Apostolou
73f50af3b7
Fix typos 2019-11-29 11:45:02 +02:00
Arceliar
c2a8b4bb57 get rid of an allocation in tunWriter's _write 2019-11-28 12:00:00 -06:00
Neil Alexander
ad8d30ce74
Revert "Force packets through the switch to be buffered (seems to help the reordering problem on Windows)"
This reverts commit 837e7da792.
2019-11-26 09:44:35 +00:00
Neil Alexander
328dd6c054
Merge branch 'develop' into goodbyewater 2019-11-26 09:20:15 +00:00
Arceliar
98339cdc3f possible fix if monotonic time resolution is related to packet reordering 2019-11-25 17:40:58 -06:00
Neil Alexander
837e7da792
Force packets through the switch to be buffered (seems to help the reordering problem on Windows) 2019-11-25 20:13:41 +00:00
Arceliar
3e07995518 it helps to actually set the flag... 2019-11-24 18:53:58 -06:00
Arceliar
27cc57dbbc attempt to prevent incorrect idle notification in switch, needs testing 2019-11-24 18:24:17 -06:00
Arceliar
2e95a3131c comment out pointless error that prints on some platforms and not others 2019-11-24 15:37:37 -06:00
Arceliar
2982b53555 make offset generic over TUN_OFFSET_BYTES so we can make this platform dependent 2019-11-24 15:09:28 -06:00
Arceliar
f6f9b3ef76 include offset in expected bytes written 2019-11-24 15:01:20 -06:00
Arceliar
6560aac1e9 fix error spam on shutdown 2019-11-24 13:42:56 -06:00
Neil Alexander
746fac6594
Fix go.mod/go.sum again and update DoAsSystem call 2019-11-23 13:56:48 +00:00
Neil Alexander
d0a307db97
Use Wireguard's DoAsSystem, fix build tags and go.mod/go.sum 2019-11-23 13:46:05 +00:00
Neil Alexander
0529910b01
Reuse GUID so Windows no longer keeps creating new networks each time Yggdrasil starts 2019-11-23 13:34:27 +00:00
Neil Alexander
baebaabc43
Fix typo 2019-11-22 20:16:24 +00:00
Neil Alexander
3a0870a448
Fix IfName 'auto' behaviour on Windows 2019-11-22 20:11:39 +00:00
Neil Alexander
f95ebeb821
Remove references to TAP 2019-11-22 20:08:19 +00:00
Neil Alexander
7d00206f4b
Update platform defaults, handling of 'auto' on Linux/Darwin 2019-11-22 20:07:08 +00:00
Neil Alexander
b27ada9191
Fix bad Name() calls 2019-11-22 18:39:27 +00:00
Neil Alexander
235b64345e
Configure addresses and MTUs, fix bugs 2019-11-22 18:34:43 +00:00
Neil Alexander
f5517acc81
Drop Water, use Wireguard tun library, drop TAP support 2019-11-22 16:43:50 +00:00
Arceliar
248a08b2f1 send a message to the sessions to update mtu instead of trying to update it directly 2019-11-21 19:23:44 -06:00
Neil Alexander
7c18c6806d
Further updates, notify sessions about updated MTU from API call 2019-11-21 09:54:36 +00:00
Neil Alexander
d1c445dc41
Thread safety for MTU API functions 2019-11-21 09:28:36 +00:00
Neil Alexander
e90be6f569
Add API functions for manipulating maximum session MTU, fix TUN/TAP to use that 2019-11-21 00:02:39 +00:00
Neil Alexander
d06c40ad19
Use existing constant 2019-11-20 22:40:48 +00:00
Neil Alexander
9fca3640f9
Fix couple of issues with MTU calculations 2019-11-20 22:11:52 +00:00
Arceliar
6b6a5a2906
Merge pull request #608 from neilalexander/mtu
Improve MTU handling
2019-11-19 19:37:25 -06:00
Arceliar
c0be481cde
Merge pull request #605 from wfleurant/src-version
Src version: return unknown not yggdrasilctl
2019-11-19 19:35:45 -06:00
Neil Alexander
f49d9de421
Fix setting up of MTU when value is outside of acceptable bounds, also account for ethernet headers in calculations, notify about clipping to stdout 2019-11-19 14:20:11 +00:00
Arceliar
5f1aea3636 fix deadlock when AddPeer fails 2019-11-12 21:01:32 -06:00
William Fleurant
49ba5bae17 yggdrasil: buildName should report unknown 2019-11-11 00:24:50 -05:00
Arceliar
6d3aefb825 fix a data race when an existing session's coords are updated in response to a successful search 2019-10-27 19:55:35 -05:00
Neil Alexander
cee28d11f8
Merge pull request #593 from Arceliar/bindtodevice
BindToDevice
2019-10-26 11:36:24 +01:00
Arceliar
710815fed5 add dummy functions for other platforms 2019-10-25 19:32:53 -05:00
Arceliar
cfc1e6b83d fix a crash when shutting down if no multicast interfaces are configured 2019-10-25 18:40:09 -05:00
Arceliar
bcacfb0638 test adding BindToDevice to linux. if it works then we'll want to rethink slightly how we get the tcpContext on every platform, to make this compile everywhere and look a little cleaner 2019-10-25 18:33:23 -05:00
Arceliar
97a85e1d44
Merge pull request #583 from neilalexander/modules
Define module.Module interface
2019-10-24 21:48:05 -05:00
Neil Alexander
cd93969930
Fix isOpen for TUN/TAP actor 2019-10-24 23:37:39 +01:00
Neil Alexander
de3bdfa524
No longer use atomic for isOpen in multicast 2019-10-24 23:31:47 +01:00
Neil Alexander
d37133e311
Fix merge conflict from develop 2019-10-24 10:22:02 +01:00
Neil Alexander
5ca81f916e
Fix deadlocks 2019-10-24 09:54:57 +01:00
Neil Alexander
7341fcb9bc
Merge branch 'develop' into fix581 2019-10-24 09:29:29 +01:00
Neil Alexander
d58f88d29a
Update builds to Go 1.13 as this is required for TLS (apparently golang.org/x/crypto/ed25519 is not acceptable to the crypto/tls module and this prevents Yggdrasil from starting) 2019-10-24 09:28:09 +01:00
Neil Alexander
f784f33c2d
Backport fix for #581 from #583 2019-10-24 09:25:31 +01:00
Arceliar
c3dee478f5 fix ed25519 dependency for golang 1.12 and earlier, though we may want to update builds to 1.13 anyway... 2019-10-23 20:38:09 -05:00
Arceliar
996c6b4f47 add one TODO comment and run gofmt 2019-10-23 20:28:11 -05:00
Neil Alexander
cd77727c1e
Set TCP socket options before upgrading connection 2019-10-23 18:24:08 +01:00
Neil Alexander
6a22e6c9de
Initial connection upgrade/TLS peering support 2019-10-23 17:26:35 +01:00
Neil Alexander
337626a32c
Act multicast updates for safety 2019-10-23 11:12:51 +01:00
Neil Alexander
a072e063d8
Define module.Module interface, update admin/tuntap/multicast modules to comply with it, fix #581 2019-10-23 10:44:58 +01:00
Arceliar
ea085663ea slight cleanup of dial's timeout 2019-10-21 20:52:16 -05:00
Arceliar
681c8ca6f9 safer dial timeout handling, in case it was used with a nil context or a context that had no timeout set 2019-10-21 20:47:50 -05:00
Arceliar
eccd9a348f give yggdrasil.Dialer the same interface as a net.Dialer, so the only differences are what fields exist in the struct 2019-10-21 19:44:06 -05:00
Arceliar
efc0b9ef9f Merge branch 'develop' into netconn 2019-10-21 18:47:40 -05:00
Arceliar
a81476f489 fix incorrectly held mutex in ckr getPublicKeyForAddress 2019-10-20 20:00:55 -05:00
Arceliar
cb40874f97 have listener return a net.Conn, adjust yggdrasil.Conn to match this interface 2019-10-19 15:10:28 -05:00
Arceliar
3491292599 code cleanup 2019-10-12 15:46:56 -05:00
Arceliar
31ce854835 update session when a search for an existing session finishes 2019-10-12 15:37:40 -05:00
Arceliar
a1c413f769 fix nil pointer dereference in yggdrasil.Conn.search 2019-10-06 11:53:14 -05:00
Arceliar
c38e40e8e3 actually use doCancel in writeNoCopy 2019-10-05 12:23:21 -05:00
Arceliar
83e3a24423
Merge pull request #562 from AwesomePatrol/dev/patrol/bench01
#60 Add simple tests and benchmark
2019-10-05 12:20:27 -05:00
Arceliar
f474869ad9 cleanup bad comment 2019-10-05 12:17:40 -05:00
Arceliar
fb3430207c don't fail if there's an error setting bbr, just log it and continue 2019-10-05 11:03:38 -05:00
Arceliar
8e22d7137a use bbr congestion control on linux, note that we're not doing anything intelligent with the errors right now if setting it fails 2019-10-05 10:47:15 -05:00
Arceliar
f22eac497b typo 2019-10-03 18:50:33 -05:00
Arceliar
b2922189b8 fix deadlock from use of phony.Block by actors when ckr is enabled 2019-10-03 18:44:47 -05:00
Aleksander Mistewicz
783959208c Add more comments to explain helper functions 2019-09-28 14:41:53 +02:00
Aleksander Mistewicz
8053766092 Add verbosity setting 2019-09-28 14:25:42 +02:00
Aleksander Mistewicz
21b236771b Add a simple transfer benchmark 2019-09-28 14:25:42 +02:00
Aleksander Mistewicz
8677a042cf Wait for nodes to negotiate 2019-09-28 14:25:42 +02:00
Aleksander Mistewicz
fffbbbcbd3 Pass message between nodes 2019-09-28 14:25:42 +02:00
Aleksander Mistewicz
d96fb27ab8 Add simple connection test 2019-09-28 14:25:42 +02:00
Arceliar
0f99d590a1 typo, ipv6->ipv4 2019-09-26 18:15:26 -05:00
Arceliar
e16d3efb0a check packet length before checking if it's an ipv6 packet, and add some trace level logging whenever a packet is rejected for being too short to parse 2019-09-26 18:11:58 -05:00
Arceliar
a87581b0fa
Merge pull request #556 from Arceliar/switch
Switch hack
2019-09-25 17:58:01 -05:00
Arceliar
ac58c3586e cleanup/comments 2019-09-25 17:53:25 -05:00
Neil Alexander
d27891aaf6
Merge pull request #528 from yggdrasil-network/documentation
Documentation updates
2019-09-25 17:09:09 +01:00
Arceliar
b9e74f34ec replace the send-to-self with a timer and an arbitrary timeout; i don't really like this but it seems to work better (1 ms is fast by human standards but an eternity for a syscall or the scheduler, so i think that's reasonable) 2019-09-24 18:28:13 -05:00
Arceliar
8c64e6fa09 explicitly notify the switch when a link appears to be blocked in a send instead of assuming this is the case for all idle links. how we decide when it's really blocked still needs testing/optimizing 2019-09-24 18:01:35 -05:00
Arceliar
691192ff5a weird scheduler hack, seems to tend to make things more stable without actually locking streams to any particular link 2019-09-21 14:33:45 -05:00
Arceliar
87658f83e9 Revert "force things to buffer in the switch if the best link is currently busy. note that other links can end up sending if they become non-idle for other reasons. this is a temporary workaround to packet reordering, until we can figure out a better solution"
This reverts commit 80ba24d512.
2019-09-20 23:09:12 -05:00
Arceliar
8003ea0f3e use a separate multicast beacon interval per multicast interface 2019-09-20 17:42:42 -05:00
Neil Alexander
1cd4b6e8dd
Increase multicast interval at startup from 1s to 15s 2019-09-20 10:08:41 +01:00
Arceliar
f9163a56b6 fix race between listener accepting and shutting down 2019-09-19 19:50:45 -05:00
Arceliar
eeb34ce4e4 modify TcpListener 2019-09-19 19:45:17 -05:00
Arceliar
93e81867fd have link.stop signal active links to close, have tcp.stop wait for all listeners and active connections to close 2019-09-19 19:15:59 -05:00
Neil Alexander
681e9afc79
Merge develop into bugfixes 2019-09-19 09:05:56 +01:00
Neil Alexander
7b1678a11d
Goroutines in _addPeerLoop from bugfixes 2019-09-19 09:04:25 +01:00
Neil Alexander
5a382e7e0b
Cherrypick fixes for _addPeerLoop memory leak for now 2019-09-19 08:55:55 +01:00
Arceliar
995d67cca8 fix leak in _addPeerLoop 2019-09-18 18:46:03 -05:00
Arceliar
92d9274f3f resolve conflicts 2019-09-18 18:40:01 -05:00
Arceliar
2d64a6380a misc other fixes 2019-09-18 18:33:51 -05:00
Neil Alexander
909e4e29a8
Don't spawn goroutines for addPeerLoop, TCP connect timeout of 5 seconds for now 2019-09-18 23:44:28 +01:00
Neil Alexander
64570a8d3e
Merge pull request #542 from Arceliar/switch
Switch
2019-09-18 20:26:48 +01:00
Neil Alexander
0a12e4b1c1
Revert "Catch a nil pointer when sending a session packet to a conn, this shouldn't happen but it's caused multiple crashes in conn.recvMsg"
This reverts commit be35675d0f.
2019-09-18 20:26:06 +01:00
Neil Alexander
ddaaa865cb
Be more verbose when a peer or listener is badly formatted 2019-09-18 19:58:41 +01:00
Neil Alexander
94cf2854a9
Fix panic where slice goes out of bounds because iface.Read returns less than zero (which might happen when the TUN/TAP interface is closed) 2019-09-18 19:48:53 +01:00
Neil Alexander
ae0b2672ff
Fix #539 2019-09-18 19:48:16 +01:00
Neil Alexander
2dc136f94a
Multicast actor to prevent races 2019-09-18 16:51:46 +01:00
Neil Alexander
b959f53fee
Shut down listeners when stopping 2019-09-18 16:32:22 +01:00
Neil Alexander
b0df9e2f31
Fix race when adding peers 2019-09-18 16:15:33 +01:00
Neil Alexander
c78a4cb28f
Only stop timers if they are running 2019-09-18 15:34:26 +01:00
Neil Alexander
366fe7e772
Allow multicast to be shut down more sanely 2019-09-18 15:31:43 +01:00
Neil Alexander
00a972b74e
Disconnect peers when stopping, stop modules before core 2019-09-18 15:22:17 +01:00
Neil Alexander
846df4789a
Be more verbose when a peer or listener is badly formatted 2019-09-18 15:01:19 +01:00
Neil Alexander
200b3623b2
Fix #539 2019-09-18 14:32:28 +01:00
Neil Alexander
e9bacda0b3
Catch a nil pointer when sending a session packet to a conn, this shouldn't happen but it's caused multiple crashes in conn.recvMsg 2019-09-18 14:07:26 +01:00
Neil Alexander
c3016e680c
Fix panic where slice goes out of bounds because iface.Read returns less than zero (which might happen when the TUN/TAP interface is closed) 2019-09-18 14:05:18 +01:00
Neil Alexander
40204caab6
Try to fix race condition in sessions.reset 2019-09-18 14:03:31 +01:00
Neil Alexander
be35675d0f
Catch a nil pointer when sending a session packet to a conn, this shouldn't happen but it's caused multiple crashes in conn.recvMsg 2019-09-18 13:37:01 +01:00
Arceliar
80ba24d512 force things to buffer in the switch if the best link is currently busy. note that other links can end up sending if they become non-idle for other reasons. this is a temporary workaround to packet reordering, until we can figure out a better solution 2019-09-17 19:42:07 -05:00
Arceliar
0141180279 cleanup 2019-09-09 19:25:10 -05:00
Arceliar
10a828af2c when forwarding traffic, break distance ties by favoring the link that sent the most recent switch update the fastest 2019-09-09 19:20:46 -05:00
Arceliar
2426a87ccc really finish initializing the session before returning it / giving up control of the router, in the Conn.search function used by Dial 2019-09-03 19:03:12 -05:00
Neil Alexander
af3dcb44d8
Update config.go godoc 2019-09-02 09:45:11 +01:00
Arceliar
b3361d4bbc package level documentation for address/crypto/util 2019-09-01 19:01:33 -05:00
Arceliar
cd99d04bd4 document address, crypto, and util 2019-09-01 18:53:45 -05:00
Neil Alexander
903a8921fc
Update api.go godoc 2019-09-01 23:47:47 +01:00
Neil Alexander
935324efe1
Update conn.go godoc 2019-09-01 23:33:51 +01:00
Neil Alexander
9e8e1c5a41
Documentation updates 2019-09-01 23:10:46 +01:00
Neil Alexander
01517e5dc3
Create doc.go for godoc preamble 2019-09-01 22:43:27 +01:00
Arceliar
8c52ccadf9 make dial fail if a session to the same node already exists, fixes race between simultaneous connections to a node's 200 address and one of its 300 addresses, should also fix races between a search and an accepted listen 2019-09-01 14:07:00 -05:00
Arceliar
8d2c31d39c add some artifical delay to windows netsh commands, since it seems like maybe they don't take effect immediately, and this was leading to races when setting MTU 2019-09-01 13:20:48 -05:00
Arceliar
c53831696b make tun stop check that iface is not nil, in case it wasn't set for some reason (windows bugs) 2019-09-01 13:06:25 -05:00
Arceliar
d08c2eb237 stop exporting ReadNoCopy and WriteNoCopy, since we use the actor functions / callbacks and everything else should use Read and Write instead... 2019-09-01 13:04:10 -05:00
Arceliar
3a493fe894 gc more often on mobile 2019-09-01 11:08:25 -05:00