Guus Sliepen [Sat, 21 Jul 2012 13:02:17 +0000 (15:02 +0200)]
Add some checks when changing configuration.
Guus Sliepen [Sat, 21 Jul 2012 12:19:23 +0000 (14:19 +0200)]
Call event_init() after detaching.
Otherwise, the call to daemon() could close filedescriptors in use by libevent
itself; for example if it uses kqueue or epoll instead of a select() or poll()
backend.
Guus Sliepen [Sat, 21 Jul 2012 11:53:22 +0000 (13:53 +0200)]
Fix various compiler warnings.
Guus Sliepen [Sat, 21 Jul 2012 11:38:14 +0000 (13:38 +0200)]
BSD make doesn't like $<.
Guus Sliepen [Sat, 21 Jul 2012 11:02:35 +0000 (13:02 +0200)]
Make sure sptps.h and info.h are in the tarball.
Guus Sliepen [Sat, 21 Jul 2012 10:51:53 +0000 (12:51 +0200)]
Make sure tinc compiles on Windows.
Guus Sliepen [Fri, 20 Jul 2012 18:35:07 +0000 (20:35 +0200)]
Prefer routes with lower weight as long as they do not increase the number of hops.
This should improve traffic to nodes that are not directly reachable somewhat.
Guus Sliepen [Fri, 20 Jul 2012 18:01:29 +0000 (20:01 +0200)]
Allow more configuration variables to be changed when reloading configuration.
In particular, Subnets may be added or removed from the local node on the fly.
Guus Sliepen [Fri, 20 Jul 2012 17:59:47 +0000 (19:59 +0200)]
Split setup_myself() into two functions, one for reloading configuration.
Guus Sliepen [Fri, 20 Jul 2012 15:29:16 +0000 (17:29 +0200)]
Never remove items from cmdline_conf.
We should treat cmdline_conf as const, so we can call read_config_options()
more than once with prefix = NULL.
Guus Sliepen [Thu, 19 Jul 2012 23:02:51 +0000 (01:02 +0200)]
Use minor protocol version to determine whether to use ECDH key exchange between nodes.
Guus Sliepen [Tue, 17 Jul 2012 16:05:55 +0000 (18:05 +0200)]
Put minor protocol version in connection options so other nodes can see it.
This allows two nodes that do not have a meta-connection with each other see
which version they are.
Guus Sliepen [Mon, 16 Jul 2012 16:49:39 +0000 (18:49 +0200)]
When exporting configuration files, don't copy Name variables.
These interfere with tincctl import. Besides, host configuration files should
not contain Name at all.
Guus Sliepen [Mon, 16 Jul 2012 14:48:24 +0000 (16:48 +0200)]
Add an easy way to export and import host configuration files.
Guus Sliepen [Sun, 15 Jul 2012 23:14:08 +0000 (01:14 +0200)]
Strip default subnet weight from output.
Guus Sliepen [Sun, 15 Jul 2012 23:09:47 +0000 (01:09 +0200)]
Give an error message when tincctl info cannot parse the given subnet or address.
Guus Sliepen [Sun, 15 Jul 2012 23:05:25 +0000 (01:05 +0200)]
"tincctl info" gives more human readable information about nodes or subnets.
Guus Sliepen [Sun, 15 Jul 2012 22:52:50 +0000 (00:52 +0200)]
Move all functions related to subnet parsing to subnet_parse.c.
Guus Sliepen [Sun, 15 Jul 2012 20:53:03 +0000 (22:53 +0200)]
Fix tincctl dump.
Guus Sliepen [Sun, 15 Jul 2012 19:17:10 +0000 (21:17 +0200)]
Let tincctl ignore tincd options, so they will be passed on.
Guus Sliepen [Sun, 15 Jul 2012 19:15:35 +0000 (21:15 +0200)]
Fix tincctl start.
Guus Sliepen [Sun, 15 Jul 2012 18:59:17 +0000 (20:59 +0200)]
Have tincctl notify a running tincd of configuration file changes.
Guus Sliepen [Sun, 15 Jul 2012 18:37:38 +0000 (20:37 +0200)]
Add an easy way to edit a configuration file.
Guus Sliepen [Sun, 15 Jul 2012 18:22:21 +0000 (20:22 +0200)]
Stricter checks for node names.
Guus Sliepen [Sun, 15 Jul 2012 16:16:35 +0000 (18:16 +0200)]
Allow configuration variables to be added/removed using tincctl.
Guus Sliepen [Sun, 15 Jul 2012 13:46:16 +0000 (15:46 +0200)]
Put every command in its own function.
Guus Sliepen [Sun, 15 Jul 2012 12:49:36 +0000 (14:49 +0200)]
"tincctl init" creates initial directory structure, tinc.conf and keypairs.
Guus Sliepen [Sat, 14 Jul 2012 13:13:21 +0000 (15:13 +0200)]
Merge branch 'master' into 1.1
Guus Sliepen [Thu, 12 Jul 2012 09:32:08 +0000 (11:32 +0200)]
Update THANKS file.
Guus Sliepen [Thu, 12 Jul 2012 09:30:56 +0000 (11:30 +0200)]
Document how to load the tap driver on FreeBSD.
Guus Sliepen [Thu, 12 Jul 2012 09:25:11 +0000 (11:25 +0200)]
Use /dev/tap0 by default on FreeBSD and NetBSD when using Mode = switch.
Guus Sliepen [Tue, 26 Jun 2012 12:22:57 +0000 (14:22 +0200)]
Fix crash when handling the ALRM signal.
In retry() the function do_outgoing_connection() is called, which can delete
items from the connection_tree, so when walking the tree we must first save the
pointer to the next item.
Guus Sliepen [Tue, 26 Jun 2012 11:24:20 +0000 (13:24 +0200)]
Merge branch 'master' of git://tinc-vpn.org/tinc into 1.1
Conflicts:
NEWS
README
configure.in
lib/utils.c
src/linux/device.c
src/meta.c
src/net.h
src/net_setup.c
src/net_socket.c
src/protocol.c
src/protocol_auth.c
src/tincd.c
Guus Sliepen [Mon, 25 Jun 2012 17:45:51 +0000 (19:45 +0200)]
Releasing 1.0.19.
Guus Sliepen [Mon, 25 Jun 2012 17:03:54 +0000 (19:03 +0200)]
Fix crash when using Broadcast = direct.
Guus Sliepen [Mon, 25 Jun 2012 17:01:51 +0000 (19:01 +0200)]
Fix compiler warnings.
Guus Sliepen [Mon, 25 Jun 2012 13:01:42 +0000 (15:01 +0200)]
#include <winsock2.h> on Windows.
MinGW complained about it not being included.
Guus Sliepen [Mon, 25 Jun 2012 13:00:24 +0000 (15:00 +0200)]
Small fixes in proxy code.
Guus Sliepen [Sun, 13 May 2012 20:16:42 +0000 (22:16 +0200)]
Don't forget to send a newline when forwarding requests.
Michael Tokarev [Fri, 4 May 2012 12:41:47 +0000 (16:41 +0400)]
add (errnum) in front of windows error messages
On localized, non-English versions of windows, it is
common to have two active charsets -- for console applications
and for GUI applications, together with localized error messages
returned by windows. But two charsets are rarely compatible,
so sending the same byte sequence to console and to windows
event log makes one or another to be unreadable. So at least
include the error number, this way it will be possible to
lookup the actual error test using external ways.
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Guus Sliepen [Tue, 8 May 2012 14:44:15 +0000 (16:44 +0200)]
Always pass request strings to other functions as const char *.
Sven-Haegar Koch [Sun, 22 Apr 2012 01:44:28 +0000 (03:44 +0200)]
free_connection_partially(): also reset remote protocol version infos
The used remote protocol can change between two reconnects, aka if
the remote side has enabled/disabled for example their ExperimentalProtocols
setting.
Sven-Haegar Koch [Sun, 22 Apr 2012 01:05:29 +0000 (03:05 +0200)]
Silence SPTPS log messages, reduce them from DEBUG_ALWAYS to DEBUG_META.
Sven-Haegar Koch [Sun, 22 Apr 2012 00:55:06 +0000 (02:55 +0200)]
terminate_connection(): delete non-outgoing (aka incoming) connections.
Sven-Haegar Koch [Sat, 21 Apr 2012 01:44:24 +0000 (03:44 +0200)]
Label control connections for log output as "<control>", not "<unknown>".
Sven-Haegar Koch [Fri, 20 Apr 2012 23:59:01 +0000 (01:59 +0200)]
free_connection_partially(): Avoid possible use-after-free for c->hischallenge
Sven-Haegar Koch [Fri, 20 Apr 2012 23:51:36 +0000 (01:51 +0200)]
terminate_connection(): only kill c->node->connection if it is pointing
to the same connection
Sven-Haegar Koch [Thu, 19 Apr 2012 22:24:38 +0000 (00:24 +0200)]
terminate_connection(): Avoid use-after-free and double-free for
already freed edge structure.
Guus Sliepen [Thu, 19 Apr 2012 13:56:08 +0000 (15:56 +0200)]
Document new proxy types.
Guus Sliepen [Thu, 19 Apr 2012 13:18:31 +0000 (15:18 +0200)]
Add support for proxying through an external command.
Proxy type "exec" can be used to have an external script or binary set
up an outgoing connection. Standard input and output will be used to
exchange data with the external command. The variables REMOTEADDRESS and
REMOTEPORT are set to the intended destination address and port.
Guus Sliepen [Thu, 19 Apr 2012 12:10:54 +0000 (14:10 +0200)]
Add support for SOCKS 5 proxies.
This only covers outgoing TCP connections, and supports only
username/password authentication or no authentication.
Guus Sliepen [Wed, 18 Apr 2012 21:19:40 +0000 (23:19 +0200)]
Add basic support for SOCKS 4 and HTTP CONNECT proxies.
When the Proxy option is used, outgoing connections will be made via the
specified proxy. There is no support for authentication methods or for having
the proxy forward incoming connections, and there is no attempt to proxy UDP.
Guus Sliepen [Sun, 15 Apr 2012 23:57:25 +0000 (01:57 +0200)]
Allow broadcast packets to be sent directly instead of via the MST.
When the "Broadcast = direct" option is used, broadcast packets are not sent
and forwarded via the Minimum Spanning Tree to all nodes, but are sent directly
to all nodes that can be reached in one hop.
One use for this is to allow running ad-hoc routing protocols, such as OLSR, on
top of tinc.
Guus Sliepen [Sun, 15 Apr 2012 23:16:59 +0000 (01:16 +0200)]
Update README to reflect that only OpenSSL is currently supported.
Guus Sliepen [Sun, 15 Apr 2012 23:14:59 +0000 (01:14 +0200)]
Add autoconf checks for OpenSSL's elliptic curve functions.
Sven-Haegar Koch [Sat, 14 Apr 2012 00:28:43 +0000 (02:28 +0200)]
ecdh & ecdsa: avoid some possible memory leaks in error conditions.
Sven-Haegar Koch [Sat, 14 Apr 2012 00:02:11 +0000 (02:02 +0200)]
Remove confusing error message for failed reading in ECDSA keys.
Most likeley the error is that there just is no valid key inside the used
host file, and in this case errno just contains a random value from the
last previously failed call.
Sven-Haegar Koch [Sat, 14 Apr 2012 00:29:32 +0000 (02:29 +0200)]
sptps_stop(): clear pointers after free to avoid double free.
sptps_stop() may get called twice on some failed connection setups.
Guus Sliepen [Thu, 29 Mar 2012 15:45:25 +0000 (16:45 +0100)]
Allow environment variables to be used for Name.
When the Name starts with a $, the rest will be interpreted as the name of an
environment variable containing the real Name. When Name is $HOST, but this
environment variable does not exist, gethostname() will be used to set the
Name. In both cases, illegal characters will be converted to underscores.
Guus Sliepen [Mon, 26 Mar 2012 18:06:39 +0000 (19:06 +0100)]
Merge branch 'master' of git://tinc-vpn.org/tinc into 1.1
Conflicts:
src/logger.c
src/net_setup.c
Guus Sliepen [Mon, 26 Mar 2012 13:46:09 +0000 (14:46 +0100)]
Add support for systemd style socket activation.
If the LISTEN_FDS environment variable is set and tinc is run in the
foreground, tinc will use filedescriptors 3 to 3 + LISTEN_FDS for its listening
TCP sockets. For now, tinc will create matching listening UDP sockets itself.
There is no dependency on systemd or on libsystemd-daemon.
Guus Sliepen [Mon, 26 Mar 2012 13:45:20 +0000 (14:45 +0100)]
Remove newline from log message.
Anthony G. Basile [Mon, 26 Mar 2012 10:29:40 +0000 (06:29 -0400)]
configure.in: fix AC_ARG_ENABLE and AC_ARG_WITH
The current configure.in file does not correctly make use of these
macros. The resulting configure file will therefore enable an item
even if --disable-FEATURE is given. This patch restores the intended
behavior.
Guus Sliepen [Sun, 25 Mar 2012 22:35:31 +0000 (23:35 +0100)]
Merge branch 'master' of git://tinc-vpn.org/tinc into 1.1
Conflicts:
NEWS
README
configure.in
src/Makefile.am
src/conf.c
src/conf.h
src/connection.c
src/net.c
src/tincd.c
Guus Sliepen [Sun, 25 Mar 2012 21:54:36 +0000 (22:54 +0100)]
Support :: in IPv6 Subnets.
Guus Sliepen [Sun, 25 Mar 2012 14:32:26 +0000 (15:32 +0100)]
Releasing 1.0.18.
Guus Sliepen [Sun, 25 Mar 2012 14:30:58 +0000 (15:30 +0100)]
Mark DecrementTTL option experimental.
Guus Sliepen [Sun, 25 Mar 2012 14:17:50 +0000 (15:17 +0100)]
Fix return type of vde_recv() as well.
In this case it is not really necessary as the conversion to int will already
take care of ensuring the return value is treated as signed.
Guus Sliepen [Sun, 25 Mar 2012 13:55:56 +0000 (14:55 +0100)]
Document OpenBSD "ifconfig link0" and Linux "ip tuntap" commands.
Guus Sliepen [Sun, 25 Mar 2012 13:46:50 +0000 (14:46 +0100)]
Fix some more compiler warnings.
Guus Sliepen [Sun, 25 Mar 2012 13:00:21 +0000 (14:00 +0100)]
Fix return value type of vde_send().
The libvdeplug_dyn.h header file incorrectly declares the return type of
vde_send() to size_t, while in reality it is ssize_t.
Guus Sliepen [Sun, 25 Mar 2012 12:58:14 +0000 (13:58 +0100)]
Fix compiler warnings.
Guus Sliepen [Sun, 25 Mar 2012 12:42:10 +0000 (13:42 +0100)]
Allow scoped addresses to be used for IPv6 multicast socket.
Guus Sliepen [Sun, 25 Mar 2012 12:40:55 +0000 (13:40 +0100)]
Add #ifdefs in case not all platforms support IPv4 and IPv6 multicast.
Guus Sliepen [Fri, 23 Mar 2012 12:18:36 +0000 (13:18 +0100)]
Set default value of DecrementTTL to "no".
Decrementing the TTL causes IPv6 to fail when Mode = switch, and there may be
other unforeseen side-effects.
Guus Sliepen [Wed, 21 Mar 2012 16:00:53 +0000 (17:00 +0100)]
Add support for multicast communication with UML/QEMU/KVM.
DeviceType = multicast allows one to specify a multicast address and port with
a Device statement. Tinc will then read/send packets to that multicast group
instead of to a tun/tap device. This allows interaction with UML, QEMU and KVM
instances that are listening on the same group.
Guus Sliepen [Wed, 21 Mar 2012 12:20:15 +0000 (13:20 +0100)]
Allow a port to be specified in BindToAddress statements.
This can be used to let tinc listen on multiple ports for incoming connections.
Guus Sliepen [Tue, 20 Mar 2012 22:49:16 +0000 (23:49 +0100)]
Always try next Address when an outgoing connection fails to authenticate.
When making outgoing connections, tinc goes through the list of Addresses and
tries all of them until one succeeds. However, before it would consider
establishing a TCP connection a success, even when the authentication failed.
This would be a problem if the first Address would point to a hostname and port
combination that belongs to the wrong tinc node, or perhaps even to a non-tinc
service, causing tinc to endlessly try this Address instead of moving to the
next one.
Problem found by Delf Eldkraft.
Guus Sliepen [Sun, 18 Mar 2012 20:24:46 +0000 (21:24 +0100)]
Make sure the signature also covers the session label.
Guus Sliepen [Sun, 18 Mar 2012 19:38:48 +0000 (20:38 +0100)]
Start documenting the SPTPS protocol.
Guus Sliepen [Sun, 18 Mar 2012 16:46:30 +0000 (17:46 +0100)]
Don't send an ACK message after the first key exchange in the SPTPS protocol.
Guus Sliepen [Sun, 18 Mar 2012 16:42:43 +0000 (17:42 +0100)]
Test SPTPS messages sent while key renegotation is in progress.
Guus Sliepen [Sun, 18 Mar 2012 15:42:02 +0000 (16:42 +0100)]
Add datagram mode to the SPTPS protocol.
* Everything is identical except the headers of the records.
* Instead of sending explicit message length and having an implicit sequence
number, datagram mode has an implicit message length and an explicit sequence
number.
* The sequence number is used to set the most significant bytes of the counter.
Guus Sliepen [Sun, 18 Mar 2012 15:41:13 +0000 (16:41 +0100)]
Allow CTR mode counter to be set to a specific value.
Guus Sliepen [Sat, 10 Mar 2012 12:31:36 +0000 (13:31 +0100)]
Releasing 1.0.17.
Guus Sliepen [Sat, 10 Mar 2012 12:23:08 +0000 (13:23 +0100)]
Update copyright notices.
Guus Sliepen [Thu, 8 Mar 2012 22:23:39 +0000 (23:23 +0100)]
Make sure disabling old RSA keys works on Windows.
Seeking in files and rewriting parts of them does not seem to work properly on
Windows. Instead, when old RSA keys are found when generating new ones, the
file containing the old keys is copied to a temporary file where the changes
are made, and that file is renamed back to the original filename. On Windows,
we cannot atomically replace files with a rename(), so we need to move the
original file out of the way first. If anything fails, the new code will warn
that the user has to solve the problem by hand.
Guus Sliepen [Thu, 8 Mar 2012 21:19:20 +0000 (22:19 +0100)]
Add missing ICMP6 message type definitions.
Guus Sliepen [Thu, 8 Mar 2012 20:15:08 +0000 (21:15 +0100)]
Merge branch 'master' of git://tinc-vpn.org/tinc into 1.1
Conflicts:
src/net_packet.c
Guus Sliepen [Wed, 7 Mar 2012 09:40:06 +0000 (10:40 +0100)]
Accept Subnets passed with the -o option when StrictSubnets = yes.
Guus Sliepen [Fri, 2 Mar 2012 15:09:58 +0000 (16:09 +0100)]
Only log errors sending UDP packets when debug level >= 5.
Since tinc will fall back to TCP or route via another node, it is not necessary
to log such errors unconditionally.
Guus Sliepen [Sun, 26 Feb 2012 17:37:36 +0000 (18:37 +0100)]
Allow log messages to be captured by tincctl.
This allows tincctl to receive log messages from a running tincd,
independent of what is logged to syslog or to file. Tincctl can receive
debug messages with an arbitrary level.
Guus Sliepen [Sun, 26 Feb 2012 15:56:53 +0000 (16:56 +0100)]
Don't close control connections when handling a reload command.
Because this would terminate the connection while the control message
handler was still running, it would lead to a segmentation fault later
on.
Guus Sliepen [Sun, 26 Feb 2012 15:27:13 +0000 (16:27 +0100)]
Merge branch 'master' of git://tinc-vpn.org/tinc into 1.1
Guus Sliepen [Sun, 26 Feb 2012 15:23:02 +0000 (16:23 +0100)]
Only use broadcast at the start of the PMTU discovery phase.
For local peer discovery, only a handful of packets are necessary for
peers to detect each other.
Guus Sliepen [Sun, 26 Feb 2012 11:39:46 +0000 (12:39 +0100)]
Let tincctl use the NETNAME environment variable if no -n option is given.
This allows administrators who frequently want to work with one tinc
network to omit the -n option. Since the NETNAME variable is set by
tincd when executing scripts, this makes it slightly easier to use
tincctl from within scripts.
Guus Sliepen [Sun, 26 Feb 2012 11:33:16 +0000 (12:33 +0100)]
Ensure all SPTPS functions are prefixed with sptps_.
Guus Sliepen [Sat, 25 Feb 2012 22:03:09 +0000 (23:03 +0100)]
Go back to breadth first search for path finding.
If 1.1.x nodes using Dijkstra's algorithm are mixed with 1.0.x nodes using BFS,
then routing loops can occur.
Guus Sliepen [Sat, 25 Feb 2012 21:52:57 +0000 (22:52 +0100)]
Merge branch 'master' of git://tinc-vpn.org/tinc into 1.1
Guus Sliepen [Sat, 25 Feb 2012 21:11:30 +0000 (22:11 +0100)]
Stricter checks against routing loops.
If a packet that had to be sent via an intermediate hop, and that intermediate
hop was the one that sent the packet, we drop it.