When building sysklogd on a uClibc system we must define _GNU_SOURCE to
get O_CLOEXEC.
Since _GNU_SOURCE is also required for asprintf() with GLIBC, as used by
the pidfile() replacement function, we drop it from there and rely on
AM_CPPFLAGS for all sources.
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
The `make distcheckclean` command fails because of lingering .o files in
lib/.libs/ which it shouldn't, since both AC_CONFIG_LIBOBJ_DIR() and the
subdir-objects automake options are set.
This workaround is ugly, but works for now.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
- Drop weak bindings, use simple #define in compat.h instead
- No need to #ifdef sources with HAVE_foo, configure handles this for us
- Move utimensat() declaration to compat.h from pidfile.c to be consistent
With these changes we can let libsyslog link with the replacement objs,
just like syslogd and logger does. Because even if the C-library does
*not* have strlcpy() & C:o *and* an application has a local copy of any
of these APIs, our versions are prefixed with __ in the symbol table.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
When sending to a remote syslog server, configured as an IP address or
when the DNS name has already been resolved, we may get temporary error
messages like ENETUNREACH and similar from sendmsg().
Before this patch the whole filed was placed in F_FORW_SUSP, like failed
DNS resolve, which introduces a 180 sec delay before even trying again.
A better approach is to just try again with the next syslog message.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
The original idea with libcompat was to keep as few objects as
possible for linking with libsyslog. That in turn to prevent
a user of libsyslog from suddenly also getting strong binding
to symbols like strlcpy() from libsyslog, rather than their C
library of choice.
However, this caused strlcpy.c to be built as both .o and .lo
files, which in turn caused really bizarre build problems due
to bad DAG dependency.
This patch drops libcompat and instead marks all replacement APIs
as weak symbols, which a C library can override.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
Internal log messages of INTERNAL_MARK time were created every 30
seconds (TIMERINTVL) instead of every MarkInterval (default 20 min).
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
The FreeBSD syslogd has more priority matching features and can also
group rules per program/hostname logging. The sysklogd project does
not yet support this, so that is removed and instead the syntax and
examples are better described.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
Add missing -r option for log rotation and remove -8 option, which we
don't have yet.
Add SECURITY, DEBUGGING, and SIGNALS sections and expand upon the BUGS
section a bit to link things together.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
- Much less command line options (for now)
- Mention support for RFC3164 and RFC5424
- Add the history of the sysklogd project
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
With `klogd` removed and the original man pages replaced with FreeBSD
versions, the only remaining GPL'ed material was the build system, which
the copyright owner (undersigned) agrees to change to BSD as well.
Hence, the GNU GPL could be dropped in favor of the 3-clause BSD.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This patch replaces the original man pages by Greg and Martin, that were
both licensed under the GNU GPL, with 3-clause BSD licensed versions of
the same man pages from FreeBSD.
- syslogd.8 FreeBSD Subversion r335862
- syslog.conf.5 FreeBSD Subversion r314436
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This patch removes one of the traditionally key pieces of the sysklogd
project, klogd. Now that syslogd performs logging of kernel messages
we no longer require a separate daemon for that.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
When building the sysklogd project --without-klogd we must disable the
kernel logging to console on Linux. This fix depends on how the sysctl
setting `kernel.printk` is configured. The patch only calls the kernel
to set console_loglevel to minimum_console_loglevel.
See the kernel docs for details:
https://www.kernel.org/doc/Documentation/sysctl/kernel.txt
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
The changes in the timer handling are quite extensive, so we cannot in
good conscience call this a patch release.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
Independently of each other both the Gentoo project and Westermo found
an issue with massively parallel builds on monster-core-machines. At
Westermo there are 40 core Xeon monsters that stumble when building
sysklogd.
The Gentoo bug report is here:
https://bugs.gentoo.org/701894
The problem stems from strlcat.c and strlcpy.c being used for both
the libcompat convenience library built for libsyslog and als for
syslogd when the system does not have either of the APIs in libc,
i.e. most Linux systems with GLIBC or musl libc.
I can either rewrite the Makefile.am files to handle dependencies
better, or we just disable parallel build like this patch. There's
too few source files to gain anything from parallel build anyway.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
We should make sure to also check that we don't get more MARK messages
than expected based on the -mMIN value.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This patch adds a alarm()/SIGALRM based generic timer API to syslogd.
The API takes care to wrap SIGALRM and serialize all timer events to
a standard UNIX pipe(2) which syslogd can poll() for like any other
incoming event.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This bug caused syslogd to fall back to logging to /dev/console for
internal log messages/errors during reconfiguration at runtime.
syslogd has the FreeBSD style of keeping already open log files ready
for logging until re:init() has completed, when new log files are rolled
in and any old ones not to be used anymore are closed.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>