Commit Graph
100 Commits
Author SHA1 Message Date
Joachim Wiberg 93117e5801 Define _GNU_SOURCE, required for O_CLOEXEC on uClibc
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>
2020-08-30 11:43:53 +02:00
Joachim Wiberg 91a51cffbe Merge branch 'sandy-lcq-master'
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2020-08-27 08:10:15 +02:00
Joachim Nilsson 52c5384817 Minor, adjust position
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-05-21 10:32:18 +02:00
Joachim Nilsson 121d6cbaee Minor, repology badge
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-05-21 10:31:22 +02:00
Joachim Nilsson 84115ed4a8 Create FUNDING.yml 2020-04-04 14:05:58 +02:00
Joachim Nilsson 6d6010add6 Update ChangeLog and bump version for v2.1.2 release
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-03-22 09:47:54 +01:00
Joachim Nilsson 5eec48df9d Minor, wording and formatting of comment
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-03-22 09:47:01 +01:00
Joachim Nilsson 4c9ede6e43 Merge pull request #18 from sandy-lcq/master
fix one rarely reproduced parallel build problem
2020-03-20 16:28:47 +01:00
Joachim Nilsson b216a6a0bf Travis-CI: Move to Ubuntu 18.04 for building and testing
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-03-12 19:18:15 +01:00
Joachim Nilsson 24dafe9a27 Update ChangeLog and bump version for v2.1.1 bug fix release
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-01-19 21:21:57 +01:00
Joachim Nilsson c20c748afa Workaround for weird automake buglet
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>
2020-01-19 21:21:57 +01:00
Joachim Nilsson 6da50d15f7 syslogd: Minor, reduce scope of local variables
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-01-19 19:59:37 +01:00
Joachim Nilsson f35aa0760e syslogd: Minor, reduce code duplication
Found by clang-tidy

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-01-19 19:59:21 +01:00
Joachim Nilsson d94163d721 Add unit test to check syslog.conf rule option parsing
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-01-19 10:46:59 +01:00
Joachim Nilsson d22f7168e0 Revert "syslogd: cfopts(): reinit strtok() so both OPT1,OPT2 are found"
This reverts commit d758581 since it breaks unit tests by missing the
first option after ;

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-01-19 10:30:25 +01:00
Joachim Nilsson ee47b88cd2 Follow-up to 84d70e6, fix spelling
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-01-19 09:11:15 +01:00
Joachim Nilsson 64257d689d Minor, cleanup/coding-style
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-01-19 09:10:58 +01:00
Joachim Nilsson 5fce3001ed Simplify handling of replacement functions; strlcpy() & C:o
- 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>
2020-01-19 09:08:48 +01:00
Joachim Nilsson de4c349930 Update ChangeLog for v2.1.1 bug fix release
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-01-17 13:34:35 +01:00
Joachim Nilsson 773e69ea2e syslogd: Ignore temporary network problems when sending remote
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>
2020-01-17 13:01:29 +01:00
Joachim Nilsson 84d70e63fc Drop libcompat to simplify build deps and really fix #11
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>
2020-01-16 22:17:23 +01:00
Joachim Nilsson 43eee3d405 Update ChangeLog and bump version for v2.1 release
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-01-05 13:33:02 +01:00
Joachim Nilsson f33acb2521 Travis-CI: Minor fixes
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-01-05 13:33:02 +01:00
Joachim Nilsson 0af76f37ae Revert "Travis-CI: Disable clang temporarily for Coverity Scan run"
This reverts commit 100d90b452.
2020-01-05 13:33:02 +01:00
Joachim Nilsson 100d90b452 Travis-CI: Disable clang temporarily for Coverity Scan run
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-01-04 10:39:35 +01:00
Joachim Nilsson e0411a3a56 Fix invalid format specifier for f_prevcount, found by Coverity Scan
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-01-03 09:51:48 +01:00
Joachim Nilsson 39ea566d45 Fix minor descriptor leak, found by Coverity Scan
It is safe to always close() the fd here.

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2020-01-03 09:46:11 +01:00
Joachim Nilsson f06ab73e13 Minor updates, spell checking, etc.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-25 08:47:31 +01:00
Joachim Nilsson 38d0440975 Update ChangeLog with latest fixes
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-25 08:25:48 +01:00
Joachim Nilsson 0f7ee8d430 syslogd: Fix variable names shadowing other global or local defs.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-16 22:06:26 +01:00
Joachim Nilsson ff03287d5a syslogd: Use snprintf() rather than sprintf()
Protects against buffer overruns.

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-16 22:06:26 +01:00
Joachim Nilsson 0afdfb4911 syslogd: Handle multiple invocations of SIGHUP
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-16 13:25:48 +01:00
Joachim Nilsson 0e7c76c3f5 .github: sudo do-what-I-mean
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-16 13:17:13 +01:00
Joachim Nilsson 753d6f0cda .github: Attempt number 1231245432432 to install packages in runner
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-16 11:21:37 +01:00
Joachim Nilsson 9c05d380f3 Use non-interactive install
Why isn't the runner configured to use this by default?
2019-12-16 11:18:01 +01:00
Joachim Nilsson 722a77857f Split apt-get update and install in separate steps
Yaml isn't really suited to writing shell scripts :-/
2019-12-16 11:11:42 +01:00
Joachim Nilsson ce4a3c1f0a Run apt-get update first 2019-12-16 11:08:57 +01:00
Joachim Nilsson 55a12321c0 Accept any deps. to packages in runner install 2019-12-16 11:00:56 +01:00
Joachim Nilsson 4bbb813f1b Install tshark in runner 2019-12-16 10:58:39 +01:00
Joachim Nilsson 731078325a Dump contents of certain log files on build failure
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-16 09:35:56 +01:00
Joachim Nilsson b3f016aaf1 syslogd: Minor, fix size_t format specifier %zd vs %zu
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-14 10:13:48 +01:00
Joachim Nilsson 0cd3bf1ee6 Relocate GitHub docs to .github/
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-14 09:48:59 +01:00
Joachim Nilsson c280058e47 Disable clang-tidy check and SoundClound scan for now 2019-12-14 09:47:00 +01:00
Joachim Nilsson b3694592cf Fix action, must run autogen.sh first 2019-12-14 09:40:41 +01:00
Joachim Nilsson 65abc37809 Test GitHub action to build and test code 2019-12-14 09:36:03 +01:00
Joachim Nilsson 48bfe6edf4 syslogd: Refactor, use sigaction() instead of deprecated signal()
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-14 08:46:36 +01:00
Joachim Nilsson dec90a25ab syslogd: Set pipe fd non-blocking in timer backend
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-14 08:00:00 +01:00
Joachim Nilsson 2179d5a862 syslogd: Minor coding style cleanups
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-14 07:59:39 +01:00
Joachim Nilsson 2bbafcbd16 syslogd: Audit usage text, slim down, fix -R to -r conversion
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-10 08:34:49 +01:00
Joachim Nilsson 84f8e51541 man: Add Emacs nroff hinting to all man pages
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-09 18:29:59 +01:00
Joachim Nilsson 864ddaeb7d man: Change formatting of log msg examples using Li instead of Cm
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-09 18:29:14 +01:00
Joachim Nilsson 06f669f32e man: Try Li instead of Ql, possibly better in HTML rendition
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-09 18:24:23 +01:00
Joachim Nilsson af37f47f91 man: Add more whitespace to HISTORY to make it more readable
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-09 18:20:28 +01:00
Joachim Nilsson dca20067c6 man: Try Ql for inline literal display rather than Cm
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-09 18:20:03 +01:00
Joachim Nilsson 5efd1cffd8 build: Put all GNU autotools support files in aux/
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-09 18:08:07 +01:00
Joachim Nilsson 7abb1b9137 man: Use .Os to detail project name and version
Also, by convention .Dt should always be in upper case.

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-09 17:32:46 +01:00
Joachim Nilsson 49d66e43a1 Revert "Travis-CI: Disable clang temporarily for Coverity Scan run"
This reverts commit ede638e9fd.
2019-12-09 17:01:45 +01:00
Joachim Nilsson c01636fa71 README: Add pointers to HTML versions of man pages
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-09 17:01:02 +01:00
Joachim Nilsson 91c54466fd Minor, let logger use local version of syslog.h
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-09 16:56:46 +01:00
Joachim Nilsson e0c2d3ad0d syslogd: Only log INTERNAL_MARK every MarkInterval
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>
2019-12-09 15:10:30 +01:00
Joachim Nilsson 7ee7df058b syslogd: Only default to log rotation on actual files
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-09 13:42:05 +01:00
Joachim Nilsson d6b7cd6134 syslogd: Minor, factor out O_CREATE
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-09 13:41:52 +01:00
Joachim Nilsson 08b6c6fd0f man: Sync FreeBSD syslog.conf.5 man page w/ limitations in sysklogd
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>
2019-12-09 13:22:46 +01:00
Joachim Nilsson 881fd52acc man: Sync FreeBSD syslogd man page with the realities of the project
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>
2019-12-09 13:22:46 +01:00
Joachim Nilsson 9262229cc8 syslogd: Add log format and remote port to debug listing of sinks
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-09 13:22:46 +01:00
Joachim Nilsson ede638e9fd Travis-CI: Disable clang temporarily for Coverity Scan run
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-08 00:06:22 +01:00
Joachim Nilsson e8a91c870a Remove last traces of klogd
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-08 00:06:12 +01:00
Joachim Nilsson e15d789c84 Fix #9: Open kernel log pipe after daemonizing
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-07 20:58:16 +01:00
Joachim Nilsson 3462e2ba19 syslogd: Remove debug fprintf() from 6e6c0dd
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-07 20:58:16 +01:00
Joachim Nilsson f46850b000 syslogd: Refactor backgrounding/daemonization w/ code from FreeBSD
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-07 20:58:16 +01:00
Joachim Nilsson a3f3ed1833 Merge pull request #10 from kraj/master
Fix build on non-glibc linux systems
2019-12-07 20:09:07 +01:00
Joachim Nilsson 1d5c71c6d9 man: Adapt FreeBSD syslogd.8 to the flags and history of sysklogd
- 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>
2019-12-07 12:36:14 +01:00
Joachim Nilsson 6d567764ca Update with information on new license, 3-clause BSD
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-07 11:11:23 +01:00
Joachim Nilsson c6c696a722 Slight formatting changes for GitHub license detection
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-07 11:07:21 +01:00
Joachim Nilsson b07393c426 Update ChangeLog with license change
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-07 11:05:02 +01:00
Joachim Nilsson 51ff440b99 Relicense project under the 3-clause BSD license
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>
2019-12-07 11:04:00 +01:00
Joachim Nilsson 899d0d28be Relicense configure.ac and Makefile.am's under 3-clause BSD
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-07 10:57:47 +01:00
Joachim Nilsson 17cf953b97 Import pristine FreeBSD versions of man pages for license change
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>
2019-12-07 10:49:36 +01:00
Joachim Nilsson 5780d330fd Prepare ChangeLog for the next major release of sysklogd
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-07 10:32:49 +01:00
Joachim Nilsson ca4f4c47e4 Update README with the removal of klogd
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-07 10:31:06 +01:00
Joachim Nilsson fd2721598b Update version information and change date for man pages
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-07 10:31:06 +01:00
Joachim Nilsson 6bb6672ebf Remove klogd from the sysklogd project
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>
2019-12-07 10:31:06 +01:00
Joachim Nilsson 8aa2060312 Fix #8: kernel messages duplicated to console
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>
2019-12-07 10:30:42 +01:00
Joachim Nilsson a7fe2ef700 Use correct define in #ifdef, __linux__ not linux
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-06 18:26:39 +01:00
Joachim Nilsson 73736adbfd Bump version for v2.1 release cycle
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>
2019-12-06 18:24:38 +01:00
Joachim Nilsson 9cf1f97cef Fix nasty parallel build problem reported by Gentoo and Westermo
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>
2019-12-06 18:19:05 +01:00
Joachim Nilsson 3f94ae2906 man: Fix formatting of interval / 2
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-06 18:15:04 +01:00
Joachim Nilsson 7b122449cc test: Increase run time for -- MARK -- test
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>
2019-12-06 18:13:55 +01:00
Joachim Nilsson 6e6c0ddfaa syslogd: Integrate new timer API
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-06 18:13:15 +01:00
Joachim Nilsson 5ac6c39687 syslogd: Add generic timer API to replace exising buggy one
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>
2019-12-05 20:38:43 +01:00
Joachim Nilsson ad686ca86d Update ChangeLog and bump version for v2.0.3 release
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-01 21:40:20 +01:00
Joachim Nilsson 55f2122393 release: Make sure distcheck runs --with-klogd
Otherwise the resulting tarball will not include klogd.8

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-01 21:22:01 +01:00
Joachim Nilsson 163aa84cc4 klogd: Add '-F' as alias for '-n', for compat with syslogd
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-01 21:17:02 +01:00
Joachim Nilsson f6713bdb84 syslogd: Increase granularity of background flush/mark timer
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-01 21:12:54 +01:00
Joachim Nilsson 799b03447a test: Add --MARK-- test to verify idle functionality works
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-01 21:12:02 +01:00
Joachim Nilsson 4556901a2b syslogd: Update documentation, -m interval is in minutes
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-12-01 15:59:35 +01:00
Joachim Nilsson f4c01a3ba3 syslogd: Refactor domark() timer handling, always run at TIMERINTVL
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-11-30 17:55:58 +01:00
Joachim Nilsson 77119e2625 test: stop.sh: Exit on first error
We want to catch regressions when syslogd dies before we can tell it to
exit.

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-11-29 11:23:05 +01:00
Joachim Nilsson c3acff5fae syslogd: Only Initialize syslogd once
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>
2019-11-29 11:23:05 +01:00
Joachim Nilsson a9758d1559 syslogd: Record time of first occurrence of a message
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2019-11-29 11:23:05 +01:00