summaryrefslogtreecommitdiff
path: root/watchfrr
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2019-10-03 21:09:28 -0400
committerDonald Sharp <sharpd@cumulusnetworks.com>2019-10-03 21:09:28 -0400
commitb3ee8bcc615d6b51214f37b1e48f92965812d63e (patch)
tree6a0d242d6e6f5da572956371c4151be96e2aab39 /watchfrr
parentbf9846bdbecbe5d230dab84f9a4aaa2e90654499 (diff)
lib, watchfrr: Add some additional status messages to systemd
Allow systemd to be informed about operational state so operators can infer a bit about what is going on with FRR from the systemd status cli. sharpd@robot ~/frr4> systemctl status frr ● frr.service - FRRouting Loaded: loaded (/usr/lib/systemd/system/frr.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2019-10-03 21:09:04 EDT; 7s ago Docs: https://frrouting.readthedocs.io/en/latest/setup.html Process: 32455 ExecStart=/usr/lib/frr/frrinit.sh start (code=exited, status=0/SUCCESS) Status: "FRR Operational" Tasks: 12 (limit: 4915) Memory: 76.5M CGroup: /system.slice/frr.service ├─32468 /usr/lib/frr/watchfrr -d zebra bgpd staticd ├─32487 /usr/lib/frr/zebra -d -A 127.0.0.1 -s 90000000 ├─32492 /usr/lib/frr/bgpd -d -A 127.0.0.1 └─32500 /usr/lib/frr/staticd -d -A 127.0.0.1 Please note the `Status: ...` line above. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'watchfrr')
-rw-r--r--watchfrr/watchfrr.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/watchfrr/watchfrr.c b/watchfrr/watchfrr.c
index a6a910a1db..ea59655824 100644
--- a/watchfrr/watchfrr.c
+++ b/watchfrr/watchfrr.c
@@ -460,12 +460,20 @@ static int run_job(struct restart_info *restart, const char *cmdtype,
return -1;
}
+#if defined HAVE_SYSTEMD
+ char buffer[512];
+
+ snprintf(buffer, sizeof(buffer), "restarting %s", restart->name);
+ systemd_send_status(buffer);
+#endif
+
/* Note: time_elapsed test must come before the force test, since we
need
to make sure that delay is initialized for use below in updating the
restart interval. */
if ((time_elapsed(&delay, &restart->time)->tv_sec < restart->interval)
&& !force) {
+
if (gs.loglevel > LOG_DEBUG + 1)
zlog_debug(
"postponing %s %s: "
@@ -490,6 +498,9 @@ static int run_job(struct restart_info *restart, const char *cmdtype,
restart->pid = 0;
}
+#if defined HAVE_SYSTEMD
+ systemd_send_status("FRR Operational");
+#endif
/* Calculate the new restart interval. */
if (update_interval) {
if (delay.tv_sec > 2 * gs.max_restart_interval)
@@ -707,6 +718,7 @@ static void daemon_send_ready(int exitcode)
fclose(fp);
#if defined HAVE_SYSTEMD
systemd_send_started(master, 0);
+ systemd_send_status("FRR Operational");
#endif
sent = 1;
}