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.42 by pcg, Mon Dec 5 12:58:08 2005 UTC vs.
Revision 1.47 by pcg, Sun Aug 10 02:49:21 2008 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 );
147 default_node.tcp_port = DEFAULT_UDPPORT; // ehrm 159 default_node.tcp_port = DEFAULT_UDPPORT; // ehrm
148 default_node.connectmode = conf_node::C_ALWAYS; 160 default_node.connectmode = conf_node::C_ALWAYS;
149 default_node.compress = true; 161 default_node.compress = true;
150 default_node.protocols = 0; 162 default_node.protocols = 0;
151 default_node.max_retry = DEFAULT_MAX_RETRY; 163 default_node.max_retry = DEFAULT_MAX_RETRY;
164 default_node.max_ttl = DEFAULT_MAX_TTL;
165 default_node.max_queue = DEFAULT_MAX_QUEUE;
152 default_node.if_up_data = strdup (""); 166 default_node.if_up_data = strdup ("");
153 167
154#if ENABLE_DNS 168#if ENABLE_DNS
155 default_node.dns_port = 0; // default is 0 == client 169 default_node.dns_port = 0; // default is 0 == client
156 170
460 } 474 }
461 else if (!strcmp (var, "allow-direct")) 475 else if (!strcmp (var, "allow-direct"))
462 node->allow_direct.push_back (strdup (val)); 476 node->allow_direct.push_back (strdup (val));
463 else if (!strcmp (var, "deny-direct")) 477 else if (!strcmp (var, "deny-direct"))
464 node->deny_direct.push_back (strdup (val)); 478 node->deny_direct.push_back (strdup (val));
479 else if (!strcmp (var, "max-ttl"))
480 node->max_ttl = atof (val);
481 else if (!strcmp (var, "max-queue"))
482 node->max_queue = atoi (val);
465 483
466 // unknown or misplaced 484 // unknown or misplaced
467 else 485 else
468 return _("unknown configuration directive. (ignored)"); 486 return _("unknown configuration directive. (ignored)");
469 487
470 return 0; 488 return 0;
489}
490
491void conf_node::finalise ()
492{
493 if (max_queue < 1)
494 {
495 slog (L_WARN, _("%s: max-queue value invalid, setting it to 1."), nodename);
496 max_queue = 1;
497 }
498
499 if (routerprio && (connectmode != C_ALWAYS && connectmode != C_DISABLED))
500 {
501 slog (L_WARN, _("%s: has non-zero router-priority but either 'never' or 'ondemand' as connectmode, setting it to 'always'."), nodename);
502 connectmode = C_ALWAYS;
503 }
471} 504}
472 505
473void configuration_parser::parse_argv () 506void configuration_parser::parse_argv ()
474{ 507{
475 for (int i = 0; i < argc; ++i) 508 for (int i = 0; i < argc; ++i)
580 slog (L_NOTICE, _("private hostkey and public node key mismatch: is '%s' the correct node?"), ::thisnode); 613 slog (L_NOTICE, _("private hostkey and public node key mismatch: is '%s' the correct node?"), ::thisnode);
581 exit (EXIT_FAILURE); 614 exit (EXIT_FAILURE);
582 } 615 }
583 616
584 free (fname); 617 free (fname);
618
619 for (configuration::node_vector::iterator i = conf.nodes.begin(); i != conf.nodes.end(); ++i)
620 (*i)->finalise ();
585} 621}
586 622
587char *configuration::config_filename (const char *name, const char *dflt) 623char *configuration::config_filename (const char *name, const char *dflt)
588{ 624{
589 char *fname; 625 char *fname;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines