1dfdcada3SDoug Rabson /*- 2*fe267a55SPedro F. Giffuni * SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3*fe267a55SPedro F. Giffuni * 4dfdcada3SDoug Rabson * Copyright (c) 2008 Isilon Inc http://www.isilon.com/ 5dfdcada3SDoug Rabson * Authors: Doug Rabson <dfr@rabson.org> 6dfdcada3SDoug Rabson * Developed with Red Inc: Alfred Perlstein <alfred@freebsd.org> 7dfdcada3SDoug Rabson * 8dfdcada3SDoug Rabson * Redistribution and use in source and binary forms, with or without 9dfdcada3SDoug Rabson * modification, are permitted provided that the following conditions 10dfdcada3SDoug Rabson * are met: 11dfdcada3SDoug Rabson * 1. Redistributions of source code must retain the above copyright 12dfdcada3SDoug Rabson * notice, this list of conditions and the following disclaimer. 13dfdcada3SDoug Rabson * 2. Redistributions in binary form must reproduce the above copyright 14dfdcada3SDoug Rabson * notice, this list of conditions and the following disclaimer in the 15dfdcada3SDoug Rabson * documentation and/or other materials provided with the distribution. 16dfdcada3SDoug Rabson * 17dfdcada3SDoug Rabson * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18dfdcada3SDoug Rabson * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19dfdcada3SDoug Rabson * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20dfdcada3SDoug Rabson * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21dfdcada3SDoug Rabson * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22dfdcada3SDoug Rabson * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23dfdcada3SDoug Rabson * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24dfdcada3SDoug Rabson * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25dfdcada3SDoug Rabson * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26dfdcada3SDoug Rabson * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27dfdcada3SDoug Rabson * SUCH DAMAGE. 28dfdcada3SDoug Rabson */ 29dfdcada3SDoug Rabson 30dfdcada3SDoug Rabson #include <sys/cdefs.h> 31dfdcada3SDoug Rabson #ifndef lint 32dfdcada3SDoug Rabson /*static char sccsid[] = "from: @(#)nlm_prot.x 1.8 87/09/21 Copyr 1987 Sun Micro";*/ 33dfdcada3SDoug Rabson /*static char sccsid[] = "from: * @(#)nlm_prot.x 2.1 88/08/01 4.0 RPCSRC";*/ 34dfdcada3SDoug Rabson __RCSID("$NetBSD: nlm_prot.x,v 1.6 2000/06/07 14:30:15 bouyer Exp $"); 35dfdcada3SDoug Rabson #endif /* not lint */ 36dfdcada3SDoug Rabson __FBSDID("$FreeBSD$"); 37dfdcada3SDoug Rabson 38dfdcada3SDoug Rabson #include <sys/param.h> 39dfdcada3SDoug Rabson #include <sys/malloc.h> 40dfdcada3SDoug Rabson #include <sys/systm.h> 41dfdcada3SDoug Rabson 42ee31b83aSDoug Rabson #include <nlm/nlm_prot.h> 43ee31b83aSDoug Rabson #include <nlm/nlm.h> 44dfdcada3SDoug Rabson 45dfdcada3SDoug Rabson /**********************************************************************/ 46dfdcada3SDoug Rabson 47dfdcada3SDoug Rabson /* 48dfdcada3SDoug Rabson * Convert between various versions of the protocol structures. 49dfdcada3SDoug Rabson */ 50dfdcada3SDoug Rabson 51dfdcada3SDoug Rabson static void 52dfdcada3SDoug Rabson nlm_convert_to_nlm4_lock(struct nlm4_lock *dst, struct nlm_lock *src) 53dfdcada3SDoug Rabson { 54dfdcada3SDoug Rabson 55dfdcada3SDoug Rabson dst->caller_name = src->caller_name; 56dfdcada3SDoug Rabson dst->fh = src->fh; 57dfdcada3SDoug Rabson dst->oh = src->oh; 58dfdcada3SDoug Rabson dst->svid = src->svid; 59dfdcada3SDoug Rabson dst->l_offset = src->l_offset; 60dfdcada3SDoug Rabson dst->l_len = src->l_len; 61dfdcada3SDoug Rabson } 62dfdcada3SDoug Rabson 63dfdcada3SDoug Rabson static void 64dfdcada3SDoug Rabson nlm_convert_to_nlm4_share(struct nlm4_share *dst, struct nlm_share *src) 65dfdcada3SDoug Rabson { 66dfdcada3SDoug Rabson 67dfdcada3SDoug Rabson dst->caller_name = src->caller_name; 68dfdcada3SDoug Rabson dst->fh = src->fh; 69dfdcada3SDoug Rabson dst->oh = src->oh; 70dfdcada3SDoug Rabson dst->mode = src->mode; 71dfdcada3SDoug Rabson dst->access = src->access; 72dfdcada3SDoug Rabson } 73dfdcada3SDoug Rabson 74dfdcada3SDoug Rabson static void 75dfdcada3SDoug Rabson nlm_convert_to_nlm_holder(struct nlm_holder *dst, struct nlm4_holder *src) 76dfdcada3SDoug Rabson { 77dfdcada3SDoug Rabson 78dfdcada3SDoug Rabson dst->exclusive = src->exclusive; 79dfdcada3SDoug Rabson dst->svid = src->svid; 80dfdcada3SDoug Rabson dst->oh = src->oh; 81dfdcada3SDoug Rabson dst->l_offset = src->l_offset; 82dfdcada3SDoug Rabson dst->l_len = src->l_len; 83dfdcada3SDoug Rabson } 84dfdcada3SDoug Rabson 85dfdcada3SDoug Rabson static void 86dfdcada3SDoug Rabson nlm_convert_to_nlm4_holder(struct nlm4_holder *dst, struct nlm_holder *src) 87dfdcada3SDoug Rabson { 88dfdcada3SDoug Rabson 89dfdcada3SDoug Rabson dst->exclusive = src->exclusive; 90dfdcada3SDoug Rabson dst->svid = src->svid; 91dfdcada3SDoug Rabson dst->oh = src->oh; 92dfdcada3SDoug Rabson dst->l_offset = src->l_offset; 93dfdcada3SDoug Rabson dst->l_len = src->l_len; 94dfdcada3SDoug Rabson } 95dfdcada3SDoug Rabson 96dfdcada3SDoug Rabson static enum nlm_stats 97dfdcada3SDoug Rabson nlm_convert_to_nlm_stats(enum nlm4_stats src) 98dfdcada3SDoug Rabson { 99dfdcada3SDoug Rabson if (src > nlm4_deadlck) 100dfdcada3SDoug Rabson return nlm_denied; 101dfdcada3SDoug Rabson return (enum nlm_stats) src; 102dfdcada3SDoug Rabson } 103dfdcada3SDoug Rabson 104dfdcada3SDoug Rabson static void 105dfdcada3SDoug Rabson nlm_convert_to_nlm_res(struct nlm_res *dst, struct nlm4_res *src) 106dfdcada3SDoug Rabson { 107dfdcada3SDoug Rabson dst->cookie = src->cookie; 108dfdcada3SDoug Rabson dst->stat.stat = nlm_convert_to_nlm_stats(src->stat.stat); 109dfdcada3SDoug Rabson } 110dfdcada3SDoug Rabson 111dfdcada3SDoug Rabson static void 112dfdcada3SDoug Rabson nlm_convert_to_nlm4_res(struct nlm4_res *dst, struct nlm_res *src) 113dfdcada3SDoug Rabson { 114dfdcada3SDoug Rabson dst->cookie = src->cookie; 115dfdcada3SDoug Rabson dst->stat.stat = (enum nlm4_stats) src->stat.stat; 116dfdcada3SDoug Rabson } 117dfdcada3SDoug Rabson 118dfdcada3SDoug Rabson /**********************************************************************/ 119dfdcada3SDoug Rabson 120dfdcada3SDoug Rabson /* 121dfdcada3SDoug Rabson * RPC server stubs. 122dfdcada3SDoug Rabson */ 123dfdcada3SDoug Rabson 124dfdcada3SDoug Rabson bool_t 125dfdcada3SDoug Rabson nlm_sm_notify_0_svc(struct nlm_sm_status *argp, void *result, struct svc_req *rqstp) 126dfdcada3SDoug Rabson { 127dfdcada3SDoug Rabson nlm_sm_notify(argp); 128dfdcada3SDoug Rabson 129dfdcada3SDoug Rabson return (TRUE); 130dfdcada3SDoug Rabson } 131dfdcada3SDoug Rabson 132dfdcada3SDoug Rabson bool_t 133dfdcada3SDoug Rabson nlm_test_1_svc(struct nlm_testargs *argp, nlm_testres *result, struct svc_req *rqstp) 134dfdcada3SDoug Rabson { 135dfdcada3SDoug Rabson bool_t retval; 136dfdcada3SDoug Rabson nlm4_testargs args4; 137dfdcada3SDoug Rabson nlm4_testres res4; 138dfdcada3SDoug Rabson 139dfdcada3SDoug Rabson args4.cookie = argp->cookie; 140dfdcada3SDoug Rabson args4.exclusive = argp->exclusive; 141dfdcada3SDoug Rabson nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 142dfdcada3SDoug Rabson 143dfdcada3SDoug Rabson retval = nlm4_test_4_svc(&args4, &res4, rqstp); 144dfdcada3SDoug Rabson if (retval) { 145dfdcada3SDoug Rabson result->cookie = res4.cookie; 146dfdcada3SDoug Rabson result->stat.stat = nlm_convert_to_nlm_stats(res4.stat.stat); 147dfdcada3SDoug Rabson if (result->stat.stat == nlm_denied) 148dfdcada3SDoug Rabson nlm_convert_to_nlm_holder( 149dfdcada3SDoug Rabson &result->stat.nlm_testrply_u.holder, 150dfdcada3SDoug Rabson &res4.stat.nlm4_testrply_u.holder); 151dfdcada3SDoug Rabson } 152dfdcada3SDoug Rabson 153dfdcada3SDoug Rabson return (retval); 154dfdcada3SDoug Rabson } 155dfdcada3SDoug Rabson 156dfdcada3SDoug Rabson bool_t 157dfdcada3SDoug Rabson nlm_lock_1_svc(struct nlm_lockargs *argp, nlm_res *result, struct svc_req *rqstp) 158dfdcada3SDoug Rabson { 159dfdcada3SDoug Rabson bool_t retval; 160dfdcada3SDoug Rabson nlm4_lockargs args4; 161dfdcada3SDoug Rabson nlm4_res res4; 162dfdcada3SDoug Rabson 163dfdcada3SDoug Rabson args4.cookie = argp->cookie; 164dfdcada3SDoug Rabson args4.block = argp->block; 165dfdcada3SDoug Rabson args4.exclusive = argp->exclusive; 166dfdcada3SDoug Rabson nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 167dfdcada3SDoug Rabson args4.reclaim = argp->reclaim; 168dfdcada3SDoug Rabson args4.state = argp->state; 169dfdcada3SDoug Rabson 170dfdcada3SDoug Rabson retval = nlm4_lock_4_svc(&args4, &res4, rqstp); 171dfdcada3SDoug Rabson if (retval) 172dfdcada3SDoug Rabson nlm_convert_to_nlm_res(result, &res4); 173dfdcada3SDoug Rabson 174dfdcada3SDoug Rabson return (retval); 175dfdcada3SDoug Rabson } 176dfdcada3SDoug Rabson 177dfdcada3SDoug Rabson bool_t 178dfdcada3SDoug Rabson nlm_cancel_1_svc(struct nlm_cancargs *argp, nlm_res *result, struct svc_req *rqstp) 179dfdcada3SDoug Rabson { 180dfdcada3SDoug Rabson bool_t retval; 181dfdcada3SDoug Rabson nlm4_cancargs args4; 182dfdcada3SDoug Rabson nlm4_res res4; 183dfdcada3SDoug Rabson 184dfdcada3SDoug Rabson args4.cookie = argp->cookie; 185dfdcada3SDoug Rabson args4.block = argp->block; 186dfdcada3SDoug Rabson args4.exclusive = argp->exclusive; 187dfdcada3SDoug Rabson nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 188dfdcada3SDoug Rabson 189dfdcada3SDoug Rabson retval = nlm4_cancel_4_svc(&args4, &res4, rqstp); 190dfdcada3SDoug Rabson if (retval) 191dfdcada3SDoug Rabson nlm_convert_to_nlm_res(result, &res4); 192dfdcada3SDoug Rabson 193dfdcada3SDoug Rabson return (retval); 194dfdcada3SDoug Rabson } 195dfdcada3SDoug Rabson 196dfdcada3SDoug Rabson bool_t 197dfdcada3SDoug Rabson nlm_unlock_1_svc(struct nlm_unlockargs *argp, nlm_res *result, struct svc_req *rqstp) 198dfdcada3SDoug Rabson { 199dfdcada3SDoug Rabson bool_t retval; 200dfdcada3SDoug Rabson nlm4_unlockargs args4; 201dfdcada3SDoug Rabson nlm4_res res4; 202dfdcada3SDoug Rabson 203dfdcada3SDoug Rabson args4.cookie = argp->cookie; 204dfdcada3SDoug Rabson nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 205dfdcada3SDoug Rabson 206dfdcada3SDoug Rabson retval = nlm4_unlock_4_svc(&args4, &res4, rqstp); 207dfdcada3SDoug Rabson if (retval) 208dfdcada3SDoug Rabson nlm_convert_to_nlm_res(result, &res4); 209dfdcada3SDoug Rabson 210dfdcada3SDoug Rabson return (retval); 211dfdcada3SDoug Rabson } 212dfdcada3SDoug Rabson 213dfdcada3SDoug Rabson bool_t 214dfdcada3SDoug Rabson nlm_granted_1_svc(struct nlm_testargs *argp, nlm_res *result, struct svc_req *rqstp) 215dfdcada3SDoug Rabson { 216dfdcada3SDoug Rabson bool_t retval; 217dfdcada3SDoug Rabson nlm4_testargs args4; 218dfdcada3SDoug Rabson nlm4_res res4; 219dfdcada3SDoug Rabson 220dfdcada3SDoug Rabson args4.cookie = argp->cookie; 221dfdcada3SDoug Rabson args4.exclusive = argp->exclusive; 222dfdcada3SDoug Rabson nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 223dfdcada3SDoug Rabson 224dfdcada3SDoug Rabson retval = nlm4_granted_4_svc(&args4, &res4, rqstp); 225dfdcada3SDoug Rabson if (retval) 226dfdcada3SDoug Rabson nlm_convert_to_nlm_res(result, &res4); 227dfdcada3SDoug Rabson 228dfdcada3SDoug Rabson return (retval); 229dfdcada3SDoug Rabson } 230dfdcada3SDoug Rabson 231dfdcada3SDoug Rabson bool_t 232dfdcada3SDoug Rabson nlm_test_msg_1_svc(struct nlm_testargs *argp, void *result, struct svc_req *rqstp) 233dfdcada3SDoug Rabson { 234dfdcada3SDoug Rabson nlm4_testargs args4; 235dfdcada3SDoug Rabson nlm4_testres res4; 236dfdcada3SDoug Rabson nlm_testres res; 237dfdcada3SDoug Rabson CLIENT *rpc; 238dfdcada3SDoug Rabson char dummy; 239dfdcada3SDoug Rabson 240dfdcada3SDoug Rabson args4.cookie = argp->cookie; 241dfdcada3SDoug Rabson args4.exclusive = argp->exclusive; 242dfdcada3SDoug Rabson nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 243dfdcada3SDoug Rabson 244c675522fSDoug Rabson if (nlm_do_test(&args4, &res4, rqstp, &rpc)) 245c675522fSDoug Rabson return (FALSE); 246dfdcada3SDoug Rabson 247dfdcada3SDoug Rabson res.cookie = res4.cookie; 248dfdcada3SDoug Rabson res.stat.stat = nlm_convert_to_nlm_stats(res4.stat.stat); 249dfdcada3SDoug Rabson if (res.stat.stat == nlm_denied) 250dfdcada3SDoug Rabson nlm_convert_to_nlm_holder( 251dfdcada3SDoug Rabson &res.stat.nlm_testrply_u.holder, 252dfdcada3SDoug Rabson &res4.stat.nlm4_testrply_u.holder); 253dfdcada3SDoug Rabson 254c675522fSDoug Rabson if (rpc) { 255c675522fSDoug Rabson nlm_test_res_1(&res, &dummy, rpc, NULL, nlm_zero_tv); 256c675522fSDoug Rabson CLNT_RELEASE(rpc); 257c675522fSDoug Rabson } 258dfdcada3SDoug Rabson xdr_free((xdrproc_t) xdr_nlm_testres, &res); 259dfdcada3SDoug Rabson 260dfdcada3SDoug Rabson return (FALSE); 261dfdcada3SDoug Rabson } 262dfdcada3SDoug Rabson 263dfdcada3SDoug Rabson bool_t 264dfdcada3SDoug Rabson nlm_lock_msg_1_svc(struct nlm_lockargs *argp, void *result, struct svc_req *rqstp) 265dfdcada3SDoug Rabson { 266dfdcada3SDoug Rabson nlm4_lockargs args4; 267dfdcada3SDoug Rabson nlm4_res res4; 268dfdcada3SDoug Rabson nlm_res res; 269dfdcada3SDoug Rabson CLIENT *rpc; 270dfdcada3SDoug Rabson char dummy; 271dfdcada3SDoug Rabson 272dfdcada3SDoug Rabson args4.cookie = argp->cookie; 273dfdcada3SDoug Rabson args4.block = argp->block; 274dfdcada3SDoug Rabson args4.exclusive = argp->exclusive; 275dfdcada3SDoug Rabson nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 276dfdcada3SDoug Rabson args4.reclaim = argp->reclaim; 277dfdcada3SDoug Rabson args4.state = argp->state; 278dfdcada3SDoug Rabson 279c675522fSDoug Rabson if (nlm_do_lock(&args4, &res4, rqstp, TRUE, &rpc)) 280c675522fSDoug Rabson return (FALSE); 281dfdcada3SDoug Rabson 282dfdcada3SDoug Rabson nlm_convert_to_nlm_res(&res, &res4); 283dfdcada3SDoug Rabson 284c675522fSDoug Rabson if (rpc) { 285c675522fSDoug Rabson nlm_lock_res_1(&res, &dummy, rpc, NULL, nlm_zero_tv); 286c675522fSDoug Rabson CLNT_RELEASE(rpc); 287c675522fSDoug Rabson } 288dfdcada3SDoug Rabson xdr_free((xdrproc_t) xdr_nlm_res, &res); 289dfdcada3SDoug Rabson 290dfdcada3SDoug Rabson return (FALSE); 291dfdcada3SDoug Rabson } 292dfdcada3SDoug Rabson 293dfdcada3SDoug Rabson bool_t 294dfdcada3SDoug Rabson nlm_cancel_msg_1_svc(struct nlm_cancargs *argp, void *result, struct svc_req *rqstp) 295dfdcada3SDoug Rabson { 296dfdcada3SDoug Rabson nlm4_cancargs args4; 297dfdcada3SDoug Rabson nlm4_res res4; 298dfdcada3SDoug Rabson nlm_res res; 299dfdcada3SDoug Rabson CLIENT *rpc; 300dfdcada3SDoug Rabson char dummy; 301dfdcada3SDoug Rabson 302dfdcada3SDoug Rabson args4.cookie = argp->cookie; 303dfdcada3SDoug Rabson args4.block = argp->block; 304dfdcada3SDoug Rabson args4.exclusive = argp->exclusive; 305dfdcada3SDoug Rabson nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 306dfdcada3SDoug Rabson 307c675522fSDoug Rabson if (nlm_do_cancel(&args4, &res4, rqstp, &rpc)) 308c675522fSDoug Rabson return (FALSE); 309dfdcada3SDoug Rabson 310dfdcada3SDoug Rabson nlm_convert_to_nlm_res(&res, &res4); 311dfdcada3SDoug Rabson 312c675522fSDoug Rabson if (rpc) { 313c675522fSDoug Rabson nlm_cancel_res_1(&res, &dummy, rpc, NULL, nlm_zero_tv); 314c675522fSDoug Rabson CLNT_RELEASE(rpc); 315c675522fSDoug Rabson } 316dfdcada3SDoug Rabson xdr_free((xdrproc_t) xdr_nlm_res, &res); 317dfdcada3SDoug Rabson 318dfdcada3SDoug Rabson return (FALSE); 319dfdcada3SDoug Rabson } 320dfdcada3SDoug Rabson 321dfdcada3SDoug Rabson bool_t 322dfdcada3SDoug Rabson nlm_unlock_msg_1_svc(struct nlm_unlockargs *argp, void *result, struct svc_req *rqstp) 323dfdcada3SDoug Rabson { 324dfdcada3SDoug Rabson nlm4_unlockargs args4; 325dfdcada3SDoug Rabson nlm4_res res4; 326dfdcada3SDoug Rabson nlm_res res; 327dfdcada3SDoug Rabson CLIENT *rpc; 328dfdcada3SDoug Rabson char dummy; 329dfdcada3SDoug Rabson 330dfdcada3SDoug Rabson args4.cookie = argp->cookie; 331dfdcada3SDoug Rabson nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 332dfdcada3SDoug Rabson 333c675522fSDoug Rabson if (nlm_do_unlock(&args4, &res4, rqstp, &rpc)) 334c675522fSDoug Rabson return (FALSE); 335dfdcada3SDoug Rabson 336dfdcada3SDoug Rabson nlm_convert_to_nlm_res(&res, &res4); 337dfdcada3SDoug Rabson 338c675522fSDoug Rabson if (rpc) { 339c675522fSDoug Rabson nlm_unlock_res_1(&res, &dummy, rpc, NULL, nlm_zero_tv); 340c675522fSDoug Rabson CLNT_RELEASE(rpc); 341c675522fSDoug Rabson } 342dfdcada3SDoug Rabson xdr_free((xdrproc_t) xdr_nlm_res, &res); 343dfdcada3SDoug Rabson 344dfdcada3SDoug Rabson return (FALSE); 345dfdcada3SDoug Rabson } 346dfdcada3SDoug Rabson 347dfdcada3SDoug Rabson bool_t 348dfdcada3SDoug Rabson nlm_granted_msg_1_svc(struct nlm_testargs *argp, void *result, struct svc_req *rqstp) 349dfdcada3SDoug Rabson { 350dfdcada3SDoug Rabson nlm4_testargs args4; 351dfdcada3SDoug Rabson nlm4_res res4; 352dfdcada3SDoug Rabson nlm_res res; 353dfdcada3SDoug Rabson CLIENT *rpc; 354dfdcada3SDoug Rabson char dummy; 355dfdcada3SDoug Rabson 356dfdcada3SDoug Rabson args4.cookie = argp->cookie; 357dfdcada3SDoug Rabson args4.exclusive = argp->exclusive; 358dfdcada3SDoug Rabson nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 359dfdcada3SDoug Rabson 360c675522fSDoug Rabson if (nlm_do_granted(&args4, &res4, rqstp, &rpc)) 361c675522fSDoug Rabson return (FALSE); 362dfdcada3SDoug Rabson 363dfdcada3SDoug Rabson nlm_convert_to_nlm_res(&res, &res4); 364dfdcada3SDoug Rabson 365c675522fSDoug Rabson if (rpc) { 366c675522fSDoug Rabson nlm_granted_res_1(&res, &dummy, rpc, NULL, nlm_zero_tv); 367c675522fSDoug Rabson CLNT_RELEASE(rpc); 368c675522fSDoug Rabson } 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 518c675522fSDoug Rabson nlm_do_test(argp, result, rqstp, NULL); 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 526c675522fSDoug Rabson nlm_do_lock(argp, result, rqstp, TRUE, NULL); 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 534c675522fSDoug Rabson nlm_do_cancel(argp, result, rqstp, NULL); 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 542c675522fSDoug Rabson nlm_do_unlock(argp, result, rqstp, NULL); 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 550c675522fSDoug Rabson nlm_do_granted(argp, result, rqstp, NULL); 551dfdcada3SDoug Rabson return (TRUE); 552dfdcada3SDoug Rabson } 553dfdcada3SDoug Rabson 554dfdcada3SDoug Rabson bool_t 555dfdcada3SDoug Rabson nlm4_test_msg_4_svc(nlm4_testargs *argp, void *result, struct svc_req *rqstp) 556dfdcada3SDoug Rabson { 557dfdcada3SDoug Rabson nlm4_testres res4; 558dfdcada3SDoug Rabson CLIENT *rpc; 559dfdcada3SDoug Rabson char dummy; 560dfdcada3SDoug Rabson 561c675522fSDoug Rabson if (nlm_do_test(argp, &res4, rqstp, &rpc)) 562c675522fSDoug Rabson return (FALSE); 563c675522fSDoug Rabson if (rpc) { 564c675522fSDoug Rabson nlm4_test_res_4(&res4, &dummy, rpc, NULL, nlm_zero_tv); 565c675522fSDoug Rabson CLNT_RELEASE(rpc); 566c675522fSDoug Rabson } 567dfdcada3SDoug Rabson xdr_free((xdrproc_t) xdr_nlm4_testres, &res4); 568dfdcada3SDoug Rabson 569dfdcada3SDoug Rabson return (FALSE); 570dfdcada3SDoug Rabson } 571dfdcada3SDoug Rabson 572dfdcada3SDoug Rabson bool_t 573dfdcada3SDoug Rabson nlm4_lock_msg_4_svc(nlm4_lockargs *argp, void *result, struct svc_req *rqstp) 574dfdcada3SDoug Rabson { 575dfdcada3SDoug Rabson nlm4_res res4; 576dfdcada3SDoug Rabson CLIENT *rpc; 577dfdcada3SDoug Rabson char dummy; 578dfdcada3SDoug Rabson 579c675522fSDoug Rabson if (nlm_do_lock(argp, &res4, rqstp, TRUE, &rpc)) 580c675522fSDoug Rabson return (FALSE); 581c675522fSDoug Rabson if (rpc) { 582c675522fSDoug Rabson nlm4_lock_res_4(&res4, &dummy, rpc, NULL, nlm_zero_tv); 583c675522fSDoug Rabson CLNT_RELEASE(rpc); 584c675522fSDoug Rabson } 585dfdcada3SDoug Rabson xdr_free((xdrproc_t) xdr_nlm4_res, &res4); 586dfdcada3SDoug Rabson 587dfdcada3SDoug Rabson return (FALSE); 588dfdcada3SDoug Rabson } 589dfdcada3SDoug Rabson 590dfdcada3SDoug Rabson bool_t 591dfdcada3SDoug Rabson nlm4_cancel_msg_4_svc(nlm4_cancargs *argp, void *result, struct svc_req *rqstp) 592dfdcada3SDoug Rabson { 593dfdcada3SDoug Rabson nlm4_res res4; 594dfdcada3SDoug Rabson CLIENT *rpc; 595dfdcada3SDoug Rabson char dummy; 596dfdcada3SDoug Rabson 597c675522fSDoug Rabson if (nlm_do_cancel(argp, &res4, rqstp, &rpc)) 598c675522fSDoug Rabson return (FALSE); 599c675522fSDoug Rabson if (rpc) { 600c675522fSDoug Rabson nlm4_cancel_res_4(&res4, &dummy, rpc, NULL, nlm_zero_tv); 601c675522fSDoug Rabson CLNT_RELEASE(rpc); 602c675522fSDoug Rabson } 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_unlock_msg_4_svc(nlm4_unlockargs *argp, void *result, struct svc_req *rqstp) 610dfdcada3SDoug Rabson { 611dfdcada3SDoug Rabson nlm4_res res4; 612dfdcada3SDoug Rabson CLIENT *rpc; 613dfdcada3SDoug Rabson char dummy; 614dfdcada3SDoug Rabson 615c675522fSDoug Rabson if (nlm_do_unlock(argp, &res4, rqstp, &rpc)) 616d9ab5c4aSDoug Rabson return (FALSE); 617c675522fSDoug Rabson if (rpc) { 618c675522fSDoug Rabson nlm4_unlock_res_4(&res4, &dummy, rpc, NULL, nlm_zero_tv); 619c675522fSDoug Rabson CLNT_RELEASE(rpc); 620c675522fSDoug Rabson } 621dfdcada3SDoug Rabson xdr_free((xdrproc_t) xdr_nlm4_res, &res4); 622dfdcada3SDoug Rabson 623dfdcada3SDoug Rabson return (FALSE); 624dfdcada3SDoug Rabson } 625dfdcada3SDoug Rabson 626dfdcada3SDoug Rabson bool_t 627dfdcada3SDoug Rabson nlm4_granted_msg_4_svc(nlm4_testargs *argp, void *result, struct svc_req *rqstp) 628dfdcada3SDoug Rabson { 629dfdcada3SDoug Rabson nlm4_res res4; 630c675522fSDoug Rabson CLIENT *rpc; 631dfdcada3SDoug Rabson char dummy; 632dfdcada3SDoug Rabson 633c675522fSDoug Rabson if (nlm_do_granted(argp, &res4, rqstp, &rpc)) 634c675522fSDoug Rabson return (FALSE); 635c675522fSDoug Rabson if (rpc) { 636c675522fSDoug Rabson nlm4_granted_res_4(&res4, &dummy, rpc, NULL, nlm_zero_tv); 637c675522fSDoug Rabson CLNT_RELEASE(rpc); 638c675522fSDoug Rabson } 639dfdcada3SDoug Rabson xdr_free((xdrproc_t) xdr_nlm4_res, &res4); 640dfdcada3SDoug Rabson 641dfdcada3SDoug Rabson return (FALSE); 642dfdcada3SDoug Rabson } 643dfdcada3SDoug Rabson 644dfdcada3SDoug Rabson bool_t 645dfdcada3SDoug Rabson nlm4_test_res_4_svc(nlm4_testres *argp, void *result, struct svc_req *rqstp) 646dfdcada3SDoug Rabson { 647dfdcada3SDoug Rabson 648dfdcada3SDoug Rabson return (FALSE); 649dfdcada3SDoug Rabson } 650dfdcada3SDoug Rabson 651dfdcada3SDoug Rabson bool_t 652dfdcada3SDoug Rabson nlm4_lock_res_4_svc(nlm4_res *argp, void *result, struct svc_req *rqstp) 653dfdcada3SDoug Rabson { 654dfdcada3SDoug Rabson 655dfdcada3SDoug Rabson return (FALSE); 656dfdcada3SDoug Rabson } 657dfdcada3SDoug Rabson 658dfdcada3SDoug Rabson bool_t 659dfdcada3SDoug Rabson nlm4_cancel_res_4_svc(nlm4_res *argp, void *result, struct svc_req *rqstp) 660dfdcada3SDoug Rabson { 661dfdcada3SDoug Rabson 662dfdcada3SDoug Rabson return (FALSE); 663dfdcada3SDoug Rabson } 664dfdcada3SDoug Rabson 665dfdcada3SDoug Rabson bool_t 666dfdcada3SDoug Rabson nlm4_unlock_res_4_svc(nlm4_res *argp, void *result, struct svc_req *rqstp) 667dfdcada3SDoug Rabson { 668dfdcada3SDoug Rabson 669dfdcada3SDoug Rabson return (FALSE); 670dfdcada3SDoug Rabson } 671dfdcada3SDoug Rabson 672dfdcada3SDoug Rabson bool_t 673dfdcada3SDoug Rabson nlm4_granted_res_4_svc(nlm4_res *argp, void *result, struct svc_req *rqstp) 674dfdcada3SDoug Rabson { 675dfdcada3SDoug Rabson 676fbaa591fSZachary Loafman nlm_do_granted_res(argp, rqstp); 677dfdcada3SDoug Rabson return (FALSE); 678dfdcada3SDoug Rabson } 679dfdcada3SDoug Rabson 680dfdcada3SDoug Rabson bool_t 681dfdcada3SDoug Rabson nlm4_share_4_svc(nlm4_shareargs *argp, nlm4_shareres *result, struct svc_req *rqstp) 682dfdcada3SDoug Rabson { 683dfdcada3SDoug Rabson 684dfdcada3SDoug Rabson memset(result, 0, sizeof(*result)); 685dfdcada3SDoug Rabson result->stat = nlm4_denied; 686dfdcada3SDoug Rabson return (TRUE); 687dfdcada3SDoug Rabson } 688dfdcada3SDoug Rabson 689dfdcada3SDoug Rabson bool_t 690dfdcada3SDoug Rabson nlm4_unshare_4_svc(nlm4_shareargs *argp, nlm4_shareres *result, struct svc_req *rqstp) 691dfdcada3SDoug Rabson { 692dfdcada3SDoug Rabson 693dfdcada3SDoug Rabson memset(result, 0, sizeof(*result)); 694dfdcada3SDoug Rabson result->stat = nlm4_denied; 695dfdcada3SDoug Rabson return (TRUE); 696dfdcada3SDoug Rabson } 697dfdcada3SDoug Rabson 698dfdcada3SDoug Rabson bool_t 699dfdcada3SDoug Rabson nlm4_nm_lock_4_svc(nlm4_lockargs *argp, nlm4_res *result, struct svc_req *rqstp) 700dfdcada3SDoug Rabson { 701dfdcada3SDoug Rabson 702c675522fSDoug Rabson nlm_do_lock(argp, result, rqstp, FALSE, NULL); 703dfdcada3SDoug Rabson return (TRUE); 704dfdcada3SDoug Rabson } 705dfdcada3SDoug Rabson 706dfdcada3SDoug Rabson bool_t 707dfdcada3SDoug Rabson nlm4_free_all_4_svc(nlm4_notify *argp, void *result, struct svc_req *rqstp) 708dfdcada3SDoug Rabson { 709dfdcada3SDoug Rabson 710dfdcada3SDoug Rabson nlm_do_free_all(argp); 711dfdcada3SDoug Rabson return (TRUE); 712dfdcada3SDoug Rabson } 713dfdcada3SDoug Rabson 714dfdcada3SDoug Rabson int 715dfdcada3SDoug Rabson nlm_prog_4_freeresult(SVCXPRT *transp, xdrproc_t xdr_result, caddr_t result) 716dfdcada3SDoug Rabson { 717dfdcada3SDoug Rabson 718dfdcada3SDoug Rabson (void) xdr_free(xdr_result, result); 719dfdcada3SDoug Rabson return (TRUE); 720dfdcada3SDoug Rabson } 721