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