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 + + + 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 + #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 + #include + #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 + #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 + + #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 + #include + #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 + #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); + } .