#!/bin/bash
#
# chkconfig: 2345 16 84
# description: An OSPF routing engine for use with Zebra and IPv6
#
# processname: ospf6d
# config: /etc/quagga/ospf6d.conf

# source function library
. /etc/rc.d/init.d/functions

# Get network config
. /etc/sysconfig/network

# quagga command line options
. /etc/sysconfig/quagga

# Check that networking is up.
[ "${NETWORKING_IPV6}" = "no" ] && exit 0

# The process must be configured first.
[ -f /etc/quagga/ospf6d.conf ] || exit 0

RETVAL=0
prog="ospf6d"

case "$1" in
  start)
	echo -n $"Starting $prog: "
        daemon /usr/sbin/ospf6d -d $OSPF6D_OPTS
	RETVAL=$?
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/ospf6d
	echo
	;;
  stop)
	echo -n $"Shutting down $prog: "
	killproc ospf6d
	RETVAL=$?
	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/ospf6d
	echo
	;;
  restart|reload)
        $0 stop
        $0 start
	RETVAL=$?
        ;;
  condrestart)
        if [ -f /var/lock/subsys/ospf6d ]; then
                $0 stop
		$0 start
        fi
	RETVAL=$?
        ;;
  status)
        status ospf6d
	RETVAL=$?
        ;;
  *)
	echo $"Usage: $prog {start|stop|restart|reload|condrestart|status}"
	exit 1
esac

exit $RETVAL
