-# Determine whether lockd daemon is required.
-case "$NEED_LOCKD" in
-yes|no) ;;
-*) case `uname -r` in
- '' | [01].* | 2.[0123].* )
- # Older kernels may or may not need a lockd daemon.
- # We must assume they do, unless we can prove otherwise.
- # (A false positive here results only in a harmless message.)
- NEED_LOCKD=yes
- if test -f /proc/ksyms
- then
- grep -q lockdctl /proc/ksyms || NEED_LOCKD=no
- fi
+. /lib/lsb/init-functions
+
+# Exit if required binaries are missing.
+[ -x /sbin/rpc.statd ] || exit 0
+
+#
+# Parse the fstab file, and determine whether we need idmapd and gssd. (The
+# /etc/defaults settings, if any, will override our autodetection.) This code
+# is partially adapted from the mountnfs.sh script in the sysvinit package.
+#
+AUTO_NEED_IDMAPD=no
+AUTO_NEED_GSSD=no
+
+if [ -f /etc/fstab ]; then
+ exec 9<&0 </etc/fstab
+
+ while read DEV MTPT FSTYPE OPTS REST
+ do
+ case $DEV in
+ ''|\#*)
+ continue
+ ;;
+ esac
+ # FSTYPE "nfs" can be NFSv4 now
+ #if [ "$FSTYPE" = "nfs4" ]; then
+ AUTO_NEED_IDMAPD=yes
+ #fi
+ case "$OPTS" in
+
+ sec=krb5|*,sec=krb5|sec=krb5,*|*,sec=krb5i,*|sec=krb5i|*,sec=krb5i|sec=krb5i,*|*,sec=krb5i,*|sec=krb5p|*,sec=krb5p|sec=krb5p,*|*,sec=krb5p,*)
+ AUTO_NEED_GSSD=yes
+ ;;
+ esac
+ done
+
+ exec 0<&9 9<&-
+fi
+
+#
+# We also need idmapd if we run an NFSv4 server. It's fairly difficult
+# to autodetect whether there are NFSv4 exports or not, and idmapd is not a
+# particularily heavy daemon, so we auto-enable it if we find an /etc/exports
+# file. This does not mean that there are NFSv4 or other mounts active (or
+# even that nfs-kernel-server is installed), but it matches what the "start"
+# condition in nfs-kernel-server's init script does, which has a value in
+# itself.
+#
+if [ -f /etc/exports ] && grep -q '^[[:space:]]*[^#]*/' /etc/exports; then
+ AUTO_NEED_IDMAPD=yes
+fi
+
+case "$NEED_STATD" in
+ yes|no)
+ ;;
+ *)
+ NEED_STATD=yes
+ ;;
+esac
+
+case "$NEED_IDMAPD" in
+ yes|no)
+ ;;
+ *)
+ NEED_IDMAPD=$AUTO_NEED_IDMAPD