Commit Graph

270 Commits

Author SHA1 Message Date
obrien
0ca2a78030 Rather than hardcode the 'struct iovec iov' array size, use a #define.
While I'm here bump WARNS to 3.

Obtained from:	Juniper Networks
2008-12-17 16:51:40 +00:00
trhodes
bbb4729c27 Use "allowed_peer" throughout this manual page. 2008-12-07 18:45:30 +00:00
dwmalone
94da79315b Add a flag, -T, that tells syslogd to always replace the timestamp on
messages from the network. We already replace malformatted timestamps
and this option lets us replace timestamps that are correctly formatted
but wrong.

PR:		120891
Submitted by:	Thomas Vogt <thomas@bsdunix.ch>
MFC after:	1 week
2008-09-25 09:28:18 +00:00
obrien
78f0698aa0 Remove extraneous NULL pointer check - the pointer is guaranteed to be non-NULL. 2008-09-01 15:10:03 +00:00
sobomax
5bc4fd4e14 Allow comment to be placed at the end of a configuration line.
MFC after:	2 weeks
2008-07-09 07:37:54 +00:00
brian
232bfc7d5f Add a -8 switch to syslogd to prevent it from mangling 8-bit data. 2008-05-14 00:22:21 +00:00
dwmalone
23dbe457bf Two no-op fixes to improve corretness of syslogd code:
1) Use [AP]F_LOCAL rather than [AP]F_UNIX.
2) When copying a pipe's name, use f->f_un.f_pipe.f_pname, not f->f_un.f_fname.

PR:		20889
Submitted by:	Damieon Stark
PR:		116642
Submitted by:	Jim Pirzyk
Reviewed by:	md5
2008-02-20 21:54:41 +00:00
obrien
37273340a9 + Open ctty in non-blocking mode to avoid hangs during open and close(waiting
for the port to drain).
+ Handle "*" as a priority properly.
+ Test what is free'ed.
+ Dynamically determine length vs. hardcoding it.
+ Free the previous message buffer (f_prevline) only after logging all the
  messages and just before the process exit.  Also check f_prevline for NULL
  before using it.
+ The time displayed is not synchornized with the other log destinations.
+ Fix a comment.

Obtained from:	Juniper Networks
2007-12-11 06:10:10 +00:00
obrien
2271bb9685 style(9) 2007-12-05 18:00:41 +00:00
trhodes
f9b4142a67 Mark up keywords with .Cm.
PR:		95039
Sumitted by:	SeaD (older version)
Reviewed by:	ru
2006-10-12 01:59:34 +00:00
ru
081fcce9b9 Markup fixes. 2006-09-29 17:57:04 +00:00
ru
006fe97736 Sync usage() with manpage's SYNOPSIS. 2006-09-29 17:36:38 +00:00
yar
ead3193586 Obey MK_INET6_SUPPORT. 2006-07-27 14:52:12 +00:00
julian
e0ba5f137d Add the ability to log to an arbitrary udp port as well as the
standard syslog port. This allows syslog to easily export lines of interest to
an external logging system.
2006-04-17 20:12:35 +00:00
csjp
3e976b12e0 Currently, if writing out a log entry fails, we unlink that log entry from our
internal list of logfiles. So if writev(2) fails for potentially transient
errors like ENOSPC, syslogd requires a restart, even if the filesystem has
purged.

This change allows syslogd to ignore ENOSPC space errors, so that when the
filesystem is cleaned up, syslogd will automatically start logging again
without requiring the reset. This makes syslogd(8) a bit more reliable.

MFC after:	1 week
2006-03-30 21:04:52 +00:00
pjd
96923c291c By default (for security reasons) syslogd(8) doesn't create log files
when they don't exist, but sometimes its quite useful (eg. we use
non-standard log files and memory backed /var/, which is populated on
boot).

Add -C option which tells syslogd(8) to create log files if they don't
exist.

Glanced at by:	phk
MFC after:	3 days
2006-03-06 10:36:33 +00:00
julian
dc87a24886 Fix typo 2006-02-23 18:51:02 +00:00
imp
36c69c6c27 style(9) nitlet:
foo() {
}

to

