diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2019-10-03 21:09:28 -0400 | 
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2019-10-03 21:09:28 -0400 | 
| commit | b3ee8bcc615d6b51214f37b1e48f92965812d63e (patch) | |
| tree | 6a0d242d6e6f5da572956371c4151be96e2aab39 /watchfrr/watchfrr.c | |
| parent | bf9846bdbecbe5d230dab84f9a4aaa2e90654499 (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/watchfrr.c')
| -rw-r--r-- | watchfrr/watchfrr.c | 12 | 
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;  }  | 
