get fstype from mount entry
[unix-history] / usr / src / usr.sbin / amd / rpcx / amq_svc.c
CommitLineData
d848bc15 1/*
d848bc15
KM
2 * Copyright (c) 1990 Jan-Simon Pendry
3 * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
12a3ab7b
KB
4 * Copyright (c) 1990, 1993
5 * The Regents of the University of California. All rights reserved.
d848bc15
KM
6 *
7 * This code is derived from software contributed to Berkeley by
8 * Jan-Simon Pendry at Imperial College, London.
9 *
10 * %sccs.include.redist.c%
11 *
12a3ab7b 12 * @(#)amq_svc.c 8.1 (Berkeley) %G%
8d2991d5 13 *
332f0791 14 * $Id: amq_svc.c,v 5.2.2.1 1992/02/09 15:09:26 jsp beta $
8d2991d5 15 *
d848bc15
KM
16 */
17
18#include "am.h"
19#include "amq.h"
20extern bool_t xdr_amq_mount_info_qelem();
21
22void
23amq_program_1(rqstp, transp)
24 struct svc_req *rqstp;
25 SVCXPRT *transp;
26{
27 union {
28 amq_string amqproc_mnttree_1_arg;
29 amq_string amqproc_umnt_1_arg;
30 amq_setopt amqproc_setopt_1_arg;
2f619045 31 amq_string amqproc_mount_1_arg;
d848bc15
KM
32 } argument;
33 char *result;
34 bool_t (*xdr_argument)(), (*xdr_result)();
35 char *(*local)();
36
37 switch (rqstp->rq_proc) {
38 case AMQPROC_NULL:
39 xdr_argument = xdr_void;
40 xdr_result = xdr_void;
41 local = (char *(*)()) amqproc_null_1;
42 break;
43
44 case AMQPROC_MNTTREE:
45 xdr_argument = xdr_amq_string;
46 xdr_result = xdr_amq_mount_tree_p;
47 local = (char *(*)()) amqproc_mnttree_1;
48 break;
49
50 case AMQPROC_UMNT:
51 xdr_argument = xdr_amq_string;
52 xdr_result = xdr_void;
53 local = (char *(*)()) amqproc_umnt_1;
54 break;
55
56 case AMQPROC_STATS:
57 xdr_argument = xdr_void;
58 xdr_result = xdr_amq_mount_stats;
59 local = (char *(*)()) amqproc_stats_1;
60 break;
61
62 case AMQPROC_EXPORT:
63 xdr_argument = xdr_void;
64 xdr_result = xdr_amq_mount_tree_list;
65 local = (char *(*)()) amqproc_export_1;
66 break;
67
68 case AMQPROC_SETOPT:
69 xdr_argument = xdr_amq_setopt;
70 xdr_result = xdr_int;
71 local = (char *(*)()) amqproc_setopt_1;
72 break;
73
74 case AMQPROC_GETMNTFS:
75 xdr_argument = xdr_void;
76 xdr_result = xdr_amq_mount_info_qelem;
77 local = (char *(*)()) amqproc_getmntfs_1;
78 break;
79
2f619045
JSP
80 case AMQPROC_MOUNT:
81 xdr_argument = xdr_amq_string;
82 xdr_result = xdr_int;
83 local = (char *(*)()) amqproc_mount_1;
84 break;
85
86 case AMQPROC_GETVERS:
87 xdr_argument = xdr_void;
88 xdr_result = xdr_amq_string;
89 local = (char *(*)()) amqproc_getvers_1;
90 break;
91
d848bc15
KM
92 default:
93 svcerr_noproc(transp);
94 return;
95 }
96 bzero((char *)&argument, sizeof(argument));
97 if (!svc_getargs(transp, xdr_argument, &argument)) {
98 svcerr_decode(transp);
99 return;
100 }
101 result = (*local)(&argument, rqstp);
102 if (result != NULL && !svc_sendreply(transp, xdr_result, result)) {
103 svcerr_systemerr(transp);
104 }
105 if (!svc_freeargs(transp, xdr_argument, &argument)) {
106 plog(XLOG_FATAL, "unable to free rpc arguments in amqprog_1");
107 going_down(1);
108 }
109}
110