]> git.pld-linux.org Git - packages/nfs-utils.git/commitdiff
- revert accidental removal
authorJan Rękorajski <baggins@pld-linux.org>
Sat, 2 Oct 2010 23:08:20 +0000 (23:08 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    nfs-utils-heimdal_functions.patch -> 1.8
    nfs-utils-install.patch -> 1.5
    nfs-utils-kerberos-ac.patch -> 1.4
    nfs-utils-no_libgssapi.patch -> 1.7
    nfs-utils-pkgconfig_ac.patch -> 1.5
    nfs-utils-statdpath.patch -> 1.7
    nfs-utils-subsys.patch -> 1.3
    nfs-utils-union-mount.patch -> 1.3
    nfs-utils.spec -> 1.193
    nfs.init -> 1.53
    nfs.sysconfig -> 1.8
    nfsfs.init -> 1.44
    nfsfs.sysconfig -> 1.8
    nfslock.init -> 1.24
    nfslock.sysconfig -> 1.5
    rpcgssd.init -> 1.12
    rpcidmapd.init -> 1.19
    rpcsvcgssd.init -> 1.16

18 files changed:
nfs-utils-heimdal_functions.patch [new file with mode: 0644]
nfs-utils-install.patch [new file with mode: 0644]
nfs-utils-kerberos-ac.patch [new file with mode: 0644]
nfs-utils-no_libgssapi.patch [new file with mode: 0644]
nfs-utils-pkgconfig_ac.patch [new file with mode: 0644]
nfs-utils-statdpath.patch [new file with mode: 0644]
nfs-utils-subsys.patch [new file with mode: 0644]
nfs-utils-union-mount.patch [new file with mode: 0644]
nfs-utils.spec [new file with mode: 0644]
nfs.init [new file with mode: 0644]
nfs.sysconfig [new file with mode: 0644]
nfsfs.init [new file with mode: 0644]
nfsfs.sysconfig [new file with mode: 0644]
nfslock.init [new file with mode: 0644]
nfslock.sysconfig [new file with mode: 0644]
rpcgssd.init [new file with mode: 0644]
rpcidmapd.init [new file with mode: 0644]
rpcsvcgssd.init [new file with mode: 0644]

diff --git a/nfs-utils-heimdal_functions.patch b/nfs-utils-heimdal_functions.patch
new file mode 100644 (file)
index 0000000..595c358
--- /dev/null
@@ -0,0 +1,69 @@
+--- utils/gssd/krb5_util.c     2008-10-17 14:20:09.000000000 +0000
++++ utils/gssd/krb5_util.c     2008-11-22 13:52:42.000000000 +0000
+@@ -115,9 +115,7 @@
+ #include <errno.h>
+ #include <time.h>
+ #include <gssapi/gssapi.h>
+-#ifdef USE_PRIVATE_KRB5_FUNCTIONS
+ #include <gssapi/gssapi_krb5.h>
+-#endif
+ #include <krb5.h>
+ #include <rpc/auth_gss.h>
+@@ -927,9 +927,37 @@ 
+ {
+       krb5_error_code ret;
+       krb5_creds creds;
+-      krb5_cc_cursor cur;
+       int found = 0;
++#ifdef HAVE_HEIMDAL
++      krb5_creds pattern;
++      krb5_const_realm client_realm;
++
++      krb5_cc_clear_mcred(&pattern);
++
++      client_realm = krb5_principal_get_realm (context, principal);
++
++      ret = krb5_make_principal (context, &pattern.server,
++                                 client_realm, KRB5_TGS_NAME, client_realm,
++                                 NULL);
++      if (ret)
++        krb5_err (context, 1, ret, "krb5_make_principal");
++      pattern.client = principal;
++
++      ret = krb5_cc_retrieve_cred (context, ccache, 0, &pattern, &creds);
++      krb5_free_principal (context, pattern.server);
++      if (ret) {
++        if (ret == KRB5_CC_END)
++            return 1;
++        krb5_err (context, 1, ret, "krb5_cc_retrieve_cred");
++      }
++
++      found = creds.times.endtime > time(NULL);
++
++      krb5_free_cred_contents (context, &creds);
++#else
++      krb5_cc_cursor cur;
++
+       ret = krb5_cc_start_seq_get(context, ccache, &cur);
+       if (ret) 
+               return 0;
+@@ -949,6 +977,7 @@ 
+               krb5_free_cred_contents(context, &creds);
+       }
+       krb5_cc_end_seq_get(context, ccache, &cur);
++#endif
+       return found;
+ }
+@@ -995,6 +1024,9 @@ 
+       }
+       krb5_free_principal(context, principal);
+ err_princ:
++#ifdef HAVE_HEIMDAL
++#define KRB5_TC_OPENCLOSE              0x00000001
++#endif
+       krb5_cc_set_flags(context, ccache,  KRB5_TC_OPENCLOSE);
+       krb5_cc_close(context, ccache);
+ err_cache:
diff --git a/nfs-utils-install.patch b/nfs-utils-install.patch
new file mode 100644 (file)
index 0000000..3843098
--- /dev/null
@@ -0,0 +1,11 @@
+--- nfs-utils-1.0.8/Makefile.am~       2006-03-28 02:53:30.000000000 +0200
++++ nfs-utils-1.0.8/Makefile.am        2006-05-08 13:24:32.000000000 +0200
+@@ -46,8 +46,6 @@
+       touch $(DESTDIR)$(statedir)/rmtab; chmod 644 $(DESTDIR)$(statedir)/rmtab
+       mkdir -p $(DESTDIR)$(statedir)/sm $(DESTDIR)$(statedir)/sm.bak
+       touch $(DESTDIR)$(statedir)/state
+-      chmod go-rwx $(DESTDIR)$(statedir)/sm $(DESTDIR)$(statedir)/sm.bak $(DESTDIR)$(statedir)/state
+-      -chown $(statduser) $(DESTDIR)$(statedir)/sm $(DESTDIR)$(statedir)/sm.bak $(DESTDIR)$(statedir)/state
+ uninstall-hook:
+       rm $(DESTDIR)$(statedir)/xtab
diff --git a/nfs-utils-kerberos-ac.patch b/nfs-utils-kerberos-ac.patch
new file mode 100644 (file)
index 0000000..3e5109f
--- /dev/null
@@ -0,0 +1,138 @@
+diff -NaurwB nfs-utils-1.1.2.orig/aclocal/kerberos5.m4 nfs-utils-1.1.2/aclocal/kerberos5.m4
+--- nfs-utils-1.1.2.orig/aclocal/kerberos5.m4  2008-03-14 16:46:29.000000000 +0100
++++ nfs-utils-1.1.2/aclocal/kerberos5.m4       2008-06-12 17:13:51.000000000 +0200
+@@ -1,112 +1,48 @@
+-dnl Checks for Kerberos
+-dnl NOTE: while we intend to do generic gss-api, currently we
+-dnl have a requirement to get an initial Kerberos machine
+-dnl credential.  Thus, the requirement for Kerberos.
+-dnl The Kerberos gssapi library will be dynamically loaded?
+ AC_DEFUN([AC_KERBEROS_V5],[
++  K5CONFIG="krb5-config"
+   AC_MSG_CHECKING(for Kerberos v5)
+-  AC_ARG_WITH(krb5,
+-  [AC_HELP_STRING([--with-krb5=DIR], [use Kerberos v5 installation in DIR])],
++  AC_ARG_WITH(krb5-config,
++  [AC_HELP_STRING([--with-krb5-config=PATH], [Full Path to krb5-config.])],
+   [ case "$withval" in
+     yes|no)
+-       krb5_with=""
++       K5CONFIG="krb5-config"
+        ;;
+     *)
+-       krb5_with="$withval"
++       K5CONFIG="$withval"
+        ;;
+     esac ]
+   )
+-  for dir in $krb5_with /usr /usr/kerberos /usr/local /usr/local/krb5 \
+-           /usr/krb5 /usr/heimdal /usr/local/heimdal /usr/athena ; do
+-    dnl This ugly hack brought on by the split installation of
+-    dnl MIT Kerberos on Fedora Core 1
+-    K5CONFIG=""
+-    if test -f $dir/bin/krb5-config; then
+-      K5CONFIG=$dir/bin/krb5-config
+-    elif test -f "/usr/kerberos/bin/krb5-config"; then
+-      K5CONFIG="/usr/kerberos/bin/krb5-config"
+-    elif test -f "/usr/lib/mit/bin/krb5-config"; then
+-      K5CONFIG="/usr/lib/mit/bin/krb5-config"
+-    fi
+     if test "$K5CONFIG" != ""; then
+       KRBCFLAGS=`$K5CONFIG --cflags`
+       KRBLIBS=`$K5CONFIG --libs gssapi`
+-      K5VERS=`$K5CONFIG --version | head -n 1 | awk '{split($(4),v,"."); if (v@<:@"3"@:>@ == "") v@<:@"3"@:>@ = "0"; print v@<:@"1"@:>@v@<:@"2"@:>@v@<:@"3"@:>@ }'`
+-      AC_DEFINE_UNQUOTED(KRB5_VERSION, $K5VERS, [Define this as the Kerberos version number])
+-      if test -f $dir/include/gssapi/gssapi_krb5.h -a \
+-                \( -f $dir/lib/libgssapi_krb5.a -o \
+-                   -f $dir/lib64/libgssapi_krb5.a -o \
+-                   -f $dir/lib64/libgssapi_krb5.so -o \
+-                   -f $dir/lib/libgssapi_krb5.so \) ; then
++    if $K5CONFIG --version | grep -q -e heimdal; then
++      K5VERS=`$K5CONFIG --version | head -n 1 | cut -f2 -d ' ' | tr -d '.'`
++      AC_DEFINE(HAVE_HEIMDAL, 1, [Define this if you have Heimdal Kerberos libraries])
++      gssapi_lib=gssapi
++      KRBIMPL="heimdal"
++    elif $K5CONFIG --vendor | grep -q -e Massachusetts; then
++      K5VERS=`$K5CONFIG --version | head -n 1 | cut -f4 -d ' ' | tr -d '.'`
+          AC_DEFINE(HAVE_KRB5, 1, [Define this if you have MIT Kerberos libraries])
+-         KRBDIR="$dir"
+-  dnl If we are using MIT K5 1.3.1 and before, we *MUST* use the
+-  dnl private function (gss_krb5_ccache_name) to get correct
+-  dnl behavior of changing the ccache used by gssapi.
+-  dnl Starting in 1.3.2, we *DO NOT* want to use
+-  dnl gss_krb5_ccache_name, instead we want to set KRB5CCNAME
+-  dnl to get gssapi to use a different ccache
+          if test $K5VERS -le 131; then
+            AC_DEFINE(USE_GSS_KRB5_CCACHE_NAME, 1, [Define this if the private function, gss_krb5_cache_name, must be used to tell the Kerberos library which credentials cache to use. Otherwise, this is done by setting the KRB5CCNAME environment variable])
+          fi
+          gssapi_lib=gssapi_krb5
+-         break
+-      dnl The following ugly hack brought on by the split installation
+-      dnl of Heimdal Kerberos on SuSe
+-      elif test \( -f $dir/include/heim_err.h -o\
+-                       -f $dir/include/heimdal/heim_err.h \) -a \
+-                -f $dir/lib/libroken.a; then
+-         AC_DEFINE(HAVE_HEIMDAL, 1, [Define this if you have Heimdal Kerberos libraries])
+-         KRBDIR="$dir"
+-         gssapi_lib=gssapi
+-        break
+-      fi
+-    fi
+-  done
+-  dnl We didn't find a usable Kerberos environment
+-  if test "x$KRBDIR" = "x"; then
+-    if test "x$krb5_with" = "x"; then
+-      AC_MSG_ERROR(Kerberos v5 with GSS support not found: consider --disable-gss or --with-krb5=)
++      KRBIMPL="mit-krb5"
+     else
+-      AC_MSG_ERROR(Kerberos v5 with GSS support not found at $krb5_with)
+-    fi
++      AC_MSG_ERROR(Unknown Kerberos 5 Implementation. Is neither heimdal or mit-krb5.)
++      KRBIMPL="unknown"
+   fi
+-  AC_MSG_RESULT($KRBDIR)
+-
+-  dnl Check if -rpath=$(KRBDIR)/lib is needed
+-  echo "The current KRBDIR is $KRBDIR"
+-  if test "$KRBDIR/lib" = "/lib" -o "$KRBDIR/lib" = "/usr/lib" \
+-       -o "$KRBDIR/lib" = "//lib" -o "$KRBDIR/lib" = "/usr//lib" ; then
+-    KRBLDFLAGS="";
+-  elif /sbin/ldconfig -p | grep > /dev/null "=> $KRBDIR/lib/"; then
+-    KRBLDFLAGS="";
+-  else
+-    KRBLDFLAGS="-Wl,-rpath=$KRBDIR/lib"
++    AC_DEFINE_UNQUOTED(KRB5_VERSION, $K5VERS, [Define this as the Kerberos version number])
+   fi
++  AC_MSG_RESULT($KRBIMPL)
+-  dnl Now check for functions within gssapi library
+-  AC_CHECK_LIB($gssapi_lib, gss_krb5_export_lucid_sec_context,
+-    AC_DEFINE(HAVE_LUCID_CONTEXT_SUPPORT, 1, [Define this if the Kerberos GSS library supports gss_krb5_export_lucid_sec_context]), ,$KRBLIBS)
+-  AC_CHECK_LIB($gssapi_lib, gss_krb5_set_allowable_enctypes,
+-    AC_DEFINE(HAVE_SET_ALLOWABLE_ENCTYPES, 1, [Define this if the Kerberos GSS library supports gss_krb5_set_allowable_enctypes]), ,$KRBLIBS)
+-  AC_CHECK_LIB($gssapi_lib, gss_krb5_ccache_name,
+-    AC_DEFINE(HAVE_GSS_KRB5_CCACHE_NAME, 1, [Define this if the Kerberos GSS library supports gss_krb5_ccache_name]), ,$KRBLIBS)
+-
+-  dnl Check for newer error message facility
+-  AC_CHECK_LIB($gssapi_lib, krb5_get_error_message,
+-    AC_DEFINE(HAVE_KRB5_GET_ERROR_MESSAGE, 1, [Define this if the function krb5_get_error_message is available]), ,$KRBLIBS)
++  AC_CHECK_LIB($gssapi_lib, gss_krb5_export_lucid_sec_context, AC_DEFINE(HAVE_LUCID_CONTEXT_SUPPORT, 1, [Define this if the Kerberos GSS library supports gss_krb5_export_lucid_sec_context]), ,$KRBLIBS)
++  AC_CHECK_LIB($gssapi_lib, gss_krb5_set_allowable_enctypes, AC_DEFINE(HAVE_SET_ALLOWABLE_ENCTYPES, 1, [Define this if the Kerberos GSS library supports gss_krb5_set_allowable_enctypes]), ,$KRBLIBS)
++  AC_CHECK_LIB($gssapi_lib, gss_krb5_ccache_name, AC_DEFINE(HAVE_GSS_KRB5_CCACHE_NAME, 1, [Define this if the Kerberos GSS library supports gss_krb5_ccache_name]), ,$KRBLIBS)
++  AC_CHECK_LIB($gssapi_lib, krb5_get_error_message, AC_DEFINE(HAVE_KRB5_GET_ERROR_MESSAGE, 1, [Define this if the function krb5_get_error_message is available]), ,$KRBLIBS)
++  AC_CHECK_LIB($gssapi_lib, krb5_get_init_creds_opt_set_addressless, AC_DEFINE(HAVE_KRB5_GET_INIT_CREDS_OPT_SET_ADDRESSLESS, 1, [Define this if the function krb5_get_init_creds_opt_set_addressless is available]), ,$KRBLIBS)
+-  dnl Check for function to specify addressless tickets
+-  AC_CHECK_LIB($gssapi_lib, krb5_get_init_creds_opt_set_addressless,
+-    AC_DEFINE(HAVE_KRB5_GET_INIT_CREDS_OPT_SET_ADDRESSLESS, 1, [Define this if the function krb5_get_init_creds_opt_set_addressless is available]), ,$KRBLIBS)
+-
+-  dnl If they specified a directory and it didn't work, give them a warning
+-  if test "x$krb5_with" != "x" -a "$krb5_with" != "$KRBDIR"; then
+-    AC_MSG_WARN(Using $KRBDIR instead of requested value of $krb5_with for Kerberos!)
+-  fi
+-
+-  AC_SUBST([KRBDIR])
+   AC_SUBST([KRBLIBS])
+   AC_SUBST([KRBCFLAGS])
+   AC_SUBST([KRBLDFLAGS])
diff --git a/nfs-utils-no_libgssapi.patch b/nfs-utils-no_libgssapi.patch
new file mode 100644 (file)
index 0000000..68a2b0e
--- /dev/null
@@ -0,0 +1,64 @@
+Index: nfs-utils-1.1.0/utils/gssd/context_lucid.c
+===================================================================
+--- nfs-utils-1.1.0.orig/utils/gssd/context_lucid.c
++++ nfs-utils-1.1.0/utils/gssd/context_lucid.c
+@@ -48,8 +48,10 @@
+ #include "context.h"
+ #ifndef OM_uint64
++#ifndef GSSAPI_GSSAPI_H_
+ typedef uint64_t OM_uint64;
+ #endif
++#endif
+ static int
+ write_lucid_keyblock(char **p, char *end, gss_krb5_lucid_key_t *key)
+@@ -171,10 +173,10 @@ serialize_krb5_ctx(gss_ctx_id_t ctx, gss
+       int retcode = 0;
+       printerr(2, "DEBUG: %s: lucid version!\n", __FUNCTION__);
+-      maj_stat = gss_export_lucid_sec_context(&min_stat, &ctx,
++      maj_stat = gss_krb5_export_lucid_sec_context(&min_stat, &ctx,
+                                               1, &return_ctx);
+       if (maj_stat != GSS_S_COMPLETE) {
+-              pgsserr("gss_export_lucid_sec_context",
++              pgsserr("gss_krb5_export_lucid_sec_context",
+                       maj_stat, min_stat, &krb5oid);
+               goto out_err;
+       }
+@@ -198,9 +200,9 @@ serialize_krb5_ctx(gss_ctx_id_t ctx, gss
+       else
+               retcode = prepare_krb5_rfc_cfx_buffer(lctx, buf);
+-      maj_stat = gss_free_lucid_sec_context(&min_stat, ctx, return_ctx);
++      maj_stat = gss_krb5_free_lucid_sec_context(&min_stat, return_ctx);
+       if (maj_stat != GSS_S_COMPLETE) {
+-              pgsserr("gss_export_lucid_sec_context",
++              pgsserr("gss_krb5_free_lucid_sec_context",
+                       maj_stat, min_stat, &krb5oid);
+               printerr(0, "WARN: failed to free lucid sec context\n");
+       }
+Index: nfs-utils-1.1.0/utils/gssd/krb5_util.c
+===================================================================
+--- nfs-utils-1.1.0.orig/utils/gssd/krb5_util.c
++++ nfs-utils-1.1.0/utils/gssd/krb5_util.c
+@@ -1317,13 +1317,13 @@ limit_krb5_enctypes(struct rpc_gss_sec *
+        * list of supported enctypes, use local default here.
+        */
+       if (krb5_enctypes == NULL)
+-              maj_stat = gss_set_allowable_enctypes(&min_stat, credh,
+-                                      &krb5oid, num_enctypes, enctypes);
++              maj_stat = gss_krb5_set_allowable_enctypes(&min_stat, credh,
++                                      num_enctypes, enctypes);
+       else
+-              maj_stat = gss_set_allowable_enctypes(&min_stat, credh,
+-                                      &krb5oid, num_krb5_enctypes, krb5_enctypes);
++              maj_stat = gss_krb5_set_allowable_enctypes(&min_stat, credh,
++                                      num_krb5_enctypes, krb5_enctypes);
+       if (maj_stat != GSS_S_COMPLETE) {
+-              pgsserr("gss_set_allowable_enctypes",
++              pgsserr("gss_krb5_set_allowable_enctypes",
+                       maj_stat, min_stat, &krb5oid);
+               gss_release_cred(&min_stat, &credh);
+               return -1;
diff --git a/nfs-utils-pkgconfig_ac.patch b/nfs-utils-pkgconfig_ac.patch
new file mode 100644 (file)
index 0000000..4a44568
--- /dev/null
@@ -0,0 +1,12 @@
+diff -ur nfs-utils-1.2.0/aclocal/rpcsec_vers.m4 nfs-utils-1.2.0-pkg/aclocal/rpcsec_vers.m4
+--- nfs-utils-1.2.0/aclocal/rpcsec_vers.m4     2009-06-02 16:43:05.000000000 +0200
++++ nfs-utils-1.2.0-pkg/aclocal/rpcsec_vers.m4 2009-06-30 15:48:36.603210573 +0200
+@@ -1,7 +1,7 @@
+ dnl Checks librpcsec version
+ AC_DEFUN([AC_RPCSEC_VERSION], [
+-  PKG_CHECK_MODULES([GSSGLUE], [libgssglue >= 0.1])
++  PKG_CHECK_MODULES([GSSGLUE], [libgssglue >= 0.1], , [PKG_CHECK_MODULES([GSSGLUE], [heimdal-gssapi])])
+   dnl TI-RPC replaces librpcsecgss
+   if test "$enable_tirpc" = no; then
diff --git a/nfs-utils-statdpath.patch b/nfs-utils-statdpath.patch
new file mode 100644 (file)
index 0000000..ec70803
--- /dev/null
@@ -0,0 +1,82 @@
+--- nfs-utils-1.1.4/Makefile.am~       2009-03-05 12:29:46.000000000 +0100
++++ nfs-utils-1.1.4/Makefile.am        2009-03-05 12:44:46.000000000 +0100
+@@ -54,8 +54,8 @@
+       touch $(DESTDIR)$(statedir)/xtab; chmod 644 $(DESTDIR)$(statedir)/xtab
+       touch $(DESTDIR)$(statedir)/etab; chmod 644 $(DESTDIR)$(statedir)/etab
+       touch $(DESTDIR)$(statedir)/rmtab; chmod 644 $(DESTDIR)$(statedir)/rmtab
+-      mkdir -p $(DESTDIR)$(statedir)/sm $(DESTDIR)$(statedir)/sm.bak
+-      touch $(DESTDIR)$(statedir)/state
++      mkdir -p $(DESTDIR)$(statedir)/statd/sm $(DESTDIR)$(statedir)/statd/sm.bak
++      touch $(DESTDIR)$(statedir)/statd/state
+ uninstall-hook:
+       rm $(DESTDIR)$(statedir)/xtab
+--- nfs-utils-1.2.2/support/nsm/file.c~        2010-02-18 13:35:00.000000000 +0100
++++ nfs-utils-1.2.2/support/nsm/file.c 2010-02-24 17:27:51.635249268 +0100
+@@ -95,8 +95,8 @@
+ /*
+  * Some distributions place statd's files in a subdirectory
+  */
+-#define NSM_PATH_EXTENSION
+-/* #define NSM_PATH_EXTENSION "/statd" */
++/* #define NSM_PATH_EXTENSION */
++#define NSM_PATH_EXTENSION    "/statd"
+ #define NSM_DEFAULT_STATEDIR          NFS_STATEDIR NSM_PATH_EXTENSION
+--- nfs-utils-1.2.2/utils/statd/statd.man~     2010-02-18 13:35:00.000000000 +0100
++++ nfs-utils-1.2.2/utils/statd/statd.man      2010-02-24 17:30:05.097124679 +0100
+@@ -232,7 +232,7 @@
+ If this option is not specified,
+ .B rpc.statd
+ uses
+-.I /var/lib/nfs
++.I /var/lib/nfs/statd
+ by default.
+ .IP
+ After starting,
+@@ -365,13 +365,13 @@
+ will operate.
+ .SH FILES
+ .TP 2.5i
+-.I /var/lib/nfs/sm
++.I /var/lib/nfs/statd/sm
+ directory containing monitor list
+ .TP 2.5i
+-.I /var/lib/nfs/sm.bak
++.I /var/lib/nfs/statd/sm.bak
+ directory containing notify list
+ .TP 2.5i
+-.I /var/lib/nfs/state
++.I /var/lib/nfs/statd/state
+ NSM state number for this host
+ .TP 2.5i
+ .I /var/run/run.statd.pid
+--- nfs-utils-1.2.2/utils/statd/sm-notify.man~ 2010-02-18 13:35:00.000000000 +0100
++++ nfs-utils-1.2.2/utils/statd/sm-notify.man  2010-02-24 17:30:27.917124808 +0100
+@@ -186,7 +186,7 @@
+ If this option is not specified,
+ .B sm-notify
+ uses
+-.I /var/lib/nfs
++.I /var/lib/nfs/statd
+ by default.
+ .IP
+ After starting,
+@@ -287,13 +287,13 @@
+ command supports sending notification only via datagram transport protocols.
+ .SH FILES
+ .TP 2.5i
+-.I /var/lib/nfs/sm
++.I /var/lib/nfs/statd/sm
+ directory containing monitor list
+ .TP 2.5i
+-.I /var/lib/nfs/sm.bak
++.I /var/lib/nfs/statd/sm.bak
+ directory containing notify list
+ .TP 2.5i
+-.I /var/lib/nfs/state
++.I /var/lib/nfs/statd/state
+ NSM state number for this host
+ .TP 2.5i
+ .I /proc/sys/fs/nfs/nsm_local_state
diff --git a/nfs-utils-subsys.patch b/nfs-utils-subsys.patch
new file mode 100644 (file)
index 0000000..8a22508
--- /dev/null
@@ -0,0 +1,20 @@
+--- nfs-utils-1.0.12/utils/mount/nfs4mount.c~  2007-03-31 22:46:53.438974675 +0200
++++ nfs-utils-1.0.12/utils/mount/nfs4mount.c   2007-03-31 22:52:34.162391396 +0200
+@@ -52,7 +52,7 @@
+ extern int verbose;
+ extern int sloppy;
+-char *IDMAPLCK = DEFAULT_DIR "/rpcidmapd";
++char *IDMAPLCK = DEFAULT_DIR "/idmapd";
+ #define idmapd_check() do { \
+       if (access(IDMAPLCK, F_OK)) { \
+               printf(_("Warning: rpc.idmapd appears not to be running.\n" \
+@@ -60,7 +60,7 @@
+       } \
+ } while(0);
+-char *GSSDLCK = DEFAULT_DIR "/rpcgssd";
++char *GSSDLCK = DEFAULT_DIR "/gssd";
+ #define gssd_check() do { \
+               if (access(GSSDLCK, F_OK)) { \
+                       printf(_("Warning: rpc.gssd appears not to be running.\n")); \
diff --git a/nfs-utils-union-mount.patch b/nfs-utils-union-mount.patch
new file mode 100644 (file)
index 0000000..ed6f45d
--- /dev/null
@@ -0,0 +1,22 @@
+--- nfs-utils-1.1.5/utils/mount/mount.c~       2009-03-05 12:42:56.000000000 +0100
++++ nfs-utils-1.1.5/utils/mount/mount.c        2009-05-20 16:44:08.581980119 +0200
+@@ -94,6 +94,7 @@
+   { "sync",     0, 0, MS_SYNCHRONOUS},  /* synchronous I/O */
+   { "async",    0, 1, MS_SYNCHRONOUS},  /* asynchronous I/O */
+   { "dirsync",  0, 0, MS_DIRSYNC},      /* synchronous directory modifications */
++  { "union",  0, 0, MS_UNION  },      /* Union mount */
+   { "remount",  0, 0, MS_REMOUNT},      /* Alter flags of mounted FS */
+   { "bind",     0, 0, MS_BIND   },      /* Remount part of tree elsewhere */
+   { "rbind",    0, 0, MS_BIND|MS_REC }, /* Idem, plus mounted subtrees */
+--- nfs-utils-1.1.5/utils/mount/mount_constants.h~     2009-03-05 12:42:56.000000000 +0100
++++ nfs-utils-1.1.5/utils/mount/mount_constants.h      2009-05-20 16:42:50.292974566 +0200
+@@ -21,6 +21,9 @@
+ if we have a stack or plain mount - mount atop of it, forming a stack. */
+ #define       MS_OVER         0x200   /* 512 */
+ #endif
++#ifndef MS_UNION
++#define MS_UNION      0x100   /* 256: Mount on top of a union */
++#endif
+ #ifndef MS_NOATIME
+ #define MS_NOATIME    0x400   /* 1024: Do not update access times. */
+ #endif
diff --git a/nfs-utils.spec b/nfs-utils.spec
new file mode 100644 (file)
index 0000000..6227cad
--- /dev/null
@@ -0,0 +1,411 @@
+# TODO
+# - should unmount /proc/fs/nfsd and /var/lib/nfs/rpc_pipefs at package
+#      uninstall (or in service nfs stop)
+#
+# Conditional build:
+%bcond_with    krb5            # build with MIT Kerberos (+libgssglue) instead of Heimdal
+%bcond_without tirpc           # use librpcsecgss instead of libtirpc
+#
+Summary:       Kernel NFS server
+Summary(pl.UTF-8):     Działający na poziomie jądra serwer NFS
+Summary(pt_BR.UTF-8):  Os utilitários para o cliente e servidor NFS do Linux
+Summary(ru.UTF-8):     Утилиты для NFS и демоны поддержки для NFS-сервера ядра
+Summary(uk.UTF-8):     Утиліти для NFS та демони підтримки для NFS-сервера ядра
+Name:          nfs-utils
+Version:       1.2.3
+Release:       2
+License:       GPL v2
+Group:         Networking/Daemons
+Source0:       http://www.kernel.org/pub/linux/utils/nfs/%{name}-%{version}.tar.bz2
+# Source0-md5: 1131dc5f27c4f3905a6e7ee0d594fd4d
+#Source1:      ftp://ftp.linuxnfs.sourceforge.org/pub/nfs/nfs.doc.tar.gz
+Source1:       nfs.doc.tar.gz
+# Source1-md5: ae7db9c61c5ad04f83bb99e5caed73da
+Source2:       nfs.init
+Source3:       nfslock.init
+Source4:       nfsfs.init
+Source5:       rpcidmapd.init
+Source6:       rpcgssd.init
+Source7:       rpcsvcgssd.init
+Source8:       nfs.sysconfig
+Source9:       nfslock.sysconfig
+Source10:      nfsfs.sysconfig
+Patch0:                %{name}-install.patch
+Patch1:                %{name}-statdpath.patch
+Patch2:                %{name}-subsys.patch
+Patch3:                %{name}-union-mount.patch
+Patch4:                %{name}-kerberos-ac.patch
+Patch5:                %{name}-no_libgssapi.patch
+Patch6:                %{name}-pkgconfig_ac.patch
+Patch7:                %{name}-heimdal_functions.patch
+URL:           http://nfs.sourceforge.net/
+BuildRequires: autoconf >= 2.59
+BuildRequires: automake
+BuildRequires: cpp
+BuildRequires: libblkid-devel
+BuildRequires: libcap-devel
+BuildRequires: libevent-devel >= 1.2
+BuildRequires: libnfsidmap-devel >= 0.21-3
+BuildRequires: libtool
+BuildRequires: libwrap-devel
+BuildRequires: pkgconfig
+%if %{with tirpc}
+BuildRequires: libtirpc-devel >= 1:0.1.10-4
+%else
+BuildRequires: librpcsecgss-devel >= 0.16
+%endif
+%if %{with krb5}
+BuildRequires: krb5-devel >= 1.6
+BuildRequires: libgssglue-devel >= 0.1
+%else
+BuildRequires: heimdal-devel >= 1.0
+%endif
+# lucid context fields mismatch with current version of spkm3.h
+BuildConflicts:        gss_mech_spkm3-devel
+Requires(post):        fileutils
+Requires(post):        sed >= 4.0
+Requires(post,preun):  /sbin/chkconfig
+Requires:      %{name}-common = %{version}-%{release}
+Requires:      rc-scripts >= 0.4.1.5
+Requires:      rpcbind >= 0.1.7
+Requires:      setup >= 2.4.6-7
+Provides:      nfsdaemon
+Obsoletes:     knfsd
+Obsoletes:     nfs-server
+Obsoletes:     nfsdaemon
+Conflicts:     kernel < 2.2.5
+Conflicts:     krb5-common < 1.7
+ExcludeArch:   armv4l
+BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%description
+This is the *new* kernel NFS server and related tools. It provides a
+much higher level of performance than the traditional Linux user-land
+NFS server.
+
+%description -l pl.UTF-8
+To jest *nowy* działający na poziomie jądra serwer NFS oraz związane z
+nim narzędzia. Serwer ten dostarcza znacznie większą wydajność niż
+tradycyjny, działający na poziomie użytkownika serwer NFS.
+
+%description -l pt_BR.UTF-8
+O pacote nfs-utils provê os utilitários para o cliente e servidor NFS
+do Linux.
+
+%description -l ru.UTF-8
+Пакет nfs-utils предоставляет демона для NFS-сервера, включенного в
+ядро, и сопутствующие утилиты, которые обеспечивают намного большую
+производительность, чем традиционные Linux NFS-сервера, используемые
+большинством пользователей.
+
+%description -l uk.UTF-8
+Пакет nfs-utils надає демона для NFS-сервера, вбудованого в ядро, та
+супутні утиліти, які забезпечують набагато більшу продуктивність, ніж
+традиційні Linux NFS-сервери, які використовує більшість користувачів.
+
+%package clients
+Summary:       Clients for connecting to a remote NFS server
+Summary(pl.UTF-8):     Klienci do łączenia się ze zdalnym serwerem NFS
+Group:         Networking
+Requires(post,preun):  /sbin/chkconfig
+Requires:      %{name}-common = %{version}-%{release}
+Requires:      psmisc
+Requires:      rc-scripts
+Provides:      nfs-server-clients
+Provides:      nfsclient
+Obsoletes:     knfsd-clients
+Obsoletes:     nfs-server-clients
+Obsoletes:     nfsclient
+Conflicts:     krb5-common < 1.7
+
+%description clients
+The nfs-server-clients package contains the showmount program.
+Showmount queries the mount daemon on a remote host for information
+about the NFS (Network File System) server on the remote host. For
+example, showmount can display the clients which are mounted on that
+host. This package is not needed to mount NFS volumes.
+
+%description clients -l pl.UTF-8
+Pakiet zawiera program showmount służący do odpytywania serwera NFS.
+Showmount pyta demona na zdalnej maszynie o informacje NFS na zdalnym
+hoście. Na przykład, showmount potrafi pokazać klientów, którzy są
+zamountowani na tym serwerze. Ten pakiet nie jest konieczny do
+zamountowania zasobów NFS.
+
+%package lock
+Summary:       Programs for NFS file locking
+Summary(pl.UTF-8):     Programy do obsługi blokowania plików poprzez NFS (lock)
+Group:         Networking
+Requires(post,preun):  /sbin/chkconfig
+Requires:      rc-scripts
+Requires:      rpcbind >= 0.1.7
+Provides:      group(rpcstatd)
+Provides:      nfslockd
+Provides:      user(rpcstatd)
+Obsoletes:     knfsd-lock
+Obsoletes:     nfslockd
+
+%description lock
+The nfs-lock pacage contains programs which support the NFS file lock.
+Install nfs-lock if you want to use file lock over NFS.
+
+%description lock -l pl.UTF-8
+Ten pakiet zawiera programy umożliwiające wykonywanie blokowania
+plików (file locking) poprzez NFS.
+
+%package common
+Summary:       Common programs for NFS
+Summary(pl.UTF-8):     Wspólne programy do obsługi NFS
+Group:         Networking
+Requires:      libnfsidmap >= 0.21-3
+Conflicts:     mount < 2.13-0.pre7.1
+
+%description common
+Common programs for NFS.
+
+%description common -l pl.UTF-8
+Wspólne programy do obsługi NFS.
+
+%prep
+%setup -q -a1
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%if %{without krb5}
+%patch5 -p1
+%patch6 -p1
+%patch7 -p0
+%endif
+
+%build
+%{__libtoolize}
+%{__aclocal} -I aclocal
+%{__autoconf}
+%{__autoheader}
+%{__automake}
+%configure \
+       --enable-nfsv3 \
+       --enable-nfsv4 \
+       --enable-gss \
+       --enable-mount \
+       --%{?with_tirpc:en}%{!?with_tirpc:dis}able-tirpc \
+       --enable-ipv6 \
+       --with-statedir=/var/lib/nfs \
+       --with-statduser=rpcstatd \
+       --with-start-statd=%{_sbindir}/start-statd \
+       --with-tcp-wrappers \
+       --with-krb5-config=%{_bindir}/krb5-config
+
+%{__make} all
+
+%install
+rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT%{_sysconfdir}/{rc.d/init.d,sysconfig} \
+       $RPM_BUILD_ROOT%{_var}/lib/nfs/{rpc_pipefs,v4recovery}
+
+%{__make} install \
+       DESTDIR=$RPM_BUILD_ROOT
+
+cat >$RPM_BUILD_ROOT%{_sbindir}/start-statd <<EOF
+#!/bin/sh
+# mount.nfs calls this script when mounting a filesystem with locking
+# enabled, but when statd does not seem to be running (based on
+# /var/run/rpc.statd.pid).
+exec /sbin/service nfslock start
+EOF
+
+sed -e "s|#!/bin/bash|#!/bin/sh|" utils/gssd/gss_destroy_creds > $RPM_BUILD_ROOT%{_sbindir}/gss_destroy_creds
+
+mv $RPM_BUILD_ROOT%{_sbindir}/rpcdebug $RPM_BUILD_ROOT/sbin
+
+install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/nfs
+install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/nfslock
+install %{SOURCE4} $RPM_BUILD_ROOT/etc/rc.d/init.d/nfsfs
+install %{SOURCE5} $RPM_BUILD_ROOT/etc/rc.d/init.d/idmapd
+install %{SOURCE6} $RPM_BUILD_ROOT/etc/rc.d/init.d/gssd
+install %{SOURCE7} $RPM_BUILD_ROOT/etc/rc.d/init.d/svcgssd
+install %{SOURCE8} $RPM_BUILD_ROOT/etc/sysconfig/nfsd
+install %{SOURCE9} $RPM_BUILD_ROOT/etc/sysconfig/nfslock
+install %{SOURCE10} $RPM_BUILD_ROOT/etc/sysconfig/nfsfs
+
+> $RPM_BUILD_ROOT%{_var}/lib/nfs/rmtab
+> $RPM_BUILD_ROOT%{_sysconfdir}/exports
+
+rm $RPM_BUILD_ROOT%{_mandir}/man8/rpc.{mountd,nfsd,statd,sm-notify}.8
+rm $RPM_BUILD_ROOT%{_mandir}/man8/rpc.{svcgssd,gssd,idmapd}.8
+echo ".so mountd.8"  >         $RPM_BUILD_ROOT%{_mandir}/man8/rpc.mountd.8
+echo ".so nfsd.8"    > $RPM_BUILD_ROOT%{_mandir}/man8/rpc.nfsd.8
+echo ".so statd.8"   > $RPM_BUILD_ROOT%{_mandir}/man8/rpc.statd.8
+echo ".so sm-notify.8" > $RPM_BUILD_ROOT%{_mandir}/man8/rpc.sm-notify.8
+echo ".so gssd.8"    > $RPM_BUILD_ROOT%{_mandir}/man8/rpc.gssd.8
+echo ".so idmapd.8"  > $RPM_BUILD_ROOT%{_mandir}/man8/rpc.idmapd.8
+echo ".so svcgssd.8" > $RPM_BUILD_ROOT%{_mandir}/man8/rpc.svcgssd.8
+
+touch $RPM_BUILD_ROOT/var/lib/nfs/xtab
+
+ln -sf /bin/true $RPM_BUILD_ROOT/sbin/fsck.nfs
+
+cp -a nfs html
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+/sbin/chkconfig --add nfs
+%service nfs restart "NFS daemon"
+/sbin/chkconfig --add svcgssd
+%service svcgssd restart "RPC svcgssd"
+
+%preun
+if [ "$1" = "0" ]; then
+       %service nfs stop
+       /sbin/chkconfig --del nfs
+       %service svcgssd stop
+       /sbin/chkconfig --del svcgssd
+fi
+
+%post clients
+/sbin/chkconfig --add nfsfs
+%service nfsfs restart
+/sbin/chkconfig --add gssd
+%service gssd restart "RPC gssd"
+
+%preun clients
+if [ "$1" = "0" ]; then
+       %service nfsfs stop
+       /sbin/chkconfig --del nfsfs
+       %service gssd stop
+       /sbin/chkconfig --del gssd
+fi
+
+%pre lock
+%groupadd -g 191 rpcstatd
+%useradd -u 191 -d /var/lib/nfs/statd -s /bin/false -c "RPC statd user" -g rpcstatd rpcstatd
+
+%post lock
+/sbin/chkconfig --add nfslock
+%service nfslock restart "RPC statd"
+
+%preun lock
+if [ "$1" = "0" ]; then
+       %service nfslock stop
+       /sbin/chkconfig --del nfslock
+fi
+
+%postun lock
+if [ "$1" = "0" ]; then
+       %userremove rpcstatd
+       %groupremove rpcstatd
+fi
+
+%post common
+/sbin/chkconfig --add idmapd
+%service idmapd restart "RPC idmapd"
+
+%preun common
+if [ "$1" = "0" ]; then
+       %service idmapd stop
+       /sbin/chkconfig --del idmapd
+fi
+
+%triggerpostun -- %{name} < 1.1.0-0.rc1.1
+/sbin/chkconfig nfs reset
+/sbin/chkconfig svcgssd reset
+
+%triggerpostun lock -- %{name}-lock < 1.1.0-0.rc1.1
+/sbin/chkconfig nfslock reset
+
+%triggerpostun clients -- %{name}-clients < 1.1.0-0.rc1.1
+if [ -f /etc/sysconfig/nfsclient.rpmsave ]; then
+       mv -f /etc/sysconfig/nfsfs{,.rpmnew}
+       mv -f /etc/sysconfig/nfsclient.rpmsave /etc/sysconfig/nfsfs
+fi
+/sbin/chkconfig nfsfs reset
+/sbin/chkconfig gssd reset
+
+%triggerpostun common -- %{name}-common < 1.1.0-0.rc1.1
+/sbin/chkconfig idmapd reset
+
+%files
+%defattr(644,root,root,755)
+%doc ChangeLog README html
+%attr(755,root,root) /sbin/rpcdebug
+%attr(755,root,root) /sbin/fsck.nfs
+%attr(755,root,root) %{_sbindir}/exportfs
+%attr(755,root,root) %{_sbindir}/rpc.mountd
+%attr(755,root,root) %{_sbindir}/rpc.nfsd
+%attr(755,root,root) %{_sbindir}/rpc.svcgssd
+%attr(755,root,root) %{_sbindir}/nfsstat
+
+%attr(754,root,root) /etc/rc.d/init.d/nfs
+%attr(754,root,root) /etc/rc.d/init.d/svcgssd
+
+%attr(664,root,fileshare) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/exports
+%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/nfsd
+%config(noreplace) %verify(not md5 mtime size) %{_var}/lib/nfs/xtab
+%config(noreplace) %verify(not md5 mtime size) %{_var}/lib/nfs/etab
+%config(noreplace) %verify(not md5 mtime size) %{_var}/lib/nfs/rmtab
+
+%{_mandir}/man5/exports.5*
+%{_mandir}/man7/nfsd.7*
+%{_mandir}/man8/exportfs.8*
+%{_mandir}/man8/mountd.8*
+%{_mandir}/man8/nfsd.8*
+%{_mandir}/man8/nfsstat.8*
+%{_mandir}/man8/rpc.mountd.8*
+%{_mandir}/man8/rpc.nfsd.8*
+%{_mandir}/man8/rpc.svcgssd.8*
+%{_mandir}/man8/rpcdebug.8*
+%{_mandir}/man8/svcgssd.8*
+
+%files lock
+%defattr(644,root,root,755)
+%attr(700,rpcstatd,rpcstatd) %dir %{_var}/lib/nfs/statd
+%attr(700,rpcstatd,rpcstatd) %dir %{_var}/lib/nfs/statd/sm
+%attr(700,rpcstatd,rpcstatd) %dir %{_var}/lib/nfs/statd/sm.bak
+%attr(600,rpcstatd,rpcstatd) %config(noreplace) %verify(not md5 mtime size) %{_var}/lib/nfs/statd/state
+%attr(755,root,root) %{_sbindir}/rpc.statd
+%attr(755,root,root) %{_sbindir}/sm-notify
+%attr(755,root,root) %{_sbindir}/start-statd
+%attr(754,root,root) /etc/rc.d/init.d/nfslock
+%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/nfslock
+%{_mandir}/man8/rpc.sm-notify.8*
+%{_mandir}/man8/rpc.statd.8*
+%{_mandir}/man8/sm-notify.8*
+%{_mandir}/man8/statd.8*
+
+%files clients
+%defattr(644,root,root,755)
+%attr(754,root,root) /etc/rc.d/init.d/nfsfs
+%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/nfsfs
+%attr(4755,root,root) /sbin/mount.nfs
+%attr(4755,root,root) /sbin/umount.nfs
+%attr(4755,root,root) /sbin/mount.nfs4
+%attr(4755,root,root) /sbin/umount.nfs4
+%attr(755,root,root) %{_sbindir}/mountstats
+%attr(755,root,root) %{_sbindir}/nfsiostat
+%attr(755,root,root) %{_sbindir}/showmount
+%attr(755,root,root) %{_sbindir}/rpc.gssd
+%attr(754,root,root) /etc/rc.d/init.d/gssd
+%{_mandir}/man8/gssd.8*
+%{_mandir}/man8/mount.nfs.8*
+%{_mandir}/man8/mountstats.8*
+%{_mandir}/man8/nfsiostat.8*
+%{_mandir}/man8/rpc.gssd.8*
+%{_mandir}/man8/showmount.8*
+%{_mandir}/man8/umount.nfs.8*
+
+%files common
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_sbindir}/gss_clnt_send_err
+%attr(755,root,root) %{_sbindir}/gss_destroy_creds
+%attr(755,root,root) %{_sbindir}/rpc.idmapd
+%attr(754,root,root) /etc/rc.d/init.d/idmapd
+%dir %{_var}/lib/nfs
+%dir %{_var}/lib/nfs/rpc_pipefs
+%dir %{_var}/lib/nfs/v4recovery
+%{_mandir}/man5/nfs.5*
+%{_mandir}/man8/idmapd.8*
+%{_mandir}/man8/rpc.idmapd.8*
diff --git a/nfs.init b/nfs.init
new file mode 100644 (file)
index 0000000..08d2893
--- /dev/null
+++ b/nfs.init
@@ -0,0 +1,160 @@
+#!/bin/sh
+#
+# nfs          This shell script takes care of starting and stopping
+#              the NFS services.
+#
+# chkconfig:   345 13 81
+# description: NFS is a popular protocol for file sharing across TCP/IP \
+#              networks. This service provides NFS server functionality, \
+#              which is configured via the /etc/exports file.
+# probe:       true
+
+# Source function library
+. /etc/rc.d/init.d/functions
+
+# Get network config
+. /etc/sysconfig/network
+
+# Get service configs
+[ -f /etc/sysconfig/nfslock ] && . /etc/sysconfig/nfslock
+[ -f /etc/sysconfig/nfsd ] && . /etc/sysconfig/nfsd
+
+[ -n "$NFSv2" ] || NFSv2="yes"
+[ -n "$NFSv3" ] || NFSv3="yes"
+[ -n "$NFSv4" ] || NFSv4="yes"
+
+# Check that networking is up.
+if is_yes "${NETWORKING}"; then
+       if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
+               msg_network_down "NFS daemon"
+               exit 1
+       fi
+else
+       exit 0
+fi
+
+if [ "$1" != "stop" ]; then
+       check_portmapper || { nls "Error: portmap isn't running" && exit 0; }
+fi
+
+start() {
+       # Check if the service is already running?
+       if [ -f /var/lock/subsys/nfs ]; then
+               msg_already_running "NFS daemon"
+               return
+       fi
+
+       if ! grep -q nfsd /proc/mounts ; then
+               modprobe -s nfsd > /dev/null 2>&1
+               run_cmd "Mounting /proc/fs/nfsd filesystem" mount -t nfsd nfsd /proc/fs/nfsd
+       fi
+
+       # Set the ports lockd should listen on
+       if [ -n "$LOCKD_TCPPORT" ]; then
+               /sbin/sysctl -w fs.nfs.nlm_tcpport=$LOCKD_TCPPORT >/dev/null 2>&1
+       fi
+       if [ -n "$LOCKD_UDPPORT" ]; then
+               /sbin/sysctl -w fs.nfs.nlm_udpport=$LOCKD_UDPPORT >/dev/null 2>&1
+       fi
+
+       for vers in 2 3 4 ; do
+               is_yes $(eval echo \$NFSv$vers) || \
+                       RPCMOUNTOPTIONS="$RPCMOUNTOPTIONS --no-nfs-version $vers"
+       done
+
+       [ -n "$MOUNTD_PORT" ] && RPCMOUNTOPTIONS="$RPCMOUNTOPTIONS -p $MOUNTD_PORT"
+
+       # Start daemons.
+       msg_starting "NFS exportfs"
+       daemon /usr/sbin/exportfs -r
+       msg_starting "NFS mountd"
+       daemon /usr/sbin/rpc.mountd $RPCMOUNTOPTIONS
+       msg_starting "NFS daemon"
+       daemon /usr/sbin/rpc.nfsd $RPCNFSDCOUNT
+       touch /var/lock/subsys/nfs
+}
+
+stop() {
+       if [ ! -f /var/lock/subsys/nfs ]; then
+               msg_not_running "NFS"
+               return
+       fi
+
+       # Stop daemons.
+       msg_stopping "NFS daemon"
+       killproc nfsd -QUIT
+       msg_stopping "NFS mountd"
+       killproc rpc.mountd
+       msg_stopping "NFS exportfs"
+       daemon /usr/sbin/exportfs -au
+       rm -f /var/lock/subsys/nfs
+}
+
+RETVAL=0
+# See how we were called.
+case "$1" in
+  start)
+       start
+       ;;
+  stop)
+       stop
+       ;;
+  restart)
+       stop
+       start
+       /sbin/service idmapd status >/dev/null && /sbin/service idmapd reload
+       /sbin/service svcgssd status >/dev/null && /sbin/service svcgssd restart
+       ;;
+  reload|force-reload)
+       if [ -f /var/lock/subsys/nfs ]; then
+               msg_reloading "NFS"
+               busy
+               /usr/sbin/exportfs -r
+               [ $? -ne 0 ] && RETVAL=7
+               if [ $RETVAL -eq 0 ]; then
+                       ok
+                       /sbin/service idmapd status >/dev/null && /sbin/service idmapd reload
+                       /sbin/service svcgssd status >/dev/null && /sbin/service svcgssd restart
+               else
+                       died
+               fi
+       else
+               msg_not_running "NFS"
+               exit 7
+       fi
+       ;;
+  probe)
+       if [ ! -f /var/lock/subsys/nfs ]; then
+               echo start
+               exit 0
+       fi
+       /sbin/pidof rpc.mountd >/dev/null 2>&1; MOUNTD="$?"
+       /sbin/pidof nfsd >/dev/null 2>&1; NFSD="$?"
+       if [ $MOUNTD = 1 -o $NFSD = 1 ]; then
+               echo restart
+               exit 0
+       fi
+       if [ /etc/exports -nt /var/lock/subsys/nfs ]; then
+               echo reload
+               exit 0
+       fi
+       ;;
+  status)
+       echo "Configured NFS exports:"
+       grep -v "^#" /etc/exports
+       echo
+       echo "Active NFS exports:"
+       /usr/sbin/exportfs -v
+       echo
+       status rpc.mountd
+       RETVAL=$?
+       status nfsd
+       RET=$?
+       [ $RETVAL -eq 0 ] && RETVAL=$RET
+       ;;
+  *)
+       msg_usage "$0 {start|stop|restart|reload|force-reload|probe|status}"
+       exit 3
+esac
+
+exit $RETVAL
diff --git a/nfs.sysconfig b/nfs.sysconfig
new file mode 100644 (file)
index 0000000..4e09b57
--- /dev/null
@@ -0,0 +1,28 @@
+# Set nice level for rpc.mountd and rpc.nfsd
+SERVICE_RUN_NICE_LEVEL="+0"
+
+# Number of NFSD servers to start
+RPCNFSDCOUNT=8
+
+# NFS versions to use (default all-yes)
+NFSv2="yes"
+NFSv3="yes"
+NFSv4="yes"
+
+# Port mount should listen on (default is portmap assigned)
+#MOUNTD_PORT=
+
+# Options for NFS rpc.mountd
+#RPCMOUNTOPTIONS=""
+
+# Uncomment if you want to use secure NFSv4 exports
+#SECURE_NFS="yes"
+
+# List of kernel modules to use for secure NFS
+#SECURE_NFS_MODS="des rpcsec_gss_krb5"
+
+# Options for NFSv4 server-side rpcsec_gss daemon
+#RPCSVCGSSOPTIONS=
+
+# Options for NFSv4 ID <-> Name Mapper (idmapd)
+#RPCIDMAPOPTIONS=
diff --git a/nfsfs.init b/nfsfs.init
new file mode 100644 (file)
index 0000000..8386982
--- /dev/null
@@ -0,0 +1,136 @@
+#!/bin/sh
+#
+# nfsfs                Mount NFS filesystems.
+#
+# chkconfig:   345 16 80
+# description: Mounts and unmounts all Network File System (NFS) \
+#              mount points.
+
+# Source networking configuration.
+if [ ! -f /etc/sysconfig/network ]; then
+       exit 0
+fi
+
+# Source function library.
+. /etc/rc.d/init.d/functions
+
+# Get network config
+. /etc/sysconfig/network
+
+# Get service config
+[ -f /etc/sysconfig/nfsfs ] && . /etc/sysconfig/nfsfs
+[ -f /etc/sysconfig/nfslock ] && . /etc/sysconfig/nfslock
+
+# Check that networking is up.
+if is_yes "${NETWORKING}"; then
+       if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
+               msg_network_down nfsfs
+               exit 1
+       fi
+else
+       exit 0
+fi
+
+if [ "$1" != "stop" ]; then
+       check_portmapper || { nls "Error: portmap isn't running" && exit 0; }
+fi
+
+if [ -z "$NFSUMOUNT_IGNORE" ]; then
+       NFSUMOUNT_IGNORE="/ /usr"
+fi
+
+start() {
+       if [ -f /var/lock/subsys/nfsfs ]; then
+           msg_already_running "NFSFS"
+               return
+       fi
+
+       # Set the ports lockd should listen on
+       if [ -n "$LOCKD_TCPPORT" ]; then
+               /sbin/sysctl -w fs.nfs.nlm_tcpport=$LOCKD_TCPPORT >/dev/null 2>&1
+       fi
+       if [ -n "$LOCKD_UDPPORT" ]; then
+               /sbin/sysctl -w fs.nfs.nlm_udpport=$LOCKD_UDPPORT >/dev/null 2>&1
+       fi
+
+       # Special case /usr first
+       if ! awk '{ if ($2 == "/usr" && $3 ~ /^nfs(4$|$)/ && $4 !~ /noauto/) exit 1}' /etc/fstab; then
+               run_cmd "Mounting /usr filesystem" mount /usr
+               # In case of /usr over NFS idmapd, gssd and lockd may not start
+               # check if they're running and try to start them if not
+               /sbin/service idmapd status >/dev/null || /sbin/service idmapd start
+               /sbin/service gssd status >/dev/null || /sbin/service gssd start
+               /sbin/service nfslock status >/dev/null || /sbin/service nfslock start
+       fi
+       run_cmd "Mounting NFS filesystems" mount -a -t nfs,nfs4
+       touch /var/lock/subsys/nfsfs
+}
+
+stop() {
+       if [ -f /proc/mounts ]; then
+               fsfile="/proc/mounts"
+       else
+               fsfile="/etc/mtab"
+       fi
+
+       show "Unmounting NFS filesystems"
+       busy
+       retry=3
+       remaining=$(awk -v ig="^($NFSUMOUNT_IGNORE)$" 'BEGIN { gsub(/[\t ]+/, "|", ig); } \
+                       $3 ~ /^nfs(4$|$)/ && $2 !~ ig {print $2}' $fsfile)
+       while [ -n "$remaining" -a $retry -gt 0 ]; do
+               fuser -msk -TERM `awk -v ig="^($NFSUMOUNT_IGNORE)$" 'BEGIN { gsub(/[\t ]+/, "|", ig); } \
+                                       $3 ~ /^nfs(4$|$)/ && $2 !~ ig {print $2}' $fsfile`
+               sleep 2
+               fuser -msk -KILL `awk -v ig="^($NFSUMOUNT_IGNORE)$" 'BEGIN { gsub(/[\t ]+/, "|", ig); } \
+                                       $3 ~ /^nfs(4$|$)/ && $2 !~ ig {print $2}' $fsfile`
+               # Sort filesystems to unmount in reverse order
+               rem=""
+               for r in $(awk -v ig="^($NFSUMOUNT_IGNORE)$" 'BEGIN { gsub(/[\t ]+/, "|", ig); } \
+                               $3 ~ /^nfs(4$|$)/ && $2 !~ ig {print $2}' $fsfile) ; do
+                       rem="$r $rem"
+               done
+               for fs in $rem ; do
+                       umount $fs
+               done
+               remaining=$(awk -v ig="^($NFSUMOUNT_IGNORE)$" 'BEGIN { gsub(/[\t ]+/, "|", ig); } \
+                               $3 ~ /^nfs(4$|$)/ && $2 !~ ig {print $2}' $fsfile)
+               retry=$(($retry-1))
+       done
+       ok
+       rm -f /var/lock/subsys/nfsfs
+}
+
+# See how we were called.
+case "$1" in
+  start)
+       start
+       ;;
+  stop)
+       stop
+       ;;
+  restart)
+       stop
+       start
+       ;;
+  reload|force-reload)
+       mount -a -t nfs,nfs4
+       ;;
+  status)
+       if [ -f /proc/mounts ]; then
+               echo "Configured NFS mountpoints:"
+               grep -v '^#' /etc/fstab | \
+                 awk '{ if ($3 ~ /^nfs(4$|$)/ && $4 !~ /noauto/) print $2}'
+               echo "Active NFS mountpoints:"
+               grep -v '^#' /proc/mounts | \
+                 awk '{ if ($3 ~ /^nfs(4$|$)/ && $4 !~ /noauto/) print $2}'
+       else
+               echo "/proc filesystem unavailable"
+       fi
+       ;;
+  *)
+       msg_usage "$0 {start|stop|restart|reload|force-reload|status}"
+       exit 3
+esac
+
+exit 0
diff --git a/nfsfs.sysconfig b/nfsfs.sysconfig
new file mode 100644 (file)
index 0000000..802ed73
--- /dev/null
@@ -0,0 +1,20 @@
+# Options for NFSv4 ID <-> Name Mapper (idmapd)
+#RPCIDMAPOPTIONS=
+
+# Uncomment if you want to use secure NFSv4 exports
+#SECURE_NFS="yes"
+
+# List of kernel modules to use for secure NFS
+#SECURE_NFS_MODS="des rpcsec_gss_krb5"
+
+# Options for NFSv4 rpcsec_gss daemon
+#RPCGSSOPTIONS=
+
+# Space separated list of mount points that init script should not even
+# try to umount because it will not work 
+# May contain regular expressions (ex. "/dev/union/.*")
+NFSUMOUNT_IGNORE="/ /usr"
+
+# Enable if you don't want rpm upgrade to remount Your NFS mounts
+# By default is on, because it's really dangerous to remount i.e. /home
+RPM_SKIP_AUTO_RESTART=yes
diff --git a/nfslock.init b/nfslock.init
new file mode 100644 (file)
index 0000000..6383e67
--- /dev/null
@@ -0,0 +1,118 @@
+#!/bin/sh
+#
+# nfslock      This shell script takes care of starting and stopping
+#              the NSM status monitor - rpc.statd
+#
+# chkconfig:   345 14 82
+# description: The rpc.statd server implements the NSM \
+#              (Network  Status  Monitor) RPC protocol. \
+#              It is used by the NFS file locking service, lockd \
+#              to implement lock recovery when the NFS server \
+#              machine crashes and reboots.
+# probe:       true
+
+# Source function library.
+. /etc/rc.d/init.d/functions
+
+# Get network config
+. /etc/sysconfig/network
+
+# Get service config
+[ -f /etc/sysconfig/nfslock ] && . /etc/sysconfig/nfslock
+
+# Check that networking is up.
+if is_yes "${NETWORKING}"; then
+       if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
+               msg_network_down "RPC statd"
+               exit 1
+       fi
+else
+       exit 0
+fi
+
+if [ "$1" != "stop" ]; then
+       check_portmapper || { nls "Error: portmap isn't running" && exit 0; }
+fi
+
+# /usr may be on NFS, fail silently, nfsfs will start it
+[ -x /usr/sbin/rpc.statd ] || exit 0
+
+start() {
+       # Check if the service is already running?
+       if [ -f /var/lock/subsys/nfslock ]; then
+               msg_already_running "RPC statd"
+               return
+       fi
+
+       # Set the ports lockd should listen on
+       if [ -n "$LOCKD_TCPPORT" ]; then
+               /sbin/sysctl -w fs.nfs.nlm_tcpport=$LOCKD_TCPPORT >/dev/null 2>&1
+       fi
+       if [ -n "$LOCKD_UDPPORT" ]; then
+               /sbin/sysctl -w fs.nfs.nlm_udpport=$LOCKD_UDPPORT >/dev/null 2>&1
+       fi
+
+       [ -n "$STATD_PORT" ] && STATDOPTS="$STATDOPTS -p $STATD_PORT"
+       [ -n "$STATD_OUTPORT" ] && STATDOPTS="$STATDOPTS -o $STATD_OUTPORT"
+
+       # Start daemons.
+       # Don't put sm-notify here, statd will run it when started
+       msg_starting "RPC statd"
+       daemon /usr/sbin/rpc.statd $STATDOPTS
+       RETVAL=$?
+       [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nfslock
+}
+
+stop() {
+       if [ ! -f /var/lock/subsys/nfslock ]; then
+               msg_not_running "RPC statd"
+               return
+       fi
+
+       # Reset the lockd ports if they were set
+       if [ -n "$LOCKD_TCPPORT" ]; then
+               /sbin/sysctl -w fs.nfs.nlm_tcpport=0 >/dev/null 2>&1
+       fi
+       if [ -n "$LOCKD_UDPPORT" ]; then
+               /sbin/sysctl -w fs.nfs.nlm_udpport=0 >/dev/null 2>&1
+       fi
+       # Stop daemons.
+       msg_stopping "RPC statd"
+       killproc rpc.statd
+       rm -f /var/lock/subsys/nfslock
+}
+
+RETVAL=0
+# See how we were called.
+case "$1" in
+  start)
+       start
+       ;;
+  stop)
+       stop
+       ;;
+  restart|force-reload)
+       stop
+       start
+       ;;
+  probe)
+       if [ ! -f /var/lock/subsys/nfslock ]; then
+               echo start
+               exit 0
+       fi
+       /sbin/pidof rpc.statd >/dev/null 2>&1; STATD="$?"
+       if [ $STATD = 1 ]; then
+               echo restart
+               exit 0
+       fi
+       ;;
+  status)
+       status rpc.statd
+       exit $?
+       ;;
+  *)
+       msg_usage "$0 {start|stop|restart|force-reload|probe|status}"
+       exit 3
+esac
+
+exit $RETVAL
diff --git a/nfslock.sysconfig b/nfslock.sysconfig
new file mode 100644 (file)
index 0000000..bb1f201
--- /dev/null
@@ -0,0 +1,15 @@
+# Define nice level for rpc.statd daemon
+SERVICE_RUN_NICE_LEVEL="+0"
+
+# TCP and UDP ports lockd should listen on (default is portmap assigned)
+#LOCKD_TCPPORT=
+#LOCKD_UDPPORT=
+
+# Port for rpc.statd to listen on (default is portmap assigned)
+#STATD_PORT=
+
+# Port for rpc.statd to send outgoing status requests from
+#STATD_OUTPORT=
+
+# Options for rpc.statd.
+#STATDOPTS=
diff --git a/rpcgssd.init b/rpcgssd.init
new file mode 100644 (file)
index 0000000..c39ec4e
--- /dev/null
@@ -0,0 +1,95 @@
+#!/bin/sh
+#
+# gssd         Start up and shut down RPCSEC GSS daemon
+#
+# chkconfig:   345 15 81
+# description: Starts user-level daemon that manages RPCSEC GSS contexts \
+#              for the NFSv4 client.
+
+# Source function library.
+. /etc/rc.d/init.d/functions
+
+# Get network config
+. /etc/sysconfig/network
+
+# Check that networking is up.
+if is_yes "${NETWORKING}"; then
+       if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
+               msg_network_down "RPC gssd"
+               exit 1
+       fi
+else
+       exit 0
+fi
+
+if [ "$1" != "stop" ]; then
+       check_portmapper || { nls "Error: portmap isn't running" && exit 0; }
+fi
+
+# Get service config
+[ -f /etc/sysconfig/nfsfs ] && . /etc/sysconfig/nfsfs
+
+is_yes "${SECURE_NFS}" || exit 0
+
+# List of kernel modules to load
+[ -z "${SECURE_NFS_MODS}" ] && SECURE_NFS_MODS="des rpcsec_gss_krb5"
+
+# /usr may be on NFS, fail silently, nfsfs will start it
+[ -x /usr/sbin/rpc.gssd ] || exit 0
+
+start() {
+       # Check if the service is already running?
+       if [ -f /var/lock/subsys/gssd ]; then
+               msg_already_running "RPC gssd"
+               return
+       fi
+
+       if ! grep -q rpc_pipefs /proc/mounts; then
+               modprobe sunrpc >/dev/null 2>&1
+               run_cmd "Mounting /var/lib/nfs/rpc_pipefs filesystem" \
+                       mount -t rpc_pipefs rpc_pipefs /var/lib/nfs/rpc_pipefs
+       fi
+       # Load rpcsec modules
+       for i in ${SECURE_NFS_MODS}; do
+               _modprobe single die $i
+       done
+       msg_starting "RPC gssd"
+       daemon rpc.gssd $RPCGSSOPTIONS
+       RETVAL=$?
+       [ $RETVAL = 0 ] && touch /var/lock/subsys/gssd
+}
+
+stop() {
+       if [ ! -f /var/lock/subsys/gssd ]; then
+               msg_not_running "RPC gssd"
+               return
+       fi
+
+       msg_stopping "RPC gssd"
+       killproc rpc.gssd
+       rm -f /var/lock/subsys/gssd
+}
+
+# See how we were called.
+RETVAL=0
+case "$1" in
+  start)
+       start
+       ;;
+  stop)
+       stop
+       ;;
+  restart|reload)
+       stop
+       start
+       ;;
+  status)
+       status rpc.gssd
+       RETVAL=$?
+       ;;
+  *)
+       msg_usage "$0 {start|stop|restart|status}"
+       exit 1
+esac
+
+exit $RETVAL
diff --git a/rpcidmapd.init b/rpcidmapd.init
new file mode 100644 (file)
index 0000000..3a5ca64
--- /dev/null
@@ -0,0 +1,105 @@
+#!/bin/sh
+#
+# idmapd       Start up and shut down RPC name to UID/GID mapper
+#
+# chkconfig:   345 12 83
+# description: Starts user-level daemon for NFSv4 that maps user \
+#              names to UID and GID numbers.
+
+# Source function library.
+. /etc/rc.d/init.d/functions
+
+# Get network config
+. /etc/sysconfig/network
+
+# Check that networking is up.
+if is_yes "${NETWORKING}"; then
+       if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
+               msg_network_down "RPC idmapd"
+               exit 1
+       fi
+else
+       exit 0
+fi
+
+# Get service config
+[ -f /etc/sysconfig/nfsfs ] && . /etc/sysconfig/nfsfs
+[ -f /etc/sysconfig/nfsd ] && . /etc/sysconfig/nfsd
+
+# /usr may be on NFS, fail silently, nfsfs will start it
+[ -x /usr/sbin/rpc.idmapd ] || exit 0
+
+# Find out what the current runlevel dir is
+RUNLEVELDIR=$(cat /var/run/runlevel.dir)
+
+start() {
+       # Check if the service is already running?
+       if [ -f /var/lock/subsys/idmapd ]; then
+               msg_already_running "RPC idmapd"
+               return
+       fi
+
+       # This is whacko, but we need /proc/fs/nfsd mounted before
+       # starting idmapd on NFS server
+       if [ -e "$RUNLEVELDIR"/S*nfs ]; then
+               if ! grep -q nfsd /proc/mounts ; then
+                       modprobe nfsd > /dev/null 2>&1
+                       run_cmd "Mounting /proc/fs/nfsd filesystem" mount -t nfsd nfsd /proc/fs/nfsd
+               fi
+       fi
+       if ! grep -q rpc_pipefs /proc/mounts; then
+               modprobe sunrpc >/dev/null 2>&1
+               run_cmd "Mounting /var/lib/nfs/rpc_pipefs filesystem" \
+                       mount -t rpc_pipefs rpc_pipefs /var/lib/nfs/rpc_pipefs
+       fi
+
+       msg_starting "RPC idmapd"
+       daemon /usr/sbin/rpc.idmapd $RPCIDMAPOPTIONS
+       RETVAL=$?
+       [ $RETVAL -eq 0 ] && touch /var/lock/subsys/idmapd
+}
+
+stop() {
+       if [ ! -f /var/lock/subsys/idmapd ]; then
+               msg_not_running "RPC idmapd"
+               return
+       fi
+
+       msg_stopping "RPC idmapd"
+       killproc rpc.idmapd
+       rm -f /var/lock/subsys/idmapd
+}
+
+# See how we were called.
+RETVAL=0
+case "$1" in
+  start)
+       start
+       ;;
+  stop)
+       stop
+       ;;
+  restart)
+       stop
+       start
+       ;;
+  reload)
+       if [ -f /var/lock/subsys/idmapd ]; then
+               msg_reloading "RPC idmapd"
+               killproc rpc.idmapd -HUP
+               RETVAL=$?
+       else
+               msg_not_running "RPC idmapd"
+               exit 7
+       fi
+       ;;
+  status)
+       status rpc.idmapd
+       RETVAL=$?
+       ;;
+  *)
+       msg_usage "$0 {start|stop|restart|reload|status}"
+       exit 1
+esac
+
+exit $RETVAL
diff --git a/rpcsvcgssd.init b/rpcsvcgssd.init
new file mode 100644 (file)
index 0000000..cf5bc63
--- /dev/null
@@ -0,0 +1,92 @@
+#!/bin/sh
+#
+# svcgssd      Start up and shut down RPCSEC GSS daemon
+#
+# chkconfig:   345 12 82
+# description: Starts user-level daemon that manages RPCSEC GSS contexts \
+#              for the NFSv4 server.
+
+# Source function library.
+. /etc/rc.d/init.d/functions
+
+# Get network config
+. /etc/sysconfig/network
+
+# Check that networking is up.
+if is_yes "${NETWORKING}"; then
+       if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
+               msg_network_down "RPC svcgssd"
+               exit 1
+       fi
+else
+       exit 0
+fi
+
+if [ "$1" != "stop" ]; then
+       check_portmapper || { nls "Error: portmap isn't running" && exit 0; }
+fi
+
+# Get service config
+[ -f /etc/sysconfig/nfsd ] && . /etc/sysconfig/nfsd
+
+is_yes "${SECURE_NFS}" || exit 0
+
+# List of kernel modules to load
+[ -z "${SECURE_NFS_MODS}" ] && SECURE_NFS_MODS="des rpcsec_gss_krb5"
+
+start() {
+       # Check if the service is already running?
+       if [ -f /var/lock/subsys/svcgssd ]; then
+               msg_already_running "RPC svcgssd"
+               return
+       fi
+
+       # We need /proc/fs/nfsd mounted before starting svcgssd
+       if ! grep -q nfsd /proc/mounts ; then
+               modprobe nfsd > /dev/null 2>&1
+               run_cmd "Mounting /proc/fs/nfsd filesystem" mount -t nfsd nfsd /proc/fs/nfsd
+       fi
+       # Load rpcsec modules
+       for i in ${SECURE_NFS_MODS} ; do 
+               _modprobe single die $i
+       done
+       msg_starting "RPC svcgssd"
+       daemon /usr/sbin/rpc.svcgssd $RPCSVCGSSOPTIONS
+       RETVAL=$?
+       [ $RETVAL = 0 ] && touch /var/lock/subsys/svcgssd
+}
+
+stop() {
+       if [ ! -f /var/lock/subsys/svcgssd ]; then
+               msg_not_running "RPC svcgssd"
+               return
+       fi
+
+       msg_stopping "RPC svcgssd"
+       killproc rpc.svcgssd
+       rm -f /var/lock/subsys/svcgssd
+}
+
+# See how we were called.
+RETVAL=0
+case "$1" in
+  start)
+       start
+       ;;
+  stop)
+       stop
+       ;;
+  restart|reload)
+       stop
+       start
+       ;;
+  status)
+       status rpc.svcgssd
+       RETVAL=$?
+       ;;
+  *)
+       msg_usage "$0 {start|stop|restart|status}"
+       exit 1
+esac
+
+exit $RETVAL
This page took 0.184373 seconds and 4 git commands to generate.