diff --git a/man/systemd.xml b/man/systemd.xml
index fe1719fc18..468edfb2d3 100644
--- a/man/systemd.xml
+++ b/man/systemd.xml
@@ -585,6 +585,17 @@
for --user instances).
+
+ SIGRTMIN+25
+
+ Upon receiving this signal the systemd manager will reexecute itself. This
+ is mostly equivalent to systemctl daemon-reexec except that it will be
+ done asynchronously.
+
+ The systemd system manager treats this signal the same way as
+ SIGTERM.
+
+
SIGRTMIN+26
diff --git a/src/core/manager.c b/src/core/manager.c
index a3607ea44f..24dfe9fc06 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -578,8 +578,7 @@ static int manager_setup_signals(Manager *m) {
SIGRTMIN+22, /* systemd: set log level to LOG_DEBUG */
SIGRTMIN+23, /* systemd: set log level to LOG_INFO */
SIGRTMIN+24, /* systemd: Immediate exit (--user only) */
-
- /* .. one free signal here ... */
+ SIGRTMIN+25, /* systemd: reexecute manager */
/* Apparently Linux on hppa had fewer RT signals until v3.18,
* SIGRTMAX was SIGRTMIN+25, and then SIGRTMIN was lowered,
@@ -2846,6 +2845,10 @@ static int manager_dispatch_signal_fd(sd_event_source *source, int fd, uint32_t
/* This is a nop on init */
break;
+ case 25:
+ m->objective = MANAGER_REEXECUTE;
+ break;
+
case 26:
case 29: /* compatibility: used to be mapped to LOG_TARGET_SYSLOG_OR_KMSG */
manager_restore_original_log_target(m);