From 65944fb7a518dc659bacaf80cf235a0352fc6a7e Mon Sep 17 00:00:00 2001 From: Michael Prokop Date: Fri, 29 Aug 2014 12:10:28 -0700 Subject: [PATCH] Imported Upstream version 0.3.5 --- AUTHORS | 1 + ChangeLog | 7 ++ LICENSE | 21 +++- LICENSE.OpenSSL | 182 +++++++++++++++++++++++++++++ README | 97 ++++++++++------ contrib/anytun-example.bat | 5 + contrib/boost_project-config.patch | 15 +++ contrib/build-anytun-mingw-cross.sh | 23 ++++ contrib/build-boost-mingw-cross.sh | 21 ++++ contrib/build-openssl-mingw-cross.sh | 21 ++++ contrib/make-mingw-release.sh | 27 +++++ contrib/openssl-1.0.0f-configure.patch | 46 ++++++++ contrib/openssl-1.0.1c-configure.patch | 50 ++++++++ contrib/openssl-1.0.1h-configure.patch | 50 ++++++++ contrib/tap32/OemWin2k.inf | 187 ++++++++++++++++++++++++++++++ contrib/tap32/tap0901.cat | Bin 0 -> 7579 bytes contrib/tap32/tap0901.sys | Bin 0 -> 25216 bytes contrib/tap32/tap_install.bat | 2 + contrib/tap32/tap_remove.bat | 2 + contrib/tap32/tapinstall.exe | Bin 0 -> 78336 bytes contrib/tap64/OemWin2k.inf | 187 ++++++++++++++++++++++++++++++ contrib/tap64/tap0901.cat | Bin 0 -> 7551 bytes contrib/tap64/tap0901.sys | Bin 0 -> 29696 bytes contrib/tap64/tap_install.bat | 2 + contrib/tap64/tap_remove.bat | 2 + contrib/tap64/tapinstall.exe | Bin 0 -> 82432 bytes contrib/tap64/tapinstall.exe.minifest.txt | 16 +++ doc/Makefile | 21 +++- doc/anyrtpproxy.8.txt | 29 +++-- doc/anytun-config.8 | 8 +- doc/anytun-config.8.txt | 36 +++--- doc/anytun-controld.8 | 8 +- doc/anytun-controld.8.txt | 29 +++-- doc/anytun-showtables.8 | 8 +- doc/anytun-showtables.8.txt | 10 +- doc/anytun.8 | 8 +- doc/anytun.8.txt | 58 ++++----- src/Makefile | 75 +++++++++--- src/anyrtpproxy/Makefile | 19 ++- src/anyrtpproxy/anyrtpproxy.cpp | 23 +++- src/anyrtpproxy/callIdQueue.cpp | 19 ++- src/anyrtpproxy/callIdQueue.h | 19 ++- src/anyrtpproxy/commandHandler.cpp | 21 +++- src/anyrtpproxy/commandHandler.h | 19 ++- src/anyrtpproxy/connectionList.cpp | 19 ++- src/anyrtpproxy/connectionList.h | 19 ++- src/anyrtpproxy/options.cpp | 19 ++- src/anyrtpproxy/options.h | 19 ++- src/anyrtpproxy/portWindow.cpp | 19 ++- src/anyrtpproxy/portWindow.h | 19 ++- src/anyrtpproxy/rtpSession.cpp | 19 ++- src/anyrtpproxy/rtpSession.h | 19 ++- src/anyrtpproxy/rtpSessionTable.cpp | 20 +++- src/anyrtpproxy/rtpSessionTable.h | 19 ++- src/anyrtpproxy/syncRtpCommand.cpp | 20 +++- src/anyrtpproxy/syncRtpCommand.h | 20 +++- src/anytun-config.cpp | 20 +++- src/anytun-controld.cpp | 30 +++-- src/anytun-showtables.cpp | 19 ++- src/anytun.cpp | 26 ++++- src/anytunError.cpp | 23 +++- src/anytunError.h | 23 +++- src/authAlgo.cpp | 89 +++++++++----- src/authAlgo.h | 38 ++++-- src/authAlgoFactory.cpp | 19 ++- src/authAlgoFactory.h | 19 ++- src/bsd/tunDevice.cpp | 19 ++- src/buffer.cpp | 19 ++- src/buffer.h | 19 ++- src/cipher.cpp | 67 ++++++++--- src/cipher.h | 39 +++++-- src/cipherFactory.cpp | 19 ++- src/cipherFactory.h | 20 +++- src/configure | 122 +++++++++++++++++-- src/connectionList.cpp | 31 ++--- src/connectionList.h | 32 ++--- src/connectionParam.cpp | 19 ++- src/connectionParam.h | 20 +++- src/cryptinit.hpp | 77 ++++++------ src/datatypes.h | 25 +++- src/deviceConfig.hpp | 21 +++- src/encryptedPacket.cpp | 19 ++- src/encryptedPacket.h | 19 ++- src/endian.h | 21 +++- src/keyDerivation.cpp | 126 +++++++++++++------- src/keyDerivation.h | 37 ++++-- src/keyDerivationFactory.cpp | 19 ++- src/keyDerivationFactory.h | 19 ++- src/linux/tunDevice.cpp | 19 ++- src/log.cpp | 30 +++-- src/log.h | 34 +++--- src/logTargets.cpp | 19 ++- src/logTargets.h | 19 ++- src/networkAddress.cpp | 21 +++- src/networkAddress.h | 19 ++- src/networkPrefix.cpp | 19 ++- src/networkPrefix.h | 20 +++- src/nullDaemon.cpp | 19 ++- src/nullDaemon.h | 19 ++- src/options.cpp | 36 +++--- src/options.h | 33 +++--- src/packetSource.cpp | 21 +++- src/packetSource.h | 19 ++- src/plainPacket.cpp | 19 ++- src/plainPacket.h | 19 ++- src/posix/posixDaemon.cpp | 19 ++- src/posix/posixDaemon.h | 19 ++- src/posix/signalHandler.hpp | 21 +++- src/posix/sysExec.hpp | 20 +++- src/resolver.cpp | 32 ++--- src/resolver.h | 32 ++--- src/routingTable.cpp | 32 ++--- src/routingTable.h | 30 ++--- src/routingTree.hpp | 19 ++- src/routingTreeNode.cpp | 19 ++- src/routingTreeNode.h | 19 ++- src/seqWindow.cpp | 19 ++- src/seqWindow.h | 19 ++- src/signalController.cpp | 35 +++--- src/signalController.h | 32 ++--- src/syncBuffer.cpp | 19 ++- src/syncBuffer.h | 19 ++- src/syncClient.cpp | 20 +++- src/syncClient.h | 20 +++- src/syncCommand.cpp | 20 +++- src/syncCommand.h | 20 +++- src/syncConnectionCommand.cpp | 20 +++- src/syncConnectionCommand.h | 19 ++- src/syncOnConnect.hpp | 19 ++- src/syncQueue.cpp | 33 +++--- src/syncQueue.h | 30 ++--- src/syncRouteCommand.cpp | 20 +++- src/syncRouteCommand.h | 20 +++- src/syncServer.cpp | 21 +++- src/syncServer.h | 19 ++- src/syncTcpConnection.cpp | 19 ++- src/syncTcpConnection.h | 20 +++- src/sysExec.cpp | 21 +++- src/sysExec.h | 27 +++-- src/threadUtils.hpp | 20 +++- src/tunDevice.h | 31 +++-- src/win32/registryKey.cpp | 19 ++- src/win32/registryKey.h | 20 +++- src/win32/signalHandler.hpp | 19 ++- src/win32/signalServiceHandler.hpp | 19 ++- src/win32/sysExec.hpp | 26 ++++- src/win32/tunDevice.cpp | 19 ++- src/win32/winService.cpp | 19 ++- src/win32/winService.h | 19 ++- version | 2 +- 150 files changed, 3262 insertions(+), 829 deletions(-) create mode 100644 LICENSE.OpenSSL create mode 100644 contrib/anytun-example.bat create mode 100644 contrib/boost_project-config.patch create mode 100755 contrib/build-anytun-mingw-cross.sh create mode 100755 contrib/build-boost-mingw-cross.sh create mode 100755 contrib/build-openssl-mingw-cross.sh create mode 100755 contrib/make-mingw-release.sh create mode 100644 contrib/openssl-1.0.0f-configure.patch create mode 100644 contrib/openssl-1.0.1c-configure.patch create mode 100644 contrib/openssl-1.0.1h-configure.patch create mode 100644 contrib/tap32/OemWin2k.inf create mode 100644 contrib/tap32/tap0901.cat create mode 100644 contrib/tap32/tap0901.sys create mode 100644 contrib/tap32/tap_install.bat create mode 100644 contrib/tap32/tap_remove.bat create mode 100644 contrib/tap32/tapinstall.exe create mode 100644 contrib/tap64/OemWin2k.inf create mode 100644 contrib/tap64/tap0901.cat create mode 100644 contrib/tap64/tap0901.sys create mode 100644 contrib/tap64/tap_install.bat create mode 100644 contrib/tap64/tap_remove.bat create mode 100644 contrib/tap64/tapinstall.exe create mode 100644 contrib/tap64/tapinstall.exe.minifest.txt diff --git a/AUTHORS b/AUTHORS index 6d7339f..7a38e49 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,3 +1,4 @@ +Markus Grüneis Othmar Gsenger Erwin Nindl Christian Pointner diff --git a/ChangeLog b/ChangeLog index f1fc68d..284ae2f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2014.08.26 -- Version 0.3.5 + +* added an exception to the license which allows linking with OpenSSL +* added support for clang +* added libnettle as additional crypto library option +* fixed mutli-threading support for libgcrypt 1.6.0 and newer + 2011.12.30 -- Version 0.3.4 * Service Release: several build fixes for newer versions of diff --git a/LICENSE b/LICENSE index 44d9451..1ec6984 100644 --- a/LICENSE +++ b/LICENSE @@ -6,12 +6,12 @@ * tunnel endpoints. It has less protocol overhead than IPSec in Tunnel * mode and allows tunneling of every ETHER TYPE protocol (e.g. * ethernet, ip, arp ...). satp directly includes cryptography and - * message authentication based on the methodes used by SRTP. It is + * message authentication based on the methods used by SRTP. It is * intended to deliver a generic, scaleable and secure solution for * tunneling and relaying of packets of any protocol. * * - * Copyright (C) 2007-2009 Othmar Gsenger, Erwin Nindl, + * Copyright (C) 2007-2014 Markus Grüneis, Othmar Gsenger, Erwin Nindl, * Christian Pointner * * This file is part of Anytun. @@ -27,8 +27,23 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with anytun. If not, see . + * along with Anytun. If not, see . + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. */ + + GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 diff --git a/LICENSE.OpenSSL b/LICENSE.OpenSSL new file mode 100644 index 0000000..9b5fe3c --- /dev/null +++ b/LICENSE.OpenSSL @@ -0,0 +1,182 @@ +/* + * anytun + * + * The secure anycast tunneling protocol (satp) defines a protocol used + * for communication between any combination of unicast and anycast + * tunnel endpoints. It has less protocol overhead than IPSec in Tunnel + * mode and allows tunneling of every ETHER TYPE protocol (e.g. + * ethernet, ip, arp ...). satp directly includes cryptography and + * message authentication based on the methods used by SRTP. It is + * intended to deliver a generic, scaleable and secure solution for + * tunneling and relaying of packets of any protocol. + * + * + * Copyright (C) 2007-2014 Markus Grüneis, Othmar Gsenger, Erwin Nindl, + * Christian Pointner + * + * This file is part of Anytun. + * + * Anytun is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * Anytun is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Anytun. If not, see . + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + */ + +Certain source files in this program permit linking with the OpenSSL +library (http://www.openssl.org), which otherwise wouldn't be allowed +under the GPL. For purposes of identifying OpenSSL, most source files +giving this permission limit it to versions of OpenSSL having a license +identical to that listed in this file (LICENSE.OpenSSL). It is not +necessary for the copyright years to match between this file and the +OpenSSL version in question. However, note that because this file is +an extension of the license statements of these source files, this file +may not be changed except with permission from all copyright holders +of source files in this program which reference this file. + + + LICENSE ISSUES + ============== + + The OpenSSL toolkit stays under a dual license, i.e. both the conditions of + the OpenSSL License and the original SSLeay license apply to the toolkit. + See below for the actual license texts. Actually both licenses are BSD-style + Open Source licenses. In case of any license issues related to OpenSSL + please contact openssl-core@openssl.org. + + OpenSSL License + --------------- + +/* ==================================================================== + * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + + Original SSLeay License + ----------------------- + +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ diff --git a/README b/README index 2ba23a5..09f1692 100644 --- a/README +++ b/README @@ -1,8 +1,8 @@ Dependencies ============ -Anytun can be built by using either libgcrypt or the openssl-crypto library. -The latter is more performant in most cases but there are some license +Anytun can be built by using either libgcrypt, libnettle or the openssl-crypto +library. The latter is more performant in most cases but there are some license issues when using this library. Linux @@ -12,15 +12,21 @@ Linux using libgcrypt: libgcrypt11-dev -using ssl crypto lib: +using ssl crypto library: libssl-dev +using nettle crypto library: + nettle-dev + common: build-essential - libboost-serialization1.35-dev - libboost-thread1.35-dev - libboost-system1.35-dev - libboost-regex1.35-dev + libboost-serialization-dev + libboost-thread-dev + libboost-system-dev + libboost-regex-dev + +if you want clang as compiler + clang if you want to rebuild the manpage: asciidoc @@ -44,33 +50,52 @@ if you want to rebuild the manpage: textproc/libxslt textproc/docbook-xsl sysutils/readlink - misc/getopt + misc/getopt Windows ------- -OpenSSL - Developer: - http://www.slproweb.com/download/Win32OpenSSL-0_9_8j.exe - Runtime Only: - http://www.slproweb.com/download/Win32OpenSSL_Light-0_9_8j.exe - -Boost 1.35: - http://www.boostpro.com/download/boost_1_35_0_setup.exe + Crosscompiling with MinGW under Debian/Ubuntu: + ---------------------------------------------- + + # sudo apt-get install mingw-w64 + # cd contrib/ + # ./build-boost-mingw-cross.sh + # ./build-openssl-mingw-cross.sh + # ./build-anytun-mingw-cross.sh + + The compiled binaries can be found in anytun-w32 and anytun-w64 (32 and 64Bit). + You can create a ZIP archive containing all needed files by calling: + + # ./make-mingw-release.sh + - As it can take some time to install everything from boost here is a - complete list of libraries which have to be installed in order to build anytun: - - * Serialization - * Thread - * date_time - * System - * regex + Using MS Visual C++: + -------------------- + OpenSSL + Developer: + http://www.slproweb.com/download/Win32OpenSSL-1_0_1h.exe + + Runtime Only: + http://www.slproweb.com/download/Win32OpenSSL_Light-1_0_1h.exe + + Boost + http://sourceforge.net/projects/boost/files/boost-binaries/ + + As it can take some time to install everything from boost here is a + complete list of libraries which have to be installed in order to build anytun: + + * Serialization + * Thread + * date_time + * System + * regex + + Microsoft Visual C++ 2008 Redistributable Package (x86): + http://www.microsoft.com/downloads/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF -Microsoft Visual C++ 2008 Redistributable Package (x86): - http://www.microsoft.com/downloads/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF @@ -79,6 +104,7 @@ Installation Getting the source via subversion: ---------------------------------- + svn co http://svn.anytun.org/anytun/trunk anytun cd anytun @@ -98,7 +124,7 @@ using ssl crypto library: # make -Notes: +Notes: - try './configure --help' for further information - if using openssl pre 0.9.8 you have to disable passphrase because openssl had no SHA256 implementation prior to this @@ -113,6 +139,7 @@ Installing This will install anytun under the --prefix defined with configure. + Uninstalling ------------ @@ -132,26 +159,26 @@ Usage: init.d script ------------- -The init.d script can be used to start anytun at boot time. It searches for +The init.d script can be used to start anytun at boot time. It searches for configuration files which reside at $CONFIG_DIR. For each instance of anytun which should be started there must be a directory containing at least a file named config. This file must contain all command line parameter which should be used when starting the daemon. One line for each parameter. Empty lines and lines starting with # are ignored. Besides the config file there may be a script -named post-up.sh which will be called when the tun/tap device comes up. -Furthermore there may be a directory called conf.d containing config files for -anytun-config. The syntax of this files is quite the same as those for anytun. -These files are used to configure a multi connection setup using anytun-config +named post-up.sh which will be called when the tun/tap device comes up. +Furthermore there may be a directory called conf.d containing config files for +anytun-config. The syntax of this files is quite the same as those for anytun. +These files are used to configure a multi connection setup using anytun-config and anytun-controld This is an example of how the script can be used to start anytun: # /etc/init.d/anytun start client1 p2p-a In this case the script will start 2 instances of anytun using the config files -$CONFIG_DIR/client1/config and $CONFIG_DIR/p2p-a/config. +$CONFIG_DIR/client1/config and $CONFIG_DIR/p2p-a/config. If no instance name is specified the script will use the file $CONFIG_DIR/autostart -to determine which instances to start or stop. This file must contain a list -of instance names which should be used when no names are specified at the command +to determine which instances to start or stop. This file must contain a list +of instance names which should be used when no names are specified at the command line. One line for each name. Empty lines and lines starting with # are ignored. diff --git a/contrib/anytun-example.bat b/contrib/anytun-example.bat new file mode 100644 index 0000000..f00e19a --- /dev/null +++ b/contrib/anytun-example.bat @@ -0,0 +1,5 @@ +@rem Point to point example +@rem please make sure to keep the remote-host parameter, even if it's wrong, to avoid problems with windows firewall +@rem anytun --interface 0.0.0.0 --passphrase lala --type tap --ifconfig 5.0.225.2/8 --remote-host 1.1.1.2 --remote-port 4444 +anytun --interface 0.0.0.0 --passphrase lala --type tap --ifconfig 5.0.225.1/8 --remote-host 1.1.1.1 --remote-port 4444 --role right +pause \ No newline at end of file diff --git a/contrib/boost_project-config.patch b/contrib/boost_project-config.patch new file mode 100644 index 0000000..5dd39c3 --- /dev/null +++ b/contrib/boost_project-config.patch @@ -0,0 +1,15 @@ +--- boost_1_48_0/project-config.jam 2012-01-05 22:25:47.000000000 +0100 ++++ project-config.jam 2012-01-05 22:14:39.000000000 +0100 +@@ -7,10 +7,8 @@ + # Compiler configuration. This definition will be used unless + # you already have defined some toolsets in your user-config.jam + # file. +-if ! gcc in [ feature.values ] +-{ +- using gcc ; +-} ++using gcc : w32 : i686-w64-mingw32-g++ ; ++using gcc : w64 : x86_64-w64-mingw32-g++ ; + + project : default-build gcc ; + diff --git a/contrib/build-anytun-mingw-cross.sh b/contrib/build-anytun-mingw-cross.sh new file mode 100755 index 0000000..54e09c5 --- /dev/null +++ b/contrib/build-anytun-mingw-cross.sh @@ -0,0 +1,23 @@ +#!/bin/sh +set -e +BASE=`pwd` + +cd ../src + +for target in w32 w64; do + if [ "$target" = "w32" ]; then + target_name=i686 + else + target_name=x86_64 + fi + make distclean + ./configure --target=mingw --use-ssl-crypto --with-boost=../contrib/boost-$target --with-openssl=../contrib/openssl-$target --cross-prefix=$target_name-w64-mingw32- + make + make strip + mkdir -p $BASE/anytun-$target + cp *.exe $BASE/anytun-$target +done + +cd ../contrib + +exit 0 diff --git a/contrib/build-boost-mingw-cross.sh b/contrib/build-boost-mingw-cross.sh new file mode 100755 index 0000000..5ca49e7 --- /dev/null +++ b/contrib/build-boost-mingw-cross.sh @@ -0,0 +1,21 @@ +#!/bin/sh +set -e +BOOST=1.55.0 + +BOOST_DASH=`echo $BOOST | perl -ne 's/\./_/g; print'` +echo $BOOST_DASH +wget http://downloads.sourceforge.net/project/boost/boost/$BOOST/boost_${BOOST_DASH}.tar.bz2 -O - | tar xj + +cd boost_${BOOST_DASH} +./bootstrap.sh + +patch -p1 < ../boost_project-config.patch + +for target in w32 w64; do + ./b2 --layout=system variant=release threading=multi link=shared runtime-link=shared toolset=gcc-$target target-os=windows threadapi=win32 stage || true + mkdir -p ../boost-$target/include + mv stage/lib ../boost-$target/ + cp -r boost ../boost-$target/include + ./b2 --layout=system variant=release threading=multi link=shared runtime-link=shared toolset=gcc-$target target-os=windows threadapi=win32 stage --clean || true +done +rm -rf ../boost_${BOOST_DASH} diff --git a/contrib/build-openssl-mingw-cross.sh b/contrib/build-openssl-mingw-cross.sh new file mode 100755 index 0000000..7e165b1 --- /dev/null +++ b/contrib/build-openssl-mingw-cross.sh @@ -0,0 +1,21 @@ +#!/bin/sh +set -e +OPENSSL=openssl-1.0.1h +BASE=`pwd` + +wget http://openssl.org/source/$OPENSSL.tar.gz -O - | tar xz + +cd $OPENSSL +if [ -e ../$OPENSSL\-configure.patch ]; then + patch -p1 < ../$OPENSSL\-configure.patch +fi +./config --cross-compile-prefix=x86_64-w64-mingw32- shared mingw64 --prefix=$BASE/openssl-w64/ +make +make install +make clean +./config --cross-compile-prefix=i686-w64-mingw32- shared mingw --prefix=$BASE/openssl-w32/ +make +make install +make clean +cd .. +rm -rf $OPENSSL diff --git a/contrib/make-mingw-release.sh b/contrib/make-mingw-release.sh new file mode 100755 index 0000000..5a1d29f --- /dev/null +++ b/contrib/make-mingw-release.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +VER=`cat ../version` + +for target in w32 w64; do + if [ "$target" = "w32" ]; then + LIBGCC_DLL=/usr/lib/gcc/i686-w64-mingw32/`i686-w64-mingw32-g++ -dumpversion`/libgcc_s_sjlj-1.dll + LIBSTDCPP_DLL=/usr/lib/gcc/i686-w64-mingw32/`i686-w64-mingw32-g++ -dumpversion`/libstdc++-6.dll + else + LIBGCC_DLL=/usr/lib/gcc/i686-w64-mingw32/`i686-w64-mingw32-g++ -dumpversion`/libgcc_s_sjlj-1.dll + LIBSTDCPP_DLL=/usr/lib/gcc/i686-w64-mingw32/`i686-w64-mingw32-g++ -dumpversion`/libstdc++-6.dll + fi + mkdir anytun-$VER-$target + cp anytun-$target/*.exe anytun-$VER-$target + cp $LIBGCC_DLL $LIBSTDCPP_DLL anytun-$VER-$target + cp boost-$target/lib/libboost_{date_time,serialization,system,thread_win32,chrono}.dll anytun-$VER-$target + cp openssl-$target/bin/libeay32.dll anytun-$VER-$target + cp anytun-example.bat anytun-$VER-$target + cp ../{AUTHORS,ChangeLog,LICENSE,README,version} anytun-$VER-$target + cp -r tap?? anytun-$VER-$target + rm -rf anytun-$VER-$target/tap*/.svn + + zip -r anytun-$VER-$target.zip anytun-$VER-$target + rm -rf anytun-$VER-$target +done + +exit 0 diff --git a/contrib/openssl-1.0.0f-configure.patch b/contrib/openssl-1.0.0f-configure.patch new file mode 100644 index 0000000..125f436 --- /dev/null +++ b/contrib/openssl-1.0.0f-configure.patch @@ -0,0 +1,46 @@ +diff -u openssl-1.0.0f.orig/config openssl-1.0.0f//config +--- openssl-1.0.0f.orig/config 2011-07-15 21:59:18.000000000 +0200 ++++ openssl-1.0.0f//config 2012-01-05 01:32:27.619235053 +0100 +@@ -825,9 +825,9 @@ + # options="$options -DATALLA" + #fi + +-($CC -Wa,--help -c -o /dev/null -x assembler /dev/null 2>&1 | \ +- grep \\--noexecstack) 2>&1 > /dev/null && \ +- options="$options -Wa,--noexecstack" ++#($CC -Wa,--help -c -o /dev/null -x assembler /dev/null 2>&1 | \ ++# grep \\--noexecstack) 2>&1 > /dev/null && \ ++# options="$options -Wa,--noexecstack" + + # gcc < 2.8 does not support -march=ultrasparc + if [ "$OUT" = solaris-sparcv9-gcc -a $GCCVER -lt 28 ] +diff -u openssl-1.0.0f.orig/Configure openssl-1.0.0f//Configure +--- openssl-1.0.0f.orig/Configure 2011-12-19 18:04:38.000000000 +0100 ++++ openssl-1.0.0f//Configure 2012-01-05 01:21:18.723239740 +0100 +@@ -505,7 +505,7 @@ + "BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN:${no_asm}:win32", + + # MinGW +-"mingw", "gcc:-mno-cygwin -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall::-D_MT:MINGW32:-lws2_32 -lgdi32 -lcrypt32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_asm}:coff:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin:.dll.a", ++"mingw", "gcc:-mno-cygwin -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall::-D_MT:MINGW32:-lws2_32 -lgdi32 -lcrypt32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_asm}:coff:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin -Wl,--export-all -shared:.dll.a", + # As for OPENSSL_USE_APPLINK. Applink makes it possible to use .dll + # compiled with one compiler with application compiled with another + # compiler. It's possible to engage Applink support in mingw64 build, +@@ -513,7 +513,7 @@ + # handling, one can't seriously consider its binaries for using with + # non-mingw64 run-time environment. And as mingw64 is always consistent + # with itself, Applink is never engaged and can as well be omitted. +-"mingw64", "gcc:-mno-cygwin -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE::-D_MT:MINGW64:-lws2_32 -lgdi32 -lcrypt32:SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${x86_64_asm}:mingw64:win32:cygwin-shared:-D_WINDLL:-mno-cygwin:.dll.a", ++"mingw64", "gcc:-mno-cygwin -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE::-D_MT:MINGW64:-lws2_32 -lgdi32 -lcrypt32:SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${x86_64_asm}:mingw64:win32:cygwin-shared:-D_WINDLL:-mno-cygwin -Wl,--export-all -shared:.dll.a", + + # UWIN + "UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32", +@@ -869,7 +869,7 @@ + } + else + { +- die "target already defined - $target (offending arg: $_)\n" if ($target ne ""); ++ #die "target already defined - $target (offending arg: $_)\n" if ($target ne ""); + $target=$_; + } + diff --git a/contrib/openssl-1.0.1c-configure.patch b/contrib/openssl-1.0.1c-configure.patch new file mode 100644 index 0000000..3684601 --- /dev/null +++ b/contrib/openssl-1.0.1c-configure.patch @@ -0,0 +1,50 @@ +diff -ur openssl-1.0.1c.orig/config openssl-1.0.1c/config +--- openssl-1.0.1c.orig/config 2011-11-14 22:12:53.000000000 +0100 ++++ openssl-1.0.1c/config 2012-07-18 00:29:49.145918677 +0200 +@@ -857,11 +857,11 @@ + # options="$options -DATALLA" + #fi + +-if expr "$options" : '.*no\-asm' > /dev/null; then :; else +- sh -c "$CROSS_COMPILE${CC:-gcc} -Wa,--help -c -o /tmp/null.$$.o -x assembler /dev/null && rm /tmp/null.$$.o" 2>&1 | \ +- grep \\--noexecstack >/dev/null && \ +- options="$options -Wa,--noexecstack" +-fi ++#if expr "$options" : '.*no\-asm' > /dev/null; then :; else ++# sh -c "$CROSS_COMPILE${CC:-gcc} -Wa,--help -c -o /tmp/null.$$.o -x assembler /dev/null && rm /tmp/null.$$.o" 2>&1 | \ ++# grep \\--noexecstack >/dev/null && \ ++# options="$options -Wa,--noexecstack" ++#fi + + # gcc < 2.8 does not support -march=ultrasparc + if [ "$OUT" = solaris-sparcv9-gcc -a $GCCVER -lt 28 ] +diff -ur openssl-1.0.1c.orig/Configure openssl-1.0.1c/Configure +--- openssl-1.0.1c.orig/Configure 2012-03-14 23:20:40.000000000 +0100 ++++ openssl-1.0.1c/Configure 2012-07-18 00:25:25.278997860 +0200 +@@ -531,7 +531,7 @@ + "BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN:${no_asm}:win32", + + # MinGW +-"mingw", "gcc:-mno-cygwin -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall::-D_MT:MINGW32:-lws2_32 -lgdi32 -lcrypt32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_asm}:coff:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin:.dll.a", ++"mingw", "gcc:-mno-cygwin -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall::-D_MT:MINGW32:-lws2_32 -lgdi32 -lcrypt32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_asm}:coff:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin -Wl,--export-all -shared:.dll.a", + # As for OPENSSL_USE_APPLINK. Applink makes it possible to use .dll + # compiled with one compiler with application compiled with another + # compiler. It's possible to engage Applink support in mingw64 build, +@@ -539,7 +539,7 @@ + # handling, one can't seriously consider its binaries for using with + # non-mingw64 run-time environment. And as mingw64 is always consistent + # with itself, Applink is never engaged and can as well be omitted. +-"mingw64", "gcc:-mno-cygwin -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE::-D_MT:MINGW64:-lws2_32 -lgdi32 -lcrypt32:SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${x86_64_asm}:mingw64:win32:cygwin-shared:-D_WINDLL:-mno-cygwin:.dll.a", ++"mingw64", "gcc:-mno-cygwin -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE::-D_MT:MINGW64:-lws2_32 -lgdi32 -lcrypt32:SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${x86_64_asm}:mingw64:win32:cygwin-shared:-D_WINDLL:-mno-cygwin -Wl,--export-all -shared:.dll.a", + + # UWIN + "UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32", +@@ -931,7 +931,7 @@ + } + else + { +- die "target already defined - $target (offending arg: $_)\n" if ($target ne ""); ++ #die "target already defined - $target (offending arg: $_)\n" if ($target ne ""); + $target=$_; + } + diff --git a/contrib/openssl-1.0.1h-configure.patch b/contrib/openssl-1.0.1h-configure.patch new file mode 100644 index 0000000..d50c999 --- /dev/null +++ b/contrib/openssl-1.0.1h-configure.patch @@ -0,0 +1,50 @@ +diff -Nur openssl-1.0.1h.orig/config openssl-1.0.1h/config +--- openssl-1.0.1h.orig/config 2014-06-05 11:44:33.000000000 +0200 ++++ openssl-1.0.1h/config 2014-06-29 03:58:01.297328864 +0200 +@@ -857,11 +857,11 @@ + # options="$options -DATALLA" + #fi + +-if expr "$options" : '.*no\-asm' > /dev/null; then :; else +- sh -c "$CROSS_COMPILE${CC:-gcc} -Wa,--help -c -o /tmp/null.$$.o -x assembler /dev/null && rm /tmp/null.$$.o" 2>&1 | \ +- grep \\--noexecstack >/dev/null && \ +- options="$options -Wa,--noexecstack" +-fi ++#if expr "$options" : '.*no\-asm' > /dev/null; then :; else ++# sh -c "$CROSS_COMPILE${CC:-gcc} -Wa,--help -c -o /tmp/null.$$.o -x assembler /dev/null && rm /tmp/null.$$.o" 2>&1 | \ ++# grep \\--noexecstack >/dev/null && \ ++# options="$options -Wa,--noexecstack" ++#fi + + # gcc < 2.8 does not support -march=ultrasparc + if [ "$OUT" = solaris-sparcv9-gcc -a $GCCVER -lt 28 ] +diff -Nur openssl-1.0.1h.orig/Configure openssl-1.0.1h/Configure +--- openssl-1.0.1h.orig/Configure 2014-06-05 11:44:33.000000000 +0200 ++++ openssl-1.0.1h/Configure 2014-06-29 03:58:01.297328864 +0200 +@@ -533,7 +533,7 @@ + "BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN:${no_asm}:win32", + + # MinGW +-"mingw", "gcc:-mno-cygwin -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall::-D_MT:MINGW32:-lws2_32 -lgdi32 -lcrypt32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_asm}:coff:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin:.dll.a", ++"mingw", "gcc:-mno-cygwin -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall::-D_MT:MINGW32:-lws2_32 -lgdi32 -lcrypt32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_asm}:coff:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin -Wl,--export-all -shared:.dll.a", + # As for OPENSSL_USE_APPLINK. Applink makes it possible to use .dll + # compiled with one compiler with application compiled with another + # compiler. It's possible to engage Applink support in mingw64 build, +@@ -541,7 +541,7 @@ + # handling, one can't seriously consider its binaries for using with + # non-mingw64 run-time environment. And as mingw64 is always consistent + # with itself, Applink is never engaged and can as well be omitted. +-"mingw64", "gcc:-mno-cygwin -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE::-D_MT:MINGW64:-lws2_32 -lgdi32 -lcrypt32:SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${x86_64_asm}:mingw64:win32:cygwin-shared:-D_WINDLL:-mno-cygwin:.dll.a", ++"mingw64", "gcc:-mno-cygwin -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE::-D_MT:MINGW64:-lws2_32 -lgdi32 -lcrypt32:SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${x86_64_asm}:mingw64:win32:cygwin-shared:-D_WINDLL:-mno-cygwin -Wl,--export-all -shared:.dll.a", + + # UWIN + "UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32", +@@ -933,7 +933,7 @@ + } + else + { +- die "target already defined - $target (offending arg: $_)\n" if ($target ne ""); ++ #die "target already defined - $target (offending arg: $_)\n" if ($target ne ""); + $target=$_; + } + diff --git a/contrib/tap32/OemWin2k.inf b/contrib/tap32/OemWin2k.inf new file mode 100644 index 0000000..8089434 --- /dev/null +++ b/contrib/tap32/OemWin2k.inf @@ -0,0 +1,187 @@ +; **************************************************************************** +; * Copyright (C) 2002-2008 OpenVPN Technologies, Inc. * +; * This program is free software; you can redistribute it and/or modify * +; * it under the terms of the GNU General Public License version 2 * +; * as published by the Free Software Foundation. * +; **************************************************************************** + +; SYNTAX CHECKER +; cd \WINDDK\3790\tools\chkinf +; chkinf c:\src\openvpn\tap-win32\i386\oemwin2k.inf +; OUTPUT -> file:///c:/WINDDK/3790/tools/chkinf/htm/c%23+src+openvpn+tap-win32+i386+__OemWin2k.htm + +; INSTALL/REMOVE DRIVER +; tapinstall install OemWin2k.inf TAP0901 +; tapinstall update OemWin2k.inf TAP0901 +; tapinstall remove TAP0901 + +;********************************************************* +; Note to Developers: +; +; If you are bundling the TAP-Win32 driver with your app, +; you should try to rename it in such a way that it will +; not collide with other instances of TAP-Win32 defined +; by other apps. Multiple versions of the TAP-Win32 +; driver, each installed by different apps, can coexist +; on the same machine if you follow these guidelines. +; NOTE: these instructions assume you are editing the +; generated OemWin2k.inf file, not the source +; OemWin2k.inf.in file which is preprocessed by winconfig +; and uses macro definitions from settings.in. +; +; (1) Rename all tapXXXX instances in this file to +; something different (use at least 5 characters +; for this name!) +; (2) Change the "!define TAP" definition in openvpn.nsi +; to match what you changed tapXXXX to. +; (3) Change TARGETNAME in SOURCES to match what you +; changed tapXXXX to. +; (4) Change TAP_COMPONENT_ID in common.h to match what +; you changed tapXXXX to. +; (5) Change SZDEPENDENCIES in service.h to match what +; you changed tapXXXX to. +; (6) Change DeviceDescription and Provider strings. +; (7) Change PRODUCT_STRING in constants.h to what you +; set DeviceDescription to. +; +;********************************************************* + +[Version] + Signature = "$Windows NT$" + CatalogFile = tap0901.cat + ClassGUID = {4d36e972-e325-11ce-bfc1-08002be10318} + Provider = %Provider% + Class = Net + +; This version number should match the version +; number given in SOURCES. + DriverVer=01/22/2008,9.00.00.4 + +[Strings] + DeviceDescription = "TAP-Win32 Adapter V9" + Provider = "TAP-Win32 Provider V9" + +;---------------------------------------------------------------- +; Manufacturer + Product Section (Done) +;---------------------------------------------------------------- +[Manufacturer] + %Provider% = tap0901 + +[tap0901] + %DeviceDescription% = tap0901.ndi, tap0901 + +;--------------------------------------------------------------- +; Driver Section (Done) +;--------------------------------------------------------------- + +;----------------- Characteristics ------------ +; NCF_PHYSICAL = 0x04 +; NCF_VIRTUAL = 0x01 +; NCF_SOFTWARE_ENUMERATED = 0x02 +; NCF_HIDDEN = 0x08 +; NCF_NO_SERVICE = 0x10 +; NCF_HAS_UI = 0x80 +;----------------- Characteristics ------------ + +[tap0901.ndi] + CopyFiles = tap0901.driver, tap0901.files + AddReg = tap0901.reg + AddReg = tap0901.params.reg + Characteristics = 0x81 + +[tap0901.ndi.Services] + AddService = tap0901, 2, tap0901.service + +[tap0901.reg] + HKR, Ndi, Service, 0, "tap0901" + HKR, Ndi\Interfaces, UpperRange, 0, "ndis5" + HKR, Ndi\Interfaces, LowerRange, 0, "ethernet" + HKR, , Manufacturer, 0, "%Provider%" + HKR, , ProductName, 0, "%DeviceDescription%" + +[tap0901.params.reg] + HKR, Ndi\params\MTU, ParamDesc, 0, "MTU" + HKR, Ndi\params\MTU, Type, 0, "int" + HKR, Ndi\params\MTU, Default, 0, "1500" + HKR, Ndi\params\MTU, Optional, 0, "0" + HKR, Ndi\params\MTU, Min, 0, "100" + HKR, Ndi\params\MTU, Max, 0, "1500" + HKR, Ndi\params\MTU, Step, 0, "1" + HKR, Ndi\params\MediaStatus, ParamDesc, 0, "Media Status" + HKR, Ndi\params\MediaStatus, Type, 0, "enum" + HKR, Ndi\params\MediaStatus, Default, 0, "0" + HKR, Ndi\params\MediaStatus, Optional, 0, "0" + HKR, Ndi\params\MediaStatus\enum, "0", 0, "Application Controlled" + HKR, Ndi\params\MediaStatus\enum, "1", 0, "Always Connected" + HKR, Ndi\params\MAC, ParamDesc, 0, "MAC Address" + HKR, Ndi\params\MAC, Type, 0, "edit" + HKR, Ndi\params\MAC, Optional, 0, "1" + HKR, Ndi\params\AllowNonAdmin, ParamDesc, 0, "Non-Admin Access" + HKR, Ndi\params\AllowNonAdmin, Type, 0, "enum" + HKR, Ndi\params\AllowNonAdmin, Default, 0, "1" + HKR, Ndi\params\AllowNonAdmin, Optional, 0, "0" + HKR, Ndi\params\AllowNonAdmin\enum, "0", 0, "Not Allowed" + HKR, Ndi\params\AllowNonAdmin\enum, "1", 0, "Allowed" + +;---------------------------------------------------------------- +; Service Section +;---------------------------------------------------------------- + +;---------- Service Type ------------- +; SERVICE_KERNEL_DRIVER = 0x01 +; SERVICE_WIN32_OWN_PROCESS = 0x10 +;---------- Service Type ------------- + +;---------- Start Mode --------------- +; SERVICE_BOOT_START = 0x0 +; SERVICE_SYSTEM_START = 0x1 +; SERVICE_AUTO_START = 0x2 +; SERVICE_DEMAND_START = 0x3 +; SERVICE_DISABLED = 0x4 +;---------- Start Mode --------------- + +[tap0901.service] + DisplayName = %DeviceDescription% + ServiceType = 1 + StartType = 3 + ErrorControl = 1 + LoadOrderGroup = NDIS + ServiceBinary = %12%\tap0901.sys + +;----------------------------------------------------------------- +; File Installation +;----------------------------------------------------------------- + +;----------------- Copy Flags ------------ +; COPYFLG_NOSKIP = 0x02 +; COPYFLG_NOVERSIONCHECK = 0x04 +;----------------- Copy Flags ------------ + +; SourceDisksNames +; diskid = description[, [tagfile] [, , subdir]] +; 1 = "Intel Driver Disk 1",e100bex.sys,, + +[SourceDisksNames] + 1 = %DeviceDescription%, tap0901.sys + +; SourceDisksFiles +; filename_on_source = diskID[, [subdir][, size]] +; e100bex.sys = 1,, ; on distribution disk 1 + +[SourceDisksFiles] +tap0901.sys = 1 + +[DestinationDirs] + tap0901.files = 11 + tap0901.driver = 12 + +[tap0901.files] +; TapPanel.cpl,,,6 ; COPYFLG_NOSKIP | COPYFLG_NOVERSIONCHECK +; cipsrvr.exe,,,6 ; COPYFLG_NOSKIP | COPYFLG_NOVERSIONCHECK + +[tap0901.driver] + tap0901.sys,,,6 ; COPYFLG_NOSKIP | COPYFLG_NOVERSIONCHECK + +;--------------------------------------------------------------- +; End +;--------------------------------------------------------------- diff --git a/contrib/tap32/tap0901.cat b/contrib/tap32/tap0901.cat new file mode 100644 index 0000000000000000000000000000000000000000..6ba3971d9a0ffa42f888935d5bffcf385f90332c GIT binary patch literal 7579 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 literal 0 HcmV?d00001 diff --git a/contrib/tap32/tap0901.sys b/contrib/tap32/tap0901.sys new file mode 100644 index 0000000000000000000000000000000000000000..0f93221cf666cebd685cf6cc425130f7da8269ab GIT binary patch literal 25216 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

ZI*2b~dg;vuuTy#w zrCs)J8myRg@bJO%m^wI=^ok~$rDBZf&c&WzpjKa=ur%__!Ljug8t<@!8LSu$7Kgfs zESPKX#1S5{YQj#+p4GrZs^2Z^4c!8Oo-`uZ9w32VZ`l${#q`KhahpDOy|^TY)l1A^ z@5AsG#5%R(zooSyFnn$BwgzzP50kSjfDQSr*uui~(<7tF>nuo_kyh?1*Owuub{CM^ zy4{Jdp2kHu-S28Y7>!=wi`IGyq9w>u8s4I(wHu1u3#Fj*=pr7Akc6=5LV`Q&hN+DR zS)BI`N_YG<(zPCkd#qS8`l{g{#x7yq{2$ac}}QEE2gmK4q6 zy5F#7gKLMjc^qvH4qO}z2+mP~x6Y(?BzRVLP?ofV)*-bFq$UJ!9i(4pY!ue$hzy7$up_RH zL=Wd>Jet)jOhAR6mq0|AiQyC}>H7V=16N;Ud2}cj?+Nk-FS2wCLV=UHGzrxE!-m^; zVFS@dNV!wE*KZ>QBAn^E7hU+%9kfX#e|ncAmFcaH8b*8YKArH{!g?7v2GW(3&bsKy z;gzOR(qoHqkJJwwtbyP-9G<{p59k?WykBht7M{VO@*lCH&@LM8q|kcD$kza6^#D0eG8N$Z9C3XcNJw;+KAUrioVllwMVq;?^ zgeZh)1Oq}0f)Rn95eTM;5jx}@_HSb|3^Tvn8mccScd4zHwMS_6d(*tf3DH9{H>q2b z)K*yYy>NB(A$+dwe+NtM3ES^+%i2xnYNVKZo(Co5c5;Gjbzzpe(5x=BsL|>|Q^$y$ zM-_P&c4+T)ERt|v8ke%a1ZJo9FcA4LHG5UZv_VX3fJqeJ7cTA}EL(sw_((p-Hla2E zo2k6^MY5cpp`VEPX9wEai8Jnd6`sfM>xA(#m9KNsHVZvol=(P)BM4n-YX6%<= zDeI%b1(wfodp~Z-JaR48{{bPP5LkB&;N!VxF!buB8Tx*X{eAH9U^M4S>G1wues`3P@8qNP5s z+kss+8GwnB_9UcKZ&8gJN5ngq;X?prB-(6(=dG8q3o^R2w`s@JeS^E}G>pRI2X2fwj2>&i28;L#Oo9;3&EY-Ym7Vh# zJg@=D*4ca>UwoMNOu`8=eS`xqEnHA^1VC50R7q=wTzRkUf_wBDvB-ykgbTdBvfko? zJK{-5pf>4FxSC449nfUUME4|tEdS`^rs*Z`Vc$b`Y0M5fVAKX zuDIgRhd94y?n=5>o)snge866h>&gZvC_0Tw=&;6adz^6Xi2d?&$n@fT5HAtkd z941$9YXWoM4he041lCIo)+sb}z*0KUko)_pJuYYz1bv5^Q2gWt$I;U{V$TAi>w{ z1d`Y12_!r=h;%|2=@?`V`7KJJ1&f3 zq(DKJ7jYwkx?%`t!E7=^DxNq)!rmbI4rHIV-axubv1^wG6}s4y;skkkQBAQDi90tSH5>pvc{io1!sdmjShdtNo*Wfi1=v@2I$@ z>%E<>9Yv0k1rBrtbk$K@jvZ+$v^0+p6@xd`T(IM|jDkB$rfkV=wjJ%p0)?ASQEJq{ zrx%0u(Mk;5`5VK{7FuwLb3B?g7ng+GCT%G;ifH^c9KlDv+7NZE0W_1qB$tvy7oSqW zNtxMg~Wud!DPP6k84_>ddUe{;xf38la}6iU%5(H{7W z3(HNkMa#OmJcLgoTTQ57Jz3-`*Jz3KzKKsHw~VrNZ5rX0+Y{#oP5Aj&be0FVZUrY% zD!wbifVv7J+Qb#(jR^&GtTz=dYVi$bo>MCTX|NcqfdNtL6yQux*cLDge4&kr;60I9 z6#ZN;&Tkl_M)41498<@4;Z%jn42lhh8Uk~<(*^IG_BkE%y(zv5b;m*ht0}52I049} zVb$^H&kd&7l&mAS2kKqRxv2cxzXEy zg;p^rYr^b*)Pf7UMTY2it>!H4W-&F)*sSa6(Ui8E`f$V|`#uFYBnVxkmR{y7aqxYG zE(sL&Di!!X#cx>2m+Xl19rEYzu)rYTOtqUJjSn>sW+krVLK$tz+qMYkKmkADeuw6o zk}L=sLc$Mm@C+{jd>%x?9Ib=W_I`b(J^-pg1q&X6Uen5f7`>Lg+^meNr72g=-{S|h z`}AxKLHfLr_#J}Yb`|;=0{wYh73LrI{0S1-i{1`pmztH1Fv_>ISRm|KhHN3(uwau) zttYcrTioMH>Cs+;N7?&k9MoOV4ccsP(a=yP*uIJY{AduMbPsTCv*BjNnN86+d7)v9 z3lkW|(CiDq9>%`v)|{&QwAO;QF{Eu@@qT4;sPN2YoPwNgPY9anhDE8?0g6|w5QfYl z{bIf#52&DwFoWEfM<#7C+5>R|-v`rq?y_VH&rgoyOOg}HaDZK0`#6lxDyS|z`UT}T z)%;{rl{%Gj0Gh&=n*cr2I*B)#y;rVaG%rg|_g=c97;Il|oaIm7=wJ0O7Cs6>$Htbq zkJRESCHyBQZ7*(IhS!!kZdX`4k^iT+Dp1-82I8#$e#2_fjJ2yAuR8{`Q|*u=zSP>%9BHj4Vy>tvF%YI z2_Iwz@j)vcy}t=USFG^%huqPz#seYake+n$-XOHLr30D}L;gi#X)Y{S`jULxXJBD) zO!h4@=Rqy@@{g2M?=};|Z4$dlG6tu2M2Db`-_=@Bc_C`!v#s3am@dbm zX{(8C`+yi6M7aH&6QghFZFPJ-LDsOXTlEE?8dU#j`hESN`0W+HN5$_M@%z5`eN+4% z!LK{MoF47(U|s2xrKbc@tP-{ll`|btZTJ*cef^Yx*YGR1%|P)2ugJoF-Yh>p85tcX zJi#Q-*ULAJm-qF`yMJ;N%c%F?Wd0Q{P8!g|ee%ASF7zU^enjULLxt^v`tlyaw)59; z^o5dNKDz|)ej+iXJ}szwT2TG8p!aFP$J0b_j|UadMP4mQxyP$TE16!+q)aU+P~wr2 zed|!{^%K0Qhy2ZY+|aXlATIUfBEDU~crZwNW(^cY_1unl&UE)o91`i0^1mU9efkPufmOo!Qs`?1J=R*{!PZLW$M-TPbhuW2EO|rhBsI5h>jrw;)mxf}x7z3E@SnC{7c_zaY_uwxOF)e4f_u zi&Z$H6p=c)?NbriAh&%aB5t|usEBNq+qy+$x!kr75%p>6e(t9s>wj4cFVVf)dMN*% z9|MB=xW7*Ry8twna<^AoD7R%H>eVcA+i%cqUM)s$yBm`MU4IAN3vYvWf)&WVKa<5F zdN;4zM?)5Rg!Pb-%kh^b(V3G-U@5imCG z9i}{Z04~nh-;<8AaC0dp_sGF+7)L39|-Vj38fs-F$IjzaJ2G#+tuQHeTS z%>BO3JSC^*LML`uv3if*6};UV$ZI>O$a;E)D!30$=+D?unt7g~}4txayO%v$(~C{X$4U@Ye?m{eBuo+Fwwvb75Mc+@!}0?s4U= z`V_xFqCKx;@V-v-72}8+R4|aXuIEqF99MlLZ~2wzke?#XdZX~;`Cda}p>v`3I;a)% z(mgF(WGYFam#I+456^(sL`}R-wb=^y%fUpipM)8L6(hOwXB`3%){%XZRwi^99{+9f3t(|!f^R_GQ`Y4N{Wpyh(2!VwskX7yf^iu1q+ z%w@&Sd5J(Z`y{*Z{Z5)GXToyD_$C1`2LkmW+KoVkX4Q7e0m_`k3*< z*wcMP?W~D78$wePVB6_rhNdPCi6;%jj~u}jvb)Ob8m(zb^Q+c1Db>wMuIz{xhU!+% zS%rUuwJI%jm9nnsu1y32SgNd3s&l8dB-xvrb5~AnxqE8W>ZB=4bEj4% zE!&KYs+p8gG8kRl+*BOS7e&qol%eUNZBzTJ@;9{PS8uGVtZrGgsA0qUbq%YAflO_o zzrn0kI`9C{ED$?bdgMqUo6i3=4LHJ>KC$Q4F5uH0AG=SZecFeYX)SUz&co7C~()YCge8*TM=+R2-q7vYnS8y z!y#lL&~tbNWB&u;aRdcn6~Y1p4PgR8Kj2Oy>_PY?!cz$BKE@Idwje$eF!W4D+>CIp z9JC?4fbbN;BM1!$E`%irX$Xl3283Q0V}C?Ag)j&B90(-{S3i;eWrsxrpHJd{sNsLZ zQJ@E(Q8IjD#_)X^i$NHVFalvD!YG8%2o?nT8Z`<5A8!IS3TgUsQ<88zMrGoUKJ26q z{OD6wGwR3)^kL#Sgs})FgjfV4!UTkPgg69%vuWsIx9IzC3A&~=x*Hl0g>h|!QyTv& zFWShAQ5J*UZWpI<87Yj;!q~K=ET*09;{BPaW_^fbsHLI zk&Vm>=;v>Jpx!LFXGZ-{Qkq|S%g#H44jWPtU{H!&(9ZfqZ}L{qUR8j~gZS_XzYv%1;a_pD;pVi3mf>ht@xVPaQu& zpt>cvH?$n#dUzJ&e-b8{1Cewr4j*L%dhk(($S03Lq`VF{Ha8#;?%(14ZwNPf zivF1QufLx3M!p7}c>*CR<~x&y!n&VgtOX(R5T;oOH^vx&{M+6U-wE7y0yuKztMJ@c!+g7@Xy8OH#&f5B(7ByC>^M zmG!JRI8g_#XC*;+eU&lKQdM!k=XunvU+dB;K^6W1Tewc`GjVVqh2nP+W}G*YujuN3 zZIFr@ga6tf0wuJ#kcu!Ze1TV~%iwJ5bWeWv6rp3nrTcSnA~Aw@ipYhdKc^#z)jcm@ z5Ihcj7I~&aC!WAWPal$}AkTxm{2_TM(0jXtLWtBHeE;8~v!63OSp8s2wZhoXC|23@ zFr4|(B}#*%xw?9OV@qAB(p=YgKU)^bD{HK)#Q&!aXS451i#OCP-0)yi1C&`w^+WFJ z7T~H!Zb@}R^}3eoh3gtCs~bw2>Kd19sC zPPd=fVLg9wV^tkBPG+9FCDPaI(Dh2$Z}r@gaEoC~c_LTz`@#*4HFfv9o7d6$1|2C8 z4<*&>s)iSQDQeJ27@q(BaQrvm=(G-n;Wb~u_+9T-s#~akJ|14Xtg&Ikx~hm6*e!yV zW!23O)-{6P^5%6-O%Ma zV{y1oHpFS@t19>lu70Yb(~;$Zbz6a7JH}`!Tg;ZiF0H`3h&d3a=XJxMujs23R1BuC4u9+!Eq8>k2Xj$iikhV=HRVUl24ihxU=w& zpd}$UMYPu_Xd2u-(B7meEW=c^(*k+XKIJ}k6Y4ENo%=-%l4ujkNCNjmh9sk_Ww;E` zl_+ZjEbWc%2Q0~LCa9vGs}vRvV|jw6rD0sOXCgU8WKAi3XLBRk){DN;d#nl)pdK6K z=zmY2%w?m&|L``h?wK3)3q%9y(-?Mvm*xS^21hSr$znDvLn)2X7VuAd#KCbDYj{zg zE`;oFd@$dcmhq>IP)1tj!OXWaf1hcYO^Vb}` ze>Q!0dP2suj4c_TWqgs5nVB>D@vL20Pi8%p_2aB(vYyL&KI?_77qec<+LQHKRv_!m ztb&G|6LkQ%>otZjqwsrRG*}1dZ zXa8vS!P#%m{{8HK&I)D4XHUw$HQSlJEc?D}3+QOF{n++r+wz>%ISo0-a!%y*=3L0R zC3j}7Eq7k-=G+~*-_89&?(4a4<$j#|N$#q-m2)4QdunbF6fK!|-@Lkc56=5^-WT)! zLdpxurXR0_lsi*qr0h!hY0A%2dQ$pRE~ku0osc>?H8XWiYF_F?sasPYOKng6r_}D$ zQE7LjEl+Dr^QZkH?cKCb()!aLvi`gE&(^Pm*|VRW{g1O>n0&vDJ+bDo*= z(wy!&=jWu_cGwQtjOdqzIVCyY&-rCeSI*&_qd9*<|77Ks=dR9u0J3SzmF9jq50h7{ z3rAC?q>fFyIqh4xyf;1lt@P9BU#EXKJ2xvc`)tnVIbY`V)#JYmlYiWVBnbs8R606hNU~RH)wr;ULX?@E2l68;ued`J9 zY3muQDczj@v-Dr3|1SMZdNBRV^o!{%V?@U2jQEVZGv;IzWE5vqX4GbEz^MIp#tRwy VGJcbBIODyHkHuL#n)rY6`JbCeUylF) literal 0 HcmV?d00001 diff --git a/contrib/tap32/tap_install.bat b/contrib/tap32/tap_install.bat new file mode 100644 index 0000000..06de8b9 --- /dev/null +++ b/contrib/tap32/tap_install.bat @@ -0,0 +1,2 @@ +tapinstall.exe install OemWin2k.inf TAP0901 +pause \ No newline at end of file diff --git a/contrib/tap32/tap_remove.bat b/contrib/tap32/tap_remove.bat new file mode 100644 index 0000000..dfde01e --- /dev/null +++ b/contrib/tap32/tap_remove.bat @@ -0,0 +1,2 @@ +tapinstall.exe remove OemWin2k.inf TAP0901 +pause \ No newline at end of file diff --git a/contrib/tap32/tapinstall.exe b/contrib/tap32/tapinstall.exe new file mode 100644 index 0000000000000000000000000000000000000000..6d978cd7c370ec84763ebfe07b41aa8dbc3f2820 GIT binary patch literal 78336 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 SN5xi5ASMtKhza~Z0{;ONZ_LF2 literal 0 HcmV?d00001 diff --git a/contrib/tap64/OemWin2k.inf b/contrib/tap64/OemWin2k.inf new file mode 100644 index 0000000..3a0398c --- /dev/null +++ b/contrib/tap64/OemWin2k.inf @@ -0,0 +1,187 @@ +; **************************************************************************** +; * Copyright (C) 2002-2008 OpenVPN Technologies, Inc. * +; * This program is free software; you can redistribute it and/or modify * +; * it under the terms of the GNU General Public License version 2 * +; * as published by the Free Software Foundation. * +; **************************************************************************** + +; SYNTAX CHECKER +; cd \WINDDK\3790\tools\chkinf +; chkinf c:\src\openvpn\tap-win32\i386\oemwin2k.inf +; OUTPUT -> file:///c:/WINDDK/3790/tools/chkinf/htm/c%23+src+openvpn+tap-win32+i386+__OemWin2k.htm + +; INSTALL/REMOVE DRIVER +; tapinstall install OemWin2k.inf TAP0901 +; tapinstall update OemWin2k.inf TAP0901 +; tapinstall remove TAP0901 + +;********************************************************* +; Note to Developers: +; +; If you are bundling the TAP-Win32 driver with your app, +; you should try to rename it in such a way that it will +; not collide with other instances of TAP-Win32 defined +; by other apps. Multiple versions of the TAP-Win32 +; driver, each installed by different apps, can coexist +; on the same machine if you follow these guidelines. +; NOTE: these instructions assume you are editing the +; generated OemWin2k.inf file, not the source +; OemWin2k.inf.in file which is preprocessed by winconfig +; and uses macro definitions from settings.in. +; +; (1) Rename all tapXXXX instances in this file to +; something different (use at least 5 characters +; for this name!) +; (2) Change the "!define TAP" definition in openvpn.nsi +; to match what you changed tapXXXX to. +; (3) Change TARGETNAME in SOURCES to match what you +; changed tapXXXX to. +; (4) Change TAP_COMPONENT_ID in common.h to match what +; you changed tapXXXX to. +; (5) Change SZDEPENDENCIES in service.h to match what +; you changed tapXXXX to. +; (6) Change DeviceDescription and Provider strings. +; (7) Change PRODUCT_STRING in constants.h to what you +; set DeviceDescription to. +; +;********************************************************* + +[Version] + Signature = "$Windows NT$" + CatalogFile = tap0901.cat + ClassGUID = {4d36e972-e325-11ce-bfc1-08002be10318} + Provider = %Provider% + Class = Net + +; This version number should match the version +; number given in SOURCES. + DriverVer=01/22/2008,9.00.00.4 + +[Strings] + DeviceDescription = "TAP-Win32 Adapter V9" + Provider = "TAP-Win32 Provider V9" + +;---------------------------------------------------------------- +; Manufacturer + Product Section (Done) +;---------------------------------------------------------------- +[Manufacturer] + %Provider% = tap0901, NTamd64 + +[tap0901.NTamd64] + %DeviceDescription% = tap0901.ndi, tap0901 + +;--------------------------------------------------------------- +; Driver Section (Done) +;--------------------------------------------------------------- + +;----------------- Characteristics ------------ +; NCF_PHYSICAL = 0x04 +; NCF_VIRTUAL = 0x01 +; NCF_SOFTWARE_ENUMERATED = 0x02 +; NCF_HIDDEN = 0x08 +; NCF_NO_SERVICE = 0x10 +; NCF_HAS_UI = 0x80 +;----------------- Characteristics ------------ + +[tap0901.ndi] + CopyFiles = tap0901.driver, tap0901.files + AddReg = tap0901.reg + AddReg = tap0901.params.reg + Characteristics = 0x81 + +[tap0901.ndi.Services] + AddService = tap0901, 2, tap0901.service + +[tap0901.reg] + HKR, Ndi, Service, 0, "tap0901" + HKR, Ndi\Interfaces, UpperRange, 0, "ndis5" + HKR, Ndi\Interfaces, LowerRange, 0, "ethernet" + HKR, , Manufacturer, 0, "%Provider%" + HKR, , ProductName, 0, "%DeviceDescription%" + +[tap0901.params.reg] + HKR, Ndi\params\MTU, ParamDesc, 0, "MTU" + HKR, Ndi\params\MTU, Type, 0, "int" + HKR, Ndi\params\MTU, Default, 0, "1500" + HKR, Ndi\params\MTU, Optional, 0, "0" + HKR, Ndi\params\MTU, Min, 0, "100" + HKR, Ndi\params\MTU, Max, 0, "1500" + HKR, Ndi\params\MTU, Step, 0, "1" + HKR, Ndi\params\MediaStatus, ParamDesc, 0, "Media Status" + HKR, Ndi\params\MediaStatus, Type, 0, "enum" + HKR, Ndi\params\MediaStatus, Default, 0, "0" + HKR, Ndi\params\MediaStatus, Optional, 0, "0" + HKR, Ndi\params\MediaStatus\enum, "0", 0, "Application Controlled" + HKR, Ndi\params\MediaStatus\enum, "1", 0, "Always Connected" + HKR, Ndi\params\MAC, ParamDesc, 0, "MAC Address" + HKR, Ndi\params\MAC, Type, 0, "edit" + HKR, Ndi\params\MAC, Optional, 0, "1" + HKR, Ndi\params\AllowNonAdmin, ParamDesc, 0, "Non-Admin Access" + HKR, Ndi\params\AllowNonAdmin, Type, 0, "enum" + HKR, Ndi\params\AllowNonAdmin, Default, 0, "1" + HKR, Ndi\params\AllowNonAdmin, Optional, 0, "0" + HKR, Ndi\params\AllowNonAdmin\enum, "0", 0, "Not Allowed" + HKR, Ndi\params\AllowNonAdmin\enum, "1", 0, "Allowed" + +;---------------------------------------------------------------- +; Service Section +;---------------------------------------------------------------- + +;---------- Service Type ------------- +; SERVICE_KERNEL_DRIVER = 0x01 +; SERVICE_WIN32_OWN_PROCESS = 0x10 +;---------- Service Type ------------- + +;---------- Start Mode --------------- +; SERVICE_BOOT_START = 0x0 +; SERVICE_SYSTEM_START = 0x1 +; SERVICE_AUTO_START = 0x2 +; SERVICE_DEMAND_START = 0x3 +; SERVICE_DISABLED = 0x4 +;---------- Start Mode --------------- + +[tap0901.service] + DisplayName = %DeviceDescription% + ServiceType = 1 + StartType = 3 + ErrorControl = 1 + LoadOrderGroup = NDIS + ServiceBinary = %12%\tap0901.sys + +;----------------------------------------------------------------- +; File Installation +;----------------------------------------------------------------- + +;----------------- Copy Flags ------------ +; COPYFLG_NOSKIP = 0x02 +; COPYFLG_NOVERSIONCHECK = 0x04 +;----------------- Copy Flags ------------ + +; SourceDisksNames +; diskid = description[, [tagfile] [, , subdir]] +; 1 = "Intel Driver Disk 1",e100bex.sys,, + +[SourceDisksNames] + 1 = %DeviceDescription%, tap0901.sys + +; SourceDisksFiles +; filename_on_source = diskID[, [subdir][, size]] +; e100bex.sys = 1,, ; on distribution disk 1 + +[SourceDisksFiles] +tap0901.sys = 1 + +[DestinationDirs] + tap0901.files = 11 + tap0901.driver = 12 + +[tap0901.files] +; TapPanel.cpl,,,6 ; COPYFLG_NOSKIP | COPYFLG_NOVERSIONCHECK +; cipsrvr.exe,,,6 ; COPYFLG_NOSKIP | COPYFLG_NOVERSIONCHECK + +[tap0901.driver] + tap0901.sys,,,6 ; COPYFLG_NOSKIP | COPYFLG_NOVERSIONCHECK + +;--------------------------------------------------------------- +; End +;--------------------------------------------------------------- diff --git a/contrib/tap64/tap0901.cat b/contrib/tap64/tap0901.cat new file mode 100644 index 0000000000000000000000000000000000000000..622a45e7561afaf77c0ac314f6f8cd1d2b8ff7eb GIT binary patch literal 7551 zcmdT}cUTkI+Mh{6fDnoXu+Sn!ka~uMY5@#L5kV<}h+u#SSxO)YMG=9B0qp2v7o#F} zz!h{w6zig_sMxW9D7(6V6ctfa{LX|T=-$11zvu2BH|Lo=bIzGl<}JVXcisUatyHqS zvDi)Aqln59BqFUCAkvB=peUvQ4HWXAMA~wOMCxA+( z3^Y&dz}#{*a8qHEY|SJ8L-_BK4Am@E#VUk z=_mxjMCcqa@u`xnGjCRJ7duphR66f*_J-zjUX5Md+naJ(J7Feq99vKU_fWmWyT9C4epg$p~u zG9BLa%h5)9_n*s=JM^x&Im`$10CQN2GMGpt$Vepg|IjS{(6ZFgen;JYVvbDu`)NV5 zl{8(AB(}hM*yL2W-bA3UO+nm{0K^??5gV{$m65_l5Q#|bJ#_LVKtu?W5D6%Opkixq zzxO@6q~PuP7Zc0x1>FUTL)d}JK!5g?f(Fr_M5Yn^eX%h>jSMRkn$lbjpX#G{JTZ*opSheGrFrK$lNvjB~clKn7IZ4nYo0_OypAe zYag}B9Pz?Q>K^kgX68j_=e@D=3$$vfvknQHK2#+QDeytAp_BFuZY zp}4d>X;arhk8l@P^Js+)UNcQrw+DKxx+B{>-t@ibP+)!S^fzYb5*yYWu3oFPEyhzW zU%TN^M`RQKg8PMng;ScIomJl(p2Ag4J!(cELI~TNc?o2mhboqXNGu~G3vt*8Kot+x z0V*CFB^1WnTUhYI1@Y!dP!$6Bg6848Scu<5e=Qn{ejyQ{Uo!BT4hgy*Fp^A^=!b+Okd8UuDrbCbH_UtwQe|TYgd|REwta_-E32_HMb^zx>o6_YRQ^_r@eP0NYkyn z&^pGRF;`|CGOT{xB=#iO&RU-G%O~Hbtxw6>PYO2`giyCU+jq7~wBq8zrpBX2532Xg zjCfeBG5^dFJGr~Iy1N;xELLu7t(2YM;OrzXTh7tcuXMZZoYA`b##KU@>J7hY^}QLv z9~Mtrz)#B=Q((&4Q{#I*ZR$H?`=7mkME1o}mM{1a;`?^&@c`xciyym>=1Y{uG+a{8 zSa?<0Bu-4~YJHnxSSNG2ojE_`l)L3?2K2s5@G=|lKG&*o`HgFQX0Uo5#kwhCh2Mw_ zWUdzf}(iEH%`C;t1ByLO$XHXv$8rd(3 zoh;;FT0jGTOo67_-#}+^_(JX?Za7=W<;7t-K&xMW>I2=l0}BTIcff5K&{LUT-4?Gh z2Ho}_!3q(oJ6tNbyNXa{JZ@14xJ4bT`Kj<)Exm-2mU|>Sv9rvptMR;YRV4e&-U!Wy zr$5v%4rhVfz-6l+ML)4FP_C+LOL?7Kw2U{UYGa9FMbz7vA8XF|m>qVT+I`~gf=~^@ zu3n31?ZTeD+lt0tAvC3X`aD-!*ygCY?37}ILv>kW_Lt(mj~uJr4eKrz6q zHigN^AH8+-sfH+vL%%=2uyVEW#Z?os7oAxi7{E)cnsR7j_JSG}wJE!@TKvva;x6@F z_IPqicGPCwrH`f=)@i4-?ZU2h{jNLi(WT?AtZm~%CEDwoL%Q3ScBLH-L)UfBQfRoT zJNH0-ZE;RgaeIa0o90>dl8;f6V%5pVv(KL%K#WHq^TGcUF>u@IM+`YYhTcs;5#WTk z>5%LJj5QLb#8M3Y6>jv~%5YO*IZ06jw^S{Izk(2y3^7d#Ao2a>hdeoLvSM2K&hq-EfG=muE-&l8K`rRq+-GuovX6#_tznOY2N02};AJ%6$4+^> zgX~foZ@6<7*=l(vUifCmAas};|5X&V0aj2T&_m5xF>HZ=&Y;gu42$80(`WO!v26b0 zkseETN)$%%_*~&)X+&iL8_fEvYvNU_LD$SI``qz-kPZS90UL0XEj~|Uq z26p{hwDjZfV+C~HB6^~LLuU)=xP=H{OiE5p9vNEr@oc(L_$0u@`8qzBNHZ9keegwD zya>n^U=+j2f+YYB*OFqouwBJ57xx4en9VQ=NFS?`uu%~-h+&DYy%A0$W@laSt@eGV-yPn$=dqM^^$#M}g#TpbW%zD|QeW)zNn4+- za9wI9PJbD&?r7u%hGia&{^_8e>bBSmSu>NONOu!V7fk5QQJnZ$$1Km}1?oTRb*z<< zsIfje_{6>XLz$mLYnNAq@4Tt|>EPt)+@IFkmsge*D2H5XF%_*c`s^#W=}9?CululX z?2B{lbK-59PRO|VxbbXTF20OOb5+TtQOO*|E{T+>n4`(x^?vKY3=>FR8)FO9k}KjlER->q!M4ztff*v ziFv}dCY5-tqUsw!z#**Ie$3Avss6nY{%wwhuiTy1Z{3kwSz@kLlcM)QbDVN|YgDCW zeU5FzV~5+hWe&$go4N{vDqfjSyxp)AjYB9%A$h|nH+jbonqwD7>ghi{eYa_Lu|~Jj zlc(mHwHbS3e7y4#{a04#zP{Dsl$c`??w_XZ7nDD*rk<}!-*h^Cvt#f-iXiw=!xk_w##dkjcy$OE_m2cdNMvy=^DM z9zTxD#s(T?X_VP99JYWRCxmnfw`}+%MOD!|o)b5Bw%5Q(Xd28>NHN^XnH$L!vSaA( z&h$Z)Go#PqhVyv>-XbC07yc!)`5gLOxKf0agVB>L2j?YzGw)v>TYmOV*KFwE%K9C< z>leAObn3yRDSrEddGCs}uk|Xun@`n9O?6OvnJs%TPrWSlxVnYP;GG2Hr-2p&vO0n=+|IPY$f;etvQ0`Ebu2 zlmAe-d0?5&vfdin>6h%^YHa#RhzL!GIFt(W8qnKl((}iNBZF)PaKyWGNOth}XC+}s zFtNn|uVDGI81Tpdm}cKW%21aSSN=PI_9x_o2oeYJ2|^GTME=bKm&4#FKoB#&dmA>F zJu(;$y^R^(70%%U9b6`Qq_IFfOv~gL%aQHN|(qOI2PO zrGc?ub{oE`@OQp(BDgP@dq(y1>G(g=l&g;2K_lBg)o~Kv$6n7k``9e%*)&E%y??7_ zUulA&Qtjei@?8}r!ow0@bu<~~mk>nb8)1R;e}x1AY(W%cCAib8NCOuv9P`X5m;HkfqX!{IM+(xA)=&U6 zeKH9$90XVoWwX^}Nx0N?2J+Zya%-N}<$7h^-*Hh^TqORex$bsVks3OVfX3lR9R=L| zlyT01ih(j-k!DY10187m& zbD(^f=@r1jLYzjpcGySCg!$>LxKR(~{bomZ-`bSWRRH|)^>j#Hz!P{#+$1x^&I1U7 zqhRb{sK66D7V*(soNigf^LY`8;X;AMkiFsNB()~oiliVpGKohN!S_U)XB?mGlAcJ* zUKYw~n6dWPm1j=4I#ph~Cd_+q-EK~PVNtp3xsF>8Q`ZHIdTY6QX{|&1^oOJg9z9oB zIUc;=8r4rT>vnmbx#J&qjc``6C}*8mzM|0J%*)cw-c<=+k)^+i4%}bs-(%C-IW4E7 z`RU5fnsMfAC%441Qd2FX2ky%E)jIVB22-x(P#cUqIevX1#j9J!9W|Zv({_8;?kO2o z=$L2j+4uZBKF&NWTUnL1_(qi#5`4Pg#wSs(hMi>2<`WI)j>~>=-sF6aX*@3YaC_(E zwn<*)w97UtmL=XTyQfHwE58+^mk`;~m9VzNOL&O-p{>d@us3A=_E@`L#W@bEG!Lj- z-tCJ$)%E^(%l*7})~+e%42{*Qqwc-E{K?zvN~D8|nd7c5?W=6J7yF5yFafo5Mo!<{ zhwhW|JLDhk{q1bW!nS%p$-Es#XZ$)AsikLoW<4rW%8xXklghL^;dEhjR@B7D`ULqG znQJMV%{tompW0HSoVli2rM&6Y77I6??+W*bl89d z8QaJHyeCYhLBA!b$%56|_GIa3rhe{2Bmd&x61^~!$nX;f?jIIVh}SQ-%yX!2HFhaJ z5H{Ze*=l#VEL3n&t}SEKI#;E2#xzz_9y!ea^p}dM2ME1#Dih|6m|D$w{pz<9}{rW{q!UHP9!Xg#J6QE;<(%JGvOkv1dDJX>PuOU);;w%K`Qd<(#DZc~+-iC$^O4H8~p=te&=`SrPm;xq}kQJ{XqrJk-zn zq}aw}#`GqPZF)jtF=@lwN~_%i6zuEf$?&Tg{QigH-~S+``6p6zfASGwm{Jyer-H#x zleh{7zf;P~V9FytEm{SAr-F&pH;?W}G>K*7uSD&Ui+@(>$gLY5!~0dh?b*G{fTq_{ zqJ1(YZn59Y12gf-g}6*^V}2y4J~SiLO^Cxj23rzj1W-ts^Uy?;n3UPUy1Cqz@)pM_Zns; Y)x87pYr7X8|NK)>M0I@rJ+apR0ob-$7XSbN literal 0 HcmV?d00001 diff --git a/contrib/tap64/tap0901.sys b/contrib/tap64/tap0901.sys new file mode 100644 index 0000000000000000000000000000000000000000..14bf5bfb0f5c487c4fda5f4960124ff3165c1346 GIT binary patch literal 29696 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 CzDt7u literal 0 HcmV?d00001 diff --git a/contrib/tap64/tap_install.bat b/contrib/tap64/tap_install.bat new file mode 100644 index 0000000..06de8b9 --- /dev/null +++ b/contrib/tap64/tap_install.bat @@ -0,0 +1,2 @@ +tapinstall.exe install OemWin2k.inf TAP0901 +pause \ No newline at end of file diff --git a/contrib/tap64/tap_remove.bat b/contrib/tap64/tap_remove.bat new file mode 100644 index 0000000..dfde01e --- /dev/null +++ b/contrib/tap64/tap_remove.bat @@ -0,0 +1,2 @@ +tapinstall.exe remove OemWin2k.inf TAP0901 +pause \ No newline at end of file diff --git a/contrib/tap64/tapinstall.exe b/contrib/tap64/tapinstall.exe new file mode 100644 index 0000000000000000000000000000000000000000..852df834875ce2722db2a0e4ee77497d200ab5cb GIT binary patch literal 82432 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 G1OEpEHCO5Y literal 0 HcmV?d00001 diff --git a/contrib/tap64/tapinstall.exe.minifest.txt b/contrib/tap64/tapinstall.exe.minifest.txt new file mode 100644 index 0000000..9bdee88 --- /dev/null +++ b/contrib/tap64/tapinstall.exe.minifest.txt @@ -0,0 +1,16 @@ + + + + Installs or removes TAP devices + + + + + + + + + \ No newline at end of file diff --git a/doc/Makefile b/doc/Makefile index 4f8d8e8..4d5f9a2 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -6,12 +6,12 @@ ## tunnel endpoints. It has less protocol overhead than IPSec in Tunnel ## mode and allows tunneling of every ETHER TYPE protocol (e.g. ## ethernet, ip, arp ...). satp directly includes cryptography and -## message authentication based on the methodes used by SRTP. It is +## message authentication based on the methods used by SRTP. It is ## intended to deliver a generic, scaleable and secure solution for ## tunneling and relaying of packets of any protocol. ## ## -## Copyright (C) 2007-2009 Othmar Gsenger, Erwin Nindl, +## Copyright (C) 2007-2014 Markus Grüneis, Othmar Gsenger, Erwin Nindl, ## Christian Pointner ## ## This file is part of Anytun. @@ -27,13 +27,26 @@ ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License -## along with anytun. If not, see . +## along with Anytun. If not, see . +## +## In addition, as a special exception, the copyright holders give +## permission to link the code of portions of this program with the +## OpenSSL library under certain conditions as described in each +## individual source file, and distribute linked combinations +## including the two. +## You must obey the GNU General Public License in all respects +## for all of the code used other than OpenSSL. If you modify +## file(s) with this exception, you may extend this exception to your +## version of the file(s), but you are not obligated to do so. If you +## do not wish to do so, delete this exception statement from your +## version. If you delete this exception statement from all source +## files in the program, then also delete it here. ## VERSION=$(shell cat ../version) MANPAGES := anytun.8 anytun-controld.8 anytun-config.8 anytun-showtables.8 #anyrtpproxy.8 -XML := $(MANPAGES:%.8=%.8.xml) +XML := $(MANPAGES:%.8=%.8.xml) .PHONY: clean realclean diff --git a/doc/anyrtpproxy.8.txt b/doc/anyrtpproxy.8.txt index a92d2e6..4f29906 100644 --- a/doc/anyrtpproxy.8.txt +++ b/doc/anyrtpproxy.8.txt @@ -31,7 +31,7 @@ DESCRIPTION *anyrtpproxy* is a rtpproxy which can be used in combination with anycast. It uses the same control protocol than rtpproxy though it can be controled through the nathelper -plugin of openser. *anyrtpproxy* uses the same synchronisation protocol than *Anytun* +plugin of openser. *anyrtpproxy* uses the same synchronisation protocol than *Anytun* to sync the session information among all anycast instances. @@ -61,16 +61,16 @@ OPTIONS The local address and port to listen on for control messages from openser *-p, --port-range *:: - A pool of ports which should be used by *anyrtpproxy* to relay RTP packets. + A pool of ports which should be used by *anyrtpproxy* to relay RTP packets. The range may not overlap between the anycast instances *-n, --nat*:: Allow to learn the remote address and port in order to handle clients behind nat. - This option should only be enabled if the source is authenticated (i.e. through - *anytun*) + This option should only be enabled if the source is authenticated (i.e. through + *anytun*) *-o, --no-nat-once*:: - Disable learning of remote address and port in case the first packet does not + Disable learning of remote address and port in case the first packet does not come from the client which is specified by openser during configuration. Invoking this parameter increases the security level of the system but in case of nat needs a working nat transversal such as stun. @@ -79,13 +79,13 @@ OPTIONS local unicast(sync) port to bind to + This port is used by anycast hosts to synchronize information about tunnel endpoints. No payload data is transmitted via this port. + - It is possible to obtain a list of active connections by telnetting into - this port. This port is read-only and unprotected by default. It is advised + It is possible to obtain a list of active connections by telnetting into + this port. This port is read-only and unprotected by default. It is advised to protect this port using firewall rules and, eventually, IPsec. *-M, --sync-hosts :,[:[...]]*:: remote hosts to sync with + - Here, one has to specify all unicast IP addresses of all + Here, one has to specify all unicast IP addresses of all other anycast hosts that comprise the anycast tunnel endpoint. EXAMPLES @@ -94,7 +94,7 @@ EXAMPLES Anycast Setup with 3 instances: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -On the host with unicast hostname unicast1.anycast.anytun.org and anycast +On the host with unicast hostname unicast1.anycast.anytun.org and anycast hostname anycast.anytun.org: -------------------------------------------------------------------------------------- # anyrtpproxy -i anycast.anytun.org -p 20000 25000 -S 2342 \ @@ -142,9 +142,8 @@ Main web site: http://www.anytun.org/ COPYING ------- -Copyright \(C) 2007-2009 Othmar Gsenger, Erwin Nindl and Christian -Pointner. This program is free software: you can redistribute it -and/or modify it under the terms of the GNU General Public License -as published by the Free Software Foundation, either version 3 of -the License, or any later version. - +Copyright \(C) 2007-2014 Markus Grüneis, Othmar Gsenger, Erwin Nindl +and Christian Pointner. This program is free software: you can +redistribute it and/or modify it under the terms of the GNU General +Public License as published by the Free Software Foundation, either +version 3 of the License, or any later version. diff --git a/doc/anytun-config.8 b/doc/anytun-config.8 index 706e72c..57e3753 100644 --- a/doc/anytun-config.8 +++ b/doc/anytun-config.8 @@ -1,13 +1,13 @@ '\" t .\" Title: anytun-config .\" Author: [see the "AUTHORS" section] -.\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 12/30/2011 +.\" Generator: DocBook XSL Stylesheets v1.78.1 +.\" Date: 08/26/2014 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" -.TH "ANYTUN\-CONFIG" "8" "12/30/2011" "\ \&" "\ \&" +.TH "ANYTUN\-CONFIG" "8" "08/26/2014" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -237,4 +237,4 @@ Othmar Gsenger Erwin Nindl Christian Poi Main web site: http://www\&.anytun\&.org/ .SH "COPYING" .sp -Copyright (C) 2007\-2009 Othmar Gsenger, Erwin Nindl and Christian Pointner\&. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version\&. +Copyright (C) 2007\-2014 Markus Grüneis, Othmar Gsenger, Erwin Nindl and Christian Pointner\&. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version\&. diff --git a/doc/anytun-config.8.txt b/doc/anytun-config.8.txt index 1aebf9a..1b27208 100644 --- a/doc/anytun-config.8.txt +++ b/doc/anytun-config.8.txt @@ -38,21 +38,21 @@ OPTIONS *-L, --log ':[,[,[..]]]'*:: add log target to logging system. This can be invoked several times - in order to log to different targets at the same time. Every target + in order to log to different targets at the same time. Every target hast its own log level which is a number between 0 and 5. Where 0 means disabling log and 5 means debug messages are enabled. + The file target can be used more the once with different levels. - If no target is provided at the command line a single target with the + If no target is provided at the command line a single target with the config 'syslog:3,anytun-config,daemon' is added. + The following targets are supported: 'syslog';; log to syslog daemon, parameters [,[,]] 'file';; log to file, parameters [,] 'stdout';; log to standard output, parameters - 'stderr';; log to standard error, parameters + 'stderr';; log to standard error, parameters *-U, --debug*:: - This option instructs *Anytun* to run in debug mode. It implicits *-D* + This option instructs *Anytun* to run in debug mode. It implicits *-D* (don't daemonize) and adds a log target with the configuration 'stdout:5' (logging with maximum level). In future releases there might be additional output when this option is supplied. @@ -100,7 +100,7 @@ OPTIONS *-k, --kd--prf ''*:: key derivation pseudo random function + - The pseudo random function which is used for calculating the + The pseudo random function which is used for calculating the session keys and session salt. + Possible values: @@ -113,16 +113,16 @@ OPTIONS *-e, --role ''*:: SATP uses different session keys for inbound and outbound traffic. The role parameter is used to determine which keys to use for outbound or - inbound packets. On both sides of a vpn connection different roles have - to be used. Possible values are *left* and *right*. You may also use - *alice* or *server* as a replacement for *left* and *bob* or *client* as + inbound packets. On both sides of a vpn connection different roles have + to be used. Possible values are *left* and *right*. You may also use + *alice* or *server* as a replacement for *left* and *bob* or *client* as a replacement for *right*. By default *left* is used. *-E, --passphrase ''*:: This passphrase is used to generate the master key and master salt. - For the master key the last n bits of the SHA256 digest of the - passphrase (where n is the length of the master key in bits) is used. - The master salt gets generated with the SHA1 digest. + For the master key the last n bits of the SHA256 digest of the + passphrase (where n is the length of the master key in bits) is used. + The master salt gets generated with the SHA1 digest. You may force a specific key and or salt by using *--key* and *--salt*. *-K, --key ''*:: @@ -143,10 +143,10 @@ EXAMPLES Add a client with Connection ID (Mux) 12 and add 2 Routes to this client ------------------------------------------------------------------------------------------------- +------------------------------------------------------------------------------------------------ # anytun-config -w 0 -m 12 -K 0123456789ABCDEFFEDCBA9876543210 -A 0123456789ABCDDCBA9876543210 \ -R 192.0.2.0/24 -R 192.168.1.1/32 -e server >> routingtable ------------------------------------------------------------------------------------------------- +------------------------------------------------------------------------------------------------ BUGS ---- @@ -174,8 +174,8 @@ Main web site: http://www.anytun.org/ COPYING ------- -Copyright \(C) 2007-2009 Othmar Gsenger, Erwin Nindl and Christian -Pointner. This program is free software: you can redistribute it -and/or modify it under the terms of the GNU General Public License -as published by the Free Software Foundation, either version 3 of -the License, or any later version. +Copyright \(C) 2007-2014 Markus Grüneis, Othmar Gsenger, Erwin Nindl +and Christian Pointner. This program is free software: you can +redistribute it and/or modify it under the terms of the GNU General +Public License as published by the Free Software Foundation, either +version 3 of the License, or any later version. diff --git a/doc/anytun-controld.8 b/doc/anytun-controld.8 index 36b8585..9fbc11c 100644 --- a/doc/anytun-controld.8 +++ b/doc/anytun-controld.8 @@ -1,13 +1,13 @@ '\" t .\" Title: anytun-controld .\" Author: [see the "AUTHORS" section] -.\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 12/30/2011 +.\" Generator: DocBook XSL Stylesheets v1.78.1 +.\" Date: 08/26/2014 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" -.TH "ANYTUN\-CONTROLD" "8" "12/30/2011" "\ \&" "\ \&" +.TH "ANYTUN\-CONTROLD" "8" "08/26/2014" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -145,4 +145,4 @@ Othmar Gsenger Erwin Nindl Christian Poi Main web site: http://www\&.anytun\&.org/ .SH "COPYING" .sp -Copyright (C) 2007\-2009 Othmar Gsenger, Erwin Nindl and Christian Pointner\&. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version\&. +Copyright (C) 2007\-2014 Markus Grüneis, Othmar Gsenger, Erwin Nindl and Christian Pointner\&. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version\&. diff --git a/doc/anytun-controld.8.txt b/doc/anytun-controld.8.txt index 6c7a3d8..96ac3e3 100644 --- a/doc/anytun-controld.8.txt +++ b/doc/anytun-controld.8.txt @@ -36,7 +36,7 @@ OPTIONS instead of becoming a daemon which is the default. *-u, --username ''*:: - run as this user. If no group is specified (*-g*) the default group of + run as this user. If no group is specified (*-g*) the default group of the user is used. The default is to not drop privileges. *-g, --groupname ''*:: @@ -44,30 +44,30 @@ OPTIONS The default is to not drop privileges. *-C, --chroot ''*:: - Instruct *anytun-controld* to run in a chroot jail. The default is + Instruct *anytun-controld* to run in a chroot jail. The default is to not run in chroot. *-P, --write-pid ''*:: - Instruct *anytun-controld* to write it's pid to this file. The default is + Instruct *anytun-controld* to write it's pid to this file. The default is to not create a pid file. *-L, --log ':[,[,[..]]]'*:: add log target to logging system. This can be invoked several times - in order to log to different targets at the same time. Every target + in order to log to different targets at the same time. Every target hast its own log level which is a number between 0 and 5. Where 0 means disabling log and 5 means debug messages are enabled. + The file target can be used more the once with different levels. - If no target is provided at the command line a single target with the + If no target is provided at the command line a single target with the config 'syslog:3,anytun-controld,daemon' is added. + The following targets are supported: 'syslog';; log to syslog daemon, parameters [,[,]] 'file';; log to file, parameters [,] 'stdout';; log to standard output, parameters - 'stderr';; log to standard error, parameters + 'stderr';; log to standard error, parameters *-U, --debug*:: - This option instructs *Anytun* to run in debug mode. It implicits *-D* + This option instructs *Anytun* to run in debug mode. It implicits *-D* (don't daemonize) and adds a log target with the configuration 'stdout:5' (logging with maximum level). In future releases there might be additional output when this option is supplied. @@ -77,10 +77,10 @@ OPTIONS *-X, --control-host '[:]'*:: fetch the config from this host. The default is not to use a control - host and therefore this is empty. Mind that the port can be omitted + host and therefore this is empty. Mind that the port can be omitted in which case port 2323 is used. If you want to specify an ipv6 address and a port you have to use [ and ] to separate the address - from the port, eg.: [::1]:1234. If you want to use the default port + from the port, eg.: [::1]:1234. If you want to use the default port [ and ] can be omitted. @@ -110,9 +110,8 @@ Main web site: http://www.anytun.org/ COPYING ------- -Copyright \(C) 2007-2009 Othmar Gsenger, Erwin Nindl and Christian -Pointner. This program is free software: you can redistribute it -and/or modify it under the terms of the GNU General Public License -as published by the Free Software Foundation, either version 3 of -the License, or any later version. - +Copyright \(C) 2007-2014 Markus Grüneis, Othmar Gsenger, Erwin Nindl +and Christian Pointner. This program is free software: you can +redistribute it and/or modify it under the terms of the GNU General +Public License as published by the Free Software Foundation, either +version 3 of the License, or any later version. diff --git a/doc/anytun-showtables.8 b/doc/anytun-showtables.8 index 39346be..0558d9b 100644 --- a/doc/anytun-showtables.8 +++ b/doc/anytun-showtables.8 @@ -1,13 +1,13 @@ '\" t .\" Title: anytun-showtables .\" Author: [see the "AUTHORS" section] -.\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 12/30/2011 +.\" Generator: DocBook XSL Stylesheets v1.78.1 +.\" Date: 08/26/2014 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" -.TH "ANYTUN\-SHOWTABLES" "8" "12/30/2011" "\ \&" "\ \&" +.TH "ANYTUN\-SHOWTABLES" "8" "08/26/2014" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -79,4 +79,4 @@ Othmar Gsenger Erwin Nindl Christian Poi Main web site: http://www\&.anytun\&.org/ .SH "COPYING" .sp -Copyright (C) 2007\-2009 Othmar Gsenger, Erwin Nindl and Christian Pointner\&. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version\&. +Copyright (C) 2007\-2014 Markus Grüneis, Othmar Gsenger, Erwin Nindl and Christian Pointner\&. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version\&. diff --git a/doc/anytun-showtables.8.txt b/doc/anytun-showtables.8.txt index 13070a4..ea74998 100644 --- a/doc/anytun-showtables.8.txt +++ b/doc/anytun-showtables.8.txt @@ -65,8 +65,8 @@ Main web site: http://www.anytun.org/ COPYING ------- -Copyright \(C) 2007-2009 Othmar Gsenger, Erwin Nindl and Christian -Pointner. This program is free software: you can redistribute it -and/or modify it under the terms of the GNU General Public License -as published by the Free Software Foundation, either version 3 of -the License, or any later version. +Copyright \(C) 2007-2014 Markus Grüneis, Othmar Gsenger, Erwin Nindl +and Christian Pointner. This program is free software: you can +redistribute it and/or modify it under the terms of the GNU General +Public License as published by the Free Software Foundation, either +version 3 of the License, or any later version. diff --git a/doc/anytun.8 b/doc/anytun.8 index 964392a..93e61c3 100644 --- a/doc/anytun.8 +++ b/doc/anytun.8 @@ -1,13 +1,13 @@ '\" t .\" Title: anytun .\" Author: [see the "AUTHORS" section] -.\" Generator: DocBook XSL Stylesheets v1.75.2 -.\" Date: 12/30/2011 +.\" Generator: DocBook XSL Stylesheets v1.78.1 +.\" Date: 08/26/2014 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" -.TH "ANYTUN" "8" "12/30/2011" "\ \&" "\ \&" +.TH "ANYTUN" "8" "08/26/2014" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -505,4 +505,4 @@ Othmar Gsenger Erwin Nindl Christian Poi Main web site: http://www\&.anytun\&.org/ .SH "COPYING" .sp -Copyright (C) 2007\-2009 Othmar Gsenger, Erwin Nindl and Christian Pointner\&. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version\&. +Copyright (C) 2007\-2014 Markus Grüneis, Othmar Gsenger, Erwin Nindl and Christian Pointner\&. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version\&. diff --git a/doc/anytun.8.txt b/doc/anytun.8.txt index 00d3e91..7896dcd 100644 --- a/doc/anytun.8.txt +++ b/doc/anytun.8.txt @@ -68,7 +68,7 @@ passed to the daemon: instead of becoming a daemon which is the default. *-u, --username ''*:: - run as this user. If no group is specified (*-g*) the default group of + run as this user. If no group is specified (*-g*) the default group of the user is used. The default is to not drop privileges. *-g, --groupname ''*:: @@ -76,30 +76,30 @@ passed to the daemon: The default is to not drop privileges. *-C, --chroot ''*:: - Instruct *Anytun* to run in a chroot jail. The default is + Instruct *Anytun* to run in a chroot jail. The default is to not run in chroot. *-P, --write-pid ''*:: - Instruct *Anytun* to write it's pid to this file. The default is + Instruct *Anytun* to write it's pid to this file. The default is to not create a pid file. *-L, --log ':[,[,[..]]]'*:: add log target to logging system. This can be invoked several times - in order to log to different targets at the same time. Every target + in order to log to different targets at the same time. Every target hast its own log level which is a number between 0 and 5. Where 0 means disabling log and 5 means debug messages are enabled. + The file target can be used more the once with different levels. - If no target is provided at the command line a single target with the + If no target is provided at the command line a single target with the config 'syslog:3,anytun,daemon' is added. + The following targets are supported: 'syslog';; log to syslog daemon, parameters [,[,]] 'file';; log to file, parameters [,] 'stdout';; log to standard output, parameters - 'stderr';; log to standard error, parameters + 'stderr';; log to standard error, parameters *-U, --debug*:: - This option instructs *Anytun* to run in debug mode. It implicits *-D* + This option instructs *Anytun* to run in debug mode. It implicits *-D* (don't daemonize) and adds a log target with the configuration 'stdout:5' (logging with maximum level). In future releases there might be additional output when this option is supplied. @@ -144,7 +144,7 @@ passed to the daemon: This option is only needed for tunnel endpoints consisting of multiple anycast hosts. The unicast IP address of the anycast host can be used here. This is needed for - communication with the other anycast hosts. The default is to + communication with the other anycast hosts. The default is to not use a special inteface and just bind on all interfaces. However this is only the case if synchronisation is active see *--sync-port*. @@ -170,15 +170,15 @@ passed to the daemon: disabled and therefore this is empty. Mind that the port can be omitted in which case port 2323 is used. If you want to specify an ipv6 address and a port you have to use [ and ] to separate the address - from the port, eg.: [::1]:1234. If you want to use the default port + from the port, eg.: [::1]:1234. If you want to use the default port [ and ] can be omitted. *-X, --control-host '[:]'*:: fetch the config from this host. The default is not to use a control - host and therefore this is empty. Mind that the port can be omitted + host and therefore this is empty. Mind that the port can be omitted in which case port 2323 is used. If you want to specify an ipv6 address and a port you have to use [ and ] to separate the address - from the port, eg.: [::1]:1234. If you want to use the default port + from the port, eg.: [::1]:1234. If you want to use the default port [ and ] can be omitted. *-d, --dev ''*:: @@ -200,7 +200,7 @@ passed to the daemon: '';; the prefix length of the network *-x, --post-up-script '