syslog: rework syslog detection so that we need no compile-time option what the name of the syslog implementation is
This commit is contained in:
parent
0732ec002e
commit
f1dd0c3f9b
|
@ -1102,7 +1102,6 @@ SED_PROCESS = \
|
||||||
$(SED) -e 's,@rootlibexecdir\@,$(rootlibexecdir),g' \
|
$(SED) -e 's,@rootlibexecdir\@,$(rootlibexecdir),g' \
|
||||||
-e 's,@rootbindir\@,$(rootbindir),g' \
|
-e 's,@rootbindir\@,$(rootbindir),g' \
|
||||||
-e 's,@bindir\@,$(bindir),g' \
|
-e 's,@bindir\@,$(bindir),g' \
|
||||||
-e 's,@SPECIAL_SYSLOG_SERVICE\@,$(SPECIAL_SYSLOG_SERVICE),g' \
|
|
||||||
-e 's,@SYSTEMCTL\@,$(rootbindir)/systemctl,g' \
|
-e 's,@SYSTEMCTL\@,$(rootbindir)/systemctl,g' \
|
||||||
-e 's,@SYSTEMD_NOTIFY\@,$(rootbindir)/systemd-notify,g' \
|
-e 's,@SYSTEMD_NOTIFY\@,$(rootbindir)/systemd-notify,g' \
|
||||||
-e 's,@pkgsysconfdir\@,$(pkgsysconfdir),g' \
|
-e 's,@pkgsysconfdir\@,$(pkgsysconfdir),g' \
|
||||||
|
|
2
TODO
2
TODO
|
@ -29,6 +29,8 @@ F15:
|
||||||
|
|
||||||
* pull in .service from meta .targers AND vice versa too. i.e. syslog.target ←→ rsyslog.service, rpcbind similarly
|
* pull in .service from meta .targers AND vice versa too. i.e. syslog.target ←→ rsyslog.service, rpcbind similarly
|
||||||
|
|
||||||
|
* document default dependencies
|
||||||
|
|
||||||
Features:
|
Features:
|
||||||
|
|
||||||
* hide passwords on TAB
|
* hide passwords on TAB
|
||||||
|
|
39
configure.ac
39
configure.ac
|
@ -297,30 +297,15 @@ fi
|
||||||
with_distro=`echo ${with_distro} | tr '[[:upper:]]' '[[:lower:]]' `
|
with_distro=`echo ${with_distro} | tr '[[:upper:]]' '[[:lower:]]' `
|
||||||
AC_DEFINE_UNQUOTED(DISTRIBUTION, ["${with_distro}"], [Target Distribution])
|
AC_DEFINE_UNQUOTED(DISTRIBUTION, ["${with_distro}"], [Target Distribution])
|
||||||
|
|
||||||
# Default generic names
|
|
||||||
SPECIAL_SYSLOG_SERVICE=syslog.service
|
|
||||||
|
|
||||||
# Location of the init scripts as mandated by LSB
|
# Location of the init scripts as mandated by LSB
|
||||||
SYSTEM_SYSVINIT_PATH=/etc/init.d
|
SYSTEM_SYSVINIT_PATH=/etc/init.d
|
||||||
|
SYSTEM_SYSVRCND_PATH=/etc/rc.d
|
||||||
|
|
||||||
M4_DISTRO_FLAG=
|
M4_DISTRO_FLAG=
|
||||||
|
|
||||||
case $with_distro in
|
case $with_distro in
|
||||||
fedora)
|
fedora)
|
||||||
SYSTEM_SYSVINIT_PATH=/etc/rc.d/init.d
|
SYSTEM_SYSVINIT_PATH=/etc/rc.d/init.d
|
||||||
SYSTEM_SYSVRCND_PATH=/etc/rc.d
|
|
||||||
|
|
||||||
# A little background why we define this special unit
|
|
||||||
# names here in configure.ac: SysV services currently
|
|
||||||
# cannot have aliases. As long as syslog is started
|
|
||||||
# via a SysV init script we hence define this name to
|
|
||||||
# the actual SysV name here. Later on when SysV init
|
|
||||||
# scripts are not used anymore it is advisable to use
|
|
||||||
# the generic name instead and use symlinks in the
|
|
||||||
# unit directories to point to the right native unit
|
|
||||||
# file.
|
|
||||||
|
|
||||||
SPECIAL_SYSLOG_SERVICE=rsyslog.service
|
|
||||||
AC_DEFINE(TARGET_FEDORA, [], [Target is Fedora/RHEL])
|
AC_DEFINE(TARGET_FEDORA, [], [Target is Fedora/RHEL])
|
||||||
M4_DISTRO_FLAG=-DTARGET_FEDORA=1
|
M4_DISTRO_FLAG=-DTARGET_FEDORA=1
|
||||||
have_plymouth=true
|
have_plymouth=true
|
||||||
|
@ -333,61 +318,49 @@ case $with_distro in
|
||||||
;;
|
;;
|
||||||
debian)
|
debian)
|
||||||
SYSTEM_SYSVRCND_PATH=/etc
|
SYSTEM_SYSVRCND_PATH=/etc
|
||||||
SPECIAL_SYSLOG_SERVICE=rsyslog.service
|
|
||||||
AC_DEFINE(TARGET_DEBIAN, [], [Target is Debian])
|
AC_DEFINE(TARGET_DEBIAN, [], [Target is Debian])
|
||||||
M4_DISTRO_FLAG=-DTARGET_DEBIAN=1
|
M4_DISTRO_FLAG=-DTARGET_DEBIAN=1
|
||||||
;;
|
;;
|
||||||
ubuntu)
|
ubuntu)
|
||||||
SYSTEM_SYSVRCND_PATH=/etc
|
SYSTEM_SYSVRCND_PATH=/etc
|
||||||
SPECIAL_SYSLOG_SERVICE=rsyslog.service
|
|
||||||
AC_DEFINE(TARGET_UBUNTU, [], [Target is Ubuntu])
|
AC_DEFINE(TARGET_UBUNTU, [], [Target is Ubuntu])
|
||||||
M4_DISTRO_FLAG=-DTARGET_UBUNTU=1
|
M4_DISTRO_FLAG=-DTARGET_UBUNTU=1
|
||||||
;;
|
;;
|
||||||
arch)
|
arch)
|
||||||
SYSTEM_SYSVINIT_PATH=/etc/rc.d
|
SYSTEM_SYSVINIT_PATH=/etc/rc.d
|
||||||
SYSTEM_SYSVRCND_PATH=/etc
|
SYSTEM_SYSVRCND_PATH=/etc
|
||||||
SPECIAL_SYSLOG_SERVICE=syslog-ng.service
|
|
||||||
AC_DEFINE(TARGET_ARCH, [], [Target is ArchLinux])
|
AC_DEFINE(TARGET_ARCH, [], [Target is ArchLinux])
|
||||||
M4_DISTRO_FLAG=-DTARGET_ARCH=1
|
M4_DISTRO_FLAG=-DTARGET_ARCH=1
|
||||||
;;
|
;;
|
||||||
gentoo)
|
gentoo)
|
||||||
SYSTEM_SYSVINIT_PATH=
|
SYSTEM_SYSVINIT_PATH=
|
||||||
SYSTEM_SYSVRCND_PATH=
|
SYSTEM_SYSVRCND_PATH=
|
||||||
SPECIAL_SYSLOG_SERVICE=syslog-ng.service
|
|
||||||
AC_DEFINE(TARGET_GENTOO, [], [Target is Gentoo])
|
AC_DEFINE(TARGET_GENTOO, [], [Target is Gentoo])
|
||||||
M4_DISTRO_FLAG=-DTARGET_GENTOO=1
|
M4_DISTRO_FLAG=-DTARGET_GENTOO=1
|
||||||
;;
|
;;
|
||||||
slackware)
|
slackware)
|
||||||
SYSTEM_SYSVINIT_PATH=/etc/rc.d/init.d
|
SYSTEM_SYSVINIT_PATH=/etc/rc.d/init.d
|
||||||
SYSTEM_SYSVRCND_PATH=/etc/rc.d
|
|
||||||
AC_DEFINE(TARGET_SLACKWARE, [], [Target is Slackware])
|
AC_DEFINE(TARGET_SLACKWARE, [], [Target is Slackware])
|
||||||
M4_DISTRO_FLAG=-DTARGET_SLACKWARE=1
|
M4_DISTRO_FLAG=-DTARGET_SLACKWARE=1
|
||||||
;;
|
;;
|
||||||
frugalware)
|
frugalware)
|
||||||
SYSTEM_SYSVINIT_PATH=/etc/rc.d
|
SYSTEM_SYSVINIT_PATH=/etc/rc.d
|
||||||
SYSTEM_SYSVRCND_PATH=/etc/rc.d
|
|
||||||
AC_DEFINE(TARGET_FRUGALWARE, [], [Target is Frugalware])
|
AC_DEFINE(TARGET_FRUGALWARE, [], [Target is Frugalware])
|
||||||
M4_DISTRO_FLAG=-DTARGET_FRUGALWARE=1
|
M4_DISTRO_FLAG=-DTARGET_FRUGALWARE=1
|
||||||
;;
|
;;
|
||||||
altlinux)
|
altlinux)
|
||||||
SYSTEM_SYSVINIT_PATH=/etc/rc.d/init.d
|
SYSTEM_SYSVINIT_PATH=/etc/rc.d/init.d
|
||||||
SYSTEM_SYSVRCND_PATH=/etc/rc.d
|
|
||||||
SPECIAL_SYSLOG_SERVICE=syslogd.service
|
|
||||||
AC_DEFINE(TARGET_ALTLINUX, [], [Target is ALTLinux])
|
AC_DEFINE(TARGET_ALTLINUX, [], [Target is ALTLinux])
|
||||||
M4_DISTRO_FLAG=-DTARGET_ALTLINUX=1
|
M4_DISTRO_FLAG=-DTARGET_ALTLINUX=1
|
||||||
have_plymouth=true
|
have_plymouth=true
|
||||||
;;
|
;;
|
||||||
mandriva)
|
mandriva)
|
||||||
SYSTEM_SYSVINIT_PATH=/etc/rc.d/init.d
|
SYSTEM_SYSVINIT_PATH=/etc/rc.d/init.d
|
||||||
SYSTEM_SYSVRCND_PATH=/etc/rc.d
|
|
||||||
SPECIAL_SYSLOG_SERVICE=rsyslog.service
|
|
||||||
AC_DEFINE(TARGET_MANDRIVA, [], [Target is Mandriva])
|
AC_DEFINE(TARGET_MANDRIVA, [], [Target is Mandriva])
|
||||||
M4_DISTRO_FLAG=-DTARGET_MANDRIVA=1
|
M4_DISTRO_FLAG=-DTARGET_MANDRIVA=1
|
||||||
have_plymouth=true
|
have_plymouth=true
|
||||||
;;
|
;;
|
||||||
other)
|
other)
|
||||||
AS_IF([test "x$with_syslog_service" = "x"],
|
|
||||||
[AC_MSG_ERROR([With --distro=other, you must pass --with-syslog-service= to configure])])
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
AC_MSG_ERROR([Your distribution (${with_distro}) is not yet supported, SysV init scripts could not be found! (patches welcome); you can specify --with-distro=other to skip this check])
|
AC_MSG_ERROR([Your distribution (${with_distro}) is not yet supported, SysV init scripts could not be found! (patches welcome); you can specify --with-distro=other to skip this check])
|
||||||
|
@ -406,15 +379,8 @@ AC_ARG_WITH([sysvrcd-path],
|
||||||
[SYSTEM_SYSVRCND_PATH="$withval"],
|
[SYSTEM_SYSVRCND_PATH="$withval"],
|
||||||
[])
|
[])
|
||||||
|
|
||||||
AC_ARG_WITH([syslog-service],
|
|
||||||
[AS_HELP_STRING([--with-syslog-service=UNIT],
|
|
||||||
[Specify the name of the special syslog service @<:@default=based on distro@:>@])],
|
|
||||||
[SPECIAL_SYSLOG_SERVICE="$withval"],
|
|
||||||
[])
|
|
||||||
|
|
||||||
AC_SUBST(SYSTEM_SYSVINIT_PATH)
|
AC_SUBST(SYSTEM_SYSVINIT_PATH)
|
||||||
AC_SUBST(SYSTEM_SYSVRCND_PATH)
|
AC_SUBST(SYSTEM_SYSVRCND_PATH)
|
||||||
AC_SUBST(SPECIAL_SYSLOG_SERVICE)
|
|
||||||
AC_SUBST(M4_DISTRO_FLAG)
|
AC_SUBST(M4_DISTRO_FLAG)
|
||||||
|
|
||||||
if test "x${SYSTEM_SYSVINIT_PATH}" != "x" -a "x${SYSTEM_SYSVRCND_PATH}" != "x"; then
|
if test "x${SYSTEM_SYSVINIT_PATH}" != "x" -a "x${SYSTEM_SYSVRCND_PATH}" != "x"; then
|
||||||
|
@ -446,8 +412,6 @@ AM_CONDITIONAL(TARGET_MANDRIVA, test x"$with_distro" = xmandriva)
|
||||||
|
|
||||||
AM_CONDITIONAL(HAVE_PLYMOUTH, test -n "$have_plymouth")
|
AM_CONDITIONAL(HAVE_PLYMOUTH, test -n "$have_plymouth")
|
||||||
|
|
||||||
AC_DEFINE_UNQUOTED(SPECIAL_SYSLOG_SERVICE, ["$SPECIAL_SYSLOG_SERVICE"], [Syslog service name])
|
|
||||||
|
|
||||||
AC_ARG_WITH([dbuspolicydir],
|
AC_ARG_WITH([dbuspolicydir],
|
||||||
AS_HELP_STRING([--with-dbuspolicydir=DIR], [D-Bus policy directory]),
|
AS_HELP_STRING([--with-dbuspolicydir=DIR], [D-Bus policy directory]),
|
||||||
[],
|
[],
|
||||||
|
@ -501,7 +465,6 @@ echo "
|
||||||
SysV compatibility: ${SYSTEM_SYSV_COMPAT}
|
SysV compatibility: ${SYSTEM_SYSV_COMPAT}
|
||||||
SysV init scripts: ${SYSTEM_SYSVINIT_PATH}
|
SysV init scripts: ${SYSTEM_SYSVINIT_PATH}
|
||||||
SysV rc?.d directories: ${SYSTEM_SYSVRCND_PATH}
|
SysV rc?.d directories: ${SYSTEM_SYSVRCND_PATH}
|
||||||
Syslog service: ${SPECIAL_SYSLOG_SERVICE}
|
|
||||||
Gtk: ${have_gtk}
|
Gtk: ${have_gtk}
|
||||||
libcryptsetup: ${have_libcryptsetup}
|
libcryptsetup: ${have_libcryptsetup}
|
||||||
tcpwrap: ${have_tcpwrap}
|
tcpwrap: ${have_tcpwrap}
|
||||||
|
|
|
@ -78,7 +78,6 @@
|
||||||
<filename>sockets.target</filename>,
|
<filename>sockets.target</filename>,
|
||||||
<filename>swap.target</filename>,
|
<filename>swap.target</filename>,
|
||||||
<filename>sysinit.target</filename>,
|
<filename>sysinit.target</filename>,
|
||||||
<filename>@SPECIAL_SYSLOG_SERVICE@</filename>,
|
|
||||||
<filename>syslog.target</filename>,
|
<filename>syslog.target</filename>,
|
||||||
<filename>systemd-initctl.service</filename>,
|
<filename>systemd-initctl.service</filename>,
|
||||||
<filename>systemd-initctl.socket</filename>,
|
<filename>systemd-initctl.socket</filename>,
|
||||||
|
@ -542,27 +541,6 @@
|
||||||
or b.</para>
|
or b.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
|
||||||
<term><filename>@SPECIAL_SYSLOG_SERVICE@</filename></term>
|
|
||||||
<listitem>
|
|
||||||
<para>A special unit for the
|
|
||||||
syslog daemon. As soon as
|
|
||||||
this service is fully started
|
|
||||||
up systemd will connect to it
|
|
||||||
and use it for logging if it
|
|
||||||
has been configured for
|
|
||||||
that.</para>
|
|
||||||
|
|
||||||
<para>Units should generally
|
|
||||||
avoid depending on this unit
|
|
||||||
directly and instead refer to
|
|
||||||
the
|
|
||||||
<filename>syslog.target</filename>
|
|
||||||
unit instead, which pulls this
|
|
||||||
one in directly or indirectly
|
|
||||||
via socket-based activation.</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><filename>syslog.target</filename></term>
|
<term><filename>syslog.target</filename></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
|
@ -574,15 +552,6 @@
|
||||||
referring to the
|
referring to the
|
||||||
<literal>$syslog</literal>
|
<literal>$syslog</literal>
|
||||||
facility.</para>
|
facility.</para>
|
||||||
|
|
||||||
<para>Administrators should
|
|
||||||
ensure that this target pulls
|
|
||||||
in a service unit with the
|
|
||||||
name or alias of
|
|
||||||
<filename>@SPECIAL_SYSLOG_SERVICE@</filename>
|
|
||||||
(or a socket unit that
|
|
||||||
activates this
|
|
||||||
service).</para>
|
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
|
|
|
@ -2451,6 +2451,12 @@ void manager_send_unit_audit(Manager *m, Unit *u, int type, bool success) {
|
||||||
if (m->n_deserializing > 0)
|
if (m->n_deserializing > 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (m->running_as != MANAGER_SYSTEM)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (u->meta.type != UNIT_SERVICE)
|
||||||
|
return;
|
||||||
|
|
||||||
if (!(p = unit_name_to_prefix_and_instance(u->meta.id))) {
|
if (!(p = unit_name_to_prefix_and_instance(u->meta.id))) {
|
||||||
log_error("Failed to allocate unit name for audit message: %s", strerror(ENOMEM));
|
log_error("Failed to allocate unit name for audit message: %s", strerror(ENOMEM));
|
||||||
return;
|
return;
|
||||||
|
@ -2965,6 +2971,47 @@ int manager_set_default_controllers(Manager *m, char **controllers) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void manager_recheck_syslog(Manager *m) {
|
||||||
|
Unit *u;
|
||||||
|
|
||||||
|
assert(m);
|
||||||
|
|
||||||
|
if (m->running_as != MANAGER_SYSTEM)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ((u = manager_get_unit(m, SPECIAL_SYSLOG_SOCKET))) {
|
||||||
|
SocketState state;
|
||||||
|
|
||||||
|
state = SOCKET(u)->state;
|
||||||
|
|
||||||
|
if (state != SOCKET_DEAD &&
|
||||||
|
state != SOCKET_FAILED &&
|
||||||
|
state != SOCKET_RUNNING) {
|
||||||
|
|
||||||
|
/* Hmm, the socket is not set up, or is still
|
||||||
|
* listening, let's better not try to use
|
||||||
|
* it. Note that we have no problem if the
|
||||||
|
* socket is completely down, since there
|
||||||
|
* might be a foreign /dev/log socket around
|
||||||
|
* and we want to make use of that.
|
||||||
|
*/
|
||||||
|
|
||||||
|
log_close_syslog();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((u = manager_get_unit(m, SPECIAL_SYSLOG_TARGET)))
|
||||||
|
if (TARGET(u)->state != TARGET_ACTIVE) {
|
||||||
|
log_close_syslog();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hmm, OK, so the socket is either fully up, or fully down,
|
||||||
|
* and the target is up, then let's make use of the socket */
|
||||||
|
log_open();
|
||||||
|
}
|
||||||
|
|
||||||
static const char* const manager_running_as_table[_MANAGER_RUNNING_AS_MAX] = {
|
static const char* const manager_running_as_table[_MANAGER_RUNNING_AS_MAX] = {
|
||||||
[MANAGER_SYSTEM] = "system",
|
[MANAGER_SYSTEM] = "system",
|
||||||
[MANAGER_USER] = "user"
|
[MANAGER_USER] = "user"
|
||||||
|
|
|
@ -285,6 +285,8 @@ void manager_check_finished(Manager *m);
|
||||||
void manager_run_generators(Manager *m);
|
void manager_run_generators(Manager *m);
|
||||||
void manager_undo_generators(Manager *m);
|
void manager_undo_generators(Manager *m);
|
||||||
|
|
||||||
|
void manager_recheck_syslog(Manager *m);
|
||||||
|
|
||||||
const char *manager_running_as_to_string(ManagerRunningAs i);
|
const char *manager_running_as_to_string(ManagerRunningAs i);
|
||||||
ManagerRunningAs manager_running_as_from_string(const char *s);
|
ManagerRunningAs manager_running_as_from_string(const char *s);
|
||||||
|
|
||||||
|
|
|
@ -24,21 +24,24 @@
|
||||||
|
|
||||||
#define SPECIAL_DEFAULT_TARGET "default.target"
|
#define SPECIAL_DEFAULT_TARGET "default.target"
|
||||||
|
|
||||||
|
/* Shutdown targets */
|
||||||
|
#define SPECIAL_UMOUNT_TARGET "umount.target"
|
||||||
/* This is not really intended to be started by directly. This is
|
/* This is not really intended to be started by directly. This is
|
||||||
* mostly so that other targets (reboot/halt/poweroff) can depend on
|
* mostly so that other targets (reboot/halt/poweroff) can depend on
|
||||||
* it to bring all services down that want to be brought down on
|
* it to bring all services down that want to be brought down on
|
||||||
* system shutdown. */
|
* system shutdown. */
|
||||||
#define SPECIAL_SHUTDOWN_TARGET "shutdown.target"
|
#define SPECIAL_SHUTDOWN_TARGET "shutdown.target"
|
||||||
#define SPECIAL_UMOUNT_TARGET "umount.target"
|
|
||||||
#define SPECIAL_HALT_TARGET "halt.target"
|
#define SPECIAL_HALT_TARGET "halt.target"
|
||||||
#define SPECIAL_POWEROFF_TARGET "poweroff.target"
|
#define SPECIAL_POWEROFF_TARGET "poweroff.target"
|
||||||
#define SPECIAL_REBOOT_TARGET "reboot.target"
|
#define SPECIAL_REBOOT_TARGET "reboot.target"
|
||||||
#define SPECIAL_KEXEC_TARGET "kexec.target"
|
#define SPECIAL_KEXEC_TARGET "kexec.target"
|
||||||
#define SPECIAL_EXIT_TARGET "exit.target"
|
#define SPECIAL_EXIT_TARGET "exit.target"
|
||||||
|
|
||||||
|
/* Special boot targets */
|
||||||
#define SPECIAL_RESCUE_TARGET "rescue.target"
|
#define SPECIAL_RESCUE_TARGET "rescue.target"
|
||||||
#define SPECIAL_EMERGENCY_TARGET "emergency.target"
|
#define SPECIAL_EMERGENCY_TARGET "emergency.target"
|
||||||
|
|
||||||
|
/* Early boot targets */
|
||||||
#define SPECIAL_SYSINIT_TARGET "sysinit.target"
|
#define SPECIAL_SYSINIT_TARGET "sysinit.target"
|
||||||
#define SPECIAL_SOCKETS_TARGET "sockets.target"
|
#define SPECIAL_SOCKETS_TARGET "sockets.target"
|
||||||
#define SPECIAL_LOCAL_FS_TARGET "local-fs.target" /* LSB's $local_fs */
|
#define SPECIAL_LOCAL_FS_TARGET "local-fs.target" /* LSB's $local_fs */
|
||||||
|
@ -46,8 +49,8 @@
|
||||||
#define SPECIAL_SWAP_TARGET "swap.target"
|
#define SPECIAL_SWAP_TARGET "swap.target"
|
||||||
#define SPECIAL_BASIC_TARGET "basic.target"
|
#define SPECIAL_BASIC_TARGET "basic.target"
|
||||||
|
|
||||||
|
/* LSB compatibility */
|
||||||
#define SPECIAL_NETWORK_TARGET "network.target" /* LSB's $network */
|
#define SPECIAL_NETWORK_TARGET "network.target" /* LSB's $network */
|
||||||
|
|
||||||
#define SPECIAL_NSS_LOOKUP_TARGET "nss-lookup.target" /* LSB's $named */
|
#define SPECIAL_NSS_LOOKUP_TARGET "nss-lookup.target" /* LSB's $named */
|
||||||
#define SPECIAL_RPCBIND_TARGET "rpcbind.target" /* LSB's $portmap */
|
#define SPECIAL_RPCBIND_TARGET "rpcbind.target" /* LSB's $portmap */
|
||||||
#define SPECIAL_SYSLOG_TARGET "syslog.target" /* LSB's $syslog; Should pull in syslog.socket or syslog.service */
|
#define SPECIAL_SYSLOG_TARGET "syslog.target" /* LSB's $syslog; Should pull in syslog.socket or syslog.service */
|
||||||
|
@ -56,22 +59,22 @@
|
||||||
#define SPECIAL_MAIL_TRANSFER_AGENT_TARGET "mail-transfer-agent.target" /* Debian's $mail-{transport|transfer-agent */
|
#define SPECIAL_MAIL_TRANSFER_AGENT_TARGET "mail-transfer-agent.target" /* Debian's $mail-{transport|transfer-agent */
|
||||||
#define SPECIAL_HTTP_DAEMON_TARGET "http-daemon.target"
|
#define SPECIAL_HTTP_DAEMON_TARGET "http-daemon.target"
|
||||||
|
|
||||||
|
/* Magic early boot services */
|
||||||
#define SPECIAL_FSCK_SERVICE "fsck@.service"
|
#define SPECIAL_FSCK_SERVICE "fsck@.service"
|
||||||
#define SPECIAL_QUOTACHECK_SERVICE "quotacheck.service"
|
#define SPECIAL_QUOTACHECK_SERVICE "quotacheck.service"
|
||||||
#define SPECIAL_REMOUNT_ROOTFS_SERVICE "remount-rootfs.service"
|
#define SPECIAL_REMOUNT_ROOTFS_SERVICE "remount-rootfs.service"
|
||||||
|
|
||||||
|
/* Services systemd relies on */
|
||||||
#define SPECIAL_DBUS_SERVICE "dbus.service"
|
#define SPECIAL_DBUS_SERVICE "dbus.service"
|
||||||
#define SPECIAL_DBUS_SOCKET "dbus.socket"
|
#define SPECIAL_DBUS_SOCKET "dbus.socket"
|
||||||
#define SPECIAL_LOGGER_SOCKET "systemd-logger.socket"
|
#define SPECIAL_LOGGER_SOCKET "systemd-logger.socket"
|
||||||
|
#define SPECIAL_SYSLOG_SOCKET "syslog.socket"
|
||||||
|
|
||||||
|
/* Magic init signals */
|
||||||
#define SPECIAL_KBREQUEST_TARGET "kbrequest.target"
|
#define SPECIAL_KBREQUEST_TARGET "kbrequest.target"
|
||||||
#define SPECIAL_SIGPWR_TARGET "sigpwr.target"
|
#define SPECIAL_SIGPWR_TARGET "sigpwr.target"
|
||||||
#define SPECIAL_CTRL_ALT_DEL_TARGET "ctrl-alt-del.target"
|
#define SPECIAL_CTRL_ALT_DEL_TARGET "ctrl-alt-del.target"
|
||||||
|
|
||||||
#ifndef SPECIAL_SYSLOG_SERVICE
|
|
||||||
#define SPECIAL_SYSLOG_SERVICE "syslog.service"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* For SysV compatibility. Usually an alias for a saner target. On
|
/* For SysV compatibility. Usually an alias for a saner target. On
|
||||||
* SysV-free systems this doesn't exist. */
|
* SysV-free systems this doesn't exist. */
|
||||||
#define SPECIAL_RUNLEVEL2_TARGET "runlevel2.target"
|
#define SPECIAL_RUNLEVEL2_TARGET "runlevel2.target"
|
||||||
|
|
14
src/unit.c
14
src/unit.c
|
@ -1224,12 +1224,6 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su
|
||||||
* yet connected. */
|
* yet connected. */
|
||||||
bus_init(u->meta.manager, true);
|
bus_init(u->meta.manager, true);
|
||||||
|
|
||||||
if (unit_has_name(u, SPECIAL_SYSLOG_SERVICE))
|
|
||||||
/* The syslog daemon just might have become
|
|
||||||
* available, hence try to connect to it, if
|
|
||||||
* we aren't yet connected. */
|
|
||||||
log_open();
|
|
||||||
|
|
||||||
if (u->meta.type == UNIT_SERVICE &&
|
if (u->meta.type == UNIT_SERVICE &&
|
||||||
!UNIT_IS_ACTIVE_OR_RELOADING(os)) {
|
!UNIT_IS_ACTIVE_OR_RELOADING(os)) {
|
||||||
/* Write audit record if we have just finished starting up */
|
/* Write audit record if we have just finished starting up */
|
||||||
|
@ -1242,12 +1236,6 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (unit_has_name(u, SPECIAL_SYSLOG_SERVICE))
|
|
||||||
/* The syslog daemon might just have
|
|
||||||
* terminated, hence try to disconnect from
|
|
||||||
* it. */
|
|
||||||
log_close_syslog();
|
|
||||||
|
|
||||||
/* We don't care about D-Bus here, since we'll get an
|
/* We don't care about D-Bus here, since we'll get an
|
||||||
* asynchronous notification for it anyway. */
|
* asynchronous notification for it anyway. */
|
||||||
|
|
||||||
|
@ -1277,6 +1265,8 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su
|
||||||
|
|
||||||
unit_add_to_dbus_queue(u);
|
unit_add_to_dbus_queue(u);
|
||||||
unit_add_to_gc_queue(u);
|
unit_add_to_gc_queue(u);
|
||||||
|
|
||||||
|
manager_recheck_syslog(u->meta.manager);
|
||||||
}
|
}
|
||||||
|
|
||||||
int unit_watch_fd(Unit *u, int fd, uint32_t events, Watch *w) {
|
int unit_watch_fd(Unit *u, int fd, uint32_t events, Watch *w) {
|
||||||
|
|
|
@ -9,9 +9,3 @@
|
||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Syslog
|
Description=Syslog
|
||||||
|
|
||||||
# As soon as all syslog services have native unit files this explicit
|
|
||||||
# dependency should be dropped, and replaced by alias symlinks in the
|
|
||||||
# .wants/ directory, to either the .service or .socket unit of the
|
|
||||||
# syslog service.
|
|
||||||
After=@SPECIAL_SYSLOG_SERVICE@
|
|
||||||
|
|
Loading…
Reference in a new issue