Commit Graph

649 Commits

Author SHA1 Message Date
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