683 Commits

Author SHA1 Message Date
Neil Alexander
7ea4e9575e
Break out multicast into a separate package 2019-03-28 16:13:14 +00:00
Neil Alexander
03bc7bbcd6
Fix TUN/TAP for non-Darwin platforms 2019-03-28 15:32:01 +00:00
Neil Alexander
eb22ed44ac
Add new reject channel to router so we can send back rejected packets to adapter (e.g. for ICMPv6 Packet Too Big), implement ICMPv6 PTB in TUN/TAP instead of router 2019-03-28 09:50:13 +00:00
Neil Alexander
0715e829c2
Fix adapter setup and no longer panics on packets shorter than IP header 2019-03-28 09:12:00 +00:00
Neil Alexander
0b494a8255
Refactoring: move tuntap and icmpv6 into separate package 2019-03-28 00:30:25 +00:00
Neil Alexander
5bacfabae7
Handle cases where link-local addresses may disappear or change 2019-03-13 17:43:33 +00:00
Neil Alexander
41872820c3
Remove isAutoconf option to GenerateConfig 2019-03-12 19:18:43 +00:00
Neil Alexander
4062c93e18
Re-order config, update default Listen 2019-03-12 19:04:30 +00:00
Neil Alexander
830be7f4db
Update comments again 2019-03-12 16:06:12 +00:00
Neil Alexander
dc3a05f13a
Correctly classify link-local addresses in the TCP handler, fix AllowedPublicEncryptionKeys warning 2019-03-12 16:03:02 +00:00
Neil Alexander
c388885a92
Update config comments for AllowedEncryptionPublicKeys 2019-03-12 15:29:42 +00:00
Neil Alexander
229de91a3a
Fix AllowedEncryptionPublicKeys so that it works in incoming connections and not outgoing ones 2019-03-12 15:01:27 +00:00
Neil Alexander
ec19c479dd
Add comment about no reloading for LinkLocalTCPPort 2019-03-10 19:17:03 +00:00
Neil Alexander
9d5ca85424
Add LinkLocalTCPPort option 2019-03-10 19:08:56 +00:00
Neil Alexander
3c2cdfea1c
Keep AWDL awake, or wake it up again after a minute if suspended for some reason (e.g. sleep) 2019-03-10 18:05:27 +00:00
Arceliar
3c696c3e55 use idle time in switch decisions to force it to try all links 2019-03-09 19:27:52 -06:00
Arceliar
c7b4bfcef5 misc fixes 2019-03-09 18:08:26 -06:00
Neil Alexander
03eec4b14d
Don't leak interface name via multicast, ensure zone is always correct when dialling link-local 2019-03-09 09:24:52 +00:00
Arceliar
a0e6edd219
Merge pull request #360 from neilalexander/multilink
Support for multiple listeners
2019-03-08 18:56:47 -06:00
Arceliar
426d157025 make sure we don't replace an existing listener 2019-03-08 18:51:07 -06:00
Neil Alexander
917ca6c1c5
Make changes based on review comments 2019-03-08 10:26:46 +00:00
Arceliar
02b1892cc5 try to switch parents if a parent link is blocked 2019-03-07 21:36:12 -06:00
Neil Alexander
57eb6eaeb0
Clean up config package 2019-03-06 17:45:47 +00:00
Neil Alexander
b8cabf3212
Support removing Listen interfaces at runtime properly 2019-03-06 16:40:48 +00:00
Neil Alexander
18ef28a477
Fix default Listen config 2019-03-06 13:00:45 +00:00
Neil Alexander
531d9f39ca
Fix multicast bug, set static multicast interval 15 seconds 2019-03-06 12:15:40 +00:00
Neil Alexander
c0d5a8c0bd
Clean up old listeners first 2019-03-06 12:09:57 +00:00
Neil Alexander
f4e17b9a9f
Properly handle multicast interfaces going up and down 2019-03-06 12:07:33 +00:00
Neil Alexander
de2aff2758
Refactor multicast so that it creates a new TCP listener for each interface with LL addresses (so that it will not break if Listen is not set with a wildcard address) 2019-03-06 11:06:13 +00:00
Neil Alexander
19267beb9e
Merge branch 'develop' into multilink 2019-03-05 22:07:20 +00:00
Neil Alexander
236692bdc4
Add getTunnelRouting and setTunnelRouting (fixes #362) 2019-03-05 17:55:46 +00:00
Neil Alexander
a17d6d3a68
Fix getTunTap (fixes #363) 2019-03-05 17:37:26 +00:00
Neil Alexander
2ef823e69c
Fix deadlock when reconfiguring multicast 2019-03-04 23:16:46 +00:00
Neil Alexander
88925d3e06
Centralise call/listen functions in link.go 2019-03-04 22:45:35 +00:00
Neil Alexander
61774aed3b
Show proto in admin socket, link linkInfo from peer, other fixes 2019-03-04 20:33:08 +00:00
Neil Alexander
2b8648e2b3
Fix debug builds 2019-03-04 19:04:09 +00:00
Neil Alexander
0be0b078cb
Remove unused types in link.go 2019-03-04 19:00:06 +00:00
Neil Alexander
eeede4e6d0
Fix some obvious concurrency bugs 2019-03-04 18:47:40 +00:00
Neil Alexander
82bb95b77f
Some more (inelegant) multiple listener code plus some reconfigure support 2019-03-04 18:41:32 +00:00
Neil Alexander
be8db0c120
Support multiple TCP listeners 2019-03-04 17:52:57 +00:00
Neil Alexander
ae79246a66
Move TCP under link.go 2019-03-04 17:09:48 +00:00
Neil Alexander
918ce5a3fc
Add a timeout on the UNIX admin socket check 2019-03-03 19:32:36 +00:00
Neil Alexander
c940bae9e3
Update output 2019-03-03 14:15:01 +00:00
Neil Alexander
8f66d5b8dd
Try to clean up UNIX admin socket 2019-03-03 14:09:54 +00:00
Neil Alexander
3c733eadb4
Merge pull request #350 from neilalexander/awdl
Wake AWDL for multicast peering on macOS
2019-03-02 10:33:47 +00:00
Neil Alexander
12e088ab9e
Remove unnecessary Cgo line 2019-03-01 19:34:53 +00:00
Neil Alexander
e99903bf72
Wake up AWDL on Darwin if awdl0 is an enabled multicast interface 2019-03-01 19:26:50 +00:00
Neil Alexander
a6ae159329
Give some more feedback that a configuration reload actually happens 2019-03-01 18:26:52 +00:00
Arceliar
304f22dc1d re-enable session workers in a way that doesn't block and drops packets before decrypting if necessary 2019-02-28 20:05:21 -06:00
Arceliar
06df791efc buffer packets moving from the switch to the router, allow them front drop if there's too many 2019-02-28 19:08:56 -06:00
Arceliar
371b5ca6a2 Change log message about AllowedEncryptionPublicKeys from Debug to Warn 2019-02-28 18:49:34 -06:00
Arceliar
2569242050 fixes to linkInterface.handler() 2019-02-26 21:07:56 -06:00
Arceliar
def4fb3587 fix timeout and improve logging on connection close 2019-02-24 14:48:16 -06:00
Arceliar
654407dc6d close long-dead connections in link.go instead of in switch.go, this is important in case a connection opens but never bothers to send even one switch message 2019-02-24 13:24:55 -06:00
Arceliar
bb3edd5e55 add the relevant error to the default logging when a connection is closed 2019-02-24 12:59:30 -06:00
Arceliar
042adb0516 make sure the only place traffic is ever dropped is in the switch. this currently disables the dedicated crypto workers 2019-02-23 00:07:00 -06:00
Arceliar
e31962de0f Merge branch 'develop' into switch 2019-02-16 16:26:20 -06:00
Arceliar
6f0bbbfb98 Debug some issues with the state machine that tracks idle connections in link.go 2019-02-15 19:35:10 -06:00
Arceliar
3c9c8672c9 Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into switch 2019-02-15 16:28:48 -06:00
Neil Alexander
0ca64b0abe
Remove ReadTimeout configuration option 2019-02-10 12:13:49 +00:00
Arceliar
21cecf4630 consistently prioritize which peer to forward to instead of letting it be partly random 2019-02-09 17:44:25 -06:00
Arceliar
ad43558fbb fix bug in switch time 2019-02-09 15:30:17 -06:00
Arceliar
74ac535d55 slightly faster switch logic, should be easier to have a useful tie-breaker for peers that are equally close to the destination via the tree metric 2019-02-08 19:46:11 -06:00
Arceliar
41f49faaa0 get code running in the netns test again, remove unnecessary allocations that were found in profiling 2019-02-05 17:39:59 -06:00
Arceliar
2f8dd5dde0 remove race condition in setting peer.close by requiring it as an argument to newPeer 2019-02-03 15:50:25 -06:00
Arceliar
5ddf84f329 remove peers completely after a long switch timeout, this could use some improvement later 2019-02-03 15:22:14 -06:00
Arceliar
ebbe5f67ad don't time out a link unless we were expecting an ack and didn't get one 2019-02-02 22:41:51 -06:00
Arceliar
b44a0f29f3 send an ack if we receive a packet and don't have any return traffic, keeping a legacy 4-second keep-alive in case there's no traffic at all to send (to be removed later, after nodes have upgraded), ideally we should either remove ReadTimeout or use it for the switch idle timeout instead 2019-02-02 22:18:55 -06:00
Neil Alexander
43f798e82e
Check link-local in tcp.go, track direction in link.go, fix compile error for mobile.go 2019-02-01 00:02:17 +00:00
Neil Alexander
ec5f7d9879
Enforce AllowedEncryptionPublicKeys for all peers inc. link-local 2019-01-31 23:47:20 +00:00
Neil Alexander
432f93de89
Check AllowedEncryptionPublicKeys 2019-01-31 23:29:18 +00:00
Neil Alexander
e36f88c75f
Info logging when link connects/disconnects 2019-01-31 23:18:02 +00:00
Arceliar
05962b2cbd disable idle nodes in the switch instead of killing the connection entirely. this implementation is ugly, but i think it maybe works 2019-01-30 20:58:23 -06:00
Neil Alexander
2466c54a71
Update debug lines in link.go 2019-01-27 20:56:10 +00:00
Neil Alexander
1a3a67f205
Merge remote-tracking branch 'origin/develop' into link
Fix merge conflicts from flexible logging branch
2019-01-27 20:54:21 +00:00
Neil Alexander
22d2e0e4fe
Fix debug builds 2019-01-27 13:33:32 +00:00
Neil Alexander
0838928668
Add support for flexible logging levels 2019-01-27 13:31:43 +00:00
Arceliar
6ef0e47632 fix merge conflict 2019-01-26 14:27:37 -06:00
Arceliar
bca69df1f6 possible workaround to a deadlock 2019-01-26 14:07:18 -06:00
Neil Alexander
705b914d00
Move awdl into link 2019-01-23 19:42:33 +00:00
Neil Alexander
188a9e439d
Bug fixes for AWDL 2019-01-23 18:16:31 +00:00
Neil Alexander
2944be4faf
Further tweaks 2019-01-23 17:05:16 +00:00
Neil Alexander
81545fd9bf
Clean up 2019-01-23 15:16:22 +00:00
Neil Alexander
9c6cf50684
Adapt AWDL to link 2019-01-23 15:08:19 +00:00
Arceliar
7b2460662d close the connection before blocking a duplicate link 2019-01-22 21:53:39 -06:00
Arceliar
f936151f2d correctly clean up various things 2019-01-22 21:48:43 -06:00
Arceliar
eb8951081d fix duplicate connection bug, I think this is also in develop 2019-01-22 21:23:57 -06:00
Arceliar
12c0e019dc only create one interface, but still opens duplicate connections before it catches this, so more work is needed 2019-01-22 21:16:41 -06:00
Arceliar
f95663e923 actually finish initializing peers 2019-01-22 18:24:15 -06:00
Arceliar
137212d8cf work in progress, establishes TCP connections and gets through metadata handshake using the link code, but doesn't seem to send traffic yet (no switch peers are created) 2019-01-21 23:08:50 -06:00
Arceliar
5a4d6481dd Work in progress, add a linkInterfaceMsgIO interface type and make stream implement it, this will be used by link 2019-01-21 21:27:52 -06:00
Neil Alexander
ad6ec6ab11
Merge pull request #315 from neilalexander/flowlabel
Update switch flow separation for IPv4
2019-01-21 23:22:40 +00:00
Neil Alexander
62d4d62a77
Update comments 2019-01-21 16:24:29 +00:00
Neil Alexander
d3f67ad017
Improve command flow 2019-01-21 16:22:49 +00:00
Neil Alexander
cdfb930703
Update switch flow separation for IPv4 2019-01-21 12:27:29 +00:00
Arceliar
c8e1be0f73 link/stream refactoring bugfixes and gofmt 2019-01-19 16:37:45 -06:00
Neil Alexander
41a410f2a1
Initialise awdl.go from link.go, remove deadlock between awdl.create and link.create, other bits and pieces 2019-01-19 12:19:24 +00:00
Neil Alexander
c51a3340b1
Update awdl.go to use new link stuff (untested) 2019-01-19 00:42:53 +00:00
Neil Alexander
4ae36dfffe
Merge branch 'ios' into link 2019-01-19 00:23:38 +00:00
Neil Alexander
6fe3b01e90
Rename awdl.go to link.go, add stream.go, update tcp.go 2019-01-19 00:14:10 +00:00