Ensure all parameters have names in header files.
Reformat all code using astyle.
Update all header guards. Don't start with underscores, as those are reserved for system libraries. Make sure all start with TINC_, and that they appear at the top of the file.
Configure minimum reconnect timeouts. Enable the configuration of minimum reconnect timeout via a configuration directive "MinTimeout". This functionality is missing in the default tinc stable distribution. The minimum timeout is, in code, set to 0 seconds. This patch makes it configurable. You might ask yourself why is that needed at all ? Well, we've been using tinc with success for quite some time in a cross DC setup. Tinc is used to create a virtual network switch and to connect our distributed database nodes into a virtual local network. Our database nodes exchange information, synchronize and do failover over the created tinc-backed network. Every now and then, when a node has a physical networking issue and is unreachable by some or all neighboring nodes, tinc will relay traffic over reachable neighboring nodes and thus save our cluster. But, sometimes, especially when BGP route changes take place, minor outages of physical connectivity towards some nodes may cause tinc to become as reliable as packet-loss is :). Tinc is fast, it can and does re-establish a lost connection in a jiffy, but it cannot detect the reason for the loss of the connection. A re-established connection might last for a few seconds (ping timeout) to get lost again just because the packet loss is huge at that time. Then it reconnects again and the story repeats itself. This process keeps repeating until the physical network stabilizes. Packet loss on a physical link means disaster in a database replication scenario. In such cases it is better for tinc to remain disconnected from the unreachable/destabilized nodes for some time and relay traffic over the reachable (unaffected) nodes then to use an unreliable route. This patch enables us to slow down the re-connection process and eliminate application level issues we had.
Update copyright notices.
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.
Fix sparse warnings and add an extra sprinkling of const. This is more or less the equivalent of Sven-Haegar Koch's fixes in the 1.1 branch.
Remove duplicate command-line option parsing. Also fix parsing of command-line host configuration options for the local node.
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.
Simplify reading lines from configuration files. Instead of allocating storage for each line read, we now read into fixed-size buffers on the stack. This fixes a case where a malformed configuration file could crash tinc.
Update the address of the Free Software Foundation in all copyright headers.
Remove all occurences of $Id$.
Update THANKS and copyright information.
Disable old RSA keys when generating new ones. When generating an RSA keypair, the new public and private keys are appended to files. However, when OpenSSL reads keys it only reads the first in a file, not the last. Instead of printing an easily ignored warning, tinc now disables old keys when appending new ones.
Update copyright notices, remove Ivo's email address.
Apply patch from Scott Lamb adding an output buffer for the TCP sockets. This helps coalescing multiple send_meta() commands into one TCP packet. Also limit the size of the output buffer before dropping PACKETs.
Update copyright notices.
Searching through splay trees may change the tree variable.
Update copyrights, links, email addresses and let Subversion update $Id$ keywords.
Simpler checking of permissions on private RSA key and other fixes.