#! /bin/sh
# chkconfig: 345 91 35
# description: This package enables Linux to talk to Macintosh
#              computers via the AppleTalk networking protocol and 
#              provides printer, file sharing, and AppleTalk routing 
#              services.   
#
# AppleTalk daemons. Make sure not to start atalkd in the background:
# its data structures must have time to stablize before running the
# other processes.

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

# Source networking configuration.
. /etc/sysconfig/network

# Quickly probe for appletalk and warn if we can't find it
/sbin/modprobe appletalk || echo "[could not load appletalk module]"

# Check for IP Encapsulation support
#/sbin/modprobe ipddp || echo "[could not load IP encapsulation]"

# read in netatalk configuration
. /etc/sysconfig/netatalk

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

# initialize return values
RETVAL=1
RETVAL_ATALKD=0
RETVAL_PAPD=0
RETVAL_AFPD=0

# startup code for everything
case "$1" in
'start')

	if [ -f /var/lock/subsys/atalk ]; then
                msg_Already_Running "AppleTalk services"
                exit 1
        fi

	if [ x"${ATALKD_RUN}" != x"no" ]; then 
		msg_starting "atalkd"
		daemon atalkd
		RETVAL_ATALKD=$?
		action "Registering ${ATALK_NAME}:Workstation${ATALK_ZONE}:" nbprgstr -p 4 \"${ATALK_NAME}:Workstation${ATALK_ZONE}\"
		action "Registering ${ATALK_NAME}:netatalk${ATALK_ZONE}:" nbprgstr -p 4 \"${ATALK_NAME}:netatalk${ATALK_ZONE}\"
		if [ x"${PAPD_RUN}" = x"yes" ]; then
	    		msg_starting "papd"
	    		daemon papd
	    		RETVAL_PAPD=$?
		fi
	fi

	if [ x"${TIMELORD_RUN}" = x"yes" ]; then
		msg_starting "timelord"
		daemon timelord
	fi

	if [ x"${AFPD_RUN}" = x"yes" ] ; then
		msg_starting "afpd"
	    	daemon afpd ${AFPD_UAMLIST} -g ${AFPD_GUEST} -c ${AFPD_MAX_CLIENTS} -n \"${ATALK_NAME}${ATALK_ZONE}\"
	    	RETVAL_AFPD=$?
    	fi

    	if [ $RETVAL_ATALKD -eq 0 -a $RETVAL_PAPD -eq 0 -a $RETVAL_AFPD -eq 0 ]; then
        	RETVAL=0
	touch /var/lock/subsys/atalk || RETVAL=1
	fi
	;;

'stop')
	if [ ! -f /var/lock/subsys/atalk ]; then
		msg_Not_Running "AppleTalk services"
		exit 1
	fi

	if [ x"${ATALKD_RUN}" != x"no" ]; then
		if [ x"${PAPD_RUN}" = x"yes" ]; then
			msg_stopping "papd"
			killproc papd
			RETVAL_PAPD=$?
	    	fi

		if [ x"${TIMELORD_RUN}" = x"yes" ]; then
			msg_stopping "timelord"
			killproc timelord
		fi

		action "Unregistering ${ATALK_NAME}:Workstation${ATALK_ZONE}:" nbpunrgstr \"${ATALK_NAME}:Workstation${ATALK_ZONE}\"
		action "Unregistering ${ATALK_NAME}:netatalk${ATALK_ZONE}:" nbpunrgstr \"${ATALK_NAME}:netatalk${ATALK_ZONE}\"

		msg_stopping "atalk"
	    	killproc atalkd
	    	RETVAL_ATALKD=$?
	fi

	if [ x"${AFPD_RUN}" = x"yes" ]; then
		msg_stopping "afpd"
		killproc afpd
		RETVAL_AFPD=$?
	fi

	if [ $RETVAL_ATALKD -eq 0 -a $RETVAL_PAPD -eq 0 -a $RETVAL_AFPD -eq 0 ] ; then
		RETVAL=0
		rm -f /var/lock/subsys/atalk || RETVAL=1
	fi
	;;
  'restart'|'reload')
	$0 stop
	$0 start
	RETVAL=$?
	;;
  'status')
	status atalkd
	RETVAL=$?
	;;
  *)
	echo "Usage: atalk {start|stop|restart|status}"
	exit 1
esac

exit $RETVAL
