1177633Sdfr/*- 2177633Sdfr * Copyright (c) 2008 Isilon Inc http://www.isilon.com/ 3177633Sdfr * Authors: Doug Rabson <dfr@rabson.org> 4177633Sdfr * Developed with Red Inc: Alfred Perlstein <alfred@freebsd.org> 5177633Sdfr * 6177633Sdfr * Redistribution and use in source and binary forms, with or without 7177633Sdfr * modification, are permitted provided that the following conditions 8177633Sdfr * are met: 9177633Sdfr * 1. Redistributions of source code must retain the above copyright 10177633Sdfr * notice, this list of conditions and the following disclaimer. 11177633Sdfr * 2. Redistributions in binary form must reproduce the above copyright 12177633Sdfr * notice, this list of conditions and the following disclaimer in the 13177633Sdfr * documentation and/or other materials provided with the distribution. 14177633Sdfr * 15177633Sdfr * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16177633Sdfr * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17177633Sdfr * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18177633Sdfr * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19177633Sdfr * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20177633Sdfr * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21177633Sdfr * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22177633Sdfr * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23177633Sdfr * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24177633Sdfr * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25177633Sdfr * SUCH DAMAGE. 26177633Sdfr */ 27177633Sdfr 28177633Sdfr#include <sys/cdefs.h> 29177633Sdfr#ifndef lint 30177633Sdfr/*static char sccsid[] = "from: @(#)nlm_prot.x 1.8 87/09/21 Copyr 1987 Sun Micro";*/ 31177633Sdfr/*static char sccsid[] = "from: * @(#)nlm_prot.x 2.1 88/08/01 4.0 RPCSRC";*/ 32177633Sdfr__RCSID("$NetBSD: nlm_prot.x,v 1.6 2000/06/07 14:30:15 bouyer Exp $"); 33177633Sdfr#endif /* not lint */ 34177633Sdfr__FBSDID("$FreeBSD$"); 35177633Sdfr 36177633Sdfr#include <sys/param.h> 37177633Sdfr#include <sys/malloc.h> 38177633Sdfr#include <sys/systm.h> 39177633Sdfr 40177685Sdfr#include <nlm/nlm_prot.h> 41177685Sdfr#include <nlm/nlm.h> 42177633Sdfr 43177633Sdfr/**********************************************************************/ 44177633Sdfr 45177633Sdfr/* 46177633Sdfr * Convert between various versions of the protocol structures. 47177633Sdfr */ 48177633Sdfr 49177633Sdfrstatic void 50177633Sdfrnlm_convert_to_nlm4_lock(struct nlm4_lock *dst, struct nlm_lock *src) 51177633Sdfr{ 52177633Sdfr 53177633Sdfr dst->caller_name = src->caller_name; 54177633Sdfr dst->fh = src->fh; 55177633Sdfr dst->oh = src->oh; 56177633Sdfr dst->svid = src->svid; 57177633Sdfr dst->l_offset = src->l_offset; 58177633Sdfr dst->l_len = src->l_len; 59177633Sdfr} 60177633Sdfr 61177633Sdfrstatic void 62177633Sdfrnlm_convert_to_nlm4_share(struct nlm4_share *dst, struct nlm_share *src) 63177633Sdfr{ 64177633Sdfr 65177633Sdfr dst->caller_name = src->caller_name; 66177633Sdfr dst->fh = src->fh; 67177633Sdfr dst->oh = src->oh; 68177633Sdfr dst->mode = src->mode; 69177633Sdfr dst->access = src->access; 70177633Sdfr} 71177633Sdfr 72177633Sdfrstatic void 73177633Sdfrnlm_convert_to_nlm_holder(struct nlm_holder *dst, struct nlm4_holder *src) 74177633Sdfr{ 75177633Sdfr 76177633Sdfr dst->exclusive = src->exclusive; 77177633Sdfr dst->svid = src->svid; 78177633Sdfr dst->oh = src->oh; 79177633Sdfr dst->l_offset = src->l_offset; 80177633Sdfr dst->l_len = src->l_len; 81177633Sdfr} 82177633Sdfr 83177633Sdfrstatic void 84177633Sdfrnlm_convert_to_nlm4_holder(struct nlm4_holder *dst, struct nlm_holder *src) 85177633Sdfr{ 86177633Sdfr 87177633Sdfr dst->exclusive = src->exclusive; 88177633Sdfr dst->svid = src->svid; 89177633Sdfr dst->oh = src->oh; 90177633Sdfr dst->l_offset = src->l_offset; 91177633Sdfr dst->l_len = src->l_len; 92177633Sdfr} 93177633Sdfr 94177633Sdfrstatic enum nlm_stats 95177633Sdfrnlm_convert_to_nlm_stats(enum nlm4_stats src) 96177633Sdfr{ 97177633Sdfr if (src > nlm4_deadlck) 98177633Sdfr return nlm_denied; 99177633Sdfr return (enum nlm_stats) src; 100177633Sdfr} 101177633Sdfr 102177633Sdfrstatic void 103177633Sdfrnlm_convert_to_nlm_res(struct nlm_res *dst, struct nlm4_res *src) 104177633Sdfr{ 105177633Sdfr dst->cookie = src->cookie; 106177633Sdfr dst->stat.stat = nlm_convert_to_nlm_stats(src->stat.stat); 107177633Sdfr} 108177633Sdfr 109177633Sdfrstatic void 110177633Sdfrnlm_convert_to_nlm4_res(struct nlm4_res *dst, struct nlm_res *src) 111177633Sdfr{ 112177633Sdfr dst->cookie = src->cookie; 113177633Sdfr dst->stat.stat = (enum nlm4_stats) src->stat.stat; 114177633Sdfr} 115177633Sdfr 116177633Sdfr/**********************************************************************/ 117177633Sdfr 118177633Sdfr/* 119177633Sdfr * RPC server stubs. 120177633Sdfr */ 121177633Sdfr 122177633Sdfrbool_t 123177633Sdfrnlm_sm_notify_0_svc(struct nlm_sm_status *argp, void *result, struct svc_req *rqstp) 124177633Sdfr{ 125177633Sdfr nlm_sm_notify(argp); 126177633Sdfr 127177633Sdfr return (TRUE); 128177633Sdfr} 129177633Sdfr 130177633Sdfrbool_t 131177633Sdfrnlm_test_1_svc(struct nlm_testargs *argp, nlm_testres *result, struct svc_req *rqstp) 132177633Sdfr{ 133177633Sdfr bool_t retval; 134177633Sdfr nlm4_testargs args4; 135177633Sdfr nlm4_testres res4; 136177633Sdfr 137177633Sdfr args4.cookie = argp->cookie; 138177633Sdfr args4.exclusive = argp->exclusive; 139177633Sdfr nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 140177633Sdfr 141177633Sdfr retval = nlm4_test_4_svc(&args4, &res4, rqstp); 142177633Sdfr if (retval) { 143177633Sdfr result->cookie = res4.cookie; 144177633Sdfr result->stat.stat = nlm_convert_to_nlm_stats(res4.stat.stat); 145177633Sdfr if (result->stat.stat == nlm_denied) 146177633Sdfr nlm_convert_to_nlm_holder( 147177633Sdfr &result->stat.nlm_testrply_u.holder, 148177633Sdfr &res4.stat.nlm4_testrply_u.holder); 149177633Sdfr } 150177633Sdfr 151177633Sdfr return (retval); 152177633Sdfr} 153177633Sdfr 154177633Sdfrbool_t 155177633Sdfrnlm_lock_1_svc(struct nlm_lockargs *argp, nlm_res *result, struct svc_req *rqstp) 156177633Sdfr{ 157177633Sdfr bool_t retval; 158177633Sdfr nlm4_lockargs args4; 159177633Sdfr nlm4_res res4; 160177633Sdfr 161177633Sdfr args4.cookie = argp->cookie; 162177633Sdfr args4.block = argp->block; 163177633Sdfr args4.exclusive = argp->exclusive; 164177633Sdfr nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 165177633Sdfr args4.reclaim = argp->reclaim; 166177633Sdfr args4.state = argp->state; 167177633Sdfr 168177633Sdfr retval = nlm4_lock_4_svc(&args4, &res4, rqstp); 169177633Sdfr if (retval) 170177633Sdfr nlm_convert_to_nlm_res(result, &res4); 171177633Sdfr 172177633Sdfr return (retval); 173177633Sdfr} 174177633Sdfr 175177633Sdfrbool_t 176177633Sdfrnlm_cancel_1_svc(struct nlm_cancargs *argp, nlm_res *result, struct svc_req *rqstp) 177177633Sdfr{ 178177633Sdfr bool_t retval; 179177633Sdfr nlm4_cancargs args4; 180177633Sdfr nlm4_res res4; 181177633Sdfr 182177633Sdfr args4.cookie = argp->cookie; 183177633Sdfr args4.block = argp->block; 184177633Sdfr args4.exclusive = argp->exclusive; 185177633Sdfr nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 186177633Sdfr 187177633Sdfr retval = nlm4_cancel_4_svc(&args4, &res4, rqstp); 188177633Sdfr if (retval) 189177633Sdfr nlm_convert_to_nlm_res(result, &res4); 190177633Sdfr 191177633Sdfr return (retval); 192177633Sdfr} 193177633Sdfr 194177633Sdfrbool_t 195177633Sdfrnlm_unlock_1_svc(struct nlm_unlockargs *argp, nlm_res *result, struct svc_req *rqstp) 196177633Sdfr{ 197177633Sdfr bool_t retval; 198177633Sdfr nlm4_unlockargs args4; 199177633Sdfr nlm4_res res4; 200177633Sdfr 201177633Sdfr args4.cookie = argp->cookie; 202177633Sdfr nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 203177633Sdfr 204177633Sdfr retval = nlm4_unlock_4_svc(&args4, &res4, rqstp); 205177633Sdfr if (retval) 206177633Sdfr nlm_convert_to_nlm_res(result, &res4); 207177633Sdfr 208177633Sdfr return (retval); 209177633Sdfr} 210177633Sdfr 211177633Sdfrbool_t 212177633Sdfrnlm_granted_1_svc(struct nlm_testargs *argp, nlm_res *result, struct svc_req *rqstp) 213177633Sdfr{ 214177633Sdfr bool_t retval; 215177633Sdfr nlm4_testargs args4; 216177633Sdfr nlm4_res res4; 217177633Sdfr 218177633Sdfr args4.cookie = argp->cookie; 219177633Sdfr args4.exclusive = argp->exclusive; 220177633Sdfr nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 221177633Sdfr 222177633Sdfr retval = nlm4_granted_4_svc(&args4, &res4, rqstp); 223177633Sdfr if (retval) 224177633Sdfr nlm_convert_to_nlm_res(result, &res4); 225177633Sdfr 226177633Sdfr return (retval); 227177633Sdfr} 228177633Sdfr 229177633Sdfrbool_t 230177633Sdfrnlm_test_msg_1_svc(struct nlm_testargs *argp, void *result, struct svc_req *rqstp) 231177633Sdfr{ 232177633Sdfr nlm4_testargs args4; 233177633Sdfr nlm4_testres res4; 234177633Sdfr nlm_testres res; 235177633Sdfr CLIENT *rpc; 236177633Sdfr char dummy; 237177633Sdfr 238177633Sdfr args4.cookie = argp->cookie; 239177633Sdfr args4.exclusive = argp->exclusive; 240177633Sdfr nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 241177633Sdfr 242180025Sdfr if (nlm_do_test(&args4, &res4, rqstp, &rpc)) 243180025Sdfr return (FALSE); 244177633Sdfr 245177633Sdfr res.cookie = res4.cookie; 246177633Sdfr res.stat.stat = nlm_convert_to_nlm_stats(res4.stat.stat); 247177633Sdfr if (res.stat.stat == nlm_denied) 248177633Sdfr nlm_convert_to_nlm_holder( 249177633Sdfr &res.stat.nlm_testrply_u.holder, 250177633Sdfr &res4.stat.nlm4_testrply_u.holder); 251177633Sdfr 252180025Sdfr if (rpc) { 253180025Sdfr nlm_test_res_1(&res, &dummy, rpc, NULL, nlm_zero_tv); 254180025Sdfr CLNT_RELEASE(rpc); 255180025Sdfr } 256177633Sdfr xdr_free((xdrproc_t) xdr_nlm_testres, &res); 257177633Sdfr 258177633Sdfr return (FALSE); 259177633Sdfr} 260177633Sdfr 261177633Sdfrbool_t 262177633Sdfrnlm_lock_msg_1_svc(struct nlm_lockargs *argp, void *result, struct svc_req *rqstp) 263177633Sdfr{ 264177633Sdfr nlm4_lockargs args4; 265177633Sdfr nlm4_res res4; 266177633Sdfr nlm_res res; 267177633Sdfr CLIENT *rpc; 268177633Sdfr char dummy; 269177633Sdfr 270177633Sdfr args4.cookie = argp->cookie; 271177633Sdfr args4.block = argp->block; 272177633Sdfr args4.exclusive = argp->exclusive; 273177633Sdfr nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 274177633Sdfr args4.reclaim = argp->reclaim; 275177633Sdfr args4.state = argp->state; 276177633Sdfr 277180025Sdfr if (nlm_do_lock(&args4, &res4, rqstp, TRUE, &rpc)) 278180025Sdfr return (FALSE); 279177633Sdfr 280177633Sdfr nlm_convert_to_nlm_res(&res, &res4); 281177633Sdfr 282180025Sdfr if (rpc) { 283180025Sdfr nlm_lock_res_1(&res, &dummy, rpc, NULL, nlm_zero_tv); 284180025Sdfr CLNT_RELEASE(rpc); 285180025Sdfr } 286177633Sdfr xdr_free((xdrproc_t) xdr_nlm_res, &res); 287177633Sdfr 288177633Sdfr return (FALSE); 289177633Sdfr} 290177633Sdfr 291177633Sdfrbool_t 292177633Sdfrnlm_cancel_msg_1_svc(struct nlm_cancargs *argp, void *result, struct svc_req *rqstp) 293177633Sdfr{ 294177633Sdfr nlm4_cancargs args4; 295177633Sdfr nlm4_res res4; 296177633Sdfr nlm_res res; 297177633Sdfr CLIENT *rpc; 298177633Sdfr char dummy; 299177633Sdfr 300177633Sdfr args4.cookie = argp->cookie; 301177633Sdfr args4.block = argp->block; 302177633Sdfr args4.exclusive = argp->exclusive; 303177633Sdfr nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 304177633Sdfr 305180025Sdfr if (nlm_do_cancel(&args4, &res4, rqstp, &rpc)) 306180025Sdfr return (FALSE); 307177633Sdfr 308177633Sdfr nlm_convert_to_nlm_res(&res, &res4); 309177633Sdfr 310180025Sdfr if (rpc) { 311180025Sdfr nlm_cancel_res_1(&res, &dummy, rpc, NULL, nlm_zero_tv); 312180025Sdfr CLNT_RELEASE(rpc); 313180025Sdfr } 314177633Sdfr xdr_free((xdrproc_t) xdr_nlm_res, &res); 315177633Sdfr 316177633Sdfr return (FALSE); 317177633Sdfr} 318177633Sdfr 319177633Sdfrbool_t 320177633Sdfrnlm_unlock_msg_1_svc(struct nlm_unlockargs *argp, void *result, struct svc_req *rqstp) 321177633Sdfr{ 322177633Sdfr nlm4_unlockargs args4; 323177633Sdfr nlm4_res res4; 324177633Sdfr nlm_res res; 325177633Sdfr CLIENT *rpc; 326177633Sdfr char dummy; 327177633Sdfr 328177633Sdfr args4.cookie = argp->cookie; 329177633Sdfr nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 330177633Sdfr 331180025Sdfr if (nlm_do_unlock(&args4, &res4, rqstp, &rpc)) 332180025Sdfr return (FALSE); 333177633Sdfr 334177633Sdfr nlm_convert_to_nlm_res(&res, &res4); 335177633Sdfr 336180025Sdfr if (rpc) { 337180025Sdfr nlm_unlock_res_1(&res, &dummy, rpc, NULL, nlm_zero_tv); 338180025Sdfr CLNT_RELEASE(rpc); 339180025Sdfr } 340177633Sdfr xdr_free((xdrproc_t) xdr_nlm_res, &res); 341177633Sdfr 342177633Sdfr return (FALSE); 343177633Sdfr} 344177633Sdfr 345177633Sdfrbool_t 346177633Sdfrnlm_granted_msg_1_svc(struct nlm_testargs *argp, void *result, struct svc_req *rqstp) 347177633Sdfr{ 348177633Sdfr nlm4_testargs args4; 349177633Sdfr nlm4_res res4; 350177633Sdfr nlm_res res; 351177633Sdfr CLIENT *rpc; 352177633Sdfr char dummy; 353177633Sdfr 354177633Sdfr args4.cookie = argp->cookie; 355177633Sdfr args4.exclusive = argp->exclusive; 356177633Sdfr nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 357177633Sdfr 358180025Sdfr if (nlm_do_granted(&args4, &res4, rqstp, &rpc)) 359180025Sdfr return (FALSE); 360177633Sdfr 361177633Sdfr nlm_convert_to_nlm_res(&res, &res4); 362177633Sdfr 363180025Sdfr if (rpc) { 364180025Sdfr nlm_granted_res_1(&res, &dummy, rpc, NULL, nlm_zero_tv); 365180025Sdfr CLNT_RELEASE(rpc); 366180025Sdfr } 367177633Sdfr xdr_free((xdrproc_t) xdr_nlm_res, &res); 368177633Sdfr 369177633Sdfr return (FALSE); 370177633Sdfr} 371177633Sdfr 372177633Sdfrbool_t 373177633Sdfrnlm_test_res_1_svc(nlm_testres *argp, void *result, struct svc_req *rqstp) 374177633Sdfr{ 375177633Sdfr nlm4_testres args4; 376177633Sdfr 377177633Sdfr args4.cookie = argp->cookie; 378177633Sdfr if (argp->stat.stat == nlm_denied) 379177633Sdfr nlm_convert_to_nlm4_holder( 380177633Sdfr &args4.stat.nlm4_testrply_u.holder, 381177633Sdfr &argp->stat.nlm_testrply_u.holder); 382177633Sdfr 383177633Sdfr return (nlm4_test_res_4_svc(&args4, result, rqstp)); 384177633Sdfr} 385177633Sdfr 386177633Sdfrbool_t 387177633Sdfrnlm_lock_res_1_svc(nlm_res *argp, void *result, struct svc_req *rqstp) 388177633Sdfr{ 389177633Sdfr nlm4_res arg4; 390177633Sdfr 391177633Sdfr nlm_convert_to_nlm4_res(&arg4, argp); 392177633Sdfr return (nlm4_lock_res_4_svc(&arg4, result, rqstp)); 393177633Sdfr} 394177633Sdfr 395177633Sdfrbool_t 396177633Sdfrnlm_cancel_res_1_svc(nlm_res *argp, void *result, struct svc_req *rqstp) 397177633Sdfr{ 398177633Sdfr nlm4_res arg4; 399177633Sdfr 400177633Sdfr nlm_convert_to_nlm4_res(&arg4, argp); 401177633Sdfr return (nlm4_cancel_res_4_svc(&arg4, result, rqstp)); 402177633Sdfr} 403177633Sdfr 404177633Sdfrbool_t 405177633Sdfrnlm_unlock_res_1_svc(nlm_res *argp, void *result, struct svc_req *rqstp) 406177633Sdfr{ 407177633Sdfr nlm4_res arg4; 408177633Sdfr 409177633Sdfr nlm_convert_to_nlm4_res(&arg4, argp); 410177633Sdfr return (nlm4_unlock_res_4_svc(&arg4, result, rqstp)); 411177633Sdfr} 412177633Sdfr 413177633Sdfrbool_t 414177633Sdfrnlm_granted_res_1_svc(nlm_res *argp, void *result, struct svc_req *rqstp) 415177633Sdfr{ 416177633Sdfr nlm4_res arg4; 417177633Sdfr 418177633Sdfr nlm_convert_to_nlm4_res(&arg4, argp); 419177633Sdfr return (nlm4_granted_res_4_svc(&arg4, result, rqstp)); 420177633Sdfr} 421177633Sdfr 422177633Sdfrint 423177633Sdfrnlm_prog_1_freeresult(SVCXPRT *transp, xdrproc_t xdr_result, caddr_t result) 424177633Sdfr{ 425177633Sdfr 426177633Sdfr (void) xdr_free(xdr_result, result); 427177633Sdfr return (TRUE); 428177633Sdfr} 429177633Sdfr 430177633Sdfrbool_t 431177633Sdfrnlm_share_3_svc(nlm_shareargs *argp, nlm_shareres *result, struct svc_req *rqstp) 432177633Sdfr{ 433177633Sdfr bool_t retval; 434177633Sdfr nlm4_shareargs args4; 435177633Sdfr nlm4_shareres res4; 436177633Sdfr 437177633Sdfr args4.cookie = argp->cookie; 438177633Sdfr nlm_convert_to_nlm4_share(&args4.share, &argp->share); 439177633Sdfr args4.reclaim = argp->reclaim; 440177633Sdfr 441177633Sdfr retval = nlm4_share_4_svc(&args4, &res4, rqstp); 442177633Sdfr if (retval) { 443177633Sdfr result->cookie = res4.cookie; 444177633Sdfr result->stat = nlm_convert_to_nlm_stats(res4.stat); 445177633Sdfr result->sequence = res4.sequence; 446177633Sdfr } 447177633Sdfr 448177633Sdfr return (retval); 449177633Sdfr} 450177633Sdfr 451177633Sdfrbool_t 452177633Sdfrnlm_unshare_3_svc(nlm_shareargs *argp, nlm_shareres *result, struct svc_req *rqstp) 453177633Sdfr{ 454177633Sdfr bool_t retval; 455177633Sdfr nlm4_shareargs args4; 456177633Sdfr nlm4_shareres res4; 457177633Sdfr 458177633Sdfr args4.cookie = argp->cookie; 459177633Sdfr nlm_convert_to_nlm4_share(&args4.share, &argp->share); 460177633Sdfr args4.reclaim = argp->reclaim; 461177633Sdfr 462177633Sdfr retval = nlm4_unshare_4_svc(&args4, &res4, rqstp); 463177633Sdfr if (retval) { 464177633Sdfr result->cookie = res4.cookie; 465177633Sdfr result->stat = nlm_convert_to_nlm_stats(res4.stat); 466177633Sdfr result->sequence = res4.sequence; 467177633Sdfr } 468177633Sdfr 469177633Sdfr return (retval); 470177633Sdfr} 471177633Sdfr 472177633Sdfrbool_t 473177633Sdfrnlm_nm_lock_3_svc(nlm_lockargs *argp, nlm_res *result, struct svc_req *rqstp) 474177633Sdfr{ 475177633Sdfr bool_t retval; 476177633Sdfr nlm4_lockargs args4; 477177633Sdfr nlm4_res res4; 478177633Sdfr 479177633Sdfr args4.cookie = argp->cookie; 480177633Sdfr args4.block = argp->block; 481177633Sdfr args4.exclusive = argp->exclusive; 482177633Sdfr nlm_convert_to_nlm4_lock(&args4.alock, &argp->alock); 483177633Sdfr args4.reclaim = argp->reclaim; 484177633Sdfr args4.state = argp->state; 485177633Sdfr 486177633Sdfr retval = nlm4_nm_lock_4_svc(&args4, &res4, rqstp); 487177633Sdfr if (retval) 488177633Sdfr nlm_convert_to_nlm_res(result, &res4); 489177633Sdfr 490177633Sdfr return (retval); 491177633Sdfr} 492177633Sdfr 493177633Sdfrbool_t 494177633Sdfrnlm_free_all_3_svc(nlm_notify *argp, void *result, struct svc_req *rqstp) 495177633Sdfr{ 496177633Sdfr struct nlm4_notify args4; 497177633Sdfr 498177633Sdfr args4.name = argp->name; 499177633Sdfr args4.state = argp->state; 500177633Sdfr 501177633Sdfr return (nlm4_free_all_4_svc(&args4, result, rqstp)); 502177633Sdfr} 503177633Sdfr 504177633Sdfrint 505177633Sdfrnlm_prog_3_freeresult(SVCXPRT *transp, xdrproc_t xdr_result, caddr_t result) 506177633Sdfr{ 507177633Sdfr 508177633Sdfr (void) xdr_free(xdr_result, result); 509177633Sdfr return (TRUE); 510177633Sdfr} 511177633Sdfr 512177633Sdfrbool_t 513177633Sdfrnlm4_test_4_svc(nlm4_testargs *argp, nlm4_testres *result, struct svc_req *rqstp) 514177633Sdfr{ 515177633Sdfr 516180025Sdfr nlm_do_test(argp, result, rqstp, NULL); 517177633Sdfr return (TRUE); 518177633Sdfr} 519177633Sdfr 520177633Sdfrbool_t 521177633Sdfrnlm4_lock_4_svc(nlm4_lockargs *argp, nlm4_res *result, struct svc_req *rqstp) 522177633Sdfr{ 523177633Sdfr 524180025Sdfr nlm_do_lock(argp, result, rqstp, TRUE, NULL); 525177633Sdfr return (TRUE); 526177633Sdfr} 527177633Sdfr 528177633Sdfrbool_t 529177633Sdfrnlm4_cancel_4_svc(nlm4_cancargs *argp, nlm4_res *result, struct svc_req *rqstp) 530177633Sdfr{ 531177633Sdfr 532180025Sdfr nlm_do_cancel(argp, result, rqstp, NULL); 533177633Sdfr return (TRUE); 534177633Sdfr} 535177633Sdfr 536177633Sdfrbool_t 537177633Sdfrnlm4_unlock_4_svc(nlm4_unlockargs *argp, nlm4_res *result, struct svc_req *rqstp) 538177633Sdfr{ 539177633Sdfr 540180025Sdfr nlm_do_unlock(argp, result, rqstp, NULL); 541177633Sdfr return (TRUE); 542177633Sdfr} 543177633Sdfr 544177633Sdfrbool_t 545177633Sdfrnlm4_granted_4_svc(nlm4_testargs *argp, nlm4_res *result, struct svc_req *rqstp) 546177633Sdfr{ 547177633Sdfr 548180025Sdfr nlm_do_granted(argp, result, rqstp, NULL); 549177633Sdfr return (TRUE); 550177633Sdfr} 551177633Sdfr 552177633Sdfrbool_t 553177633Sdfrnlm4_test_msg_4_svc(nlm4_testargs *argp, void *result, struct svc_req *rqstp) 554177633Sdfr{ 555177633Sdfr nlm4_testres res4; 556177633Sdfr CLIENT *rpc; 557177633Sdfr char dummy; 558177633Sdfr 559180025Sdfr if (nlm_do_test(argp, &res4, rqstp, &rpc)) 560180025Sdfr return (FALSE); 561180025Sdfr if (rpc) { 562180025Sdfr nlm4_test_res_4(&res4, &dummy, rpc, NULL, nlm_zero_tv); 563180025Sdfr CLNT_RELEASE(rpc); 564180025Sdfr } 565177633Sdfr xdr_free((xdrproc_t) xdr_nlm4_testres, &res4); 566177633Sdfr 567177633Sdfr return (FALSE); 568177633Sdfr} 569177633Sdfr 570177633Sdfrbool_t 571177633Sdfrnlm4_lock_msg_4_svc(nlm4_lockargs *argp, void *result, struct svc_req *rqstp) 572177633Sdfr{ 573177633Sdfr nlm4_res res4; 574177633Sdfr CLIENT *rpc; 575177633Sdfr char dummy; 576177633Sdfr 577180025Sdfr if (nlm_do_lock(argp, &res4, rqstp, TRUE, &rpc)) 578180025Sdfr return (FALSE); 579180025Sdfr if (rpc) { 580180025Sdfr nlm4_lock_res_4(&res4, &dummy, rpc, NULL, nlm_zero_tv); 581180025Sdfr CLNT_RELEASE(rpc); 582180025Sdfr } 583177633Sdfr xdr_free((xdrproc_t) xdr_nlm4_res, &res4); 584177633Sdfr 585177633Sdfr return (FALSE); 586177633Sdfr} 587177633Sdfr 588177633Sdfrbool_t 589177633Sdfrnlm4_cancel_msg_4_svc(nlm4_cancargs *argp, void *result, struct svc_req *rqstp) 590177633Sdfr{ 591177633Sdfr nlm4_res res4; 592177633Sdfr CLIENT *rpc; 593177633Sdfr char dummy; 594177633Sdfr 595180025Sdfr if (nlm_do_cancel(argp, &res4, rqstp, &rpc)) 596180025Sdfr return (FALSE); 597180025Sdfr if (rpc) { 598180025Sdfr nlm4_cancel_res_4(&res4, &dummy, rpc, NULL, nlm_zero_tv); 599180025Sdfr CLNT_RELEASE(rpc); 600180025Sdfr } 601177633Sdfr xdr_free((xdrproc_t) xdr_nlm4_res, &res4); 602177633Sdfr 603177633Sdfr return (FALSE); 604177633Sdfr} 605177633Sdfr 606177633Sdfrbool_t 607177633Sdfrnlm4_unlock_msg_4_svc(nlm4_unlockargs *argp, void *result, struct svc_req *rqstp) 608177633Sdfr{ 609177633Sdfr nlm4_res res4; 610177633Sdfr CLIENT *rpc; 611177633Sdfr char dummy; 612177633Sdfr 613180025Sdfr if (nlm_do_unlock(argp, &res4, rqstp, &rpc)) 614182153Sdfr return (FALSE); 615180025Sdfr if (rpc) { 616180025Sdfr nlm4_unlock_res_4(&res4, &dummy, rpc, NULL, nlm_zero_tv); 617180025Sdfr CLNT_RELEASE(rpc); 618180025Sdfr } 619177633Sdfr xdr_free((xdrproc_t) xdr_nlm4_res, &res4); 620177633Sdfr 621177633Sdfr return (FALSE); 622177633Sdfr} 623177633Sdfr 624177633Sdfrbool_t 625177633Sdfrnlm4_granted_msg_4_svc(nlm4_testargs *argp, void *result, struct svc_req *rqstp) 626177633Sdfr{ 627180025Sdfr nlm4_res res4; 628177633Sdfr CLIENT *rpc; 629177633Sdfr char dummy; 630177633Sdfr 631180025Sdfr if (nlm_do_granted(argp, &res4, rqstp, &rpc)) 632180025Sdfr return (FALSE); 633180025Sdfr if (rpc) { 634180025Sdfr nlm4_granted_res_4(&res4, &dummy, rpc, NULL, nlm_zero_tv); 635180025Sdfr CLNT_RELEASE(rpc); 636180025Sdfr } 637177633Sdfr xdr_free((xdrproc_t) xdr_nlm4_res, &res4); 638177633Sdfr 639177633Sdfr return (FALSE); 640177633Sdfr} 641177633Sdfr 642177633Sdfrbool_t 643177633Sdfrnlm4_test_res_4_svc(nlm4_testres *argp, void *result, struct svc_req *rqstp) 644177633Sdfr{ 645177633Sdfr 646177633Sdfr return (FALSE); 647177633Sdfr} 648177633Sdfr 649177633Sdfrbool_t 650177633Sdfrnlm4_lock_res_4_svc(nlm4_res *argp, void *result, struct svc_req *rqstp) 651177633Sdfr{ 652177633Sdfr 653177633Sdfr return (FALSE); 654177633Sdfr} 655177633Sdfr 656177633Sdfrbool_t 657177633Sdfrnlm4_cancel_res_4_svc(nlm4_res *argp, void *result, struct svc_req *rqstp) 658177633Sdfr{ 659177633Sdfr 660177633Sdfr return (FALSE); 661177633Sdfr} 662177633Sdfr 663177633Sdfrbool_t 664177633Sdfrnlm4_unlock_res_4_svc(nlm4_res *argp, void *result, struct svc_req *rqstp) 665177633Sdfr{ 666177633Sdfr 667177633Sdfr return (FALSE); 668177633Sdfr} 669177633Sdfr 670177633Sdfrbool_t 671177633Sdfrnlm4_granted_res_4_svc(nlm4_res *argp, void *result, struct svc_req *rqstp) 672177633Sdfr{ 673177633Sdfr 674197840Szml nlm_do_granted_res(argp, rqstp); 675177633Sdfr return (FALSE); 676177633Sdfr} 677177633Sdfr 678177633Sdfrbool_t 679177633Sdfrnlm4_share_4_svc(nlm4_shareargs *argp, nlm4_shareres *result, struct svc_req *rqstp) 680177633Sdfr{ 681177633Sdfr 682177633Sdfr memset(result, 0, sizeof(*result)); 683177633Sdfr result->stat = nlm4_denied; 684177633Sdfr return (TRUE); 685177633Sdfr} 686177633Sdfr 687177633Sdfrbool_t 688177633Sdfrnlm4_unshare_4_svc(nlm4_shareargs *argp, nlm4_shareres *result, struct svc_req *rqstp) 689177633Sdfr{ 690177633Sdfr 691177633Sdfr memset(result, 0, sizeof(*result)); 692177633Sdfr result->stat = nlm4_denied; 693177633Sdfr return (TRUE); 694177633Sdfr} 695177633Sdfr 696177633Sdfrbool_t 697177633Sdfrnlm4_nm_lock_4_svc(nlm4_lockargs *argp, nlm4_res *result, struct svc_req *rqstp) 698177633Sdfr{ 699177633Sdfr 700180025Sdfr nlm_do_lock(argp, result, rqstp, FALSE, NULL); 701177633Sdfr return (TRUE); 702177633Sdfr} 703177633Sdfr 704177633Sdfrbool_t 705177633Sdfrnlm4_free_all_4_svc(nlm4_notify *argp, void *result, struct svc_req *rqstp) 706177633Sdfr{ 707177633Sdfr 708177633Sdfr nlm_do_free_all(argp); 709177633Sdfr return (TRUE); 710177633Sdfr} 711177633Sdfr 712177633Sdfrint 713177633Sdfrnlm_prog_4_freeresult(SVCXPRT *transp, xdrproc_t xdr_result, caddr_t result) 714177633Sdfr{ 715177633Sdfr 716177633Sdfr (void) xdr_free(xdr_result, result); 717177633Sdfr return (TRUE); 718177633Sdfr} 719