foo()
{
}
2005-10-17 16:51:06 +00:00
cognet
60f0244e87 setsockopt() will return -1 on error, not 0.
Pointy hat to:	Jeremie Le Hen
2005-09-28 16:14:43 +00:00
cognet
74216dceb2 Use SO_REUSEADDR on the socket, to make the use of syslogd in jails easier.
Submitted by:   Jeremie Le Hen <jeremie le-hen org>
2005-09-28 16:05:13 +00:00
pjd
ce60c894bc Use pidfile(3) in syslogd(8). 2005-08-24 17:26:26 +00:00
keramida
ac7c9f771d Fix all the spelling mistakes I could find in the man pages for words
that have at least 3 characters.

MFC after:	1 week
Thanks to:	Music band ``Chingon''
		for keeping me company while searching for these.
2005-07-31 03:30:48 +00:00
csjp
3a5fc7dc75 Add cases for ENOBUFS and ENETDOWN. We need to make sure that we
catch all transient errors. This fixes situations where transient
error conditions such as network interfaces losing carrier signals
or the system running out of mbufs would result in the permanent
removal of forwarding syslog messages.

MFC after:	1 week
2005-05-19 21:09:44 +00:00
ume
e33ba03345 NI_WITHSCOPEID cleanup. Neither RFC 2553 nor RFC 3493 defines
NI_WITHSCOPEID, and our getaddrinfo(3) does nothing special
for it, now.
2005-05-13 16:31:11 +00:00
hrs
33d5d6c4ba Add -S option which allows to change the pathname of the privileged
socket /var/run/logpriv.

Reviewed by:	glebius and kensmith
MFC after:	2 days
2005-04-13 03:19:41 +00:00
glebius
7743cc27d9 Check that supplied facility is not bigger than LOG_NFACILITIES.
PR:		bin/79260
Submitted by:	Shuichi KITAGUCHI
2005-03-28 10:59:19 +00:00
ru
6b6b8c04f6 Expand contractions. 2005-02-13 23:45:54 +00:00
ru
1541af42f1 Expand *n't contractions. 2005-02-13 22:25:33 +00:00
ru
c05985f13f Sort sections. 2005-01-18 20:02:45 +00:00
ru
16dc33fabf Scheduled mdoc(7) sweep. 2005-01-11 11:47:22 +00:00
dwmalone
30dce67d0c Allow ':' and '%' in hostname specifications so that we can specify IPv6
addresses and scope IDs.

MFC after:	3 weeks
2004-12-28 22:25:04 +00:00
dwmalone
f5cc9e7663 Some syslog messages delimit the program tag with whitespace rather
than a colon, so don't allow whitespace in program names. To be
consistent with hostnames, don't allow whitespace in the program
name specifiers in syslog.conf either.

(The first change is by Markus from the PR, the second is mine.)

PR:		68691
Submitted by:	Markus Oestreicher <m.oe@x-trader.de>
MFC after:	3 weeks
2004-12-28 21:58:54 +00:00
glebius
a187eb4ddf s/priveleged/privileged/ 2004-11-18 13:37:33 +00:00
keramida
7731e3a14e Fix a minor comment typo: priveleged = privileged. 2004-11-18 12:20:52 +00:00
ru
857e7a5e8f Really revert the whitespace change to usage(). 2004-11-11 18:09:00 +00:00
glebius
790ed93433 Change TABs back to spaces in usage string constants.
Requested by:	ru
2004-11-11 16:13:10 +00:00
glebius
b0c7fef551 Whitespace.
Approved by:	cvs diff -b
2004-11-11 09:41:03 +00:00
glebius
dc109677f9 Double receive buffer size on sockets.
PR:		bin/72366
Ok'd by:	dwmalone
Approved by:	julian (mentor)
Obtained from:	OpenBSD
MFC after:	1 month
2004-11-11 09:39:04 +00:00
kensmith
da4c6a0746 Bump document date.
Noticed by:     trhodes
Pointy hat:     kensmith
MFC after:      1 week
2004-11-09 04:41:12 +00:00
kensmith
87c5f8055e Add newsyslog(8) to the "See Also" section.
MFC after:	1 week
2004-11-09 04:31:31 +00:00
glebius
dfc6a366e7 Protect against local flooder of /var/run/log. Do not loop forever in
syslog(3) if we are a priveleged program (sshd, su, etc.).

