tinc/src
Etienne Dechamps e16ade874d Use edge local addresses for local discovery.
This introduces a new way of doing local discovery: when tinc has
local address information for the recipient node, it will send local
discovery packets directly to the local address of that node, instead
of using broadcast packets.

This new way of doing local discovery provides numerous advantages compared to
using broadcasts:

 - No broadcast packets "polluting" the local network;

 - Reliable even if the sending host has multiple network interfaces (in
   contrast, broadcasts will only be sent through one unpredictable
   interface)

 - Works even if the two hosts are not on the same broadcast domain. One
   example is a large LAN where the two hosts might be on different local
   subnets. In fact, thanks to UDP hole punching this might even work if
   there is a NAT sitting in the middle of the LAN between the two nodes!

 - Sometimes a node is reachable through its "normal" address, and via a
   local subnet as well. One might think the local subnet is the best route
   to the node in this case, but more often than not it's actually worse -
   one example is where the local segment is a third party VPN running in
   parallel, or ironically it can be the local segment formed by the tinc
   VPN itself! Because this new algorithm only checks the addresses for
   which an edge is already established, it is less likely to fall into
   these traps.
2014-06-29 11:23:32 +01:00
..
bsd Make device close cleaner. 2014-06-22 14:01:30 +02:00
chacha-poly1305 Use the ChaCha-Poly1305 cipher for the SPTPS protocol. 2014-04-14 21:43:45 +02:00
cygwin Make device close cleaner. 2014-06-22 14:01:30 +02:00
ed25519 Fix Windows includes. 2014-06-22 18:45:49 +01:00
gcrypt Use conditional compilation for cryptographic functions. 2013-05-01 17:17:22 +02:00
linux Make device close cleaner. 2014-06-22 14:01:30 +02:00
mingw Remove the TAP-Win32 reader thread. 2014-06-28 20:00:05 +01:00
openssl Rewind the file before trying to use PEM_read_RSA_PUBKEY(). 2014-02-26 17:27:57 +01:00
solaris Make device close cleaner. 2014-06-22 14:01:30 +02:00
buffer.c Fix whitespace. 2012-10-10 17:17:49 +02:00
buffer.h Always compact the buffer if it has reached MAXBUFSIZE. 2011-05-22 13:24:01 +02:00
cipher.h Use AES-256-GCM for the SPTPS protocol. 2013-10-13 01:02:52 +02:00
conf.c Update copyright notices. 2014-02-07 20:38:48 +01:00
conf.h Releasing 1.1pre5. 2013-01-20 21:03:22 +01:00
connection.c Rename xmalloc_and_zero() to xzalloc(). 2013-05-01 17:31:33 +02:00
connection.h Add an invitation protocol. 2013-05-29 18:31:10 +02:00
control.c Fix errno references when handling socket errors. 2014-06-26 20:42:40 +01:00
control.h Use the TCP socket infrastructure for control sockets. 2009-11-07 23:43:25 +01:00
control_common.h Update copyright notices. 2012-10-14 17:42:49 +02:00
crypto.h Add generic crypto headers. 2013-05-01 17:58:30 +02:00
device.h Make DeviceStandby control network interface link status on Windows. 2014-06-22 15:04:15 +01:00
digest.h Add __attribute__((warn_unused_result)) to crypto functions. 2013-05-10 20:23:01 +02:00
dropin.c Update copyright notices. 2013-08-13 20:38:57 +02:00
dropin.h Update copyright notices. 2013-08-13 20:38:57 +02:00
dummy_device.c Don't print device statistics when exiting tinc. 2013-12-08 20:23:44 +01:00
ecdh.h Use Ed25519 keys. 2014-04-06 22:47:26 +02:00
ecdsa.h Add __attribute__((warn_unused_result)) to crypto functions. 2013-05-10 20:23:01 +02:00
ecdsagen.h Add __attribute__((warn_unused_result)) to crypto functions. 2013-05-10 20:23:01 +02:00
edge.c Add local address information to edges. 2014-06-29 11:23:14 +01:00
edge.h Add local address information to edges. 2014-06-29 11:23:14 +01:00
ethernet.h Make sure PMTU discovery works in switch mode with VLAN tags. 2012-11-10 23:55:56 +01:00
event.c Remove the TAP-Win32 reader thread. 2014-06-28 20:00:05 +01:00
event.h Remove the TAP-Win32 reader thread. 2014-06-28 20:00:05 +01:00
fake-gai-errnos.h Add missing definitions on Windows. 2013-07-17 18:00:40 +02:00
fake-getaddrinfo.c Rename xmalloc_and_zero() to xzalloc(). 2013-05-01 17:31:33 +02:00
fake-getaddrinfo.h Fix whitespace. 2012-10-10 17:17:49 +02:00
fake-getnameinfo.c Fix whitespace. 2012-10-10 17:17:49 +02:00
fake-getnameinfo.h Fix whitespace. 2012-10-10 17:17:49 +02:00
getopt.c Use conditional compilation for device.c. 2013-05-01 12:20:06 +02:00
getopt.h Move source from lib/ to src/. 2009-12-31 13:19:13 +01:00
getopt1.c Use conditional compilation for device.c. 2013-05-01 12:20:06 +02:00
graph.c Add DeviceStandby option to only enable the device when nodes are reachable. 2014-06-22 15:04:15 +01:00
graph.h Update copyright notices. 2012-03-10 13:23:08 +01:00
hash.c Update copyright notices. 2013-08-13 20:38:57 +02:00
hash.h Fix whitespace. 2012-10-10 17:17:49 +02:00
have.h Include <limits.h> for PATH_MAX. 2013-12-07 22:19:39 +01:00
info.c Update copyright notices. 2013-08-13 20:38:57 +02:00
info.h Add readline completion for tincctl config and tincctl info. 2012-08-03 13:23:07 +02:00
invitation.c Fix base64 decoding of Ed25519 keys. 2014-06-03 11:02:58 +02:00
invitation.h Add an invitation protocol. 2013-05-29 18:31:10 +02:00
ipv4.h Fix whitespace. 2012-10-10 17:17:49 +02:00
ipv6.h Fix whitespace. 2012-10-10 17:17:49 +02:00
list.c Update copyright notices. 2013-08-13 20:38:57 +02:00
list.h Update copyright notices. 2012-10-14 17:42:49 +02:00
logger.c Releasing 1.1pre5. 2013-01-20 21:03:22 +01:00
logger.h Update copyright notices. 2012-10-14 17:42:49 +02:00
Makefile.am Use the ChaCha-Poly1305 cipher for the SPTPS protocol. 2014-04-14 21:43:45 +02:00
meta.c Fix errno references when handling socket errors. 2014-06-26 20:42:40 +01:00
meta.h Update copyright notices. 2012-10-14 17:42:49 +02:00
multicast_device.c Fix errno references when handling socket errors. 2014-06-26 20:42:40 +01:00
names.c Don't try to mkdir(CONFDIR) if --config is used. 2013-09-08 15:03:06 +02:00
names.h Don't try to mkdir(CONFDIR) if --config is used. 2013-09-08 15:03:06 +02:00
net.c Fix errno references when handling socket errors. 2014-06-26 20:42:40 +01:00
net.h Remove the TAP-Win32 reader thread. 2014-06-28 20:00:05 +01:00
net_packet.c Use edge local addresses for local discovery. 2014-06-29 11:23:32 +01:00
net_setup.c Fix errno references when handling socket errors. 2014-06-26 20:42:40 +01:00
net_socket.c Give getsockopt() a reference to a socklen_t. 2014-06-28 21:54:34 +02:00
netutl.c Update copyright notices. 2013-08-13 20:38:57 +02:00
netutl.h Update copyright notices. 2013-08-13 20:38:57 +02:00
node.c Rename xmalloc_and_zero() to xzalloc(). 2013-05-01 17:31:33 +02:00
node.h Use edge local addresses for local discovery. 2014-06-29 11:23:32 +01:00
prf.h Add __attribute__((warn_unused_result)) to crypto functions. 2013-05-10 20:23:01 +02:00
process.c Use a Windows event to stop tinc when running as a service. 2014-06-28 20:00:05 +01:00
process.h Use PATHEXT when checking for the presence of scripts on Windows. 2013-08-23 21:23:46 +02:00
protocol.c Update copyright notices. 2013-08-13 20:38:57 +02:00
protocol.h Update copyright notices. 2013-08-13 20:38:57 +02:00
protocol_auth.c Add local address information to edges. 2014-06-29 11:23:14 +01:00
protocol_edge.c Add local address information to edges. 2014-06-29 11:23:14 +01:00
protocol_key.c Allow Cipher and Digest "none". 2014-05-18 21:51:42 +02:00
protocol_misc.c Update copyright notices. 2013-08-13 20:38:57 +02:00
protocol_subnet.c Update copyright notices. 2012-10-14 17:42:49 +02:00
raw_socket_device.c Make device close cleaner. 2014-06-22 14:01:30 +02:00
route.c Avoid calling time(NULL). 2013-03-08 14:11:15 +01:00
route.h Fix whitespace. 2012-10-10 17:17:49 +02:00
rsa.h Add __attribute__((warn_unused_result)) to crypto functions. 2013-05-10 20:23:01 +02:00
rsagen.h Add __attribute__((warn_unused_result)) to crypto functions. 2013-05-10 20:23:01 +02:00
script.c Use PATHEXT when checking for the presence of scripts on Windows. 2013-08-23 21:23:46 +02:00
script.h Use PATHEXT when checking for the presence of scripts on Windows. 2013-08-23 21:23:46 +02:00
splay_tree.c Update copyright notices. 2013-08-13 20:38:57 +02:00
splay_tree.h Update copyright notices. 2013-08-13 20:38:57 +02:00
sptps.c Rename ECDSA to Ed25519. 2014-05-18 20:47:04 +02:00
sptps.h Fix PMTU discovery via datagram SPTPS. 2014-05-12 15:57:40 +02:00
sptps_keypair.c Fix compiler warnings. 2014-05-06 13:01:48 +02:00
sptps_speed.c Fix errno references when handling socket errors. 2014-06-26 20:42:40 +01:00
sptps_test.c Fix errno references when handling socket errors. 2014-06-26 20:42:40 +01:00
subnet.c Use PATHEXT when checking for the presence of scripts on Windows. 2013-08-23 21:23:46 +02:00
subnet.h Update copyright notices. 2012-10-14 17:42:49 +02:00
subnet_parse.c Fix whitespace. 2012-10-10 17:17:49 +02:00
system.h Update copyright notices. 2013-08-13 20:38:57 +02:00
tincctl.c Add local address information to edges. 2014-06-29 11:23:14 +01:00
tincctl.h Update copyright notices. 2013-08-13 20:38:57 +02:00
tincd.c Remove the TAP-Win32 reader thread. 2014-06-28 20:00:05 +01:00
top.c Handle a disconnecting tincd better. 2014-03-09 15:32:10 +01:00
top.h Add top.h. 2011-05-16 09:48:19 +02:00
uml_device.c Make device close cleaner. 2014-06-22 14:01:30 +02:00
utils.c Fix base64 decoding of Ed25519 keys. 2014-06-03 11:02:58 +02:00
utils.h Fix connection event error handling. 2014-06-28 14:04:43 +01:00
vde_device.c Make device close cleaner. 2014-06-22 14:01:30 +02:00
xalloc.h Don't use vasprintf() anymore on Windows. 2013-07-17 18:06:56 +02:00