summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2016-11-09 16:22:22 +0100
committerDonald Sharp <sharpd@cumulusnetworks.com>2016-11-09 18:52:42 +0100
commit207e0d7a7909b75b2cb9d7bf8f8e817698bf55c9 (patch)
tree0859121ad132820afe7fbd3f109953c2423cce0a /tools
parentzebra: Move netlink error message under a debug (diff)
downloadfrr-207e0d7a7909b75b2cb9d7bf8f8e817698bf55c9.tar.xz
frr-207e0d7a7909b75b2cb9d7bf8f8e817698bf55c9.zip
watchquagga: Signal when we are actually up and running
When Quagga is starting up, it is returning immediately. This is leaving us in a state where systemd believes Quagga is up and running, while the sytem might actually not have restarted the code yet. Modify the code so that when watchquagga starts up it doesn't start communicating with systemd until such time that it detects that all daemons are running. Additionally modify watchquagga to touch a file in /var/run/quagga/ that the /usr/lib/quagga/quagga script looks for for 10 seconds. If it finds this Quagga started file then we know watchquagga has successfully communicated with all daemons. If after 10 seconds we haven't communicated with Quagga, continue on for the start and let the normal start failure code work. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'tools')
-rwxr-xr-xtools/quagga14
1 files changed, 12 insertions, 2 deletions
diff --git a/tools/quagga b/tools/quagga
index 83dfb6302..e8595d787 100755
--- a/tools/quagga
+++ b/tools/quagga
@@ -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)