- Make syslogd open an additional socket /var/run/logpriv, with 0600
  permissions.
- In libc, try to use this socket.
- Do not loop forever if we are using this socket (partial backout of 1.31)

Reviewed by:	dwmalone, Andrea Campi <andrea webcom it>
Approved by:	julian (mentor)
MFC after:	1 month
2004-11-04 23:09:57 +00:00
glebius
76ec624d74 - Use stailqueue for sockets instead of socket buffer. Thus
remove limit for 20 sockets.
- Add possibility to specify file mode for sockets created with '-l'.
- Check that socket name in '-l' is absolute.

Reviewed by:	dwmalone, Andrea Campi <andrea webcom it>
Approved by:	julian (mentor)
2004-11-04 22:20:21 +00:00
imp
9fbed704d5 Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software
(with permission of addtional copyright holders where appropriate)
2004-08-07 04:28:56 +00:00
cperciva
edcbaa3819 Fix dofsync() declaration.
Pointed out by:	dwmalone
2004-07-04 19:52:48 +00:00
cperciva
7662db4aa1 Where syslogd would have fsync()ed a file in the past, instead set a flag
FFLAG_NEEDSYNC and fsync the file when select() next returns zero.  This
dramatically speeds up the process of logging large amounts of data, while
leaving the essential semantics (that data can be expected to be on disk
if we crash) unchanged.

In my tests, this speeds up the rc phase of booting by 18-20%. [1]

YES PLEASE! by:	phk [1]
2004-07-04 19:13:58 +00:00
ru
ac606e7e88 Eliminated double whitespace. 2004-07-03 18:35:53 +00:00
ru
6294018a20 Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
dwmalone
9236299be5 Also terminate program names if we hit a '/' - this is to be slightly
more friendly to postfix log messages.

PR:		50912
Submitted by:	Stanislav Lapshansky <slapsh@slapsh.pp.ru>
2004-05-30 10:34:58 +00:00
dwmalone
21f82f995b A log file name may now be prefixed by a '-' if it should not be
explicitly fsynced after kernel messages are logged. This option
should be syntax compatible with a similar option in Linux syslogd.

I've made some small changes to Pekka's patch, hoepfully I haven't
goofed anything.

PR:		66790
Submitted by:	Pekka Savola <pekkas@netcore.fi>
Obtained from:	Martin Schulze's syslogd
MFC after:	1 month
2004-05-30 10:04:03 +00:00
dwmalone
1b2d9d1890 Try to be more careful about using using the file descriptor f_file.
Syslogd should ensure that f_file is a valid file descriptor when
f_type is FILE, CONSOLE, TTY and for a PIPE where f_pid > 0. If the
descriptor is closed/invalid then the type should be set to UNUSED
or the pid should be set to 0.

To this end:
1) Don't close(f->f_file) if we can't send a message to a remote
   host because the file descriptor used for remote logging is
   stored in finet, not in f->f_file. f->f_file is probably
   uninitialised, so I guess we usually end up closing fd 0.
2) Don't close PIPE file descriptors if they are invalid.
3) If the call to p_open fails, don't set the pid.

The OpenBSD patches in this area set f_file to -1 after the fd is
closed and then avoids calling close if f_file < 0. I haven't done
this, but it might be a good idea too.

Inspired by:	PR 67139/OpenBSD
2004-05-30 00:02:19 +00:00
dwmalone
24cd00695a Some string fixes.
1) Use strncpy on strings out of utmp.
2) Avoid running off the start of one string while removing white space.
   (I've used slightly different code to OpenBSD here.)
3) Ignore trailing spaces in the priority.

PR:		67139
Submitted by:	Xin LI <delphij@FreeBSD.org.cn>
Obtained from:	OpenBSD
2004-05-29 23:40:30 +00:00
dwmalone
ce2d6884e8 Exit with a warning if the path to one of the logging sockets is
too long, rather than silently truncating them.

