From 8dbe81f1cca01ba056056e09fe3253465131fea4 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 11 Dec 2003 18:53:48 +0000 Subject: may changes git-svn-id: file:///home/lennart/svn/public/aeswepd/trunk@37 022f378f-78c4-0310-b860-d162c87e6274 --- src/aeswepd.c | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) (limited to 'src/aeswepd.c') diff --git a/src/aeswepd.c b/src/aeswepd.c index 1f74c64..3c651e1 100644 --- a/src/aeswepd.c +++ b/src/aeswepd.c @@ -20,6 +20,10 @@ #define _GNU_SOURCE +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include @@ -45,11 +49,12 @@ #include "keyapi.h" uint8_t aes_key[AES_KEY_LEN]; -int rekey_time = 15*60; -int n_max_keys = 3; +int rekey_time = 24*60*60, /* prior to 0.4: 15*60*/ + n_max_keys = 3; + int key_map[MAX_WEP_KEYS]; char *interface_name = NULL; -int daemonize = 1, use_syslog = 1, wait_on_fork = 0, use_status_file = 1; +int daemonize = 1, use_syslog = 1, wait_on_fork = 0, use_status_file = 1, wait_on_kill = 0; char log_ident[32], pid_ident[32]; FILE *status_file = NULL; @@ -321,6 +326,7 @@ void usage(char *p) { " -E --key-env=KEYENV Specify environment variable to read key from\n" " -m --max-keys=NR Specify the number of keys to use concurrently (%i)\n" " -w --wait-on-fork Wait until daemon fork finished (%s)\n" + " -W --wait-on-kill When run with -k, wait until the daemon died (%s)\n" " -l --list-keys Show keys of running daemon\n" " -h --help Show this help\n" " -k --kill Kill a running daemon\n" @@ -334,6 +340,7 @@ void usage(char *p) { rekey_time, n_max_keys, wait_on_fork ? "on" : "off", + wait_on_kill ? "on" : "off", AES_KEY_LEN); } @@ -345,6 +352,7 @@ void parse_args(int argc, char *argv[]) { {"rekey-time", required_argument, 0, 't'}, {"max-keys", required_argument, 0, 'm'}, {"wait-on-fork", no_argument, 0, 'w'}, + {"wait-on-kill", no_argument, 0, 'W'}, {"help", no_argument, 0, 'h'}, {"kill", no_argument, 0, 'k'}, {"check-running", no_argument, 0, 'c'}, @@ -374,7 +382,7 @@ void parse_args(int argc, char *argv[]) { for (;;) { int c; - if ((c = getopt_long(argc, argv, "nsi:t:m:whkcvlK:F:E:", long_options, &option_index)) < 0) + if ((c = getopt_long(argc, argv, "nsi:t:m:whkcvlK:F:E:W", long_options, &option_index)) < 0) break; switch (c) { @@ -469,6 +477,10 @@ void parse_args(int argc, char *argv[]) { break; } + case 'W': + wait_on_kill = !wait_on_kill; + break; + default: daemon_log(LOG_ERR, "Unknown parameter.\n"); exit(1); @@ -490,7 +502,14 @@ void parse_args(int argc, char *argv[]) { } if (_kill) { - if (daemon_pid_file_kill(SIGINT) < 0) { + int rv; + + if (wait_on_kill) + rv = daemon_pid_file_kill_wait(SIGINT, 5); + else + rv = daemon_pid_file_kill(SIGINT); + + if (rv < 0) { daemon_log(LOG_ERR, "Failed to kill daemon. (%s)", strerror(errno)); exit(6); } -- cgit