Daniel Skowroński
546e8a3b44
initial netbsd support in makefile/flags
2016-12-25 20:59:12 +01:00
Adam Ierymenko
c8554504f3
.
2016-12-22 18:37:46 -08:00
Adam Ierymenko
6b12d86209
Add a workaround for an edge case in TEE/REDIRECT if we are the inbound destination and teeing is only being done on the outbound side.
2016-12-22 18:06:35 -08:00
Adam Ierymenko
fe530548bb
Fix MATCH_RANDOM in controller.
2016-12-22 16:57:45 -08:00
Adam Ierymenko
2eaff6d484
Fix to characteristcs in rules engine.
2016-12-22 16:36:38 -08:00
Adam Ierymenko
244f37179c
Minor security: lock roots to only be reachable via World IPs.
2016-12-05 16:09:42 -08:00
Adam Ierymenko
fa2bb91ae5
Kill some old debug code.
2016-11-30 10:48:09 -08:00
Adam Ierymenko
84732fcb12
Wire through external path lookup. Static paths should now work.
2016-11-22 14:23:13 -08:00
Adam Ierymenko
42ba70e79e
Replace long callback arg list with struct, and implement path whitelisting, path blacklisting, and local.conf support for roles.
2016-11-22 10:54:58 -08:00
Adam Ierymenko
cbaef66e82
Fix a deadlock in federation/upstream code.
2016-11-21 16:04:01 -08:00
Adam Ierymenko
97d915b06c
Expose relay policy in node settings.
2016-11-21 15:35:18 -08:00
Adam Ierymenko
ccdd4ffda7
Move split() to OSUtils since it is not used in core.
2016-11-18 15:49:28 -08:00
Adam Ierymenko
673c0c811e
Wire through upstream stuff and add setRole().
2016-11-18 13:48:49 -08:00
Adam Ierymenko
6e1da35c12
Remove debug.
2016-11-18 13:15:58 -08:00
Adam Ierymenko
25f9c294dc
Small bug fix and warning removal.
2016-11-18 13:01:45 -08:00
Adam Ierymenko
2ea9f516e1
Rate gate expensive validation of new identities in HELLO.
2016-11-18 12:59:04 -08:00
Adam Ierymenko
ab4021dd0e
Do packet MAC check before locallyValidate(), and add timing measurement in selftest.
2016-11-18 11:09:19 -08:00
Adam Ierymenko
1fcbb1fbed
Proactively auto-load designated upstreams.
2016-11-18 10:39:26 -08:00
Adam Ierymenko
39333c9e8e
Modify unite() to deal with a second layer of upstreams.
2016-11-17 16:59:04 -08:00
Adam Ierymenko
1615ef1114
Rename getBestRoot() etc.
2016-11-17 16:31:58 -08:00
Adam Ierymenko
bf8d71e82c
Add notion of upstream that is separate from root in Topology, etc.
2016-11-17 16:20:41 -08:00
Adam Ierymenko
12d32b9311
Small fix to send pushes if not a reply.
2016-11-10 11:57:45 -08:00
Adam Ierymenko
226123ca08
Refactor controller to permit sending of pushes as well as just replies to config requests.
2016-11-10 11:54:47 -08:00
Adam Ierymenko
5ebf5077f5
Log last meta-data in controller, and ease up just a bit on keepalives.
2016-11-09 17:11:10 -08:00
Adam Ierymenko
c61ca1dea2
Keep connections up for netconf stuff as well as frames.
2016-11-09 16:04:08 -08:00
Grant Limberg
8ffae313fd
add new files & remove old ones from VS project. Now builds & runs on Windows again
2016-11-03 12:10:50 -07:00
Adam Ierymenko
27d997a2e5
.
2016-10-13 15:17:17 -07:00
Adam Ierymenko
6469aa9df9
typo
2016-10-13 14:28:39 -07:00
Adam Ierymenko
ce6b5bc6f5
.
2016-10-13 14:21:24 -07:00
Adam Ierymenko
4f3775bb86
Fix ICMP match.
2016-10-13 14:21:00 -07:00
Adam Ierymenko
8850a8610a
Fix filter trace.
2016-10-13 13:59:17 -07:00
Adam Ierymenko
2d6a4e5974
cleanup
2016-10-13 13:52:45 -07:00
Adam Ierymenko
93b4ac5cb2
Remove unused POW code, will revisit later.
2016-10-13 13:17:30 -07:00
Adam Ierymenko
3f4c166861
Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev
2016-10-11 12:00:38 -07:00
Adam Ierymenko
e53f63ca87
Broke down and added an OR to the rules engine. It is now possible to have a series of MATCHes that are ORed.
2016-10-11 12:00:16 -07:00
Grant Limberg
6a50291aa2
Fix the case for InetAddress::containsAddress for IPv6 route of ::
2016-10-07 14:29:06 -07:00
Adam Ierymenko
45c4ccb153
Add a tags both equal match.
2016-10-05 16:38:42 -07:00
Adam Ierymenko
adeb7e7da0
Make capability flags match more user-friendly and appropriate since "match any flag" is generally what we want.
2016-10-05 12:54:46 -07:00
Adam Ierymenko
d5f4d381d0
Go ahead and loop back packets whose destination is self. Some OSes require this since they aactually follow the full network path even for local IPs.
2016-10-05 10:12:06 -07:00
Adam Ierymenko
988049f39b
Add new rule to rules engine: random match.
2016-09-30 14:07:00 -07:00
Adam Ierymenko
9eaa3756f8
Fix deadlock-causing regression in Network.
2016-09-30 12:22:54 -07:00
Adam Ierymenko
4fe9a4fe83
Fix memory leak.
2016-09-28 16:13:59 -07:00
Adam Ierymenko
01129d02b3
hashCode() for InetAddress
2016-09-28 13:45:25 -07:00
Adam Ierymenko
e1fbf7b34c
Check multicast limit on send after NDP emulation code.
2016-09-28 12:21:08 -07:00
Adam Ierymenko
7e90ab3534
TRACE verbosity increase on exceptions in NETWORK_CREDENTIALS.
2016-09-28 11:06:44 -07:00
Adam Ierymenko
5ee1ccd659
Send need credential error on more cases.
2016-09-27 16:41:08 -07:00
Adam Ierymenko
0b44919ba2
Clusters can send multiple OKs so we must allow this.
2016-09-27 16:33:37 -07:00
Adam Ierymenko
9f550292fe
Simply network auth logic and always sent error on auth failure even for unknown networks to prevent forensics.
2016-09-27 13:49:43 -07:00
Adam Ierymenko
5ba7ca91c0
TRACE build fix.
2016-09-27 12:44:44 -07:00
Adam Ierymenko
cc4bacc199
Cleanup, and implement compression disable flag for networks.
2016-09-27 12:22:25 -07:00
Adam Ierymenko
15c07c58b6
Refactored network config chunking to sign every chunk to prevent stupid DOS attack potential, and implement network config fast propagate (though we probably will not use this for a bit).
2016-09-27 11:33:48 -07:00
Adam Ierymenko
7e4b6b594b
It now builds.
2016-09-26 17:05:39 -07:00
Adam Ierymenko
eac3667ec1
Bunch more refactoring and work on revocations, etc.
2016-09-26 16:17:02 -07:00
Adam Ierymenko
1f74dd4589
Revocation work in progress, add WATCH which is TEE with implicit rate sync (thanks JG@DCVC!), and clean up some cruft in Network.
2016-09-23 16:08:38 -07:00
Adam Ierymenko
d3524f3609
Refactor COM stuff a bit, and respond to COM requests a bit more readily for rapid setup. Will need to revisit later.
2016-09-20 21:21:34 -07:00
Adam Ierymenko
68e549233d
Revise bearer token code in controller, and add relay policy as a meta-data item presented to controller by nodes (to facilitate future meshiness).
2016-09-15 13:17:37 -07:00
Adam Ierymenko
740b34124f
Naming...
2016-09-14 17:35:50 -07:00
Adam Ierymenko
15402933bc
Add physical MTU recommendation hint to network config via API.
2016-09-14 16:55:25 -07:00
Adam Ierymenko
83abc00aae
docs
2016-09-13 14:58:59 -07:00
Adam Ierymenko
5b6d27e659
Implement relay policy, and setting multicast limit to 0 now disables multicast on the network as would be expected.
2016-09-13 14:27:18 -07:00
Adam Ierymenko
8ef0e4bbaf
Get rid of HELLO rate gate on path since its basically worthless. There are 65535 ports per IP.
2016-09-13 10:46:36 -07:00
Adam Ierymenko
0da9a9a3e0
Set trustEstablished in a few more places.
2016-09-13 10:33:03 -07:00
Adam Ierymenko
cba37c6107
Add a few more rate limit gates for anti-DOS hardening.
2016-09-13 10:13:23 -07:00
Adam Ierymenko
ea1da3321a
Rate gate requests for COM.
2016-09-12 15:19:21 -07:00
Adam Ierymenko
debc4c45ee
Set trust established flag in MULTICAST_GATHER.
2016-09-09 11:45:34 -07:00
Adam Ierymenko
ab9afbc749
(1) Public networks now get COMs even though they do not gate with them since they will need them to push auth for multicast stuff, (2) added a bunch of rate limit circuit breakers for anti-DOS, (3) cleanup.
2016-09-09 11:36:10 -07:00
Adam Ierymenko
ef87069957
Fix gating of multicast GATHER replies since these can come from upstream, etc., and fix an issue with sending ECHO to recheck marginal paths.
2016-09-09 09:32:00 -07:00
Adam Ierymenko
0d4109a9f1
More refactoring to clean up code, and add a gate function to make sure we do not handle OK packets we did not expect. This hardens up a few potential edge cases around security, since such messages might be used to e.g. pollute a cache and DOS under certain conditions.
2016-09-09 08:43:58 -07:00
Adam Ierymenko
16df2c3363
Clean up handling of COMs, network access control, and fix a backward compatiblity issue.
2016-09-08 19:48:05 -07:00
Adam Ierymenko
1f6b13b7fd
Fix bug causing null addresses to get in memberships[] hash.
2016-09-08 16:09:56 -07:00
Adam Ierymenko
daf8a66ced
More correct and efficient to initialize member relationship push stuff lazily when member is learned.
2016-09-07 15:47:20 -07:00
Adam Ierymenko
20278bb9e4
Also send MULTICAST_LIKEs to controllers.
2016-09-07 15:34:34 -07:00
Adam Ierymenko
c7a4da3dd3
Turns out we do not need to pass network to receive().
2016-09-07 15:24:53 -07:00
Adam Ierymenko
1908aa55f5
Refactor MULTICAST_LIKE pushing to eliminate redundant and unnecessary pushes and simplify code.
2016-09-07 15:15:52 -07:00
Adam Ierymenko
1c08f5e857
Tweak some expire times.
2016-09-07 12:25:19 -07:00
Adam Ierymenko
c9ee8612e4
Credential TTL (tags/capabilities) should be credential time max delta, since we could get pushed one that is newer.
2016-09-07 12:12:52 -07:00
Adam Ierymenko
a7d988745b
Use ECHO instead of HELLO where possible.
2016-09-07 12:01:03 -07:00
Adam Ierymenko
ff9f8b1c2b
Typo fix.
2016-09-07 11:15:36 -07:00
Adam Ierymenko
b5c86b6ba4
Bunch more path refactoring. Peers no longer forget paths, but do not normally use expired paths. Expired paths might still be tried if nothing else is reachable.
2016-09-07 11:13:17 -07:00
Adam Ierymenko
f2d2df2b11
Cluster build fix.
2016-09-06 15:06:07 -07:00
Adam Ierymenko
48a374c82c
(1) fix crazy bug introduced in doRENDEZVOUS(), (2) reclaim Paths after paths[] condense, (3) fix an edge case around symmetric NAT and external IP change detection.
2016-09-06 14:05:58 -07:00
Adam Ierymenko
8a2e8bd585
Rework how paths are set as remote cluster preferred. The code is now clearer and cluster preference indications are now very sticky as they should be.
2016-09-06 12:45:28 -07:00
Adam Ierymenko
43780742b0
comments, docs
2016-09-06 11:10:04 -07:00
Adam Ierymenko
d7f2287ce9
More tweaks to path behavior.
2016-09-05 15:47:22 -07:00
Adam Ierymenko
eebcf08084
Tweaks to new Path code for dual-stack operation, and other fixes.
2016-09-03 15:39:05 -07:00
Adam Ierymenko
01aa469591
Remove debug line.
2016-09-02 14:26:04 -07:00
Adam Ierymenko
4992ac2d9f
Cluster sub-optimal is in fact necessary...
2016-09-02 14:20:55 -07:00
Adam Ierymenko
412979ba8f
Attempt to reactivate dead paths.
2016-09-02 13:55:33 -07:00
Adam Ierymenko
4f8253dcdb
Tweaks to path handling...
2016-09-02 13:33:56 -07:00
Adam Ierymenko
4931e44998
Implement "weak pointer" behavior on Topology Path canonicalization hash table.
2016-09-02 12:34:02 -07:00
Adam Ierymenko
d1101441b3
Tweak some timings.
2016-09-02 11:54:59 -07:00
Adam Ierymenko
e8f6b4b5d3
Rest of big Path canonicalization refactor.
2016-09-02 11:51:33 -07:00
Adam Ierymenko
a3bdae9735
Work in progress: Path canonicalization refactor.
2016-09-01 15:43:07 -07:00
Adam Ierymenko
d5e6f59004
.
2016-09-01 13:45:32 -07:00
Adam Ierymenko
22271f2a49
Cleanup.
2016-09-01 13:36:41 -07:00
Adam Ierymenko
8b6d23b9f6
Optimize filter code a bit, and add a network-level setting for what should happen if an unsupported or unknown MATCH is encountered in a rules table.
2016-09-01 12:07:17 -07:00
Adam Ierymenko
25056de5d3
Also need to send credentials when TEEing and REDIRECTing.
2016-08-31 17:56:59 -07:00
Adam Ierymenko
994b25af4e
Simplify some logic.
2016-08-31 17:45:55 -07:00
Adam Ierymenko
74afef8eb1
Think through and refine a few things in rules, especially edge case TEE and REDIRECT behavior and semantics.
2016-08-31 16:50:22 -07:00
Adam Ierymenko
54489a7f61
rename SAMENESS to DIFFERENCE which is less confusing
2016-08-31 14:14:58 -07:00
Adam Ierymenko
8e3004591b
Add overlooked MATCH_ICMP to rule set.
2016-08-31 14:01:15 -07:00
Adam Ierymenko
2ff2a8fd9a
Cluster build fixes and warning elimination.
2016-08-31 09:38:21 -07:00
Adam Ierymenko
cb63babac4
Debug output fixes.
2016-08-29 16:38:10 -07:00
Adam Ierymenko
ac1c127b68
Debug output fixes.
2016-08-29 16:24:08 -07:00
Adam Ierymenko
cb82193333
Debug output fixes.
2016-08-29 16:19:26 -07:00
Adam Ierymenko
f0636ffd4a
EXT_FRAME messages should always be accepted if we are the destination for a matching TEE or REDIRECT rule.
2016-08-29 15:54:06 -07:00
Adam Ierymenko
51a420671f
Make rules engine debug a bit more verbose.
2016-08-29 15:17:34 -07:00
Adam Ierymenko
7223685b96
.
2016-08-26 15:30:20 -07:00
Adam Ierymenko
e7dff1c785
Change logic a little for self-as-destination in TEE and REDIRECT.
2016-08-26 15:28:31 -07:00
Adam Ierymenko
a5383d83d8
Do not TEE or REDIRECT to self.
2016-08-26 15:25:00 -07:00
Adam Ierymenko
a3c7627acf
Push more than one packet for credentials if we happen to have a whole lot. Should not happen often but might if a member has tons of tags.
2016-08-26 14:43:16 -07:00
Adam Ierymenko
6bd5aba4fa
fix frame size range bug
2016-08-26 13:26:26 -07:00
Adam Ierymenko
fb5217761b
Add missing names in filter debug code.
2016-08-26 13:20:55 -07:00
Adam Ierymenko
90f3e94565
Always output trace info when debugging rules.
2016-08-26 12:21:44 -07:00
Adam Ierymenko
ded5a53a6c
Documentation updates, add rules engine revision to network config request meta-data.
2016-08-26 10:38:43 -07:00
Adam Ierymenko
d637988ccf
Fix chicken or egg problem in tags, and better filter debug instrumentation.
2016-08-25 18:21:20 -07:00
Adam Ierymenko
b5e0d014ab
Controller bug fixes
2016-08-25 16:08:40 -07:00
Adam Ierymenko
5eaf397a94
Add a debug log feature in the filter, which only works if enabled in Network.cpp.
2016-08-25 13:31:23 -07:00
Adam Ierymenko
584228b2b5
Dead code removal, and get rid of reliable() because we will no longer make that distinction.
2016-08-24 17:56:35 -07:00
Adam Ierymenko
cd3683f2ba
Fix a missing receive().
2016-08-24 17:50:51 -07:00
Adam Ierymenko
347ebcd899
Set trust flag in network controllers if remote query is accepted to allow NATed network controllers to better traverse.
2016-08-24 17:48:13 -07:00
Adam Ierymenko
e52c2c41ec
Add a circuit breaker to prevent too many credentials from being stored per member.
2016-08-24 17:24:35 -07:00
Adam Ierymenko
c476285bd6
Harden PUSH_DIRECT_PATHS and simplify things by only doing it on receive when hops>0 and trust has been established.
2016-08-24 16:16:39 -07:00
Adam Ierymenko
63e8ad4cc3
TRACE stuff.
2016-08-24 15:45:37 -07:00
Adam Ierymenko
2cdda38dc4
It basically works... at least on current controllers.
2016-08-24 15:26:18 -07:00
Adam Ierymenko
ccea3d04d6
Push NETWORK_CONFIG_REFRESH on POSTs to /member/... in controller.
2016-08-24 14:28:16 -07:00
Adam Ierymenko
8e3463d47a
Add length limit to TEE and REDIRECT, and completely factor out old C json-parser to eliminate a dependency.
2016-08-24 13:37:57 -07:00
Adam Ierymenko
0ee4d3554a
Stub out USER_MESSAGE.
2016-08-23 14:38:20 -07:00
Adam Ierymenko
0a7a33ef8f
Instantaneous blacklisting and credential revocation.
2016-08-23 13:46:36 -07:00
Adam Ierymenko
32fa061700
Compute credential TTL et al.
2016-08-23 13:02:59 -07:00
Adam Ierymenko
7036831203
Sign Dictionary in doNETWORK_CONFIG_REQUEST.
2016-08-23 11:57:56 -07:00
Adam Ierymenko
68b4ca9b31
Cleanup.
2016-08-23 11:52:10 -07:00
Adam Ierymenko
0dfc08b317
Tidy up a few minor protocol things, improve documentation in Packet.hpp.
2016-08-23 11:29:02 -07:00
Adam Ierymenko
77f7dcf40a
Obsolete "test network" removal.
2016-08-23 09:39:38 -07:00
Adam Ierymenko
9a3c652a51
Get rid of expiration in Capability and Tag and move this to NetworkConfig so it can be set network-wide and reset if needed. Also add NetworkConfig field for this and centralize checking of credential time validity.
2016-08-22 18:06:46 -07:00
Adam Ierymenko
b0d888d235
Signing of Capability and Tag objects.
2016-08-22 14:25:59 -07:00
Adam Ierymenko
faa9a06bf5
Controller fixes...
2016-08-17 17:37:37 -07:00
Adam Ierymenko
b72847d504
Finally implement network join auth tokens, at least at the protocol level.
2016-08-17 13:41:45 -07:00
Adam Ierymenko
b08ca49580
More controller work -- it builds!
2016-08-16 14:05:17 -07:00
Adam Ierymenko
bd15262e54
Bunch of rule JSON stuff.
2016-08-15 18:49:50 -07:00
Adam Ierymenko
7d906df805
Better instrumentation for filter, and filter bug fixes.
2016-08-10 14:27:52 -07:00
Adam Ierymenko
d166b494ee
Rule parse fix.
2016-08-10 13:41:22 -07:00
Adam Ierymenko
81959f14af
Refactor and redesign symmetric NAT predictor. This is cleaner.
2016-08-10 10:28:54 -07:00
Adam Ierymenko
c9d7845fea
Minor bug fix and some instrumentation stuff for testing.
2016-08-09 17:00:01 -07:00
Adam Ierymenko
0b0cda2be4
ZT_TRACE fix.
2016-08-09 15:55:41 -07:00
Adam Ierymenko
e1310a764a
More cleanup and removal of cruft due to obsolete network-specific relays (will be replaced with federation stuff).
2016-08-09 15:45:26 -07:00
Adam Ierymenko
dbf3e6c3c9
Dead code removal.
2016-08-09 15:01:46 -07:00
Adam Ierymenko
dee7f75f7e
Minor cleanup.
2016-08-09 14:46:11 -07:00
Adam Ierymenko
774c7e0ea5
Put CONFIG_REFRESH back.
2016-08-09 13:52:08 -07:00
Adam Ierymenko
4d498b3765
Handling of multi-part chunked network configs on the inbound side.
2016-08-09 13:14:38 -07:00
Adam Ierymenko
bcd05fbdfa
Chunking of network config replies.
2016-08-09 09:34:13 -07:00
Adam Ierymenko
2ba9343607
Encode and decode of tags and capabilities in NetworkConfig.
2016-08-09 08:32:42 -07:00
Adam Ierymenko
51cf49a24f
cleanup
2016-08-08 17:40:22 -07:00
Adam Ierymenko
00fd9c3a15
It builds... almost ready to test some rules engine stuff.
2016-08-08 17:33:26 -07:00
Adam Ierymenko
8007ca56aa
Refactor and tie-up of capabilities and tags and packet evaluation points. Some optimization is possible here but it is minor and we will make it work first.
2016-08-08 16:50:00 -07:00
Adam Ierymenko
4d7f625aa1
.
2016-08-05 15:55:38 -07:00
Adam Ierymenko
e2f783ebbd
.
2016-08-05 15:02:01 -07:00
Adam Ierymenko
4d9b74b171
.
2016-08-04 15:27:20 -07:00
Adam Ierymenko
37d139177d
Integrate Filter into OutboundMulticast properly.
2016-08-04 13:01:14 -07:00
Adam Ierymenko
8a7753cfe3
Filter cleanup, prep for filter integration in a few places.
2016-08-04 12:35:25 -07:00
Adam Ierymenko
331382cf2f
More cleanup and a tiny federation prep item.
2016-08-04 12:14:13 -07:00
Adam Ierymenko
98152d974a
More cleanup and removal of DeferredPackets, will do the latter in a more elegant way.
2016-08-04 11:40:38 -07:00
Adam Ierymenko
56febbf2ba
.
2016-08-04 10:39:28 -07:00
Adam Ierymenko
5cf410490e
.
2016-08-04 10:18:33 -07:00
Adam Ierymenko
404a0bbddd
...
2016-08-04 09:51:15 -07:00
Adam Ierymenko
f057bb63cd
More work on tags and capabilities.
2016-08-04 09:02:35 -07:00
Adam Ierymenko
7e6e56e2bc
Bunch of work on pushing and replication of tags and capabilities, and protocol cleanup.
2016-08-03 18:04:08 -07:00
Adam Ierymenko
67cb03742e
Add tag rules and split out rule serialize/deserialize so the code can be reused.
2016-08-03 14:12:38 -07:00
Adam Ierymenko
91940cbcf5
Kill network preferred relays -- this feature is gone (and was seldom used anyway) in favor of federation.
2016-08-02 14:40:26 -07:00
Adam Ierymenko
ecc1324bb0
Rules engine work: capability based security model with tags and capabilities, and some cleanup across other places.
2016-08-02 13:36:17 -07:00
Adam Ierymenko
d3b0081447
Cleanup...
2016-07-28 12:09:58 -07:00
Adam Ierymenko
22e44c762b
More rules engine work: key/value pair matching for microsegmentation.
2016-07-28 10:58:10 -07:00
Adam Ierymenko
4929be08f7
Cleanup and stub out new object transfer messages.
2016-07-26 12:33:51 -07:00
Adam Ierymenko
088bbd1c08
Filter fixes.
2016-07-25 17:03:26 -07:00
Adam Ierymenko
7404eb46c4
Integration of Filter into inbound and outbound packet path.
2016-07-25 16:51:10 -07:00
Adam Ierymenko
eaf6d6c938
Basic L2/L3 filter for rules engine (not integrated yet) and some cleanup.
2016-07-25 15:52:16 -07:00
Adam Ierymenko
faf864b8a2
Merge branch 'master' into dev
2016-07-21 19:07:50 -07:00
Adam Ierymenko
f21af60a13
Init trusted path count to zero. Meh.
2016-07-21 19:06:18 -07:00
Adam Ierymenko
10564d8e14
Init trusted path count to zero. Meh.
2016-07-21 19:05:14 -07:00
Moritz Warning
b3073f44a2
move sourceAddress out of scope
...
sourceAddress is used in the catch block
2016-07-21 23:03:04 +02:00
Adam Ierymenko
6320879fe1
Fix for GitHub issue #358 and bump version to 1.1.13 (dev)
2016-07-18 10:56:33 -07:00
Adam Ierymenko
9785fde32a
Trusted paths work!
2016-07-12 11:40:45 -07:00
Adam Ierymenko
9657675755
Plumbing through trusted path stuff to OneService.
2016-07-12 11:30:22 -07:00
Adam Ierymenko
765082fdb6
Trusted path support, and version bump to 1.1.9
2016-07-12 08:29:50 -07:00
Adam Ierymenko
6d8de214eb
Docs and controller API version
2016-07-08 13:10:02 -07:00
Adam Ierymenko
901e2fd692
Fix silly one-liner bug... retag time.
2016-06-29 18:12:35 -07:00
Adam Ierymenko
19735e7050
Revert backgrounding of controller requests hack. Controller code is not really parallel anyway and we fixed the perf problem.
2016-06-29 11:43:22 -07:00
Adam Ierymenko
b4fcf2ee60
Fix a valgrind warning.
2016-06-29 11:11:16 -07:00
Adam Ierymenko
7b7ab823b0
Fix getPeer(self) bug if I am the controller.
2016-06-28 22:49:01 +00:00
Adam Ierymenko
45f315e603
Defer NETWORK_CONFIG_REQUEST packets and allow multithreaded processing.
2016-06-27 17:09:04 -07:00
Adam Ierymenko
ee649ae69a
Add 6plane assignment support to network controller, and cleanup.
2016-06-24 06:40:50 -07:00
Adam Ierymenko
20d155e630
.
2016-06-24 05:21:25 -07:00
Adam Ierymenko
be5996daca
Cleanup of 6plane stuff.
2016-06-24 04:54:05 -07:00
Adam Ierymenko
38dfebad8c
IPv6 NDP emulation flag in NetworkConfig, and implement Docker-friendly
...
(and other host friendly) IPv6 /80 magic subnetting to allow massive
multicast-free NDP emulated IPv6 networks where each host can have a
/48 worth of IPv6 IPs for internal containers, VMs, etc.
Alan Kay, thou art avenged.
https://ivanovivan.wordpress.com/2010/09/13/alan-kay-quotes/
2016-06-23 22:41:14 -07:00
Adam Ierymenko
674b84d908
Plumbing for network setting control, and GitHub issue #330
2016-06-21 14:58:30 -07:00
Adam Ierymenko
330c80f3f5
Add rule type to match a COM field of the peer by ID and value because this will be powerful.
2016-06-21 08:09:20 -07:00
Adam Ierymenko
eee59ec9ce
Fix Buffer<> version of Dictionary.get().
2016-06-21 08:00:40 -07:00
Adam Ierymenko
0959d33ba0
Add a few technically unnecessary but feel-good paranoia bounds checks in Dictionary.get().
2016-06-21 07:59:42 -07:00
Adam Ierymenko
0c05b2cb50
Comment cleanup and fuzzing improvements.
2016-06-21 07:49:46 -07:00
Adam Ierymenko
b2d048aa0e
Make Dictionary templatable so it can be used where we want a higher capacity.
2016-06-21 07:32:58 -07:00
Adam Ierymenko
1bf1c38b30
Default route population works on Mac!
2016-06-16 18:23:33 -07:00
Adam Ierymenko
37afa876a7
Linux bug fixes, small controller fix.
2016-06-17 00:21:58 +00:00
Adam Ierymenko
601c51b351
Bug fix.
2016-06-16 23:18:20 +00:00
Adam Ierymenko
901b75e756
New format now integrated, and it works.
2016-06-16 15:48:58 -07:00
Adam Ierymenko
490d20e8fb
Self test for dictionary, and fixes.
2016-06-16 14:45:36 -07:00
Adam Ierymenko
2113c21fdc
devicemap now works again in OSXEthernetTap
2016-06-16 14:09:09 -07:00
Adam Ierymenko
e09c1a1c11
Big refactor mostly builds. We now have a uniform backward compatible netconf.
2016-06-16 12:28:43 -07:00
Adam Ierymenko
b104bb4762
New super-packed dictionary -- we are going back to a backward compatibile format with the old netconf but in an embedded-friendly way. This is simpler.
2016-06-15 18:47:35 -07:00
Adam Ierymenko
3c655a4b84
Default route ready to test on Mac.
2016-06-15 15:46:57 -07:00
Adam Ierymenko
b90e66f7c7
ManagedRoute, which applies C++ RAII to injected routes. Move RoutingTable to attic.
2016-06-15 15:02:40 -07:00
Adam Ierymenko
4446dbde5e
Big refactor in service code to prep for plumbing through route management.
2016-06-14 10:09:26 -07:00
Adam Ierymenko
82635ce606
Add flags and metric to ZT-managed routes.
2016-06-09 09:43:09 -07:00
Adam Ierymenko
6c6b18d003
Fix include for system lz4.
2016-06-08 12:50:56 -07:00
Adam Ierymenko
9161eebc68
Carry virtual network routes through to API.
2016-06-07 12:15:19 -07:00
Adam Ierymenko
523ea68ae2
Increment protocol version to indicate support for binary network config and config request meta-data.
2016-06-07 11:08:36 -07:00
Adam Ierymenko
ca88e1f1cf
fix size
2016-06-07 10:47:22 -07:00
Adam Ierymenko
be37d025b8
Make flags 64-bit in both network request and config.
2016-06-07 10:46:29 -07:00
Adam Ierymenko
2c995f1f91
IPv6 links are unfortunately not "reliable." Many IPv6 gateways, while not
...
implementing NAT, do implement stateful firewalling with absurdly short
timeouts (<60s). Keepalives are still required in IPv6.
Network engineers continue to mindlessly carry forward cruft and baggage
from IPv4 to IPv6.
2016-05-31 10:30:00 -07:00
Adam Ierymenko
0bcc7d46a3
Disable debug code.
2016-05-16 18:39:34 -07:00
Adam Ierymenko
93b673043c
Fix new binary meta-data deserialization and add some debug code (will disable later).
2016-05-16 18:37:37 -07:00
Grant Limberg
de1b745988
comment out a few TRACE messages that don't compile
2016-05-14 13:29:31 -07:00
Grant Limberg
efdbd6326f
compiling with C++11 requires a space between string literals
2016-05-14 13:25:40 -07:00
Adam Ierymenko
548730660b
Ready to test whole new netconf refactor.
2016-05-11 10:19:14 -07:00
Adam Ierymenko
7ee3743c3d
Refactor controller to send both old and new format netconf.
2016-05-11 08:49:15 -07:00
Adam Ierymenko
8b9519f0af
Simplify a bunch of NetworkConfig stuff by eliminating accessors, also makes network controller easier to refactor.
2016-05-06 16:13:11 -07:00
Adam Ierymenko
529515d1d1
Changes to how new-style binary network configs are detected, and a new-style binary serialized meta-data representation.
2016-05-06 13:29:10 -07:00
Adam Ierymenko
7913fa7bbd
Dead code removal.
2016-05-06 11:13:34 -07:00
Adam Ierymenko
b543868351
Missing deserialize stuff.
2016-05-06 11:00:19 -07:00
Adam Ierymenko
0f17077b3d
Merge gateways and routes in netconf since they are the same thing.
2016-05-06 10:57:53 -07:00
Adam Ierymenko
9da8bf37d7
docs
2016-04-28 21:31:10 +02:00
Adam Ierymenko
726136beda
Ifdef fix.
2016-04-27 09:30:34 +02:00
Adam Ierymenko
59eb09d063
Deserialize new style netconf.
2016-04-26 17:20:31 -07:00
Adam Ierymenko
b9dba97fdb
Bunch more refactoring for an even more compact NetworkConfig representation, especially rules.
2016-04-26 17:11:25 -07:00
Adam Ierymenko
25a5275921
.
2016-04-26 08:53:49 -07:00
Adam Ierymenko
e731fc1a3a
Replace two bools in NetworkConfig with a flags field.
2016-04-26 08:40:26 -07:00
Adam Ierymenko
90e1262a8b
More refactoring to remove old Dictionary dependencies.
2016-04-26 08:20:03 -07:00
Adam Ierymenko
d736074301
Refactor rules table in-memory structure in new NetworkConfig to permit far more rules with better space efficiency.
2016-04-22 15:40:53 -07:00
Adam Ierymenko
368efaa2ba
Kill some old debug code.
2016-04-19 12:55:48 -07:00
Adam Ierymenko
2f18a92e20
Cleanup in numerous places, reduce network chattiness around MULTICAST_LIKE, and fix a "how was that working" latent bug causing some control traffic to take the scenic route.
2016-04-19 12:09:35 -07:00
Adam Ierymenko
4c455876f9
Revise peer path weighting to always prioritize cluster-optimal paths.
2016-04-19 09:22:51 -07:00
Adam Ierymenko
cecfa99b7b
(1) cluster members send a flag indicating that a PUSH_DIRECT_PATHS is a cluster redirect, (2) 1.1.5 uses this to avoid a bug (this bug does not exist in 1.1.4)
2016-04-18 16:44:23 -07:00
Adam Ierymenko
e28838805f
Brace fix...
2016-04-12 13:17:16 -07:00
Adam Ierymenko
8a9762331f
Fix one more old NetworkConfig bit of code.
2016-04-12 12:54:14 -07:00
Adam Ierymenko
31db6f8f36
NetworkConfig refactor almost done.
2016-04-12 12:49:46 -07:00
Adam Ierymenko
ad1e83d8b9
Refactor IncomingPacket for new NetworkConfig
2016-04-12 12:32:33 -07:00
Adam Ierymenko
bbd9915056
Refactor Node for new NetworkConfig
2016-04-12 12:26:10 -07:00
Adam Ierymenko
51fecc0be9
Refactor Network for new NetworkConfig.
2016-04-12 12:16:29 -07:00
Adam Ierymenko
6f854c8391
NetworkConfig refactor part 1
2016-04-12 12:11:34 -07:00
Adam Ierymenko
56096be8b6
Tweak new RX queue algorithm to "expire" old entries to prevent always needing to traverse the whole queue array.
2016-04-06 16:28:40 -07:00
Adam Ierymenko
8ef78e7e7d
Preserve add local interface address add order and send in that order since this is a priority.
2016-04-06 11:50:00 -07:00
Adam Ierymenko
4a109658ab
More refactoring and prep for explicit interface bindings (for default route support).
2016-04-05 11:59:46 -07:00
Adam Ierymenko
52d9612301
Reduce symmetric prediction fuzz just a bit.
2016-04-05 10:49:14 -07:00
Adam Ierymenko
d8b89b0c86
Fix Cluster to send from a designated endpoint address instead of wildcard.
2016-04-05 10:47:13 -07:00
Adam Ierymenko
3df60995e1
nit pick... might this matter?
2016-03-30 16:49:21 -07:00
Adam Ierymenko
1a5e7cb0cb
More tweaks to OS determination stuff.
2016-03-28 12:26:49 -07:00
Adam Ierymenko
8035afae87
Try to define ZT_NO_TYPE_PUNNING on iOS in case it wasn't.
2016-03-28 12:22:05 -07:00
Adam Ierymenko
284e5d83b5
Fix some broken TRACEs and a tiny reorder in a few ifs.
2016-03-28 12:15:24 -07:00
Adam Ierymenko
76f9b4c582
A few other little formatting things.
2016-03-18 15:06:45 -07:00
Adam Ierymenko
c589bc4c57
Indentation
2016-03-18 14:32:48 -07:00
Adam Ierymenko
d6a1868d0a
Refactor incoming packet (rxQueue/fragmentQueue) to eliminate variable length queues and merge queues. This is both faster and saves memory.
2016-03-18 14:16:07 -07:00
Adam Ierymenko
fe3a84a422
Fix problems with previous commit.
2016-03-03 14:15:09 -08:00
Adam Ierymenko
7b5c1696eb
Fix a CIRCUIT_TEST bug in forwarding of tests along hop paths on private networks. Unfortunately this means full circuit testing for private nets will need an upgrade. :(
2016-02-23 14:56:51 -08:00
Adam Ierymenko
c7c61b4ac0
Fix checking of path address validity.
2016-02-22 16:01:35 -08:00
Adam Ierymenko
43fff1a87e
Deprecate reporting of local clock in circuit tests since a small number of users might have security problems with this.
2016-02-22 12:59:26 -08:00
Adam Ierymenko
2aa7138373
Reduce direct ping delay back to 1m and make SelfAwareness aware of local received-on address to eliminate false symmetric classification.
2016-02-22 09:47:50 -08:00
Adam Ierymenko
772551c45d
Try +1 and +2 existing surfaces for symmetric NATs.
2016-02-11 10:39:39 -08:00
Adam Ierymenko
0c951b6e56
More tweaks to new symmetric NAT buster, and stop using old iterative method since this supersedes it.
2016-02-10 18:41:39 -08:00
Adam Ierymenko
eadafd8de7
Little fix to NAT-t alg
2016-02-10 17:51:42 -08:00
Adam Ierymenko
f9230eb970
Widen max delta for TS/revision just a bit more for now.
2016-02-10 16:18:45 -08:00
Adam Ierymenko
82348e1537
Temporarily blacklist he.net IPv6 tunnel addresses for paths: these usually have a very low MTU which causes packet loss and other issues.
2016-02-10 11:06:26 -08:00
Adam Ierymenko
10bb9919f1
Tweak certificate of membership revision/time tolerance to eliminate boundary packet loss issues occasionally seen in the wild.
2016-02-10 09:32:42 -08:00
Adam Ierymenko
4769dacf61
Tweak needsOurMembershipCertificate timing to resolve a possible source of occasional dropped packets.
2016-02-09 16:54:47 -08:00
Adam Ierymenko
63ec7e58d4
Make activity no longer a function of ping frequency, since this causes compatibility bugs when the latter was modified due to timer interactions with other versions.
2016-02-08 10:03:01 -08:00
Adam Ierymenko
a963810e02
Tweak a few cluster params for higher perf / lower initial setup latency.
2016-02-08 09:57:46 -08:00
Adam Ierymenko
7a63fdc447
Fix for GitHub issue #298 and hopefully #297
2016-02-01 14:41:54 -08:00
Adam Ierymenko
2e5caa335a
Old SF root is dead. Now we are just on Alice and Bob. (world update for 1.1.4)
2016-01-13 10:18:41 -08:00
Adam Ierymenko
4e4fd51117
boring doc stuff
2016-01-12 14:04:55 -08:00
Adam Ierymenko
3883ac08c7
Docs and cleanup.
2016-01-12 13:17:30 -08:00
Adam Ierymenko
740eb6ebc4
Simplify Peer locking to eliminate deadlock with new path recursion check code (and also probably improve performance).
2016-01-12 12:12:25 -08:00
Adam Ierymenko
d6f0f1a82a
Use network user ptr in lookup for Ethernet frame handling to eliminate map lookup.
2016-01-12 11:34:22 -08:00
Adam Ierymenko
83ef98a9dc
Add a network-associated user ptr in API.
2016-01-12 11:04:35 -08:00
Adam Ierymenko
704205c5f7
Dead code removal.
2016-01-12 09:33:14 -08:00
Adam Ierymenko
bbcc3304a0
Check shouldUsePathForZeroTierTraffic in legacy beacon responder.
2016-01-11 15:57:58 -08:00
Adam Ierymenko
b3e3d4cacc
Instead of using binary packet comparison, add a callback to the API to explicitly check whether paths should be used. Check in with this callback (if present) when learning new paths or sending initial packets.
2016-01-11 10:17:44 -08:00
Adam Ierymenko
1023ef23b7
Remove somewhat ugly and costly anti-recursion hack -- we will switch to more explicit methods.
2016-01-11 09:06:10 -08:00
Adam Ierymenko
a56fbc1929
Close another potential anti-recursion loophole.
2016-01-06 15:35:27 -08:00
Adam Ierymenko
47ce52228b
Roots should probably not do this since it would likely be a waste of packets.
2016-01-06 12:54:51 -08:00
Adam Ierymenko
9aee72099e
AntiRecursion cleanup and some other minor things.
2016-01-06 10:59:39 -08:00
Adam Ierymenko
05b2c0743f
Tighten up dead path detection. Should now auto-detect dead paths in less than 10 seconds at a very small cost in ECHO requests (or HELLOs for older peers). GitHib issue #272
2016-01-06 10:00:03 -08:00
Adam Ierymenko
4d94ae77b4
simplify if
2016-01-05 16:48:35 -08:00
Adam Ierymenko
d8143a5e18
Implement first pass on rapid dead path detection, and increment version to 1.1.3 (dev)
2016-01-05 16:41:54 -08:00
Adam Ierymenko
cba739fd6b
more dead code
2016-01-05 14:46:26 -08:00
Adam Ierymenko
fb5237d5b6
Outline dead path detection mechanism.
2016-01-05 14:42:56 -08:00
Adam Ierymenko
258f95b2cd
dead code removal
2016-01-05 14:19:16 -08:00
Adam Ierymenko
436c1fac1d
Selectively move over changes from "edge" to "dev" excluding netcon.
2015-12-21 16:15:39 -08:00
Adam Ierymenko
ceaef19fb7
Fix for GitHub issue #260 -- fix for (non-exploitable) crash in network preferred relay code
2015-11-30 17:20:12 -08:00
Janjaap Bos
e6808c69f8
Increase maximum number of paths per IP scope to 4
...
Otherwise, local discovered routes are ignored.
Don't know what the best value would be. Taking 4 for now.
2015-11-30 19:48:38 +01:00
Adam Ierymenko
ce5b7f0305
The World as of 2015-11-20
2015-11-20 12:49:23 -08:00
Adam Ierymenko
9169b6c999
Fix crash on exit in Windows (does not affect other OSes) and revert debugging tweak in Windows version that prevented service from starting after real install.
2015-11-17 09:56:19 -08:00
Adam Ierymenko
456bfea58d
Real World -- edge now talks to real net.
2015-11-16 19:27:36 -08:00
Grant Limberg
75f8ee1b9c
get the compiler to stop complaining about two string literals (one a macro) next to each other without an intervening space
2015-11-14 18:19:33 -08:00
Adam Ierymenko
0d9f33dc4f
Fix: (1) Windows stack overflow due to buffer too large in peer deserialize, (2) clean up some other stuff seen during debugging and reduce the sizes of some buffers due to Windows small stack size, (3) remove a redundant try/catch.
2015-11-13 12:14:28 -08:00
Adam Ierymenko
ccae473783
Eliminate Windows warnings.
2015-11-12 16:51:33 -08:00
Adam Ierymenko
54f68280bd
Minor Windows build fixes. Builds on VS2012 again.
2015-11-12 16:48:42 -08:00
Adam Ierymenko
8ac411a9e4
Stashing utun work for OSX -- abandoning for now since utun excludes mDNS among other issues.
2015-11-12 10:47:50 -08:00
Adam Ierymenko
0940d673db
Always advertise to the cluster when we have a peer even if we have also initiated handoff. This might be the cause of the warmup problem -- will test later. At the very least it should not hurt anything due to pick-latest logic and the fact that cluster members with only suboptimal paths do not respond to WANT_PEER.
2015-11-11 14:36:22 -08:00
Adam Ierymenko
b94335f115
Increase WHOIS retry delay slightly to allow for global cluster latency (e.g. 300+ms from New York to Johhannesburg)
2015-11-11 11:07:08 -08:00
Adam Ierymenko
451b8aa7b2
Query both root and network controller for multicast last resort GATHER.
2015-11-10 17:37:38 -08:00
Adam Ierymenko
2854f14966
Some cluster parameter tweaks, and change the test code in tests/http to dramatically reduce the amount of data transfer to/from the test master. Also add results of first successful 50k test.
2015-11-10 11:59:03 -08:00
Adam Ierymenko
4328c6c3bc
Fix delete oldest logic.
2015-11-10 09:46:14 -08:00
Adam Ierymenko
b171c9a0db
Replace slow std::list<> with an O(log(N)) data structure for the cluster relaying send queue.
2015-11-10 09:05:01 -08:00
Adam Ierymenko
32ec378e3b
Announce that we have peers on the cluster when we first see them to improve startup times, and add a result crunching script to tests/http.
2015-11-09 18:01:23 -08:00
Adam Ierymenko
2cc50bdb10
Try bringing back TTL escalation -- may help with Docker (IP-MASQ) type NAT
2015-11-09 15:44:13 -08:00
Adam Ierymenko
94f4316a0e
Fix for possible high CPU usage on multicast queries.
2015-11-09 14:54:05 -08:00
Adam Ierymenko
35c4e28f31
Mark geo-redirected paths as suboptimal and do not report that we have a peer if all we have is one of these. Also a few other small fixes.
2015-11-09 14:25:28 -08:00
Adam Ierymenko
47424df417
Fix (1) a deadlock bug and (2) a bug that prevented distributed rendezvous messages from being sent.
2015-11-09 13:39:06 -08:00
Adam Ierymenko
73e2c6e511
How did that ever work?
2015-11-09 12:24:49 -08:00
Adam Ierymenko
4ad2ff2f71
.
2015-11-09 11:08:52 -08:00
Adam Ierymenko
b57c855a8c
PROXY_SEND fix.
2015-11-09 10:25:20 -08:00
Adam Ierymenko
ed954c5ca2
.
2015-11-09 10:09:16 -08:00
Adam Ierymenko
21341ab15c
Ready to test.
2015-11-09 09:45:43 -08:00
Adam Ierymenko
f4d12603e0
Tweak how Switch passes off to Cluster on relay to fit new paradigm.
2015-11-09 09:19:03 -08:00
Adam Ierymenko
ff81415ffe
Build fixes...
2015-11-09 09:14:26 -08:00
Adam Ierymenko
57b71bfff0
Cluster simplification and refactor work in progress...
2015-11-08 13:57:02 -08:00
Adam Ierymenko
6bc8c9d8ef
Clustering cleanup, still a work in progress.
2015-11-06 16:12:41 -08:00
Adam Ierymenko
5f39d5b7ea
Further pare down Cluster messaging and rename some stuff.
2015-11-06 14:37:17 -08:00
Adam Ierymenko
9490b1f136
Try prioritizing cluster-send over direct send in cluster mode -- may improve cluster relaying reliability.
2015-11-06 13:38:56 -08:00
Adam Ierymenko
8ea5f424fd
Small amount of cleanup.
2015-11-06 11:15:06 -08:00
Adam Ierymenko
ba5008c370
Now make cluster announcements slightly more frequent.
2015-11-05 17:28:55 -08:00
Adam Ierymenko
3fa1b5a89d
Make cluster HAVE_PEER a little lighter by removing full identity. Technically this is not necessary and they will propagate over time in any case. Might restore it in some form in the future.
2015-11-05 17:22:22 -08:00
Adam Ierymenko
3e22fee842
Integrate deferred background processing into main OneService implementation.
2015-11-05 12:41:14 -08:00
Adam Ierymenko
8ef4edebbf
Deferred decode for HELLO to prevent HELLOcalypse under high load of new peers.
2015-11-05 12:22:58 -08:00
Adam Ierymenko
a42d714a87
.
2015-11-03 11:18:45 -08:00
Adam Ierymenko
c9e6e60c09
Handle ZeroTier-RFC4193 IPv6 address NDP queries inline by spoofing responses if the addressing scheme matches -- this allows multicast-free instant lookup of local IPv6 for better performance and reliability.
2015-11-03 10:46:41 -08:00
Adam Ierymenko
4e9d430476
Make root and relay selection somewhat more robust.
2015-11-02 16:03:28 -08:00
Adam Ierymenko
7fbe2f7adf
Tweak some more timings for better reliability.
2015-11-02 15:38:53 -08:00
Adam Ierymenko
60ce886605
Tweak some timings for better reliability.
2015-11-02 15:15:20 -08:00
Adam Ierymenko
f1b6427e63
Decided to make this 1.1.0 (semantic versioning increment is warranted), and add a legacy hack for older clients working with clusters.
2015-11-02 09:32:56 -08:00
Adam Ierymenko
1b4cc4af5c
Fix evil bug, and instrument/assert on some other stuff, and a bit of cleanup.
2015-10-30 15:54:40 -07:00
Adam Ierymenko
7382c328da
Null pointer bug appears fixed... testing again at large scale.
2015-10-30 14:23:28 -07:00
Adam Ierymenko
641b0dec44
.
2015-10-30 14:12:20 -07:00
Adam Ierymenko
2fbb5d0bbf
.
2015-10-30 14:11:45 -07:00
Adam Ierymenko
d8dbbf7484
Add some debug code in TRACE mode to catch a bug.
2015-10-30 14:11:10 -07:00
Adam Ierymenko
377ccff600
getPeer() had a small potential to be unsafe.
2015-10-30 13:39:28 -07:00
Adam Ierymenko
b6725c4415
Optimize AntiRecursion.
2015-10-30 11:48:33 -07:00
Adam Ierymenko
5bfa29dded
Make antirec tail len slightly shorter, better performance and still plenty long enough.
2015-10-30 11:09:40 -07:00
Adam Ierymenko
d6c0d176ee
Periodically re-announce peers that we have.
2015-10-29 10:10:09 -07:00
Adam Ierymenko
9f0f0197fe
More dead code removal.
2015-10-29 09:44:25 -07:00
Adam Ierymenko
a994573a43
Eliminate some more dead code. We may do path trust, but not like that.
2015-10-29 09:42:15 -07:00
Adam Ierymenko
883c84bdb9
Tweak some timings, and remove some dead code.
2015-10-29 09:39:36 -07:00
Adam Ierymenko
68d6d3c4ff
Fix bug in peer count.
2015-10-28 14:29:08 -07:00
Adam Ierymenko
0034efafe4
On semi-undocumented test net, assign a RFC4193 IPv6 address too. Will be useful for our at-scale tests.
2015-10-28 11:08:15 -07:00
Adam Ierymenko
0fd15d9cf3
Fix inverted sense bug.
2015-10-28 10:38:37 -07:00
Adam Ierymenko
938d0a970b
TRACE build fixes.
2015-10-28 10:01:32 -07:00
Adam Ierymenko
fdc3e103cc
Cleanup and docs.
2015-10-28 09:38:33 -07:00
Adam Ierymenko
c1b0329969
Only check IP equality to detect external surface changes (should prevent some spurious resets under symmetric NATs), and simplify some logic.
2015-10-28 09:32:07 -07:00
Adam Ierymenko
da93712846
Clean up PUSH_DIRECT_PATH limits a bit more and make them a bit smarter.
2015-10-28 09:11:30 -07:00
Adam Ierymenko
cdc99bfee1
Add a circuit breaker for VERB_PUSH_DIRECT_PATHS.
2015-10-27 18:18:26 -07:00
Adam Ierymenko
88b100e5d0
More cleanup.
2015-10-27 17:59:17 -07:00
Adam Ierymenko
51fcc75354
Some cleanup, and use getPeerNoCache() exclusively in Cluster.
2015-10-27 17:36:47 -07:00
Adam Ierymenko
4221552c0b
Use getPeerNoCache() in Cluster to avoid keeping all peers cached everywhere.
2015-10-27 16:52:44 -07:00
Adam Ierymenko
cc1b275ad9
Replicate peer endpoints and forget paths if we have them -- this allows two clusters to talk to each other, whereas forgetting all paths does not.
2015-10-27 16:47:13 -07:00
Adam Ierymenko
cc6080fe38
(1) No need to confirm if we are a root (small optimization), (2) Refactor peer affinity tracking.
2015-10-27 15:57:26 -07:00
Adam Ierymenko
6399f6f094
This no longer has to be quite so fast.
2015-10-27 15:02:15 -07:00
Adam Ierymenko
218ef07d8e
Build fix in TRACE mode.
2015-10-27 15:01:11 -07:00
Adam Ierymenko
16bc3e0398
Factor out RemotePath subclass of Path -- no longer needed, just cruft.
2015-10-27 15:00:16 -07:00
Adam Ierymenko
40976c02a4
Forget paths to peers if we are handing them off.
2015-10-27 14:37:38 -07:00
Adam Ierymenko
f692cec763
Change how cluster relays packets -- just PROXY_UNITE and then send packet via normal ZeroTier front plane -- more efficient and eliminates fragmentation issues.
2015-10-27 14:04:12 -07:00
Adam Ierymenko
cfe166ef35
Tweak some size limits.
2015-10-27 12:29:01 -07:00
Adam Ierymenko
0ffbd05c0e
--wtf; prevent roots from TCP fallback
2015-10-27 12:21:57 -07:00
Adam Ierymenko
a1a0ee4edb
Fix infinite loop in Cluster, clean up some stuff elsewhere, and back out rate limiting in PUSH_DIRECT_PATHS for now (but we will do something else to mitigate amplification attacks)
2015-10-27 12:01:00 -07:00
Adam Ierymenko
54a99d8e32
Well that was broken.
2015-10-27 11:14:07 -07:00
Adam Ierymenko
62db18b6dd
Lessen this limit just a bit to make cluster settle faster.
2015-10-27 11:01:58 -07:00
Adam Ierymenko
f32e9d07dd
Don't include COM if not necessary (fix).
2015-10-27 10:58:01 -07:00
Adam Ierymenko
700c3166b7
Fix inverted sense bug.
2015-10-27 10:51:11 -07:00
Adam Ierymenko
17e7528e2c
More root cleanup.
2015-10-27 10:40:31 -07:00
Adam Ierymenko
8a7a0b6b88
Cleanup, including simplification of root server picking algorithm since we no longer need all that craziness.
2015-10-27 10:37:39 -07:00
Adam Ierymenko
9617208e40
Some cleanup, and use VERB_PUSH_DIRECT_PATHS to redirect newer peers.
2015-10-27 09:53:43 -07:00
Adam Ierymenko
69857b4ba8
Refactor cluster redirects to move code to push peers out of the actual Cluster function that checks for redirect, and clean up Peer::received() to be a bit more logical.
2015-10-27 09:36:48 -07:00
Adam Ierymenko
e713f7a54c
Can redirect in response to a few more verbs, just not these.
2015-10-26 18:20:40 -07:00
Adam Ierymenko
98d856daa2
Only send redirects to the sending InetAddress and only in response to a set of certain frame types to avoid potential race conditions.
2015-10-26 17:58:51 -07:00
Adam Ierymenko
8bfb02ba3c
Only send redirects for the same address class, and elminiate some TRACE noise.
2015-10-26 16:55:55 -07:00
Adam Ierymenko
0b82c9ebad
Fix infinite loop if there are no live roots (never happened before?!? wow!)
2015-10-26 16:09:56 -07:00
Adam Ierymenko
de761c5a82
Fix test world def.
2015-10-26 15:47:32 -07:00
Adam Ierymenko
6cf1da166f
Add the whole new World, though with test identities at this point.
2015-10-26 15:12:28 -07:00
Adam Ierymenko
debed1ac2d
Expose cluster status in /status JSON response.
2015-10-26 13:06:10 -07:00
Adam Ierymenko
5ff7733f84
More plumbing of cluster status.
2015-10-26 12:49:17 -07:00
Adam Ierymenko
865acfa40f
Cluster status plumbing.
2015-10-26 12:41:08 -07:00
Adam Ierymenko
3ce5ad9e2c
For forward compatibility, add minimal parse for some future physical address types.
2015-10-26 10:42:30 -07:00
Adam Ierymenko
d2b1dfe424
Fully specify new network in alice-test, this will (with different identities) eventually become the World.
2015-10-23 15:51:50 -07:00
Adam Ierymenko
35676217e8
Refactor multicast group announcement to work directly or indirectly.
2015-10-23 14:50:07 -07:00
Adam Ierymenko
e9648a6cdf
Clarify logic in pinging, and prevent roots from pinging "down."
2015-10-23 14:05:12 -07:00
Adam Ierymenko
e6a63f5547
Fix bug in setWorld that might have caused a peer entry for myself (which would never be used)
2015-10-23 13:57:02 -07:00
Adam Ierymenko
29b966894c
(1) Fix bug in geo-ip service that prevented cache lookup, (2) fix problem in SelfAwareness (will need to test ALL versions in the wild with this), and (3) add more TRACE instrumentation to Cluster.
2015-10-23 13:03:34 -07:00
Adam Ierymenko
964b30902a
Cluster fix: was accumulating remote endpoints endlessly.
2015-10-23 11:51:18 -07:00
Adam Ierymenko
7711eba297
More cluster wiring...
2015-10-22 16:02:01 -07:00
Adam Ierymenko
978b056a01
Wire in redirectPeer(), now about ready to test clustering!
2015-10-20 17:36:10 -07:00
Adam Ierymenko
6a7b47e5e1
Forgot a return true.
2015-10-20 17:27:57 -07:00
Adam Ierymenko
d6dee7bb5c
Clustered handling of relaying.
2015-10-20 17:22:53 -07:00
Adam Ierymenko
35a12b94ea
Outfit Cluster with TRACE for debugging.
2015-10-20 16:48:49 -07:00
Adam Ierymenko
2258e36a59
Move replication of COMs to avoid race condition.
2015-10-20 16:34:21 -07:00
Adam Ierymenko
59e1444b27
Finish wiring up Cluster, fix some issues with other recent changes.
2015-10-20 16:31:41 -07:00
Adam Ierymenko
eb79d4a2f3
Wire up peer announcement in cluster.
2015-10-20 16:24:21 -07:00
Adam Ierymenko
57e29857cf
Cluster work -- integrating with the rest of the code.
2015-10-20 15:27:53 -07:00
Adam Ierymenko
5e6eae620b
Make _members dynamically allocated due to static array limit on ARM.
2015-10-19 16:18:57 -07:00
Adam Ierymenko
69dad37d8f
Restore default World for commit to upstream
2015-10-19 15:23:43 -07:00
Adam Ierymenko
cfdcce6d12
Fix very obscure IP scope classification logic bug.
2015-10-19 15:19:04 -07:00
Adam Ierymenko
0b2e5ed499
Fix some broken logic in Path::reliable()
2015-10-19 15:11:43 -07:00
Adam Ierymenko
9150778757
.
2015-10-19 15:04:26 -07:00
Adam Ierymenko
50f3ccd3c9
.
2015-10-19 15:03:58 -07:00
Adam Ierymenko
584072fa6a
Fix for V4/V6 stable addressing.
2015-10-19 14:04:36 -07:00
Adam Ierymenko
3adb183c5f
Fix bad COM attachment bug and eliminate an unnecessary redundant check.
2015-10-19 13:38:27 -07:00
Adam Ierymenko
95953b48f9
Do not allow VERB_RENDEZVOUS from non-upstream peers to block potential DOS vector.
2015-10-19 12:56:29 -07:00
Adam Ierymenko
aa6e3c79a0
Some test stuff that will not be pushed elsewhere.
2015-10-19 10:49:31 -07:00
Adam Ierymenko
738fa5a5e5
.
2015-10-16 12:10:57 -07:00
Adam Ierymenko
cc4d0199e7
Fix vProto init.
2015-10-16 10:58:59 -07:00
Adam Ierymenko
781f06ef82
Accept OK for confirm of HELLO or ECHO.
2015-10-16 10:48:38 -07:00
Adam Ierymenko
f9f60f89d9
Peer save/restore fix.
2015-10-16 10:45:58 -07:00
Adam Ierymenko
5ce3aac929
Add rate limit on receive of DIRECT_PATH_PUSH to prevent DOS exploitation.
2015-10-16 10:28:09 -07:00
Adam Ierymenko
2229e91b57
IPv6 support fixes.
2015-10-16 10:10:12 -07:00
Adam Ierymenko
2debde3451
GitHub issue #235 , and I also see no reason not to communicate with people from other Worlds.
2015-10-15 07:22:17 -07:00
Adam Ierymenko
9ece8c465e
decrypt fix
2015-10-14 15:49:41 -07:00
Adam Ierymenko
59389b3dce
Untested cluster code, not enabled.
2015-10-14 14:17:55 -07:00
Adam Ierymenko
619e113748
Work in progress on Cluster for new root infrastructure, multi-homing.
2015-10-14 14:12:12 -07:00
Adam Ierymenko
c312ae221f
Fix for world size in OK(HELLO)
2015-10-14 10:45:33 -07:00
Adam Ierymenko
719233617c
Add uint16_t key to Hashtable, and make Salsa20 zero its keyspace on destruction.
2015-10-14 10:14:07 -07:00
Adam Ierymenko
489e1a5b83
Don't keep connections up longer than the alive timeout (unless they are relays or roots)
2015-10-13 13:51:54 -07:00
Adam Ierymenko
824ed99160
.
2015-10-13 12:42:54 -07:00
Adam Ierymenko
70d8e3ad94
Expose world ID and world timestamp in ZT_NodeStatus
2015-10-13 12:31:38 -07:00
Adam Ierymenko
e268d9492a
cleanup
2015-10-13 12:18:47 -07:00
Adam Ierymenko
123c466843
Full integration of World and World updates.
2015-10-13 12:17:47 -07:00
Adam Ierymenko
5d2f523e81
World stuff...
2015-10-13 12:10:44 -07:00
Adam Ierymenko
05677f57e2
Add C output to mkworld.
2015-10-13 08:55:21 -07:00
Adam Ierymenko
cae58f43f1
More World stuff, and mkworld.
2015-10-13 08:49:36 -07:00
Adam Ierymenko
1b1945c63e
Work in progress on refactoring root-topology into World and adding in-band updates.
2015-10-12 18:25:29 -07:00
Adam Ierymenko
70fe7dd1fd
cleanup
2015-10-12 16:40:57 -07:00
Adam Ierymenko
eff1fe3c61
Create files for each hop (more convenient) and fix a packet parse bug.
2015-10-09 16:22:34 -07:00
Adam Ierymenko
aec13b50fd
Be a bit more verbose in circuit test reports to more clearly track current and upstream hop in graph traversal history.
2015-10-09 15:05:26 -07:00
Adam Ierymenko
a95fa379cc
Circuit tests basically work but need some tweaks, and fix some issues found with valgrind.
2015-10-09 14:51:38 -07:00
Adam Ierymenko
0c498556d5
Unroll Salsa20 fully for a little more speed (non-SSE now almost as fast as SSE)
2015-10-09 09:39:27 -07:00
Adam Ierymenko
3fa6dd377f
docs
2015-10-09 08:51:57 -07:00
Adam Ierymenko
160278c489
Little bit of reorg in Salsa20 which seems to speed things up very slightly.
2015-10-08 17:42:53 -07:00
Adam Ierymenko
558775d544
Merge branch 'adamierymenko-dev' of http://10.6.6.2/zerotier/ZeroTierOne into adamierymenko-dev
2015-10-08 13:26:43 -07:00
Adam Ierymenko
a3876353ca
Abiltiy to post a test via the controller web API, and parsing of CIRCUIT_TEST_REPORT messages.
2015-10-08 13:25:38 -07:00
Adam Ierymenko
273f0d18b0
docs
2015-10-08 09:05:25 -07:00
Grant Limberg
9347d6c866
Make it so ZeroTierOne.h can be used with a C compiler again.
2015-10-07 18:04:40 -07:00
Adam Ierymenko
fea1b6b2c3
docs
2015-10-07 16:25:08 -07:00
Adam Ierymenko
0ce0bc00d2
Make sure received() gets called for some new messages, and docs.
2015-10-07 16:20:54 -07:00
Adam Ierymenko
69b44bf9a5
Finally add an ECHO.
2015-10-07 16:11:50 -07:00
Adam Ierymenko
73cafbe0ec
Limit proof of work difficulty to something sane.
2015-10-07 13:46:44 -07:00
Adam Ierymenko
e5f168f599
Add proof of work request for future DDOS mitigation use.
2015-10-07 13:35:46 -07:00
Adam Ierymenko
7d62dbe9f7
Tune NAT-t keepalives so that timing is better obeyed, clean up a build warning, and fix a potential source of network recursion (though harmless).
2015-10-07 11:57:59 -07:00
Adam Ierymenko
13f14c2f4c
Kill debug line.
2015-10-07 10:56:47 -07:00
Adam Ierymenko
c952fbbd8d
Only enable 128-bit Poly1305 on X86_64 right now. Has compilation issues on ARM, but the 64-bit version should be fine.
2015-10-07 10:40:59 -07:00
Adam Ierymenko
ab0228f626
More cleanup and simple refactoring, consolidate InetAddres serialize/deserialize into the class.
2015-10-07 10:30:47 -07:00
Adam Ierymenko
1b2cac0cc5
Trim some cruft that is not used and probably never would be.
2015-10-07 09:38:33 -07:00
Adam Ierymenko
598a1d8dd7
Try reopening /dev/urandom if there is a problem.
2015-10-06 18:10:40 -07:00
Adam Ierymenko
64aaea3978
Cleanup, and add an even faster Poly1305 on systems that support it.
2015-10-06 18:04:53 -07:00
Adam Ierymenko
477feee8a3
Some work on CIRCUIT_TEST, and a significant speedup to Poly1305.
2015-10-06 17:55:57 -07:00
Adam Ierymenko
3593fb3462
Send initial CIRCUIT_TEST packet.
2015-10-06 15:16:41 -07:00
Adam Ierymenko
d3f29d09e8
Plumbing through circuit test stuff.
2015-10-06 14:42:51 -07:00
Adam Ierymenko
5341afcdcd
Handling of CIRCUIT_TEST, should be ready to test.
2015-10-06 11:47:16 -07:00
Adam Ierymenko
57c857e89a
Fix TRACE output.
2015-10-06 06:57:00 -07:00
Grant Limberg
c16ad053b6
no toString() method on peer. Commenting out for now.
2015-10-02 19:39:46 -07:00
Grant Limberg
6080a45c9c
change cert to com. no variable named cert.
2015-10-02 19:39:13 -07:00
Adam Ierymenko
5384f185ae
Simplify Dictionary and reduce memory usage, now no more std::maps in core.
2015-10-01 18:12:16 -07:00
Adam Ierymenko
76a95dc58f
The return of peer peristence.
2015-10-01 17:09:01 -07:00
Adam Ierymenko
5076c49210
Peer serialization and related changes.
2015-10-01 15:40:54 -07:00
Adam Ierymenko
2fa21aa676
.
2015-10-01 13:43:57 -07:00
Adam Ierymenko
3999e468b7
Need to hold nconf so *com does not die while being used.
2015-10-01 13:43:15 -07:00
Adam Ierymenko
6693149f3e
Send COM with MULTICAST_GATHER for future use.
2015-10-01 13:34:12 -07:00
Adam Ierymenko
2c196307ee
--bugs;
2015-10-01 13:01:18 -07:00
Adam Ierymenko
d6676a9d6c
Always announce multicast groups, not just to peers with direct links, and push network COMs to any MULTICAST_LIKE recipient for future use.
2015-10-01 12:50:19 -07:00
Adam Ierymenko
a7409850d6
Get trim() out of core where it is not needed.
2015-10-01 12:37:18 -07:00
Adam Ierymenko
53e5f94b99
.
2015-10-01 12:25:43 -07:00
Adam Ierymenko
64bf3ffe6c
Mutex cleanup.
2015-10-01 11:44:09 -07:00
Adam Ierymenko
9405150b11
Restore group announcement on Peer::receive() but centralize packet composition in one place.
2015-10-01 11:37:02 -07:00
Adam Ierymenko
a3db7d0728
Refactor: move network COMs out of Network and into Peer in prep for tightening up multicast lookup and other things.
2015-10-01 11:11:52 -07:00
Adam Ierymenko
11ff96ba1d
Consider IPv6 paths reliable (no constant keepalives needed)
2015-09-30 15:20:08 -07:00
Adam Ierymenko
0d0039674f
Add new verb names, and fix some Mac compiler flags.
2015-09-30 14:48:07 -07:00
Adam Ierymenko
789046ca57
Speed up Salsa20 just a bit.
2015-09-30 14:35:05 -07:00
Adam Ierymenko
1a4f16e0ed
More work on circuit testing...
2015-09-30 13:59:05 -07:00
Adam Ierymenko
2d0adb562d
Specify circuit test messages.
2015-09-27 11:37:39 -07:00
Adam Ierymenko
f69454ec98
(1) Make ZT_ naming convention consistent (get rid of ZT1_), (2) Make local interface a full sockaddr_storage instead of an int identifier, which turns out to be better for multi-homing and other uses.
2015-09-24 16:21:36 -07:00
Adam Ierymenko
0e5aac6a11
Prefer IPv6 paths if available.
2015-09-23 16:16:36 -07:00
Adam Ierymenko
a3ed5277ef
Make sure ZT_NO_TYPE_PUNNING also obeyed here.
2015-09-23 14:09:27 -07:00
Adam Ierymenko
2a527ea82e
Fix for timer jitter problem.
2015-09-23 14:01:41 -07:00
Adam Ierymenko
367ffde00c
Plumb through localInterfaceId to track local interfaces corresponding with remote addresses.
2015-09-23 13:49:56 -07:00
Adam Ierymenko
4464fa5d39
Eliminate another warning.
2015-09-23 10:29:05 -07:00
Adam Ierymenko
86996d4315
Eliminate compiler warning.
2015-09-23 10:27:53 -07:00
Adam Ierymenko
d656e87395
Send a random small payload for NAT keepalives, since zero byte packets seem to fail to keep associations alive behind some NATs.
2015-09-22 15:58:00 -07:00
Adam Ierymenko
3664966340
Generate local IPv6 addresses from network IDs and addresses.
2015-09-17 21:30:32 -07:00
Adam Ierymenko
c1a53a2653
ARP cache and responder agent code for use in netcon and iOS.
2015-09-11 11:45:04 -07:00
Adam Ierymenko
0d386f1c31
Add a bit of useful testing instrumentation to SqliteNetworkController.
2015-09-08 11:35:55 -07:00
Adam Ierymenko
85b90f122a
Final std::map<> from Switch, and add some smallish default values for hash size.
2015-09-04 15:35:43 -07:00
Adam Ierymenko
3dba016a93
Almost done... very few std::map<>s remaining in any spot that matters.
2015-09-04 15:21:22 -07:00
Adam Ierymenko
db0369e9b8
Remove way-overkill multimap from Switch.
2015-09-04 14:56:39 -07:00
Adam Ierymenko
0ab3e49be9
Starting in on Switch... kill map in defrag queue, which will probably improve performance pretty decently under high load with lots of peers.
2015-09-04 14:44:22 -07:00
Adam Ierymenko
f116c4b9c0
... and another ...
2015-09-04 14:24:31 -07:00
Adam Ierymenko
307e44f7c8
Two for one! (std::map removal)
2015-09-04 14:14:32 -07:00
Adam Ierymenko
d1341578d8
... and another one!
2015-09-04 13:53:48 -07:00
Adam Ierymenko
7b8ce16057
Another std::map<> dies.
2015-09-04 13:42:19 -07:00
Adam Ierymenko
3a959a7763
Swap out std::map<> for Hashtable<> for main peer database in Topology. (ongoing std::map-ectomy)
2015-09-04 12:14:21 -07:00
Adam Ierymenko
cfd101c9b8
Add entries() to go with keys() for future use.
2015-09-04 11:50:12 -07:00
Adam Ierymenko
da9a720c3f
Hash table bug fix, and add copy constructor and assignment operator for principle of least surprise.
2015-09-03 17:33:06 -07:00
Adam Ierymenko
b11ffc9635
Integrate Hashtable into Multicaster, where @mwarning found heaviest std::map() overhead.
2015-08-27 16:17:21 -07:00
Adam Ierymenko
3947807b1f
A simple and fast Hashtable, tested but not yet integrated with anything.
2015-08-27 15:36:13 -07:00
Adam Ierymenko
5fcef91278
Ignore old root-topology if present -- fix for upgrading on Linux and possibly elsewhere.
2015-08-25 09:42:37 -07:00
Adam Ierymenko
facb009a1d
Add security notice to auto-update info in -h output, and fix a missing paren.
2015-07-31 09:50:55 -07:00
Adam Ierymenko
8d09c37140
Remove a bit of redundant logic, and also announce MULTICAST_LIKEs to controllers (for future use).
2015-07-31 09:37:13 -07:00
Adam Ierymenko
f6ced547be
Dead code removal.
2015-07-31 08:56:31 -07:00
Adam Ierymenko
eea8d58afa
docs,cleanup
2015-07-28 12:39:03 -07:00
Adam Ierymenko
21e6850722
Cancel NAT-t attempts if peer is no longer "alive"
2015-07-28 12:18:59 -07:00
Adam Ierymenko
5986d83738
Kill more kittens.
2015-07-28 12:04:14 -07:00
Adam Ierymenko
4564dd95ff
Revert... no luck with any of that.
2015-07-28 12:00:50 -07:00
Adam Ierymenko
d2bfdfa6e7
Play with NAT-t tweaks some more.
2015-07-28 11:57:18 -07:00
Adam Ierymenko
b69afa010e
Disable type punning on ARM by ifdef.
2015-07-28 11:50:01 -07:00
Adam Ierymenko
708aac1ea7
Remove some left over debug code, and fix attempt to send to self if we are an active bridge.
2015-07-28 11:43:09 -07:00
Adam Ierymenko
17bfd4d55e
Add TRACE for NAT-t debugging.
2015-07-28 11:32:34 -07:00
Adam Ierymenko
b31071463c
Try another NAT traversal improvement.
2015-07-28 11:28:47 -07:00
Adam Ierymenko
dda376c9eb
Nuke some abandoned code.
2015-07-28 11:16:43 -07:00
Adam Ierymenko
821f1f366e
Fix to NAT escalation sequence.
2015-07-27 17:34:58 -07:00
Adam Ierymenko
e99eda4a4a
Fix IP scoping bug, and disable remotely reported surface push... not helping. :(
2015-07-27 17:28:13 -07:00
Adam Ierymenko
fadb291962
Fix infinite loop typo.
2015-07-27 17:14:49 -07:00
Adam Ierymenko
f0003ea922
Push remote surface as reported by peers along with known interface direct paths to assist with (some) NAT traversal. (trying this, may back out if not effective)
2015-07-27 17:02:43 -07:00
Adam Ierymenko
e30ba3e138
Eliminate some aggressive port scanning NAT-t behavior that has proven ineffective.
2015-07-27 16:43:27 -07:00
Adam Ierymenko
7a15d8a7e3
Fix leaving of networks to actually call Network::destroy().
2015-07-24 14:50:44 -07:00
Adam Ierymenko
d647a587a1
(1) Fix updating of network revision counter on member change.
...
(2) Go back to timestamp as certificate revision number. This is simpler
and more robust than using the network revision number for this and
forcing network revision fast-forward, which could cause some peers
to fall off the horizon when you don't want them to.
2015-07-23 17:18:20 -07:00
Adam Ierymenko
b3516c599b
Add a rate limiting circuit breaker to the network controller to prevent flooding attacks and race conditions.
2015-07-23 10:10:17 -07:00
Adam Ierymenko
3ba54c7e35
Eliminate some poorly thought out optimizations from the netconf/controller interaction,
...
and go ahead and bump version to 1.0.4.
For a while in 1.0.3 -dev I was trying to optimize out repeated network controller
requests by using a ratcheting mechanism. If the client received a network config
that was indeed different from the one it had, it would respond by instantlly
requesting it again.
Not sure what I was thinking. It's fundamentally unsafe to respond to a message
with another message of the same type -- it risks a race condition. In this case
that's exactly what could happen.
It just isn't worth the added complexity to avoid a tiny, tiny amount of network
overhead, so I've taken this whole path out.
A few extra bytes every two minutes isn't worth fretting about, but as I recall
the reason for this optimization was to save CPU on the controller. This can be
achieved by just caching responses in memory *there* and serving those same
responses back out if they haven't changed.
I think I developed that 'ratcheting' stuff before I went full time on this. It's
hard to develop stuff like this without hours of sustained focus.
2015-07-23 09:50:10 -07:00
Adam Ierymenko
8c18c60c00
sp.
2015-07-17 15:30:13 -07:00
Adam Ierymenko
88949a750f
Workaround for uclibc missing map::operator==()
2015-07-13 11:39:55 -07:00
Adam Ierymenko
547b1c6157
Add additional TRACE output in pushDirectPaths.
2015-07-13 10:35:33 -07:00
Adam Ierymenko
0b354803f3
Clean up some YAGNI issues with implementation of GitHub issue #180 , and make best path choice aware of path rank.
2015-07-13 10:03:04 -07:00
Adam Ierymenko
0b9524f23d
Merge branch 'adamierymenko-dev' of http://git.int.zerotier.com/zerotier/zerotierone into adamierymenko-dev
2015-07-13 09:30:02 -07:00
Adam Ierymenko
4bf3bcbd55
Fixes to PUSH_DIRECT_PATHS.
2015-07-13 09:29:51 -07:00
Adam Ierymenko
3f0eca72f7
ZT_TRACE build fix.
2015-07-13 08:36:22 -07:00
Adam Ierymenko
fe20f0d7cd
Put back legacy code to listen for LAN announcements to support same network location with pre-1.0.4 clients.
2015-07-13 08:33:02 -07:00
Adam Ierymenko
a297e4a5bf
Add build def ZT_NO_TYPE_PUNNING, which when defined disables type punning code that might cause unaligned access errors on architectures that care (e.g. Android/ARM)
2015-07-08 09:12:51 -07:00
Adam Ierymenko
412389ec75
Implement ERROR_UNWATNED_MULTICAST
2015-07-07 11:49:38 -07:00
Adam Ierymenko
cf6f30963c
Kill a potential source of type punning BUS errors on Android, and besides that hack probably did not improve performance at all given the short lenghts of things compared with secureEq()
2015-07-07 10:59:59 -07:00
Adam Ierymenko
3f567a07ca
Save a little bit of RAM by getting rid of overkill CMWC4096 non-crypto PRNG and replacing it with a simple non-crypto PRNG that just uses Salsa20.
2015-07-07 10:49:50 -07:00
Adam Ierymenko
41fc08b330
etherTypeName() is only used in Switch and only with ZT_TRACE
2015-07-07 10:06:05 -07:00
Adam Ierymenko
07ea4fd4f9
Fix potential bug in controller config request.
2015-07-07 10:02:48 -07:00
Adam Ierymenko
778c7e6e70
More cleanup to direct path push, comment fixes, etc.
2015-07-07 10:00:34 -07:00
Adam Ierymenko
c863ff3f02
A bunch of comments and cleanup, including some to yesterday's direct path pushing changes. Move path viability check to one place, and stop trying to use link-local addresses since they are not reliable.
2015-07-07 08:54:48 -07:00
Adam Ierymenko
f398952a6c
Revert some bad docs in Packet -- I think we will still use that. Also rename addMembershipCertificate to more security-descriptive validateAndAddMembershipCertificate, give it a return value, and drop unused force parameter.
2015-07-07 08:14:41 -07:00
Adam Ierymenko
6da9d2d36f
Remove debug printf().
2015-07-06 17:23:22 -07:00
Adam Ierymenko
f881cdd767
Add new .h file to VS build, and Windows side of local interface address enumeration.
2015-07-06 17:22:37 -07:00
Adam Ierymenko
84ba365c77
Fix bug in direct path push send.
2015-07-06 17:20:41 -07:00
Adam Ierymenko
cac55105c3
Fix a regression.
2015-07-06 16:40:23 -07:00
Adam Ierymenko
a87cd2d094
Unix side of local interface address awareness for GitHub issue #180 .
2015-07-06 16:32:34 -07:00
Adam Ierymenko
235f4762b7
Plumbing for local interface addresses -- GitHub issue #180
2015-07-06 15:51:04 -07:00
Adam Ierymenko
79e9a8bcc2
Almost everything for GitHub issue #180 except direct path map setup.
2015-07-06 15:28:48 -07:00
Adam Ierymenko
fad9dff2db
Almost all of GitHub issue #180
2015-07-06 15:05:04 -07:00
Adam Ierymenko
1632aec102
Check Network::isAllowed() always on multicast send.
2015-07-06 14:53:27 -07:00
Adam Ierymenko
255320e2a6
pushDirectPaths() implementation
2015-07-06 14:39:28 -07:00
Adam Ierymenko
93bb934d4e
Some cleanup, docs, and Path -> Path > RemotePath refactor.
2015-07-06 14:08:13 -07:00
Adam Ierymenko
feddd946f9
For curiosity add Salsa20/8 to benchmarks.
2015-07-06 13:51:25 -07:00
Adam Ierymenko
6bfbc43e3c
Include COM with EXT_FRAME in bridged case.
2015-07-06 12:46:27 -07:00
Adam Ierymenko
35b5dcf89d
Kill debug line.
2015-07-06 12:39:20 -07:00
Adam Ierymenko
9743db3538
docs
2015-07-06 12:37:37 -07:00
Adam Ierymenko
e5f7c55c54
Documentation in Packet, more work on path push, and clean up ancient legacy support code in Switch.
2015-07-06 12:34:35 -07:00
Adam Ierymenko
f19c3c51d3
Revert slow non-SSE Salsa20 modification since it did not fix Android/ARM issue. Also update Salsa20 comments and clean up a bit.
2015-07-02 09:00:00 -07:00
Adam Ierymenko
7c9949eea3
For @glimberg -- a *possible* fix to the alignment headaches on Android/ARM. If this works we should find a define that can be used to enable it there since it will slow things down on non-x86 other architectures.
2015-07-01 12:29:23 -07:00
Adam Ierymenko
0cbbcf2884
Rename VERB_CMA to the more descriptive VERB_PHYSICAL_ADDRESS_PUSH
2015-06-29 16:01:01 -07:00
Adam Ierymenko
dbee1b38b3
Fix semantics of std::unique() to actually remove duplicates (hidden memory leak?)
2015-06-29 10:21:28 -07:00
Adam Ierymenko
3f71afd0fb
Put multicast txQueue back to list.
2015-06-26 14:26:35 -07:00
Kees Bos
8a68624dae
Fix cert verification check for self signed signatures
2015-06-26 07:22:13 +02:00
Adam Ierymenko
57c7992c78
GitHub issue #191 - kill intra-network multicast rate limits (which were not well supported or easily configurable anyway) -- this is really left over from the old collaborative multicast propagation algorithm. New algorithm (in for a while) has been sender-side replication in which sender "pays" all bandwidth, which intrinsically limits multicast.
2015-06-26 12:36:45 -07:00
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
Moritz Warning
def9cf2a6a
replace vector::erase, was missed in a previous commit (ref #186 )
2015-06-23 00:09:15 +02: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
be4f08a548
Merge pull request #186 from mwarning/txQueue_vector
...
replace txQueue list by vector for faster memory access and less allo…
2015-06-18 15:42:12 -07:00
Moritz Warning
0073d0f694
replace txQueue list by vector for faster memory access and less allocations
2015-06-19 00:28:51 +02:00
Adam Ierymenko
87bb0086de
Almost certain fix for GitHub issue #184 on -dev
2015-06-17 12:46:12 -07:00
Adam Ierymenko
a9a390a930
Apply @marning suggested SSE auto-detect to make builds easier on non-x86 platforms: aa2fd044cb
2015-06-01 19:43:06 -07:00
Adam Ierymenko
aab17d9f1f
Kill obsolete amSupernode method -- we now have no differing behaviors.
2015-06-01 19:18:26 -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
960ceb4791
Rest of GitHub issue #140 implementation.
2015-06-01 17:50:44 -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
b3b9af0dd8
Fix for GitHub issue #170
2015-06-01 11:56:15 -07:00
Adam Ierymenko
5e3c6d9e0d
Some nodeJS work, and apply fix from GitHub issue #166 plus a small optimization to avoid repeated calls to _allMulticastGroups().
2015-05-25 14:21:05 -07:00
Adam Ierymenko
af1d29cc6f
Remove obsolete method.
2015-05-25 11:54:32 -07:00
Adam Ierymenko
d8783b14eb
Build fix.
2015-05-22 15:46:06 -07:00
Adam Ierymenko
6867922d9e
typo
2015-05-22 15:33:33 -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
cdec05af24
One second delay between NAT-t events.
2015-05-22 13:12:14 -07:00
Adam Ierymenko
196f27f1f0
Add delay to NAT-t escalation stuff to try to address GitHub issue #167
2015-05-22 13:11:55 -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
Adam Ierymenko
0bdd56ebd6
A few revisions to PFS design.
2015-05-15 09:04:39 -07:00
Adam Ierymenko
d0e0f5dd12
Basic OpenBSD compile fixes -- still need to update BSDEthernetTap, will do that later. Should be able to re-use FreeBSD port for OpenBSD, but we will see.
2015-05-15 08:48:53 -07:00
Adam Ierymenko
e94518590d
First stab of PFS design work with PKC security -- may not implement in 1.0.3 but stubbing out.
2015-05-14 17:41:05 -07:00