1122 Commits

Author SHA1 Message Date
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
Neil Alexander
dff1dca19c
Add DefaultConfigFile to defaults for yggdrasilctl 2018-12-10 10:20:59 +00:00
Neil Alexander
8aaaeb26eb
Default to /var/run/yggdrasil.sock for admin on Linux, BSDs 2018-12-10 00:37:32 +00:00
Neil Alexander
bbe2f56b74
Default to /var/run/yggdrasil.sock for admin on darwin/macOS 2018-12-10 00:31:31 +00:00
Neil Alexander
74a904d04c
Don't os.Chmod if we suspect the socket belongs to an abstract namespace 2018-12-10 00:26:12 +00:00
Neil Alexander
06c6dfc67f
Complain if socket file already exists 2018-12-10 00:19:21 +00:00
Neil Alexander
f791df4977
Try to chmod 660 the admin socket if using AF_UNIX 2018-12-10 00:00:23 +00:00
Neil Alexander
6801d713a7
Also don't start if AdminListen is empty 2018-12-09 17:53:31 +00:00
Neil Alexander
80d087404f
Allow disabling admin socket with AdminListen="none" 2018-12-09 17:46:48 +00:00
Neil Alexander
02f98a2592
Only show build name and version if it is known 2018-12-08 11:01:05 +00:00
Arceliar
af478e0e45 fix very special case bug when trying to dhtPing the root via the admin api 2018-12-08 00:42:13 -06:00
Arceliar
bd2d706745 fix bug from go vet while I'm at it 2018-12-07 20:36:30 -06:00
Arceliar
586781b49c convert to go module 2018-12-07 19:56:04 -06:00
Neil Alexander
5149c6c349
Show build name and version at startup if available 2018-12-07 22:24:01 +00:00
Neil Alexander
3524c6eff6
Add build name and version to getSelf call on admin socket 2018-12-07 22:22:46 +00:00
Neil Alexander
8e784438c7
Imprint build name and version number if available 2018-12-07 22:20:11 +00:00
Arceliar
fe772dd38e switch bugfixes 2018-12-05 18:22:39 -06:00
Arceliar
09228554cb
Merge pull request #223 from neilalexander/reusemulticast
Try to SO_REUSEPORT on multicast socket
2018-12-05 18:15:21 -06:00
Neil Alexander
ae48a1721e
Try to SO_REUSEADDR on Windows 2018-12-05 23:10:50 +00:00
Neil Alexander
eae8f9a666
Try to SO_REUSEPORT on UNIX platforms 2018-12-05 22:39:04 +00:00
Arceliar
3d4b49b693 reset the switch speed info for a peer whenever it changes coords, instead of only if they're a parent and change coords. Also, make sure packets in the sim preserve order when sending, to avoid races when testing 2018-12-03 19:21:23 -06:00
Arceliar
684632eb3d
Merge pull request #215 from Arceliar/switch
Latency-based parent selection for the switch
2018-12-02 17:26:26 -06:00
Neil Alexander
5a89a869be
Set queueTotalMaxSize before switch worker starts 2018-12-02 23:24:54 +00:00
Neil Alexander
b5f4637b5c
Enforce min 4MB switch queue total size 2018-12-02 23:20:11 +00:00
Neil Alexander
319457ae27
Update comment for MaxTotalQueueSize 2018-12-02 23:03:10 +00:00
Neil Alexander
86da073226
Add SwitchOptions and MaxTotalQueueSize 2018-12-02 22:49:27 +00:00
Arceliar
dcfe55dae8 store 'faster' relationships between all pairs of peers, to make fallback easier when a parent goes offline 2018-12-02 16:36:25 -06:00
Arceliar
38093219fd dimensionless way to track how often nodes are faster than the current parent 2018-12-02 14:46:58 -06:00
Arceliar
b3e2b8e6a5
Update admin.go
Replace `nil` with `[]string{}` for `list`'s argument list.
2018-11-26 19:15:27 -06:00
Neil Alexander
099fee9cae
Rename destPubKey to box_pub_key in addRoute etc 2018-11-26 17:58:54 +00:00
Neil Alexander
315aadae06
Rename help to list 2018-11-26 17:51:30 +00:00
Neil Alexander
8239989c36
Send box_pub_key with getSessions, getDHT, getSwitchPeers and getPeers 2018-11-26 17:38:02 +00:00
Neil Alexander
5b10af7399
Rename key to box_pub_key in admin socket for consistency 2018-11-26 17:34:26 +00:00
Arceliar
d8d1e63c36 fix infinite loop from interaction between dht.isImportant and dht.insert 2018-11-25 20:33:33 -06:00
Arceliar
0ec6207e05 better response format and yggdrasilctl printing 2018-11-25 18:25:31 -06:00
Arceliar
a34ca40594 use a buffered channel to avoid races, and run gofmt 2018-11-25 17:59:36 -06:00
Arceliar
7954fa3c33 store one callback instead of many, needed to prevent search failures if there are multiple outstanding packets 2018-11-25 17:08:45 -06:00
Arceliar
9937a6102e add callbacks to maintenance map cleanup 2018-11-25 16:29:47 -06:00
Arceliar
12e635f946 adjust dhtPing response so 'nodes' defaults to an empty list instead of null 2018-11-25 16:16:06 -06:00
Arceliar
d520a8a1d5 refactor dht code to call arbitrary callbacks instead of only searches.checkDHTRes, and add admin API fuction to dhtPing a node (with an optional target NodeID) 2018-11-25 16:10:32 -06:00
Arceliar
e17efb6e91 don't penalize dht timeouts a second time 2018-11-25 13:21:13 -06:00
Arceliar
9046dbde4f remove sigManager, it seems safer to just burn the CPU than to store a map of strings of potentially arbitrary length 2018-11-25 13:06:54 -06:00
Arceliar
4e156bd4f7 better cleanup of maps 2018-11-25 12:25:38 -06:00
Arceliar
8d6beebac4 clean up old requests during dht maintenance 2018-11-24 20:04:14 -06:00
Neil Alexander
5a7c2b250c
Merge pull request #209 from Arceliar/switch-tune
Adjust switch parent selection behavior
2018-11-24 23:21:45 +00:00
Arceliar
6d0e40045a cleanup/fixes from go vet 2018-11-22 21:41:16 -06:00
Arceliar
4870a2e149 removeSourceSubnet and removeRoute via the admin api 2018-11-22 21:30:56 -06:00
Arceliar
5953027411 switch from []byte to boxPubKey in ckr code, and start adding admin functions for existing code (yggdrasilctl.go still needs pretty printing support for the responses to the new get functions) 2018-11-21 00:10:20 -06:00
Arceliar
5fa23b1e38 move router.recvPacket calls into the main router goroutine, to make the ckr checks threadsafe 2018-11-20 22:04:18 -06:00
Arceliar
e9cff0506c comment the switch a little better and limit how much uptime can affect which peer is used as a parent 2018-11-19 21:30:52 -06:00
Arceliar
ef6cece720 fix sim and tune dht to bootstrap a little faster 2018-11-16 19:32:12 -06:00
Neil Alexander
fc5a5830aa
Merge pull request #203 from Arceliar/chord
Chord
2018-11-14 20:13:42 +00:00
Arceliar
8cf8b0ec41 fix bug in recvPacket for packets coming from a subnet 2018-11-11 00:00:47 -06:00
Arceliar
1b1b776097 fix crash when starting in tun mode 2018-11-10 22:39:15 -06:00
Neil Alexander
6fab0e9507
Fix CKR (IPv4/IPv6) in TAP mode so frames sent to node MAC, base MAC/LL from node IPv6 address 2018-11-10 18:33:52 +00:00
Neil Alexander
adc32fe92f
Track further neighbor state, don't send more NDPs than needed 2018-11-10 17:32:03 +00:00
Neil Alexander
d50e1bc803
More complete NDP implementation for TAP mode, which tracks individual MAC addresses for neighbors 2018-11-10 15:46:10 +00:00
Arceliar
15d5b3f82c comments and minor cleanup 2018-11-09 23:02:38 -06:00
Neil Alexander
685b565512
Check IP header lengths correctly per protocol 2018-11-07 10:29:08 +00:00
Neil Alexander
9542bfa902
Check the session perm pub key against the CKR key 2018-11-07 10:16:46 +00:00
Neil Alexander
fbfae473d4
Use full node ID for CKR routes instead of truncated node IDs from the address/subnet 2018-11-07 10:04:31 +00:00
Neil Alexander
39dab53ac7
Update comments in configuration and some godoc descriptions 2018-11-06 22:57:53 +00:00
Neil Alexander
a3a53f92c3
Reinstate length/bounds check in tun.go 2018-11-06 22:35:28 +00:00
Neil Alexander
0240375417
IPv4 CKR support in router 2018-11-06 20:49:19 +00:00
Neil Alexander
424faa1c51
Support IPv4 in ckr.go 2018-11-06 20:04:49 +00:00
Neil Alexander
cb7a5f17d9
Check destination address upon receive in router 2018-11-06 19:23:20 +00:00
Neil Alexander
2f75075da3
Fix Yggdrasil subnet routing 2018-11-06 14:28:57 +00:00
Neil Alexander
bc62af7f7d
Enable CKR properly from config 2018-11-06 12:32:16 +00:00
Neil Alexander
bc578f571c
Some output at startup 2018-11-06 11:56:32 +00:00
Neil Alexander
f0947223bb
Only validate CKR routes if CKR enabled 2018-11-06 11:11:57 +00:00
Neil Alexander
19e6aaf9f5
Remove sourceSubnet from router 2018-11-06 00:06:37 +00:00
Neil Alexander
e3d4aed44a
Configure IPv6Sources 2018-11-06 00:05:01 +00:00
Neil Alexander
8c2327a2bf
Add source addresses option and more intelligent source checking 2018-11-05 23:59:41 +00:00
Neil Alexander
cfdbc481a5
Modify source address check for CKR 2018-11-05 23:22:45 +00:00
Neil Alexander
7218b5a56c
Don't look up public keys for Yggdrasil native addresses 2018-11-05 23:12:26 +00:00
Neil Alexander
c7f2427de1
Check CKR routes when receiving packets in router 2018-11-05 22:58:58 +00:00
Neil Alexander
87b0f5fe24
Use CKR in router when sending packets 2018-11-05 22:39:30 +00:00
Neil Alexander
295e9c9a10
Cache crypto-key routes (until routing table changes) 2018-11-05 17:31:10 +00:00
Neil Alexander
ec751e8cc7
Don't allow Yggdrasil ranges as crypto-key routes 2018-11-05 17:03:58 +00:00
Neil Alexander
52206dc381
Add initial crypto-key routing handlers 2018-11-05 16:40:47 +00:00
Arceliar
a008b42f99 cleanup and some bugfixes, cache important dht nodes until something gets added/removed 2018-10-29 22:24:18 -05:00
Arceliar
671c7f2a47 don't update recv time for known nodes that ping us or known peers 2018-10-28 15:04:44 -05:00
Arceliar
c0531627bc fix some chord dht bootstrapping bugs, no known cases where it now fails 2018-10-24 22:03:27 -05:00
Arceliar
253861ebd3 reverse dht ownership order from predecessor to successor, this plays nicer with the default 0 bits in unknown node IDs 2018-10-21 18:15:04 -05:00
Arceliar
5e3959f1d0 yet more debugging 2018-10-21 17:40:43 -05:00
Neil Alexander
20c4b7027a
Fix merge conflicts with endpoints branch 2018-10-21 23:24:29 +01:00
Neil Alexander
aab0502a4a
Remove friendlyname traces, preserve endpoints 2018-10-21 23:20:14 +01:00
Neil Alexander
a1b72c16d8
Some attempt at exchanging session metadata over the wire (broken) 2018-10-21 22:58:27 +01:00
Arceliar
f0bd40ff68 more testing 2018-10-21 15:10:18 -05:00
Arceliar
bcbd24120d keep track of all keys we're supposed to care about in the dht, don't give special treatment to successors/predecessors 2018-10-21 14:57:04 -05:00
Arceliar
efe6cec11a more debugging, trying to understand bootstrap issues 2018-10-21 12:28:21 -05:00
Neil Alexander
088d28a93b
Fix debug builds with friendly names 2018-10-21 18:04:02 +01:00
Neil Alexander
b809adf981
Add FriendlyName option, show friendly name and real endpoint in admin socket/yggdrasilctl 2018-10-21 17:57:48 +01:00
Arceliar
6c59ae862a more debugging 2018-10-21 00:05:04 -05:00
Arceliar
95201669fe reintroduce (better) dht throttling 2018-10-20 22:06:36 -05:00
Arceliar
8825494d59 remove maintenance searches and throttle logic, to focus on debugging in this simpler case first 2018-10-20 20:11:32 -05:00
Arceliar
3dbffae99f add search for successor, via parent, to the dht maintenance cycle 2018-10-20 19:09:25 -05:00
Arceliar
d851d9afe7 add max pings before timing out a successor 2018-10-20 18:31:11 -05:00
Arceliar
63d6ab4251 more cleanup, comments, and dht reset() changes 2018-10-20 18:12:34 -05:00
Arceliar
f3ec8c5b37 fix admin dht function, more cleanup, and slowly throttle back dht traffic when idle 2018-10-20 17:58:54 -05:00
Arceliar
5a85d3515d cleanup 2018-10-20 17:32:54 -05:00
Arceliar
02f0611dde more debugging 2018-10-20 16:27:01 -05:00
Arceliar
1720dff476 add some debug output and get things to start working in the sim 2018-10-20 15:21:40 -05:00
Arceliar
03a88fe304 Try using a chord-like DHT instead of a kad-like one, work in progress, but it compiles at least 2018-10-20 14:48:07 -05:00
Neil Alexander
18428b0f93
Merge pull request #190 from neilalexander/sessionfirewall
Fix incorrect comment in config for SessionFirewall
2018-10-09 07:24:22 +01:00
Neil Alexander
eb42fd4973
Fix incorrect comment in config for SessionFirewall 2018-10-09 07:18:43 +01:00
Arceliar
ba8af20817
Merge pull request #187 from neilalexander/sessionfirewall
Add session firewall
2018-10-08 18:41:15 -05:00
Neil Alexander
1d00131416
Hopefully fix a concurrent map read-write when removing peers 2018-10-08 22:09:55 +01:00
Neil Alexander
1e6667567a
Update comments for session firewall in config 2018-10-08 19:57:14 +01:00
Neil Alexander
3ed63ede1e
Add AlwaysAllowOutbound to session firewall 2018-10-08 19:51:51 +01:00
Neil Alexander
3f237372c9
Only apply session firewall to pings for sessions we don't already have 2018-10-08 19:05:50 +01:00
Neil Alexander
2e2c58bfef
Add session firewall (extra security for controlling traffic flow to/from a given node) 2018-10-07 17:13:41 +01:00
Neil Alexander
81eea137d4
Merge branch 'develop' into getswitchqueues 2018-10-05 19:51:45 +01:00
Neil Alexander
605b6829db
Fix debug builds (broken by #182) 2018-10-05 19:28:46 +01:00
Neil Alexander
8eed15b813
Fix merge conflict in tcp.go from d027a9ba75baa88207f9c4f2c337f59ded83e6e7 2018-10-04 12:26:08 +01:00
Neil Alexander
b6ff6e96cd
Merge pull request #184 from yggdrasil-network/source-interface
Ignore peer in InterfacePeers when source interface not found
2018-09-28 15:16:34 +01:00
Neil Alexander
d027a9ba75
Don't peer when source interface not found 2018-09-28 14:59:10 +01:00
Neil Alexander
69cd736112
Show queue capacity in getSwitchQueues 2018-09-27 16:19:47 +01:00
Neil Alexander
0b1a6611fd
Identify switchport for queue based on coords in stream ID 2018-09-27 15:05:45 +01:00
Neil Alexander
8113b4cc22
Update comments 2018-09-27 14:20:52 +01:00
Neil Alexander
b530916044
Show information about individual active queues 2018-09-27 12:14:55 +01:00
Neil Alexander
2674e1cb8b
Merge remote-tracking branch 'origin/develop' into getswitchqueues 2018-09-27 11:03:59 +01:00
Neil Alexander
f57567ea56
Add getSwitchQueues 2018-09-27 10:53:19 +01:00
Arceliar
7e3426ba93
Merge pull request #182 from yggdrasil-network/source-interface
Support adding peers on specific interfaces
2018-09-26 07:48:55 -05:00
Neil Alexander
b7f2f8b55c
Ignore interfaces that are not up 2018-09-25 19:46:06 +01:00
Neil Alexander
6844b9df51
Update comments in default config 2018-09-25 18:17:00 +01:00
Neil Alexander
387ae9ea6c
Only replace call name with interface prefix when interface is set 2018-09-25 18:05:57 +01:00
Neil Alexander
3f8a4ab17d
Add bytes_sent and bytes_recvd to getSwitchPorts 2018-09-25 17:59:01 +01:00
Neil Alexander
b368421dbd
Fix addPeer to make interface= optional 2018-09-25 17:13:35 +01:00
Neil Alexander
1796000b05
Change to InterfacePeers instead of modifying the tcp:// URI format 2018-09-25 16:55:57 +01:00
Neil Alexander
aecc151baf
Add support for specifying TCP source interface, i.e. tcp://a.b.c.d:e/eth0, for multiple simultaneous peerings to the same node over different interfaces 2018-09-25 15:32:45 +01:00
Arceliar
25661ebcad fix 0 port number on links to unknown nodes in the admin dot graph 2018-09-04 19:30:07 -05:00
Arceliar
e833cdfb98 fix debug builds and update whitepaper with old info from the .io site's about page 2018-08-18 13:24:02 -05:00
cathugger
b4db89ea9d
Avoid unnecessarily allocating coords slice if it's unchanged. 2018-07-30 13:44:46 +00:00
cathugger
67b8a7a53d
Ensure no memory allocations happen at hot path 2018-07-30 12:43:34 +00:00
Neil Alexander
c4e6894d6a
Copy sinfo.coords for safety 2018-07-30 13:34:32 +01:00
Neil Alexander
ebb4ec7c33
Clean up the flow a bit (partly because I am allergic to huge compounded if statements) 2018-07-30 11:46:44 +01:00
cathugger
68a482ed92
Simplify flowkey stuff further. 2018-07-30 02:15:57 +00:00
cathugger
36dcab9300
optimize wire_put_uint64; use protokey for flowlabel fallback. 2018-07-30 01:58:52 +00:00
cathugger
fec7100898
Clean up / clarify coords sending code. 2018-07-30 00:01:37 +00:00
cathugger
11b0a82c4a
Simpler flowlabel parsing; avoid using 0 flowlabel. 2018-07-29 22:09:16 +00:00
Arceliar
ddab8ecf33
Merge pull request #174 from cathugger/develop
Make TCP read timeouts configurable.
2018-07-29 10:39:43 -05:00
cathugger
d171552577
Make TCP read timeouts configurable.
This should be helpful on high-latency networks, like Tor or I2P.
Also gofmt.
2018-07-29 14:30:13 +00:00
Neil Alexander
38e8b036d2
Use addUint64 instead to not interfere with coordinate parsing 2018-07-22 18:33:53 +01:00
Neil Alexander
81fde1a805
Use flow label instead of TCP/UDP/SCTP source/destination ports 2018-07-22 18:16:03 +01:00
Neil Alexander
3f4295f8cd
Only split queues based on port number for TCP/UDP/SCTP, rely only on protocol number for other protos to prevent issues with IPIP, GRE, etc 2018-07-22 12:00:40 +01:00
Arceliar
9cbcaf39ac Use coords for queue stream IDs in the switch, and append protocol/port information to coords when sending, to designate different streams 2018-07-21 18:59:29 -05:00
Arceliar
996a593fa2 Sort dotgraph links by integer value 2018-07-20 23:02:25 -05:00
Arceliar
549d6f9dd2
Merge pull request #163 from neilalexander/tapmtu
Cap MTU on Linux in TAP mode
2018-07-19 18:25:03 -05:00
Arceliar
9ff08c1b34
Merge pull request #165 from cathugger/master
rearrange tcp reading loop
2018-07-19 18:18:51 -05:00
cathugger
91a374d698 rearrange tcp reading loop
according to documentation of io.Reader interface,
"Callers should always process the n > 0 bytes returned before considering the error err. Doing so correctly handles I/O errors that happen after reading some bytes and also both of the allowed EOF behaviors."
2018-07-19 21:58:53 +00:00
Neil Alexander
55b56e8686
Normalise startup output for TUN/TAP on Linux and Windows 2018-07-19 10:15:26 +01:00
Neil Alexander
df9cadd938
Cap MTU on Linux in TAP mode 2018-07-19 10:01:12 +01:00
Arceliar
1baafdd17d
Merge pull request #162 from cathugger/master
More verbose disconnect messages
2018-07-18 22:55:45 -05:00
cathugger
f4bb2aaaeb More verbose disconnect messages 2018-07-19 01:03:24 +00:00
Neil Alexander
cff7ef026f
Make yggdrasilctl less case-sensitive 2018-07-09 19:30:41 +01:00
Neil Alexander
f21cbaef9c
Fix debug builds after changes in #155 2018-07-09 09:38:48 +01:00
Neil Alexander
d59bdfeb99
Fail to TCP when parsing AdminListen 2018-07-08 10:37:20 +01:00
Arceliar
bf90447cc4 update admin socket error message and run gofmt 2018-07-07 19:37:36 -05:00
Neil Alexander
b24c7ffa6b
Resolve merge conflict with platformdefaults 2018-07-07 20:08:23 +01:00
Neil Alexander
a5af69df8a
Use Close() for admin socket 2018-07-07 20:04:11 +01:00
Neil Alexander
2a931df07a
Try to clean up UNIX domain admin sockets if shutdown properly 2018-07-07 12:34:10 +01:00
Neil Alexander
14d48597da
Fix openbsd and netbsd 2018-07-07 12:18:03 +01:00
Neil Alexander
36c89da848
Stick with tcp://localhost:9001 as default for now 2018-07-07 12:16:55 +01:00
Neil Alexander
1692bd98fd
Centralise platform defaults into the 'defaults' package 2018-07-07 12:08:52 +01:00
Neil Alexander
cd6030ec8f
Add support for UNIX domain admin sockets and specifying URIs in AdminListen 2018-07-07 11:22:49 +01:00
Arceliar
ba4047b51a correctly update buffer sizs when buffers overflow, and returned freed packets to the byte store 2018-07-06 17:27:04 -05:00
Arceliar
ad5dc9ea87 Drop 1 packet instead of a whole queue when overflowing 2018-07-06 00:55:00 -05:00
Arceliar
e6a47f705d when dropping a queue, select one at random based on queue size in bytes 2018-07-06 00:11:36 -05:00
Arceliar
1a65c065d0 prioritize sending from small queues that have been blocked for a long time 2018-07-05 23:56:37 -05:00
Arceliar
7da4967f5e Limit maximum queue size to 4 MB 2018-07-05 23:39:41 -05:00
Arceliar
a7c8be4d69 base backpressure decisions on queue size in bytes, instead of packet counts 2018-07-05 23:07:01 -05:00
Arceliar
b63b534fa7 drop packets that have been queued for longer than some timeout (currently 25ms) instead of using fixed length queues 2018-06-25 18:12:18 -05:00
Arceliar
7695a3fcbf try using a simpler FIFO order for each backpressure buffer, since there are other mechanisms to penalize the flooding node, leads to better TCP throughput without affecting traffic between other nodes (does affect traffic in the same session, but there's hypothetically workarounds to that) 2018-06-24 20:20:07 -05:00
Arceliar
4ad2446557 cleanup 2018-06-24 18:21:00 -05:00
Arceliar
03949dcf3f fix my terrible bug, I have no idea why the old one even worked 2018-06-24 18:05:00 -05:00
Arceliar
9c028e1d0d switch to a separate queue per stream of traffic, FIXME for some reason this makes distance calculations more expensive in handleIdle? 2018-06-24 17:39:43 -05:00
Arceliar
189628b381 cleanup 2018-06-23 23:55:27 -05:00
Arceliar
0ad801bcfe more work on backpressure, but still needs more testing 2018-06-23 23:33:03 -05:00
Arceliar
4b83efa218 more backpressure work, still needs testing 2018-06-23 21:51:32 -05:00
Arceliar
52a0027aea switch refactoring, setup for a better approximation of local backpressure 2018-06-23 20:59:26 -05:00
Arceliar
988f4ad265 add a dedicated switch worker and start using it for lookups 2018-06-23 19:08:32 -05:00
Arceliar
2ae213c255 I'll try sorting, that's a good trick 2018-06-23 01:10:18 -05:00
Arceliar
cceecf4b1a larger out queue size, make sure linkOut packets always get sent first 2018-06-22 23:46:42 -05:00
Arceliar
0021f3463f slightly better way for the tcp sender goroutine(s) to block waiting for work 2018-06-22 20:39:57 -05:00
Neil Alexander
f68f779bee
Change box_pub_key to key in admin API 2018-06-22 22:26:17 +01:00
Arceliar
5dfa01a0e8 periodically clean up timed-out sessions and old signatures, instead of trying to do it when creating new sessions or adding new signatures 2018-06-21 20:31:30 -05:00
Arceliar
254be42614 gofmt 2018-06-21 10:39:43 -05:00
Arceliar
19014a198e randomize the delay after tcp disconnects, to prevent synchronization issues 2018-06-21 10:38:31 -05:00
Arceliar
f599a1a2c1 start the pprof based on an env variable in debug builds, otherwise remove the flag/release.go stuff 2018-06-21 10:32:16 -05:00
Arceliar
496dc94f02 possibly mitigate livelock bug where lossy links lead to constant connect/disconnect cycles due to disagreement about which of the two duplicate autoconnection attempts to use 2018-06-16 15:31:25 -05:00
Arceliar
7fe038f87e prevent parent nodes from forcing coord oscillation, have dht.handleRes clean up the old request info immediately 2018-06-14 12:32:18 -05:00
Neil Alexander
6c556da05e
Merge pull request #125 from Arceliar/cleanup
Cleanup
2018-06-14 15:26:34 +01:00
Arceliar
d9c9787611 avoid the proxy.SOCK5 connection attempt unless we're actually going to use the dialer 2018-06-14 09:21:35 -05:00
Arceliar
e8eaabf0c8 comment 2018-06-14 09:12:58 -05:00
Arceliar
57837057b7 tcp/socks cleanup 2018-06-14 09:11:34 -05:00
Arceliar
f7a7f601a0 cleanup old ugly session MTU code that only mattered with lossy UDP fragments 2018-06-14 08:38:43 -05:00
Arceliar
93ffc0b876 macos 2018-06-14 08:00:57 -05:00
Arceliar
e7fca66655 fix address/prefix code, platform specific parts still need testing 2018-06-14 07:58:07 -05:00
Arceliar
330175889e switch address range from fd00::/8 to the deprecated 0200::/7 range 2018-06-14 07:08:48 -05:00
Arceliar
cd514799da recover if p.doSend is closed due to a race between peers.doSendSwitchMsgs and peers.removePeer 2018-06-13 00:24:12 -05:00
Arceliar
b006748da4 code cleanup 2018-06-12 17:50:08 -05:00
Arceliar
9ce428af66
Merge pull request #112 from neilalexander/documentation
Adds more comments to ICMPv6 and TUN/TAP.
2018-06-12 17:11:24 -05:00
Neil Alexander
8e2c2aa977
Document ICMPv6 and TUN/TAP 2018-06-12 22:45:53 +01:00
Arceliar
24228bd381 disable unused configuration Net field and clean up comments to remove mention of UDP where no longer applicable 2018-06-12 14:00:04 -05:00
Arceliar
359af66d0d exponential dht throttle backoff, and make it based on when packets were sent as part of bootstrapping/maintenance, not when arbitrary packets were received 2018-06-12 03:16:10 -05:00
Arceliar
56802d569e minor documentation updates, code comments, and a couple of bugfixes that I noticed when going through the code to comment it 2018-06-10 18:03:28 -05:00
Arceliar
038a51fd13 it helps to add new files 2018-06-09 18:44:59 -05:00
Arceliar
72cca4ea43 version check/warning adjustments 2018-06-09 18:38:30 -05:00
Arceliar
076350f963 remove old tcp key exchange code 2018-06-09 17:49:02 -05:00
Arceliar
8733099516 add version metadata to key exchange at the start of connections 2018-06-09 17:46:19 -05:00
Arceliar
f5c850f098 better way to do wire signed ints (no negative zero, remove conditionals) 2018-06-09 16:36:13 -05:00
Arceliar
e5eb6de1f6 add inner crypto to linkProtoTraffic, using ephemeral keys, to prevent replay attacks from spoofing peer connections 2018-06-08 18:42:56 -05:00
Arceliar
1dcc60f054 check root before accepting that a message is good and unblocking a new peer 2018-06-08 17:33:16 -05:00
Arceliar
f30d040366 Merge branch 'master' of https://github.com/yggdrasil-network/yggdrasil-go into develop 2018-06-08 16:17:24 -05:00
Arceliar
495891d9e8 remove testing panics 2018-06-07 22:32:01 -05:00
Arceliar
e29f700dd6 enable multicast on interfaces that come up after startup 2018-06-07 22:07:19 -05:00
Arceliar
ea1d21f7e5 don't change dhtInfo.pings when sending a search, to prevent multiple different searches from evicting a node 2018-06-07 21:28:08 -05:00
Arceliar
bced15b138 remove TTL from traffic packets 2018-06-07 20:29:22 -05:00
Arceliar
84c13fac90 don't use TTL 2018-06-07 20:18:13 -05:00
Arceliar
fe12e1509a add a throttle to nodes in the dht. the throttle is gradually increased each time the node is pinged. it determines the minimum amount of time to wait between using the node in a bootstrapping search 2018-06-07 17:55:43 -05:00
Arceliar
ec1c173ca5 it helps to check that messages decoded correctly 2018-06-07 16:53:39 -05:00
Arceliar
bcfeb22915 more tcp debugging 2018-06-07 16:49:51 -05:00
Arceliar
63feed8dc3 adjust tcp timeout and add shadow queues to track dropped packets 2018-06-07 15:04:17 -05:00
Arceliar
c1f8baf9b5 update dht.reset() to possibly play better with coord changes 2018-06-07 14:39:43 -05:00
Arceliar
d468882147 cleanup 2018-06-07 14:24:02 -05:00
Arceliar
f8ba80e7d8 remove old switchMessage and clean up related code 2018-06-07 14:13:31 -05:00
Arceliar
00e4da28c7 use/store switchMsg in the switch instead of going through the old switchMessage 2018-06-07 13:56:11 -05:00
Arceliar
3dab94be9f keep dht peers alive 2018-06-07 10:58:24 -05:00
Arceliar
deb755e3e9 remove peer.linkIn channel and related logic 2018-06-07 00:49:06 -05:00
Arceliar
ecf37cae8a make the switch react to peer coord changes immediately, and send out updates immediately 2018-06-07 00:16:47 -05:00
Arceliar
85afe187ff remove peer timeout logic from the switch, so switch peer entrires are only removed when the peer struct is removed 2018-06-06 23:23:16 -05:00
Arceliar
3b783fbf97 move periodic switch maintenance into the router instead of its own goroutine 2018-06-06 23:10:33 -05:00
Arceliar
5dc0cb5544 move wire_encode_locator logic into getBytesForSig, since that's the only place it's used 2018-06-06 23:00:17 -05:00
Arceliar
1e7d34492d fix signature checks and add some TODO reminder comments 2018-06-06 22:39:22 -05:00
Arceliar
5fb33da3a2 remove old switch anc/hop/res code 2018-06-06 21:18:21 -05:00
Arceliar
6811759fc9 add new switchMsg struct to replace old anc/hop/res approach 2018-06-06 21:11:10 -05:00
Arceliar
690d29435d adjust link packet logic so they bypass the lifo stack and are delivered first 2018-06-06 17:44:10 -05:00
Arceliar
bbae9ff8e8
Merge pull request #92 from Arceliar/backpressure
Use backpressure instead of estimated bandwidth
2018-06-06 16:58:48 -05:00
Arceliar
fad6f6b50e remove udp.go 2018-06-06 16:57:36 -05:00
Arceliar
da928af361 fix sim and run gofmt 2018-06-06 16:49:23 -05:00
Arceliar
240841eb38 remove unused recursive search packets 2018-06-06 16:46:15 -05:00
Arceliar
1b89892610 remove UDP, to be replaced with a better implementation later 2018-06-06 16:40:35 -05:00
Neil Alexander
6d9d01dae1 Fix IfName='none' 2018-06-02 23:29:06 +01:00
Arceliar
b9ea5350c6 update search.go comments to describe the iterative approach 2018-06-02 16:45:45 -05:00
Arceliar
3e1ac81854 allow searches to start with nodes further from the destination than ourself 2018-06-02 16:39:34 -05:00
Arceliar
45abfafbba value instead of pointer types for search dest/mask 2018-06-02 16:33:58 -05:00
Arceliar
34939d4b18 update for wire format changes 2018-06-02 16:30:05 -05:00
Neil Alexander
bbdcee1015 Export fields of sessionPing, dhtReq, dhtRes 2018-06-02 22:19:42 +01:00
Neil Alexander
49af65296d Export fields of wire structs 2018-06-02 21:21:05 +01:00
Arceliar
28e6c738e2
Merge branch 'master' into iterdht 2018-06-02 15:00:24 -05:00
Arceliar
09baad48e3 retry failed iterative searches, possibly becoming parallel if things are just slow, and keep track of / skip nodes that were already visited in the search 2018-06-02 14:57:06 -05:00
Neil Alexander
bc37d4fb76 Improve formatting of dot: dashed grey for unknown nodes, sans-serif text 2018-06-02 14:24:06 +01:00
Arceliar
ed6c9c2a54 deduplicate dht responses when adding them to the search, limit the search toVisit size 2018-06-02 00:29:36 -05:00
Arceliar
10a72444e3 get itersearch to run in the sim 2018-06-02 00:16:47 -05:00
Arceliar
ecf7e490d7 start of iterative dht searches 2018-06-01 23:34:21 -05:00
Neil Alexander
ec80a81ed5 Mark extrapolated nodes with dashed outline 2018-06-01 23:33:02 +01:00
Neil Alexander
e4082f218f Add text to dot graph explaining how a node is known 2018-06-01 23:23:24 +01:00
Neil Alexander
a2df5107f0
Change colour scheme: green for self, yellow for peer, blue for open session, white for DHT 2018-06-01 14:20:47 +01:00
Arceliar
ca15bbea57 try color coding dot output 2018-05-31 20:28:09 -05:00
Neil Alexander
ccf71af6b7
Move Init from core.go to debug.go as function is only for simulator 2018-05-27 23:37:57 +01:00
Neil Alexander
460a22c063
Clean up some exported constants 2018-05-27 23:31:34 +01:00
Neil Alexander
a9e61d0d37
Add support for building "release" builds that don't contain pprof which are substantially smaller. To build a "debug" build, use "-tags debug" with "go build" 2018-05-27 23:22:50 +01:00
Neil Alexander
35173e2388
Fix starting TUN read/write 2018-05-27 22:35:30 +01:00
Neil Alexander
4c115de633
De-debug 2018-05-27 22:13:37 +01:00
Arceliar
38e7704161 use backpressure instead of estimated bandwidth, sorted by uptime to break ties 2018-05-27 13:37:35 -05:00
Arceliar
02ba9dc97c fix npe, these don't need to be pointers 2018-05-27 13:22:21 -05:00
Arceliar
7b12493417 panic if tcp startup fails, since otherwise a nil pointer occurs in multicast. make udp do the same thing. 2018-05-27 12:56:33 -05:00
Neil Alexander
a0f547cc1b
Fix being able to enable/disable multicast 2018-05-26 21:50:47 +01:00
Neil Alexander
bc899c395a
Fix accidental truncation of addresses ending in 8 on macOS and BSD 2018-05-26 21:47:54 +01:00
Neil Alexander
5d87601118
Add getMulticastInterfaces and getSelf to yggdrasilctl 2018-05-23 22:13:52 +01:00
Neil Alexander
1fd53bcb7d
Update comments in configuration 2018-05-23 14:02:13 +01:00
Neil Alexander
ce854a76bd
Add -normaliseconf option and temporarily correct old config item names in running config 2018-05-23 12:04:27 +01:00
Neil Alexander
9d9083e373
Update configuration names, fix multicast interface selection 2018-05-23 11:28:20 +01:00
Neil Alexander
6f79184c9b
Move multicasting into yggdrasil package 2018-05-23 11:13:53 +01:00
Neil Alexander
388ae09fca
Rename some config items 2018-05-22 23:43:29 +01:00
Arceliar
b10ae51565
Merge pull request #85 from neilalexander/yggdrasilctl
Human-readable formatting in yggdrasilctl
2018-05-21 19:21:00 -05:00
Neil Alexander
04b3e84023
Show your IPv6 address and subnet when starting 2018-05-21 16:15:31 +01:00
Neil Alexander
9567446f50
Offload formatting to yggdrasilctl and keep precision in JSON 2018-05-21 15:21:23 +01:00
Neil Alexander
59688dcab3
Fix formatting of bytes_sent, bytes_recvd, last_seen, uptime 2018-05-21 15:05:01 +01:00
Neil Alexander
ca3e541d3b
Friendly formats for getDHT, getSessions, setTunTap etc 2018-05-21 14:14:57 +01:00
Neil Alexander
201701ae4a
Add some pretty printing to yggdrasilctl, small modifications to JSON formatting in admin socket 2018-05-21 13:54:51 +01:00
Neil Alexander
bd32f5890b
Run gofmt -s -w 2018-05-21 07:28:03 +01:00
Neil Alexander
79131bb959
Minor tweaks 2018-05-20 23:25:07 +01:00
Neil Alexander
aae570de2a
Optional parameters are now square instead of pointed brackets, avoid nils for help 2018-05-20 21:57:05 +01:00
Neil Alexander
c765e0566f
Convert rest of functions, fix setTunTap 2018-05-20 21:54:15 +01:00
Neil Alexander
c75566d5ac
Various fixes and error catching, add setTunTap 2018-05-20 21:44:30 +01:00
Neil Alexander
4ecc7ce860
Add getTunTap to JSON admin socket 2018-05-20 19:42:37 +01:00
Neil Alexander
c3ca5c64b1
Add some more functions to JSON admin socket 2018-05-20 19:23:43 +01:00
Neil Alexander
9713e73969
Fix dot 2018-05-20 17:25:13 +01:00
Neil Alexander
a6ef7166ea
Start JSON-ifying the admin socket 2018-05-20 17:21:14 +01:00
Arceliar
5c0636eb3d add uptime and bytes sent/recvd to peer struct and getPeers 2018-05-18 20:41:02 -05:00
Neil Alexander
ca96bbf014
Accept exchanging an MTU of 0 to signify that TUN/TAP is disabled, don't send traffic to a node in that case 2018-05-18 18:56:33 +01:00
Neil Alexander
ec371af84f
Track TX/RX bytes over session and if MTU was adjusted, add to admin socket getSession 2018-05-18 17:59:29 +01:00
Arceliar
ec8fe338d5 more insertIfNew bugfixes, and add peerOnly to getDHT output (true if a node is in the bucket.peers slice instead of bucket.others--it means they're not regularly pinged, they're only there to make sure DHT lookups include them as a result, for bootstrapping reasons) 2018-05-17 21:43:26 -05:00
Arceliar
fe518f4e3f bugfixes related to peer timeouts in the DHT, significantly improve DHT bootstrap speed 2018-05-17 21:20:31 -05:00
Arceliar
8d9887294c add dht time since last ping to admin socket, some DHT code cleanup, bugfix to insertIfNew 2018-05-17 19:32:29 -05:00
Arceliar
d98640fd59 switch cleanup 2018-05-16 17:48:53 -05:00
Arceliar
6b51b44cbf slightly better variable naming 2018-05-16 17:36:37 -05:00
Arceliar
800ccaa3d4 cleanup 2018-05-16 17:32:26 -05:00
Arceliar
fe712d24f8 don't allow buckets to overflow when the next bucket isn't full 2018-05-16 17:24:38 -05:00
Arceliar
8228242eed misc dht and tree changes to stabilize coords and bootstrap the dht faster 2018-05-15 23:57:00 -05:00
Arceliar
96c55da987
Merge pull request #76 from neilalexander/hjson
Use HJSON for config instead of JSON
2018-05-13 15:09:28 -05:00
Neil Alexander
5299783e35
Add getTunTap to admin socket 2018-05-10 09:48:12 +01:00
Neil Alexander
e381808704
Add ability to select interface by friendly name on Windows 2018-05-09 16:42:24 +01:00
Neil Alexander
8ea3070a02
Small tweaks/clean up 2018-05-09 14:03:28 +01:00
Neil Alexander
45b106168e
Use HJSON instead of JSON 2018-05-09 13:54:31 +01:00
Arceliar
5dac273a3d rename to 'AllowedBoxPubs' and similar 2018-05-07 17:05:54 -05:00
Arceliar
6ce16d8192 debug admin socket 2018-05-06 19:48:26 -05:00
Arceliar
94dd231e13 add (not working) admin functions for auth keys, needs debugging 2018-05-06 19:31:19 -05:00
Arceliar
0b391b6e3a debugging and cleanup 2018-05-06 19:01:52 -05:00
Arceliar
80f893aac3 let the peer's linkLoop call close if the peer receives no announcements for too long 2018-05-06 17:17:12 -05:00
Arceliar
6026e0a014 Optional peer authentication, if non-empty then incoming TCP and all UDP peers must match one of these box keys 2018-05-06 16:32:34 -05:00
Arceliar
3a1b67da8c
Update admin.go 2018-05-05 20:20:38 -05:00
Arceliar
cdedd304af make removePeers work for TCP connections and minor admin cleanup 2018-05-05 17:14:03 -05:00
Arceliar
8b9a91be57 possibly fix weird issue I was having with netns, still not sure I understand why it was a problem 2018-04-28 16:39:58 -05:00
Neil Alexander
bdf9e45082
Default to previous scheme when url.Parse returns an error
In response to:
```
panic: parse x.x.x.x:xxx: first path segment in URL cannot contain colon

goroutine 33 [running]:
yggdrasil.(*Core).DEBUG_addPeer(0x8e58000, 0x8e34080, 0x12)
        /go/src/github.com/{{ORG_NAME}}/{{REPO_NAME}}/src/yggdrasil/debug.go:317 +0x420
main.(*node).init.func1(0x8e48000, 0x8e58000)
        /go/src/github.com/{{ORG_NAME}}/{{REPO_NAME}}/yggdrasil.go:75 +0x70
created by main.(*node).init
        /go/src/github.com/{{ORG_NAME}}/{{REPO_NAME}}/yggdrasil.go:69 +0x410
```
2018-04-27 09:53:31 +01:00
Jeff Becker
fe13fea1e5
remove hard coded tor config options 2018-04-26 10:26:10 -04:00
Jeff Becker
7756891510
support socks proxy in peer url and decouple explicit tor/i2p routing 2018-04-26 10:23:21 -04:00
Jeff Becker
769b058004
more docs 2018-04-25 10:11:11 -04:00
Jeff Becker
1be8bbed1c
more docs 2018-04-25 10:09:09 -04:00
Jeff Becker
de69860e9b
* only enable tor proxy dialer when tor is enabled
* add docstrings
2018-04-25 10:06:13 -04:00
Jeff Becker
c16e354a44
Merge remote-tracking branch 'origin/master' into tor-auto 2018-04-25 10:01:10 -04:00
Arceliar
8ef2e55de6 try sending pings before sending searches for an unresponsive session 2018-04-22 15:31:30 -05:00
Jeff Becker
5e23185ddc
use address only not port 2018-04-20 08:41:09 -04:00
Jeff Becker
3c4fee0492
tor auto config 2018-04-19 10:30:40 -04:00
Neil Alexander
48ced483d6
Merge pull request #64 from Arceliar/dht
Limit DHT pings to 1/min per node
2018-03-17 20:46:47 +00:00
Arceliar
fe5ef4e867 don't add things to the dht rumorMill if they've been pinged in the last minute (arbitrary time, needs investigating) 2018-03-17 15:28:22 -05:00
Arceliar
0459f88b92 add a udp close packet, and partial support for a removePeer admin call (sends close to UDP peers, but doesn't close TCP connections yet) 2018-03-16 18:24:28 -05:00
Neil Alexander
bf0413a0c4
Modify ICMPv6 source address for "Packet Too Big" messages to a routable address so that it correctly routes to nodes in an yggdrasil /64 subnet 2018-03-10 22:31:36 +00:00
Arceliar
b34345229a remove any peers from the dht if a reset is triggered (from coord changes) 2018-03-10 15:16:39 -06:00
Arceliar
9ce0b7fbea keep peers separate from other nodes in dht 2018-03-10 13:58:48 -06:00
Neil Alexander
1155816df8 Show both UDP and TCP listen addresses in stdout (#51) 2018-03-07 09:41:04 +00:00
Neil Alexander
166d25619d Attempt to support NetBSD
This code actually consolidates a lot of the BSD code together, and even setting the interface MTU with SIOCSIFMTU seems to work fine.

What doesn't work though is setting the interface address using SIOCSIFADDR_IN6, which I attempted to plagiarise from the Darwin code.

As a fallback, ifconfig is used, which solves the problem enough to get it working.
2018-03-04 23:47:01 +00:00
Arceliar
cd0d1a1d26 get the fd instead of depending on water to do it 2018-03-04 13:57:34 -06:00
Arceliar
039c4a5a35 only try to build on openbsd and freebsd for now, darwin needs work too 2018-03-04 11:02:54 -06:00
Arceliar
478b80a07a cleanup 2018-03-04 10:56:46 -06:00
Arceliar
e7726cfb00 deduplicate some bsd tuntap code, still untested 2018-03-04 10:55:32 -06:00
Neil Alexander
c30792245a Add FreeBSD support in TAP mode 2018-03-04 16:24:50 +00:00
Neil Alexander
a92e6c2588
Merge pull request #29 from Arceliar/netlink
Linux: use netlink instead of ip
2018-03-04 10:47:34 +00:00
Arceliar
5ec6265a70 use netlink instead of ip commands to set address/mtu and bring up the tuntap device on linux 2018-03-03 16:41:36 -06:00
Arceliar
0460fdd301 panic if tun.write or tun.read returns an error and was launched from debug.go, since there's no way to recover in these scenarios 2018-03-03 13:56:26 -06:00
Arceliar
a367f2ca17 gofmt 2018-03-03 11:49:24 -06:00
Arceliar
0578a9f273 manual merge 2018-03-03 11:07:08 -06:00
Neil Alexander
4e5627f933 Update default interface MTU to use per-platform instead of global value 2018-03-03 12:43:39 +00:00
Neil Alexander
4917ea3dd2 Per-platform TUN defaults 2018-03-03 12:30:54 +00:00
Neil Alexander
bec898a326 Don't allow exceeding maximum MTU for a given platform 2018-03-03 11:47:14 +00:00
Neil Alexander
7c0102e43d Be a little bit less verbose on OpenBSD 2018-03-01 15:31:49 +00:00
Neil Alexander
6640b33334 Fix using 'auto' as device name on OpenBSD - default to /dev/tap0 2018-03-01 15:19:20 +00:00
Neil Alexander
24be3f1d67 Turns out FreeBSD is a bit different so restrict this to OpenBSD for now 2018-03-01 15:11:12 +00:00
Neil Alexander
90393ae03b Set interface flags properly on OpenBSD 2018-03-01 15:02:53 +00:00