home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Boot Disc 8
/
boot-disc-1997-04.iso
/
PDA_Soft
/
Psion
/
comms
/
p3nfs
/
nfsd
/
nfs_prot.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-03-17
|
5KB
|
218 lines
/*
* Please do not edit this file.
* It was generated using rpcgen.
* And tuned by me (Rudi)
*/
#define PORTMAP
#ifdef __svr4__
#include <unistd.h>
#endif
#include <stdio.h>
#include <rpc/rpc.h>
#include "nfs_prot.h"
#include "mp.h"
#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;
}
bzero((char *)&argument, sizeof(argument));
#ifndef __svr4__
if (!svc_getargs(transp, xdr_argument, &argument)) {
#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);
}
#ifndef __svr4__
if (!svc_freeargs(transp, xdr_argument, &argument)) {
#else
if (!svc_freeargs(transp, xdr_argument, (char *)&argument)) {
#endif
fprintf(stderr, "unable to free arguments");
exit(1);
}
return;
}