tinc
11 years agoFix typo in manpage.
Guus Sliepen [Tue, 25 Sep 2012 20:12:36 +0000 (22:12 +0200)]
Fix typo in manpage.

11 years agoEnsure sptps_test compiles with -flto.
Guus Sliepen [Thu, 13 Sep 2012 19:35:29 +0000 (21:35 +0200)]
Ensure sptps_test compiles with -flto.

11 years agoReplace node_udp_tree with a hash table.
Guus Sliepen [Wed, 5 Sep 2012 11:05:48 +0000 (13:05 +0200)]
Replace node_udp_tree with a hash table.

11 years agoUse hash tables to lookup owners of addresses.
Guus Sliepen [Wed, 5 Sep 2012 10:45:36 +0000 (12:45 +0200)]
Use hash tables to lookup owners of addresses.

11 years agoAdd a simple hash table implementation.
Guus Sliepen [Wed, 5 Sep 2012 10:44:41 +0000 (12:44 +0200)]
Add a simple hash table implementation.

11 years agoRemove newlines at end of log messages.
Guus Sliepen [Tue, 4 Sep 2012 12:21:50 +0000 (14:21 +0200)]
Remove newlines at end of log messages.

11 years agoRemove some debug messages.
Guus Sliepen [Tue, 4 Sep 2012 12:16:05 +0000 (14:16 +0200)]
Remove some debug messages.

11 years agoProperly handle SPTPS packets with stripped Ethernet headers.
Guus Sliepen [Thu, 30 Aug 2012 12:21:23 +0000 (14:21 +0200)]
Properly handle SPTPS packets with stripped Ethernet headers.

11 years agoFix node name check for "connect" and "disconnect" commands.
Guus Sliepen [Thu, 30 Aug 2012 12:00:34 +0000 (14:00 +0200)]
Fix node name check for "connect" and "disconnect" commands.

11 years agoQuit when "exit" or "quit" commands are used in tincctl's shell.
Guus Sliepen [Sun, 5 Aug 2012 15:25:31 +0000 (17:25 +0200)]
Quit when "exit" or "quit" commands are used in tincctl's shell.

11 years agoFix segfault when using tincctl's shell without readline.
Guus Sliepen [Sun, 5 Aug 2012 15:03:57 +0000 (17:03 +0200)]
Fix segfault when using tincctl's shell without readline.

11 years agoAdd bash completion script.
Guus Sliepen [Sun, 5 Aug 2012 11:50:51 +0000 (13:50 +0200)]
Add bash completion script.

11 years agoMake sure the top command can be used more than once in tincctl's shell.
Guus Sliepen [Fri, 3 Aug 2012 12:17:02 +0000 (14:17 +0200)]
Make sure the top command can be used more than once in tincctl's shell.

11 years agoFork when using the "start" command in tincctl.
Guus Sliepen [Fri, 3 Aug 2012 12:15:50 +0000 (14:15 +0200)]
Fork when using the "start" command in tincctl.

This allows the command to be given in its shell without immediatly exiting tincctl.

11 years agoAdd readline completion for tincctl config and tincctl info.
Guus Sliepen [Fri, 3 Aug 2012 11:23:07 +0000 (13:23 +0200)]
Add readline completion for tincctl config and tincctl info.

11 years agoOptionally compress and/or strip Ethernet header from SPTPS packets.
Guus Sliepen [Thu, 2 Aug 2012 15:44:59 +0000 (17:44 +0200)]
Optionally compress and/or strip Ethernet header from SPTPS packets.

11 years agoHave tincctl act as a shell when no command is given.
Guus Sliepen [Thu, 2 Aug 2012 15:24:42 +0000 (17:24 +0200)]
Have tincctl act as a shell when no command is given.

By default it uses readline to read commands. If the input and output are not a
tty, no prompt is shown.

11 years agoClear struct sptps before reusing it.
Guus Sliepen [Thu, 2 Aug 2012 15:23:51 +0000 (17:23 +0200)]
Clear struct sptps before reusing it.

11 years agoUpdate the documentation to encourage using "tincctl init" and "tincctl config".
Guus Sliepen [Wed, 1 Aug 2012 20:22:52 +0000 (22:22 +0200)]
Update the documentation to encourage using "tincctl init" and "tincctl config".

11 years agoStricter checks for netname and node names.
Guus Sliepen [Wed, 1 Aug 2012 14:51:59 +0000 (16:51 +0200)]
Stricter checks for netname and node names.

- Node names should not be empty.
- Net names should not contain slashes or start with a dot, because they are
  used in pathnames.

11 years agoAdd missing configuration variables.
Guus Sliepen [Wed, 1 Aug 2012 14:13:23 +0000 (16:13 +0200)]
Add missing configuration variables.

11 years agoAdd the ability to query configuration variables to tincctl.
Guus Sliepen [Wed, 1 Aug 2012 13:50:45 +0000 (15:50 +0200)]
Add the ability to query configuration variables to tincctl.

11 years agotincctl restart should work even if no tincd is running.
Guus Sliepen [Wed, 1 Aug 2012 13:15:37 +0000 (15:15 +0200)]
tincctl restart should work even if no tincd is running.

11 years agoTry sending SIGTERM if we cannot connect to a tincd but we know its PID.
Guus Sliepen [Wed, 1 Aug 2012 13:14:48 +0000 (15:14 +0200)]
Try sending SIGTERM if we cannot connect to a tincd but we know its PID.

11 years agoUse a status bit to track which nodes use SPTPS.
Guus Sliepen [Tue, 31 Jul 2012 19:43:49 +0000 (21:43 +0200)]
Use a status bit to track which nodes use SPTPS.

11 years agoAdd Brandon Black's replay window code to SPTPS.
Guus Sliepen [Tue, 31 Jul 2012 18:39:15 +0000 (20:39 +0200)]
Add Brandon Black's replay window code to SPTPS.

11 years agoHandle SPTPS datagrams in try_mac().
Guus Sliepen [Tue, 31 Jul 2012 18:36:35 +0000 (20:36 +0200)]
Handle SPTPS datagrams in try_mac().

11 years agoRemove unused #include.
Guus Sliepen [Tue, 31 Jul 2012 18:29:13 +0000 (20:29 +0200)]
Remove unused #include.

11 years agoUse datagram SPTPS for packet exchange between nodes.
Guus Sliepen [Mon, 30 Jul 2012 16:36:59 +0000 (18:36 +0200)]
Use datagram SPTPS for packet exchange between nodes.

When two nodes which support SPTPS want to send packets to each other, they now
always use SPTPS. The node initiating the SPTPS session send the first SPTPS
packet via an extended REQ_KEY messages. All other handshake messages are sent
using ANS_KEY messages. This ensures that intermediate nodes using an older
version of tinc can still help with NAT traversal. After the authentication
phase is over, SPTPS packets are sent via UDP, or are encapsulated in extended
REQ_KEY messages instead of PACKET messages.

11 years agoMerge branch 'master' into 1.1
Guus Sliepen [Fri, 27 Jul 2012 20:48:24 +0000 (22:48 +0200)]
Merge branch 'master' into 1.1

11 years agoAlso clarify hostnames=[yes|no] in tinc.conf(5).
Guus Sliepen [Fri, 27 Jul 2012 20:43:01 +0000 (22:43 +0200)]
Also clarify hostnames=[yes|no] in tinc.conf(5).

11 years agoMinor clarification, tinc.conf hostnames=[yes|no] variable only resolves names for...
Mesar Hameed [Tue, 24 Jul 2012 06:18:50 +0000 (07:18 +0100)]
Minor clarification, tinc.conf hostnames=[yes|no] variable only resolves names for logging purposes.

11 years agoRemove unused po/ directory.
Guus Sliepen [Sun, 22 Jul 2012 11:05:56 +0000 (13:05 +0200)]
Remove unused po/ directory.

11 years agoHave tinc-gui use same way of locating pidfile as tincd and tincctl.
Guus Sliepen [Sun, 22 Jul 2012 10:55:04 +0000 (12:55 +0200)]
Have tinc-gui use same way of locating pidfile as tincd and tincctl.

11 years agotincctl init now also creates a template tinc-up script.
Guus Sliepen [Sun, 22 Jul 2012 10:52:31 +0000 (12:52 +0200)]
tincctl init now also creates a template tinc-up script.

11 years agoFix exit code when installing tincd as a service on Windows.
Guus Sliepen [Sat, 21 Jul 2012 15:10:10 +0000 (17:10 +0200)]
Fix exit code when installing tincd as a service on Windows.

11 years agoWindows doesn't like quotes around "edit" when calling it through system().
Guus Sliepen [Sat, 21 Jul 2012 14:33:09 +0000 (16:33 +0200)]
Windows doesn't like quotes around "edit" when calling it through system().

Even though that works fine on the command line.

11 years agoUse backslashes on Windows.
Guus Sliepen [Sat, 21 Jul 2012 14:26:55 +0000 (16:26 +0200)]
Use backslashes on Windows.

Although Windows itself supports the forward slash, some programs may not.

11 years agoDon't try to mkdir(CONFDIR) on Windows when there is a registry key for tinc.
Guus Sliepen [Sat, 21 Jul 2012 13:58:16 +0000 (15:58 +0200)]
Don't try to mkdir(CONFDIR) on Windows when there is a registry key for tinc.

11 years agoFix crash when no netname is specified.
Guus Sliepen [Sat, 21 Jul 2012 13:51:15 +0000 (15:51 +0200)]
Fix crash when no netname is specified.

11 years agoFix some compiler warnings.
Guus Sliepen [Sat, 21 Jul 2012 13:50:50 +0000 (15:50 +0200)]
Fix some compiler warnings.

11 years agoHave tincd and tincctl use the same method of determining netname.
Guus Sliepen [Sat, 21 Jul 2012 13:15:04 +0000 (15:15 +0200)]
Have tincd and tincctl use the same method of determining netname.

11 years agoAdd a newline to a configuration file if it is missing.
Guus Sliepen [Sat, 21 Jul 2012 13:02:44 +0000 (15:02 +0200)]
Add a newline to a configuration file if it is missing.

11 years agoAdd some checks when changing configuration.
Guus Sliepen [Sat, 21 Jul 2012 13:02:17 +0000 (15:02 +0200)]
Add some checks when changing configuration.

11 years agoCall event_init() after detaching.
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.

11 years agoFix various compiler warnings.
Guus Sliepen [Sat, 21 Jul 2012 11:53:22 +0000 (13:53 +0200)]
Fix various compiler warnings.

11 years agoBSD make doesn't like $<.
Guus Sliepen [Sat, 21 Jul 2012 11:38:14 +0000 (13:38 +0200)]
BSD make doesn't like $<.

11 years agoMake sure sptps.h and info.h are in the tarball.
Guus Sliepen [Sat, 21 Jul 2012 11:02:35 +0000 (13:02 +0200)]
Make sure sptps.h and info.h are in the tarball.

11 years agoMake sure tinc compiles on Windows.
Guus Sliepen [Sat, 21 Jul 2012 10:51:53 +0000 (12:51 +0200)]
Make sure tinc compiles on Windows.

11 years agoPrefer routes with lower weight as long as they do not increase the number of hops.
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.

11 years agoAllow more configuration variables to be changed when reloading configuration.
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.

11 years agoSplit setup_myself() into two functions, one for reloading configuration.
Guus Sliepen [Fri, 20 Jul 2012 17:59:47 +0000 (19:59 +0200)]
Split setup_myself() into two functions, one for reloading configuration.

11 years agoNever remove items from cmdline_conf.
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.

11 years agoUse minor protocol version to determine whether to use ECDH key exchange between...
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.

11 years agoPut minor protocol version in connection options so other nodes can see it.
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.

11 years agoWhen exporting configuration files, don't copy Name variables.
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.

11 years agoAdd an easy way to export and import host configuration files.
Guus Sliepen [Mon, 16 Jul 2012 14:48:24 +0000 (16:48 +0200)]
Add an easy way to export and import host configuration files.

11 years agoStrip default subnet weight from output.
Guus Sliepen [Sun, 15 Jul 2012 23:14:08 +0000 (01:14 +0200)]
Strip default subnet weight from output.

11 years agoGive an error message when tincctl info cannot parse the given subnet or address.
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.

11 years ago"tincctl info" gives more human readable information about nodes or subnets.
Guus Sliepen [Sun, 15 Jul 2012 23:05:25 +0000 (01:05 +0200)]
"tincctl info" gives more human readable information about nodes or subnets.

11 years agoMove all functions related to subnet parsing to subnet_parse.c.
Guus Sliepen [Sun, 15 Jul 2012 22:52:50 +0000 (00:52 +0200)]
Move all functions related to subnet parsing to subnet_parse.c.

11 years agoFix tincctl dump.
Guus Sliepen [Sun, 15 Jul 2012 20:53:03 +0000 (22:53 +0200)]
Fix tincctl dump.

11 years agoLet tincctl ignore tincd options, so they will be passed on.
Guus Sliepen [Sun, 15 Jul 2012 19:17:10 +0000 (21:17 +0200)]
Let tincctl ignore tincd options, so they will be passed on.

11 years agoFix tincctl start.
Guus Sliepen [Sun, 15 Jul 2012 19:15:35 +0000 (21:15 +0200)]
Fix tincctl start.

11 years agoHave tincctl notify a running tincd of configuration file changes.
Guus Sliepen [Sun, 15 Jul 2012 18:59:17 +0000 (20:59 +0200)]
Have tincctl notify a running tincd of configuration file changes.

11 years agoAdd an easy way to edit a configuration file.
Guus Sliepen [Sun, 15 Jul 2012 18:37:38 +0000 (20:37 +0200)]
Add an easy way to edit a configuration file.

11 years agoStricter checks for node names.
Guus Sliepen [Sun, 15 Jul 2012 18:22:21 +0000 (20:22 +0200)]
Stricter checks for node names.

11 years agoAllow configuration variables to be added/removed using tincctl.
Guus Sliepen [Sun, 15 Jul 2012 16:16:35 +0000 (18:16 +0200)]
Allow configuration variables to be added/removed using tincctl.

11 years agoPut every command in its own function.
Guus Sliepen [Sun, 15 Jul 2012 13:46:16 +0000 (15:46 +0200)]
Put every command in its own function.

11 years ago"tincctl init" creates initial directory structure, tinc.conf and keypairs.
Guus Sliepen [Sun, 15 Jul 2012 12:49:36 +0000 (14:49 +0200)]
"tincctl init" creates initial directory structure, tinc.conf and keypairs.

11 years agoMerge branch 'master' into 1.1
Guus Sliepen [Sat, 14 Jul 2012 13:13:21 +0000 (15:13 +0200)]
Merge branch 'master' into 1.1

11 years agoUpdate THANKS file.
Guus Sliepen [Thu, 12 Jul 2012 09:32:08 +0000 (11:32 +0200)]
Update THANKS file.

11 years agoDocument how to load the tap driver on FreeBSD.
Guus Sliepen [Thu, 12 Jul 2012 09:30:56 +0000 (11:30 +0200)]
Document how to load the tap driver on FreeBSD.

11 years agoUse /dev/tap0 by default on FreeBSD and NetBSD when using Mode = switch.
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.

11 years agoFix crash when handling the ALRM signal.
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.

11 years agoMerge branch 'master' of git://tinc-vpn.org/tinc into 1.1
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

11 years agoReleasing 1.0.19. release-1.0.19
Guus Sliepen [Mon, 25 Jun 2012 17:45:51 +0000 (19:45 +0200)]
Releasing 1.0.19.

11 years agoFix crash when using Broadcast = direct.
Guus Sliepen [Mon, 25 Jun 2012 17:03:54 +0000 (19:03 +0200)]
Fix crash when using Broadcast = direct.

11 years agoFix compiler warnings.
Guus Sliepen [Mon, 25 Jun 2012 17:01:51 +0000 (19:01 +0200)]
Fix compiler warnings.

11 years ago#include <winsock2.h> on Windows.
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.

11 years agoSmall fixes in proxy code.
Guus Sliepen [Mon, 25 Jun 2012 13:00:24 +0000 (15:00 +0200)]
Small fixes in proxy code.

11 years agoDon't forget to send a newline when forwarding requests.
Guus Sliepen [Sun, 13 May 2012 20:16:42 +0000 (22:16 +0200)]
Don't forget to send a newline when forwarding requests.

11 years agoadd (errnum) in front of windows error messages
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>
11 years agoAlways pass request strings to other functions as const char *.
Guus Sliepen [Tue, 8 May 2012 14:44:15 +0000 (16:44 +0200)]
Always pass request strings to other functions as const char *.

11 years agofree_connection_partially(): also reset remote protocol version infos
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.

11 years agoSilence SPTPS log messages, reduce them from DEBUG_ALWAYS to DEBUG_META.
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.

11 years agoterminate_connection(): delete non-outgoing (aka incoming) connections.
Sven-Haegar Koch [Sun, 22 Apr 2012 00:55:06 +0000 (02:55 +0200)]
terminate_connection(): delete non-outgoing (aka incoming) connections.

11 years agoLabel control connections for log output as "<control>", not "<unknown>".
Sven-Haegar Koch [Sat, 21 Apr 2012 01:44:24 +0000 (03:44 +0200)]
Label control connections for log output as "<control>", not "<unknown>".

11 years agofree_connection_partially(): Avoid possible use-after-free for c->hischallenge
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

11 years agoterminate_connection(): only kill c->node->connection if it is pointing
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

11 years agoterminate_connection(): Avoid use-after-free and double-free for
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.

12 years agoDocument new proxy types.
Guus Sliepen [Thu, 19 Apr 2012 13:56:08 +0000 (15:56 +0200)]
Document new proxy types.

12 years agoAdd support for proxying through an external command.
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.

12 years agoAdd support for SOCKS 5 proxies.
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.

12 years agoAdd basic support for SOCKS 4 and HTTP CONNECT proxies.
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.

12 years agoAllow broadcast packets to be sent directly instead of via the MST.
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.

12 years agoUpdate README to reflect that only OpenSSL is currently supported.
Guus Sliepen [Sun, 15 Apr 2012 23:16:59 +0000 (01:16 +0200)]
Update README to reflect that only OpenSSL is currently supported.

12 years agoAdd autoconf checks for OpenSSL's elliptic curve functions.
Guus Sliepen [Sun, 15 Apr 2012 23:14:59 +0000 (01:14 +0200)]
Add autoconf checks for OpenSSL's elliptic curve functions.

12 years agoecdh & ecdsa: avoid some possible memory leaks in error conditions.
Sven-Haegar Koch [Sat, 14 Apr 2012 00:28:43 +0000 (02:28 +0200)]
ecdh & ecdsa: avoid some possible memory leaks in error conditions.

12 years agoRemove confusing error message for failed reading in ECDSA keys.
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.