ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gvpe/src/conf.h
(Generate patch)

Comparing gvpe/src/conf.h (file contents):
Revision 1.34 by pcg, Thu Aug 7 17:54:26 2008 UTC vs.
Revision 1.47 by root, Sun Feb 2 23:58:32 2014 UTC

32#ifndef GVPE_CONF_H__ 32#ifndef GVPE_CONF_H__
33#define GVPE_CONF_H__ 33#define GVPE_CONF_H__
34 34
35#include <vector> 35#include <vector>
36 36
37#include <sys/types.h>
38
37#include <openssl/rsa.h> 39#include <openssl/rsa.h>
38 40
39#include "slog.h" 41#include "slog.h"
40#include "global.h" 42#include "global.h"
41 43
42#define DEFAULT_REKEY 3600 44#define DEFAULT_REKEY 3607 // interval between rekeys
45#define DEFAULT_RESEED 3613 // interval between rng reseeds
43#define DEFAULT_KEEPALIVE 60 // one keepalive/minute (it's just 8 bytes...) 46#define DEFAULT_KEEPALIVE 60 // one keepalive/minute (it's just 8 bytes...)
44#define DEFAULT_UDPPORT 655 // same as tinc, conflicts would be rare 47#define DEFAULT_UDPPORT 655 // same as tinc, conflicts would be rare
45#define DEFAULT_MTU 1500 // let's ether-net 48#define DEFAULT_MTU 1500 // let's ether-net
46#define DEFAULT_MAX_RETRY 3600 // retry at least this often 49#define DEFAULT_MAX_RETRY 3600 // retry at least this often
47#define DEFAULT_MAX_TTL 60 // packets expire after this many seconds 50#define DEFAULT_MAX_TTL 60 // packets expire after this many seconds
48#define DEFAULT_MAX_QUEUE 512 // never queue more than this many packets 51#define DEFAULT_MAX_QUEUE 512 // never queue more than this many packets
49 52
50#define DEFAULT_DNS_TIMEOUT_FACTOR 8.F // initial retry timeout multiple 53#define DEFAULT_DNS_TIMEOUT_FACTOR 8.F // initial retry timeout multiple
51#define DEFAULT_DNS_SEND_INTERVAL .01F // minimum send interval 54#define DEFAULT_DNS_SEND_INTERVAL .01F // minimum send interval
52#define DEFAULT_DNS_OVERLAP_FACTOR .5F // RTT * LATENCY_FACTOR == sending rate 55#define DEFAULT_DNS_OVERLAP_FACTOR .5F // RTT * LATENCY_FACTOR == sending rate
53#define DEFAULT_DNS_MAX_OUTSTANDING 100 // max. number of outstanding requests 56#define DEFAULT_DNS_MAX_OUTSTANDING 100 // max. number of outstanding requests
57 PROT_UDPv4 = 0x01, // udp over ipv4 60 PROT_UDPv4 = 0x01, // udp over ipv4
58 PROT_IPv4 = 0x02, // generic ip protocol 61 PROT_IPv4 = 0x02, // generic ip protocol
59 PROT_TCPv4 = 0x04, // tcp over ipv4 (server) 62 PROT_TCPv4 = 0x04, // tcp over ipv4 (server)
60 PROT_ICMPv4 = 0x08, // icmp over ipv4 63 PROT_ICMPv4 = 0x08, // icmp over ipv4
61 PROT_DNSv4 = 0x10, // dns tunnel ipv4 (server) 64 PROT_DNSv4 = 0x10, // dns tunnel ipv4 (server)
65 PROT_ALL = 0x1f
62}; 66};
63 67
64#define PROT_RELIABLE (PROT_TCPv4 | PROT_DNSv4) 68#define PROT_RELIABLE (PROT_TCPv4 | PROT_DNSv4)
65#define PROT_SLOW PROT_DNSv4 69#define PROT_SLOW PROT_DNSv4
66 70
89 int max_queue; // maixmum send queue length 93 int max_queue; // maixmum send queue length
90 94
91 enum connectmode { C_ONDEMAND, C_NEVER, C_ALWAYS, C_DISABLED } connectmode; 95 enum connectmode { C_ONDEMAND, C_NEVER, C_ALWAYS, C_DISABLED } connectmode;
92 bool compress; 96 bool compress;
93 bool inherit_tos; // inherit TOS in packets send to this destination 97 bool inherit_tos; // inherit TOS in packets send to this destination
98 bool low_power; // node is a low-power node (reduce cpu usage, wakeups and assume higher latency)
94 99
95 vector<const char *> allow_direct; 100 vector<const char *> allow_direct;
96 vector<const char *> deny_direct; 101 vector<const char *> deny_direct;
97 102
98 u32 routerprio; 103 u32 routerprio;
99 104
105 u8 connectable_protocols () const
106 {
107 u8 protocols = this->protocols;
108
109 // mask out endpoints we can't connect to
110 if (!udp_port) protocols &= ~PROT_UDPv4;
111 if (!tcp_port) protocols &= ~PROT_TCPv4;
112 if (!dns_port) protocols &= ~PROT_DNSv4;
113
114 return protocols;
115 }
116
100 bool can_direct (struct conf_node *other); 117 bool may_direct (struct conf_node *other);
118 void finalise ();
101 119
102 void print (); 120 void print ();
103 121
104 ~conf_node (); 122 ~conf_node ();
105}; 123};
108{ 126{
109 typedef vector<conf_node *> node_vector; 127 typedef vector<conf_node *> node_vector;
110 node_vector nodes; 128 node_vector nodes;
111 conf_node default_node; 129 conf_node default_node;
112 conf_node *thisnode; 130 conf_node *thisnode;
131 char serial[SERIAL_SIZE];
132 char *seed_dev; // the randomd evice to use for seeding
133 double reseed; // the interval between additional seeds
113 int mtu; // the mtu used for outgoing tunnel packets 134 int mtu; // the mtu used for outgoing tunnel packets
135 int nfmark; // the SO_MARK // netfilter mark // fwmark
114 double rekey; // rekey interval 136 double rekey; // rekey interval
115 double keepalive; // keepalive probes interval 137 double keepalive; // keepalive probes interval
116 char *ifname; // the interface name (tap0 ...) 138 char *ifname; // the interface name (tap0 ...)
117 bool ifpersist; // should the interface be persistent 139 bool ifpersist; // should the interface be persistent
118 char *prikeyfile; 140 char *prikeyfile;
119 RSA *rsa_key; // our private rsa key 141 RSA *rsa_key; // our private rsa key
120 loglevel llevel; 142 loglevel llevel;
121 u8 ip_proto; // the ip protocol to use 143 u8 ip_proto; // the ip protocol to use
144 uid_t change_uid; // the uid of the user to switch to, or 0
145 gid_t change_gid; // the gid of the user to switch to, or 0
146 char *change_root;// the path to chroot to, "/" == anonymous
122#if ENABLE_ICMP 147#if ENABLE_ICMP
123 u8 icmp_type; // the icmp type for the icmp-protocol 148 u8 icmp_type; // the icmp type for the icmp-protocol
124#endif 149#endif
125 150
126 char *script_if_up; 151 char *script_if_up;
127 char *script_node_up; 152 char *script_node_up;
153 char *script_node_change;
128 char *script_node_down; 154 char *script_node_down;
129 char *pidfilename; 155 char *pidfilename;
130 156
131#if ENABLE_HTTP_PROXY 157#if ENABLE_HTTP_PROXY
132 char *proxy_auth; // login:password 158 char *proxy_auth; // login:password
134 u16 proxy_port; // the proxy port, e.g. 3128 160 u16 proxy_port; // the proxy port, e.g. 3128
135#endif 161#endif
136 162
137#if ENABLE_DNS 163#if ENABLE_DNS
138 char *dns_forw_host; 164 char *dns_forw_host;
165 bool dns_case_preserving;
139 u16 dns_forw_port; 166 u16 dns_forw_port;
140 float dns_timeout_factor; 167 float dns_timeout_factor;
141 float dns_send_interval; 168 float dns_send_interval;
142 float dns_overlap_factor; 169 float dns_overlap_factor;
143 int dns_max_outstanding; 170 int dns_max_outstanding;
145 172
146 void init (); 173 void init ();
147 void cleanup (); 174 void cleanup ();
148 void clear (); 175 void clear ();
149 176
177 conf_node *find_node (const char *name);
178
150 // create a filename from string, replacing %s by the nodename 179 // create a filename from string, replacing %s by the nodename
151 // and using relative paths under confbase. 180 // and using relative paths under confbase.
152 char *config_filename (const char *name, const char *dflt); 181 char *config_filename (const char *name, const char *dflt = 0);
153 182
154 void print (); 183 void print ();
155 184
156 configuration (); 185 configuration ();
157 ~configuration (); 186 ~configuration ();
167 int argc; 196 int argc;
168 char **argv; 197 char **argv;
169 198
170 configuration_parser (configuration &conf, bool need_keys, int argc, char **argv); 199 configuration_parser (configuration &conf, bool need_keys, int argc, char **argv);
171 200
201 void parse_file (const char *fname);
172 const char *parse_line (char *line); 202 const char *parse_line (char *line);
173 void parse_argv (); 203 void parse_argv ();
174}; 204};
175 205
176extern struct configuration conf; 206extern struct configuration conf;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines