+nfs-utils (1:1.0.9-5) unstable; urgency=low
+
+ * Put rpc.svcgssd back into place; removing it was obviously not what
+ upstream intended to do after all. (Closes: #378686)
+ * Add rpc.svcgssd to nfs-kernel-server.install.
+ * Add the svcgssd(8) man page, as well as the rpc.svcgssd(8) symlink.
+ * Add NEED_SVCGSSD and RPCSECGSSDOPTS options to nfs-kernel-server.default.
+ * Start and rpc.svcgssd in the nfs-kernel-server init script. Currently,
+ no autodetection is done; you'll need to enable it manually. (We can't
+ start it regardless, since it bombs out if there is no adequate nfs/*
+ entry in the keytab.)
+ * Remove obsolete RPCGSSDOPTS option from the nfs-kernel-server init script.
+
+ -- Steinar H. Gunderson <sesse@debian.org> Wed, 19 Jul 2006 14:06:33 +0200
+
nfs-utils (1:1.0.9-4) unstable; urgency=low
* Remove versioned dependency on coreutils, as we don't use it indirectly,
# a fixed port here using the --port option. For more information,
# see rpc.mountd(8) or http://wiki.debian.org/?SecuringNFS
RPCMOUNTDOPTS=
+
+# Do you want to start the svcgssd daemon? It is only required for Kerberos
+# exports. Valid alternatives are "yes" and "no"; the default is "no".
+NEED_SVCGSSD=
+
+# Options for rpc.svcgssd.
+RPCSVCGSSDOPTS=
RPCNFSDCOUNT=8
RPCNFSDPRIORITY=0
RPCMOUNTDOPTS=
-NEED_SVCGSSD=yes
-RPCGSSDOPTS=
+NEED_SVCGSSD=no
RPCSVCGSSDOPTS=
PROCNFSD_MOUNTPOINT=/proc/fs/nfsd
if [ -f $DEFAULTFILE ]; then
RPCMOUNTDOPTS="$RPCMOUNTDOPTS --no-nfs-version 3"
[ -z "$ClearAddr" ] || echo "nfsd 127.0.0.1 1" >/proc/net/rpc/auth.unix.ip/channel
+
+ if [ "$NEED_SVCGSSD" = "yes" ]; then
+ log_progress_msg "svcgssd"
+ start-stop-daemon --start --oknodo --quiet \
+ --exec $PREFIX/sbin/rpc.svcgssd -- $RPCSVCGSSDOPTS
+ if [ $? != 0 ]; then
+ log_end_msg $?
+ exit $?
+ fi
+ fi
log_progress_msg "mountd"
start-stop-daemon --start --oknodo --quiet \
log_end_msg $?
exit $?
fi
+
+ if [ "$NEED_SVCGSSD" = "yes" ]; then
+ log_progress_msg "svcgssd"
+ start-stop-daemon --stop --oknodo --quiet \
+ --name rpc.svcgssd --user 0
+ if [ $? != 0 ]; then
+ log_end_msg $?
+ exit $?
+ fi
+ fi
log_progress_msg "nfsd"
start-stop-daemon --stop --oknodo --quiet \
debian/tmp/usr/sbin/exportfs
debian/tmp/usr/sbin/rpc.mountd
debian/tmp/usr/sbin/rpc.nfsd
+debian/tmp/usr/sbin/rpc.svcgssd
debian/nfs-kernel-server.default /usr/share/nfs-kernel-server/conffiles/
debian/etc.exports /usr/share/nfs-kernel-server/conffiles/
debian/nfs-kernel-server.default.md5sum /usr/share/nfs-kernel-server/conffiles/
/usr/share/man/man8/mountd.8 /usr/share/man/man8/rpc.mountd.8
/usr/share/man/man8/nfsd.8 /usr/share/man/man8/rpc.nfsd.8
+/usr/share/man/man8/svcgssd.8 /usr/share/man/man8/rpc.svcgssd.8
debian/tmp/usr/share/man/man8/mountd.8
debian/tmp/usr/share/man/man8/exportfs.8
debian/tmp/usr/share/man/man8/nfsd.8
+debian/tmp/usr/share/man/man8/svcgssd.8
--- /dev/null
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#ifndef _RQUOTA_H_RPCGEN
+#define _RQUOTA_H_RPCGEN
+
+#include <rpc/rpc.h>
+
+#ifndef IXDR_GET_INT32
+#define IXDR_GET_INT32(buf) IXDR_GET_LONG((buf))
+#endif
+#ifndef IXDR_PUT_INT32
+#define IXDR_PUT_INT32(buf, v) IXDR_PUT_LONG((buf), (v))
+#endif
+#ifndef IXDR_GET_U_INT32
+#define IXDR_GET_U_INT32(buf) IXDR_GET_U_LONG((buf))
+#endif
+#ifndef IXDR_PUT_U_INT32
+#define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_U_LONG((buf), (v))
+#endif
+#define RQ_PATHLEN 1024
+
+struct getquota_args {
+ char *gqa_pathp;
+ int gqa_uid;
+};
+typedef struct getquota_args getquota_args;
+#ifdef __cplusplus
+extern "C" bool_t xdr_getquota_args(XDR *, getquota_args*);
+#elif __STDC__
+extern bool_t xdr_getquota_args(XDR *, getquota_args*);
+#else /* Old Style C */
+bool_t xdr_getquota_args();
+#endif /* Old Style C */
+
+
+struct ext_getquota_args {
+ char *gqa_pathp;
+ int gqa_type;
+ int gqa_id;
+};
+typedef struct ext_getquota_args ext_getquota_args;
+#ifdef __cplusplus
+extern "C" bool_t xdr_ext_getquota_args(XDR *, ext_getquota_args*);
+#elif __STDC__
+extern bool_t xdr_ext_getquota_args(XDR *, ext_getquota_args*);
+#else /* Old Style C */
+bool_t xdr_ext_getquota_args();
+#endif /* Old Style C */
+
+
+struct rquota {
+ int rq_bsize;
+ bool_t rq_active;
+ u_int rq_bhardlimit;
+ u_int rq_bsoftlimit;
+ u_int rq_curblocks;
+ u_int rq_fhardlimit;
+ u_int rq_fsoftlimit;
+ u_int rq_curfiles;
+ u_int rq_btimeleft;
+ u_int rq_ftimeleft;
+};
+typedef struct rquota rquota;
+#ifdef __cplusplus
+extern "C" bool_t xdr_rquota(XDR *, rquota*);
+#elif __STDC__
+extern bool_t xdr_rquota(XDR *, rquota*);
+#else /* Old Style C */
+bool_t xdr_rquota();
+#endif /* Old Style C */
+
+
+enum gqr_status {
+ Q_OK = 1,
+ Q_NOQUOTA = 2,
+ Q_EPERM = 3,
+};
+typedef enum gqr_status gqr_status;
+#ifdef __cplusplus
+extern "C" bool_t xdr_gqr_status(XDR *, gqr_status*);
+#elif __STDC__
+extern bool_t xdr_gqr_status(XDR *, gqr_status*);
+#else /* Old Style C */
+bool_t xdr_gqr_status();
+#endif /* Old Style C */
+
+
+struct getquota_rslt {
+ gqr_status status;
+ union {
+ rquota gqr_rquota;
+ } getquota_rslt_u;
+};
+typedef struct getquota_rslt getquota_rslt;
+#ifdef __cplusplus
+extern "C" bool_t xdr_getquota_rslt(XDR *, getquota_rslt*);
+#elif __STDC__
+extern bool_t xdr_getquota_rslt(XDR *, getquota_rslt*);
+#else /* Old Style C */
+bool_t xdr_getquota_rslt();
+#endif /* Old Style C */
+
+
+#define RQUOTAPROG ((u_int32_t)100011)
+#define RQUOTAVERS ((u_int32_t)1)
+
+#ifdef __cplusplus
+#define RQUOTAPROC_GETQUOTA ((u_int32_t)1)
+extern "C" getquota_rslt * rquotaproc_getquota_1(getquota_args *, CLIENT *);
+extern "C" getquota_rslt * rquotaproc_getquota_1_svc(getquota_args *, struct svc_req *);
+#define RQUOTAPROC_GETACTIVEQUOTA ((u_int32_t)2)
+extern "C" getquota_rslt * rquotaproc_getactivequota_1(getquota_args *, CLIENT *);
+extern "C" getquota_rslt * rquotaproc_getactivequota_1_svc(getquota_args *, struct svc_req *);
+
+#elif __STDC__
+#define RQUOTAPROC_GETQUOTA ((u_int32_t)1)
+extern getquota_rslt * rquotaproc_getquota_1(getquota_args *, CLIENT *);
+extern getquota_rslt * rquotaproc_getquota_1_svc(getquota_args *, struct svc_req *);
+#define RQUOTAPROC_GETACTIVEQUOTA ((u_int32_t)2)
+extern getquota_rslt * rquotaproc_getactivequota_1(getquota_args *, CLIENT *);
+extern getquota_rslt * rquotaproc_getactivequota_1_svc(getquota_args *, struct svc_req *);
+
+#else /* Old Style C */
+#define RQUOTAPROC_GETQUOTA ((u_int32_t)1)
+extern getquota_rslt * rquotaproc_getquota_1();
+extern getquota_rslt * rquotaproc_getquota_1_svc();
+#define RQUOTAPROC_GETACTIVEQUOTA ((u_int32_t)2)
+extern getquota_rslt * rquotaproc_getactivequota_1();
+extern getquota_rslt * rquotaproc_getactivequota_1_svc();
+#endif /* Old Style C */
+#define EXT_RQUOTAVERS ((u_int32_t)2)
+
+#ifdef __cplusplus
+extern "C" getquota_rslt * rquotaproc_getquota_2(ext_getquota_args *, CLIENT *);
+extern "C" getquota_rslt * rquotaproc_getquota_2_svc(ext_getquota_args *, struct svc_req *);
+extern "C" getquota_rslt * rquotaproc_getactivequota_2(ext_getquota_args *, CLIENT *);
+extern "C" getquota_rslt * rquotaproc_getactivequota_2_svc(ext_getquota_args *, struct svc_req *);
+
+#elif __STDC__
+extern getquota_rslt * rquotaproc_getquota_2(ext_getquota_args *, CLIENT *);
+extern getquota_rslt * rquotaproc_getquota_2_svc(ext_getquota_args *, struct svc_req *);
+extern getquota_rslt * rquotaproc_getactivequota_2(ext_getquota_args *, CLIENT *);
+extern getquota_rslt * rquotaproc_getactivequota_2_svc(ext_getquota_args *, struct svc_req *);
+
+#else /* Old Style C */
+extern getquota_rslt * rquotaproc_getquota_2();
+extern getquota_rslt * rquotaproc_getquota_2_svc();
+extern getquota_rslt * rquotaproc_getactivequota_2();
+extern getquota_rslt * rquotaproc_getactivequota_2_svc();
+#endif /* Old Style C */
+
+#endif /* !_RQUOTA_H_RPCGEN */
--- /dev/null
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#include "rquota.h"
+
+bool_t
+xdr_getquota_args(xdrs, objp)
+ XDR *xdrs;
+ getquota_args *objp;
+{
+
+ if (!xdr_string(xdrs, &objp->gqa_pathp, RQ_PATHLEN)) {
+ return (FALSE);
+ }
+ if (!xdr_int(xdrs, &objp->gqa_uid)) {
+ return (FALSE);
+ }
+ return (TRUE);
+}
+
+bool_t
+xdr_ext_getquota_args(xdrs, objp)
+ XDR *xdrs;
+ ext_getquota_args *objp;
+{
+
+ if (!xdr_string(xdrs, &objp->gqa_pathp, RQ_PATHLEN)) {
+ return (FALSE);
+ }
+ if (!xdr_int(xdrs, &objp->gqa_type)) {
+ return (FALSE);
+ }
+ if (!xdr_int(xdrs, &objp->gqa_id)) {
+ return (FALSE);
+ }
+ return (TRUE);
+}
+
+bool_t
+xdr_rquota(xdrs, objp)
+ XDR *xdrs;
+ rquota *objp;
+{
+
+
+ if (xdrs->x_op == XDR_ENCODE) {
+ int32_t *buf = XDR_INLINE(xdrs,10 * BYTES_PER_XDR_UNIT);
+ if (buf == NULL) {
+ if (!xdr_int(xdrs, &objp->rq_bsize)) {
+ return (FALSE);
+ }
+ if (!xdr_bool(xdrs, &objp->rq_active)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_bhardlimit)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_bsoftlimit)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_curblocks)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_fhardlimit)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_fsoftlimit)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_curfiles)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_btimeleft)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_ftimeleft)) {
+ return (FALSE);
+ }
+
+ }
+ else {
+ (void) IXDR_PUT_INT32(buf,objp->rq_bsize);
+ (void) IXDR_PUT_BOOL(buf,objp->rq_active);
+ (void) IXDR_PUT_U_INT32(buf,objp->rq_bhardlimit);
+ (void) IXDR_PUT_U_INT32(buf,objp->rq_bsoftlimit);
+ (void) IXDR_PUT_U_INT32(buf,objp->rq_curblocks);
+ (void) IXDR_PUT_U_INT32(buf,objp->rq_fhardlimit);
+ (void) IXDR_PUT_U_INT32(buf,objp->rq_fsoftlimit);
+ (void) IXDR_PUT_U_INT32(buf,objp->rq_curfiles);
+ (void) IXDR_PUT_U_INT32(buf,objp->rq_btimeleft);
+ (void) IXDR_PUT_U_INT32(buf,objp->rq_ftimeleft);
+ }
+
+ return (TRUE);
+ } else if (xdrs->x_op == XDR_DECODE) {
+ int32_t *buf = XDR_INLINE(xdrs,10 * BYTES_PER_XDR_UNIT);
+ if (buf == NULL) {
+ if (!xdr_int(xdrs, &objp->rq_bsize)) {
+ return (FALSE);
+ }
+ if (!xdr_bool(xdrs, &objp->rq_active)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_bhardlimit)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_bsoftlimit)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_curblocks)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_fhardlimit)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_fsoftlimit)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_curfiles)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_btimeleft)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_ftimeleft)) {
+ return (FALSE);
+ }
+
+ }
+ else {
+ objp->rq_bsize = IXDR_GET_INT32(buf);
+ objp->rq_active = IXDR_GET_BOOL(buf);
+ objp->rq_bhardlimit = IXDR_GET_U_INT32(buf);
+ objp->rq_bsoftlimit = IXDR_GET_U_INT32(buf);
+ objp->rq_curblocks = IXDR_GET_U_INT32(buf);
+ objp->rq_fhardlimit = IXDR_GET_U_INT32(buf);
+ objp->rq_fsoftlimit = IXDR_GET_U_INT32(buf);
+ objp->rq_curfiles = IXDR_GET_U_INT32(buf);
+ objp->rq_btimeleft = IXDR_GET_U_INT32(buf);
+ objp->rq_ftimeleft = IXDR_GET_U_INT32(buf);
+ }
+ return(TRUE);
+ }
+
+ if (!xdr_int(xdrs, &objp->rq_bsize)) {
+ return (FALSE);
+ }
+ if (!xdr_bool(xdrs, &objp->rq_active)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_bhardlimit)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_bsoftlimit)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_curblocks)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_fhardlimit)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_fsoftlimit)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_curfiles)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_btimeleft)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rq_ftimeleft)) {
+ return (FALSE);
+ }
+ return (TRUE);
+}
+
+bool_t
+xdr_gqr_status(xdrs, objp)
+ XDR *xdrs;
+ gqr_status *objp;
+{
+
+ if (!xdr_enum(xdrs, (enum_t *)objp)) {
+ return (FALSE);
+ }
+ return (TRUE);
+}
+
+bool_t
+xdr_getquota_rslt(xdrs, objp)
+ XDR *xdrs;
+ getquota_rslt *objp;
+{
+
+ if (!xdr_gqr_status(xdrs, &objp->status)) {
+ return (FALSE);
+ }
+ switch (objp->status) {
+ case Q_OK:
+ if (!xdr_rquota(xdrs, &objp->getquota_rslt_u.gqr_rquota)) {
+ return (FALSE);
+ }
+ break;
+ case Q_NOQUOTA:
+ break;
+ case Q_EPERM:
+ break;
+ default:
+ return (FALSE);
+ }
+ return (TRUE);
+}