Merge remote-tracking branch 'origin/cmaster' into cmaster-next

This commit is contained in:
Donald Sharp 2016-11-10 07:57:51 -05:00
commit 82b4d5da4b
2 changed files with 35 additions and 3 deletions

View File

@ -33,7 +33,6 @@ else
SSD=`which start-stop-daemon`
fi
echo ${SSD}
# Print the name of the pidfile.
pidfile()
{
@ -114,12 +113,23 @@ start()
echo -n " $1"
fi
if [ -e /var/run/quagga/watchquagga.started ] ; then
rm /var/run/quagga/watchquagga.started
fi
${SSD} \
--start \
--pidfile=`pidfile $1` \
--exec "$D_PATH/$1" \
-- \
"${watchquagga_options[@]}"
for i in `seq 1 10`;
do
if [ -e /var/run/quagga/watchquagga.started ] ; then
break
else
sleep 1
fi
done
elif [ -n "$2" ]; then
echo -n " $1-$2"
if ! check_daemon $1 $2 ; then
@ -502,8 +512,8 @@ case "$1" in
if [ "$2" != "watchquagga" ]; then
start_prio 10 $dmn
fi
vtysh_b
start_watchquagga
vtysh_b
;;
1|2|3|4|5|6|7|8|9|10)

View File

@ -682,6 +682,28 @@ handle_read(struct thread *t_read)
return 0;
}
/*
* Wait till we notice that all daemons are ready before
* we send we are ready to systemd
*/
static void
daemon_send_ready (void)
{
static int sent = 0;
if (!sent && gs.numdown == 0)
{
#if defined (HAVE_CUMULUS)
FILE *fp;
fp = fopen("/var/run/quagga/watchquagga.started", "w");
fclose(fp);
#endif
zlog_notice ("Watchquagga: Notifying Systemd we are up and running");
systemd_send_started(master, 0);
sent = 1;
}
}
static void
daemon_up(struct daemon *dmn, const char *why)
{
@ -689,6 +711,7 @@ daemon_up(struct daemon *dmn, const char *why)
gs.numdown--;
dmn->connect_tries = 0;
zlog_notice("%s state -> up : %s",dmn->name,why);
daemon_send_ready();
if (gs.do_ping)
SET_WAKEUP_ECHO(dmn);
phase_check();
@ -1284,7 +1307,6 @@ main(int argc, char **argv)
gs.restart.interval = gs.min_restart_interval;
master = thread_master_create();
systemd_send_started (master, 0);
signal_init (master, array_size(my_signals), my_signals);
srandom(time(NULL));