#!/bin/bash
#
#	/etc/rc.d/init.d/networkmanager
#
# Starts the networkmanager daemon
#
# chkconfig: 2345 13 90
# description: This is a daemon for automatically switching network \
#              connections to the best available connection
# processname: networkmanager
#
### BEGIN INIT INFO
# Provides: networkmanager
# Required-Start: $local_fs $messagebus $syslog
# Required-Stop: $local_fs $messagebus
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts the networkmanager daemon
# Description: NetworkManager is a tool for easily managing network connections
### END INIT INFO

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

DAEMON=NetworkManager
NM_CONNECTION_WAIT=20
PROGNAME=${DAEMON}
DBUS_SEND=/usr/bin/dbus-send
test -x /usr/sbin/$PROGNAME || exit 0

RETVAL=0

#
# See how we were called.
#

start() {
	# Check if it is already running
	if [ ! -f /var/lock/subsys/$PROGNAME ]; then
	    daemon /usr/sbin/$PROGNAME --pid-file=/var/run/NetworkManager/NetworkManager.pid
	    RETVAL=$?
	    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$PROGNAME
	    	if [ -n "$NM_CONNECTION_WAIT" ]; then
            action "Waiting for connection:"  nm-online -s -q -t "$NM_CONNECTION_WAIT"
            fi
	    echo
	fi
	return $RETVAL
}

stop() {
	gprintf "Stopping %s daemon: " "$DAEMON"
	killproc /usr/sbin/$PROGNAME
	RETVAL=$?
	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$PROGNAME
	echo
        return $RETVAL
}

nm_sleep()
{
	[ -x "$DBUS_SEND" ] &&
	action "Put NetworkManager to sleep" "$DBUS_SEND" --system --print-reply \
						--dest=org.freedesktop.NetworkManager  \
						/org/freedesktop/NetworkManager        \
						org.freedesktop.NetworkManager.Sleep   \
						boolean:true
}

nm_wake()
{
	[ -x "$DBUS_SEND" ] &&
	action "To wake NetworkManager" "$DBUS_SEND" --system --print-reply \
						--dest=org.freedesktop.NetworkManager  \
						/org/freedesktop/NetworkManager        \
						org.freedesktop.NetworkManager.Sleep   \
						boolean:false
}

restart() {
	stop
	start
}	

reload() {
	trap "" SIGHUP
	killall -HUP $PROGNAME
}	

case "$1" in
start)
	start
	;;
stop)
	stop
	;;
reload)
	reload
	;;
restart)
	restart
	;;
condrestart)
	if [ -f /var/lock/subsys/$PROGNAME ]; then
	    restart
	fi
	;;
status)
	status $PROGNAME
	;;
sleep)
		nm_sleep
		;;
wake)
		nm_wake
		;;
*)
	INITNAME=`basename $0`
	gprintf "Usage: %s {start|stop|restart|condrestart|status|sleep|wake}\n" "$INITNAME"
	exit 1
esac

exit $RETVAL
