00001 /* 00002 * anytun 00003 * 00004 * The secure anycast tunneling protocol (satp) defines a protocol used 00005 * for communication between any combination of unicast and anycast 00006 * tunnel endpoints. It has less protocol overhead than IPSec in Tunnel 00007 * mode and allows tunneling of every ETHER TYPE protocol (e.g. 00008 * ethernet, ip, arp ...). satp directly includes cryptography and 00009 * message authentication based on the methodes used by SRTP. It is 00010 * intended to deliver a generic, scaleable and secure solution for 00011 * tunneling and relaying of packets of any protocol. 00012 * 00013 * 00014 * Copyright (C) 2007 anytun.org <satp@wirdorange.org> 00015 * 00016 * This program is free software; you can redistribute it and/or modify 00017 * it under the terms of the GNU General Public License version 2 00018 * as published by the Free Software Foundation. 00019 * 00020 * This program is distributed in the hope that it will be useful, 00021 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00022 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00023 * GNU General Public License for more details. 00024 * 00025 * You should have received a copy of the GNU General Public License 00026 * along with this program (see the file COPYING included with this 00027 * distribution); if not, write to the Free Software Foundation, Inc., 00028 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00029 */ 00030 00031 #ifndef _OPTIONS_H_ 00032 #define _OPTIONS_H_ 00033 00034 #include "threadUtils.hpp" 00035 00036 class Options 00037 { 00038 public: 00039 Options(); 00040 bool parse(int argc, char* argv[]); 00041 void printUsage(); 00042 void printOptions(); 00043 00044 std::string getProgname(); 00045 Options& setProgname(std::string p); 00046 sender_id_t getSenderId(); 00047 Options& setSenderId(sender_id_t s); 00048 std::string getLocalAddr(); 00049 Options& setLocalAddr(std::string l); 00050 u_int16_t getLocalPort(); 00051 Options& setLocalPort(u_int16_t l); 00052 std::string getRemoteAddr(); 00053 Options& setRemoteAddr(std::string r); 00054 u_int16_t getRemotePort(); 00055 Options& setRemotePort(u_int16_t r); 00056 Options& setRemoteAddrPort(std::string addr, u_int16_t port); 00057 std::string getDevName(); 00058 Options& setDevName(std::string d); 00059 std::string getDevType(); 00060 Options& setDevType(std::string d); 00061 std::string getIfconfigParamLocal(); 00062 Options& setIfconfigParamLocal(std::string i); 00063 std::string getIfconfigParamRemoteNetmask(); 00064 Options& setIfconfigParamRemoteNetmask(std::string i); 00065 window_size_t getSeqWindowSize(); 00066 Options& setSeqWindowSize(window_size_t s); 00067 std::string getCypher(); 00068 Options& setCypher(std::string c); 00069 std::string getAuthAlgo(); 00070 Options& setAuthAlgo(std::string a); 00071 00072 private: 00073 Mutex mutex; 00074 00075 std::string progname_; 00076 sender_id_t sender_id_; 00077 std::string local_addr_; 00078 u_int16_t local_port_; 00079 std::string remote_addr_; 00080 u_int16_t remote_port_; 00081 std::string dev_name_; 00082 std::string dev_type_; 00083 std::string ifconfig_param_local_; 00084 std::string ifconfig_param_remote_netmask_; 00085 window_size_t seq_window_size_; 00086 std::string cypher_; 00087 std::string auth_algo_; 00088 }; 00089 00090 #endif