Adam Ierymenko
c287ae4d1d
Redo conversion of _networks to a vector. Just use a simple linear search and put the nwid in a pair with the pointer so linear search can be done without pointer chasing. This should be the fastest option for anything less than dozens of networks, and should save memory over the old map.
2015-06-26 11:38:31 -07:00
Adam Ierymenko
4aa8449fe1
Merge branch '_networks_vector' of https://github.com/mwarning/ZeroTierOne into adamierymenko-dev
2015-06-22 10:34:55 -07:00
Moritz Warning
787608b568
use _network function to reduce source code complexity
2015-06-20 16:34:19 +02:00
Moritz Warning
2b04ac5e9b
replace _networks map by vector
...
_networks is usually quite small, using binary search on a vector might be faster comapred to std::map.
This is especially true when using uClibc++, which uses a list.
2015-06-20 16:25:21 +02:00
Adam Ierymenko
7bae95836c
Root server terminology cleanup, and tighten up a security check by checking full identity of peers instead of just address.
2015-06-19 10:23:25 -07:00
Adam Ierymenko
ecb6a1d84f
docs
2015-06-01 19:12:20 -07:00
Adam Ierymenko
5341e32729
Fix to GitHub issue #140 -- network preferred relays. Also go ahead and allow RENDEZVOUS from regular peers.
2015-06-01 19:05:27 -07:00
Adam Ierymenko
318c2f025b
Call it _relays since there might be other kinds later.
2015-06-01 17:09:37 -07:00
Adam Ierymenko
5bc89034bc
Always ping / contact network preferred relays (if any).
2015-06-01 16:53:58 -07:00
Adam Ierymenko
9774f789f2
TCP fallback tunneling is now working. That hurt more than expected.
2015-05-22 14:52:23 -07:00
Adam Ierymenko
d9006712f6
Completely factor out "desperation" from the core. I thought of a significantly simpler way to move all of this logic entirely into the containing service, liberating the core from any concern over the nature of its pipe to the outside world.
2015-05-21 15:58:26 -07:00
Adam Ierymenko
1213073916
Apple auto-update stuff, now for Windows.
2015-05-20 19:38:49 -07:00
Adam Ierymenko
2810cd7c15
Build fixes for G++, building without SQLite3 present, and warning removal.
2015-05-17 23:56:47 +00:00
Kees Bos
a425bbc673
Renamed supernode to rootserver
2015-05-06 12:05:20 +02:00
Adam Ierymenko
b4b067bf12
So we need to keep track of external surface per reporter, since some NATs assign different external IPs for each external destination. Keeping just one known surface could create a race condition.
2015-05-04 18:34:30 -07:00
Adam Ierymenko
604576075e
Add some missing includes that older G++ cares about.
2015-04-30 20:40:33 -07:00
Adam Ierymenko
9a34fde8a5
Make sure identity.public exists and stays in sync, cleanup extra new in Node, and test script for local testnets.
2015-04-30 16:03:44 -07:00
Adam Ierymenko
f5848972f9
Windows now builds and runs selftest correctly, and fixed a Windows (and possibly other platforms) issue in Phy<>.
2015-04-24 15:05:28 -07:00
Adam Ierymenko
54954f5b88
First pass of Windows cleanup and build fixes...
2015-04-24 13:35:17 -07:00
Adam Ierymenko
60f05518aa
(1) now builds and works on Linux, (2) fix a threading problem causing carsh on shutdown, (3) cleanup in selftest, re-enable Phy and Http tests.
2015-04-20 15:12:31 -07:00
Adam Ierymenko
d2503172d8
Add some additional detail to the peer record in CAPI and JSON control plane.
2015-04-15 19:00:26 -07:00
Adam Ierymenko
6369c264e2
Rename netconf to controller and NetworkConfigMaster to NetworkController for consistency.
2015-04-15 15:12:09 -07:00
Adam Ierymenko
1c9ca73065
Fix some deadlock issues, move awareness of broadcast subscription into core, other bug fixes.
2015-04-15 13:09:20 -07:00
Adam Ierymenko
c9af603b9f
Add beacon broadcasting back into Node.
2015-04-14 18:20:03 -07:00
Adam Ierymenko
1cfa67bbdd
Bunch more control plane work, and shelve old UI -- React FTW.
2015-04-14 13:56:28 -07:00
Adam Ierymenko
a2605561af
Basic control plane queries working.
2015-04-13 18:43:33 -07:00
Adam Ierymenko
b888e033c0
JSON control plane, almost done...
2015-04-13 18:12:45 -07:00
Adam Ierymenko
068d311ecc
TRACE compile fixes, other fixes, and it basically works! It says HELLO.
2015-04-09 20:54:00 -07:00
Adam Ierymenko
46ecad451c
Starting on new service/ code to encapsulate node/ with osdep/ stuff, and add a user pointer to the CAPI.
2015-04-09 18:14:27 -07:00
Adam Ierymenko
ccc73b920e
Node peer list function for CAPI, and some Peer cleanup.
2015-04-08 18:45:21 -07:00
Adam Ierymenko
d9e9b60a98
Node status and network list.
2015-04-08 18:25:40 -07:00
Adam Ierymenko
e34bc961db
Add awareness of online status, and put old OS-dep utils in OSUtils.
2015-04-08 17:10:21 -07:00
Adam Ierymenko
4d5a6a25d3
Add events for packet decode errors, etc., and re-implement TRACE as an event.
2015-04-08 16:49:21 -07:00
Adam Ierymenko
9d9d0ef12c
Rename StatusCallback to more descriptive EventCallback.
2015-04-08 16:07:47 -07:00
Adam Ierymenko
c894710ac1
Remove Logger.hpp references.
2015-04-08 16:00:48 -07:00
Adam Ierymenko
6de7996218
Math fix.
2015-04-07 19:32:26 -07:00
Adam Ierymenko
49f031ccb4
Tons of refactoring, change to desperation algorithm to use max of core or link, porting over core loop code from old Node.cpp to new CAPI version, etc.
2015-04-07 19:31:11 -07:00
Adam Ierymenko
9e55f882d3
Starting to port from old Node() -- identity generation.
2015-04-07 16:41:56 -07:00
Adam Ierymenko
8210ed4805
Implement read from object store.
2015-04-07 14:11:47 -07:00
Adam Ierymenko
a2821e9000
Add code to check external surface against reported surface from other trusted peers, and also rename ExternalSurface to SelfAwareness because lulz.
2015-04-06 20:17:21 -07:00
Adam Ierymenko
51f46a009a
Multicast group join/leave and group membership announcement.
2015-04-06 18:27:24 -07:00
Adam Ierymenko
8001b2c0cb
Network now calls port config function as per new API.
2015-04-06 16:52:52 -07:00
Adam Ierymenko
5f351f2f6b
build fixes.
2015-04-06 14:55:40 -07:00
Adam Ierymenko
f4fd2d4971
Bring IncomingPacket into line with new changes.
2015-04-06 14:50:53 -07:00
Adam Ierymenko
6eb9289367
Bunch more cleanup, improvements to NAT traversal logic, finished updating Switch.
2015-04-03 16:52:53 -07:00
Adam Ierymenko
ee0f56355b
Send path simplification.
2015-04-03 13:14:37 -07:00
Adam Ierymenko
a69e1876f1
The concept of link desperation (escalating to less desirable transports) simplifies a ton of stuff. Loads of spaghetti logic can die since we no longer have to make these decisions down in the core.
2015-04-02 17:54:56 -07:00
Adam Ierymenko
1f28ce3980
Tons more refactoring: simplify Network, move explicit management of Tap out, redo COM serialization, etc.
2015-04-01 19:09:18 -07:00
Adam Ierymenko
49349470a0
...
2015-04-01 16:27:14 -07:00
Adam Ierymenko
8130848020
More refactoring... and update the API a bit... turns out my strategy for reducing indirect function calls also increased memcpy()s which are more expensive. This is simpler and faster.
2015-04-01 14:59:44 -07:00
Adam Ierymenko
b723855751
Refactoring... lalalala...
2015-03-31 18:17:11 -07:00
Adam Ierymenko
36eab4f1a9
Whole heap more cleanup and refactoring...
2015-03-31 17:53:34 -07:00
Adam Ierymenko
2c5dbecb3c
More CAPI work, and move old control/ and old node/Node to attic.
2015-03-31 13:54:50 -07:00
Adam Ierymenko
60158aa5dd
Turns out that node/ likely has no business with or need for the system IP routing table. So shelve that code for now.
2015-03-30 17:48:48 -07:00
Adam Ierymenko
278c8fd9f1
Wire up externally specified NetworkConfigMaster
2015-03-13 13:53:15 -07:00
Adam Ierymenko
ff255a34de
Make NetworkConfigMaster a plugin to get Redis and other non-endpoint code out of node/
2015-02-24 12:28:58 -08:00
Adam Ierymenko
93012b0ee5
Re-incorporation: ZeroTier Networks -> ZeroTier, Inc. [Delaware]
2015-02-17 13:11:34 -08:00
Adam Ierymenko
eeed31b396
Ping supernodes on surface change, and also reset TCP flag.
2015-02-02 17:02:23 -08:00
Adam Ierymenko
b7148c107d
Rip out network environment fingerprint. This will be replaced by constant monitoring of actual external address surface.
2015-02-02 16:40:57 -08:00
Adam Ierymenko
c8c5d3b06e
Create netconf master if redis options are in local.conf.
2015-01-09 18:25:41 -05:00
Adam Ierymenko
afea153a0b
Build fixes.
2015-01-08 18:17:02 -05:00
Adam Ierymenko
64ba596e0b
C++ network config master ready to test.
2015-01-08 14:27:55 -08:00
Adam Ierymenko
4e95384ad6
Cleanup, add tristate to config code in Network, and happy new year!
2015-01-05 17:47:59 -08:00
Adam Ierymenko
56cfe1d603
Strip out old Service code, add new service message type.
2015-01-05 11:47:22 -08:00
Adam Ierymenko
30e82a4d9c
Fix network enumeration buffer size bug -- reported by user Neal Symms via LiveAgent
2014-12-02 12:53:30 -08:00
Adam Ierymenko
0bcac1fd79
Add a bunch of high-resolution try/catch safety in Node main loop to attempt to snare gremlin.
2014-11-21 11:54:06 -08:00
Adam Ierymenko
95f421024a
Code cleanup, and fix some unsafe pointer handling in Network.
2014-10-29 13:57:37 -07:00
Adam Ierymenko
3d85a615fb
NULL dereference on still-initializing node bug fix in status query commands, and doc updates.
2014-10-28 14:17:39 -07:00
Adam Ierymenko
934a575a74
Testnet seems to work a bit better now...
2014-10-27 18:23:10 -07:00
Adam Ierymenko
4fbb098daa
Testnet work... getting there!
2014-10-23 16:46:09 -07:00
Adam Ierymenko
2436e22f46
More work on abstracting socket manager.
2014-10-21 15:18:50 -07:00
Adam Ierymenko
8730d30575
Now for some clang compile fixes...
2014-10-19 13:07:50 -07:00
Adam Ierymenko
74f36f5dc0
Windows build fixes.
2014-10-19 12:56:39 -07:00
Adam Ierymenko
2416491cbc
Permanently retire peers.persist, but make iddb.d always enabled instead since identities are what we really want to cache.
2014-10-13 14:12:51 -07:00
Adam Ierymenko
6e23986bb3
Another build fix.
2014-10-13 13:09:02 -07:00
Adam Ierymenko
52314dcdf6
GitHub issue #111
2014-10-13 11:47:14 -07:00
Adam Ierymenko
496109fdcc
Announce multicast group changes on network rescanMulticastGroups()
2014-10-03 18:27:42 -07:00
Adam Ierymenko
351db7f1a0
Plumb injectPacketFromHost through to API.
2014-10-03 14:49:11 -07:00
Adam Ierymenko
67aa23530b
More work on adding testnet and user-mode capabilities for local network simulation.
2014-10-03 11:59:50 -07:00
Adam Ierymenko
e1882b614b
Some cleanup, Multicaster now sends multicasts as it gets additional members.
2014-10-01 14:05:25 -07:00
Adam Ierymenko
ae082c3cb8
Yay... now everything compiles! Getting close to testing on this. Still have not added backward compatibility support for relaying of multicasts to 0.9.X clients yet but that will be easy. Will test with heterogenous 1.0.0 clients only first.
2014-10-01 12:41:48 -07:00
Adam Ierymenko
2659427864
Multicaster needs to be global, not per-network, and a bunch of other stuff.
2014-09-30 16:28:25 -07:00
Adam Ierymenko
8607aa7c3c
Everything in for new multicast except IncomingPacket parsing...
2014-09-30 08:38:03 -07:00
Adam Ierymenko
81b12b6826
Rename the ubiquitous _r pointer to RuntimeEnvironment to RR just to be a little more consistent about using _ to denote private member variables.
2014-09-24 13:53:03 -07:00
Adam Ierymenko
d9abd4d9be
Work on defining new direct broadcast multicast algorithm.
2014-09-18 18:28:14 -07:00
Adam Ierymenko
4708231046
Fix for GitHub issue #122 and other fixes
2014-09-18 10:01:30 -07:00
Adam Ierymenko
6b76cac6cf
Back off from thrashing shutdownIfUnreadableCheck, fix bug in control service.
2014-09-17 14:19:58 -07:00
Adam Ierymenko
2762db8408
More work on control bus refactor...
2014-09-17 12:54:39 -07:00
Adam Ierymenko
fb22ef053b
Move rest of NodeControl stuff out of node/ and into control/
2014-09-15 16:32:55 -07:00
Adam Ierymenko
1d37204a37
Refactoring in progress... pardon our dust...
2014-09-12 16:57:37 -07:00
Adam Ierymenko
4e9280fc7a
Rip out dead "firewall opener" code, replace in pipeline with anti-symmetric-NAT tactics.
2014-09-05 16:23:24 -07:00
Adam Ierymenko
dcea212e40
Add noupdate flag in root topologies, add ability for mktopology to read from a template.
2014-09-03 11:56:36 -07:00
Adam Ierymenko
721625d512
Add MAC to listnetworks, and some other make stuff.
2014-08-19 14:11:02 -07:00
Adam Ierymenko
715afc0314
Default to built-in root topology if signature check fails (instead of exiting)
2014-08-16 14:01:25 -07:00
Adam Ierymenko
4f0fcc582e
Refactor HttpClient a bit.
2014-08-16 09:08:52 -07:00
Adam Ierymenko
aa59cfd545
Web request part of supernode resync (not quite done, needs test)
2014-08-15 23:37:35 -04:00
Adam Ierymenko
c2187c8759
(1) distribute default root-topology in new dictionary format, (2) bump peer serialization version to force obsolescence of old supernodes, (3) stop outputting a log message every time we poll for software updates
2014-08-14 19:52:22 -04:00
Adam Ierymenko
8a804b5257
(1) Disable firewall openers (its easy to re-enable), (2) Do some prep work for making supernode topology hot-updatable.
2014-08-05 14:05:50 -07:00
Adam Ierymenko
b80c229d87
Tons of code cleanup, refactor Network to use EthernetTapFactory, probably also fix GitHub issue #90
2014-07-31 14:09:32 -07:00
Adam Ierymenko
f15271f31f
Get rid of pointer type punning warning/issue on g++.
2014-06-17 15:54:35 -04:00