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 40dfdcada3SDoug Rabson #include "nlm_prot.h" 41dfdcada3SDoug Rabson #include "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 struct nlm_host *host; 236dfdcada3SDoug Rabson CLIENT *rpc; 237dfdcada3SDoug Rabson char dummy; 238dfdcada3SDoug Rabson 239dfdcada3SDoug Rabson args4.cookie = argp->cookie; 240dfdcada3SDoug Rabson args4.exclusive = argp->exclusive; 241dfdcada3SDoug Rabson nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 242dfdcada3SDoug Rabson 243dfdcada3SDoug Rabson host = nlm_do_test(&args4, &res4, rqstp); 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 252dfdcada3SDoug Rabson rpc = nlm_host_get_rpc(host); 253dfdcada3SDoug Rabson if (rpc) 254dfdcada3SDoug Rabson nlm_test_res_1(&res, &dummy, rpc); 255dfdcada3SDoug Rabson xdr_free((xdrproc_t) xdr_nlm_testres, &res); 256dfdcada3SDoug Rabson 257dfdcada3SDoug Rabson return (FALSE); 258dfdcada3SDoug Rabson } 259dfdcada3SDoug Rabson 260dfdcada3SDoug Rabson bool_t 261dfdcada3SDoug Rabson nlm_lock_msg_1_svc(struct nlm_lockargs *argp, void *result, struct svc_req *rqstp) 262dfdcada3SDoug Rabson { 263dfdcada3SDoug Rabson nlm4_lockargs args4; 264dfdcada3SDoug Rabson nlm4_res res4; 265dfdcada3SDoug Rabson nlm_res res; 266dfdcada3SDoug Rabson struct nlm_host *host; 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 277dfdcada3SDoug Rabson host = nlm_do_lock(&args4, &res4, rqstp, TRUE); 278dfdcada3SDoug Rabson 279dfdcada3SDoug Rabson nlm_convert_to_nlm_res(&res, &res4); 280dfdcada3SDoug Rabson 281dfdcada3SDoug Rabson rpc = nlm_host_get_rpc(host); 282dfdcada3SDoug Rabson if (rpc) 283dfdcada3SDoug Rabson nlm_lock_res_1(&res, &dummy, rpc); 284dfdcada3SDoug Rabson xdr_free((xdrproc_t) xdr_nlm_res, &res); 285dfdcada3SDoug Rabson 286dfdcada3SDoug Rabson return (FALSE); 287dfdcada3SDoug Rabson } 288dfdcada3SDoug Rabson 289dfdcada3SDoug Rabson bool_t 290dfdcada3SDoug Rabson nlm_cancel_msg_1_svc(struct nlm_cancargs *argp, void *result, struct svc_req *rqstp) 291dfdcada3SDoug Rabson { 292dfdcada3SDoug Rabson nlm4_cancargs args4; 293dfdcada3SDoug Rabson nlm4_res res4; 294dfdcada3SDoug Rabson nlm_res res; 295dfdcada3SDoug Rabson struct nlm_host *host; 296dfdcada3SDoug Rabson CLIENT *rpc; 297dfdcada3SDoug Rabson char dummy; 298dfdcada3SDoug Rabson 299dfdcada3SDoug Rabson args4.cookie = argp->cookie; 300dfdcada3SDoug Rabson args4.block = argp->block; 301dfdcada3SDoug Rabson args4.exclusive = argp->exclusive; 302dfdcada3SDoug Rabson nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 303dfdcada3SDoug Rabson 304dfdcada3SDoug Rabson host = nlm_do_cancel(&args4, &res4, rqstp); 305dfdcada3SDoug Rabson 306dfdcada3SDoug Rabson nlm_convert_to_nlm_res(&res, &res4); 307dfdcada3SDoug Rabson 308dfdcada3SDoug Rabson rpc = nlm_host_get_rpc(host); 309dfdcada3SDoug Rabson if (rpc) 310dfdcada3SDoug Rabson nlm_cancel_res_1(&res, &dummy, rpc); 311dfdcada3SDoug Rabson xdr_free((xdrproc_t) xdr_nlm_res, &res); 312dfdcada3SDoug Rabson 313dfdcada3SDoug Rabson return (FALSE); 314dfdcada3SDoug Rabson } 315dfdcada3SDoug Rabson 316dfdcada3SDoug Rabson bool_t 317dfdcada3SDoug Rabson nlm_unlock_msg_1_svc(struct nlm_unlockargs *argp, void *result, struct svc_req *rqstp) 318dfdcada3SDoug Rabson { 319dfdcada3SDoug Rabson nlm4_unlockargs args4; 320dfdcada3SDoug Rabson nlm4_res res4; 321dfdcada3SDoug Rabson nlm_res res; 322dfdcada3SDoug Rabson struct nlm_host *host; 323dfdcada3SDoug Rabson CLIENT *rpc; 324dfdcada3SDoug Rabson char dummy; 325dfdcada3SDoug Rabson 326dfdcada3SDoug Rabson args4.cookie = argp->cookie; 327dfdcada3SDoug Rabson nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 328dfdcada3SDoug Rabson 329dfdcada3SDoug Rabson host = nlm_do_unlock(&args4, &res4, rqstp); 330dfdcada3SDoug Rabson 331dfdcada3SDoug Rabson nlm_convert_to_nlm_res(&res, &res4); 332dfdcada3SDoug Rabson 333dfdcada3SDoug Rabson rpc = nlm_host_get_rpc(host); 334dfdcada3SDoug Rabson if (rpc) 335dfdcada3SDoug Rabson nlm_unlock_res_1(&res, &dummy, rpc); 336dfdcada3SDoug Rabson xdr_free((xdrproc_t) xdr_nlm_res, &res); 337dfdcada3SDoug Rabson 338dfdcada3SDoug Rabson return (FALSE); 339dfdcada3SDoug Rabson } 340dfdcada3SDoug Rabson 341dfdcada3SDoug Rabson bool_t 342dfdcada3SDoug Rabson nlm_granted_msg_1_svc(struct nlm_testargs *argp, void *result, struct svc_req *rqstp) 343dfdcada3SDoug Rabson { 344dfdcada3SDoug Rabson nlm4_testargs args4; 345dfdcada3SDoug Rabson nlm4_res res4; 346dfdcada3SDoug Rabson nlm_res res; 347dfdcada3SDoug Rabson struct nlm_host *host; 348dfdcada3SDoug Rabson CLIENT *rpc; 349dfdcada3SDoug Rabson char dummy; 350dfdcada3SDoug Rabson 351dfdcada3SDoug Rabson args4.cookie = argp->cookie; 352dfdcada3SDoug Rabson args4.exclusive = argp->exclusive; 353dfdcada3SDoug Rabson nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 354dfdcada3SDoug Rabson 355dfdcada3SDoug Rabson /* 356dfdcada3SDoug Rabson * We make a synchronous call to userland and send the reply 357dfdcada3SDoug Rabson * back async. 358dfdcada3SDoug Rabson */ 359dfdcada3SDoug Rabson nlm4_granted_4_svc(&args4, &res4, rqstp); 360dfdcada3SDoug Rabson 361dfdcada3SDoug Rabson nlm_convert_to_nlm_res(&res, &res4); 362dfdcada3SDoug Rabson 363dfdcada3SDoug Rabson host = nlm_find_host_by_addr( 364dfdcada3SDoug Rabson (struct sockaddr *) rqstp->rq_xprt->xp_rtaddr.buf, 365dfdcada3SDoug Rabson rqstp->rq_vers); 366dfdcada3SDoug Rabson rpc = nlm_host_get_rpc(host); 367dfdcada3SDoug Rabson if (rpc) 368dfdcada3SDoug Rabson nlm_granted_res_1(&res, &dummy, rpc); 369dfdcada3SDoug Rabson xdr_free((xdrproc_t) xdr_nlm_res, &res); 370dfdcada3SDoug Rabson 371dfdcada3SDoug Rabson return (FALSE); 372dfdcada3SDoug Rabson } 373dfdcada3SDoug Rabson 374dfdcada3SDoug Rabson bool_t 375dfdcada3SDoug Rabson nlm_test_res_1_svc(nlm_testres *argp, void *result, struct svc_req *rqstp) 376dfdcada3SDoug Rabson { 377dfdcada3SDoug Rabson nlm4_testres args4; 378dfdcada3SDoug Rabson 379dfdcada3SDoug Rabson args4.cookie = argp->cookie; 380dfdcada3SDoug Rabson if (argp->stat.stat == nlm_denied) 381dfdcada3SDoug Rabson nlm_convert_to_nlm4_holder( 382dfdcada3SDoug Rabson &args4.stat.nlm4_testrply_u.holder, 383dfdcada3SDoug Rabson &argp->stat.nlm_testrply_u.holder); 384dfdcada3SDoug Rabson 385dfdcada3SDoug Rabson return (nlm4_test_res_4_svc(&args4, result, rqstp)); 386dfdcada3SDoug Rabson } 387dfdcada3SDoug Rabson 388dfdcada3SDoug Rabson bool_t 389dfdcada3SDoug Rabson nlm_lock_res_1_svc(nlm_res *argp, void *result, struct svc_req *rqstp) 390dfdcada3SDoug Rabson { 391dfdcada3SDoug Rabson nlm4_res arg4; 392dfdcada3SDoug Rabson 393dfdcada3SDoug Rabson nlm_convert_to_nlm4_res(&arg4, argp); 394dfdcada3SDoug Rabson return (nlm4_lock_res_4_svc(&arg4, result, rqstp)); 395dfdcada3SDoug Rabson } 396dfdcada3SDoug Rabson 397dfdcada3SDoug Rabson bool_t 398dfdcada3SDoug Rabson nlm_cancel_res_1_svc(nlm_res *argp, void *result, struct svc_req *rqstp) 399dfdcada3SDoug Rabson { 400dfdcada3SDoug Rabson nlm4_res arg4; 401dfdcada3SDoug Rabson 402dfdcada3SDoug Rabson nlm_convert_to_nlm4_res(&arg4, argp); 403dfdcada3SDoug Rabson return (nlm4_cancel_res_4_svc(&arg4, result, rqstp)); 404dfdcada3SDoug Rabson } 405dfdcada3SDoug Rabson 406dfdcada3SDoug Rabson bool_t 407dfdcada3SDoug Rabson nlm_unlock_res_1_svc(nlm_res *argp, void *result, struct svc_req *rqstp) 408dfdcada3SDoug Rabson { 409dfdcada3SDoug Rabson nlm4_res arg4; 410dfdcada3SDoug Rabson 411dfdcada3SDoug Rabson nlm_convert_to_nlm4_res(&arg4, argp); 412dfdcada3SDoug Rabson return (nlm4_unlock_res_4_svc(&arg4, result, rqstp)); 413dfdcada3SDoug Rabson } 414dfdcada3SDoug Rabson 415dfdcada3SDoug Rabson bool_t 416dfdcada3SDoug Rabson nlm_granted_res_1_svc(nlm_res *argp, void *result, struct svc_req *rqstp) 417dfdcada3SDoug Rabson { 418dfdcada3SDoug Rabson nlm4_res arg4; 419dfdcada3SDoug Rabson 420dfdcada3SDoug Rabson nlm_convert_to_nlm4_res(&arg4, argp); 421dfdcada3SDoug Rabson return (nlm4_granted_res_4_svc(&arg4, result, rqstp)); 422dfdcada3SDoug Rabson } 423dfdcada3SDoug Rabson 424dfdcada3SDoug Rabson int 425dfdcada3SDoug Rabson nlm_prog_1_freeresult(SVCXPRT *transp, xdrproc_t xdr_result, caddr_t result) 426dfdcada3SDoug Rabson { 427dfdcada3SDoug Rabson 428dfdcada3SDoug Rabson (void) xdr_free(xdr_result, result); 429dfdcada3SDoug Rabson return (TRUE); 430dfdcada3SDoug Rabson } 431dfdcada3SDoug Rabson 432dfdcada3SDoug Rabson bool_t 433dfdcada3SDoug Rabson nlm_share_3_svc(nlm_shareargs *argp, nlm_shareres *result, struct svc_req *rqstp) 434dfdcada3SDoug Rabson { 435dfdcada3SDoug Rabson bool_t retval; 436dfdcada3SDoug Rabson nlm4_shareargs args4; 437dfdcada3SDoug Rabson nlm4_shareres res4; 438dfdcada3SDoug Rabson 439dfdcada3SDoug Rabson args4.cookie = argp->cookie; 440dfdcada3SDoug Rabson nlm_convert_to_nlm4_share(&args4.share, &argp->share); 441dfdcada3SDoug Rabson args4.reclaim = argp->reclaim; 442dfdcada3SDoug Rabson 443dfdcada3SDoug Rabson retval = nlm4_share_4_svc(&args4, &res4, rqstp); 444dfdcada3SDoug Rabson if (retval) { 445dfdcada3SDoug Rabson result->cookie = res4.cookie; 446dfdcada3SDoug Rabson result->stat = nlm_convert_to_nlm_stats(res4.stat); 447dfdcada3SDoug Rabson result->sequence = res4.sequence; 448dfdcada3SDoug Rabson } 449dfdcada3SDoug Rabson 450dfdcada3SDoug Rabson return (retval); 451dfdcada3SDoug Rabson } 452dfdcada3SDoug Rabson 453dfdcada3SDoug Rabson bool_t 454dfdcada3SDoug Rabson nlm_unshare_3_svc(nlm_shareargs *argp, nlm_shareres *result, struct svc_req *rqstp) 455dfdcada3SDoug Rabson { 456dfdcada3SDoug Rabson bool_t retval; 457dfdcada3SDoug Rabson nlm4_shareargs args4; 458dfdcada3SDoug Rabson nlm4_shareres res4; 459dfdcada3SDoug Rabson 460dfdcada3SDoug Rabson args4.cookie = argp->cookie; 461dfdcada3SDoug Rabson nlm_convert_to_nlm4_share(&args4.share, &argp->share); 462dfdcada3SDoug Rabson args4.reclaim = argp->reclaim; 463dfdcada3SDoug Rabson 464dfdcada3SDoug Rabson retval = nlm4_unshare_4_svc(&args4, &res4, rqstp); 465dfdcada3SDoug Rabson if (retval) { 466dfdcada3SDoug Rabson result->cookie = res4.cookie; 467dfdcada3SDoug Rabson result->stat = nlm_convert_to_nlm_stats(res4.stat); 468dfdcada3SDoug Rabson result->sequence = res4.sequence; 469dfdcada3SDoug Rabson } 470dfdcada3SDoug Rabson 471dfdcada3SDoug Rabson return (retval); 472dfdcada3SDoug Rabson } 473dfdcada3SDoug Rabson 474dfdcada3SDoug Rabson bool_t 475dfdcada3SDoug Rabson nlm_nm_lock_3_svc(nlm_lockargs *argp, nlm_res *result, struct svc_req *rqstp) 476dfdcada3SDoug Rabson { 477dfdcada3SDoug Rabson bool_t retval; 478dfdcada3SDoug Rabson nlm4_lockargs args4; 479dfdcada3SDoug Rabson nlm4_res res4; 480dfdcada3SDoug Rabson 481dfdcada3SDoug Rabson args4.cookie = argp->cookie; 482dfdcada3SDoug Rabson args4.block = argp->block; 483dfdcada3SDoug Rabson args4.exclusive = argp->exclusive; 484dfdcada3SDoug Rabson nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 485dfdcada3SDoug Rabson args4.reclaim = argp->reclaim; 486dfdcada3SDoug Rabson args4.state = argp->state; 487dfdcada3SDoug Rabson 488dfdcada3SDoug Rabson retval = nlm4_nm_lock_4_svc(&args4, &res4, rqstp); 489dfdcada3SDoug Rabson if (retval) 490dfdcada3SDoug Rabson nlm_convert_to_nlm_res(result, &res4); 491dfdcada3SDoug Rabson 492dfdcada3SDoug Rabson return (retval); 493dfdcada3SDoug Rabson } 494dfdcada3SDoug Rabson 495dfdcada3SDoug Rabson bool_t 496dfdcada3SDoug Rabson nlm_free_all_3_svc(nlm_notify *argp, void *result, struct svc_req *rqstp) 497dfdcada3SDoug Rabson { 498dfdcada3SDoug Rabson struct nlm4_notify args4; 499dfdcada3SDoug Rabson 500dfdcada3SDoug Rabson args4.name = argp->name; 501dfdcada3SDoug Rabson args4.state = argp->state; 502dfdcada3SDoug Rabson 503dfdcada3SDoug Rabson return (nlm4_free_all_4_svc(&args4, result, rqstp)); 504dfdcada3SDoug Rabson } 505dfdcada3SDoug Rabson 506dfdcada3SDoug Rabson int 507dfdcada3SDoug Rabson nlm_prog_3_freeresult(SVCXPRT *transp, xdrproc_t xdr_result, caddr_t result) 508dfdcada3SDoug Rabson { 509dfdcada3SDoug Rabson 510dfdcada3SDoug Rabson (void) xdr_free(xdr_result, result); 511dfdcada3SDoug Rabson return (TRUE); 512dfdcada3SDoug Rabson } 513dfdcada3SDoug Rabson 514dfdcada3SDoug Rabson bool_t 515dfdcada3SDoug Rabson nlm4_test_4_svc(nlm4_testargs *argp, nlm4_testres *result, struct svc_req *rqstp) 516dfdcada3SDoug Rabson { 517dfdcada3SDoug Rabson 518dfdcada3SDoug Rabson nlm_do_test(argp, result, rqstp); 519dfdcada3SDoug Rabson return (TRUE); 520dfdcada3SDoug Rabson } 521dfdcada3SDoug Rabson 522dfdcada3SDoug Rabson bool_t 523dfdcada3SDoug Rabson nlm4_lock_4_svc(nlm4_lockargs *argp, nlm4_res *result, struct svc_req *rqstp) 524dfdcada3SDoug Rabson { 525dfdcada3SDoug Rabson 526dfdcada3SDoug Rabson nlm_do_lock(argp, result, rqstp, TRUE); 527dfdcada3SDoug Rabson return (TRUE); 528dfdcada3SDoug Rabson } 529dfdcada3SDoug Rabson 530dfdcada3SDoug Rabson bool_t 531dfdcada3SDoug Rabson nlm4_cancel_4_svc(nlm4_cancargs *argp, nlm4_res *result, struct svc_req *rqstp) 532dfdcada3SDoug Rabson { 533dfdcada3SDoug Rabson 534dfdcada3SDoug Rabson nlm_do_cancel(argp, result, rqstp); 535dfdcada3SDoug Rabson return (TRUE); 536dfdcada3SDoug Rabson } 537dfdcada3SDoug Rabson 538dfdcada3SDoug Rabson bool_t 539dfdcada3SDoug Rabson nlm4_unlock_4_svc(nlm4_unlockargs *argp, nlm4_res *result, struct svc_req *rqstp) 540dfdcada3SDoug Rabson { 541dfdcada3SDoug Rabson 542dfdcada3SDoug Rabson nlm_do_unlock(argp, result, rqstp); 543dfdcada3SDoug Rabson return (TRUE); 544dfdcada3SDoug Rabson } 545dfdcada3SDoug Rabson 546dfdcada3SDoug Rabson bool_t 547dfdcada3SDoug Rabson nlm4_granted_4_svc(nlm4_testargs *argp, nlm4_res *result, struct svc_req *rqstp) 548dfdcada3SDoug Rabson { 549dfdcada3SDoug Rabson CLIENT* lockd; 550dfdcada3SDoug Rabson struct timeval tv; 551dfdcada3SDoug Rabson 552dfdcada3SDoug Rabson memset(result, 0, sizeof(*result)); 553dfdcada3SDoug Rabson nlm_copy_netobj(&result->cookie, &argp->cookie, M_RPC); 554dfdcada3SDoug Rabson 555dfdcada3SDoug Rabson /* 556dfdcada3SDoug Rabson * Set a non-zero timeout to give the userland a chance to reply. 557dfdcada3SDoug Rabson */ 558dfdcada3SDoug Rabson lockd = nlm_user_lockd(); 559dfdcada3SDoug Rabson if (!lockd) { 560dfdcada3SDoug Rabson result->stat.stat = nlm4_failed; 561dfdcada3SDoug Rabson return (TRUE); 562dfdcada3SDoug Rabson } 563dfdcada3SDoug Rabson tv.tv_sec = 20; 564dfdcada3SDoug Rabson tv.tv_usec = 0; 565dfdcada3SDoug Rabson CLNT_CONTROL(lockd, CLSET_TIMEOUT, &tv); 566dfdcada3SDoug Rabson nlm4_granted_4(argp, result, lockd); 567dfdcada3SDoug Rabson tv.tv_sec = 0; 568dfdcada3SDoug Rabson tv.tv_usec = 0; 569dfdcada3SDoug Rabson CLNT_CONTROL(lockd, CLSET_TIMEOUT, &tv); 570dfdcada3SDoug Rabson 571dfdcada3SDoug Rabson return (TRUE); 572dfdcada3SDoug Rabson } 573dfdcada3SDoug Rabson 574dfdcada3SDoug Rabson bool_t 575dfdcada3SDoug Rabson nlm4_test_msg_4_svc(nlm4_testargs *argp, void *result, struct svc_req *rqstp) 576dfdcada3SDoug Rabson { 577dfdcada3SDoug Rabson nlm4_testres res4; 578dfdcada3SDoug Rabson struct nlm_host *host; 579dfdcada3SDoug Rabson CLIENT *rpc; 580dfdcada3SDoug Rabson char dummy; 581dfdcada3SDoug Rabson 582dfdcada3SDoug Rabson host = nlm_do_test(argp, &res4, rqstp); 583dfdcada3SDoug Rabson rpc = nlm_host_get_rpc(host); 584dfdcada3SDoug Rabson if (rpc) 585dfdcada3SDoug Rabson nlm4_test_res_4(&res4, &dummy, rpc); 586dfdcada3SDoug Rabson xdr_free((xdrproc_t) xdr_nlm4_testres, &res4); 587dfdcada3SDoug Rabson 588dfdcada3SDoug Rabson return (FALSE); 589dfdcada3SDoug Rabson } 590dfdcada3SDoug Rabson 591dfdcada3SDoug Rabson bool_t 592dfdcada3SDoug Rabson nlm4_lock_msg_4_svc(nlm4_lockargs *argp, void *result, struct svc_req *rqstp) 593dfdcada3SDoug Rabson { 594dfdcada3SDoug Rabson nlm4_res res4; 595dfdcada3SDoug Rabson struct nlm_host *host; 596dfdcada3SDoug Rabson CLIENT *rpc; 597dfdcada3SDoug Rabson char dummy; 598dfdcada3SDoug Rabson 599dfdcada3SDoug Rabson host = nlm_do_lock(argp, &res4, rqstp, TRUE); 600dfdcada3SDoug Rabson rpc = nlm_host_get_rpc(host); 601dfdcada3SDoug Rabson if (rpc) 602dfdcada3SDoug Rabson nlm4_lock_res_4(&res4, &dummy, rpc); 603dfdcada3SDoug Rabson xdr_free((xdrproc_t) xdr_nlm4_res, &res4); 604dfdcada3SDoug Rabson 605dfdcada3SDoug Rabson return (FALSE); 606dfdcada3SDoug Rabson } 607dfdcada3SDoug Rabson 608dfdcada3SDoug Rabson bool_t 609dfdcada3SDoug Rabson nlm4_cancel_msg_4_svc(nlm4_cancargs *argp, void *result, struct svc_req *rqstp) 610dfdcada3SDoug Rabson { 611dfdcada3SDoug Rabson nlm4_res res4; 612dfdcada3SDoug Rabson struct nlm_host *host; 613dfdcada3SDoug Rabson CLIENT *rpc; 614dfdcada3SDoug Rabson char dummy; 615dfdcada3SDoug Rabson 616dfdcada3SDoug Rabson host = nlm_do_cancel(argp, &res4, rqstp); 617dfdcada3SDoug Rabson rpc = nlm_host_get_rpc(host); 618dfdcada3SDoug Rabson if (rpc) 619dfdcada3SDoug Rabson nlm4_cancel_res_4(&res4, &dummy, rpc); 620dfdcada3SDoug Rabson xdr_free((xdrproc_t) xdr_nlm4_res, &res4); 621dfdcada3SDoug Rabson 622dfdcada3SDoug Rabson return (FALSE); 623dfdcada3SDoug Rabson } 624dfdcada3SDoug Rabson 625dfdcada3SDoug Rabson bool_t 626dfdcada3SDoug Rabson nlm4_unlock_msg_4_svc(nlm4_unlockargs *argp, void *result, struct svc_req *rqstp) 627dfdcada3SDoug Rabson { 628dfdcada3SDoug Rabson nlm4_res res4; 629dfdcada3SDoug Rabson struct nlm_host *host; 630dfdcada3SDoug Rabson CLIENT *rpc; 631dfdcada3SDoug Rabson char dummy; 632dfdcada3SDoug Rabson 633dfdcada3SDoug Rabson host = nlm_do_unlock(argp, &res4, rqstp); 634dfdcada3SDoug Rabson rpc = nlm_host_get_rpc(host); 635dfdcada3SDoug Rabson if (rpc) 636dfdcada3SDoug Rabson nlm4_unlock_res_4(&res4, &dummy, rpc); 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_granted_msg_4_svc(nlm4_testargs *argp, void *result, struct svc_req *rqstp) 644dfdcada3SDoug Rabson { 645dfdcada3SDoug Rabson struct nlm_host *host; 646dfdcada3SDoug Rabson CLIENT *rpc; 647dfdcada3SDoug Rabson nlm4_res res4; 648dfdcada3SDoug Rabson char dummy; 649dfdcada3SDoug Rabson 650dfdcada3SDoug Rabson /* 651dfdcada3SDoug Rabson * We make a synchronous call to userland and send the reply 652dfdcada3SDoug Rabson * back async. 653dfdcada3SDoug Rabson */ 654dfdcada3SDoug Rabson nlm4_granted_4_svc(argp, &res4, rqstp); 655dfdcada3SDoug Rabson 656dfdcada3SDoug Rabson host = nlm_find_host_by_addr( 657dfdcada3SDoug Rabson (struct sockaddr *) rqstp->rq_xprt->xp_rtaddr.buf, 658dfdcada3SDoug Rabson rqstp->rq_vers); 659dfdcada3SDoug Rabson rpc = nlm_host_get_rpc(host); 660dfdcada3SDoug Rabson if (rpc) 661dfdcada3SDoug Rabson nlm4_granted_res_4(&res4, &dummy, rpc); 662dfdcada3SDoug Rabson xdr_free((xdrproc_t) xdr_nlm4_res, &res4); 663dfdcada3SDoug Rabson 664dfdcada3SDoug Rabson return (FALSE); 665dfdcada3SDoug Rabson } 666dfdcada3SDoug Rabson 667dfdcada3SDoug Rabson bool_t 668dfdcada3SDoug Rabson nlm4_test_res_4_svc(nlm4_testres *argp, void *result, struct svc_req *rqstp) 669dfdcada3SDoug Rabson { 670dfdcada3SDoug Rabson CLIENT* lockd; 671dfdcada3SDoug Rabson 672dfdcada3SDoug Rabson lockd = nlm_user_lockd(); 673dfdcada3SDoug Rabson if (lockd) 674dfdcada3SDoug Rabson nlm4_test_res_4(argp, result, lockd); 675dfdcada3SDoug Rabson 676dfdcada3SDoug Rabson return (FALSE); 677dfdcada3SDoug Rabson } 678dfdcada3SDoug Rabson 679dfdcada3SDoug Rabson bool_t 680dfdcada3SDoug Rabson nlm4_lock_res_4_svc(nlm4_res *argp, void *result, struct svc_req *rqstp) 681dfdcada3SDoug Rabson { 682dfdcada3SDoug Rabson CLIENT* lockd; 683dfdcada3SDoug Rabson 684dfdcada3SDoug Rabson lockd = nlm_user_lockd(); 685dfdcada3SDoug Rabson if (lockd) 686dfdcada3SDoug Rabson nlm4_lock_res_4(argp, result, lockd); 687dfdcada3SDoug Rabson 688dfdcada3SDoug Rabson return (FALSE); 689dfdcada3SDoug Rabson } 690dfdcada3SDoug Rabson 691dfdcada3SDoug Rabson bool_t 692dfdcada3SDoug Rabson nlm4_cancel_res_4_svc(nlm4_res *argp, void *result, struct svc_req *rqstp) 693dfdcada3SDoug Rabson { 694dfdcada3SDoug Rabson CLIENT* lockd; 695dfdcada3SDoug Rabson 696dfdcada3SDoug Rabson lockd = nlm_user_lockd(); 697dfdcada3SDoug Rabson if (lockd) 698dfdcada3SDoug Rabson nlm4_cancel_res_4(argp, result, lockd); 699dfdcada3SDoug Rabson 700dfdcada3SDoug Rabson return (FALSE); 701dfdcada3SDoug Rabson } 702dfdcada3SDoug Rabson 703dfdcada3SDoug Rabson bool_t 704dfdcada3SDoug Rabson nlm4_unlock_res_4_svc(nlm4_res *argp, void *result, struct svc_req *rqstp) 705dfdcada3SDoug Rabson { 706dfdcada3SDoug Rabson CLIENT* lockd; 707dfdcada3SDoug Rabson 708dfdcada3SDoug Rabson lockd = nlm_user_lockd(); 709dfdcada3SDoug Rabson if (lockd) 710dfdcada3SDoug Rabson nlm4_unlock_res_4(argp, result, lockd); 711dfdcada3SDoug Rabson 712dfdcada3SDoug Rabson return (FALSE); 713dfdcada3SDoug Rabson } 714dfdcada3SDoug Rabson 715dfdcada3SDoug Rabson bool_t 716dfdcada3SDoug Rabson nlm4_granted_res_4_svc(nlm4_res *argp, void *result, struct svc_req *rqstp) 717dfdcada3SDoug Rabson { 718dfdcada3SDoug Rabson 719dfdcada3SDoug Rabson return (FALSE); 720dfdcada3SDoug Rabson } 721dfdcada3SDoug Rabson 722dfdcada3SDoug Rabson bool_t 723dfdcada3SDoug Rabson nlm4_share_4_svc(nlm4_shareargs *argp, nlm4_shareres *result, struct svc_req *rqstp) 724dfdcada3SDoug Rabson { 725dfdcada3SDoug Rabson 726dfdcada3SDoug Rabson memset(result, 0, sizeof(*result)); 727dfdcada3SDoug Rabson result->stat = nlm4_denied; 728dfdcada3SDoug Rabson return (TRUE); 729dfdcada3SDoug Rabson } 730dfdcada3SDoug Rabson 731dfdcada3SDoug Rabson bool_t 732dfdcada3SDoug Rabson nlm4_unshare_4_svc(nlm4_shareargs *argp, nlm4_shareres *result, struct svc_req *rqstp) 733dfdcada3SDoug Rabson { 734dfdcada3SDoug Rabson 735dfdcada3SDoug Rabson memset(result, 0, sizeof(*result)); 736dfdcada3SDoug Rabson result->stat = nlm4_denied; 737dfdcada3SDoug Rabson return (TRUE); 738dfdcada3SDoug Rabson } 739dfdcada3SDoug Rabson 740dfdcada3SDoug Rabson bool_t 741dfdcada3SDoug Rabson nlm4_nm_lock_4_svc(nlm4_lockargs *argp, nlm4_res *result, struct svc_req *rqstp) 742dfdcada3SDoug Rabson { 743dfdcada3SDoug Rabson 744dfdcada3SDoug Rabson nlm_do_lock(argp, result, rqstp, FALSE); 745dfdcada3SDoug Rabson return (TRUE); 746dfdcada3SDoug Rabson } 747dfdcada3SDoug Rabson 748dfdcada3SDoug Rabson bool_t 749dfdcada3SDoug Rabson nlm4_free_all_4_svc(nlm4_notify *argp, void *result, struct svc_req *rqstp) 750dfdcada3SDoug Rabson { 751dfdcada3SDoug Rabson 752dfdcada3SDoug Rabson nlm_do_free_all(argp); 753dfdcada3SDoug Rabson return (TRUE); 754dfdcada3SDoug Rabson } 755dfdcada3SDoug Rabson 756dfdcada3SDoug Rabson int 757dfdcada3SDoug Rabson nlm_prog_4_freeresult(SVCXPRT *transp, xdrproc_t xdr_result, caddr_t result) 758dfdcada3SDoug Rabson { 759dfdcada3SDoug Rabson 760dfdcada3SDoug Rabson (void) xdr_free(xdr_result, result); 761dfdcada3SDoug Rabson return (TRUE); 762dfdcada3SDoug Rabson } 763