X-Git-Url: https://git.syn-net.org/debian/?a=blobdiff_plain;f=src%2Fanytun-config.cpp;h=1d2ff648479131089ef2d349d7793bdddb917cac;hb=91d2dadab8997ae23442f77dd28db9fa3aee1e7c;hp=d09f1e8ce94c273fac703a123cf0e6cd51e32202;hpb=ece844834d2cecc028ce81ca283f5d441088580e;p=anytun.git diff --git a/src/anytun-config.cpp b/src/anytun-config.cpp index d09f1e8..1d2ff64 100644 --- a/src/anytun-config.cpp +++ b/src/anytun-config.cpp @@ -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,11 +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. */ #include -#include #include "datatypes.h" @@ -45,21 +57,22 @@ #include "networkAddress.h" #include "packetSource.h" #include "resolver.h" +#include "cryptinit.hpp" #include "syncQueue.h" #include "syncCommand.h" -void createConnection(const PacketSourceEndpoint & remote_end, ConnectionList & cl, u_int16_t seqSize, SyncQueue & queue, mux_t mux, Semaphore& sem) +void createConnection(const PacketSourceEndpoint& remote_end, ConnectionList& cl, uint16_t seqSize, SyncQueue& queue, mux_t mux, Semaphore& sem) { - SeqWindow * seq = new SeqWindow(seqSize); + SeqWindow* seq = new SeqWindow(seqSize); seq_nr_t seq_nr_ = 0; - KeyDerivation * kd = KeyDerivationFactory::create(gOpt.getKdPrf()); + KeyDerivation* kd = KeyDerivationFactory::create(gOpt.getKdPrf()); kd->init(gOpt.getKey(), gOpt.getSalt(), gOpt.getPassphrase()); kd->setRole(gOpt.getRole()); cLog.msg(Log::PRIO_NOTICE) << "added connection remote host " << remote_end; - ConnectionParam connparam ((*kd), (*seq), seq_nr_, remote_end); + ConnectionParam connparam((*kd), (*seq), seq_nr_, remote_end); cl.addConnection(connparam, mux); std::ostringstream sout; @@ -71,24 +84,23 @@ void createConnection(const PacketSourceEndpoint & remote_end, ConnectionList & NetworkList routes = gOpt.getRoutes(); NetworkList::const_iterator rit; - for(rit = routes.begin(); rit != routes.end(); ++rit) - { + for(rit = routes.begin(); rit != routes.end(); ++rit) { NetworkAddress addr(rit->net_addr.c_str()); NetworkPrefix prefix(addr, rit->prefix_length); - + gRoutingTable.addRoute(prefix, mux); - + std::ostringstream sout2; boost::archive::text_oarchive oa2(sout2); const SyncCommand scom2(prefix); - + oa2 << scom2; std::cout << std::setw(5) << std::setfill('0') << sout2.str().size()<< ' ' << sout2.str() << std::endl; - } + } sem.up(); } -void createConnectionResolver(PacketSourceResolverIt& it, ConnectionList & cl, u_int16_t seqSize, SyncQueue & queue, mux_t mux, Semaphore& sem) +void createConnectionResolver(PacketSourceResolverIt it, ConnectionList& cl, uint16_t seqSize, SyncQueue& queue, mux_t mux, Semaphore& sem) { createConnection(*it, cl, seqSize, queue, mux, sem); } @@ -102,38 +114,39 @@ void createConnectionError(const std::exception& e, Semaphore& sem, int& ret) int main(int argc, char* argv[]) { - try - { - if(!gOpt.parse(argc, argv)) + try { + if(!gOpt.parse(argc, argv)) { exit(0); + } StringList targets = gOpt.getLogTargets(); - for(StringList::const_iterator it = targets.begin();it != targets.end(); ++it) + for(StringList::const_iterator it = targets.begin(); it != targets.end(); ++it) { cLog.addTarget(*it); - } - catch(syntax_error& e) - { + } + } catch(syntax_error& e) { std::cerr << e << std::endl; gOpt.printUsage(); exit(-1); } - gOpt.parse_post(); // print warnings + gOpt.parse_post(); // print warnings gResolver.init(); - ConnectionList cl; - SyncQueue queue; + initCrypto(); + + ConnectionList cl; + SyncQueue queue; Semaphore sem; int ret = 0; - UDPPacketSource::proto::endpoint endpoint; - // allow emtpy endpoint!!! - gResolver.resolveUdp(gOpt.getRemoteAddr(), gOpt.getRemotePort(), - boost::bind(createConnectionResolver, _1, boost::ref(cl), gOpt.getSeqWindowSize(), boost::ref(queue), gOpt.getMux(), boost::ref(sem)), - boost::bind(createConnectionError, _1, boost::ref(sem), boost::ref(ret)), - gOpt.getResolvAddrType()); - sem.down(); + UDPPacketSource::proto::endpoint endpoint; + // allow emtpy endpoint!!! + gResolver.resolveUdp(gOpt.getRemoteAddr(), gOpt.getRemotePort(), + boost::bind(createConnectionResolver, _1, boost::ref(cl), gOpt.getSeqWindowSize(), boost::ref(queue), gOpt.getMux(), boost::ref(sem)), + boost::bind(createConnectionError, _1, boost::ref(sem), boost::ref(ret)), + gOpt.getResolvAddrType()); + sem.down(); return ret; }