Guus Sliepen [Thu, 2 Jun 2011 18:27:16 +0000 (20:27 +0200)]
More stable sorting in tincctl top.
Although we use qsort(), which is not guaranteed to be stable, resorting the
previously sorted array is more stable than recreating and resorting the array
each time.
Guus Sliepen [Thu, 2 Jun 2011 16:22:26 +0000 (18:22 +0200)]
Fix some compiler and cppcheck warnings.
Guus Sliepen [Thu, 2 Jun 2011 16:07:50 +0000 (18:07 +0200)]
Remove support for the Ethertap device.
Guus Sliepen [Thu, 2 Jun 2011 15:57:53 +0000 (17:57 +0200)]
Remove unused functions and variables.
Guus Sliepen [Thu, 2 Jun 2011 15:55:29 +0000 (17:55 +0200)]
Don't #include <alloca.h> anymore.
Guus Sliepen [Thu, 2 Jun 2011 15:53:35 +0000 (17:53 +0200)]
Drop the GNU memcmp.c implementation.
Guus Sliepen [Thu, 2 Jun 2011 15:45:06 +0000 (17:45 +0200)]
Drop the GNU malloc.c, realloc.c, and xmalloc.c.
We live in the 21st century, and we require C99 semantics, so we do not need to
work around buggy libcs. The xmalloc() and related functions are now static
inline functions.
Guus Sliepen [Thu, 2 Jun 2011 15:14:30 +0000 (17:14 +0200)]
Simplify signal handling.
We don't override any signal handlers anymore except those for SIGPIPE and
SIGCHLD. Fatal signals (SIGSEGV, SIGBUS etc.) will terminate tincd and
optionally dump core. The previous behaviour was to terminate gracefully and
try to restart, but that usually failed and made any core dump useless.
Guus Sliepen [Sun, 29 May 2011 20:34:19 +0000 (22:34 +0200)]
Remove outgoing event in free_connection().
Guus Sliepen [Sun, 29 May 2011 20:14:35 +0000 (22:14 +0200)]
Initialise priority field to zero for packets read from the VPN interface.
Guus Sliepen [Sun, 29 May 2011 20:12:37 +0000 (22:12 +0200)]
Cosmetic fix when pressing 's' in tincctl top.
Guus Sliepen [Sun, 29 May 2011 20:10:54 +0000 (22:10 +0200)]
Show hostname and port in error message when connecting to a running tincd.
Sven-Haegar Koch [Sun, 29 May 2011 19:53:21 +0000 (21:53 +0200)]
do_outgoing_connection() may delete a failed connection, and the structure
must not be accessed afterwards.
Sven-Haegar Koch [Sun, 29 May 2011 19:35:31 +0000 (21:35 +0200)]
src/net_socket.c bind_to_address(): Use after free in error path.
Guus Sliepen [Sun, 29 May 2011 12:41:05 +0000 (14:41 +0200)]
Allow tincctl to connect to something besides localhost.
This would allow tincctl to connect to a remote tincd, or to a local tincd that
isn't listening on localhost, for example if it is using the BindToInterface or
BindToAddress options.
Sven-Haegar Koch [Sat, 28 May 2011 01:48:07 +0000 (03:48 +0200)]
fgets() returns NULL on error, not < 0
Sven-Haegar Koch [Sat, 28 May 2011 01:46:39 +0000 (03:46 +0200)]
sparse fixup: warning: Using plain integer as NULL pointer
Sven-Haegar Koch [Sat, 28 May 2011 01:57:20 +0000 (03:57 +0200)]
sparse fixup: warning: non-ANSI function declaration of function '...'
Sven-Haegar Koch [Sat, 28 May 2011 01:56:06 +0000 (03:56 +0200)]
sparse fixup: warning: symbol '...' was not declared. Should it be static?
Sven-Haegar Koch [Sat, 28 May 2011 01:12:03 +0000 (03:12 +0200)]
sparse fixup: error: too many arguments for function send_key_changed
Sven-Haegar Koch [Sat, 28 May 2011 01:08:31 +0000 (03:08 +0200)]
sparse fixup: error: dubious one-bit signed bitfield
Sven-Haegar Koch [Sat, 28 May 2011 00:57:40 +0000 (02:57 +0200)]
Use same definition for xalloc_fail_func as is really used.
Sven-Haegar Koch [Fri, 27 May 2011 23:36:10 +0000 (01:36 +0200)]
Removed two newlines from the end of log messages which created empty lines.
Sven-Haegar Koch [Fri, 27 May 2011 23:33:45 +0000 (01:33 +0200)]
Fixed error logging on "Input buffer full" condition.
Guus Sliepen [Sun, 22 May 2011 12:17:30 +0000 (14:17 +0200)]
Add the ability to dump all traffic going through route() over a control connection.
One can get the packet stream in pcap format, which can be decoded using
tcpdump, for example:
tincctl -n <netname> pcap | tcpdump -r -
Guus Sliepen [Sun, 22 May 2011 12:02:27 +0000 (14:02 +0200)]
Reset tcplen after use.
Guus Sliepen [Sun, 22 May 2011 11:15:27 +0000 (13:15 +0200)]
Check if an event is initialized before calling event_del().
Libevent prints a warning to stderr if we do that.
Guus Sliepen [Sun, 22 May 2011 11:15:05 +0000 (13:15 +0200)]
Always compact the buffer if it has reached MAXBUFSIZE.
Guus Sliepen [Sun, 22 May 2011 10:56:51 +0000 (12:56 +0200)]
Compact input buffer before trying to read instead of after.
Also log an error when the input buffer contains more than MAXBUFSIZE bytes
already, instead of silently claiming the other side closed the connection.
Guus Sliepen [Tue, 17 May 2011 08:58:22 +0000 (10:58 +0200)]
Fix some compiler warnings.
Guus Sliepen [Tue, 17 May 2011 08:57:30 +0000 (10:57 +0200)]
Use GetItemCount() on ListCtrls instead of directly accessing ItemCount.
Guus Sliepen [Mon, 16 May 2011 07:48:19 +0000 (09:48 +0200)]
Add top.h.
Guus Sliepen [Mon, 16 May 2011 07:46:54 +0000 (09:46 +0200)]
Add tincctl.h.
Guus Sliepen [Sun, 15 May 2011 14:30:13 +0000 (16:30 +0200)]
Nicer top command.
- Configurable refresh interval.
- Switch between cumulative count or current rate.
- Configurable sorting.
Guus Sliepen [Sun, 15 May 2011 14:29:54 +0000 (16:29 +0200)]
Allow inserting items in the middle of a list.
Guus Sliepen [Sun, 15 May 2011 11:16:48 +0000 (13:16 +0200)]
Add a very primitive "top" command to tincctl.
Guus Sliepen [Sun, 15 May 2011 10:06:21 +0000 (12:06 +0200)]
Add an autoconf check for the curses library.
Guus Sliepen [Sun, 15 May 2011 09:59:13 +0000 (11:59 +0200)]
Dump traffic statistics over control sockets.
Guus Sliepen [Sat, 14 May 2011 22:42:29 +0000 (00:42 +0200)]
Add per-node traffic counters.
Guus Sliepen [Sat, 14 May 2011 20:30:23 +0000 (22:30 +0200)]
Several fixes for the buffer code.
Guus Sliepen [Sat, 14 May 2011 17:20:56 +0000 (19:20 +0200)]
Remove use of bufferevent and eventbuffers, use our own buffering instead.
Guus Sliepen [Sat, 14 May 2011 17:15:04 +0000 (19:15 +0200)]
Add simple buffer management code.
Libevent 2.0's buffer code is not completely backward compatible with 1.4's.
In order to not (mis)use it anymore, we implement it ourselves. The buffers
are automatically expanding when necessary. When consuming data from the
buffer, no memmove()s are performed. Only when adding to the buffer would
write past the end do we shift everything back to the start.
Guus Sliepen [Sat, 14 May 2011 09:52:35 +0000 (11:52 +0200)]
Fix check for event initialization due to the merge.
Guus Sliepen [Mon, 9 May 2011 19:35:14 +0000 (21:35 +0200)]
Merge branch 'master' of git://tinc-vpn.org/tinc into 1.1
Conflicts:
NEWS
README
configure.in
doc/tincd.8.in
lib/pidfile.c
src/bsd/device.c
src/dropin.h
src/net.c
src/net_packet.c
src/node.c
src/process.c
src/tincd.c
Guus Sliepen [Sun, 8 May 2011 21:17:46 +0000 (23:17 +0200)]
Releasing 1.0.14.
Guus Sliepen [Sun, 8 May 2011 21:12:44 +0000 (23:12 +0200)]
Include <inttypes.h> when using intptr_t.
Guus Sliepen [Sun, 8 May 2011 21:12:06 +0000 (23:12 +0200)]
Ensure proper linking with OpenSSL with recent versions of MinGW.
Guus Sliepen [Sun, 8 May 2011 19:22:20 +0000 (21:22 +0200)]
Update THANKS and copyright information.
Guus Sliepen [Sun, 8 May 2011 19:06:06 +0000 (21:06 +0200)]
Check for EVP_EncryptInit_ex instead of SHA1_Version in OpenSSL.
The latter function disappeared, and wasn't actually used in tinc, so now we
check on a function that we do use.
Guus Sliepen [Sun, 8 May 2011 10:40:44 +0000 (12:40 +0200)]
Always use the default signal handler for ABRT signals.
This will allow coredumps to be generated when tinc is daemonized.
Also add the -kABRT option.
Guus Sliepen [Sun, 8 May 2011 10:16:26 +0000 (12:16 +0200)]
Increase threshold for detecting two nodes with the same Name.
In commit
4a21aabada23d1d2c8a10f54dd7248171c4ec82f, code was added to detect
contradicting ADD_EDGE and DEL_EDGE messages being sent, which is an indication
of two nodes with the same Name connected to the same VPN. However, these
contradictory messages can also happen when there is a network partitioning. In
the former case a loop happens which causes many contradictory message, while
in the latter case only a few of those messages will be sent. So, now we
increase the threshold to at least 10 of both ADD_EDGE and DEL_EDGE messages.
Julien Muchembled [Thu, 28 Apr 2011 11:21:55 +0000 (13:21 +0200)]
Fix command-line '-o' option for host configuration
This fixes a regression introduced by commit
667b1ba while refactoring option
parsing code.
Guus Sliepen [Wed, 9 Mar 2011 08:34:56 +0000 (09:34 +0100)]
Do not set indirect flag on edges from nodes with multiple addresses.
Since tinc now handles UDP packets with a different source address and port
than used for TCP connections, the heuristic to treat edges as indirect when
tinc could detect that multiple addresses were used does not make sense
anymore, and can actually reduce performance.
Guus Sliepen [Fri, 18 Feb 2011 22:11:43 +0000 (23:11 +0100)]
Prevent anything from updating our own UDP address.
Because we don't want to keep track of that, and this will cause the node
structure from being relinked into the node tree, which results in myself
pointing to an invalid address.
Guus Sliepen [Fri, 18 Feb 2011 22:02:11 +0000 (23:02 +0100)]
Fix spurious misidentification of incoming UDP packets.
When a UDP packet was received with an unknown source address/port, and if it
failed a HMAC check against known keys, it could still incorrectly assign that
UDP address to another node. This would temporarily cause outgoing UDP packets
to go to the wrong destination address, until packets from the correct address
were received again.
Rumko [Sat, 12 Feb 2011 17:22:14 +0000 (18:22 +0100)]
DragonFlyBSD support
* added DragonFly BSD support
* added a check for sys/resource.h (needed on DragonFly)
Guus Sliepen [Mon, 7 Feb 2011 17:34:55 +0000 (18:34 +0100)]
Add support for VDE through libvdeplug.
When compiled with vde/device.c, tinc will connect to a vde_switch instance
instead of using a tun/tap device.
Guus Sliepen [Sat, 29 Jan 2011 09:49:44 +0000 (10:49 +0100)]
Fix typo spotted by Andrew Scheller.
Guus Sliepen [Wed, 12 Jan 2011 19:57:14 +0000 (20:57 +0100)]
Proper check and dropin replacement for usleep().
Guus Sliepen [Sun, 2 Jan 2011 16:25:24 +0000 (17:25 +0100)]
Update the NEWS.
Guus Sliepen [Sun, 2 Jan 2011 16:25:03 +0000 (17:25 +0100)]
Update the manual.
Guus Sliepen [Sun, 2 Jan 2011 16:24:23 +0000 (17:24 +0100)]
Document the behavior of "-n."
Guus Sliepen [Sun, 2 Jan 2011 15:59:42 +0000 (16:59 +0100)]
Remove unused variables.
Guus Sliepen [Sun, 2 Jan 2011 15:55:42 +0000 (16:55 +0100)]
Replace bogus #else with #endif.
Found by cppcheck, which complained about lenin not being initialized, but the
real problem is that reading packets would fail when using code compiled with
--tunemu on a normal tun device.
Guus Sliepen [Sun, 2 Jan 2011 15:52:36 +0000 (16:52 +0100)]
Limit field width when scanning PID file.
Cppcheck warns that scanf() might otherwise crash when presented with a huge,
bogus PID file.
Guus Sliepen [Sun, 2 Jan 2011 15:50:24 +0000 (16:50 +0100)]
Close all filedescriptors in Solaris close_device().
Guus Sliepen [Sun, 2 Jan 2011 14:02:23 +0000 (15:02 +0100)]
Always send MTU probes at least once every PingInterval.
Before, if MTU probes failed, tinc would stop sending probes until the next
time keys were regenerated (by default, once every hour). Now it continues to
send them every PingInterval, so it recovers faster from temporary failures.
Guus Sliepen [Sat, 20 Nov 2010 14:31:11 +0000 (14:31 +0000)]
Use setpriority() instead of nice() on UNIX-like systems.
The return value of nice() can not reliably indicate errors. The return value
of the setpriority() call is well-defined.
Guus Sliepen [Fri, 19 Nov 2010 12:26:20 +0000 (12:26 +0000)]
Do not try to dereference myself->connection->config_tree.
This was a bug introduced due to an incomplete merge (commit
ff71f289022ccb91abc2726f16522d55b5ccf0f6).
Guus Sliepen [Fri, 19 Nov 2010 12:22:48 +0000 (12:22 +0000)]
Merge branch 'master' into 1.1
Conflicts:
src/net_packet.c
src/openssl/rsagen.h
src/protocol_auth.c
src/protocol_key.c
Guus Sliepen [Tue, 16 Nov 2010 16:28:41 +0000 (17:28 +0100)]
Attribution for Brandon Black.
Guus Sliepen [Tue, 16 Nov 2010 15:45:36 +0000 (16:45 +0100)]
Fix variable length array declaration.
Guus Sliepen [Sat, 13 Nov 2010 20:36:51 +0000 (21:36 +0100)]
Free replay window when freeing a node_t.
Guus Sliepen [Sat, 13 Nov 2010 20:34:59 +0000 (21:34 +0100)]
Fix warning message when setting SO_RCVBUF or SO_SNDBUF fails.
Brandon L Black [Sat, 13 Nov 2010 18:05:51 +0000 (12:05 -0600)]
Improved handling of queue-jumping packets on receive
Brandon L Black [Sat, 13 Nov 2010 18:05:50 +0000 (12:05 -0600)]
Configurable ReplayWindow size, zero disables
Brandon L Black [Sat, 13 Nov 2010 18:05:49 +0000 (12:05 -0600)]
Configurable SO_RCVBUF/SO_SNDBUF for the UDP socket
Brandon L Black [Sat, 13 Nov 2010 18:05:48 +0000 (12:05 -0600)]
Experimental IFF_ONE_QUEUE support for Linux
Guus Sliepen [Sat, 13 Nov 2010 14:55:38 +0000 (15:55 +0100)]
Use variable length arrays instead of alloca().
Guus Sliepen [Sat, 13 Nov 2010 14:50:39 +0000 (15:50 +0100)]
Provide usleep() for Windows.
Guus Sliepen [Sat, 13 Nov 2010 14:46:19 +0000 (15:46 +0100)]
Link tincctl with dropin.o.
Guus Sliepen [Fri, 12 Nov 2010 15:15:29 +0000 (16:15 +0100)]
Merge branch 'master' into 1.1
Conflicts:
doc/tincd.8.in
lib/pidfile.c
src/graph.c
src/net.c
src/net.h
src/net_packet.c
src/net_setup.c
src/net_socket.c
src/netutl.c
src/node.c
src/node.h
src/protocol_auth.c
src/protocol_key.c
src/tincd.c
Guus Sliepen [Fri, 12 Nov 2010 10:38:05 +0000 (11:38 +0100)]
Don't use strlen() on a NULL pointer.
A bug introduced in commit
667b1bac77b134cf32c98d5dc25619e8c3303f52 caused tinc
to crash on startup.
Guus Sliepen [Fri, 12 Nov 2010 10:33:01 +0000 (11:33 +0100)]
Add short options -R and -U to the tincd(8) manpage.
Guus Sliepen [Tue, 2 Nov 2010 13:23:43 +0000 (14:23 +0100)]
Read error counter must be static.
Guus Sliepen [Tue, 2 Nov 2010 13:18:35 +0000 (14:18 +0100)]
Quit when there are too many consecutive errors on the tun/tap device.
Although transient errors sometimes happen on the tun/tap device (for example,
if the kernel is temporarily out of buffer space), there are situations where
the tun/tap device becomes permanently broken. Instead of endlessly spamming
the syslog, we now sleep an increasing amount of time between consecutive read
errors, and if reads still fail after 10 attempts (approximately 3 seconds),
tinc will quit.
Michael Tokarev [Sun, 24 Oct 2010 11:23:10 +0000 (15:23 +0400)]
Treat netname="." in a special way.
Treat netname "." in a special way as if there was no netname
specified. Before, f.e. tincd -n. -k didn't work as it tried
to open /var/run/tinc-.pid. Now -n. works as if there was no
-n option is specified.
Signed-Off-By: Michael Tokarev <mjt@tls.msk.ru>
Guus Sliepen [Fri, 22 Oct 2010 20:46:44 +0000 (22:46 +0200)]
Remove unused variables.
These were caused by commit
667b1bac77b134cf32c98d5dc25619e8c3303f52.
Guus Sliepen [Fri, 22 Oct 2010 20:43:50 +0000 (22:43 +0200)]
Abort disabling old PEM keys on I/O errors.
Guus Sliepen [Fri, 22 Oct 2010 20:42:21 +0000 (22:42 +0200)]
Ensure there is a newline character before a PEM key is written.
Guus Sliepen [Fri, 22 Oct 2010 11:40:04 +0000 (13:40 +0200)]
Attribution for Timothy Redaelli.
Guus Sliepen [Fri, 22 Oct 2010 11:17:42 +0000 (13:17 +0200)]
Attribution for Julien Muchembled.
Guus Sliepen [Fri, 22 Oct 2010 11:06:06 +0000 (13:06 +0200)]
Remove duplicate command-line option parsing.
Also fix parsing of command-line host configuration options for the local node.
Guus Sliepen [Fri, 22 Oct 2010 10:47:12 +0000 (12:47 +0200)]
Merge local host configuration with server configuration.
With some exceptions, tinc only accepted host configuration options for the
local node from the corresponding host configuration file. Although this is
documented, many people expect that they can also put those options in
tinc.conf. Tinc now internally merges the contents of both tinc.conf and the
local host configuration file.
Julien Muchembled [Fri, 3 Sep 2010 11:34:22 +0000 (13:34 +0200)]
New '-o' option to configure server or hosts from command line
Options given on the command line have precedence over configuration from files.
This can be useful, for example, for a roaming node, for which 'ConnectTo' and
<host>.Address depends on its location.
Guus Sliepen [Fri, 4 Jun 2010 14:03:19 +0000 (16:03 +0200)]
Do not append an address to ANS_KEY messages if we don't know any address.
This would let tinc raise an exception when an ANS_KEY request crossed a
DEL_EDGE request for the node sending the key.
Guus Sliepen [Fri, 4 Jun 2010 13:04:08 +0000 (15:04 +0200)]
Use 64 bit counters to keep track of bytes sent/received from the virtual network interface.
Guus Sliepen [Fri, 4 Jun 2010 12:53:52 +0000 (14:53 +0200)]
Detect and prevent two nodes with the same Name being on the VPN simultaneously.
In this situation, the two nodes will start fighting over the edges they announced.
When we have to contradict both ADD_EDGE and DEL_EDGE messages, we log a warning,
and with 25% chance per PingTimeout we quit.
Guus Sliepen [Fri, 7 May 2010 10:24:49 +0000 (12:24 +0200)]
Use strrchr() insteaad of rindex().
The latter function is deprecated, some build environments do not support.
Timothy Redaelli [Tue, 4 May 2010 13:43:48 +0000 (15:43 +0200)]
Fix warnings under BSD