summaryrefslogtreecommitdiff
path: root/node
AgeCommit message (Collapse)Author
2023-09-14Fix test that was always trueBrenton Bostick
Intention was to have (x >= 0 && x <= 8) but rules[rn].v.qosBucket is unsigned (thus always >= 0)
2023-08-21Fix problem of doing RX while inside of TXBrenton Bostick
Part of fix for: https://github.com/zerotier/libzt/issues/211
2023-08-15Add setmtu command, fix bond lifetime issueJoseph Henry
2023-08-09Don't skip hellos when there are no paths availabletravisladuke
working on #2082
2023-08-01Fix typos (#2075)Brenton Bostick
2023-07-20suppress warnings: comparison of integers of different signs: 'int64_t' (aka ↵Brenton Bostick
'long') and 'uint64_t' (aka 'unsigned long') [-Wsign-compare] (#2063)
2023-07-18Exit if loading an invalid identity from disk (#2058)Grant Limberg
* Exit if loading an invalid identity from disk Previously, if an invalid identity was loaded from disk, ZeroTier would generate a new identity & chug along and generate a brand new identity as if nothing happened. When running in containers, this introduces the possibility for key matter loss; especially when running in containers where the identity files are mounted in the container read only. In this case, ZT will continue chugging along with a brand new identity with no possibility of recovering the private key. ZeroTier should exit upon loading of invalid identity.public/identity.secret #2056 * add validation test for #2056
2023-05-31Allow sending all surface addresses to peer in low-bandwidth modeJoseph Henry
2023-05-23central controller metrics & request path updates (#2012)Grant Limberg
* internal db metrics * use shared mutexes for read/write locks * remove this lock. only used for a metric * more metrics * remove exploratory metrics place controller request benchmarks behind ifdef
2023-05-16Controller Metrics & Network Config Request Fix (#2003)Grant Limberg
* add new metrics for network config request queue size and sso expirations * move sso expiration to its own thread in the controller * fix potential undefined behavior when modifying a set
2023-05-05Update readme files for metrics (#2000)Grant Limberg
2023-05-04Metrics consolidation (#1997)Grant Limberg
* Rename zt_packet_incoming -> zt_packet Also consolidate zt_peer_packets into a single metric with tx and rx labels. Same for ztc_tcp_data and ztc_udp_data * Further collapse tcp & udp into metric labels for zt_data * Fix zt_data metric description * zt_peer_packets description fix * Consolidate incoming/outgoing network packets to a single metric * zt_incoming_packet_error -> zt_packet_error * Disable peer metrics for central controllers Can change in the future if needed, but given the traffic our controllers serve, that's going to be a *lot* of data * Disable peer metrics for controllers pt 2
2023-05-04Peer metrics (#1995)Grant Limberg
* Adding peer metrics still need to be wired up for use * per peer packet metrics * Fix crash from bad instantiation of histogram * separate alive & dead path counts * Add peer metric update block * add peer latency values in doPingAndKeepalive * prevent deadlock * peer latency histogram actually works now * cleanup * capture counts of packets to specific peers --------- Co-authored-by: Joseph Henry <[email protected]>
2023-05-03Network-metrics (#1994)Grant Limberg
* Add a couple quick functions for converting a uint64_t network ID/node ID into std::string * Network metrics
2023-05-03fix type signatures (#1991)Brenton Bostick
2023-05-03fix a couple of metrics (#1989)Grant Limberg
2023-05-03fix memory leak (#1992)Brenton Bostick
2023-05-02More packet metrics (#1982)Grant Limberg
* found path negotation sends that weren't accounted for * Fix histogram so it will actually compile * Found more places for packet metrics
2023-05-01Brenton/curly braces (#1971)Brenton Bostick
* fix formatting * properly adjust various lines breakup multiple statements onto multiple lines * insert {} around if, for, etc.
2023-04-28Outgoing Packet Metrics (#1980)Grant Limberg
add tx/rx labels to packet counters and add metrics for outgoing packets
2023-04-26adding incoming zt packet type metrics (#1976)Grant Limberg
2023-04-25Central startup update (#1973)Grant Limberg
* allow specifying authtoken in central startup * set allowManagedFrom * move redis_mem_notification to the correct place * add node checkins metric * wire up min/max connection pool size metrics
2023-04-21Add prometheus metrics for Central controllers (#1969)Grant Limberg
* add header-only prometheus lib to ext * rename folder * Undo rename directory * prometheus simpleapi included on mac & linux * wip * wire up some controller stats * Get windows building with prometheus * bsd build flags for prometheus * Fix multiple network join from environment entrypoint.sh.release (#1961) * _bond_m guards _bond, not _paths_m (#1965) * Fix: warning: mutex '_aqm_m' is not held on every path through here [-Wthread-safety-analysis] (#1964) * Serve prom metrics from /metrics endpoint * Add prom metrics for Central controller specific things * reorganize metric initialization * testing out a labled gauge on Networks * increment error counter on throw * Consolidate metrics definitions Put all metric definitions into node/Metrics.hpp. Accessed as needed from there. * Revert "testing out a labled gauge on Networks" This reverts commit 499ed6d95e11452019cdf48e32ed4cd878c2705b. * still blows up but adding to the record for completeness right now * Fix runtime issues with metrics * Add metrics files to visual studio project * Missed an "extern" * add copyright headers to new files * Add metrics for sent/received bytes (total) * put /metrics endpoint behind auth * sendto returns int on Win32 --------- Co-authored-by: Leonardo Amaral <[email protected]> Co-authored-by: Brenton Bostick <[email protected]>
2023-04-18Fix: warning: mutex '_aqm_m' is not held on every path through here ↵Brenton Bostick
[-Wthread-safety-analysis] (#1964)
2023-04-18_bond_m guards _bond, not _paths_m (#1965)Brenton Bostick
2023-03-21Prevent path-learning loops (#1914)Joseph Henry
* Prevent path-learning loops * Only allow new overwrite if not bonded
2023-03-071.10.4 merge into main (#1893)Adam Ierymenko
* add note about forceTcpRelay * Create a sample systemd unit for tcp proxy * set gitattributes for rust & cargo so hashes dont conflict on Windows * Revert "set gitattributes for rust & cargo so hashes dont conflict on Windows" This reverts commit 032dc5c108195f6bbc2e224f00da5b785df4b7f9. * Turn off autocrlf for rust source Doesn't appear to play nice well when it comes to git and vendored cargo package hashes * Fix #1883 (#1886) Still unknown as to why, but the call to `nc->GetProperties()` can fail when setting a friendly name on the Windows virtual ethernet adapter. Ensure that `ncp` is not null before continuing and accessing the device GUID. * Don't vendor packages for zeroidc (#1885) * Added docker environment way to join networks (#1871) * add StringUtils * fix headers use recommended headers and remove unused headers * move extern "C" only JNI functions need to be exported * cleanup * fix ANDROID-50: RESULT_ERROR_BAD_PARAMETER typo * fix typo in log message * fix typos in JNI method signatures * fix typo * fix ANDROID-51: fieldName is uninitialized * fix ANDROID-35: memory leak * fix missing DeleteLocalRef in loops * update to use unique error codes * add GETENV macro * add LOG_TAG defines * ANDROID-48: add ZT_jnicache.cpp * ANDROID-48: use ZT_jnicache.cpp and remove ZT_jnilookup.cpp and ZT_jniarray.cpp * add Event.fromInt * add PeerRole.fromInt * add ResultCode.fromInt * fix ANDROID-36: issues with ResultCode * add VirtualNetworkConfigOperation.fromInt * fix ANDROID-40: VirtualNetworkConfigOperation out-of-sync with ZT_VirtualNetworkConfigOperation enum * add VirtualNetworkStatus.fromInt * fix ANDROID-37: VirtualNetworkStatus out-of-sync with ZT_VirtualNetworkStatus enum * add VirtualNetworkType.fromInt * make NodeStatus a plain data class * fix ANDROID-52: synchronization bug with nodeMap * Node init work: separate Node construction and init * add Node.toString * make PeerPhysicalPath a plain data class * remove unused PeerPhysicalPath.fixed * add array functions * make Peer a plain data class * make Version a plain data class * fix ANDROID-42: copy/paste error * fix ANDROID-49: VirtualNetworkConfig.equals is wrong * reimplement VirtualNetworkConfig.equals * reimplement VirtualNetworkConfig.compareTo * add VirtualNetworkConfig.hashCode * make VirtualNetworkConfig a plain data class * remove unused VirtualNetworkConfig.enabled * reimplement VirtualNetworkDNS.equals * add VirtualNetworkDNS.hashCode * make VirtualNetworkDNS a plain data class * reimplement VirtualNetworkRoute.equals * reimplement VirtualNetworkRoute.compareTo * reimplement VirtualNetworkRoute.toString * add VirtualNetworkRoute.hashCode * make VirtualNetworkRoute a plain data class * add isSocketAddressEmpty * add addressPort * add fromSocketAddressObject * invert logic in a couple of places and return early * newInetAddress and newInetSocketAddress work allow newInetSocketAddress to return NULL if given empty address * fix ANDROID-38: stack corruption in onSendPacketRequested * use GETENV macro * JniRef work JniRef does not use callbacks struct, so remove fix NewGlobalRef / DeleteGlobalRef mismatch * use PRId64 macros * switch statement work * comments and logging * Modifier 'public' is redundant for interface members * NodeException can be made a checked Exception * 'NodeException' does not define a 'serialVersionUID' field * 'finalize()' should not be overridden this is fine to do because ZeroTierOneService calls close() when it is done * error handling, error reporting, asserts, logging * simplify loadLibrary * rename Node.networks -> Node.networkConfigs * Windows file permissions fix (#1887) * Allow macOS interfaces to use multiple IP addresses (#1879) Co-authored-by: Sean OMeara <[email protected]> Co-authored-by: Grant Limberg <[email protected]> * Fix condition where full HELLOs might not be sent when necessary (#1877) Co-authored-by: Grant Limberg <[email protected]> * 1.10.4 version bumps * Add security policy to repo (#1889) * [+] add e2k64 arch (#1890) * temp fix for ANDROID-56: crash inside newNetworkConfig from too many args * 1.10.4 release notes --------- Co-authored-by: travis laduke <[email protected]> Co-authored-by: Grant Limberg <[email protected]> Co-authored-by: Grant Limberg <[email protected]> Co-authored-by: Leonardo Amaral <[email protected]> Co-authored-by: Brenton Bostick <[email protected]> Co-authored-by: Sean OMeara <[email protected]> Co-authored-by: Joseph Henry <[email protected]> Co-authored-by: Roman Peshkichev <[email protected]>
2023-02-06eliminated duplicate paths (#1870)Monica Moniot
2023-01-20Check for ARM Cryptography Extension supportGleb Mazovetskiy
ARM Cryptography Extension is optional and not all ARM CPUs support it. For example, the CPU in Raspberry Pi 4 does not support it. Check for `__ARM_FEATURE_CRYPTO` before attempting to use the optional extension. `__ARM_FEATURE_CRYPTO` is defined by both clang and gcc when the target has the cryptography extension. Fixes #1854.
2023-01-19Client & Central Controller updates to support additonal OIDC features (#1848)Grant Limberg
Client side: * Fix compatibility with OneLogin * Requested scopes vary by OIDC provider. Different providers have different Controller side: *Update Postgres queries to latest Central schema * Added Central Controller support for the different providers * Base OIDC provider details are still attached to an org. Client ID & group/email lists are now associated with individual networks.
2023-01-17Fix Possible misuse of comma operator here (#1851)Brenton Bostick
Xcode warns about "Possible misuse of comma operator here". Comma is a sequencing operator in C++ and original code does work, but is highly non-idiomatic.
2023-01-12User-configurable physical MTU for individual linksJoseph Henry
This patch allows users to specify the physical layer MTU for individual links when in multipath mode. For example: { "settings": { "defaultBondingPolicy": "custom-balance-xor", "policies": { "custom-balance-xor": { "basePolicy": "balance-xor", "failoverInterval": 5000, "links": { "weird_5g_link": { "mtu": 1300 }, "enp5s0": { "mtu": 1400 } } } } } }
2023-01-11fix typos (#1843)Brenton Bostick
2022-12-22Add missing default initialization of _lowBandwidthModeJoseph Henry
2022-12-05Merge branch 'dev' into dev-low-bandwidthJoseph Henry
2022-12-05Merge branch 'dev' into dev-low-bandwidthJoseph Henry
2022-12-05Add low-bandwidth modeJoseph Henry
2022-12-05fix typosBrenton Bostick
2022-12-01Fix several warning: format specifies type 'XXX' but the argument has type 'YYY'Brenton Bostick
Use %z for printing size_t and PRId64 etc. macros for printing platform-specific widths, and remove now-redundant casts
2022-11-28fix typos in codeBrenton Bostick
2022-11-28fix typos in comments and stringsBrenton Bostick
2022-11-02Fix unresponsiveness when moving flows in balance-aware (See #1764)Joseph Henry
2022-10-25Merge remote-tracking branch 'origin/expose-surface-addresses' into devJoseph Henry
2022-10-25Expose surface addresses in info jsontravis laduke
Surface Addresses are the addresses that the roots report back to you. This is helpful for trouble shooting. If you're behind NAT, the source port is different than what zerotier is bound to. If the list of surface address ports is larger than the list of bound addresses, you are probably behind symmetric NAT. Anways this can be added to later with a more simple "easy" or "hard" nat computed message somewhere.
2022-10-09Behavioral changes to multipath balance modes (See: #1745 and #1753)Joseph Henry
2022-10-06Small string fix.Adam Ierymenko
2022-09-20Improved multipath link monitoringJoseph Henry
2022-09-16Improve output of bond list commandJoseph Henry
2022-09-15Merge branch 'dev-1734-policy-defaults' of ↵Joseph Henry
https://github.com/grapexy/ZeroTierOne into grapexy-dev-1734-policy-defaults
2022-09-15Partial fix for discrepancy between docs and implementationJoseph Henry