xref: /openbsd-src/usr.sbin/amd/rpcx/nfs_prot_svc.c (revision 3cf360ac98795930edd42590feda79a42523ef73)
1df930be7Sderaadt /*
2*3cf360acSguenther  * Please do not edit this file.
3*3cf360acSguenther  * It was generated using rpcgen.
4df930be7Sderaadt  */
5df930be7Sderaadt 
6*3cf360acSguenther #include "nfs_prot.h"
7df930be7Sderaadt #include "am.h"
8*3cf360acSguenther #include <arpa/inet.h>
9*3cf360acSguenther #include <unistd.h>
10*3cf360acSguenther #include <stdio.h>
11*3cf360acSguenther #include <stdlib.h>/* getenv, exit */
12*3cf360acSguenther #include <rpc/pmap_clnt.h> /* for pmap_unset */
13*3cf360acSguenther #include <string.h> /* strcmp */
14*3cf360acSguenther #include <netdb.h>
15*3cf360acSguenther #include <signal.h>
16*3cf360acSguenther #include <sys/ttycom.h>/* TIOCNOTTY */
17*3cf360acSguenther #ifdef __cplusplus
18*3cf360acSguenther #include <sysent.h> /* getdtablesize, open */
19*3cf360acSguenther #endif /* __cplusplus */
20*3cf360acSguenther #include <memory.h>
21*3cf360acSguenther #include <sys/socket.h>
22*3cf360acSguenther #include <netinet/in.h>
23*3cf360acSguenther #include <syslog.h>
24*3cf360acSguenther #include <errno.h>
25*3cf360acSguenther 
26*3cf360acSguenther #ifdef __STDC__
27*3cf360acSguenther #define SIG_PF void(*)(int)
28*3cf360acSguenther #endif
29*3cf360acSguenther 
30*3cf360acSguenther #ifdef DEBUG
31*3cf360acSguenther #define RPC_SVC_FG
32*3cf360acSguenther #endif
33*3cf360acSguenther 
34*3cf360acSguenther #define _RPCSVC_CLOSEDOWN 120
35*3cf360acSguenther extern int _rpcpmstart;		/* Started by a port monitor ? */
36*3cf360acSguenther extern int _rpcfdtype;		/* Whether Stream or Datagram ? */
37*3cf360acSguenther 
38*3cf360acSguenther 
39*3cf360acSguenther void	nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp);
40df930be7Sderaadt 
419cd31872Sguenther void
nfs_program_2(struct svc_req * rqstp,SVCXPRT * transp)429cd31872Sguenther nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp)
43df930be7Sderaadt {
44df930be7Sderaadt 	union {
45df930be7Sderaadt 		nfs_fh nfsproc_getattr_2_arg;
46df930be7Sderaadt 		sattrargs nfsproc_setattr_2_arg;
47df930be7Sderaadt 		diropargs nfsproc_lookup_2_arg;
48df930be7Sderaadt 		nfs_fh nfsproc_readlink_2_arg;
49df930be7Sderaadt 		readargs nfsproc_read_2_arg;
50df930be7Sderaadt 		writeargs nfsproc_write_2_arg;
51df930be7Sderaadt 		createargs nfsproc_create_2_arg;
52df930be7Sderaadt 		diropargs nfsproc_remove_2_arg;
53df930be7Sderaadt 		renameargs nfsproc_rename_2_arg;
54df930be7Sderaadt 		linkargs nfsproc_link_2_arg;
55df930be7Sderaadt 		symlinkargs nfsproc_symlink_2_arg;
56df930be7Sderaadt 		createargs nfsproc_mkdir_2_arg;
57df930be7Sderaadt 		diropargs nfsproc_rmdir_2_arg;
58df930be7Sderaadt 		readdirargs nfsproc_readdir_2_arg;
59df930be7Sderaadt 		nfs_fh nfsproc_statfs_2_arg;
60df930be7Sderaadt 	} argument;
61df930be7Sderaadt 	char *result;
62*3cf360acSguenther 	xdrproc_t xdr_argument, xdr_result;
63*3cf360acSguenther 	char *(*local)(char *, struct svc_req *);
64df930be7Sderaadt 
65df930be7Sderaadt 	switch (rqstp->rq_proc) {
66df930be7Sderaadt 	case NFSPROC_NULL:
67*3cf360acSguenther 		xdr_argument = (xdrproc_t) xdr_void;
68*3cf360acSguenther 		xdr_result = (xdrproc_t) xdr_void;
69*3cf360acSguenther 		local = (char *(*)(char *, struct svc_req *)) nfsproc_null_2_svc;
70df930be7Sderaadt 		break;
71df930be7Sderaadt 
72df930be7Sderaadt 	case NFSPROC_GETATTR:
73*3cf360acSguenther 		xdr_argument = (xdrproc_t) xdr_nfs_fh;
74*3cf360acSguenther 		xdr_result = (xdrproc_t) xdr_attrstat;
75*3cf360acSguenther 		local = (char *(*)(char *, struct svc_req *)) nfsproc_getattr_2_svc;
76df930be7Sderaadt 		break;
77df930be7Sderaadt 
78df930be7Sderaadt 	case NFSPROC_SETATTR:
79*3cf360acSguenther 		xdr_argument = (xdrproc_t) xdr_sattrargs;
80*3cf360acSguenther 		xdr_result = (xdrproc_t) xdr_attrstat;
81*3cf360acSguenther 		local = (char *(*)(char *, struct svc_req *)) nfsproc_setattr_2_svc;
82df930be7Sderaadt 		break;
83df930be7Sderaadt 
84df930be7Sderaadt 	case NFSPROC_ROOT:
85*3cf360acSguenther 		xdr_argument = (xdrproc_t) xdr_void;
86*3cf360acSguenther 		xdr_result = (xdrproc_t) xdr_void;
87*3cf360acSguenther 		local = (char *(*)(char *, struct svc_req *)) nfsproc_root_2_svc;
88df930be7Sderaadt 		break;
89df930be7Sderaadt 
90df930be7Sderaadt 	case NFSPROC_LOOKUP:
91*3cf360acSguenther 		xdr_argument = (xdrproc_t) xdr_diropargs;
92*3cf360acSguenther 		xdr_result = (xdrproc_t) xdr_diropres;
93*3cf360acSguenther 		local = (char *(*)(char *, struct svc_req *)) nfsproc_lookup_2_svc;
94df930be7Sderaadt 		break;
95df930be7Sderaadt 
96df930be7Sderaadt 	case NFSPROC_READLINK:
97*3cf360acSguenther 		xdr_argument = (xdrproc_t) xdr_nfs_fh;
98*3cf360acSguenther 		xdr_result = (xdrproc_t) xdr_readlinkres;
99*3cf360acSguenther 		local = (char *(*)(char *, struct svc_req *)) nfsproc_readlink_2_svc;
100df930be7Sderaadt 		break;
101df930be7Sderaadt 
102df930be7Sderaadt 	case NFSPROC_READ:
103*3cf360acSguenther 		xdr_argument = (xdrproc_t) xdr_readargs;
104*3cf360acSguenther 		xdr_result = (xdrproc_t) xdr_readres;
105*3cf360acSguenther 		local = (char *(*)(char *, struct svc_req *)) nfsproc_read_2_svc;
106df930be7Sderaadt 		break;
107df930be7Sderaadt 
108df930be7Sderaadt 	case NFSPROC_WRITECACHE:
109*3cf360acSguenther 		xdr_argument = (xdrproc_t) xdr_void;
110*3cf360acSguenther 		xdr_result = (xdrproc_t) xdr_void;
111*3cf360acSguenther 		local = (char *(*)(char *, struct svc_req *)) nfsproc_writecache_2_svc;
112df930be7Sderaadt 		break;
113df930be7Sderaadt 
114df930be7Sderaadt 	case NFSPROC_WRITE:
115*3cf360acSguenther 		xdr_argument = (xdrproc_t) xdr_writeargs;
116*3cf360acSguenther 		xdr_result = (xdrproc_t) xdr_attrstat;
117*3cf360acSguenther 		local = (char *(*)(char *, struct svc_req *)) nfsproc_write_2_svc;
118df930be7Sderaadt 		break;
119df930be7Sderaadt 
120df930be7Sderaadt 	case NFSPROC_CREATE:
121*3cf360acSguenther 		xdr_argument = (xdrproc_t) xdr_createargs;
122*3cf360acSguenther 		xdr_result = (xdrproc_t) xdr_diropres;
123*3cf360acSguenther 		local = (char *(*)(char *, struct svc_req *)) nfsproc_create_2_svc;
124df930be7Sderaadt 		break;
125df930be7Sderaadt 
126df930be7Sderaadt 	case NFSPROC_REMOVE:
127*3cf360acSguenther 		xdr_argument = (xdrproc_t) xdr_diropargs;
128*3cf360acSguenther 		xdr_result = (xdrproc_t) xdr_nfsstat;
129*3cf360acSguenther 		local = (char *(*)(char *, struct svc_req *)) nfsproc_remove_2_svc;
130df930be7Sderaadt 		break;
131df930be7Sderaadt 
132df930be7Sderaadt 	case NFSPROC_RENAME:
133*3cf360acSguenther 		xdr_argument = (xdrproc_t) xdr_renameargs;
134*3cf360acSguenther 		xdr_result = (xdrproc_t) xdr_nfsstat;
135*3cf360acSguenther 		local = (char *(*)(char *, struct svc_req *)) nfsproc_rename_2_svc;
136df930be7Sderaadt 		break;
137df930be7Sderaadt 
138df930be7Sderaadt 	case NFSPROC_LINK:
139*3cf360acSguenther 		xdr_argument = (xdrproc_t) xdr_linkargs;
140*3cf360acSguenther 		xdr_result = (xdrproc_t) xdr_nfsstat;
141*3cf360acSguenther 		local = (char *(*)(char *, struct svc_req *)) nfsproc_link_2_svc;
142df930be7Sderaadt 		break;
143df930be7Sderaadt 
144df930be7Sderaadt 	case NFSPROC_SYMLINK:
145*3cf360acSguenther 		xdr_argument = (xdrproc_t) xdr_symlinkargs;
146*3cf360acSguenther 		xdr_result = (xdrproc_t) xdr_nfsstat;
147*3cf360acSguenther 		local = (char *(*)(char *, struct svc_req *)) nfsproc_symlink_2_svc;
148df930be7Sderaadt 		break;
149df930be7Sderaadt 
150df930be7Sderaadt 	case NFSPROC_MKDIR:
151*3cf360acSguenther 		xdr_argument = (xdrproc_t) xdr_createargs;
152*3cf360acSguenther 		xdr_result = (xdrproc_t) xdr_diropres;
153*3cf360acSguenther 		local = (char *(*)(char *, struct svc_req *)) nfsproc_mkdir_2_svc;
154df930be7Sderaadt 		break;
155df930be7Sderaadt 
156df930be7Sderaadt 	case NFSPROC_RMDIR:
157*3cf360acSguenther 		xdr_argument = (xdrproc_t) xdr_diropargs;
158*3cf360acSguenther 		xdr_result = (xdrproc_t) xdr_nfsstat;
159*3cf360acSguenther 		local = (char *(*)(char *, struct svc_req *)) nfsproc_rmdir_2_svc;
160df930be7Sderaadt 		break;
161df930be7Sderaadt 
162df930be7Sderaadt 	case NFSPROC_READDIR:
163*3cf360acSguenther 		xdr_argument = (xdrproc_t) xdr_readdirargs;
164*3cf360acSguenther 		xdr_result = (xdrproc_t) xdr_readdirres;
165*3cf360acSguenther 		local = (char *(*)(char *, struct svc_req *)) nfsproc_readdir_2_svc;
166df930be7Sderaadt 		break;
167df930be7Sderaadt 
168df930be7Sderaadt 	case NFSPROC_STATFS:
169*3cf360acSguenther 		xdr_argument = (xdrproc_t) xdr_nfs_fh;
170*3cf360acSguenther 		xdr_result = (xdrproc_t) xdr_statfsres;
171*3cf360acSguenther 		local = (char *(*)(char *, struct svc_req *)) nfsproc_statfs_2_svc;
172df930be7Sderaadt 		break;
173df930be7Sderaadt 
174df930be7Sderaadt 	default:
175df930be7Sderaadt 		svcerr_noproc(transp);
176df930be7Sderaadt 		return;
177df930be7Sderaadt 	}
178*3cf360acSguenther 	(void) memset((char *)&argument, 0, sizeof (argument));
179*3cf360acSguenther 	if (!svc_getargs(transp, xdr_argument, (caddr_t) &argument)) {
180df930be7Sderaadt 		svcerr_decode(transp);
181df930be7Sderaadt 		return;
182df930be7Sderaadt 	}
183*3cf360acSguenther 	result = (*local)((char *)&argument, rqstp);
184*3cf360acSguenther 	if (result != NULL && !svc_sendreply(transp, xdr_result, result)) {
185df930be7Sderaadt 		svcerr_systemerr(transp);
186*3cf360acSguenther 	}
187*3cf360acSguenther 	if (!svc_freeargs(transp, xdr_argument, (caddr_t) &argument)) {
188*3cf360acSguenther 		plog(XLOG_FATAL, "unable to free rpc arguments in nfs_program");
189df930be7Sderaadt 		going_down(1);
190df930be7Sderaadt 	}
191*3cf360acSguenther 	return;
192df930be7Sderaadt }
193