From 580b08fdb0c476cce9713f06491997c5214b7663 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen.hemminger@vyatta.com>
Date: Thu, 7 May 2009 09:07:43 -0700
Subject: Redefine quagga-manager check as start

No need for check if start checks if already running
---
 interface-templates/ip/ospf/node.def     |  2 +-
 interface-templates/ip/rip/node.def      |  2 +-
 interface-templates/ipv6/ospfv3/node.def |  2 +-
 interface-templates/ipv6/ripng/node.def  |  2 +-
 scripts/quagga-manager                   | 28 ++++++++++++++++++----------
 5 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/interface-templates/ip/ospf/node.def b/interface-templates/ip/ospf/node.def
index 31980774..6842b5bd 100644
--- a/interface-templates/ip/ospf/node.def
+++ b/interface-templates/ip/ospf/node.def
@@ -1,2 +1,2 @@
 help: Set Open Shortest Path First (OSPF) parameters for specified interface
-create: sudo /opt/vyatta/sbin/quagga-manager check ospfd
+create: sudo /opt/vyatta/sbin/quagga-manager start ospfd
diff --git a/interface-templates/ip/rip/node.def b/interface-templates/ip/rip/node.def
index b01a779f..7818921b 100644
--- a/interface-templates/ip/rip/node.def
+++ b/interface-templates/ip/rip/node.def
@@ -1,2 +1,2 @@
 help: Set Routing Information Protocol (RIP) for specified interface
-create: sudo /opt/vyatta/sbin/quagga-manager check ripd
+create: sudo /opt/vyatta/sbin/quagga-manager start ripd
diff --git a/interface-templates/ipv6/ospfv3/node.def b/interface-templates/ipv6/ospfv3/node.def
index 3e8380e6..1dbba902 100644
--- a/interface-templates/ipv6/ospfv3/node.def
+++ b/interface-templates/ipv6/ospfv3/node.def
@@ -1,2 +1,2 @@
 help: Set IPv6 Open Shortest Path First (OSPFv3) parameters for specified interface
-create: sudo /opt/vyatta/sbin/quagga-manager check ospf6d
+create: sudo /opt/vyatta/sbin/quagga-manager start ospf6d
diff --git a/interface-templates/ipv6/ripng/node.def b/interface-templates/ipv6/ripng/node.def
index d59da359..977303db 100644
--- a/interface-templates/ipv6/ripng/node.def
+++ b/interface-templates/ipv6/ripng/node.def
@@ -1,2 +1,2 @@
 help: Set Routing Information Protocol (RIPng) for specified interface
-create: sudo /opt/vyatta/sbin/quagga-manager check ripngd
+create: sudo /opt/vyatta/sbin/quagga-manager start ripngd
diff --git a/scripts/quagga-manager b/scripts/quagga-manager
index 58c91b66..77cb5f5a 100755
--- a/scripts/quagga-manager
+++ b/scripts/quagga-manager
@@ -23,19 +23,27 @@ fi
 pid_dir=/var/run/vyatta/quagga
 log_dir=/var/log/vyatta/quagga
 
-check() {
+. /lib/lsb/init-functions
+
+status() {
     local daemon=$1
-    [  -f ${pid_dir}/${daemon}.pid ] || start $daemon
+    local pidfile=${pid_dir}/${daemon}.pid
+    local binpath=/usr/sbin/vyatta-$daemon
+    status_of_proc -p $pidfile $binpath $daemon && exit 0 || exit $?
 }
 
 start() {
     local daemon=$1
-    local exe_file=/usr/sbin/vyatta-$daemon
+    local pidfile=${pid_dir}/${daemon}.pid
+    local binpath=/usr/sbin/vyatta-$daemon
 
-    if [ ! -x $exe_file ]; then
+    if [ ! -x $binpath ]; then
 	echo "Unknown daemon $daemon"
-	exit 1
+	return 1
     fi
+
+    # already running?
+    pidofproc $pidfile $daemon >/dev/null && return 0
     
     local -a args=( -d -P 0 -i ${pid_dir}/${daemon}.pid )
     case $daemon in
@@ -60,17 +68,17 @@ start() {
 	    ;;
     esac
 
-    start-stop-daemon --start --quiet --oknodo \
-	--chdir $log_dir --exec $exe_file \
+    start-stop-daemon --start --quiet \
+	--chdir $log_dir --exec $binpath \
 	-- "${args[@]}"
 }
 
 stop() {
     local daemon=$1
-    local exe_file=/usr/sbin/vyatta-$daemon
+    local binpath=/usr/sbin/vyatta-$daemon
 
     start-stop-daemon --stop --quiet --oknodo --retry 5 \
-	--exec $exe_file --pidfile=$pid_dir/${daemon}.pid
+	--exec $binpath --pidfile=$pid_dir/${daemon}.pid
     rm -f $pid_dir/${daemon}.pid
 }
 
@@ -165,9 +173,9 @@ update() {
 
 
 case "$1" in
-    check)   check $2;;
     start)   start $2;;
     stop)    stop $2;;
+    status)  status $2;;
     update)  update;;
     reload)  start $2; reload_config $2;;
     restart) stop $2; start $2;;
-- 
cgit v1.2.3