diff options
Diffstat (limited to 'plpnfsd/nfs_prot_svc.c')
-rw-r--r-- | plpnfsd/nfs_prot_svc.c | 231 |
1 files changed, 231 insertions, 0 deletions
diff --git a/plpnfsd/nfs_prot_svc.c b/plpnfsd/nfs_prot_svc.c new file mode 100644 index 0000000..f373e74 --- /dev/null +++ b/plpnfsd/nfs_prot_svc.c @@ -0,0 +1,231 @@ +/* + * Please do not edit this file. + * It was generated using rpcgen. + * And tuned by me (Rudi) + */ + +#include "OSdefs.h" + +#define PORTMAP +#ifdef __SVR4 +#include <unistd.h> +#include <stdlib.h> +#endif +#include <stdio.h> +#include <rpc/rpc.h> +#include "nfs_prot.h" +#include "mp.h" +#ifdef __GLIBC__ +#include <string.h> +#endif + +#if 0 +static void nfs_program_2(); + +main() +{ + register SVCXPRT *transp; + + (void) pmap_unset(NFS_PROGRAM, NFS_VERSION); + + transp = svcudp_create(RPC_ANYSOCK); + if (transp == NULL) { + fprintf(stderr, "cannot create udp service."); + exit(1); + } + if (!svc_register(transp, NFS_PROGRAM, NFS_VERSION, nfs_program_2, IPPROTO_UDP)) { + fprintf(stderr, "unable to register (NFS_PROGRAM, NFS_VERSION, udp)."); + exit(1); + } + + transp = svctcp_create(RPC_ANYSOCK, 0, 0); + if (transp == NULL) { + fprintf(stderr, "cannot create tcp service."); + exit(1); + } + if (!svc_register(transp, NFS_PROGRAM, NFS_VERSION, nfs_program_2, IPPROTO_TCP)) { + fprintf(stderr, "unable to register (NFS_PROGRAM, NFS_VERSION, tcp)."); + exit(1); + } + + svc_run(); + fprintf(stderr, "svc_run returned"); + exit(1); + /* NOTREACHED */ +} +#endif + +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; + } + memset((char *)&argument, 0, sizeof(argument)); +#if !defined(__SVR4) && !defined(__FreeBSD__) +#ifdef __GLIBC__ + if (!svc_getargs(transp, (xdrproc_t)xdr_argument, (caddr_t)&argument)) { +#else + if (!svc_getargs(transp, xdr_argument, &argument)) { +#endif +#else + if (!svc_getargs(transp, xdr_argument, (char *)&argument)) { +#endif + svcerr_decode(transp); + return; + } + result = (*local)(&argument, rqstp); +#ifdef linux + if (result != NULL && !svc_sendreply(transp, (xdrproc_t) xdr_result, result)) { +#else + if (result != NULL && !svc_sendreply(transp, xdr_result, result)) { +#endif + svcerr_systemerr(transp); + } +#if !defined(__SVR4) && !defined(__FreeBSD__) +#ifdef __GLIBC__ + if (!svc_freeargs(transp, (xdrproc_t)xdr_argument,(caddr_t)&argument)) { +#else + if (!svc_freeargs(transp, xdr_argument, &argument)) { +#endif +#else + if (!svc_freeargs(transp, xdr_argument, (char *)&argument)) { +#endif + fprintf(stderr, "unable to free arguments"); + exit(1); + } + return; +} |