587b1e05d1
Replace cluster-geo subprocess with in-memory loaded CSV of GeoIP data. This is faster, cheaper, more reliable. We use https://db-ip.com/ but others would work too.
2016-04-18 11:33:54 -07:00
63b62ebf4c
Boost local interface check interval a bit to speed direct link provisioning on startup.
2016-04-07 12:13:18 -07:00
569de22481
Make port mapper names even more unique, and trial bind before binding TCP now which should work on Linux and others.
2016-04-07 09:51:14 -07:00
c7df61a3c3
dev branch now works again on Linux
2016-04-07 16:41:07 +00:00
504738b183
Binder for Windows, and use Binder to get local interface addresses to advertise.
2016-04-05 15:53:19 -07:00
32cd2a02c9
OneService now binds all ports to specific local interfaces instead of wildcard and rebinds on changes. (default route)
2016-04-05 15:44:08 -07:00
4a109658ab
More refactoring and prep for explicit interface bindings (for default route support).
2016-04-05 11:59:46 -07:00
0e26917c72
Tweak metric and clean out attic a bit.
2016-04-01 11:07:44 -07:00
1fe251d0a0
stupid bug is stupid
2016-03-03 14:50:47 -08:00
09fc9e4d0c
indent fix
2016-03-03 14:21:13 -08:00
fe3a84a422
Fix problems with previous commit.
2016-03-03 14:15:09 -08:00
ba56a5b9d1
Another NAT-t improvement:
...
Many NATs revert to symmetric behavior from friendlier modes if they cannot
preserve ports. This can occur if there is, for example, more than one ZT
device behind the NAT using port 9993.
Others (Airport Extreme?) seem to have bugs in which they completely freak
out if more than one device tries to do a lot of mappings using the same
internal local port.
Mostly to fix the latter case and somewhat to fix the former, we introduce
a secondary port. ZeroTier now binds 9993 (or whatever port you specify)
plus another port computed deterministically from your ZeroTier address.
This port is used for new links 1/4 of the time.
This mostly addresses the second problem above and partly helps to address
the first.
If uPnP/NAT-PMP is enabled we also still open a tertiary port because some
routers freak out if NAT-t is attempted using the same port as uPnP.
All of this is IPv4 only of course. IPv6 is sane.
2016-03-03 13:52:27 -08:00
bcaf42e075
Transfer speed increate + stability fixes
2016-01-20 13:38:14 -08:00
4e4fd51117
boring doc stuff
2016-01-12 14:04:55 -08:00
d6f0f1a82a
Use network user ptr in lookup for Ethernet frame handling to eliminate map lookup.
2016-01-12 11:34:22 -08:00
83ef98a9dc
Add a network-associated user ptr in API.
2016-01-12 11:04:35 -08:00
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
eea634a432
Refactor to eliminate copypasta.
2016-01-11 09:11:35 -08:00
ab19e19f00
Fix a bug that we visually found in Windows code -- it was not advertising uPnP addresses?!?
2016-01-11 09:09:24 -08:00
436c1fac1d
Selectively move over changes from "edge" to "dev" excluding netcon.
2015-12-21 16:15:39 -08:00
944fdfb65e
Low-impact sanity check against GitHub issue #247 -- will likely prevent other weird recursions too.
2015-11-30 16:44:32 -08:00
40a4ba6e39
indentation
2015-11-30 15:15:43 -08:00
6768521330
Ton of uPnP work and adding NAT-PMP support, still testing...
2015-11-30 13:10:22 -08:00
038476c412
Fix for GitHub issue #253 .
...
Make 'ip' detection more robust (some distros don't ship the binary in /sbin or /usr/sbin).
Add error handling for cases where an ip add/remove fails.
2015-11-24 22:56:02 +01:00
54f68280bd
Minor Windows build fixes. Builds on VS2012 again.
2015-11-12 16:48:42 -08:00
451b8aa7b2
Query both root and network controller for multicast last resort GATHER.
2015-11-10 17:37:38 -08:00
2cc50bdb10
Try bringing back TTL escalation -- may help with Docker (IP-MASQ) type NAT
2015-11-09 15:44:13 -08:00
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
83c6b7ab3d
Use bigger UDP buffer on bigger x64 machines. Keep old value elsewhere since these are likely to be smaller boxes.
2015-11-05 17:41:07 -08:00
3e22fee842
Integrate deferred background processing into main OneService implementation.
2015-11-05 12:41:14 -08:00
a994573a43
Eliminate some more dead code. We may do path trust, but not like that.
2015-10-29 09:42:15 -07:00
16bc3e0398
Factor out RemotePath subclass of Path -- no longer needed, just cruft.
2015-10-27 15:00:16 -07:00
7295fcfa86
Merge Phy<> from netcon.
2015-10-27 12:50:23 -07:00
0ffbd05c0e
--wtf; prevent roots from TCP fallback
2015-10-27 12:21:57 -07:00
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
7711eba297
More cluster wiring...
2015-10-22 16:02:01 -07:00
cae58f43f1
More World stuff, and mkworld.
2015-10-13 08:49:36 -07:00
7394ec6f6a
Prep in controller code to run tests.
2015-10-06 15:56:18 -07:00
5076c49210
Peer serialization and related changes.
2015-10-01 15:40:54 -07:00
72e7e36a5b
No reason to randomly pick uPnP secondary port. In fact it would likely cause problems on restarts and uPnP rule bloat.
2015-10-01 14:40:28 -07:00
a7409850d6
Get trim() out of core where it is not needed.
2015-10-01 12:37:18 -07:00
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
423412df98
Pick a random secondary UDP port for uPnP mapped traffic because of broken routers.
2015-09-23 15:16:20 -07:00
7821d1cbdd
.
2015-09-23 14:44:13 -07:00
80dc7fb675
Pick random port on -p0
2015-09-23 14:38:16 -07:00
367ffde00c
Plumb through localInterfaceId to track local interfaces corresponding with remote addresses.
2015-09-23 13:49:56 -07:00
9dc2ef5549
Rename some stuff in Phy since it can be used with any stream socket.
2015-09-10 15:55:48 -07:00
9a723be263
Add socketpair support to Phy.
2015-09-10 13:18:57 -07:00
4838cbc350
Unix domain sockets in Phy<>
2015-09-02 14:32:01 -07:00
620562f7cf
Because Windows, because Windows. Now it upgrades correctly from 1.0.1, including automatic driver update from NDIS5 to NDIS6. Also a bit more robust on creating new ports, just in case.
2015-07-30 17:00:57 -07:00