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

Comparing gvpe/src/conf.C (file contents):
Revision 1.43 by pcg, Thu Aug 7 16:34:21 2008 UTC vs.
Revision 1.50 by pcg, Mon Mar 23 15:22:00 2009 UTC

1/* 1/*
2 conf.c -- configuration code 2 conf.c -- configuration code
3 Copyright (C) 2003-2005 Marc Lehmann <gvpe@schmorp.de> 3 Copyright (C) 2003-2008 Marc Lehmann <gvpe@schmorp.de>
4 4
5 This file is part of GVPE. 5 This file is part of GVPE.
6 6
7 GVPE is free software; you can redistribute it and/or modify 7 GVPE is free software; you can redistribute it and/or modify it
8 it under the terms of the GNU General Public License as published by 8 under the terms of the GNU General Public License as published by the
9 the Free Software Foundation; either version 2 of the License, or 9 Free Software Foundation; either version 3 of the License, or (at your
10 (at your option) any later version. 10 option) any later version.
11 11
12 This program is distributed in the hope that it will be useful, 12 This program is distributed in the hope that it will be useful, but
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
15 GNU General Public License for more details. 15 Public License for more details.
16 16
17 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License along
18 along with gvpe; if not, write to the Free Software 18 with this program; if not, see <http://www.gnu.org/licenses/>.
19 Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19
20 Additional permission under GNU GPL version 3 section 7
21
22 If you modify this Program, or any covered work, by linking or
23 combining it with the OpenSSL project's OpenSSL library (or a modified
24 version of that library), containing parts covered by the terms of the
25 OpenSSL or SSLeay licenses, the licensors of this Program grant you
26 additional permission to convey the resulting work. Corresponding
27 Source for a non-source form of such a combination shall include the
28 source code for the parts of OpenSSL used as well as that of the
29 covered work.
20*/ 30*/
21 31
22#include "config.h" 32#include "config.h"
23 33
24#include <cstdio> 34#include <cstdio>
82 92
83 return false; 93 return false;
84} 94}
85 95
86bool 96bool
87conf_node::can_direct (struct conf_node *other) 97conf_node::may_direct (struct conf_node *other)
88{ 98{
89 if (match_list (allow_direct, other->nodename)) 99 if (match_list (allow_direct, other->nodename))
90 return true; 100 return true;
91 101
92 if (match_list (deny_direct, other->nodename)) 102 if (match_list (deny_direct, other->nodename))
100{ 110{
101 printf ("%4d fe:fd:80:00:0%1x:%02x %c %-8.8s %-10.10s %s%s%d\n", 111 printf ("%4d fe:fd:80:00:0%1x:%02x %c %-8.8s %-10.10s %s%s%d\n",
102 id, 112 id,
103 id >> 8, id & 0xff, 113 id >> 8, id & 0xff,
104 compress ? 'Y' : 'N', 114 compress ? 'Y' : 'N',
105 connectmode == C_ONDEMAND ? "ondemand" : 115 connectmode == C_ONDEMAND ? "ondemand"
106 connectmode == C_NEVER ? "never" : 116 : connectmode == C_NEVER ? "never"
107 connectmode == C_ALWAYS ? "always" : "", 117 : connectmode == C_ALWAYS ? "always"
118 : connectmode == C_DISABLED ? "disabled"
119 : "",
108 nodename, 120 nodename,
109 hostname ? hostname : "", 121 hostname ? hostname : "",
110 hostname ? ":" : "", 122 hostname ? ":" : "",
111 hostname ? udp_port : 0 123 hostname ? udp_port : 0
112 ); 124 );
133void configuration::init () 145void configuration::init ()
134{ 146{
135 memset (this, 0, sizeof (*this)); 147 memset (this, 0, sizeof (*this));
136 148
137 mtu = DEFAULT_MTU; 149 mtu = DEFAULT_MTU;
150 nfmark = 0;
138 rekey = DEFAULT_REKEY; 151 rekey = DEFAULT_REKEY;
139 keepalive = DEFAULT_KEEPALIVE; 152 keepalive = DEFAULT_KEEPALIVE;
140 llevel = L_INFO; 153 llevel = L_INFO;
141 ip_proto = IPPROTO_GRE; 154 ip_proto = IPPROTO_GRE;
142#if ENABLE_ICMP 155#if ENABLE_ICMP
318 conf.rekey = atoi (val); 331 conf.rekey = atoi (val);
319 else if (!strcmp (var, "keepalive")) 332 else if (!strcmp (var, "keepalive"))
320 conf.keepalive = atoi (val); 333 conf.keepalive = atoi (val);
321 else if (!strcmp (var, "mtu")) 334 else if (!strcmp (var, "mtu"))
322 conf.mtu = atoi (val); 335 conf.mtu = atoi (val);
336 else if (!strcmp (var, "nfmark"))
337 conf.nfmark = atoi (val);
323 else if (!strcmp (var, "if-up")) 338 else if (!strcmp (var, "if-up"))
324 free (conf.script_if_up), conf.script_if_up = strdup (val); 339 free (conf.script_if_up), conf.script_if_up = strdup (val);
325 else if (!strcmp (var, "node-up")) 340 else if (!strcmp (var, "node-up"))
326 free (conf.script_node_up), conf.script_node_up = strdup (val); 341 free (conf.script_node_up), conf.script_node_up = strdup (val);
327 else if (!strcmp (var, "node-down")) 342 else if (!strcmp (var, "node-down"))
474 return _("unknown configuration directive. (ignored)"); 489 return _("unknown configuration directive. (ignored)");
475 490
476 return 0; 491 return 0;
477} 492}
478 493
494void conf_node::finalise ()
495{
496 if (max_queue < 1)
497 {
498 slog (L_WARN, _("%s: max-queue value invalid, setting it to 1."), nodename);
499 max_queue = 1;
500 }
501
502 if (routerprio > 1 && (connectmode != C_ALWAYS && connectmode != C_DISABLED))
503 {
504 //slog (L_WARN, _("%s: has non-zero router-priority but either 'never' or 'ondemand' as connectmode, setting it to 'always'."), nodename);
505 connectmode = C_ALWAYS;
506 }
507}
508
479void configuration_parser::parse_argv () 509void configuration_parser::parse_argv ()
480{ 510{
481 for (int i = 0; i < argc; ++i) 511 for (int i = 0; i < argc; ++i)
482 { 512 {
483 char *v = argv [i]; 513 char *v = argv [i];
586 slog (L_NOTICE, _("private hostkey and public node key mismatch: is '%s' the correct node?"), ::thisnode); 616 slog (L_NOTICE, _("private hostkey and public node key mismatch: is '%s' the correct node?"), ::thisnode);
587 exit (EXIT_FAILURE); 617 exit (EXIT_FAILURE);
588 } 618 }
589 619
590 free (fname); 620 free (fname);
621
622 for (configuration::node_vector::iterator i = conf.nodes.begin(); i != conf.nodes.end(); ++i)
623 (*i)->finalise ();
591} 624}
592 625
593char *configuration::config_filename (const char *name, const char *dflt) 626char *configuration::config_filename (const char *name, const char *dflt)
594{ 627{
595 char *fname; 628 char *fname;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines