options parser support ipv6 now
[anytun.git] / src / anyCtrOptions.h
blobd4789c3753c9d3c07a39d301b2987a0c2ddb2684
1 /*
2 * anytun
4 * The secure anycast tunneling protocol (satp) defines a protocol used
5 * for communication between any combination of unicast and anycast
6 * tunnel endpoints. It has less protocol overhead than IPSec in Tunnel
7 * mode and allows tunneling of every ETHER TYPE protocol (e.g.
8 * ethernet, ip, arp ...). satp directly includes cryptography and
9 * message authentication based on the methodes used by SRTP. It is
10 * intended to deliver a generic, scaleable and secure solution for
11 * tunneling and relaying of packets of any protocol.
14 * Copyright (C) 2007-2008 Othmar Gsenger, Erwin Nindl,
15 * Christian Pointner <satp@wirdorange.org>
17 * This file is part of Anytun.
19 * Anytun is free software: you can redistribute it and/or modify
20 * it under the terms of the GNU General Public License version 3 as
21 * published by the Free Software Foundation.
23 * Anytun is distributed in the hope that it will be useful,
24 * but WITHOUT ANY WARRANTY; without even the implied warranty of
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 * GNU General Public License for more details.
28 * You should have received a copy of the GNU General Public License
29 * along with anytun. If not, see <http://www.gnu.org/licenses/>.
32 #ifndef _ANY_CTR_OPTIONS_H_
33 #define _ANY_CTR_OPTIONS_H_
35 #include "datatypes.h"
36 #include "buffer.h"
37 #include "threadUtils.hpp"
38 #include <list>
40 class Options
42 public:
43 static Options& instance();
45 bool parse(int argc, char* argv[]);
46 void printUsage();
47 void printOptions();
49 std::string getProgname();
50 Options& setProgname(std::string p);
51 bool getDaemonize();
52 Options& setDaemonize(bool d);
53 bool getChroot();
54 Options& setChroot(bool b);
55 std::string getUsername();
56 Options& setUsername(std::string u);
57 std::string getChrootDir();
58 Options& setChrootDir(std::string c);
59 std::string getPidFile();
60 Options& setPidFile(std::string p);
61 std::string getFileName();
62 Options& setFileName(std::string f);
63 std::string getBindToAddr();
64 Options& setBindToAddr(std::string b);
65 std::string getBindToPort();
66 Options& setBindToPort(std::string b);
69 private:
70 Options();
71 ~Options();
72 Options(const Options &l);
73 void operator=(const Options &l);
75 static Options* inst;
76 static Mutex instMutex;
77 class instanceCleaner {
78 public: ~instanceCleaner() {
79 if(Options::inst != 0)
80 delete Options::inst;
83 friend class instanceCleaner;
85 bool splitAndSetHostPort(std::string hostPort);
87 Mutex mutex;
89 std::string bind_to_addr_;
90 std::string bind_to_port_;
91 std::string progname_;
92 bool daemonize_;
93 bool chroot_;
94 std::string username_;
95 std::string chroot_dir_;
96 std::string pid_file_;
97 std::string file_name_;
100 extern Options& gOpt;
102 #endif