PR:		67139
Inspired by:	OpenBSD
2004-05-29 23:27:50 +00:00
dwmalone
daa2b936bf Fix some bugs that don't manifest themselves in practice.
1) Don't check for getopt returning '?', we have a default case.
2) Check if the priority is LOG_KERN correctly - in practice
   LOG_KERN is 0, so it makes no difference. OpenBSD fixed a
   different nearby bug that we don't have 'cos our definition
   of LOG_MAKEPRI is different to OpenBSD's.

Copy a comment from OpenBSD, observing that LOG_KERN is 0.

Inspired by PR:		67139
2004-05-29 23:24:18 +00:00
dwmalone
fa9a8a76e4 Update a couple of comments.
PR:		67139
Submitted by:	Xin LI <[3]delphij@FreeBSD.org.cn>
Obtained from:	OpenBSD
2004-05-29 23:14:03 +00:00
dwmalone
a1009a96f6 Silence some constness and printf type warnings. Most of the
const fixes are ugly 'cos the types in an iovec aren't quite
right for a writev.
2004-05-26 21:14:13 +00:00
ru
743cc6d002 Fixed style of DPADD and LDADD assignments as per style.Makefile(5). 2004-02-05 22:44:25 +00:00
iedowse
3a3407567f Use strtol to parse the <%d> tags in printline() and printsys().
Sort local variables declarations in these functions.

Submitted by:	bde
2004-01-31 17:44:27 +00:00
iedowse
5c3a320f7b Be much more strict about parsing tagged log messages from /dev/klog;
if the line doesn't match ^<%d>, then treat it as a regular kernel
printf line. Previously if a kernel printf message started with "<"
it would be interpreted as a log message, often with LOG_EMERG
level. This was triggered by some printfs in sys/dev/aic7xxx/, and
can also happen with the partial lines that result if syslogd cannot
keep up with the rate of arrival of kernel messages.

Reviewed by:	dwmalone
MFC after:	1 week
2004-01-26 00:46:46 +00:00
dwmalone
0146715061 logerror is used in syslogd to log errors from syslogd itself. It
is possible for an error to occur while trying to log an error, and
this can result in infinite recursion (or at least until we run out
of stack).

Rather than this, we ignore requests to log an error while logging an
error.

PR:		51253
MFC after:	2 weeks
2003-11-16 21:51:06 +00:00
dwmalone
898b9151c2 Remove an argument to printf that is unused. 2003-11-16 21:42:00 +00:00
ru
1c23ef339b mdoc(7): Use the new feature of the .In macro. 2003-09-08 19:57:22 +00:00
gshapiro
ca15cb863a Avoid a corrupt timestamp on the console
PR:		51587
Submitted by:	Dmitry Sivachenko <mitya@cavia.pp.ru>
Approved by:	re (rwatson)
MFC after:	3 days
2003-05-17 20:07:54 +00:00
gshapiro
02f3b3510d Avoid code duplication by using libutil's trimdomain() instead of
an incorrect re-implementation.

PR:		52223, 52342
Submitted by:	Dan Nelson <dnelson@allantgroup.com>
Approved by:	re (bmah/rwatson)
MFC after:	2 days
2003-05-17 20:05:18 +00:00
gshapiro
e3834d7ef2 Cleanup hostname matching in syslogd:
1. Hostnames were not treated case insensitively in all cases.

2. The method for stripping hostnames when reading the syslog.conf
   differed from that when finding the hostname of an incoming request.
   This lead to a broken match check.  In my case, it meant I had to
   have '@scooter.smi.example.com.example.com' to have 'logger.example.com'
   properly save messages from 'scooter.smi.sendmail.com'.

3. Add paranoia to cfline() such that it doesn't try to access memory
   outside of the bounds of the f_host string.

4. While I am here, get rid of an outdated comment, argv[{0,1,2}] are now
   checked for NULL after the strdup() calls.

Reviewed by:	dwmalone
MFC after:	1 week
2003-05-04 22:05:40 +00:00
obrien
a920d12f89 style.Makefile(5) 2003-04-04 17:49:21 +00:00
thomas
59150e3451 Hostname specifications must allow commas in the value. They are
used to separate multiple host names.

Noted by:	Dan Nelson <dnelson@allantgroup.com>
Reviewed by:	roberto
2003-02-21 19:02:31 +00:00
thomas
946eac9366 Allow multiple hosts or programs to be named in program
or host specifications, eg:

!foo,bar
*.* /var/log/only_foo_or_bar.log

!-foo,bar
*.* /var/log/all_except_foo_or_bar.log

Reviewed by:		roberto
Not objected to by:	arch@
2003-02-13 00:08:56 +00:00
trhodes
018c020460 Various language tweaks.
PR:		45604
Submitted by:	Chris Pepper <pepper@rockefeller.edu>
2002-12-24 01:04:42 +00:00
ru
041d1287e8 Uniformly refer to a file system as "file system".
Approved by:	re
2002-12-12 17:26:04 +00:00
ru
fef14a0ffe mdoc(7) police: markup fixes.
Approved by:	re
2002-11-27 15:31:08 +00:00
thomas
3a6aeba622 Factor out the code that determines whether a message must be skipped
as a consequence of a host or program name specification into a common
function, skip_pmessage.

Reviewed by:	roberto
2002-11-07 19:53:29 +00:00
wollman
bd4df2f808 Add used #include <limits.h>. 2002-10-27 17:46:53 +00:00
tjr
304f9ee32e Sync usage() with reality and sort it alphabetically.
PR:		42620
Submitted by:	Jeff Ito
MFC after:	1 month
2002-10-18 11:48:46 +00:00
tjr
fe93fe1f59 Add -c option to synopsis. Sort it alphabetically, too. 2002-10-18 11:42:21 +00:00
des
643b06665f Avoid referencing a removed (and freed) queue entry. This partially reverts
revision 1.101 (which did not introduce the bug but made it harder to fix)

PR:		misc/40363
Submitted by:	David Dunham <dwdunham@isilon.com>
MFC after:	2 weeks
2002-10-06 17:43:04 +00:00
dcs
0a327f9db4 Introduce to the !program specification a capability similar to the one
that already exists for hosts: being able to specify a section that applies
to every program *except* the one in question.

The normal syntax for program specification is still valid. For the new
capability, one uses:

!-program

Since there is no way to specify a program beginning with a dash in the old
syntax, as it would be interpreted as the case above, the following
alternative syntax to the original capability is provided:

!+program

This shouldn't introduce incompatibilities with any syslogd configuration
in production because -stable's syslogd does not support a dash anywhere in
the program specification.

MFC after:	2 weeks
2002-09-23 11:59:19 +00:00
dwmalone
1f58f0ce9d Make syslogd -u treat "*" as all levels by explictly setting pri_cmp
for it.

While I'm here, add a the ability to say "!level" in a way which
should be compatible with Linux's syslogd.

PR:		28935
No objections:	audit
MFC after:	2 weeks
2002-09-04 21:11:25 +00:00
cjc
abd6ef6146 Don't give up on a remote log host when we get a EHOSTUNREACH or
EHOSTDOWN. These are often transient errors (when the remote host
reboots, temporary network problems, etc.), and we'd rather err on the
side of caution and keep trying send messages that never arrive than
just give up.

Note that this is not an implementation of the "back-off" methods
given in the PR. Those just seem too complicated. Why not just keep
trying each time? Trying and failing doesn't really consume
significantly more resources than if we were successful for each
message.

PR:		bin/31029
MFC after:	1 week
2002-08-25 06:05:25 +00:00
robert
8d8219c5b9 When parsing the program name from the incoming log message
from a client, accept all printable characters as being part
of the program name, except ':' and '[', because each is a
possible delimiter.
2002-07-25 15:45:41 +00:00
robert
3be089e932 When reading a program name from the syslog configuration file,
do not stop copying it into a buffer when encountering a
non-alphanumerical character.  Only stop at unprintable characters.
This makes syslogd work correctly with executables like `interp.bin',
`httpd_old', etc.

