]> git.pld-linux.org Git - packages/nfs-utils.git/blob - rpcidmapd.init
f10ae439bc46883285a0c518bff1df0d0b5996e5
[packages/nfs-utils.git] / rpcidmapd.init
1 #!/bin/sh
2 #
3 # idmapd        Start up and shut down RPC name to UID/GID mapper
4 #
5 # chkconfig:    345 12 83
6 # description:  Starts user-level daemon for NFSv4 that maps user \
7 #               names to UID and GID numbers.
8
9 # Source function library.
10 . /etc/rc.d/init.d/functions
11
12 # Get network config
13 . /etc/sysconfig/network
14
15 # Check that networking is up.
16 if is_yes "${NETWORKING}"; then
17         if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
18                 msg_network_down "RPC idmapd"
19                 exit 1
20         fi
21 else
22         exit 0
23 fi
24
25 if [ "$1" != "stop" ]; then
26         check_portmapper || { nls "Error: portmap isn't running" && exit 0; }
27 fi
28
29 # Get service config
30 [ -f /etc/sysconfig/nfsfs ] && . /etc/sysconfig/nfsfs
31 [ -f /etc/sysconfig/nfsd ] && . /etc/sysconfig/nfsd
32
33 # /usr may be on NFS, fail silently, nfsfs will start it
34 [ -x /usr/sbin/rpc.idmapd ] || exit 0
35
36 # Find out what the current runlevel dir is
37 RUNLEVELDIR=$(cat /var/run/runlevel.dir)
38
39 start() {
40         # Check if the service is already running?
41         if [ ! -f /var/lock/subsys/idmapd ]; then
42                 # This is whacko, but we need /proc/fs/nfsd mounted before
43                 # starting idmapd on NFS server
44                 if [ -e "$RUNLEVELDIR"/S*nfs ]; then
45                         if ! grep -q nfsd /proc/mounts ; then
46                                 modprobe nfsd > /dev/null 2>&1
47                                 run_cmd "Mounting /proc/fs/nfsd filesystem" mount -t nfsd nfsd /proc/fs/nfsd
48                         fi
49                 fi
50                 if ! grep -q rpc_pipefs /proc/mounts ; then
51                         modprobe sunrpc >/dev/null 2>&1
52                         run_cmd "Mounting /var/lib/nfs/rpc_pipefs filesystem" \
53                                 mount -t rpc_pipefs rpc_pipefs /var/lib/nfs/rpc_pipefs
54                 fi
55
56                 msg_starting "RPC idmapd"
57                 daemon rpc.idmapd $RPCIDMAPOPTIONS
58                 RETVAL=$?
59                 [ $RETVAL -eq 0 ] && touch /var/lock/subsys/idmapd
60         else
61                 msg_already_running "RPC idmapd"
62         fi
63 }
64
65 stop() {
66         if [ -f /var/lock/subsys/idmapd ]; then
67                 msg_stopping "RPC idmapd"
68                 killproc rpc.idmapd
69                 rm -f /var/lock/subsys/idmapd
70         else
71                 msg_not_running "RPC idmapd"
72         fi
73 }
74
75 # See how we were called.
76 RETVAL=0
77 case "$1" in
78   start)
79         start
80         ;;
81   stop)
82         stop
83         ;;
84   status)
85         status rpc.idmapd
86         RETVAL=$?
87         ;;
88   restart)
89         stop
90         start
91         ;;
92   reload)
93         if [ -f /var/lock/subsys/idmapd ]; then
94                 msg_reloading "RPC idmapd"
95                 killproc rpc.idmapd -HUP
96                 RETVAL=$?
97         else
98                 msg_not_running "RPC idmapd" >&2
99                 exit 7
100         fi
101         ;;
102   *)
103         msg_usage "$0 {start|stop|restart|reload|status}"
104         exit 1
105 esac
106
107 exit $RETVAL
This page took 0.026959 seconds and 2 git commands to generate.