Date: Mon, 23 Aug 2010 17:03:06 +0000 (UTC) From: Attilio Rao <attilio@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r211708 - projects/sv/usr.sbin/netdumpsrv Message-ID: <201008231703.o7NH36GD046903@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: attilio Date: Mon Aug 23 17:03:06 2010 New Revision: 211708 URL: http://svn.freebsd.org/changeset/base/211708 Log: Add a -D flag that runs the tool in 'debugging mode', avoiding daemonization and having output on console instead. Modified: projects/sv/usr.sbin/netdumpsrv/netdump_server.c Modified: projects/sv/usr.sbin/netdumpsrv/netdump_server.c ============================================================================== --- projects/sv/usr.sbin/netdumpsrv/netdump_server.c Mon Aug 23 16:47:29 2010 (r211707) +++ projects/sv/usr.sbin/netdumpsrv/netdump_server.c Mon Aug 23 17:03:06 2010 (r211708) @@ -44,6 +44,7 @@ #include <assert.h> #include <inttypes.h> #include <signal.h> +#include <stdarg.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -54,16 +55,17 @@ #define PFLAGS_ABIND 0x01 #define PFLAGS_DDIR 0x02 -#define PFLAGS_SCRIPT 0x04 +#define PFLAGS_DEBUG 0x04 +#define PFLAGS_SCRIPT 0x08 #define LOGERR(m, ...) \ - syslog(LOG_ERR | LOG_DAEMON, (m), ## __VA_ARGS__) + (*phook)(LOG_ERR | LOG_DAEMON, (m), ## __VA_ARGS__) #define LOGERR_PERROR(m) \ - syslog(LOG_ERR | LOG_DAEMON, "%s: %s\n", m, strerror(errno)) + (*phook)(LOG_ERR | LOG_DAEMON, "%s: %s\n", m, strerror(errno)) #define LOGINFO(m, ...) \ - syslog(LOG_INFO | LOG_DAEMON, (m), ## __VA_ARGS__) + (*phook)(LOG_INFO | LOG_DAEMON, (m), ## __VA_ARGS__) #define LOGWARN(m, ...) \ - syslog(LOG_WARNING | LOG_DAEMON, (m), ## __VA_ARGS__) + (*phook)(LOG_WARNING | LOG_DAEMON, (m), ## __VA_ARGS__) #define client_ntoa(cl) \ inet_ntoa((cl)->ip) @@ -100,6 +102,9 @@ static time_t last_timeout_check; static int do_shutdown; static int sock; +/* Daemon print functions hook. */ +static void (*phook)(int, const char *, ...); + static struct netdump_client *alloc_client(struct sockaddr_in *sip); static void eventloop(void); static void exec_handler(struct netdump_client *client, @@ -118,6 +123,9 @@ static void handle_packet(struct netdu static void handle_timeout(struct netdump_client *client); static void handle_vmcore(struct netdump_client *client, struct netdump_msg *msg); +static void phook_printf(int priority __unused, + const char *message, ...); +static void phook_syslog(int priority, const char *message, ...); static int receive_message(int isock, struct sockaddr_in *from, char *fromstr, size_t fromstrlen, struct netdump_msg *msg); @@ -135,6 +143,24 @@ usage(const char *cmd) cmd); } +static void +phook_printf(int priority __unused, const char *message, ...) +{ + va_list ap; + + va_start(ap, message); + vprintf(message, ap); +} + +static void +phook_syslog(int priority, const char *message, ...) +{ + va_list ap; + + va_start(ap, message); + vsyslog(priority, message, ap); +} + static struct netdump_client * alloc_client(struct sockaddr_in *sip) { @@ -744,7 +770,7 @@ main(int argc, char **argv) exit(1); } - while ((ch = getopt(argc, argv, "a:d:i:")) != -1) { + while ((ch = getopt(argc, argv, "a:Dd:i:")) != -1) { switch (ch) { case 'a': pflags |= PFLAGS_ABIND; @@ -755,6 +781,9 @@ main(int argc, char **argv) } printf("Listening on IP %s\n", optarg); break; + case 'D': + pflags |= PFLAGS_DEBUG; + break; case 'd': pflags |= PFLAGS_DDIR; assert(dumpdir[0] == '\0'); @@ -798,6 +827,10 @@ main(int argc, char **argv) strcpy(dumpdir, "/var/crash"); printf("Default: dumping on /var/crash/\n"); } + if ((pflags & PFLAGS_DEBUG) == 0) + phook = phook_syslog; + else + phook = phook_printf; /* Further sanity checks on dump location. */ if (stat(dumpdir, &statbuf)) { @@ -817,7 +850,7 @@ main(int argc, char **argv) strerror(errno)); } - if (daemon(0, 0) == -1) { + if ((pflags & PFLAGS_DEBUG) == 0 && daemon(0, 0) == -1) { pidfile_remove(pfh); perror("daemon()"); fprintf(stderr, "Impossible to demonize the process\n");
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201008231703.o7NH36GD046903>