cvsdist 9e6d913
#!/bin/bash
cvsdist 9e6d913
#
cvsdist 9e6d913
# rpcidmapd     Start up and shut down RPC name to UID/GID mapper
cvsdist 9e6d913
#
cafae3a
# chkconfig: 345 18 85
cvsdist 9e6d913
# description: Starts user-level daemon for NFSv4 that maps user \
cvsdist 9e6d913
#              names to UID and GID numbers.
cvsdist 9e6d913
0ce3b8d
### BEGIN INIT INFO
0ce3b8d
# Provides: rpcidmapd
0ce3b8d
# Required-Start: $network $syslog
0ce3b8d
# Required-Stop: $network $syslog
5b1bacb
# Default-Start: 3 4 5
0ce3b8d
# Default-Stop: 0 1 6
0ce3b8d
# Short-Description: Starts the NFSv4 id mapping daemon
0ce3b8d
# Description: NFS is a popular protocol for file sharing across \
0ce3b8d
#          networks. This deamon maps user names and groups to UID \
0ce3b8d
#          and GID numbers on NFSv4 mounts.
0ce3b8d
### END INIT INFO
0ce3b8d
cvsdist 9e6d913
# Source function library.
cvsdist 9e6d913
. /etc/init.d/functions
cvsdist 9e6d913
cvsdist 9e6d913
# Source networking configuration.
adb2afe
[ -f /etc/sysconfig/network ] &&  . /etc/sysconfig/network
cvsdist 9e6d913
48d9c62
# Check for and source configuration file otherwise set defaults
48d9c62
[ -f /etc/sysconfig/nfs ] && . /etc/sysconfig/nfs
48d9c62
cvsdist 9e6d913
RETVAL=0
cvsdist 9e6d913
prog="rpc.idmapd"
0fb3f74
LOCKFILE=/var/lock/subsys/$prog
0fb3f74
uid=`id | cut -d\( -f1 | cut -d= -f2`
cvsdist 9e6d913
cvsdist 9e6d913
case "$1" in
cvsdist 9e6d913
  start|condstart)
adb2afe
	# Check that networking is up.
adb2afe
	[ "${NETWORKING}" != "yes" ] && exit 6
adb2afe
	
adb2afe
	[ ! -x /usr/sbin/rpc.idmapd ] && exit 5
adb2afe
0fb3f74
	# Only root can start the service
0fb3f74
	[ $uid -ne 0 ] && exit 4
0fb3f74
cvsdist 9e6d913
	# Make sure the daemon is not already running.
819e6dc
	[ "$1" = "condstart" -a -n "`pidofproc $prog`" ] && {
819e6dc
		killproc $prog "-SIGHUP" > /dev/null
cvsdist 9e6d913
		exit 0
819e6dc
	}
adb2afe
	[ "$1" = "start" ] && {
adb2afe
		if status $prog > /dev/null ; then
adb2afe
			exit 0
adb2afe
		fi
adb2afe
	}
ba86d89
	rm -f $LOCKFILE
cvsdist 9e6d913
3f418c2
	echo -n $"Starting RPC idmapd: "
cvsdist 9e6d913
cafae3a
	# Make sure the rpc_pipefs filesystem is available
cafae3a
	[ "${RPCMTAB}" != "noload" ] && {
cafae3a
		RPCMTAB=`grep -v '^#' /proc/mounts | \
cafae3a
			awk '{ if ($3 ~ /^rpc_pipefs$/ ) print $2}'`
cafae3a
		[ -z "${RPCMTAB}" ] && {
cafae3a
			[ -x /sbin/lsmod -a -x /sbin/modprobe ] && {
cafae3a
				if ! /sbin/lsmod | grep sunrpc > /dev/null ; then
cafae3a
				 	/sbin/modprobe sunrpc
cafae3a
				fi
cafae3a
			}
cafae3a
			RPCMTAB=`grep -v '^#' /proc/mounts | \
cafae3a
				awk '{ if ($3 ~ /^rpc_pipefs$/ ) print $2}'`
cafae3a
			[ -z "${RPCMTAB}" ] && { \
cafae3a
				echo "Error: RPC MTAB does not exist."
cafae3a
				exit 6
cafae3a
			}
cafae3a
		}
cvsdist 9e6d913
	}
cvsdist 9e6d913
cvsdist 9e6d913
	# Start daemon.
48d9c62
	daemon $prog ${RPCIDMAPDARGS}
cvsdist 9e6d913
	RETVAL=$?
cvsdist 9e6d913
	echo
ba86d89
	[ $RETVAL -eq 0 ] && touch $LOCKFILE
cvsdist 9e6d913
	;;
cvsdist 9e6d913
  stop)
0fb3f74
	# Only root can stop the service
0fb3f74
	[ $uid -ne 0 ] && exit 4
0fb3f74
cvsdist 9e6d913
	# Stop daemon.
cafae3a
	echo -n $"Stopping RPC idmapd: "
cvsdist 9e6d913
	killproc $prog
cvsdist 9e6d913
	RETVAL=$?
cvsdist 9e6d913
	echo
0c53dbc
	rm -f $LOCKFILE
cvsdist 9e6d913
	;;
cvsdist 9e6d913
  status)
cvsdist 9e6d913
	status rpc.idmapd
cvsdist 9e6d913
	RETVAL=$?
cvsdist 9e6d913
	;;
0fb3f74
  restart|reload|force-reload)
cvsdist 9e6d913
	$0 stop
cvsdist 9e6d913
	$0 start
cvsdist 9e6d913
	RETVAL=$?
cvsdist 9e6d913
	;;
0fb3f74
  condrestart|try-restart)
ba86d89
	if [ -f $LOCKFILE ]; then
cvsdist 9e6d913
		$0 restart
cvsdist 9e6d913
		RETVAL=$?
cvsdist 9e6d913
	fi
cvsdist 9e6d913
	;;
1ae9fb3
  condstop)
1ae9fb3
	if [ -f $LOCKFILE ]; then
1ae9fb3
		$0 stop
1ae9fb3
		RETVAL=$?
1ae9fb3
	fi
1ae9fb3
	;;
cvsdist 9e6d913
  *)
0fb3f74
	echo $"Usage: $0 {start|stop|restart|force-reload|condstart|condrestart|try-restart|status|condstop}"
0fb3f74
	RETVAL=2
cafae3a
	;;
cvsdist 9e6d913
esac
cvsdist 9e6d913
cvsdist 9e6d913
exit $RETVAL