#!/bin/sh
#
# netplugd     This shell script takes care of starting and stopping
#              the network plug management daemon.
#
# chkconfig: - 11 89
# description: netplugd is a daemon for managing non-static network \
#              interfaces.
# processname: netplugd
# pidfile: /var/run/netplugd.pid

# Copyright 2003 Key Research, Inc.

# Source function library.
if [ -f /etc/init.d/functions ]; then
	. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ]; then
	. /etc/rc.d/init.d/functions
fi

# Source networking configuration.
if [ -f /etc/sysconfig/network ]; then
	. /etc/sysconfig/network

	# Check that networking is up.
	[ ${NETWORKING} = "no" ] && exit 0
elif [ ! -f /etc/network/interfaces ]; then
	# No network support
	exit 0
fi

[ -x /sbin/netplugd ] || exit 0

if [ -f /etc/sysconfig/netplugd ]; then
    . /etc/sysconfig/netplugd
fi

# See how we were called.
case "$1" in
  start)
	# Start daemon.
	echo -n $"Starting network plug daemon: "
	start-stop-daemon -S -q -p /var/run/netplugd.pid -x /sbin/netplugd ${NETPLUGDARGS}
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/netplugd
	;;
  stop)
	# Stop daemon.
	echo -n $"Shutting down network plug daemon: "
	start-stop-daemon -K -n netplugd
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/netplugd
	;;
  restart|reload)
	$0 stop
	$0 start
	;;
  condrestart)
	[ -f /var/lock/subsys/netplugd ] && $0 restart || :
	;;
  *)
	echo $"Usage: $0 {start|stop|restart}"
	RETVAL=1
	;;
esac

exit $RETVAL
