Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/usr.sbin/syslogd/syslogd.c,v rcsdiff: /ftp/cvs/cvsroot/src/usr.sbin/syslogd/syslogd.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.34.4.4 retrieving revision 1.35 diff -u -p -r1.34.4.4 -r1.35 --- src/usr.sbin/syslogd/syslogd.c 2001/03/22 02:48:58 1.34.4.4 +++ src/usr.sbin/syslogd/syslogd.c 2000/06/30 17:32:43 1.35 @@ -1,4 +1,4 @@ -/* $NetBSD: syslogd.c,v 1.34.4.4 2001/03/22 02:48:58 he Exp $ */ +/* $NetBSD: syslogd.c,v 1.35 2000/06/30 17:32:43 jwise Exp $ */ /* * Copyright (c) 1983, 1988, 1993, 1994 @@ -43,7 +43,7 @@ __COPYRIGHT("@(#) Copyright (c) 1983, 19 #if 0 static char sccsid[] = "@(#)syslogd.c 8.3 (Berkeley) 4/4/94"; #else -__RCSID("$NetBSD: syslogd.c,v 1.34.4.4 2001/03/22 02:48:58 he Exp $"); +__RCSID("$NetBSD: syslogd.c,v 1.35 2000/06/30 17:32:43 jwise Exp $"); #endif #endif /* not lint */ @@ -187,12 +187,12 @@ struct filed consfile; int Debug; /* debug flag */ char LocalHostName[MAXHOSTNAMELEN+1]; /* our hostname */ char *LocalDomain; /* our local domain name */ -int *finet = NULL; /* Internet datagram sockets */ +int *finet; /* Internet datagram sockets */ int Initialized = 0; /* set when we have initialized ourselves */ int MarkInterval = 20 * 60; /* interval between marks in seconds */ int MarkSeq = 0; /* mark sequence number */ int SecureMode = 0; /* listen only on unix domain socks */ -int NumForwards = 0; /* number of forwarding actions in conf file */ +int NoNetMode = 0; /* send+listen only on unix domain socks */ char **LogPaths; /* array of pathnames to read messages from */ void cfline __P((char *, struct filed *)); @@ -228,7 +228,7 @@ main(argc, argv) char *p, *line, **pp; struct pollfd *readfds; - while ((ch = getopt(argc, argv, "dsf:m:p:P:")) != -1) + while ((ch = getopt(argc, argv, "dsSf:m:p:P:")) != -1) switch(ch) { case 'd': /* debug */ Debug++; @@ -250,6 +250,9 @@ main(argc, argv) case 's': /* no network listen mode */ SecureMode++; break; + case 'S': /* no network at all mode */ + NoNetMode++; + break; case '?': default: usage(); @@ -320,7 +323,19 @@ main(argc, argv) dprintf("listening on unix dgram socket %s\n", *pp); } - init(0); + finet = socksetup(PF_UNSPEC); + if (finet) { + if (SecureMode) { + for (j = 0; j < *finet; j++) { + if (shutdown(finet[j+1], SHUT_RD) < 0) { + logerror("shutdown"); + die(0); + } + } + } else + dprintf("listening on inet and/or inet6 socket\n"); + dprintf("sending on inet and/or inet6 socket\n"); + } if ((fklog = open(_PATH_KLOG, O_RDONLY, 0)) < 0) { dprintf("can't open %s (%d)\n", _PATH_KLOG, errno); @@ -334,6 +349,7 @@ main(argc, argv) dprintf("off & running....\n"); + init(0); (void)signal(SIGHUP, init); /* setup pollfd set. */ @@ -436,7 +452,7 @@ usage() extern char *__progname; (void)fprintf(stderr, -"usage: %s [-ds] [-f conffile] [-m markinterval] [-P logpathfile] [-p logpath1] [-p logpath2 ..]\n", +"usage: %s [-dsS] [-f conffile] [-m markinterval] [-P logpathfile] [-p logpath1] [-p logpath2 ..]\n", __progname); exit(1); } @@ -533,7 +549,7 @@ printline(hname, msg) q = line; while ((c = *p++ & 0177) != '\0' && - q < &line[sizeof(line) - 2]) + q < &line[sizeof(line) - 1]) if (iscntrl(c)) if (c == '\n') *q++ = ' '; @@ -1054,10 +1070,6 @@ init(signo) case F_CONSOLE: (void)close(f->f_file); break; - case F_FORW: - if (f->f_un.f_forw.f_addr) - freeaddrinfo(f->f_un.f_forw.f_addr); - break; } next = f->f_next; free((char *)f); @@ -1065,25 +1077,6 @@ init(signo) Files = NULL; nextp = &Files; - /* - * Close all open sockets - */ - - if (finet) { - for (i = 0; i < *finet; i++) { - if (close(finet[i+1]) < 0) { - logerror("close"); - die(0); - } - } - } - - /* - * Reset counter of forwarding actions - */ - - NumForwards=0; - /* open the configuration file */ if ((cf = fopen(ConfFile, "r")) == NULL) { dprintf("cannot open %s\n", ConfFile); @@ -1151,20 +1144,6 @@ init(signo) } } - finet = socksetup(PF_UNSPEC); - if (finet) { - if (SecureMode) { - for (i = 0; i < *finet; i++) { - if (shutdown(finet[i+1], SHUT_RD) < 0) { - logerror("shutdown"); - die(0); - } - } - } else - dprintf("listening on inet and/or inet6 socket\n"); - dprintf("sending on inet and/or inet6 socket\n"); - } - logmsg(LOG_SYSLOG|LOG_INFO, "syslogd: restart", LocalHostName, ADDDATE); dprintf("syslogd: restarted\n"); } @@ -1253,6 +1232,8 @@ cfline(line, f) switch (*p) { case '@': + if (!finet) + break; (void)strcpy(f->f_un.f_forw.f_hname, ++p); memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; @@ -1266,7 +1247,6 @@ cfline(line, f) } f->f_un.f_forw.f_addr = res; f->f_type = F_FORW; - NumForwards++; break; case '/': @@ -1361,7 +1341,7 @@ socksetup(af) struct addrinfo hints, *res, *r; int error, maxs, *s, *socks; - if(SecureMode && !NumForwards) + if(NoNetMode) return(NULL); memset(&hints, 0, sizeof(hints)); @@ -1392,7 +1372,7 @@ socksetup(af) logerror("socket"); continue; } - if (!SecureMode && bind(*s, r->ai_addr, r->ai_addrlen) < 0) { + if (bind(*s, r->ai_addr, r->ai_addrlen) < 0) { close (*s); logerror("bind"); continue;