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

Comparing gvpe/src/vped.C (file contents):
Revision 1.8 by pcg, Mon Sep 1 21:23:35 2003 UTC vs.
Revision 1.14 by pcg, Sat Jan 17 14:50:40 2004 UTC

1/* 1/*
2 vped.C -- the main file for vped 2 vped.C -- the main file for vped
3 Copyright (C) 1998-2002 Ivo Timmermans <ivo@o2w.nl> 3 Copyright (C) 1998-2002 Ivo Timmermans <ivo@o2w.nl>
4 2000-2002 Guus Sliepen <guus@sliepen.eu.org> 4 2000-2002 Guus Sliepen <guus@sliepen.eu.org>
5 2003 Marc Lehmannn <pcg@goof.com> 5 2003 Marc Lehmann <pcg@goof.com>
6 6
7 This program is free software; you can redistribute it and/or modify 7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or 9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version. 10 (at your option) any later version.
21 21
22#include "config.h" 22#include "config.h"
23 23
24#include <cstdio> 24#include <cstdio>
25#include <cstring> 25#include <cstring>
26#include <clocale>
26 27
27#include <errno.h> 28#include <errno.h>
28#include <fcntl.h> 29#include <fcntl.h>
29#include <getopt.h> 30#include <getopt.h>
30#include <signal.h> 31#include <signal.h>
31#include <sys/types.h> 32#include <sys/types.h>
32#include <unistd.h> 33#include <unistd.h>
33#include <signal.h> 34#include <signal.h>
34#include <termios.h> 35#include <termios.h>
35 36
37#if HAVE_SYS_MMAN_H
36#include <sys/mman.h> 38# include <sys/mman.h>
39#endif
37 40
38#include <openssl/err.h> 41#include <openssl/err.h>
39#include <openssl/rand.h> 42#include <openssl/rand.h>
40 43
41#include "gettext.h" 44#include "gettext.h"
45#include "slog.h" 48#include "slog.h"
46#include "util.h" 49#include "util.h"
47#include "vpn.h" 50#include "vpn.h"
48#include "iom.h" 51#include "iom.h"
49 52
50vpn network;
51
52static loglevel llevel = L_NONE; 53static loglevel llevel = L_NONE;
53 54
54/* If nonzero, display usage information and exit. */ 55/* If nonzero, display usage information and exit. */
55static int show_help; 56static int show_help;
56 57
57/* If nonzero, print the version on standard output and exit. */ 58/* If nonzero, print the version on standard output and exit. */
58static int show_version; 59static int show_version;
59 60
60#if HAVE_MLOCKALL
61/* If nonzero, disable swapping for this process. */ 61/* If nonzero, disable swapping for this process. */
62static int do_mlock = 0; 62static int do_mlock = 0;
63#endif
64 63
65/* If zero, don't detach from the terminal. */ 64/* If zero, don't detach from the terminal. */
66static int do_detach = 1; 65static int do_detach = 1;
67 66
68static struct option const long_options[] = 67static struct option const long_options[] =
70 {"config", required_argument, NULL, 'c'}, 69 {"config", required_argument, NULL, 'c'},
71 {"help", no_argument, &show_help, 1}, 70 {"help", no_argument, &show_help, 1},
72 {"version", no_argument, &show_version, 1}, 71 {"version", no_argument, &show_version, 1},
73 {"no-detach", no_argument, &do_detach, 0}, 72 {"no-detach", no_argument, &do_detach, 0},
74 {"log-level", required_argument, NULL, 'l'}, 73 {"log-level", required_argument, NULL, 'l'},
75#if HAVE_MLOCKALL
76 {"mlock", no_argument, &do_mlock, 1}, 74 {"mlock", no_argument, &do_mlock, 1},
77#endif
78 {NULL, 0, NULL, 0} 75 {NULL, 0, NULL, 0}
79 }; 76 };
80 77
81static void 78static void
82usage (int status) 79usage (int status)
122 119
123 case 'D': /* no detach */ 120 case 'D': /* no detach */
124 do_detach = 0; 121 do_detach = 0;
125 break; 122 break;
126 123
127#if HAVE_MLOCKALL
128 case 'L': /* lock into memory */ 124 case 'L': /* lock into memory */
129 do_mlock = 1; 125 do_mlock = 1;
130 break; 126 break;
131#endif
132 127
133 case 'l': /* inc debug level */ 128 case 'l': /* inc debug level */
134 { 129 {
135 llevel = string_to_loglevel (optarg); 130 llevel = string_to_loglevel (optarg);
136 131
226 221
227 if (show_version) 222 if (show_version)
228 { 223 {
229 printf (_("%s version %s (built %s %s, protocol %d.%d)\n"), get_identity (), 224 printf (_("%s version %s (built %s %s, protocol %d.%d)\n"), get_identity (),
230 VERSION, __DATE__, __TIME__, PROTOCOL_MAJOR, PROTOCOL_MINOR); 225 VERSION, __DATE__, __TIME__, PROTOCOL_MAJOR, PROTOCOL_MINOR);
226 printf (_("Built with kernel interface %s/%s.\n"), IFTYPE, IFSUBTYPE);
231 printf (_ 227 printf (_
232 ("Copyright (C) 2003 Marc Lehmann <vpe@plan9.de> and others.\n" 228 ("Copyright (C) 2003 Marc Lehmann <vpe@plan9.de> and others.\n"
233 "See the AUTHORS file for a complete list.\n\n" 229 "See the AUTHORS file for a complete list.\n\n"
234 "tinc comes with ABSOLUTELY NO WARRANTY. This is free software,\n" 230 "tinc comes with ABSOLUTELY NO WARRANTY. This is free software,\n"
235 "and you are welcome to redistribute it under certain conditions;\n" 231 "and you are welcome to redistribute it under certain conditions;\n"
243 239
244 log_to (LOGTO_SYSLOG | LOGTO_STDERR); 240 log_to (LOGTO_SYSLOG | LOGTO_STDERR);
245 241
246 /* Lock all pages into memory if requested */ 242 /* Lock all pages into memory if requested */
247 243
248#if HAVE_MLOCKALL 244#if HAVE_MLOCKALL && HAVE_SYS_MMAN_H && _POSIX_MEMLOCK
249 if (do_mlock) 245 if (do_mlock)
250 if (mlockall (MCL_CURRENT | MCL_FUTURE)) 246 if (mlockall (MCL_CURRENT | MCL_FUTURE))
251 slog (L_ERR, _("system call `%s' failed: %s"), "mlockall", strerror (errno)); 247 slog (L_ERR, _("system call `%s' failed: %s"), "mlockall", strerror (errno));
252#endif 248#endif
253 249

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines