Add warnings for bad combinations of Device and Interface. On Linux, the name of the tun/tap interface can be set freely. However, on most other operating systems, tinc cannot change the name of the interface. In those situations, it is possible to specify a Device and an Interface that conflict with each other. On BSD, this can cause $INTERFACE to be set incorrectly, on Windows, this results in a potentially unreliable way in which a TAP-Win32 interface is selected.
Fix compatibility with TAP-Win32 9.0.0.21 and later. Tinc was a bit sloppy writing packets to the TAP-Win32 device using overlapped I/O. It worked with older versions of the driver, but it caused lots of dropped packets with newer versions of the driver (that use the NDIS 6 API).
Handle errors from TAP-Win32/64 adapter in a better way. Before, the tapreader thread would just exit immediately after encountering the first error, without notifying the main thread. Now, the tapreader thead never exits itself, but tells the main thread to stop when more than ten errors are encountered in a row.
Modernize the build system. Recent versions of autoconf and automake were giving a lot of warnings. This is sort of a backport of similar build system changes from the 1.1 banch: - Fix all autoconf/automake warnings. - Merge lib/ into src/. - Don't use symlinks for device.c any more, but use automake conditionals. - Use explicit paths to local header files. - Get rid of alloca.c/malloc.c/memcmp.c/realloc.c.