Guus Sliepen [Tue, 27 Jul 2021 10:21:07 +0000 (12:21 +0200)]
Use inet_pton() to parse Subnets.
Nowadays all operating systems tinc runs on should support IPv6, so we
can rely on inet_pton() and inet_ntop() to convert IPv4 and IPv6
addresses. Use this instead of our own parsing code.
Guus Sliepen [Mon, 26 Jul 2021 14:03:44 +0000 (16:03 +0200)]
Fix ASAN warning.
The commit fixing the stack overflow for malformed Subnets could compare
against a NULL pointer, which works fine in practice but is undefined
behavior.
Guus Sliepen [Mon, 26 Jul 2021 13:46:48 +0000 (15:46 +0200)]
Fix `tinc get Subnet` failing.
Guus Sliepen [Mon, 26 Jul 2021 13:06:06 +0000 (15:06 +0200)]
Let the CLI prevent adding incorrect Subnets.
We did a sanitiy check when trying to add a Subnet, but we only printed
an error message, we still added the incorrect Subnet. This change
ensures we abort with a non-zero exit code.
Guus Sliepen [Mon, 26 Jul 2021 13:01:12 +0000 (15:01 +0200)]
Avoid a stack overflow when presented with a malformed IPv6 Subnet.
Found by Kirill Isakov using AFL and AddressSanitizer.
Guus Sliepen [Sun, 25 Jul 2021 17:09:47 +0000 (19:09 +0200)]
Ensure we delete removed BroadcastSubnets when reloading configuration.
Kirill Isakov [Sun, 25 Jul 2021 14:55:00 +0000 (20:55 +0600)]
GitHub CI: fail sanitizer job if any logs were created.
Kirill Isakov [Sun, 25 Jul 2021 11:15:24 +0000 (17:15 +0600)]
Fix more memory leaks found by ASAN.
Kirill Isakov [Sat, 24 Jul 2021 06:15:59 +0000 (12:15 +0600)]
Fix use-after-free in final log message on tincd exit.
Steps to reproduce:
0. build tincd with -fsanitize=address
1. start tincd:
./src/tincd -c . -D
2. capture log output in one tinc client
./src/tinc -c . log
3. this is optional, but seems to flush the bug more often: open another
tinc client and issue the purge/retry commands:
./src/tinc -c .
tinc> purge
tinc> retry
4. stop tincd (using Ctrl+C or the stop command)
Repeat until it fails with a bunch of error messages as below.
------------
==
1715850==ERROR: AddressSanitizer: heap-use-after-free on address 0x60300001d950 at pc 0x55a3fdba1fa5 bp 0x7fffbd250470 sp 0x7fffbd250468
READ of size 8 at 0x60300001d950 thread T0
0 0x55a3fdba1fa4 in real_logger tinc/src/logger.c:101:7
1 0x55a3fdba188b in logger tinc/src/logger.c:140:2
2 0x55a3fdc90c22 in main tinc/src/tincd.c:625:2
3 0x7f826a3eab24 in __libc_start_main (/usr/lib/libc.so.6+0x27b24)
4 0x55a3fda9087d in _start (tinc/src/tincd+0xd487d)
0x60300001d950 is located 0 bytes inside of 32-byte region [0x60300001d950,0x60300001d970)
freed by thread T0 here:
0 0x55a3fdb377c9 in free (tinc/src/tincd+0x17b7c9)
1 0x55a3fdb9e1b4 in list_free tinc/src/list.c:36:2
2 0x55a3fdba0ed3 in list_delete_list tinc/src/list.c:192:2
3 0x55a3fdb8385f in exit_connections tinc/src/connection.c:47:2
4 0x55a3fdbf0427 in close_network_connections tinc/src/net_setup.c:1386:2
5 0x55a3fdc90c0d in main tinc/src/tincd.c:623:2
6 0x7f826a3eab24 in __libc_start_main (/usr/lib/libc.so.6+0x27b24)
previously allocated by thread T0 here:
0 0x55a3fdb37c91 in calloc (tinc/src/tincd+0x17bc91)
1 0x55a3fdb9e157 in xzalloc tinc/src/./xalloc.h:37:12
2 0x55a3fdb9e065 in list_alloc tinc/src/list.c:29:17
3 0x55a3fdb82a43 in init_connections tinc/src/connection.c:40:20
4 0x55a3fdbea58c in setup_network tinc/src/net_setup.c:1304:2
5 0x55a3fdc90535 in main tinc/src/tincd.c:573:6
6 0x7f826a3eab24 in __libc_start_main (/usr/lib/libc.so.6+0x27b24)
Kirill Isakov [Fri, 23 Jul 2021 17:14:18 +0000 (23:14 +0600)]
More strict failure code checks in integration tests.
Kirill Isakov [Fri, 23 Jul 2021 16:37:49 +0000 (22:37 +0600)]
Fix all UBSAN warnings triggered by tests.
Kirill Isakov [Fri, 23 Jul 2021 12:46:24 +0000 (18:46 +0600)]
GitHub CI: enable AddressSanitizer.
Kirill Isakov [Fri, 23 Jul 2021 12:41:51 +0000 (18:41 +0600)]
Add tests to cover some of the fixed leaks.
Kirill Isakov [Fri, 23 Jul 2021 12:11:27 +0000 (18:11 +0600)]
Fix memory leaks triggered by integration tests.
Found by AddressSanitizer and Valgrind.
Guus Sliepen [Wed, 21 Jul 2021 10:35:09 +0000 (12:35 +0200)]
Fix a few memory leaks at exit time.
Found by Valgrind.
Guus Sliepen [Wed, 21 Jul 2021 10:15:59 +0000 (12:15 +0200)]
Avoid unhelpful warnings about UDP buffer sizes.
Don't log a warning if we never explicitly configured the
SO_RCVBUF/SO_SNDBUF sizes, and don't warn if the system allocates a
larger buffer than the one requested, as at least on Linux, it will
always double the requested size unless you hit the maximum. With this
change, we only warn when we explicitly request a buffer size and the
system allocated a smaller one.
Guus Sliepen [Wed, 21 Jul 2021 09:54:34 +0000 (11:54 +0200)]
Don't call OPENSSL_cleanup().
Some versions of LibreSSL don't have this function, even if they support
the rest of the OpenSSL 1.1 API. It also doesn't seem to affect the
output of Valgrind, so it looks like it's not necessary at all.
Guus Sliepen [Tue, 20 Jul 2021 22:04:08 +0000 (00:04 +0200)]
Call ENGINE_load_builtin_engines().
As suggested by Rosen Penev, use ENGINE_load_builtin_engines() to ensure
the AFALG engines get loaded as well. We apparently also don't need to
call OPENSSL_init_crypto() ourself.
Guus Sliepen [Tue, 20 Jul 2021 22:01:06 +0000 (00:01 +0200)]
CI: Fix installation of OpenSSL on CentOS and AlmaLinux.
Guus Sliepen [Tue, 20 Jul 2021 21:55:35 +0000 (23:55 +0200)]
CI: Install and use OpenSSL 1.1 on CentOS 7.
Guus Sliepen [Tue, 20 Jul 2021 20:55:56 +0000 (22:55 +0200)]
Install OpenSSL 1.1 in the CentOS 7 test environment.
Guus Sliepen [Tue, 20 Jul 2021 20:23:52 +0000 (22:23 +0200)]
Make tinc --batch --force join enable the tinc-up script.
The expected behavior of --batch --force is that all parameters in the
invitation are accepted, whether unsafe or not. Unsafe variables were
already accepted with --force in commit
061362d2f, this commit ensures
the generated tinc-up script is enabled as well.
Fixes #196 on GitHub.
Guus Sliepen [Tue, 20 Jul 2021 20:10:56 +0000 (22:10 +0200)]
Require OpenSSL 1.1.0 or later.
This gets rid of some backwards compatibility code, and avoids calling
deprecated OpenSSL functions.
Fixes #244 on GitHub.
Guus Sliepen [Tue, 20 Jul 2021 19:14:23 +0000 (21:14 +0200)]
Avoid trying to send an ANS_KEY request to unreachable nodes.
We could have a REQ_KEY coming from a node that is not reachable; either
because DEL_EDGEs have overtaken the REQ_KEY, or perhaps if TunnelServer
is used and some nodes have a different view of reachability.
This might fix GitHub issue #247.
Guus Sliepen [Tue, 20 Jul 2021 18:31:49 +0000 (20:31 +0200)]
Slightly better RNG seed for tincctl.
This prevents the Port from being the same when initializing multiple
instances of tinc in a short timespan.
Kirill Isakov [Tue, 20 Jul 2021 12:00:49 +0000 (18:00 +0600)]
Add compression.test
Kirill Isakov [Tue, 20 Jul 2021 12:00:05 +0000 (18:00 +0600)]
Add cleanup hook for integration tests
Kirill Isakov [Tue, 20 Jul 2021 08:49:46 +0000 (14:49 +0600)]
List supported features in tinc/tincd --version
Kirill Isakov [Tue, 20 Jul 2021 07:29:31 +0000 (13:29 +0600)]
LZ4: try system library first, fallback to builtin
Darik Horn [Tue, 20 Jul 2021 04:29:39 +0000 (10:29 +0600)]
Add LZ4 compression support
Kirill Isakov [Sat, 17 Jul 2021 16:50:10 +0000 (22:50 +0600)]
Vendor LZ4 source
Kirill Isakov [Tue, 20 Jul 2021 07:23:54 +0000 (13:23 +0600)]
.gitignore temporary files (configure~, etc)
Kirill Isakov [Tue, 20 Jul 2021 15:21:13 +0000 (21:21 +0600)]
sr.ht CI: add liblz4
Needed for testing LZ4 compression support when using the system
library.
Kirill Isakov [Mon, 19 Jul 2021 19:03:06 +0000 (01:03 +0600)]
Some cleanups in GitHub Actions CI
- run tests on more Linux distributions
- add test runs with clang sanitizers (TSAN / UBSAN for now)
- check code formatting only once
- check test scripts formatting (shfmt)
- static analysis for test scripts (shellcheck)
- save more test logs and other debug info
- add missing pieces to Ubuntu packages
- test .debs on clean machine before publishing
- git clone full history for changelog generation
- support old versions of git on Linux
- rename some steps
Kirill Isakov [Sat, 3 Jul 2021 15:22:39 +0000 (21:22 +0600)]
test/splice.c: reformat with astyle
Guus Sliepen [Tue, 20 Jul 2021 13:57:37 +0000 (15:57 +0200)]
Check that UNIX socket filenames are not too long.
UNIX socket filenames must fit in a struct sockaddr_un, and typically this
only has about 100 bytes of storage. This is perfectly fine for normal use
of tinc, but this caused failures when running make distcheck, which ends
up creating a rather deep directory structure. With this commit, at least
a proper error message is printed instead of silently truncating the
filename.
Guus Sliepen [Tue, 20 Jul 2021 12:15:41 +0000 (14:15 +0200)]
Fix running the test suite in out-of-tree builds.
Kirill Isakov [Mon, 19 Jul 2021 08:32:13 +0000 (14:32 +0600)]
Rewrite the test suite for better compat and stability
Keeps all of the previous checks, but uses tinc scripts
instead of sleep(1) delays.
Improves and/or adds compatibility with:
- Windows (Msys2);
- FreeBSD;
- NetBSD;
- OpenBSD.
Kirill Isakov [Sat, 17 Jul 2021 12:17:11 +0000 (18:17 +0600)]
Allow running sptps_test on Windows
On Windows, you're not supposed to call select() on anything except
proper BSD sockets, so we can't reuse the same select() loop that's been
working fine on every other operating system.
This is a hack which reads stdin in a separate thread and pushes data to
the main through a TCP socket, which can then be used with select() instead
of reading stdin directly.
Mathew Heard [Tue, 29 Jun 2021 00:24:00 +0000 (10:24 +1000)]
Bail out of logging early.
Low hanging fruit, 2% of perf trace.
Mathew Heard [Mon, 12 Jul 2021 01:39:31 +0000 (11:39 +1000)]
ci: run for all branches
(cherry picked from commit
5666f0d99e3698bf4b50d243151cb1a445bb81ea)
Kirill Isakov [Mon, 12 Jul 2021 10:48:58 +0000 (16:48 +0600)]
src/getopt.h: add missing header guard
(cherry picked from commit
c97370e5714389ef44cd5682c0916fcc8daddeff)
Mathew Heard [Mon, 12 Jul 2021 02:53:45 +0000 (12:53 +1000)]
Fix overrun in prf() if hmac size not divisible into key size
Not seen only due to chacha having a 64byte key and a 64byte HMAC (SHA512) being used
Kirill Isakov [Sat, 10 Jul 2021 15:11:27 +0000 (21:11 +0600)]
CI: add support for FreeBSD/NetBSD/OpenBSD through sourcehut
Kirill Isakov [Sat, 10 Jul 2021 11:13:34 +0000 (17:13 +0600)]
src/tincctl.c: inverse exit code for 'tinc stop' on Windows
On Windows, the `tinc stop` command returned 1 on success and 0 on
failure, which is the opposite of what happens everywhere else.
Kirill Isakov [Mon, 5 Jul 2021 04:37:04 +0000 (10:37 +0600)]
invitation.c: fix socket error checking on Windows
Guus Sliepen [Fri, 2 Jul 2021 14:55:52 +0000 (16:55 +0200)]
Update THANKS.
Guus Sliepen [Fri, 2 Jul 2021 14:55:43 +0000 (16:55 +0200)]
Add a SECURITY.md file describing our security policy.
Kirill Isakov [Fri, 2 Jul 2021 13:38:07 +0000 (19:38 +0600)]
Run tests on pushes and pull requests
Kirill Isakov [Thu, 1 Jul 2021 18:10:02 +0000 (00:10 +0600)]
test/legacy-protocol.test: fix intermittent "Cannot read greeting from control socket"
Kirill Isakov [Thu, 1 Jul 2021 13:35:08 +0000 (19:35 +0600)]
Allow running tests on macOS
Niklas Hambüchen [Sun, 12 Apr 2020 18:21:02 +0000 (20:21 +0200)]
Warn if system capped requested socket buffer sizes.
Mathew Heard [Tue, 29 Jun 2021 05:03:50 +0000 (15:03 +1000)]
Fail early in send_udp_probe_packet().
Mathew Heard [Tue, 29 Jun 2021 04:55:14 +0000 (14:55 +1000)]
Check interval bounds for UDP probe size.
Mathew Heard [Tue, 29 Jun 2021 04:48:04 +0000 (14:48 +1000)]
Ensure send_udp_probe_packet len is valid for the buffer size.
Mathew Heard [Tue, 29 Jun 2021 00:49:01 +0000 (10:49 +1000)]
perform cheap checks first
minor optimization
Guus Sliepen [Sun, 27 Jun 2021 17:29:16 +0000 (19:29 +0200)]
Releasing 1.1pre18.
Guus Sliepen [Sun, 27 Jun 2021 17:16:53 +0000 (19:16 +0200)]
Update THANKS.
Guus Sliepen [Sun, 27 Jun 2021 15:23:30 +0000 (17:23 +0200)]
Update copyright notices.
Guus Sliepen [Sun, 27 Jun 2021 15:12:06 +0000 (17:12 +0200)]
Fix usage of @code and @samp commands.
Guus Sliepen [Sun, 27 Jun 2021 14:52:03 +0000 (16:52 +0200)]
Fix spelling errors.
Found by codespell.
pacien [Tue, 8 Sep 2020 23:24:28 +0000 (01:24 +0200)]
tincctl: restrict umask argument for FORTIFY
`umask(mode)` calls that do not verify `(mode & 0777) == mode` are
rejected when the libc FORTIFY checks are enabled [1].
The unrestricted `~perms` was indeed making this assertion fail.
[1]: https://android.googlesource.com/platform/bionic/+/refs/tags/android-11.0.0_r3/libc/bionic/fortify.cpp#404
Guus Sliepen [Sun, 27 Jun 2021 14:19:37 +0000 (16:19 +0200)]
Don't try to forward packets to a node we don't have a key for.
If we got a packet that's meant to be relayed, don't call
sptps_send_data() if we don't have a valid key yet for the desination
node, but do keep trying to get a working connection to that node. Based
on a patch from thorkill.
Guus Sliepen [Sun, 27 Jun 2021 14:06:58 +0000 (16:06 +0200)]
Fix for the event loop on Windows.
The code did not take into account that the return value of
WSAWaitForMultipleEvents() is the offset into the event array plus
WSA_WAIT_EVENT_0.
Based on a patch from arsh0r.
Guus Sliepen [Sun, 27 Jun 2021 14:01:52 +0000 (16:01 +0200)]
Log errors when add_edge() fails to insert into the edge trees.
This should never happen, but if it does we want to have it at least
logged instead of causing issues later on.
Based on a patch from arsh0r.
Guus Sliepen [Sun, 27 Jun 2021 13:36:44 +0000 (15:36 +0200)]
Fix the check for sys/un.h.
Guus Sliepen [Sun, 27 Jun 2021 13:31:49 +0000 (15:31 +0200)]
Don't compile support for Device=fd on platforms that do not support UNIX sockets.
Guus Sliepen [Sun, 27 Jun 2021 13:02:13 +0000 (15:02 +0200)]
Fix compiler warnings.
Guus Sliepen [Sun, 27 Jun 2021 12:55:23 +0000 (14:55 +0200)]
Fix warnings from autoconf.
Bump the minimum required version of autoconf to 2.69, and avoid using
macros it warns are obsolete.
Guus Sliepen [Tue, 22 Jun 2021 20:36:13 +0000 (22:36 +0200)]
Fix warnings from GCC about VLAs.
Guus Sliepen [Tue, 22 Jun 2021 20:35:50 +0000 (22:35 +0200)]
Reformat the code using astyle.
Ilia Pavlikhin [Tue, 24 Sep 2019 15:34:12 +0000 (15:34 +0000)]
Add Subnet checking to tinc cli
Ilia Pavlikhin [Tue, 24 Sep 2019 11:26:52 +0000 (11:26 +0000)]
Fix infinity loop when network address and
prefix do not match
Aaron LI [Sun, 5 Apr 2020 11:07:42 +0000 (19:07 +0800)]
Use auto-clone device /dev/{tun,tap} as default on FreeBSD/DragonFly
DragonFly BSD doesn't pre-create `/dev/tunX` or `/dev/tapX` devices
anymore since 2019-Jul-31 [0]. So it's better to use the auto-clone
device `/dev/tun` or `/dev/tap` as the default TUN or TAP device.
The TUN/TAP device has the same behavior on DragonFly BSD and FreeBSD.
See also pull request: https://github.com/DragonFlyBSD/DeltaPorts/pull/925
[0] https://github.com/DragonFlyBSD/DragonFlyBSD/commit/
f1e9a4fff5aaac2be3a291dbfea94f94755991b8
Rosen Penev [Fri, 2 Apr 2021 21:36:39 +0000 (14:36 -0700)]
fix compilation without deprecated OpenSSL APIs
This was fixed for 1.0 but missing for 1.1.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Guus Sliepen [Mon, 21 Sep 2020 21:22:18 +0000 (23:22 +0200)]
Fix segfault when failing to read random numbers.
Because the result of read() was incorrectly stored in an unsigned
variable, an error reading from the random number generator device would
result in an infinite loop that would start writing out of bounds and
eventually corrupt the stack.
leptonyu [Sun, 15 Mar 2020 01:39:42 +0000 (01:39 +0000)]
fix macos build
Guus Sliepen [Mon, 20 Jan 2020 20:12:17 +0000 (21:12 +0100)]
Include stddef.h if available.
This is necessary to compile fd_device.c.
pacien [Mon, 20 Jan 2020 12:58:13 +0000 (13:58 +0100)]
fd_device: allow fd to be passed through a unix socket
New restrictions on the Android OS forbid direct leaking of file descriptors.
This patch allows the tinc daemon to have an fd and the associated
permissions transferred to it through a Unix domain socket.
Guus Sliepen [Wed, 17 Jul 2019 23:49:48 +0000 (01:49 +0200)]
Try harder to connect to unreachable nodes.
Guus Sliepen [Wed, 17 Jul 2019 23:33:38 +0000 (01:33 +0200)]
Don't keep an address cache in an outgoing_t.
Address caches are associated with nodes, so just use the address cache
in the node_t struct. Also ensure we always have opened an address cache in
setup_outgoing_connection().
Thanks to admincheg for finding this issue.
Guus Sliepen [Wed, 17 Jul 2019 22:31:54 +0000 (00:31 +0200)]
Disable AutoConnect in the ns-ping test.
Guus Sliepen [Wed, 17 Jul 2019 22:31:11 +0000 (00:31 +0200)]
Avoid void pointer arithmetic.
Maciej S. Szmigiero [Tue, 16 Apr 2019 13:00:50 +0000 (15:00 +0200)]
Fix strict aliasing violation in inet_checksum()
inet_checksum() accesses packet data as an array of uint16_t, but the
packet data can be for example of "anonymous struct pseudo" type from
route_ipv6_unreachable().
This type isn't a compatible type with uint16_t so a strict aliasing
violation occurs and causes the checksum to be computed incorrectly.
Fix this by using the memcpy() idiom to read the packet data as an array of
uint16_t in inet_checksum() (this should be understood by compilers and
optimized accordingly, so no actual copy occurs).
Maciej S. Szmigiero [Tue, 16 Apr 2019 12:19:48 +0000 (14:19 +0200)]
Revert "Work around a GCC bug that causes inet_checksum() to give wrong results."
This reverts commit
7c73cb3ace6659df58ec2382b8d47bb521dad886.
Andreas Rammhold [Thu, 28 Feb 2019 19:38:14 +0000 (20:38 +0100)]
fix: use EVP_DecryptUpdate while decrypting
With OpenSSL versions 1.0.2r & 1.1.1b there were changes in regards to
how OpenSSL treats misuse of Encrypt/Decrypt EVP methods in the opposite
case. E.g. using the encrypt methods in a decrypt context. OpenSSL now
returns an error in these situations. [1]
Since tinc used the EVP_EncryptUpdate function in the cipher_decrypt
function the new sanity check was triggered causing tinc to be unusable
with said OpenSSL versions.
[1] https://github.com/openssl/openssl/pull/7852
Guus Sliepen [Tue, 18 Dec 2018 16:44:08 +0000 (17:44 +0100)]
Prevent large amounts of UDP probes being sent consecutively.
We cannot reset udp_ping_sent to zero when we receive a valid reply to
an UDP probe, because that would cause a new one to be sent immediately
in try_udp(). Instead, add a bit to node_status_t to keep track of whether we
have a UDP probe that's waiting for a reply.
Thanks to Ronny Nilsson for spotting the source of the problem.
Guus Sliepen [Fri, 30 Nov 2018 13:47:52 +0000 (14:47 +0100)]
Fix the scripts test.
This was broken because of the changes in commit
44f3023.
Guus Sliepen [Fri, 30 Nov 2018 13:41:55 +0000 (14:41 +0100)]
Double-quote node names in dump graph output.
This is needed for all nodes with a name starting with a digit,
otherwise the ID would be interpreted as a numeral.
Based on the patch from Quentin Rameau for tinc 1.0.
Fabian Maurer [Mon, 19 Nov 2018 21:11:10 +0000 (22:11 +0100)]
Generate tinc-up.bat on windows
Fabian Maurer [Mon, 19 Nov 2018 21:05:13 +0000 (22:05 +0100)]
Fix interface spelling
Guus Sliepen [Mon, 22 Oct 2018 18:34:19 +0000 (20:34 +0200)]
Handle DOS line endings in invitation files.
Guus Sliepen [Mon, 22 Oct 2018 18:31:37 +0000 (20:31 +0200)]
Attempt to make the test suite work with Windows executables.
The test suite still assumes a POSIX shell to run the tests, but now handles
the case when the executables themselves are (cross-)compiled for Windows,
with a .exe extension. Also, DOS line endings must be converted to UNIX
line endings in some cases.
Some tests now pass on Linux+Wine, but others do not, mainly due to Wine
not handling services very well.
Guus Sliepen [Mon, 22 Oct 2018 15:20:30 +0000 (17:20 +0200)]
Prevent sptps_test from sending overly large UDP packets.
This fixes the test suite on macOS, which has a lo0 interface with an MTU
of 16384, which is smaller than the maximum packet size we could send.
Guus Sliepen [Mon, 22 Oct 2018 15:01:08 +0000 (17:01 +0200)]
Make sure the stop command works on Windows if tincd is running in the foreground.
Guus Sliepen [Mon, 22 Oct 2018 14:53:12 +0000 (16:53 +0200)]
Drop support for Cygwin.
Tinc can be built as a native Windows binary using MinGW, and should support
all of the features that the Cygwin version did.
Guus Sliepen [Sun, 21 Oct 2018 14:24:10 +0000 (16:24 +0200)]
Fix compiling test binaries on Windows.
Guus Sliepen [Sun, 21 Oct 2018 14:23:45 +0000 (16:23 +0200)]
Fix warnings when compiling for Windows.
Guus Sliepen [Thu, 18 Oct 2018 19:41:52 +0000 (21:41 +0200)]
Skip the legacy protocol test if that protocol is disabled.
Guus Sliepen [Thu, 18 Oct 2018 15:19:47 +0000 (17:19 +0200)]
Allow "tinc --force join" to accept all variables sent in an invitaiton.