From b3402a68a4d29e9b1ae4e012e39a7bcb14fea3cf Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Thu, 30 Apr 2015 13:57:36 +0800 Subject: [PATCH 207/210] xl2tpd: introduce new option -l for using syslog as the logging facility. Defaults to old behaviour if no -l option was specified. Also update manual doc to reflect this change. --- doc/xl2tpd.8 | 5 +++++ file.h | 1 + misc.c | 2 +- xl2tpd.c | 13 ++++++++++++- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/doc/xl2tpd.8 b/doc/xl2tpd.8 index 915b247..7afccac 100644 --- a/doc/xl2tpd.8 +++ b/doc/xl2tpd.8 @@ -20,6 +20,11 @@ This option prevents xl2tpd from detaching from the terminal and daemonizing. .TP +.B -l +This option tells xl2tpd to use syslog for logging even when \fB\-D\fR +was specified. + +.TP .B -c Tells xl2tpd to use an alternate config file. Default is /etc/xl2tpd/xl2tpd.conf. Fallback configuration file is diff --git a/file.h b/file.h index 89987ae..92df046 100644 --- a/file.h +++ b/file.h @@ -151,6 +151,7 @@ struct global char pidfile[STRLEN]; /* File containing the pid number*/ char controlfile[STRLEN]; /* Control file name (named pipe) */ int daemon; /* Use daemon mode? */ + int syslog; /* Use syslog for logging? */ int accesscontrol; /* Use access control? */ int forceuserspace; /* Force userspace? */ int packet_dump; /* Dump (print) all packets? */ diff --git a/misc.c b/misc.c index 3092401..cccf4ca 100644 --- a/misc.c +++ b/misc.c @@ -57,7 +57,7 @@ void l2tp_log (int level, const char *fmt, ...) vsnprintf (buf, sizeof (buf), fmt, args); va_end (args); - if(gconfig.daemon) { + if(gconfig.syslog) { init_log(); SYSLOG_CALL( syslog (level, "%s", buf) ); } else { diff --git a/xl2tpd.c b/xl2tpd.c index 017adfd..1937690 100644 --- a/xl2tpd.c +++ b/xl2tpd.c @@ -1594,7 +1594,7 @@ void do_control () void usage(void) { printf("\nxl2tpd version: %s\n", SERVER_VERSION); printf("Usage: xl2tpd [-c ] [-s ] [-p ]\n" - " [-C ] [-D]\n" + " [-C ] [-D] [-l]\n" " [-v, --version]\n"); printf("\n"); exit(1); @@ -1605,6 +1605,7 @@ void init_args(int argc, char *argv[]) int i=0; gconfig.daemon=1; + gconfig.syslog=-1; memset(gconfig.altauthfile,0,STRLEN); memset(gconfig.altconfigfile,0,STRLEN); memset(gconfig.authfile,0,STRLEN); @@ -1642,6 +1643,9 @@ void init_args(int argc, char *argv[]) else if (! strncmp(argv[i],"-D",2)) { gconfig.daemon=0; } + else if (! strncmp(argv[i],"-l",2)) { + gconfig.syslog=1; + } else if (! strncmp(argv[i],"-s",2)) { if(++i == argc) usage(); @@ -1667,6 +1671,13 @@ void init_args(int argc, char *argv[]) usage(); } } + + /* + * defaults to syslog if no log facility was explicitly + * specified and we are about to daemonize + */ + if (gconfig.syslog < 0) + gconfig.syslog = gconfig.daemon; } -- 1.7.10.4