From 3837212a51ac4ae4c6a76ee91c9301add8d18ee5 Mon Sep 17 00:00:00 2001 From: venaas Date: Thu, 3 May 2007 14:33:22 +0000 Subject: using debug() in getconfig() git-svn-id: https://svn.testnett.uninett.no/radsecproxy/trunk@69 e88ac4ed-0b26-0410-9574-a7f39faa03bf --- debug.c | 16 ++++++---------- debug.h | 1 + radsecproxy.c | 60 +++++++++++++++++++++++++---------------------------------- radsecproxy.h | 2 ++ 4 files changed, 34 insertions(+), 45 deletions(-) diff --git a/debug.c b/debug.c index f507f50..3959987 100644 --- a/debug.c +++ b/debug.c @@ -9,26 +9,22 @@ #include #include #include -#include #include #include "debug.h" -static uint8_t debug_level = 0; +static uint8_t debug_level = DBG_WARN; + +void debug_set_level(uint8_t level) { + debug_level = level; +} void debug(uint8_t level, char *format, ...) { - extern int errno; - if (level >= debug_level) { va_list ap; va_start(ap, format); vfprintf(stderr, format, ap); va_end(ap); - if (errno) { - fprintf(stderr, ": "); - perror(NULL); - fprintf(stderr, "errno=%d\n", errno); - } else - fprintf(stderr, "\n"); + fprintf(stderr, "\n"); } if (level >= DBG_ERR) exit(1); diff --git a/debug.h b/debug.h index 6249ee9..a346e07 100644 --- a/debug.h +++ b/debug.h @@ -10,4 +10,5 @@ #define DBG_WARN 32 #define DBG_ERR 64 +void debug_set_level(uint8_t level); void debug(uint8_t level, char *format, ...); diff --git a/radsecproxy.c b/radsecproxy.c index 9c962d4..c7d65f5 100644 --- a/radsecproxy.c +++ b/radsecproxy.c @@ -48,8 +48,8 @@ #include #include #include -#include "radsecproxy.h" #include "debug.h" +#include "radsecproxy.h" static struct options options; static struct client *clients; @@ -1681,9 +1681,9 @@ FILE *openconfigfile(const char *filename) { } if (!f) - err("could not read config file %s nor %s\n", filename, base); - - printf("reading config file %s\n", base); + debug(DBG_ERR, "could not read config file %s nor %s\n%s", filename, base, strerror(errno)); + + debug(DBG_INFO, "reading config file %s", base); return f; } @@ -1718,8 +1718,7 @@ void getconfig(const char *serverfile, const char *clientfile) { (*ucount)++; break; default: - printf("type must be U or T, got %c\n", *p); - exit(1); + debug(DBG_ERR, "type must be U or T, got %c", *p); } } @@ -1727,18 +1726,18 @@ void getconfig(const char *serverfile, const char *clientfile) { count = server_count = server_udp_count + server_tls_count; servers = calloc(count, sizeof(struct server)); if (!servers) - errx("malloc failed"); + debug(DBG_ERR, "malloc failed"); } else { count = client_count = client_udp_count + client_tls_count; clients = calloc(count, sizeof(struct client)); if (!clients) - errx("malloc failed"); + debug(DBG_ERR, "malloc failed"); } if (client_udp_count) { udp_server_replyq.replies = malloc(client_udp_count * MAX_REQUESTS * sizeof(struct reply)); if (!udp_server_replyq.replies) - errx("malloc failed"); + debug(DBG_ERR, "malloc failed"); udp_server_replyq.size = client_udp_count * MAX_REQUESTS; udp_server_replyq.count = 0; pthread_mutex_init(&udp_server_replyq.count_mutex, NULL); @@ -1769,33 +1768,27 @@ void getconfig(const char *serverfile, const char *clientfile) { for (; *p && *p != ' ' && *p != '\t' && *p != '\n'; p++); if (field == p) { /* no secret set and end of line, line is complete if TLS */ - if (peer->type == 'U') { - printf("secret must be specified for UDP\n"); - exit(1); - } + if (peer->type == 'U') + debug(DBG_ERR, "secret must be specified for UDP"); peer->secret = stringcopy(DEFAULT_TLS_SECRET, 0); } else { peer->secret = stringcopy(field, p - field); /* check that rest of line only white space */ for (; *p == ' ' || *p == '\t'; p++); - if (*p && *p != '\n') { - printf("max 4 fields per line, found a 5th\n"); - exit(1); - } + if (*p && *p != '\n') + debug(DBG_ERR, "max 4 fields per line, found a 5th"); } if ((serverfile && !resolvepeer(&server->peer, 0)) || - (clientfile && !resolvepeer(&client->peer, 0))) { - printf("failed to resolve host %s port %s, exiting\n", peer->host, peer->port); - exit(1); - } + (clientfile && !resolvepeer(&client->peer, 0))) + debug(DBG_ERR, "failed to resolve host %s port %s, exiting", peer->host, peer->port); if (serverfile) { pthread_mutex_init(&server->lock, NULL); server->sock = -1; server->requests = calloc(MAX_REQUESTS, sizeof(struct request)); if (!server->requests) - errx("malloc failed"); + debug(DBG_ERR, "malloc failed"); server->newrq = 0; pthread_mutex_init(&server->newrq_mutex, NULL); pthread_cond_init(&server->newrq_cond, NULL); @@ -1805,22 +1798,21 @@ void getconfig(const char *serverfile, const char *clientfile) { else { client->replyq = malloc(sizeof(struct replyq)); if (!client->replyq) - errx("malloc failed"); + debug(DBG_ERR, "malloc failed"); client->replyq->replies = calloc(MAX_REQUESTS, sizeof(struct reply)); if (!client->replyq->replies) - errx("malloc failed"); + debug(DBG_ERR, "malloc failed"); client->replyq->size = MAX_REQUESTS; client->replyq->count = 0; pthread_mutex_init(&client->replyq->count_mutex, NULL); pthread_cond_init(&client->replyq->count_cond, NULL); } } - printf("got type %c, host %s, port %s, secret %s\n", peer->type, peer->host, peer->port, peer->secret); + debug(DBG_INFO, "got type %c, host %s, port %s, secret %s", peer->type, peer->host, peer->port, peer->secret); if (serverfile) { - printf(" with realms:"); + debug(DBG_INFO, " with realms:"); for (r = server->realms; *r; r++) - printf(" %s", *r); - printf("\n"); + debug(DBG_INFO, "\t%s", *r); } i++; } @@ -1870,8 +1862,7 @@ void getmainconfig(const char *configfile) { for (; *p == ' ' || *p == '\t'; p++); if (!*p || *p == '\n') { endopt[1] = '\0'; - printf("error in %s, option %s has no value\n", configfile, opt); - exit(1); + debug(DBG_ERR, "error in %s, option %s has no value", configfile, opt); } val = p; for (; *p && *p != '\n'; p++) @@ -1879,7 +1870,7 @@ void getmainconfig(const char *configfile) { endval = p; endopt[1] = '\0'; endval[1] = '\0'; - printf("getmainconfig: %s = %s\n", opt, val); + debug(DBG_INFO, "getmainconfig: %s = %s", opt, val); if (!strcasecmp(opt, "TLSCACertificateFile")) { options.tlscacertificatefile = stringcopy(val, 0); @@ -1913,13 +1904,11 @@ void getmainconfig(const char *configfile) { if (!strcasecmp(val, "on")) options.statusserver = 1; else if (strcasecmp(val, "off")) { - printf("error in %s, value of option %s is %s, must be on or off\n", configfile, opt, val); - exit(1); + debug(DBG_ERR, "error in %s, value of option %s is %s, must be on or off", configfile, opt, val); } continue; } - printf("error in %s, unknown option %s\n", configfile, opt); - exit(1); + debug(DBG_ERR, "error in %s, unknown option %s", configfile, opt); } fclose(f); } @@ -1928,6 +1917,7 @@ int main(int argc, char **argv) { pthread_t udpserverth; int i; + debug_set_level(DEBUG_LEVEL); getmainconfig(CONFIG_MAIN); getconfig(CONFIG_SERVERS, NULL); getconfig(NULL, CONFIG_CLIENTS); diff --git a/radsecproxy.h b/radsecproxy.h index 65a6f23..8ab3455 100644 --- a/radsecproxy.h +++ b/radsecproxy.h @@ -12,6 +12,8 @@ sizeof(struct sockaddr_in) : \ sizeof(struct sockaddr_in6)) +#define DEBUG_LEVEL DBG_INFO + #define CONFIG_MAIN "/etc/radsecproxy/radsecproxy.conf" #define CONFIG_SERVERS "/etc/radsecproxy/servers.conf" #define CONFIG_CLIENTS "/etc/radsecproxy/clients.conf" -- cgit v1.2.3