xref: /freebsd/sys/nlm/nlm_prot_server.c (revision d9ab5c4abf9e722a4985044dffaeab1bb09c3c88)
1dfdcada3SDoug Rabson /*-
2dfdcada3SDoug Rabson  * Copyright (c) 2008 Isilon Inc http://www.isilon.com/
3dfdcada3SDoug Rabson  * Authors: Doug Rabson <dfr@rabson.org>
4dfdcada3SDoug Rabson  * Developed with Red Inc: Alfred Perlstein <alfred@freebsd.org>
5dfdcada3SDoug Rabson  *
6dfdcada3SDoug Rabson  * Redistribution and use in source and binary forms, with or without
7dfdcada3SDoug Rabson  * modification, are permitted provided that the following conditions
8dfdcada3SDoug Rabson  * are met:
9dfdcada3SDoug Rabson  * 1. Redistributions of source code must retain the above copyright
10dfdcada3SDoug Rabson  *    notice, this list of conditions and the following disclaimer.
11dfdcada3SDoug Rabson  * 2. Redistributions in binary form must reproduce the above copyright
12dfdcada3SDoug Rabson  *    notice, this list of conditions and the following disclaimer in the
13dfdcada3SDoug Rabson  *    documentation and/or other materials provided with the distribution.
14dfdcada3SDoug Rabson  *
15dfdcada3SDoug Rabson  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16dfdcada3SDoug Rabson  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17dfdcada3SDoug Rabson  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18dfdcada3SDoug Rabson  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19dfdcada3SDoug Rabson  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20dfdcada3SDoug Rabson  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21dfdcada3SDoug Rabson  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22dfdcada3SDoug Rabson  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23dfdcada3SDoug Rabson  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24dfdcada3SDoug Rabson  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25dfdcada3SDoug Rabson  * SUCH DAMAGE.
26dfdcada3SDoug Rabson  */
27dfdcada3SDoug Rabson 
28dfdcada3SDoug Rabson #include <sys/cdefs.h>
29dfdcada3SDoug Rabson #ifndef lint
30dfdcada3SDoug Rabson /*static char sccsid[] = "from: @(#)nlm_prot.x 1.8 87/09/21 Copyr 1987 Sun Micro";*/
31dfdcada3SDoug Rabson /*static char sccsid[] = "from: * @(#)nlm_prot.x	2.1 88/08/01 4.0 RPCSRC";*/
32dfdcada3SDoug Rabson __RCSID("$NetBSD: nlm_prot.x,v 1.6 2000/06/07 14:30:15 bouyer Exp $");
33dfdcada3SDoug Rabson #endif /* not lint */
34dfdcada3SDoug Rabson __FBSDID("$FreeBSD$");
35dfdcada3SDoug Rabson 
36dfdcada3SDoug Rabson #include <sys/param.h>
37dfdcada3SDoug Rabson #include <sys/malloc.h>
38dfdcada3SDoug Rabson #include <sys/systm.h>
39dfdcada3SDoug Rabson 
40ee31b83aSDoug Rabson #include <nlm/nlm_prot.h>
41ee31b83aSDoug Rabson #include <nlm/nlm.h>
42dfdcada3SDoug Rabson 
43dfdcada3SDoug Rabson /**********************************************************************/
44dfdcada3SDoug Rabson 
45dfdcada3SDoug Rabson /*
46dfdcada3SDoug Rabson  * Convert between various versions of the protocol structures.
47dfdcada3SDoug Rabson  */
48dfdcada3SDoug Rabson 
49dfdcada3SDoug Rabson static void
50dfdcada3SDoug Rabson nlm_convert_to_nlm4_lock(struct nlm4_lock *dst, struct nlm_lock *src)
51dfdcada3SDoug Rabson {
52dfdcada3SDoug Rabson 
53dfdcada3SDoug Rabson 	dst->caller_name = src->caller_name;
54dfdcada3SDoug Rabson 	dst->fh = src->fh;
55dfdcada3SDoug Rabson 	dst->oh = src->oh;
56dfdcada3SDoug Rabson 	dst->svid = src->svid;
57dfdcada3SDoug Rabson 	dst->l_offset = src->l_offset;
58dfdcada3SDoug Rabson 	dst->l_len = src->l_len;
59dfdcada3SDoug Rabson }
60dfdcada3SDoug Rabson 
61dfdcada3SDoug Rabson static void
62dfdcada3SDoug Rabson nlm_convert_to_nlm4_share(struct nlm4_share *dst, struct nlm_share *src)
63dfdcada3SDoug Rabson {
64dfdcada3SDoug Rabson 
65dfdcada3SDoug Rabson 	dst->caller_name = src->caller_name;
66dfdcada3SDoug Rabson 	dst->fh = src->fh;
67dfdcada3SDoug Rabson 	dst->oh = src->oh;
68dfdcada3SDoug Rabson 	dst->mode = src->mode;
69dfdcada3SDoug Rabson 	dst->access = src->access;
70dfdcada3SDoug Rabson }
71dfdcada3SDoug Rabson 
72dfdcada3SDoug Rabson static void
73dfdcada3SDoug Rabson nlm_convert_to_nlm_holder(struct nlm_holder *dst, struct nlm4_holder *src)
74dfdcada3SDoug Rabson {
75dfdcada3SDoug Rabson 
76dfdcada3SDoug Rabson 	dst->exclusive = src->exclusive;
77dfdcada3SDoug Rabson 	dst->svid = src->svid;
78dfdcada3SDoug Rabson 	dst->oh = src->oh;
79dfdcada3SDoug Rabson 	dst->l_offset = src->l_offset;
80dfdcada3SDoug Rabson 	dst->l_len = src->l_len;
81dfdcada3SDoug Rabson }
82dfdcada3SDoug Rabson 
83dfdcada3SDoug Rabson static void
84dfdcada3SDoug Rabson nlm_convert_to_nlm4_holder(struct nlm4_holder *dst, struct nlm_holder *src)
85dfdcada3SDoug Rabson {
86dfdcada3SDoug Rabson 
87dfdcada3SDoug Rabson 	dst->exclusive = src->exclusive;
88dfdcada3SDoug Rabson 	dst->svid = src->svid;
89dfdcada3SDoug Rabson 	dst->oh = src->oh;
90dfdcada3SDoug Rabson 	dst->l_offset = src->l_offset;
91dfdcada3SDoug Rabson 	dst->l_len = src->l_len;
92dfdcada3SDoug Rabson }
93dfdcada3SDoug Rabson 
94dfdcada3SDoug Rabson static enum nlm_stats
95dfdcada3SDoug Rabson nlm_convert_to_nlm_stats(enum nlm4_stats src)
96dfdcada3SDoug Rabson {
97dfdcada3SDoug Rabson 	if (src > nlm4_deadlck)
98dfdcada3SDoug Rabson 		return nlm_denied;
99dfdcada3SDoug Rabson 	return (enum nlm_stats) src;
100dfdcada3SDoug Rabson }
101dfdcada3SDoug Rabson 
102dfdcada3SDoug Rabson static void
103dfdcada3SDoug Rabson nlm_convert_to_nlm_res(struct nlm_res *dst, struct nlm4_res *src)
104dfdcada3SDoug Rabson {
105dfdcada3SDoug Rabson 	dst->cookie = src->cookie;
106dfdcada3SDoug Rabson 	dst->stat.stat = nlm_convert_to_nlm_stats(src->stat.stat);
107dfdcada3SDoug Rabson }
108dfdcada3SDoug Rabson 
109dfdcada3SDoug Rabson static void
110dfdcada3SDoug Rabson nlm_convert_to_nlm4_res(struct nlm4_res *dst, struct nlm_res *src)
111dfdcada3SDoug Rabson {
112dfdcada3SDoug Rabson 	dst->cookie = src->cookie;
113dfdcada3SDoug Rabson 	dst->stat.stat = (enum nlm4_stats) src->stat.stat;
114dfdcada3SDoug Rabson }
115dfdcada3SDoug Rabson 
116dfdcada3SDoug Rabson /**********************************************************************/
117dfdcada3SDoug Rabson 
118dfdcada3SDoug Rabson /*
119dfdcada3SDoug Rabson  * RPC server stubs.
120dfdcada3SDoug Rabson  */
121dfdcada3SDoug Rabson 
122dfdcada3SDoug Rabson bool_t
123dfdcada3SDoug Rabson nlm_sm_notify_0_svc(struct nlm_sm_status *argp, void *result, struct svc_req *rqstp)
124dfdcada3SDoug Rabson {
125dfdcada3SDoug Rabson 	nlm_sm_notify(argp);
126dfdcada3SDoug Rabson 
127dfdcada3SDoug Rabson 	return (TRUE);
128dfdcada3SDoug Rabson }
129dfdcada3SDoug Rabson 
130dfdcada3SDoug Rabson bool_t
131dfdcada3SDoug Rabson nlm_test_1_svc(struct nlm_testargs *argp, nlm_testres *result, struct svc_req *rqstp)
132dfdcada3SDoug Rabson {
133dfdcada3SDoug Rabson 	bool_t retval;
134dfdcada3SDoug Rabson 	nlm4_testargs args4;
135dfdcada3SDoug Rabson 	nlm4_testres res4;
136dfdcada3SDoug Rabson 
137dfdcada3SDoug Rabson 	args4.cookie = argp->cookie;
138dfdcada3SDoug Rabson 	args4.exclusive = argp->exclusive;
139dfdcada3SDoug Rabson 	nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock);
140dfdcada3SDoug Rabson 
141dfdcada3SDoug Rabson 	retval = nlm4_test_4_svc(&args4, &res4, rqstp);
142dfdcada3SDoug Rabson 	if (retval) {
143dfdcada3SDoug Rabson 		result->cookie = res4.cookie;
144dfdcada3SDoug Rabson 		result->stat.stat = nlm_convert_to_nlm_stats(res4.stat.stat);
145dfdcada3SDoug Rabson 		if (result->stat.stat == nlm_denied)
146dfdcada3SDoug Rabson 			nlm_convert_to_nlm_holder(
147dfdcada3SDoug Rabson 				&result->stat.nlm_testrply_u.holder,
148dfdcada3SDoug Rabson 				&res4.stat.nlm4_testrply_u.holder);
149dfdcada3SDoug Rabson 	}
150dfdcada3SDoug Rabson 
151dfdcada3SDoug Rabson 	return (retval);
152dfdcada3SDoug Rabson }
153dfdcada3SDoug Rabson 
154dfdcada3SDoug Rabson bool_t
155dfdcada3SDoug Rabson nlm_lock_1_svc(struct nlm_lockargs *argp, nlm_res *result, struct svc_req *rqstp)
156dfdcada3SDoug Rabson {
157dfdcada3SDoug Rabson 	bool_t retval;
158dfdcada3SDoug Rabson 	nlm4_lockargs args4;
159dfdcada3SDoug Rabson 	nlm4_res res4;
160dfdcada3SDoug Rabson 
161dfdcada3SDoug Rabson 	args4.cookie = argp->cookie;
162dfdcada3SDoug Rabson 	args4.block = argp->block;
163dfdcada3SDoug Rabson 	args4.exclusive = argp->exclusive;
164dfdcada3SDoug Rabson 	nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock);
165dfdcada3SDoug Rabson 	args4.reclaim = argp->reclaim;
166dfdcada3SDoug Rabson 	args4.state = argp->state;
167dfdcada3SDoug Rabson 
168dfdcada3SDoug Rabson 	retval = nlm4_lock_4_svc(&args4, &res4, rqstp);
169dfdcada3SDoug Rabson 	if (retval)
170dfdcada3SDoug Rabson 		nlm_convert_to_nlm_res(result, &res4);
171dfdcada3SDoug Rabson 
172dfdcada3SDoug Rabson 	return (retval);
173dfdcada3SDoug Rabson }
174dfdcada3SDoug Rabson 
175dfdcada3SDoug Rabson bool_t
176dfdcada3SDoug Rabson nlm_cancel_1_svc(struct nlm_cancargs *argp, nlm_res *result, struct svc_req *rqstp)
177dfdcada3SDoug Rabson {
178dfdcada3SDoug Rabson 	bool_t retval;
179dfdcada3SDoug Rabson 	nlm4_cancargs args4;
180dfdcada3SDoug Rabson 	nlm4_res res4;
181dfdcada3SDoug Rabson 
182dfdcada3SDoug Rabson 	args4.cookie = argp->cookie;
183dfdcada3SDoug Rabson 	args4.block = argp->block;
184dfdcada3SDoug Rabson 	args4.exclusive = argp->exclusive;
185dfdcada3SDoug Rabson 	nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock);
186dfdcada3SDoug Rabson 
187dfdcada3SDoug Rabson 	retval = nlm4_cancel_4_svc(&args4, &res4, rqstp);
188dfdcada3SDoug Rabson 	if (retval)
189dfdcada3SDoug Rabson 		nlm_convert_to_nlm_res(result, &res4);
190dfdcada3SDoug Rabson 
191dfdcada3SDoug Rabson 	return (retval);
192dfdcada3SDoug Rabson }
193dfdcada3SDoug Rabson 
194dfdcada3SDoug Rabson bool_t
195dfdcada3SDoug Rabson nlm_unlock_1_svc(struct nlm_unlockargs *argp, nlm_res *result, struct svc_req *rqstp)
196dfdcada3SDoug Rabson {
197dfdcada3SDoug Rabson 	bool_t retval;
198dfdcada3SDoug Rabson 	nlm4_unlockargs args4;
199dfdcada3SDoug Rabson 	nlm4_res res4;
200dfdcada3SDoug Rabson 
201dfdcada3SDoug Rabson 	args4.cookie = argp->cookie;
202dfdcada3SDoug Rabson 	nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock);
203dfdcada3SDoug Rabson 
204dfdcada3SDoug Rabson 	retval = nlm4_unlock_4_svc(&args4, &res4, rqstp);
205dfdcada3SDoug Rabson 	if (retval)
206dfdcada3SDoug Rabson 		nlm_convert_to_nlm_res(result, &res4);
207dfdcada3SDoug Rabson 
208dfdcada3SDoug Rabson 	return (retval);
209dfdcada3SDoug Rabson }
210dfdcada3SDoug Rabson 
211dfdcada3SDoug Rabson bool_t
212dfdcada3SDoug Rabson nlm_granted_1_svc(struct nlm_testargs *argp, nlm_res *result, struct svc_req *rqstp)
213dfdcada3SDoug Rabson {
214dfdcada3SDoug Rabson 	bool_t retval;
215dfdcada3SDoug Rabson 	nlm4_testargs args4;
216dfdcada3SDoug Rabson 	nlm4_res res4;
217dfdcada3SDoug Rabson 
218dfdcada3SDoug Rabson 	args4.cookie = argp->cookie;
219dfdcada3SDoug Rabson 	args4.exclusive = argp->exclusive;
220dfdcada3SDoug Rabson 	nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock);
221dfdcada3SDoug Rabson 
222dfdcada3SDoug Rabson 	retval = nlm4_granted_4_svc(&args4, &res4, rqstp);
223dfdcada3SDoug Rabson 	if (retval)
224dfdcada3SDoug Rabson 		nlm_convert_to_nlm_res(result, &res4);
225dfdcada3SDoug Rabson 
226dfdcada3SDoug Rabson 	return (retval);
227dfdcada3SDoug Rabson }
228dfdcada3SDoug Rabson 
229dfdcada3SDoug Rabson bool_t
230dfdcada3SDoug Rabson nlm_test_msg_1_svc(struct nlm_testargs *argp, void *result, struct svc_req *rqstp)
231dfdcada3SDoug Rabson {
232dfdcada3SDoug Rabson 	nlm4_testargs args4;
233dfdcada3SDoug Rabson 	nlm4_testres res4;
234dfdcada3SDoug Rabson 	nlm_testres res;
235dfdcada3SDoug Rabson 	CLIENT *rpc;
236dfdcada3SDoug Rabson 	char dummy;
237dfdcada3SDoug Rabson 
238dfdcada3SDoug Rabson 	args4.cookie = argp->cookie;
239dfdcada3SDoug Rabson 	args4.exclusive = argp->exclusive;
240dfdcada3SDoug Rabson 	nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock);
241dfdcada3SDoug Rabson 
242c675522fSDoug Rabson 	if (nlm_do_test(&args4, &res4, rqstp, &rpc))
243c675522fSDoug Rabson 		return (FALSE);
244dfdcada3SDoug Rabson 
245dfdcada3SDoug Rabson 	res.cookie = res4.cookie;
246dfdcada3SDoug Rabson 	res.stat.stat = nlm_convert_to_nlm_stats(res4.stat.stat);
247dfdcada3SDoug Rabson 	if (res.stat.stat == nlm_denied)
248dfdcada3SDoug Rabson 		nlm_convert_to_nlm_holder(
249dfdcada3SDoug Rabson 			&res.stat.nlm_testrply_u.holder,
250dfdcada3SDoug Rabson 			&res4.stat.nlm4_testrply_u.holder);
251dfdcada3SDoug Rabson 
252c675522fSDoug Rabson 	if (rpc) {
253c675522fSDoug Rabson 		nlm_test_res_1(&res, &dummy, rpc, NULL, nlm_zero_tv);
254c675522fSDoug Rabson 		CLNT_RELEASE(rpc);
255c675522fSDoug Rabson 	}
256dfdcada3SDoug Rabson 	xdr_free((xdrproc_t) xdr_nlm_testres, &res);
257dfdcada3SDoug Rabson 
258dfdcada3SDoug Rabson 	return (FALSE);
259dfdcada3SDoug Rabson }
260dfdcada3SDoug Rabson 
261dfdcada3SDoug Rabson bool_t
262dfdcada3SDoug Rabson nlm_lock_msg_1_svc(struct nlm_lockargs *argp, void *result, struct svc_req *rqstp)
263dfdcada3SDoug Rabson {
264dfdcada3SDoug Rabson 	nlm4_lockargs args4;
265dfdcada3SDoug Rabson 	nlm4_res res4;
266dfdcada3SDoug Rabson 	nlm_res res;
267dfdcada3SDoug Rabson 	CLIENT *rpc;
268dfdcada3SDoug Rabson 	char dummy;
269dfdcada3SDoug Rabson 
270dfdcada3SDoug Rabson 	args4.cookie = argp->cookie;
271dfdcada3SDoug Rabson 	args4.block = argp->block;
272dfdcada3SDoug Rabson 	args4.exclusive = argp->exclusive;
273dfdcada3SDoug Rabson 	nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock);
274dfdcada3SDoug Rabson 	args4.reclaim = argp->reclaim;
275dfdcada3SDoug Rabson 	args4.state = argp->state;
276dfdcada3SDoug Rabson 
277c675522fSDoug Rabson 	if (nlm_do_lock(&args4, &res4, rqstp, TRUE, &rpc))
278c675522fSDoug Rabson 		return (FALSE);
279dfdcada3SDoug Rabson 
280dfdcada3SDoug Rabson 	nlm_convert_to_nlm_res(&res, &res4);
281dfdcada3SDoug Rabson 
282c675522fSDoug Rabson 	if (rpc) {
283c675522fSDoug Rabson 		nlm_lock_res_1(&res, &dummy, rpc, NULL, nlm_zero_tv);
284c675522fSDoug Rabson 		CLNT_RELEASE(rpc);
285c675522fSDoug Rabson 	}
286dfdcada3SDoug Rabson 	xdr_free((xdrproc_t) xdr_nlm_res, &res);
287dfdcada3SDoug Rabson 
288dfdcada3SDoug Rabson 	return (FALSE);
289dfdcada3SDoug Rabson }
290dfdcada3SDoug Rabson 
291dfdcada3SDoug Rabson bool_t
292dfdcada3SDoug Rabson nlm_cancel_msg_1_svc(struct nlm_cancargs *argp, void *result, struct svc_req *rqstp)
293dfdcada3SDoug Rabson {
294dfdcada3SDoug Rabson 	nlm4_cancargs args4;
295dfdcada3SDoug Rabson 	nlm4_res res4;
296dfdcada3SDoug Rabson 	nlm_res res;
297dfdcada3SDoug Rabson 	CLIENT *rpc;
298dfdcada3SDoug Rabson 	char dummy;
299dfdcada3SDoug Rabson 
300dfdcada3SDoug Rabson 	args4.cookie = argp->cookie;
301dfdcada3SDoug Rabson 	args4.block = argp->block;
302dfdcada3SDoug Rabson 	args4.exclusive = argp->exclusive;
303dfdcada3SDoug Rabson 	nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock);
304dfdcada3SDoug Rabson 
305c675522fSDoug Rabson 	if (nlm_do_cancel(&args4, &res4, rqstp, &rpc))
306c675522fSDoug Rabson 		return (FALSE);
307dfdcada3SDoug Rabson 
308dfdcada3SDoug Rabson 	nlm_convert_to_nlm_res(&res, &res4);
309dfdcada3SDoug Rabson 
310c675522fSDoug Rabson 	if (rpc) {
311c675522fSDoug Rabson 		nlm_cancel_res_1(&res, &dummy, rpc, NULL, nlm_zero_tv);
312c675522fSDoug Rabson 		CLNT_RELEASE(rpc);
313c675522fSDoug Rabson 	}
314dfdcada3SDoug Rabson 	xdr_free((xdrproc_t) xdr_nlm_res, &res);
315dfdcada3SDoug Rabson 
316dfdcada3SDoug Rabson 	return (FALSE);
317dfdcada3SDoug Rabson }
318dfdcada3SDoug Rabson 
319dfdcada3SDoug Rabson bool_t
320dfdcada3SDoug Rabson nlm_unlock_msg_1_svc(struct nlm_unlockargs *argp, void *result, struct svc_req *rqstp)
321dfdcada3SDoug Rabson {
322dfdcada3SDoug Rabson 	nlm4_unlockargs args4;
323dfdcada3SDoug Rabson 	nlm4_res res4;
324dfdcada3SDoug Rabson 	nlm_res res;
325dfdcada3SDoug Rabson 	CLIENT *rpc;
326dfdcada3SDoug Rabson 	char dummy;
327dfdcada3SDoug Rabson 
328dfdcada3SDoug Rabson 	args4.cookie = argp->cookie;
329dfdcada3SDoug Rabson 	nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock);
330dfdcada3SDoug Rabson 
331c675522fSDoug Rabson 	if (nlm_do_unlock(&args4, &res4, rqstp, &rpc))
332c675522fSDoug Rabson 		return (FALSE);
333dfdcada3SDoug Rabson 
334dfdcada3SDoug Rabson 	nlm_convert_to_nlm_res(&res, &res4);
335dfdcada3SDoug Rabson 
336c675522fSDoug Rabson 	if (rpc) {
337c675522fSDoug Rabson 		nlm_unlock_res_1(&res, &dummy, rpc, NULL, nlm_zero_tv);
338c675522fSDoug Rabson 		CLNT_RELEASE(rpc);
339c675522fSDoug Rabson 	}
340dfdcada3SDoug Rabson 	xdr_free((xdrproc_t) xdr_nlm_res, &res);
341dfdcada3SDoug Rabson 
342dfdcada3SDoug Rabson 	return (FALSE);
343dfdcada3SDoug Rabson }
344dfdcada3SDoug Rabson 
345dfdcada3SDoug Rabson bool_t
346dfdcada3SDoug Rabson nlm_granted_msg_1_svc(struct nlm_testargs *argp, void *result, struct svc_req *rqstp)
347dfdcada3SDoug Rabson {
348dfdcada3SDoug Rabson 	nlm4_testargs args4;
349dfdcada3SDoug Rabson 	nlm4_res res4;
350dfdcada3SDoug Rabson 	nlm_res res;
351dfdcada3SDoug Rabson 	CLIENT *rpc;
352dfdcada3SDoug Rabson 	char dummy;
353dfdcada3SDoug Rabson 
354dfdcada3SDoug Rabson 	args4.cookie = argp->cookie;
355dfdcada3SDoug Rabson 	args4.exclusive = argp->exclusive;
356dfdcada3SDoug Rabson 	nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock);
357dfdcada3SDoug Rabson 
358c675522fSDoug Rabson 	if (nlm_do_granted(&args4, &res4, rqstp, &rpc))
359c675522fSDoug Rabson 		return (FALSE);
360dfdcada3SDoug Rabson 
361dfdcada3SDoug Rabson 	nlm_convert_to_nlm_res(&res, &res4);
362dfdcada3SDoug Rabson 
363c675522fSDoug Rabson 	if (rpc) {
364c675522fSDoug Rabson 		nlm_granted_res_1(&res, &dummy, rpc, NULL, nlm_zero_tv);
365c675522fSDoug Rabson 		CLNT_RELEASE(rpc);
366c675522fSDoug Rabson 	}
367dfdcada3SDoug Rabson 	xdr_free((xdrproc_t) xdr_nlm_res, &res);
368dfdcada3SDoug Rabson 
369dfdcada3SDoug Rabson 	return (FALSE);
370dfdcada3SDoug Rabson }
371dfdcada3SDoug Rabson 
372dfdcada3SDoug Rabson bool_t
373dfdcada3SDoug Rabson nlm_test_res_1_svc(nlm_testres *argp, void *result, struct svc_req *rqstp)
374dfdcada3SDoug Rabson {
375dfdcada3SDoug Rabson 	nlm4_testres args4;
376dfdcada3SDoug Rabson 
377dfdcada3SDoug Rabson 	args4.cookie = argp->cookie;
378dfdcada3SDoug Rabson 	if (argp->stat.stat == nlm_denied)
379dfdcada3SDoug Rabson 		nlm_convert_to_nlm4_holder(
380dfdcada3SDoug Rabson 			&args4.stat.nlm4_testrply_u.holder,
381dfdcada3SDoug Rabson 			&argp->stat.nlm_testrply_u.holder);
382dfdcada3SDoug Rabson 
383dfdcada3SDoug Rabson 	return (nlm4_test_res_4_svc(&args4, result, rqstp));
384dfdcada3SDoug Rabson }
385dfdcada3SDoug Rabson 
386dfdcada3SDoug Rabson bool_t
387dfdcada3SDoug Rabson nlm_lock_res_1_svc(nlm_res *argp, void *result, struct svc_req *rqstp)
388dfdcada3SDoug Rabson {
389dfdcada3SDoug Rabson 	nlm4_res arg4;
390dfdcada3SDoug Rabson 
391dfdcada3SDoug Rabson 	nlm_convert_to_nlm4_res(&arg4, argp);
392dfdcada3SDoug Rabson 	return (nlm4_lock_res_4_svc(&arg4, result, rqstp));
393dfdcada3SDoug Rabson }
394dfdcada3SDoug Rabson 
395dfdcada3SDoug Rabson bool_t
396dfdcada3SDoug Rabson nlm_cancel_res_1_svc(nlm_res *argp, void *result, struct svc_req *rqstp)
397dfdcada3SDoug Rabson {
398dfdcada3SDoug Rabson 	nlm4_res arg4;
399dfdcada3SDoug Rabson 
400dfdcada3SDoug Rabson 	nlm_convert_to_nlm4_res(&arg4, argp);
401dfdcada3SDoug Rabson 	return (nlm4_cancel_res_4_svc(&arg4, result, rqstp));
402dfdcada3SDoug Rabson }
403dfdcada3SDoug Rabson 
404dfdcada3SDoug Rabson bool_t
405dfdcada3SDoug Rabson nlm_unlock_res_1_svc(nlm_res *argp, void *result, struct svc_req *rqstp)
406dfdcada3SDoug Rabson {
407dfdcada3SDoug Rabson 	nlm4_res arg4;
408dfdcada3SDoug Rabson 
409dfdcada3SDoug Rabson 	nlm_convert_to_nlm4_res(&arg4, argp);
410dfdcada3SDoug Rabson 	return (nlm4_unlock_res_4_svc(&arg4, result, rqstp));
411dfdcada3SDoug Rabson }
412dfdcada3SDoug Rabson 
413dfdcada3SDoug Rabson bool_t
414dfdcada3SDoug Rabson nlm_granted_res_1_svc(nlm_res *argp, void *result, struct svc_req *rqstp)
415dfdcada3SDoug Rabson {
416dfdcada3SDoug Rabson 	nlm4_res arg4;
417dfdcada3SDoug Rabson 
418dfdcada3SDoug Rabson 	nlm_convert_to_nlm4_res(&arg4, argp);
419dfdcada3SDoug Rabson 	return (nlm4_granted_res_4_svc(&arg4, result, rqstp));
420dfdcada3SDoug Rabson }
421dfdcada3SDoug Rabson 
422dfdcada3SDoug Rabson int
423dfdcada3SDoug Rabson nlm_prog_1_freeresult(SVCXPRT *transp, xdrproc_t xdr_result, caddr_t result)
424dfdcada3SDoug Rabson {
425dfdcada3SDoug Rabson 
426dfdcada3SDoug Rabson 	(void) xdr_free(xdr_result, result);
427dfdcada3SDoug Rabson 	return (TRUE);
428dfdcada3SDoug Rabson }
429dfdcada3SDoug Rabson 
430dfdcada3SDoug Rabson bool_t
431dfdcada3SDoug Rabson nlm_share_3_svc(nlm_shareargs *argp, nlm_shareres *result, struct svc_req *rqstp)
432dfdcada3SDoug Rabson {
433dfdcada3SDoug Rabson 	bool_t retval;
434dfdcada3SDoug Rabson 	nlm4_shareargs args4;
435dfdcada3SDoug Rabson 	nlm4_shareres res4;
436dfdcada3SDoug Rabson 
437dfdcada3SDoug Rabson 	args4.cookie = argp->cookie;
438dfdcada3SDoug Rabson 	nlm_convert_to_nlm4_share(&args4.share, &argp->share);
439dfdcada3SDoug Rabson 	args4.reclaim = argp->reclaim;
440dfdcada3SDoug Rabson 
441dfdcada3SDoug Rabson 	retval = nlm4_share_4_svc(&args4, &res4, rqstp);
442dfdcada3SDoug Rabson 	if (retval) {
443dfdcada3SDoug Rabson 		result->cookie = res4.cookie;
444dfdcada3SDoug Rabson 		result->stat = nlm_convert_to_nlm_stats(res4.stat);
445dfdcada3SDoug Rabson 		result->sequence = res4.sequence;
446dfdcada3SDoug Rabson 	}
447dfdcada3SDoug Rabson 
448dfdcada3SDoug Rabson 	return (retval);
449dfdcada3SDoug Rabson }
450dfdcada3SDoug Rabson 
451dfdcada3SDoug Rabson bool_t
452dfdcada3SDoug Rabson nlm_unshare_3_svc(nlm_shareargs *argp, nlm_shareres *result, struct svc_req *rqstp)
453dfdcada3SDoug Rabson {
454dfdcada3SDoug Rabson 	bool_t retval;
455dfdcada3SDoug Rabson 	nlm4_shareargs args4;
456dfdcada3SDoug Rabson 	nlm4_shareres res4;
457dfdcada3SDoug Rabson 
458dfdcada3SDoug Rabson 	args4.cookie = argp->cookie;
459dfdcada3SDoug Rabson 	nlm_convert_to_nlm4_share(&args4.share, &argp->share);
460dfdcada3SDoug Rabson 	args4.reclaim = argp->reclaim;
461dfdcada3SDoug Rabson 
462dfdcada3SDoug Rabson 	retval = nlm4_unshare_4_svc(&args4, &res4, rqstp);
463dfdcada3SDoug Rabson 	if (retval) {
464dfdcada3SDoug Rabson 		result->cookie = res4.cookie;
465dfdcada3SDoug Rabson 		result->stat = nlm_convert_to_nlm_stats(res4.stat);
466dfdcada3SDoug Rabson 		result->sequence = res4.sequence;
467dfdcada3SDoug Rabson 	}
468dfdcada3SDoug Rabson 
469dfdcada3SDoug Rabson 	return (retval);
470dfdcada3SDoug Rabson }
471dfdcada3SDoug Rabson 
472dfdcada3SDoug Rabson bool_t
473dfdcada3SDoug Rabson nlm_nm_lock_3_svc(nlm_lockargs *argp, nlm_res *result, struct svc_req *rqstp)
474dfdcada3SDoug Rabson {
475dfdcada3SDoug Rabson 	bool_t retval;
476dfdcada3SDoug Rabson 	nlm4_lockargs args4;
477dfdcada3SDoug Rabson 	nlm4_res res4;
478dfdcada3SDoug Rabson 
479dfdcada3SDoug Rabson 	args4.cookie = argp->cookie;
480dfdcada3SDoug Rabson 	args4.block = argp->block;
481dfdcada3SDoug Rabson 	args4.exclusive = argp->exclusive;
482dfdcada3SDoug Rabson 	nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock);
483dfdcada3SDoug Rabson 	args4.reclaim = argp->reclaim;
484dfdcada3SDoug Rabson 	args4.state = argp->state;
485dfdcada3SDoug Rabson 
486dfdcada3SDoug Rabson 	retval = nlm4_nm_lock_4_svc(&args4, &res4, rqstp);
487dfdcada3SDoug Rabson 	if (retval)
488dfdcada3SDoug Rabson 		nlm_convert_to_nlm_res(result, &res4);
489dfdcada3SDoug Rabson 
490dfdcada3SDoug Rabson 	return (retval);
491dfdcada3SDoug Rabson }
492dfdcada3SDoug Rabson 
493dfdcada3SDoug Rabson bool_t
494dfdcada3SDoug Rabson nlm_free_all_3_svc(nlm_notify *argp, void *result, struct svc_req *rqstp)
495dfdcada3SDoug Rabson {
496dfdcada3SDoug Rabson 	struct nlm4_notify args4;
497dfdcada3SDoug Rabson 
498dfdcada3SDoug Rabson 	args4.name = argp->name;
499dfdcada3SDoug Rabson 	args4.state = argp->state;
500dfdcada3SDoug Rabson 
501dfdcada3SDoug Rabson 	return (nlm4_free_all_4_svc(&args4, result, rqstp));
502dfdcada3SDoug Rabson }
503dfdcada3SDoug Rabson 
504dfdcada3SDoug Rabson int
505dfdcada3SDoug Rabson nlm_prog_3_freeresult(SVCXPRT *transp, xdrproc_t xdr_result, caddr_t result)
506dfdcada3SDoug Rabson {
507dfdcada3SDoug Rabson 
508dfdcada3SDoug Rabson 	(void) xdr_free(xdr_result, result);
509dfdcada3SDoug Rabson 	return (TRUE);
510dfdcada3SDoug Rabson }
511dfdcada3SDoug Rabson 
512dfdcada3SDoug Rabson bool_t
513dfdcada3SDoug Rabson nlm4_test_4_svc(nlm4_testargs *argp, nlm4_testres *result, struct svc_req *rqstp)
514dfdcada3SDoug Rabson {
515dfdcada3SDoug Rabson 
516c675522fSDoug Rabson 	nlm_do_test(argp, result, rqstp, NULL);
517dfdcada3SDoug Rabson 	return (TRUE);
518dfdcada3SDoug Rabson }
519dfdcada3SDoug Rabson 
520dfdcada3SDoug Rabson bool_t
521dfdcada3SDoug Rabson nlm4_lock_4_svc(nlm4_lockargs *argp, nlm4_res *result, struct svc_req *rqstp)
522dfdcada3SDoug Rabson {
523dfdcada3SDoug Rabson 
524c675522fSDoug Rabson 	nlm_do_lock(argp, result, rqstp, TRUE, NULL);
525dfdcada3SDoug Rabson 	return (TRUE);
526dfdcada3SDoug Rabson }
527dfdcada3SDoug Rabson 
528dfdcada3SDoug Rabson bool_t
529dfdcada3SDoug Rabson nlm4_cancel_4_svc(nlm4_cancargs *argp, nlm4_res *result, struct svc_req *rqstp)
530dfdcada3SDoug Rabson {
531dfdcada3SDoug Rabson 
532c675522fSDoug Rabson 	nlm_do_cancel(argp, result, rqstp, NULL);
533dfdcada3SDoug Rabson 	return (TRUE);
534dfdcada3SDoug Rabson }
535dfdcada3SDoug Rabson 
536dfdcada3SDoug Rabson bool_t
537dfdcada3SDoug Rabson nlm4_unlock_4_svc(nlm4_unlockargs *argp, nlm4_res *result, struct svc_req *rqstp)
538dfdcada3SDoug Rabson {
539dfdcada3SDoug Rabson 
540c675522fSDoug Rabson 	nlm_do_unlock(argp, result, rqstp, NULL);
541dfdcada3SDoug Rabson 	return (TRUE);
542dfdcada3SDoug Rabson }
543dfdcada3SDoug Rabson 
544dfdcada3SDoug Rabson bool_t
545dfdcada3SDoug Rabson nlm4_granted_4_svc(nlm4_testargs *argp, nlm4_res *result, struct svc_req *rqstp)
546dfdcada3SDoug Rabson {
547dfdcada3SDoug Rabson 
548c675522fSDoug Rabson 	nlm_do_granted(argp, result, rqstp, NULL);
549dfdcada3SDoug Rabson 	return (TRUE);
550dfdcada3SDoug Rabson }
551dfdcada3SDoug Rabson 
552dfdcada3SDoug Rabson bool_t
553dfdcada3SDoug Rabson nlm4_test_msg_4_svc(nlm4_testargs *argp, void *result, struct svc_req *rqstp)
554dfdcada3SDoug Rabson {
555dfdcada3SDoug Rabson 	nlm4_testres res4;
556dfdcada3SDoug Rabson 	CLIENT *rpc;
557dfdcada3SDoug Rabson 	char dummy;
558dfdcada3SDoug Rabson 
559c675522fSDoug Rabson 	if (nlm_do_test(argp, &res4, rqstp, &rpc))
560c675522fSDoug Rabson 		return (FALSE);
561c675522fSDoug Rabson 	if (rpc) {
562c675522fSDoug Rabson 		nlm4_test_res_4(&res4, &dummy, rpc, NULL, nlm_zero_tv);
563c675522fSDoug Rabson 		CLNT_RELEASE(rpc);
564c675522fSDoug Rabson 	}
565dfdcada3SDoug Rabson 	xdr_free((xdrproc_t) xdr_nlm4_testres, &res4);
566dfdcada3SDoug Rabson 
567dfdcada3SDoug Rabson 	return (FALSE);
568dfdcada3SDoug Rabson }
569dfdcada3SDoug Rabson 
570dfdcada3SDoug Rabson bool_t
571dfdcada3SDoug Rabson nlm4_lock_msg_4_svc(nlm4_lockargs *argp, void *result, struct svc_req *rqstp)
572dfdcada3SDoug Rabson {
573dfdcada3SDoug Rabson 	nlm4_res res4;
574dfdcada3SDoug Rabson 	CLIENT *rpc;
575dfdcada3SDoug Rabson 	char dummy;
576dfdcada3SDoug Rabson 
577c675522fSDoug Rabson 	if (nlm_do_lock(argp, &res4, rqstp, TRUE, &rpc))
578c675522fSDoug Rabson 		return (FALSE);
579c675522fSDoug Rabson 	if (rpc) {
580c675522fSDoug Rabson 		nlm4_lock_res_4(&res4, &dummy, rpc, NULL, nlm_zero_tv);
581c675522fSDoug Rabson 		CLNT_RELEASE(rpc);
582c675522fSDoug Rabson 	}
583dfdcada3SDoug Rabson 	xdr_free((xdrproc_t) xdr_nlm4_res, &res4);
584dfdcada3SDoug Rabson 
585dfdcada3SDoug Rabson 	return (FALSE);
586dfdcada3SDoug Rabson }
587dfdcada3SDoug Rabson 
588dfdcada3SDoug Rabson bool_t
589dfdcada3SDoug Rabson nlm4_cancel_msg_4_svc(nlm4_cancargs *argp, void *result, struct svc_req *rqstp)
590dfdcada3SDoug Rabson {
591dfdcada3SDoug Rabson 	nlm4_res res4;
592dfdcada3SDoug Rabson 	CLIENT *rpc;
593dfdcada3SDoug Rabson 	char dummy;
594dfdcada3SDoug Rabson 
595c675522fSDoug Rabson 	if (nlm_do_cancel(argp, &res4, rqstp, &rpc))
596c675522fSDoug Rabson 		return (FALSE);
597c675522fSDoug Rabson 	if (rpc) {
598c675522fSDoug Rabson 		nlm4_cancel_res_4(&res4, &dummy, rpc, NULL, nlm_zero_tv);
599c675522fSDoug Rabson 		CLNT_RELEASE(rpc);
600c675522fSDoug Rabson 	}
601dfdcada3SDoug Rabson 	xdr_free((xdrproc_t) xdr_nlm4_res, &res4);
602dfdcada3SDoug Rabson 
603dfdcada3SDoug Rabson 	return (FALSE);
604dfdcada3SDoug Rabson }
605dfdcada3SDoug Rabson 
606dfdcada3SDoug Rabson bool_t
607dfdcada3SDoug Rabson nlm4_unlock_msg_4_svc(nlm4_unlockargs *argp, void *result, struct svc_req *rqstp)
608dfdcada3SDoug Rabson {
609dfdcada3SDoug Rabson 	nlm4_res res4;
610dfdcada3SDoug Rabson 	CLIENT *rpc;
611dfdcada3SDoug Rabson 	char dummy;
612dfdcada3SDoug Rabson 
613c675522fSDoug Rabson 	if (nlm_do_unlock(argp, &res4, rqstp, &rpc))
614d9ab5c4aSDoug Rabson 		return (FALSE);
615c675522fSDoug Rabson 	if (rpc) {
616c675522fSDoug Rabson 		nlm4_unlock_res_4(&res4, &dummy, rpc, NULL, nlm_zero_tv);
617c675522fSDoug Rabson 		CLNT_RELEASE(rpc);
618c675522fSDoug Rabson 	}
619dfdcada3SDoug Rabson 	xdr_free((xdrproc_t) xdr_nlm4_res, &res4);
620dfdcada3SDoug Rabson 
621dfdcada3SDoug Rabson 	return (FALSE);
622dfdcada3SDoug Rabson }
623dfdcada3SDoug Rabson 
624dfdcada3SDoug Rabson bool_t
625dfdcada3SDoug Rabson nlm4_granted_msg_4_svc(nlm4_testargs *argp, void *result, struct svc_req *rqstp)
626dfdcada3SDoug Rabson {
627dfdcada3SDoug Rabson 	nlm4_res res4;
628c675522fSDoug Rabson 	CLIENT *rpc;
629dfdcada3SDoug Rabson 	char dummy;
630dfdcada3SDoug Rabson 
631c675522fSDoug Rabson 	if (nlm_do_granted(argp, &res4, rqstp, &rpc))
632c675522fSDoug Rabson 		return (FALSE);
633c675522fSDoug Rabson 	if (rpc) {
634c675522fSDoug Rabson 		nlm4_granted_res_4(&res4, &dummy, rpc, NULL, nlm_zero_tv);
635c675522fSDoug Rabson 		CLNT_RELEASE(rpc);
636c675522fSDoug Rabson 	}
637dfdcada3SDoug Rabson 	xdr_free((xdrproc_t) xdr_nlm4_res, &res4);
638dfdcada3SDoug Rabson 
639dfdcada3SDoug Rabson 	return (FALSE);
640dfdcada3SDoug Rabson }
641dfdcada3SDoug Rabson 
642dfdcada3SDoug Rabson bool_t
643dfdcada3SDoug Rabson nlm4_test_res_4_svc(nlm4_testres *argp, void *result, struct svc_req *rqstp)
644dfdcada3SDoug Rabson {
645dfdcada3SDoug Rabson 
646dfdcada3SDoug Rabson 	return (FALSE);
647dfdcada3SDoug Rabson }
648dfdcada3SDoug Rabson 
649dfdcada3SDoug Rabson bool_t
650dfdcada3SDoug Rabson nlm4_lock_res_4_svc(nlm4_res *argp, void *result, struct svc_req *rqstp)
651dfdcada3SDoug Rabson {
652dfdcada3SDoug Rabson 
653dfdcada3SDoug Rabson 	return (FALSE);
654dfdcada3SDoug Rabson }
655dfdcada3SDoug Rabson 
656dfdcada3SDoug Rabson bool_t
657dfdcada3SDoug Rabson nlm4_cancel_res_4_svc(nlm4_res *argp, void *result, struct svc_req *rqstp)
658dfdcada3SDoug Rabson {
659dfdcada3SDoug Rabson 
660dfdcada3SDoug Rabson 	return (FALSE);
661dfdcada3SDoug Rabson }
662dfdcada3SDoug Rabson 
663dfdcada3SDoug Rabson bool_t
664dfdcada3SDoug Rabson nlm4_unlock_res_4_svc(nlm4_res *argp, void *result, struct svc_req *rqstp)
665dfdcada3SDoug Rabson {
666dfdcada3SDoug Rabson 
667dfdcada3SDoug Rabson 	return (FALSE);
668dfdcada3SDoug Rabson }
669dfdcada3SDoug Rabson 
670dfdcada3SDoug Rabson bool_t
671dfdcada3SDoug Rabson nlm4_granted_res_4_svc(nlm4_res *argp, void *result, struct svc_req *rqstp)
672dfdcada3SDoug Rabson {
673dfdcada3SDoug Rabson 
674dfdcada3SDoug Rabson 	return (FALSE);
675dfdcada3SDoug Rabson }
676dfdcada3SDoug Rabson 
677dfdcada3SDoug Rabson bool_t
678dfdcada3SDoug Rabson nlm4_share_4_svc(nlm4_shareargs *argp, nlm4_shareres *result, struct svc_req *rqstp)
679dfdcada3SDoug Rabson {
680dfdcada3SDoug Rabson 
681dfdcada3SDoug Rabson 	memset(result, 0, sizeof(*result));
682dfdcada3SDoug Rabson 	result->stat = nlm4_denied;
683dfdcada3SDoug Rabson 	return (TRUE);
684dfdcada3SDoug Rabson }
685dfdcada3SDoug Rabson 
686dfdcada3SDoug Rabson bool_t
687dfdcada3SDoug Rabson nlm4_unshare_4_svc(nlm4_shareargs *argp, nlm4_shareres *result, struct svc_req *rqstp)
688dfdcada3SDoug Rabson {
689dfdcada3SDoug Rabson 
690dfdcada3SDoug Rabson 	memset(result, 0, sizeof(*result));
691dfdcada3SDoug Rabson 	result->stat = nlm4_denied;
692dfdcada3SDoug Rabson 	return (TRUE);
693dfdcada3SDoug Rabson }
694dfdcada3SDoug Rabson 
695dfdcada3SDoug Rabson bool_t
696dfdcada3SDoug Rabson nlm4_nm_lock_4_svc(nlm4_lockargs *argp, nlm4_res *result, struct svc_req *rqstp)
697dfdcada3SDoug Rabson {
698dfdcada3SDoug Rabson 
699c675522fSDoug Rabson 	nlm_do_lock(argp, result, rqstp, FALSE, NULL);
700dfdcada3SDoug Rabson 	return (TRUE);
701dfdcada3SDoug Rabson }
702dfdcada3SDoug Rabson 
703dfdcada3SDoug Rabson bool_t
704dfdcada3SDoug Rabson nlm4_free_all_4_svc(nlm4_notify *argp, void *result, struct svc_req *rqstp)
705dfdcada3SDoug Rabson {
706dfdcada3SDoug Rabson 
707dfdcada3SDoug Rabson 	nlm_do_free_all(argp);
708dfdcada3SDoug Rabson 	return (TRUE);
709dfdcada3SDoug Rabson }
710dfdcada3SDoug Rabson 
711dfdcada3SDoug Rabson int
712dfdcada3SDoug Rabson nlm_prog_4_freeresult(SVCXPRT *transp, xdrproc_t xdr_result, caddr_t result)
713dfdcada3SDoug Rabson {
714dfdcada3SDoug Rabson 
715dfdcada3SDoug Rabson 	(void) xdr_free(xdr_result, result);
716dfdcada3SDoug Rabson 	return (TRUE);
717dfdcada3SDoug Rabson }
718