PR:		misc/40941
MFC after:	1 week
2002-07-25 09:56:37 +00:00
ume
9c2c51a1e6 use IPV6_V6ONLY instead of non standard IPV6_BINDV6ONLY.
MFC after:	1 week
2002-07-22 15:22:53 +00:00
charnier
d2168fe021 The .Nm utility 2002-07-14 14:47:15 +00:00
trhodes
7d7bd3ffde Consistancy check: s/file system/filesystem/g 2002-05-16 02:28:39 +00:00
des
2a7696e0d2 Remove spaces between (void) and function calls. Use TAILQ_FOREACH
instead of hand-rolled equivalent.  Add curly braces for symmetry
around else.
2002-03-24 06:02:10 +00:00
des
871401d977 Parenthesize return values and pull an orphaned { back into the fold. 2002-03-24 05:52:04 +00:00
des
6d7d908273 __FBSDID, ANSIfy function definitions, staticize functions and globals,
don't initialize globals to 0, some reindentation of declarations, some
comments added or reworded.
2002-03-24 05:48:37 +00:00
des
f3ac6cf424 Un-__P(). 2002-03-24 05:24:04 +00:00
maxim
8b3deee04d Remove unnecessary setjmp.h.
Reviewed by:	ru
Approved by:	ru
Obtained from:	OpenBSD
MFC after:	1 week
2002-02-13 08:49:29 +00:00
maxim
625b77d663 Unlink all log sockets at startup.
PR:		misc/34839
Reviewed by:	ru
Approved by:	ru
Obtained from:	OpenBSD
MFC after:	2 weeks
2002-02-13 08:37:55 +00:00
ru
a70f7fff62 mdoc(7) police: add missing markup bit. 2002-01-10 15:16:58 +00:00
deischen
0e9e967bc3 Initialze a stack variable with NULL to unbreak buildworld with -Wall.
I don't know about anyone else, but the compiler was always aborting
on this stupid warning, and has been doing so for weeks.
2002-01-09 17:36:53 +00:00
archie
cd1ab61208 Add a new flag '-c' to disable repeated line compression when the output
is a pipe to another program, or, if specified twice, in all cases.

PR:	bin/32420
2002-01-05 07:34:52 +00:00
ru
d991472c31 mdoc(7) police: markup nits. 2001-12-08 16:17:49 +00:00
dd
fc1c953f03 Make the default kernel prefix "kernel:" instead of the boot file,
with the old behavior available via the -o option (it might still be
useful if one has many kernels and cares which messages came from
which).  If the boot file is not used as the prefix, it is still
logged once at startup.

This change is prompted by the fact that the boot file is now much
longer ("/boot/kernel/kernel" vs. "/kernel"), which significanlty
bloats the syslogd output.

Reviewed by:	peter
2001-11-27 20:02:18 +00:00
ps
b88e604b92 If the mask length is zero, there is no need to convert it to a
netmask.

PR:		31947
Submitted by:	Aaron Scarisbrick <aaronsca@hotmail.com>
MFC after:	1 week
2001-11-14 09:20:24 +00:00
des
9db513e93b Check the return values from calls to malloc(), calloc(), strdup() etc.
Submitted by:	Philippe Charnier <charnier@xp11.frmug.org>
MFC after:	2 weeks
2001-09-30 16:09:17 +00:00
des
ad919e2f8f Add a strcasecmp() call I forgot in my hurry to commit the previous fix.
Without this call, the hostname check would in some cases yield false
positives.

Pointed out by:	ru
2001-09-13 09:40:35 +00:00
des
a2a2c4459a The previous commit appeared to just shove the bug under the carpet rather
than really solve it.  This approach (inspired by Ruslan's patch) solves
the real problem by stripping the local domain off the host name in the
config line structure.

Also mark a bunch of code sections that either do not check the return value
of a strdup(), malloc() or calloc() call, or do not properly handle a NULL
return.
2001-09-13 06:48:41 +00:00
des
b9eed5024e Fix logging from remote hosts, which has been broken since (at least) revision
1.64, i.e. July of last year.  Also fix a minor style bug in the same code.

PR:		bin/28634
Pointy hat to:	dwmalone
Pointed out by:	my buggy DSL router's remote logging facility
2001-09-13 05:09:14 +00:00
ru
c4912e8677 Fixed the free(3) panic overlooked due to the -Wno-uninitialized. 2001-09-11 08:18:04 +00:00