diff -crN ./Makefile ../cfs-1.3.1-LnxSlckwr/Makefile
*** ./Makefile Tue Dec 19 18:58:40 1995
--- ../cfs-1.3.1-LnxSlckwr/Makefile Tue Dec 19 20:56:03 1995
***************
*** 64,76 ****
#CC=cc
#COPT=-O -DNOT_ANSI_C -DPROTOTYPES=0
# for gcc, use
! CC=gcc
COPT=-O2 -DPROTOTYPES=1
#1B: paths:
BINDIR=/usr/local/bin
! ETCDIR=/usr/local/etc
! PRINTCMD=enscript -Gr2
# you only need RSAREF for ESM
RSALIB=/usr/mab/rsaref/install/rsaref.a
RINCLUDES=/usr/mab/rsaref/source
--- 64,100 ----
#CC=cc
#COPT=-O -DNOT_ANSI_C -DPROTOTYPES=0
# for gcc, use
! CC=gcc -Dd_fileno=d_ino \
! -Dnfsproc_null_2_svc=nfsproc_null_2 \
! -Dnfsproc_getattr_2_svc=nfsproc_getattr_2 \
! -Dnfsproc_setattr_2_svc=nfsproc_setattr_2 \
! -Dnfsproc_root_2_svc=nfsproc_root_2 \
! -Dnfsproc_lookup_2_svc=nfsproc_lookup_2 \
! -Dnfsproc_readlink_2_svc=nfsproc_readlink_2 \
! -Dnfsproc_read_2_svc=nfsproc_read_2 \
! -Dnfsproc_writecache_2_svc=nfsproc_writecache_2 \
! -Dnfsproc_write_2_svc=nfsproc_write_2 \
! -Dnfsproc_create_2_svc=nfsproc_create_2 \
! -Dnfsproc_remove_2_svc=nfsproc_remove_2 \
! -Dnfsproc_rename_2_svc=nfsproc_rename_2 \
! -Dnfsproc_link_2_svc=nfsproc_link_2 \
! -Dnfsproc_symlink_2_svc=nfsproc_symlink_2 \
! -Dnfsproc_mkdir_2_svc=nfsproc_mkdir_2 \
! -Dnfsproc_rmdir_2_svc=nfsproc_rmdir_2 \
! -Dnfsproc_readdir_2_svc=nfsproc_readdir_2 \
! -Dnfsproc_statfs_2_svc=nfsproc_statfs_2 \
! -Dadmproc_null_1_svc=admproc_null_1 \
! -Dadmproc_attach_1_svc=admproc_attach_1 \
! -Dadmproc_detach_1_svc=admproc_detach_1 \
! -Dadmproc_ls_1_svc=admproc_ls_1
!
!
COPT=-O2 -DPROTOTYPES=1
#1B: paths:
BINDIR=/usr/local/bin
! SBINDIR=/usr/local/sbin
! PRINTCMD=lpr
# you only need RSAREF for ESM
RSALIB=/usr/mab/rsaref/install/rsaref.a
RINCLUDES=/usr/mab/rsaref/source
***************
*** 104,110 ****
# won't compile out of the box, this is the most likely problem. Replace
# rpcgen, and things should work fine.
# See README.linux if you can't make things work.
! #CFLAGS=$(COPT) -I$(RINCLUDES)
#LIBS=
#COMPAT=
--- 128,134 ----
# won't compile out of the box, this is the most likely problem. Replace
# rpcgen, and things should work fine.
# See README.linux if you can't make things work.
! CFLAGS=$(COPT) -I$(RINCLUDES)
#LIBS=
#COMPAT=
***************
*** 239,266 ****
$(COBJS): nfsproto.h admproto.h cfs.h mcg.h safer.h shs.h
nfsproto_xdr.c: nfsproto.x
! rpcgen -c -o nfsproto_xdr.c nfsproto.x
nfsproto_svr.c: nfsproto.x
! rpcgen -m -o nfsproto_svr.c nfsproto.x
nfsproto.h: nfsproto.x
! rpcgen -h -o nfsproto.h nfsproto.x
admproto_xdr.c: admproto.x
! rpcgen -c -o admproto_xdr.c admproto.x
admproto_svr.c: admproto.x
! rpcgen -m -o admproto_svr.c admproto.x
admproto.h: admproto.x
! rpcgen -h -o admproto.h admproto.x
admproto_clnt.c: admproto.x
! rpcgen -l -o admproto_clnt.c admproto.x
clean:
! rm -f $(OBJS) $(COBJS) $(OTHERS) cfsd cmkdir cattach cdetach cname ccat
rm -f $(EOBJS) esm
cfs.shar: $(SRCS) $(ESRCS) $(MANS)
--- 263,290 ----
$(COBJS): nfsproto.h admproto.h cfs.h mcg.h safer.h shs.h
nfsproto_xdr.c: nfsproto.x
! # rpcgen -c -o nfsproto_xdr.c nfsproto.x
nfsproto_svr.c: nfsproto.x
! # rpcgen -m -o nfsproto_svr.c nfsproto.x
nfsproto.h: nfsproto.x
! # rpcgen -h -o nfsproto.h nfsproto.x
admproto_xdr.c: admproto.x
! # rpcgen -c -o admproto_xdr.c admproto.x
admproto_svr.c: admproto.x
! # rpcgen -m -o admproto_svr.c admproto.x
admproto.h: admproto.x
! # rpcgen -h -o admproto.h admproto.x
admproto_clnt.c: admproto.x
! # rpcgen -l -o admproto_clnt.c admproto.x
clean:
! rm -f $(OBJS) $(COBJS) cfsd cmkdir cattach cdetach cname ccat
rm -f $(EOBJS) esm
cfs.shar: $(SRCS) $(ESRCS) $(MANS)
***************
*** 270,276 ****
$(PRINTCMD) $(SRCS) cfs.h mcg.h safer.h admproto.h nfsproto.h
install_cfs: cfsd cattach cdetach cmkdir
! install -m 0755 -c -o root cfsd $(ETCDIR)
install -m 0755 -c -o root cattach cdetach cmkdir cpasswd ssh \
cname ccat $(BINDIR)
# install -m 0755 i o $(BINDIR)
--- 294,300 ----
$(PRINTCMD) $(SRCS) cfs.h mcg.h safer.h admproto.h nfsproto.h
install_cfs: cfsd cattach cdetach cmkdir
! install -m 0755 -c -o root cfsd $(SBINDIR)
install -m 0755 -c -o root cattach cdetach cmkdir cpasswd ssh \
cname ccat $(BINDIR)
# install -m 0755 i o $(BINDIR)
diff -crN ./README.install ../cfs-1.3.1-LnxSlckwr/README.install
*** ./README.install Tue Dec 19 18:58:40 1995
--- ../cfs-1.3.1-LnxSlckwr/README.install Tue Dec 19 19:40:25 1995
***************
*** 56,71 ****
7) add this to the end of /etc/rc.local (some place after you have
mountd started):
! if [ -x /usr/local/etc/cfsd ]; then
! /usr/local/etc/cfsd && \
! /etc/mount -o port=3049,intr localhost:/null /crypt
fi
7a) on some platforms (especially BSDI), you may get better CFS
performance with a smaller mount blocksize:
! if [ -x /usr/local/etc/cfsd ]; then
! /usr/local/etc/cfsd && \
! /etc/mount -o port=3049,intr,rsize=2048,wsize=2048 localhost:/null /crypt
fi
8) run the commands in step 7 by hand to get it started now. you may have to
--- 56,71 ----
7) add this to the end of /etc/rc.local (some place after you have
mountd started):
! if [ -x /usr/local/sbin/cfsd ]; then
! /usr/local/sbin/cfsd && \
! /bin/mount -o port=3049,intr localhost:/null /crypt
fi
7a) on some platforms (especially BSDI), you may get better CFS
performance with a smaller mount blocksize:
! if [ -x /usr/local/sbin/cfsd ]; then
! /usr/local/sbin/cfsd && \
! /bin/mount -o port=3049,intr,rsize=2048,wsize=2048 localhost:/null /crypt
fi
8) run the commands in step 7 by hand to get it started now. you may have to
diff -crN ./admproto.h ../cfs-1.3.1-LnxSlckwr/admproto.h
*** ./admproto.h Thu Jan 1 01:00:00 1970
--- ../cfs-1.3.1-LnxSlckwr/admproto.h Mon Dec 18 04:00:52 1995
***************
*** 0 ****
--- 1,119 ----
+ /*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+ #include <rpc/types.h>
+
+
+ enum cfsstat {
+ CFS_OK = 0,
+ CFSERR_PERM = 1,
+ CFSERR_IFULL = 2,
+ CFSERR_NOINS = 3,
+ CFSERR_EXIST = 4,
+ CFSERR_NODIR = 5,
+ CFSERR_BADKEY = 6,
+ CFSERR_BADNAME = 7,
+ };
+ typedef enum cfsstat cfsstat;
+ bool_t xdr_cfsstat();
+
+ enum ciphers {
+ CFS_STD_DES = 0,
+ CFS_THREE_DES = 1,
+ CFS_IDEA = 2,
+ CFS_BLOWFISH = 3,
+ CFS_SKIPJACK = 4,
+ CFS_MACGUFFIN = 5,
+ CFS_SAFER_SK128 = 6,
+ };
+ typedef enum ciphers ciphers;
+ bool_t xdr_ciphers();
+ #define CFS_MAXCOMP 255
+ #define CFS_MAXNAME 1024
+
+ struct cfs_adm_deskey {
+ long pl;
+ u_char primary[8];
+ u_char secondary[8];
+ };
+ typedef struct cfs_adm_deskey cfs_adm_deskey;
+ bool_t xdr_cfs_adm_deskey();
+
+ struct cfs_adm_3deskey {
+ long pl;
+ u_char primary1[8];
+ u_char primary2[8];
+ u_char secondary1[8];
+ u_char secondary2[8];
+ };
+ typedef struct cfs_adm_3deskey cfs_adm_3deskey;
+ bool_t xdr_cfs_adm_3deskey();
+
+ struct cfs_adm_blowkey {
+ long pl;
+ u_char primary[16];
+ u_char secondary[16];
+ };
+ typedef struct cfs_adm_blowkey cfs_adm_blowkey;
+ bool_t xdr_cfs_adm_blowkey();
+
+ struct cfs_adm_mcgkey {
+ long pl;
+ u_char primary[16];
+ u_char secondary[16];
+ };
+ typedef struct cfs_adm_mcgkey cfs_adm_mcgkey;
+ bool_t xdr_cfs_adm_mcgkey();
+
+ struct cfs_adm_saferkey {
+ long pl;
+ u_char primary[16];
+ u_char secondary[16];
+ };
+ typedef struct cfs_adm_saferkey cfs_adm_saferkey;
+ bool_t xdr_cfs_adm_saferkey();
+
+ struct cfs_admkey {
+ ciphers cipher;
+ union {
+ cfs_adm_deskey deskey;
+ cfs_adm_3deskey des3key;
+ cfs_adm_blowkey blowkey;
+ cfs_adm_mcgkey mcgkey;
+ cfs_adm_saferkey saferkey;
+ } cfs_admkey_u;
+ };
+ typedef struct cfs_admkey cfs_admkey;
+ bool_t xdr_cfs_admkey();
+
+ struct cfs_attachargs {
+ char *dirname;
+ char *name;
+ cfs_admkey key;
+ int uid;
+ int highsec;
+ bool_t anon;
+ int expire;
+ int idle;
+ int smsize;
+ };
+ typedef struct cfs_attachargs cfs_attachargs;
+ bool_t xdr_cfs_attachargs();
+
+ struct cfs_detachargs {
+ char *name;
+ int uid;
+ };
+ typedef struct cfs_detachargs cfs_detachargs;
+ bool_t xdr_cfs_detachargs();
+
+ #define ADM_PROGRAM ((u_long)0x31234567)
+ #define ADM_VERSION ((u_long)2)
+ #define ADMPROC_NULL ((u_long)0)
+ extern void *admproc_null_2();
+ #define ADMPROC_ATTACH ((u_long)1)
+ extern cfsstat *admproc_attach_2();
+ #define ADMPROC_DETACH ((u_long)2)
+ extern cfsstat *admproc_detach_2();
diff -crN ./admproto_clnt.c ../cfs-1.3.1-LnxSlckwr/admproto_clnt.c
*** ./admproto_clnt.c Thu Jan 1 01:00:00 1970
--- ../cfs-1.3.1-LnxSlckwr/admproto_clnt.c Mon Dec 18 04:00:52 1995
***************
*** 0 ****
--- 1,52 ----
+ /*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+ #include <rpc/rpc.h>
+ #include "admproto.h"
+
+ /* Default timeout can be changed using clnt_control() */
+ static struct timeval TIMEOUT = { 25, 0 };
+
+ void *
+ admproc_null_2(argp, clnt)
+ void *argp;
+ CLIENT *clnt;
+ {
+ static char res;
+
+ bzero((char *)&res, sizeof(res));
+ if (clnt_call(clnt, ADMPROC_NULL, xdr_void, argp, xdr_void, &res, TIMEOUT) != RPC_SUCCESS) {
+ return (NULL);
+ }
+ return ((void *)&res);
+ }
+
+ cfsstat *
+ admproc_attach_2(argp, clnt)
+ cfs_attachargs *argp;
+ CLIENT *clnt;
+ {
+ static cfsstat res;
+
+ bzero((char *)&res, sizeof(res));
+ if (clnt_call(clnt, ADMPROC_ATTACH, xdr_cfs_attachargs, argp, xdr_cfsstat, &res, TIMEOUT) != RPC_SUCCESS) {
+ return (NULL);
+ }
+ return (&res);
+ }
+
+ cfsstat *
+ admproc_detach_2(argp, clnt)
+ cfs_detachargs *argp;
+ CLIENT *clnt;
+ {
+ static cfsstat res;
+
+ bzero((char *)&res, sizeof(res));
+ if (clnt_call(clnt, ADMPROC_DETACH, xdr_cfs_detachargs, argp, xdr_cfsstat, &res, TIMEOUT) != RPC_SUCCESS) {
+ return (NULL);
+ }
+ return (&res);
+ }
diff -crN ./admproto_svr.c ../cfs-1.3.1-LnxSlckwr/admproto_svr.c
*** ./admproto_svr.c Thu Jan 1 01:00:00 1970
--- ../cfs-1.3.1-LnxSlckwr/admproto_svr.c Mon Dec 18 04:00:52 1995
***************
*** 0 ****
--- 1,60 ----
+ /*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+ #include <stdio.h>
+ #include <rpc/rpc.h>
+ #include "admproto.h"
+
+ void
+ adm_program_2(rqstp, transp)
+ struct svc_req *rqstp;
+ register SVCXPRT *transp;
+ {
+ union {
+ cfs_attachargs admproc_attach_2_arg;
+ cfs_detachargs admproc_detach_2_arg;
+ } argument;
+ char *result;
+ bool_t (*xdr_argument)(), (*xdr_result)();
+ char *(*local)();
+
+ switch (rqstp->rq_proc) {
+ case ADMPROC_NULL:
+ xdr_argument = xdr_void;
+ xdr_result = xdr_void;
+ local = (char *(*)()) admproc_null_2;
+ break;
+
+ case ADMPROC_ATTACH:
+ xdr_argument = xdr_cfs_attachargs;
+ xdr_result = xdr_cfsstat;
+ local = (char *(*)()) admproc_attach_2;
+ break;
+
+ case ADMPROC_DETACH:
+ xdr_argument = xdr_cfs_detachargs;
+ xdr_result = xdr_cfsstat;
+ local = (char *(*)()) admproc_detach_2;
+ break;
+
+ default:
+ svcerr_noproc(transp);
+ return;
+ }
+ bzero((char *)&argument, sizeof(argument));
+ if (!svc_getargs(transp, xdr_argument, &argument)) {
+ svcerr_decode(transp);
+ return;
+ }
+ result = (*local)(&argument, rqstp);
+ if (result != NULL && !svc_sendreply(transp, xdr_result, result)) {
+ svcerr_systemerr(transp);
+ }
+ if (!svc_freeargs(transp, xdr_argument, &argument)) {
+ fprintf(stderr, "unable to free arguments");
+ exit(1);
+ }
+ return;
+ }
diff -crN ./admproto_xdr.c ../cfs-1.3.1-LnxSlckwr/admproto_xdr.c
*** ./admproto_xdr.c Thu Jan 1 01:00:00 1970
--- ../cfs-1.3.1-LnxSlckwr/admproto_xdr.c Mon Dec 18 04:00:52 1995
***************
*** 0 ****
--- 1,207 ----
+ /*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+ #include <rpc/rpc.h>
+ #include "admproto.h"
+
+ bool_t
+ xdr_cfsstat(xdrs, objp)
+ XDR *xdrs;
+ cfsstat *objp;
+ {
+ if (!xdr_enum(xdrs, (enum_t *)objp)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_ciphers(xdrs, objp)
+ XDR *xdrs;
+ ciphers *objp;
+ {
+ if (!xdr_enum(xdrs, (enum_t *)objp)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_cfs_adm_deskey(xdrs, objp)
+ XDR *xdrs;
+ cfs_adm_deskey *objp;
+ {
+ if (!xdr_long(xdrs, &objp->pl)) {
+ return (FALSE);
+ }
+ if (!xdr_vector(xdrs, (char *)objp->primary, 8, sizeof(u_char), xdr_u_char)) {
+ return (FALSE);
+ }
+ if (!xdr_vector(xdrs, (char *)objp->secondary, 8, sizeof(u_char), xdr_u_char)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_cfs_adm_3deskey(xdrs, objp)
+ XDR *xdrs;
+ cfs_adm_3deskey *objp;
+ {
+ if (!xdr_long(xdrs, &objp->pl)) {
+ return (FALSE);
+ }
+ if (!xdr_vector(xdrs, (char *)objp->primary1, 8, sizeof(u_char), xdr_u_char)) {
+ return (FALSE);
+ }
+ if (!xdr_vector(xdrs, (char *)objp->primary2, 8, sizeof(u_char), xdr_u_char)) {
+ return (FALSE);
+ }
+ if (!xdr_vector(xdrs, (char *)objp->secondary1, 8, sizeof(u_char), xdr_u_char)) {
+ return (FALSE);
+ }
+ if (!xdr_vector(xdrs, (char *)objp->secondary2, 8, sizeof(u_char), xdr_u_char)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_cfs_adm_blowkey(xdrs, objp)
+ XDR *xdrs;
+ cfs_adm_blowkey *objp;
+ {
+ if (!xdr_long(xdrs, &objp->pl)) {
+ return (FALSE);
+ }
+ if (!xdr_vector(xdrs, (char *)objp->primary, 16, sizeof(u_char), xdr_u_char)) {
+ return (FALSE);
+ }
+ if (!xdr_vector(xdrs, (char *)objp->secondary, 16, sizeof(u_char), xdr_u_char)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_cfs_adm_mcgkey(xdrs, objp)
+ XDR *xdrs;
+ cfs_adm_mcgkey *objp;
+ {
+ if (!xdr_long(xdrs, &objp->pl)) {
+ return (FALSE);
+ }
+ if (!xdr_vector(xdrs, (char *)objp->primary, 16, sizeof(u_char), xdr_u_char)) {
+ return (FALSE);
+ }
+ if (!xdr_vector(xdrs, (char *)objp->secondary, 16, sizeof(u_char), xdr_u_char)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_cfs_adm_saferkey(xdrs, objp)
+ XDR *xdrs;
+ cfs_adm_saferkey *objp;
+ {
+ if (!xdr_long(xdrs, &objp->pl)) {
+ return (FALSE);
+ }
+ if (!xdr_vector(xdrs, (char *)objp->primary, 16, sizeof(u_char), xdr_u_char)) {
+ return (FALSE);
+ }
+ if (!xdr_vector(xdrs, (char *)objp->secondary, 16, sizeof(u_char), xdr_u_char)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_cfs_admkey(xdrs, objp)
+ XDR *xdrs;
+ cfs_admkey *objp;
+ {
+ if (!xdr_ciphers(xdrs, &objp->cipher)) {
+ return (FALSE);
+ }
+ switch (objp->cipher) {
+ case CFS_STD_DES:
+ if (!xdr_cfs_adm_deskey(xdrs, &objp->cfs_admkey_u.deskey)) {
+ return (FALSE);
+ }
+ break;
+ case CFS_THREE_DES:
+ if (!xdr_cfs_adm_3deskey(xdrs, &objp->cfs_admkey_u.des3key)) {
+ return (FALSE);
+ }
+ break;
+ case CFS_BLOWFISH:
+ if (!xdr_cfs_adm_blowkey(xdrs, &objp->cfs_admkey_u.blowkey)) {
+ return (FALSE);
+ }
+ break;
+ case CFS_MACGUFFIN:
+ if (!xdr_cfs_adm_mcgkey(xdrs, &objp->cfs_admkey_u.mcgkey)) {
+ return (FALSE);
+ }
+ break;
+ case CFS_SAFER_SK128:
+ if (!xdr_cfs_adm_saferkey(xdrs, &objp->cfs_admkey_u.saferkey)) {
+ return (FALSE);
+ }
+ break;
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_cfs_attachargs(xdrs, objp)
+ XDR *xdrs;
+ cfs_attachargs *objp;
+ {
+ if (!xdr_string(xdrs, &objp->dirname, CFS_MAXNAME)) {
+ return (FALSE);
+ }
+ if (!xdr_string(xdrs, &objp->name, CFS_MAXCOMP)) {
+ return (FALSE);
+ }
+ if (!xdr_cfs_admkey(xdrs, &objp->key)) {
+ return (FALSE);
+ }
+ if (!xdr_int(xdrs, &objp->uid)) {
+ return (FALSE);
+ }
+ if (!xdr_int(xdrs, &objp->highsec)) {
+ return (FALSE);
+ }
+ if (!xdr_bool(xdrs, &objp->anon)) {
+ return (FALSE);
+ }
+ if (!xdr_int(xdrs, &objp->expire)) {
+ return (FALSE);
+ }
+ if (!xdr_int(xdrs, &objp->idle)) {
+ return (FALSE);
+ }
+ if (!xdr_int(xdrs, &objp->smsize)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_cfs_detachargs(xdrs, objp)
+ XDR *xdrs;
+ cfs_detachargs *objp;
+ {
+ if (!xdr_string(xdrs, &objp->name, CFS_MAXCOMP)) {
+ return (FALSE);
+ }
+ if (!xdr_int(xdrs, &objp->uid)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
diff -crN ./nfsproto.h ../cfs-1.3.1-LnxSlckwr/nfsproto.h
*** ./nfsproto.h Thu Jan 1 01:00:00 1970
--- ../cfs-1.3.1-LnxSlckwr/nfsproto.h Mon Dec 18 04:00:52 1995
***************
*** 0 ****
--- 1,320 ----
+ /*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+ #include <rpc/types.h>
+
+ #define NFS_PORT 2049
+ #define NFS_MAXDATA 8192
+ #define NFS_MAXPATHLEN 1024
+ #define NFS_MAXNAMLEN 255
+ #define NFS_FHSIZE 32
+ #define NFS_COOKIESIZE 4
+ #define NFS_FIFO_DEV -1
+ #define NFSMODE_FMT 0170000
+ #define NFSMODE_DIR 0040000
+ #define NFSMODE_CHR 0020000
+ #define NFSMODE_BLK 0060000
+ #define NFSMODE_REG 0100000
+ #define NFSMODE_LNK 0120000
+ #define NFSMODE_SOCK 0140000
+ #define NFSMODE_FIFO 0010000
+
+ enum nfsstat {
+ NFS_OK = 0,
+ NFSERR_PERM = 1,
+ NFSERR_NOENT = 2,
+ NFSERR_IO = 5,
+ NFSERR_NXIO = 6,
+ NFSERR_ACCES = 13,
+ NFSERR_EXIST = 17,
+ NFSERR_NODEV = 19,
+ NFSERR_NOTDIR = 20,
+ NFSERR_ISDIR = 21,
+ NFSERR_FBIG = 27,
+ NFSERR_NOSPC = 28,
+ NFSERR_ROFS = 30,
+ NFSERR_NAMETOOLONG = 63,
+ NFSERR_NOTEMPTY = 66,
+ NFSERR_DQUOT = 69,
+ NFSERR_STALE = 70,
+ NFSERR_WFLUSH = 99,
+ };
+ typedef enum nfsstat nfsstat;
+ bool_t xdr_nfsstat();
+
+ enum ftype {
+ NFNON = 0,
+ NFREG = 1,
+ NFDIR = 2,
+ NFBLK = 3,
+ NFCHR = 4,
+ NFLNK = 5,
+ NFSOCK = 6,
+ NFBAD = 7,
+ NFFIFO = 8,
+ };
+ typedef enum ftype ftype;
+ bool_t xdr_ftype();
+
+ struct nfs_fh {
+ char data[NFS_FHSIZE];
+ };
+ typedef struct nfs_fh nfs_fh;
+ bool_t xdr_nfs_fh();
+
+ struct nfstime {
+ u_int seconds;
+ u_int useconds;
+ };
+ typedef struct nfstime nfstime;
+ bool_t xdr_nfstime();
+
+ struct fattr {
+ ftype type;
+ u_int mode;
+ u_int nlink;
+ u_int uid;
+ u_int gid;
+ u_int size;
+ u_int blocksize;
+ u_int rdev;
+ u_int blocks;
+ u_int fsid;
+ u_int fileid;
+ nfstime atime;
+ nfstime mtime;
+ nfstime ctime;
+ };
+ typedef struct fattr fattr;
+ bool_t xdr_fattr();
+
+ struct sattr {
+ u_int mode;
+ u_int uid;
+ u_int gid;
+ u_int size;
+ nfstime atime;
+ nfstime mtime;
+ };
+ typedef struct sattr sattr;
+ bool_t xdr_sattr();
+
+ typedef char *filename;
+ bool_t xdr_filename();
+
+ typedef char *nfspath;
+ bool_t xdr_nfspath();
+
+ struct attrstat {
+ nfsstat status;
+ union {
+ fattr attributes;
+ } attrstat_u;
+ };
+ typedef struct attrstat attrstat;
+ bool_t xdr_attrstat();
+
+ struct sattrargs {
+ nfs_fh file;
+ sattr attributes;
+ };
+ typedef struct sattrargs sattrargs;
+ bool_t xdr_sattrargs();
+
+ struct diropargs {
+ nfs_fh dir;
+ filename name;
+ };
+ typedef struct diropargs diropargs;
+ bool_t xdr_diropargs();
+
+ struct diropokres {
+ nfs_fh file;
+ fattr attributes;
+ };
+ typedef struct diropokres diropokres;
+ bool_t xdr_diropokres();
+
+ struct diropres {
+ nfsstat status;
+ union {
+ diropokres diropres;
+ } diropres_u;
+ };
+ typedef struct diropres diropres;
+ bool_t xdr_diropres();
+
+ struct readlinkres {
+ nfsstat status;
+ union {
+ nfspath data;
+ } readlinkres_u;
+ };
+ typedef struct readlinkres readlinkres;
+ bool_t xdr_readlinkres();
+
+ struct readargs {
+ nfs_fh file;
+ u_int offset;
+ u_int count;
+ u_int totalcount;
+ };
+ typedef struct readargs readargs;
+ bool_t xdr_readargs();
+
+ struct readokres {
+ fattr attributes;
+ struct {
+ u_int data_len;
+ char *data_val;
+ } data;
+ };
+ typedef struct readokres readokres;
+ bool_t xdr_readokres();
+
+ struct readres {
+ nfsstat status;
+ union {
+ readokres reply;
+ } readres_u;
+ };
+ typedef struct readres readres;
+ bool_t xdr_readres();
+
+ struct writeargs {
+ nfs_fh file;
+ u_int beginoffset;
+ u_int offset;
+ u_int totalcount;
+ struct {
+ u_int data_len;
+ char *data_val;
+ } data;
+ };
+ typedef struct writeargs writeargs;
+ bool_t xdr_writeargs();
+
+ struct createargs {
+ diropargs where;
+ sattr attributes;
+ };
+ typedef struct createargs createargs;
+ bool_t xdr_createargs();
+
+ struct renameargs {
+ diropargs from;
+ diropargs to;
+ };
+ typedef struct renameargs renameargs;
+ bool_t xdr_renameargs();
+
+ struct linkargs {
+ nfs_fh from;
+ diropargs to;
+ };
+ typedef struct linkargs linkargs;
+ bool_t xdr_linkargs();
+
+ struct symlinkargs {
+ diropargs from;
+ nfspath to;
+ sattr attributes;
+ };
+ typedef struct symlinkargs symlinkargs;
+ bool_t xdr_symlinkargs();
+
+ typedef char nfscookie[NFS_COOKIESIZE];
+ bool_t xdr_nfscookie();
+
+ struct readdirargs {
+ nfs_fh dir;
+ nfscookie cookie;
+ u_int count;
+ };
+ typedef struct readdirargs readdirargs;
+ bool_t xdr_readdirargs();
+
+ struct entry {
+ u_int fileid;
+ filename name;
+ nfscookie cookie;
+ struct entry *nextentry;
+ };
+ typedef struct entry entry;
+ bool_t xdr_entry();
+
+ struct dirlist {
+ entry *entries;
+ bool_t eof;
+ };
+ typedef struct dirlist dirlist;
+ bool_t xdr_dirlist();
+
+ struct readdirres {
+ nfsstat status;
+ union {
+ dirlist reply;
+ } readdirres_u;
+ };
+ typedef struct readdirres readdirres;
+ bool_t xdr_readdirres();
+
+ struct statfsokres {
+ u_int tsize;
+ u_int bsize;
+ u_int blocks;
+ u_int bfree;
+ u_int bavail;
+ };
+ typedef struct statfsokres statfsokres;
+ bool_t xdr_statfsokres();
+
+ struct statfsres {
+ nfsstat status;
+ union {
+ statfsokres reply;
+ } statfsres_u;
+ };
+ typedef struct statfsres statfsres;
+ bool_t xdr_statfsres();
+
+ #define NFS_PROGRAM ((u_long)100003)
+ #define NFS_VERSION ((u_long)2)
+ #define NFSPROC_NULL ((u_long)0)
+ extern void *nfsproc_null_2();
+ #define NFSPROC_GETATTR ((u_long)1)
+ extern attrstat *nfsproc_getattr_2();
+ #define NFSPROC_SETATTR ((u_long)2)
+ extern attrstat *nfsproc_setattr_2();
+ #define NFSPROC_ROOT ((u_long)3)
+ extern void *nfsproc_root_2();
+ #define NFSPROC_LOOKUP ((u_long)4)
+ extern diropres *nfsproc_lookup_2();
+ #define NFSPROC_READLINK ((u_long)5)
+ extern readlinkres *nfsproc_readlink_2();
+ #define NFSPROC_READ ((u_long)6)
+ extern readres *nfsproc_read_2();
+ #define NFSPROC_WRITECACHE ((u_long)7)
+ extern void *nfsproc_writecache_2();
+ #define NFSPROC_WRITE ((u_long)8)
+ extern attrstat *nfsproc_write_2();
+ #define NFSPROC_CREATE ((u_long)9)
+ extern diropres *nfsproc_create_2();
+ #define NFSPROC_REMOVE ((u_long)10)
+ extern nfsstat *nfsproc_remove_2();
+ #define NFSPROC_RENAME ((u_long)11)
+ extern nfsstat *nfsproc_rename_2();
+ #define NFSPROC_LINK ((u_long)12)
+ extern nfsstat *nfsproc_link_2();
+ #define NFSPROC_SYMLINK ((u_long)13)
+ extern nfsstat *nfsproc_symlink_2();
+ #define NFSPROC_MKDIR ((u_long)14)
+ extern diropres *nfsproc_mkdir_2();
+ #define NFSPROC_RMDIR ((u_long)15)
+ extern nfsstat *nfsproc_rmdir_2();
+ #define NFSPROC_READDIR ((u_long)16)
+ extern readdirres *nfsproc_readdir_2();
+ #define NFSPROC_STATFS ((u_long)17)
+ extern statfsres *nfsproc_statfs_2();
diff -crN ./nfsproto_svr.c ../cfs-1.3.1-LnxSlckwr/nfsproto_svr.c
*** ./nfsproto_svr.c Thu Jan 1 01:00:00 1970
--- ../cfs-1.3.1-LnxSlckwr/nfsproto_svr.c Mon Dec 18 04:00:52 1995
***************
*** 0 ****
--- 1,163 ----
+ /*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+ #include <stdio.h>
+ #include <rpc/rpc.h>
+ #include "nfsproto.h"
+
+ void
+ nfs_program_2(rqstp, transp)
+ struct svc_req *rqstp;
+ register SVCXPRT *transp;
+ {
+ union {
+ nfs_fh nfsproc_getattr_2_arg;
+ sattrargs nfsproc_setattr_2_arg;
+ diropargs nfsproc_lookup_2_arg;
+ nfs_fh nfsproc_readlink_2_arg;
+ readargs nfsproc_read_2_arg;
+ writeargs nfsproc_write_2_arg;
+ createargs nfsproc_create_2_arg;
+ diropargs nfsproc_remove_2_arg;
+ renameargs nfsproc_rename_2_arg;
+ linkargs nfsproc_link_2_arg;
+ symlinkargs nfsproc_symlink_2_arg;
+ createargs nfsproc_mkdir_2_arg;
+ diropargs nfsproc_rmdir_2_arg;
+ readdirargs nfsproc_readdir_2_arg;
+ nfs_fh nfsproc_statfs_2_arg;
+ } argument;
+ char *result;
+ bool_t (*xdr_argument)(), (*xdr_result)();
+ char *(*local)();
+
+ switch (rqstp->rq_proc) {
+ case NFSPROC_NULL:
+ xdr_argument = xdr_void;
+ xdr_result = xdr_void;
+ local = (char *(*)()) nfsproc_null_2;
+ break;
+
+ case NFSPROC_GETATTR:
+ xdr_argument = xdr_nfs_fh;
+ xdr_result = xdr_attrstat;
+ local = (char *(*)()) nfsproc_getattr_2;
+ break;
+
+ case NFSPROC_SETATTR:
+ xdr_argument = xdr_sattrargs;
+ xdr_result = xdr_attrstat;
+ local = (char *(*)()) nfsproc_setattr_2;
+ break;
+
+ case NFSPROC_ROOT:
+ xdr_argument = xdr_void;
+ xdr_result = xdr_void;
+ local = (char *(*)()) nfsproc_root_2;
+ break;
+
+ case NFSPROC_LOOKUP:
+ xdr_argument = xdr_diropargs;
+ xdr_result = xdr_diropres;
+ local = (char *(*)()) nfsproc_lookup_2;
+ break;
+
+ case NFSPROC_READLINK:
+ xdr_argument = xdr_nfs_fh;
+ xdr_result = xdr_readlinkres;
+ local = (char *(*)()) nfsproc_readlink_2;
+ break;
+
+ case NFSPROC_READ:
+ xdr_argument = xdr_readargs;
+ xdr_result = xdr_readres;
+ local = (char *(*)()) nfsproc_read_2;
+ break;
+
+ case NFSPROC_WRITECACHE:
+ xdr_argument = xdr_void;
+ xdr_result = xdr_void;
+ local = (char *(*)()) nfsproc_writecache_2;
+ break;
+
+ case NFSPROC_WRITE:
+ xdr_argument = xdr_writeargs;
+ xdr_result = xdr_attrstat;
+ local = (char *(*)()) nfsproc_write_2;
+ break;
+
+ case NFSPROC_CREATE:
+ xdr_argument = xdr_createargs;
+ xdr_result = xdr_diropres;
+ local = (char *(*)()) nfsproc_create_2;
+ break;
+
+ case NFSPROC_REMOVE:
+ xdr_argument = xdr_diropargs;
+ xdr_result = xdr_nfsstat;
+ local = (char *(*)()) nfsproc_remove_2;
+ break;
+
+ case NFSPROC_RENAME:
+ xdr_argument = xdr_renameargs;
+ xdr_result = xdr_nfsstat;
+ local = (char *(*)()) nfsproc_rename_2;
+ break;
+
+ case NFSPROC_LINK:
+ xdr_argument = xdr_linkargs;
+ xdr_result = xdr_nfsstat;
+ local = (char *(*)()) nfsproc_link_2;
+ break;
+
+ case NFSPROC_SYMLINK:
+ xdr_argument = xdr_symlinkargs;
+ xdr_result = xdr_nfsstat;
+ local = (char *(*)()) nfsproc_symlink_2;
+ break;
+
+ case NFSPROC_MKDIR:
+ xdr_argument = xdr_createargs;
+ xdr_result = xdr_diropres;
+ local = (char *(*)()) nfsproc_mkdir_2;
+ break;
+
+ case NFSPROC_RMDIR:
+ xdr_argument = xdr_diropargs;
+ xdr_result = xdr_nfsstat;
+ local = (char *(*)()) nfsproc_rmdir_2;
+ break;
+
+ case NFSPROC_READDIR:
+ xdr_argument = xdr_readdirargs;
+ xdr_result = xdr_readdirres;
+ local = (char *(*)()) nfsproc_readdir_2;
+ break;
+
+ case NFSPROC_STATFS:
+ xdr_argument = xdr_nfs_fh;
+ xdr_result = xdr_statfsres;
+ local = (char *(*)()) nfsproc_statfs_2;
+ break;
+
+ default:
+ svcerr_noproc(transp);
+ return;
+ }
+ bzero((char *)&argument, sizeof(argument));
+ if (!svc_getargs(transp, xdr_argument, &argument)) {
+ svcerr_decode(transp);
+ return;
+ }
+ result = (*local)(&argument, rqstp);
+ if (result != NULL && !svc_sendreply(transp, xdr_result, result)) {
+ svcerr_systemerr(transp);
+ }
+ if (!svc_freeargs(transp, xdr_argument, &argument)) {
+ fprintf(stderr, "unable to free arguments");
+ exit(1);
+ }
+ return;
+ }
diff -crN ./nfsproto_xdr.c ../cfs-1.3.1-LnxSlckwr/nfsproto_xdr.c
*** ./nfsproto_xdr.c Thu Jan 1 01:00:00 1970
--- ../cfs-1.3.1-LnxSlckwr/nfsproto_xdr.c Mon Dec 18 04:00:52 1995
***************
*** 0 ****
--- 1,503 ----
+ /*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+ #include <rpc/rpc.h>
+ #include "nfsproto.h"
+
+ bool_t
+ xdr_nfsstat(xdrs, objp)
+ XDR *xdrs;
+ nfsstat *objp;
+ {
+ if (!xdr_enum(xdrs, (enum_t *)objp)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_ftype(xdrs, objp)
+ XDR *xdrs;
+ ftype *objp;
+ {
+ if (!xdr_enum(xdrs, (enum_t *)objp)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_nfs_fh(xdrs, objp)
+ XDR *xdrs;
+ nfs_fh *objp;
+ {
+ if (!xdr_opaque(xdrs, objp->data, NFS_FHSIZE)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_nfstime(xdrs, objp)
+ XDR *xdrs;
+ nfstime *objp;
+ {
+ if (!xdr_u_int(xdrs, &objp->seconds)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->useconds)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_fattr(xdrs, objp)
+ XDR *xdrs;
+ fattr *objp;
+ {
+ if (!xdr_ftype(xdrs, &objp->type)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->mode)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->nlink)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->uid)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->gid)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->size)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->blocksize)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->rdev)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->blocks)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->fsid)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->fileid)) {
+ return (FALSE);
+ }
+ if (!xdr_nfstime(xdrs, &objp->atime)) {
+ return (FALSE);
+ }
+ if (!xdr_nfstime(xdrs, &objp->mtime)) {
+ return (FALSE);
+ }
+ if (!xdr_nfstime(xdrs, &objp->ctime)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_sattr(xdrs, objp)
+ XDR *xdrs;
+ sattr *objp;
+ {
+ if (!xdr_u_int(xdrs, &objp->mode)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->uid)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->gid)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->size)) {
+ return (FALSE);
+ }
+ if (!xdr_nfstime(xdrs, &objp->atime)) {
+ return (FALSE);
+ }
+ if (!xdr_nfstime(xdrs, &objp->mtime)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_filename(xdrs, objp)
+ XDR *xdrs;
+ filename *objp;
+ {
+ if (!xdr_string(xdrs, objp, NFS_MAXNAMLEN)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_nfspath(xdrs, objp)
+ XDR *xdrs;
+ nfspath *objp;
+ {
+ if (!xdr_string(xdrs, objp, NFS_MAXPATHLEN)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_attrstat(xdrs, objp)
+ XDR *xdrs;
+ attrstat *objp;
+ {
+ if (!xdr_nfsstat(xdrs, &objp->status)) {
+ return (FALSE);
+ }
+ switch (objp->status) {
+ case NFS_OK:
+ if (!xdr_fattr(xdrs, &objp->attrstat_u.attributes)) {
+ return (FALSE);
+ }
+ break;
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_sattrargs(xdrs, objp)
+ XDR *xdrs;
+ sattrargs *objp;
+ {
+ if (!xdr_nfs_fh(xdrs, &objp->file)) {
+ return (FALSE);
+ }
+ if (!xdr_sattr(xdrs, &objp->attributes)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_diropargs(xdrs, objp)
+ XDR *xdrs;
+ diropargs *objp;
+ {
+ if (!xdr_nfs_fh(xdrs, &objp->dir)) {
+ return (FALSE);
+ }
+ if (!xdr_filename(xdrs, &objp->name)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_diropokres(xdrs, objp)
+ XDR *xdrs;
+ diropokres *objp;
+ {
+ if (!xdr_nfs_fh(xdrs, &objp->file)) {
+ return (FALSE);
+ }
+ if (!xdr_fattr(xdrs, &objp->attributes)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_diropres(xdrs, objp)
+ XDR *xdrs;
+ diropres *objp;
+ {
+ if (!xdr_nfsstat(xdrs, &objp->status)) {
+ return (FALSE);
+ }
+ switch (objp->status) {
+ case NFS_OK:
+ if (!xdr_diropokres(xdrs, &objp->diropres_u.diropres)) {
+ return (FALSE);
+ }
+ break;
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_readlinkres(xdrs, objp)
+ XDR *xdrs;
+ readlinkres *objp;
+ {
+ if (!xdr_nfsstat(xdrs, &objp->status)) {
+ return (FALSE);
+ }
+ switch (objp->status) {
+ case NFS_OK:
+ if (!xdr_nfspath(xdrs, &objp->readlinkres_u.data)) {
+ return (FALSE);
+ }
+ break;
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_readargs(xdrs, objp)
+ XDR *xdrs;
+ readargs *objp;
+ {
+ if (!xdr_nfs_fh(xdrs, &objp->file)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->offset)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->count)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->totalcount)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_readokres(xdrs, objp)
+ XDR *xdrs;
+ readokres *objp;
+ {
+ if (!xdr_fattr(xdrs, &objp->attributes)) {
+ return (FALSE);
+ }
+ if (!xdr_bytes(xdrs, (char **)&objp->data.data_val, (u_int *)&objp->data.data_len, NFS_MAXDATA)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_readres(xdrs, objp)
+ XDR *xdrs;
+ readres *objp;
+ {
+ if (!xdr_nfsstat(xdrs, &objp->status)) {
+ return (FALSE);
+ }
+ switch (objp->status) {
+ case NFS_OK:
+ if (!xdr_readokres(xdrs, &objp->readres_u.reply)) {
+ return (FALSE);
+ }
+ break;
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_writeargs(xdrs, objp)
+ XDR *xdrs;
+ writeargs *objp;
+ {
+ if (!xdr_nfs_fh(xdrs, &objp->file)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->beginoffset)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->offset)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->totalcount)) {
+ return (FALSE);
+ }
+ if (!xdr_bytes(xdrs, (char **)&objp->data.data_val, (u_int *)&objp->data.data_len, NFS_MAXDATA)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_createargs(xdrs, objp)
+ XDR *xdrs;
+ createargs *objp;
+ {
+ if (!xdr_diropargs(xdrs, &objp->where)) {
+ return (FALSE);
+ }
+ if (!xdr_sattr(xdrs, &objp->attributes)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_renameargs(xdrs, objp)
+ XDR *xdrs;
+ renameargs *objp;
+ {
+ if (!xdr_diropargs(xdrs, &objp->from)) {
+ return (FALSE);
+ }
+ if (!xdr_diropargs(xdrs, &objp->to)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_linkargs(xdrs, objp)
+ XDR *xdrs;
+ linkargs *objp;
+ {
+ if (!xdr_nfs_fh(xdrs, &objp->from)) {
+ return (FALSE);
+ }
+ if (!xdr_diropargs(xdrs, &objp->to)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_symlinkargs(xdrs, objp)
+ XDR *xdrs;
+ symlinkargs *objp;
+ {
+ if (!xdr_diropargs(xdrs, &objp->from)) {
+ return (FALSE);
+ }
+ if (!xdr_nfspath(xdrs, &objp->to)) {
+ return (FALSE);
+ }
+ if (!xdr_sattr(xdrs, &objp->attributes)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_nfscookie(xdrs, objp)
+ XDR *xdrs;
+ nfscookie objp;
+ {
+ if (!xdr_opaque(xdrs, objp, NFS_COOKIESIZE)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_readdirargs(xdrs, objp)
+ XDR *xdrs;
+ readdirargs *objp;
+ {
+ if (!xdr_nfs_fh(xdrs, &objp->dir)) {
+ return (FALSE);
+ }
+ if (!xdr_nfscookie(xdrs, objp->cookie)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->count)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_entry(xdrs, objp)
+ XDR *xdrs;
+ entry *objp;
+ {
+ if (!xdr_u_int(xdrs, &objp->fileid)) {
+ return (FALSE);
+ }
+ if (!xdr_filename(xdrs, &objp->name)) {
+ return (FALSE);
+ }
+ if (!xdr_nfscookie(xdrs, objp->cookie)) {
+ return (FALSE);
+ }
+ if (!xdr_pointer(xdrs, (char **)&objp->nextentry, sizeof(entry), xdr_entry)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_dirlist(xdrs, objp)
+ XDR *xdrs;
+ dirlist *objp;
+ {
+ if (!xdr_pointer(xdrs, (char **)&objp->entries, sizeof(entry), xdr_entry)) {
+ return (FALSE);
+ }
+ if (!xdr_bool(xdrs, &objp->eof)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_readdirres(xdrs, objp)
+ XDR *xdrs;
+ readdirres *objp;
+ {
+ if (!xdr_nfsstat(xdrs, &objp->status)) {
+ return (FALSE);
+ }
+ switch (objp->status) {
+ case NFS_OK:
+ if (!xdr_dirlist(xdrs, &objp->readdirres_u.reply)) {
+ return (FALSE);
+ }
+ break;
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_statfsokres(xdrs, objp)
+ XDR *xdrs;
+ statfsokres *objp;
+ {
+ if (!xdr_u_int(xdrs, &objp->tsize)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->bsize)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->blocks)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->bfree)) {
+ return (FALSE);
+ }
+ if (!xdr_u_int(xdrs, &objp->bavail)) {
+ return (FALSE);
+ }
+ return (TRUE);
+ }
+
+ bool_t
+ xdr_statfsres(xdrs, objp)
+ XDR *xdrs;
+ statfsres *objp;
+ {
+ if (!xdr_nfsstat(xdrs, &objp->status)) {
+ return (FALSE);
+ }
+ switch (objp->status) {
+ case NFS_OK:
+ if (!xdr_statfsokres(xdrs, &objp->statfsres_u.reply)) {
+ return (FALSE);
+ }
+ break;
+ }
+ return (TRUE);
+ }