1*bbaa8b60SDan Kruchinin /* 2*bbaa8b60SDan Kruchinin * CDDL HEADER START 3*bbaa8b60SDan Kruchinin * 4*bbaa8b60SDan Kruchinin * The contents of this file are subject to the terms of the 5*bbaa8b60SDan Kruchinin * Common Development and Distribution License, Version 1.0 only 6*bbaa8b60SDan Kruchinin * (the "License"). You may not use this file except in compliance 7*bbaa8b60SDan Kruchinin * with the License. 8*bbaa8b60SDan Kruchinin * 9*bbaa8b60SDan Kruchinin * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*bbaa8b60SDan Kruchinin * or http://www.opensolaris.org/os/licensing. 11*bbaa8b60SDan Kruchinin * See the License for the specific language governing permissions 12*bbaa8b60SDan Kruchinin * and limitations under the License. 13*bbaa8b60SDan Kruchinin * 14*bbaa8b60SDan Kruchinin * When distributing Covered Code, include this CDDL HEADER in each 15*bbaa8b60SDan Kruchinin * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*bbaa8b60SDan Kruchinin * If applicable, add the following below this CDDL HEADER, with the 17*bbaa8b60SDan Kruchinin * fields enclosed by brackets "[]" replaced with your own identifying 18*bbaa8b60SDan Kruchinin * information: Portions Copyright [yyyy] [name of copyright owner] 19*bbaa8b60SDan Kruchinin * 20*bbaa8b60SDan Kruchinin * CDDL HEADER END 21*bbaa8b60SDan Kruchinin */ 22*bbaa8b60SDan Kruchinin /* 23*bbaa8b60SDan Kruchinin * Copyright (C) 1986, 1992, 1993, 1997, 1999 by Sun Microsystems, Inc. 24*bbaa8b60SDan Kruchinin * All rights reserved. 25*bbaa8b60SDan Kruchinin * 26*bbaa8b60SDan Kruchinin * Copyright 2011 Nexenta Systems, Inc. All rights reserved. 27*bbaa8b60SDan Kruchinin * 28*bbaa8b60SDan Kruchinin * Protocol used between local lock manager and remote lock manager. 29*bbaa8b60SDan Kruchinin * 30*bbaa8b60SDan Kruchinin * There are currently 3 versions of the protocol in use. Versions 1 31*bbaa8b60SDan Kruchinin * and 3 are used with NFS version 2. Version 4 is used with NFS 32*bbaa8b60SDan Kruchinin * version 3. 33*bbaa8b60SDan Kruchinin * 34*bbaa8b60SDan Kruchinin * (Note: there is also a version 2, but it defines an orthogonal set of 35*bbaa8b60SDan Kruchinin * procedures that the status monitor uses to notify the lock manager of 36*bbaa8b60SDan Kruchinin * changes in monitored systems.) 37*bbaa8b60SDan Kruchinin */ 38*bbaa8b60SDan Kruchinin 39*bbaa8b60SDan Kruchinin #if RPC_HDR 40*bbaa8b60SDan Kruchinin % 41*bbaa8b60SDan Kruchinin %#include <rpc/rpc_sztypes.h> 42*bbaa8b60SDan Kruchinin % 43*bbaa8b60SDan Kruchinin #endif 44*bbaa8b60SDan Kruchinin 45*bbaa8b60SDan Kruchinin #ifdef RPC_HDR 46*bbaa8b60SDan Kruchinin %#define LM_MAXSTRLEN 1024 47*bbaa8b60SDan Kruchinin %#define LM_MAXNAMELEN (LM_MAXSTRLEN + 1) 48*bbaa8b60SDan Kruchinin #endif 49*bbaa8b60SDan Kruchinin 50*bbaa8b60SDan Kruchinin /* 51*bbaa8b60SDan Kruchinin * Types for versions 1 and 3. 52*bbaa8b60SDan Kruchinin */ 53*bbaa8b60SDan Kruchinin 54*bbaa8b60SDan Kruchinin /* 55*bbaa8b60SDan Kruchinin * Status of a call to the lock manager. The lower case enums violate the 56*bbaa8b60SDan Kruchinin * current style guide, but we're stuck with 'em. 57*bbaa8b60SDan Kruchinin */ 58*bbaa8b60SDan Kruchinin 59*bbaa8b60SDan Kruchinin enum nlm_stats { 60*bbaa8b60SDan Kruchinin nlm_granted = 0, 61*bbaa8b60SDan Kruchinin nlm_denied = 1, 62*bbaa8b60SDan Kruchinin nlm_denied_nolocks = 2, 63*bbaa8b60SDan Kruchinin nlm_blocked = 3, 64*bbaa8b60SDan Kruchinin nlm_denied_grace_period = 4, 65*bbaa8b60SDan Kruchinin nlm_deadlck = 5 66*bbaa8b60SDan Kruchinin }; 67*bbaa8b60SDan Kruchinin 68*bbaa8b60SDan Kruchinin /* 69*bbaa8b60SDan Kruchinin * The holder of a conflicting lock. 70*bbaa8b60SDan Kruchinin */ 71*bbaa8b60SDan Kruchinin 72*bbaa8b60SDan Kruchinin struct nlm_holder { 73*bbaa8b60SDan Kruchinin bool exclusive; 74*bbaa8b60SDan Kruchinin int svid; 75*bbaa8b60SDan Kruchinin netobj oh; 76*bbaa8b60SDan Kruchinin unsigned l_offset; 77*bbaa8b60SDan Kruchinin unsigned l_len; 78*bbaa8b60SDan Kruchinin }; 79*bbaa8b60SDan Kruchinin 80*bbaa8b60SDan Kruchinin union nlm_testrply switch (nlm_stats stat) { 81*bbaa8b60SDan Kruchinin case nlm_denied: 82*bbaa8b60SDan Kruchinin struct nlm_holder holder; 83*bbaa8b60SDan Kruchinin default: 84*bbaa8b60SDan Kruchinin void; 85*bbaa8b60SDan Kruchinin }; 86*bbaa8b60SDan Kruchinin 87*bbaa8b60SDan Kruchinin struct nlm_stat { 88*bbaa8b60SDan Kruchinin nlm_stats stat; 89*bbaa8b60SDan Kruchinin }; 90*bbaa8b60SDan Kruchinin 91*bbaa8b60SDan Kruchinin struct nlm_res { 92*bbaa8b60SDan Kruchinin netobj cookie; 93*bbaa8b60SDan Kruchinin nlm_stat stat; 94*bbaa8b60SDan Kruchinin }; 95*bbaa8b60SDan Kruchinin 96*bbaa8b60SDan Kruchinin struct nlm_testres { 97*bbaa8b60SDan Kruchinin netobj cookie; 98*bbaa8b60SDan Kruchinin nlm_testrply stat; 99*bbaa8b60SDan Kruchinin }; 100*bbaa8b60SDan Kruchinin 101*bbaa8b60SDan Kruchinin struct nlm_lock { 102*bbaa8b60SDan Kruchinin string caller_name<LM_MAXSTRLEN>; 103*bbaa8b60SDan Kruchinin netobj fh; /* identify a file */ 104*bbaa8b60SDan Kruchinin netobj oh; /* identify owner of a lock */ 105*bbaa8b60SDan Kruchinin int svid; /* generated from pid for svid */ 106*bbaa8b60SDan Kruchinin unsigned l_offset; 107*bbaa8b60SDan Kruchinin unsigned l_len; 108*bbaa8b60SDan Kruchinin }; 109*bbaa8b60SDan Kruchinin 110*bbaa8b60SDan Kruchinin struct nlm_lockargs { 111*bbaa8b60SDan Kruchinin netobj cookie; 112*bbaa8b60SDan Kruchinin bool block; 113*bbaa8b60SDan Kruchinin bool exclusive; 114*bbaa8b60SDan Kruchinin struct nlm_lock alock; 115*bbaa8b60SDan Kruchinin bool reclaim; /* used for recovering locks */ 116*bbaa8b60SDan Kruchinin int state; /* specify local status monitor state */ 117*bbaa8b60SDan Kruchinin }; 118*bbaa8b60SDan Kruchinin 119*bbaa8b60SDan Kruchinin struct nlm_cancargs { 120*bbaa8b60SDan Kruchinin netobj cookie; 121*bbaa8b60SDan Kruchinin bool block; 122*bbaa8b60SDan Kruchinin bool exclusive; 123*bbaa8b60SDan Kruchinin struct nlm_lock alock; 124*bbaa8b60SDan Kruchinin }; 125*bbaa8b60SDan Kruchinin 126*bbaa8b60SDan Kruchinin struct nlm_testargs { 127*bbaa8b60SDan Kruchinin netobj cookie; 128*bbaa8b60SDan Kruchinin bool exclusive; 129*bbaa8b60SDan Kruchinin struct nlm_lock alock; 130*bbaa8b60SDan Kruchinin }; 131*bbaa8b60SDan Kruchinin 132*bbaa8b60SDan Kruchinin struct nlm_unlockargs { 133*bbaa8b60SDan Kruchinin netobj cookie; 134*bbaa8b60SDan Kruchinin struct nlm_lock alock; 135*bbaa8b60SDan Kruchinin }; 136*bbaa8b60SDan Kruchinin 137*bbaa8b60SDan Kruchinin #ifdef RPC_HDR 138*bbaa8b60SDan Kruchinin %/* 139*bbaa8b60SDan Kruchinin % * The following enums are actually bit encoded for efficient 140*bbaa8b60SDan Kruchinin % * boolean algebra.... DON'T change them..... 141*bbaa8b60SDan Kruchinin % * The mixed-case enums violate the present style guide, but we're 142*bbaa8b60SDan Kruchinin % * stuck with 'em. 143*bbaa8b60SDan Kruchinin % */ 144*bbaa8b60SDan Kruchinin #endif 145*bbaa8b60SDan Kruchinin 146*bbaa8b60SDan Kruchinin enum fsh_mode { 147*bbaa8b60SDan Kruchinin fsm_DN = 0, /* deny none */ 148*bbaa8b60SDan Kruchinin fsm_DR = 1, /* deny read */ 149*bbaa8b60SDan Kruchinin fsm_DW = 2, /* deny write */ 150*bbaa8b60SDan Kruchinin fsm_DRW = 3 /* deny read/write */ 151*bbaa8b60SDan Kruchinin }; 152*bbaa8b60SDan Kruchinin 153*bbaa8b60SDan Kruchinin enum fsh_access { 154*bbaa8b60SDan Kruchinin fsa_NONE = 0, /* for completeness */ 155*bbaa8b60SDan Kruchinin fsa_R = 1, /* read only */ 156*bbaa8b60SDan Kruchinin fsa_W = 2, /* write only */ 157*bbaa8b60SDan Kruchinin fsa_RW = 3 /* read/write */ 158*bbaa8b60SDan Kruchinin }; 159*bbaa8b60SDan Kruchinin 160*bbaa8b60SDan Kruchinin struct nlm_share { 161*bbaa8b60SDan Kruchinin string caller_name<LM_MAXSTRLEN>; 162*bbaa8b60SDan Kruchinin netobj fh; 163*bbaa8b60SDan Kruchinin netobj oh; 164*bbaa8b60SDan Kruchinin fsh_mode mode; 165*bbaa8b60SDan Kruchinin fsh_access access; 166*bbaa8b60SDan Kruchinin }; 167*bbaa8b60SDan Kruchinin 168*bbaa8b60SDan Kruchinin struct nlm_shareargs { 169*bbaa8b60SDan Kruchinin netobj cookie; 170*bbaa8b60SDan Kruchinin nlm_share share; 171*bbaa8b60SDan Kruchinin bool reclaim; 172*bbaa8b60SDan Kruchinin }; 173*bbaa8b60SDan Kruchinin 174*bbaa8b60SDan Kruchinin struct nlm_shareres { 175*bbaa8b60SDan Kruchinin netobj cookie; 176*bbaa8b60SDan Kruchinin nlm_stats stat; 177*bbaa8b60SDan Kruchinin int sequence; 178*bbaa8b60SDan Kruchinin }; 179*bbaa8b60SDan Kruchinin 180*bbaa8b60SDan Kruchinin struct nlm_notify { 181*bbaa8b60SDan Kruchinin string name<LM_MAXNAMELEN>; 182*bbaa8b60SDan Kruchinin int state; 183*bbaa8b60SDan Kruchinin }; 184*bbaa8b60SDan Kruchinin 185*bbaa8b60SDan Kruchinin /* 186*bbaa8b60SDan Kruchinin * Types for version 4. 187*bbaa8b60SDan Kruchinin * 188*bbaa8b60SDan Kruchinin * This revision is designed to work with NFS V3. The main changes from 189*bbaa8b60SDan Kruchinin * NFS V2 to V3 that affect the NLM protocol are that all file offsets 190*bbaa8b60SDan Kruchinin * and sizes are now unsigned 64-bit ints, and file handles are now 191*bbaa8b60SDan Kruchinin * variable length. In NLM V1 and V3, the fixed-length V2 file handle 192*bbaa8b60SDan Kruchinin * was encoded as a 'netobj', which is a count followed by the data 193*bbaa8b60SDan Kruchinin * bytes. For NLM 4, the file handle is already a count followed by 194*bbaa8b60SDan Kruchinin * data bytes, so the handle is copied directly into the netobj, rather 195*bbaa8b60SDan Kruchinin * than being encoded with an additional byte count. 196*bbaa8b60SDan Kruchinin */ 197*bbaa8b60SDan Kruchinin 198*bbaa8b60SDan Kruchinin /* 199*bbaa8b60SDan Kruchinin * Status of a call to the lock manager. 200*bbaa8b60SDan Kruchinin */ 201*bbaa8b60SDan Kruchinin 202*bbaa8b60SDan Kruchinin enum nlm4_stats { 203*bbaa8b60SDan Kruchinin nlm4_granted = 0, /* lock was granted */ 204*bbaa8b60SDan Kruchinin nlm4_denied = 1, /* lock was not granted, usually */ 205*bbaa8b60SDan Kruchinin /* due to conflicting lock */ 206*bbaa8b60SDan Kruchinin nlm4_denied_nolocks = 2, /* not granted: out of resources */ 207*bbaa8b60SDan Kruchinin nlm4_blocked = 3, /* not granted: expect callback */ 208*bbaa8b60SDan Kruchinin /* when granted */ 209*bbaa8b60SDan Kruchinin nlm4_denied_grace_period = 4, /* not granted: server is */ 210*bbaa8b60SDan Kruchinin /* reestablishing old locks */ 211*bbaa8b60SDan Kruchinin nlm4_deadlck = 5, /* not granted: deadlock detected */ 212*bbaa8b60SDan Kruchinin nlm4_rofs = 6, /* not granted: read-only filesystem */ 213*bbaa8b60SDan Kruchinin nlm4_stale_fh = 7, /* not granted: stale file handle */ 214*bbaa8b60SDan Kruchinin nlm4_fbig = 8, /* not granted: offset or length */ 215*bbaa8b60SDan Kruchinin /* too big */ 216*bbaa8b60SDan Kruchinin nlm4_failed = 9 /* not granted: some other error */ 217*bbaa8b60SDan Kruchinin }; 218*bbaa8b60SDan Kruchinin 219*bbaa8b60SDan Kruchinin /* 220*bbaa8b60SDan Kruchinin * The holder of a conflicting lock. 221*bbaa8b60SDan Kruchinin */ 222*bbaa8b60SDan Kruchinin 223*bbaa8b60SDan Kruchinin struct nlm4_holder { 224*bbaa8b60SDan Kruchinin bool exclusive; 225*bbaa8b60SDan Kruchinin int32 svid; 226*bbaa8b60SDan Kruchinin netobj oh; 227*bbaa8b60SDan Kruchinin uint64 l_offset; 228*bbaa8b60SDan Kruchinin uint64 l_len; 229*bbaa8b60SDan Kruchinin }; 230*bbaa8b60SDan Kruchinin 231*bbaa8b60SDan Kruchinin union nlm4_testrply switch (nlm4_stats stat) { 232*bbaa8b60SDan Kruchinin case nlm4_denied: 233*bbaa8b60SDan Kruchinin struct nlm4_holder holder; 234*bbaa8b60SDan Kruchinin default: 235*bbaa8b60SDan Kruchinin void; 236*bbaa8b60SDan Kruchinin }; 237*bbaa8b60SDan Kruchinin 238*bbaa8b60SDan Kruchinin struct nlm4_stat { 239*bbaa8b60SDan Kruchinin nlm4_stats stat; 240*bbaa8b60SDan Kruchinin }; 241*bbaa8b60SDan Kruchinin 242*bbaa8b60SDan Kruchinin struct nlm4_res { 243*bbaa8b60SDan Kruchinin netobj cookie; 244*bbaa8b60SDan Kruchinin nlm4_stat stat; 245*bbaa8b60SDan Kruchinin }; 246*bbaa8b60SDan Kruchinin 247*bbaa8b60SDan Kruchinin struct nlm4_testres { 248*bbaa8b60SDan Kruchinin netobj cookie; 249*bbaa8b60SDan Kruchinin nlm4_testrply stat; 250*bbaa8b60SDan Kruchinin }; 251*bbaa8b60SDan Kruchinin 252*bbaa8b60SDan Kruchinin struct nlm4_lock { 253*bbaa8b60SDan Kruchinin string caller_name<LM_MAXSTRLEN>; 254*bbaa8b60SDan Kruchinin netobj fh; /* identify a file */ 255*bbaa8b60SDan Kruchinin netobj oh; /* identify owner of a lock */ 256*bbaa8b60SDan Kruchinin int32 svid; /* generated from pid for svid */ 257*bbaa8b60SDan Kruchinin uint64 l_offset; 258*bbaa8b60SDan Kruchinin uint64 l_len; 259*bbaa8b60SDan Kruchinin }; 260*bbaa8b60SDan Kruchinin 261*bbaa8b60SDan Kruchinin struct nlm4_lockargs { 262*bbaa8b60SDan Kruchinin netobj cookie; 263*bbaa8b60SDan Kruchinin bool block; 264*bbaa8b60SDan Kruchinin bool exclusive; 265*bbaa8b60SDan Kruchinin struct nlm4_lock alock; 266*bbaa8b60SDan Kruchinin bool reclaim; /* used for recovering locks */ 267*bbaa8b60SDan Kruchinin int32 state; /* specify local status monitor state */ 268*bbaa8b60SDan Kruchinin }; 269*bbaa8b60SDan Kruchinin 270*bbaa8b60SDan Kruchinin struct nlm4_cancargs { 271*bbaa8b60SDan Kruchinin netobj cookie; 272*bbaa8b60SDan Kruchinin bool block; 273*bbaa8b60SDan Kruchinin bool exclusive; 274*bbaa8b60SDan Kruchinin struct nlm4_lock alock; 275*bbaa8b60SDan Kruchinin }; 276*bbaa8b60SDan Kruchinin 277*bbaa8b60SDan Kruchinin struct nlm4_testargs { 278*bbaa8b60SDan Kruchinin netobj cookie; 279*bbaa8b60SDan Kruchinin bool exclusive; 280*bbaa8b60SDan Kruchinin struct nlm4_lock alock; 281*bbaa8b60SDan Kruchinin }; 282*bbaa8b60SDan Kruchinin 283*bbaa8b60SDan Kruchinin struct nlm4_unlockargs { 284*bbaa8b60SDan Kruchinin netobj cookie; 285*bbaa8b60SDan Kruchinin struct nlm4_lock alock; 286*bbaa8b60SDan Kruchinin }; 287*bbaa8b60SDan Kruchinin 288*bbaa8b60SDan Kruchinin struct nlm4_share { 289*bbaa8b60SDan Kruchinin string caller_name<LM_MAXSTRLEN>; 290*bbaa8b60SDan Kruchinin netobj fh; 291*bbaa8b60SDan Kruchinin netobj oh; 292*bbaa8b60SDan Kruchinin fsh_mode mode; 293*bbaa8b60SDan Kruchinin fsh_access access; 294*bbaa8b60SDan Kruchinin }; 295*bbaa8b60SDan Kruchinin 296*bbaa8b60SDan Kruchinin struct nlm4_shareargs { 297*bbaa8b60SDan Kruchinin netobj cookie; 298*bbaa8b60SDan Kruchinin nlm4_share share; 299*bbaa8b60SDan Kruchinin bool reclaim; 300*bbaa8b60SDan Kruchinin }; 301*bbaa8b60SDan Kruchinin 302*bbaa8b60SDan Kruchinin struct nlm4_shareres { 303*bbaa8b60SDan Kruchinin netobj cookie; 304*bbaa8b60SDan Kruchinin nlm4_stats stat; 305*bbaa8b60SDan Kruchinin int32 sequence; 306*bbaa8b60SDan Kruchinin }; 307*bbaa8b60SDan Kruchinin 308*bbaa8b60SDan Kruchinin struct nlm4_notify { 309*bbaa8b60SDan Kruchinin string name<LM_MAXNAMELEN>; 310*bbaa8b60SDan Kruchinin int32 state; 311*bbaa8b60SDan Kruchinin }; 312*bbaa8b60SDan Kruchinin 313*bbaa8b60SDan Kruchinin /* 314*bbaa8b60SDan Kruchinin * Argument for the NLM call-back procedure called by rpc.statd 315*bbaa8b60SDan Kruchinin * when a monitored host status changes. The statd calls the 316*bbaa8b60SDan Kruchinin * NLM prog,vers,proc specified in the SM_MON call. 317*bbaa8b60SDan Kruchinin * NB: This struct must exactly match sm_inter.x:sm_status 318*bbaa8b60SDan Kruchinin * and requires LM_MAXSTRLEN == SM_MAXSTRLEN 319*bbaa8b60SDan Kruchinin */ 320*bbaa8b60SDan Kruchinin struct nlm_sm_status { 321*bbaa8b60SDan Kruchinin string mon_name<LM_MAXSTRLEN>; /* name of host */ 322*bbaa8b60SDan Kruchinin int32 state; /* new state */ 323*bbaa8b60SDan Kruchinin opaque priv[16]; /* private data */ 324*bbaa8b60SDan Kruchinin }; 325*bbaa8b60SDan Kruchinin 326*bbaa8b60SDan Kruchinin /* 327*bbaa8b60SDan Kruchinin * Over-the-wire protocol used between the network lock managers 328*bbaa8b60SDan Kruchinin */ 329*bbaa8b60SDan Kruchinin 330*bbaa8b60SDan Kruchinin program NLM_PROG { 331*bbaa8b60SDan Kruchinin 332*bbaa8b60SDan Kruchinin version NLM_VERS { 333*bbaa8b60SDan Kruchinin 334*bbaa8b60SDan Kruchinin void 335*bbaa8b60SDan Kruchinin NLM_NULL(void) = 0; 336*bbaa8b60SDan Kruchinin 337*bbaa8b60SDan Kruchinin nlm_testres 338*bbaa8b60SDan Kruchinin NLM_TEST(nlm_testargs) = 1; 339*bbaa8b60SDan Kruchinin 340*bbaa8b60SDan Kruchinin nlm_res 341*bbaa8b60SDan Kruchinin NLM_LOCK(nlm_lockargs) = 2; 342*bbaa8b60SDan Kruchinin 343*bbaa8b60SDan Kruchinin nlm_res 344*bbaa8b60SDan Kruchinin NLM_CANCEL(nlm_cancargs) = 3; 345*bbaa8b60SDan Kruchinin 346*bbaa8b60SDan Kruchinin nlm_res 347*bbaa8b60SDan Kruchinin NLM_UNLOCK(nlm_unlockargs) = 4; 348*bbaa8b60SDan Kruchinin /* 349*bbaa8b60SDan Kruchinin * remote lock manager call-back to grant lock 350*bbaa8b60SDan Kruchinin */ 351*bbaa8b60SDan Kruchinin nlm_res 352*bbaa8b60SDan Kruchinin NLM_GRANTED(nlm_testargs) = 5; 353*bbaa8b60SDan Kruchinin 354*bbaa8b60SDan Kruchinin /* 355*bbaa8b60SDan Kruchinin * message passing style of requesting lock 356*bbaa8b60SDan Kruchinin */ 357*bbaa8b60SDan Kruchinin 358*bbaa8b60SDan Kruchinin void 359*bbaa8b60SDan Kruchinin NLM_TEST_MSG(nlm_testargs) = 6; 360*bbaa8b60SDan Kruchinin void 361*bbaa8b60SDan Kruchinin NLM_LOCK_MSG(nlm_lockargs) = 7; 362*bbaa8b60SDan Kruchinin void 363*bbaa8b60SDan Kruchinin NLM_CANCEL_MSG(nlm_cancargs) = 8; 364*bbaa8b60SDan Kruchinin void 365*bbaa8b60SDan Kruchinin NLM_UNLOCK_MSG(nlm_unlockargs) = 9; 366*bbaa8b60SDan Kruchinin void 367*bbaa8b60SDan Kruchinin NLM_GRANTED_MSG(nlm_testargs) = 10; 368*bbaa8b60SDan Kruchinin void 369*bbaa8b60SDan Kruchinin NLM_TEST_RES(nlm_testres) = 11; 370*bbaa8b60SDan Kruchinin void 371*bbaa8b60SDan Kruchinin NLM_LOCK_RES(nlm_res) = 12; 372*bbaa8b60SDan Kruchinin void 373*bbaa8b60SDan Kruchinin NLM_CANCEL_RES(nlm_res) = 13; 374*bbaa8b60SDan Kruchinin void 375*bbaa8b60SDan Kruchinin NLM_UNLOCK_RES(nlm_res) = 14; 376*bbaa8b60SDan Kruchinin void 377*bbaa8b60SDan Kruchinin NLM_GRANTED_RES(nlm_res) = 15; 378*bbaa8b60SDan Kruchinin } = 1; 379*bbaa8b60SDan Kruchinin 380*bbaa8b60SDan Kruchinin /* 381*bbaa8b60SDan Kruchinin * Private (loopback-only) call-backs from statd, 382*bbaa8b60SDan Kruchinin * used to notify that some machine has restarted. 383*bbaa8b60SDan Kruchinin * The meaning of these is up to the lock manager 384*bbaa8b60SDan Kruchinin * implemenation. (See the SM_MON calls.) 385*bbaa8b60SDan Kruchinin */ 386*bbaa8b60SDan Kruchinin version NLM_SM { 387*bbaa8b60SDan Kruchinin void NLM_SM_NOTIFY1(struct nlm_sm_status) = 17; 388*bbaa8b60SDan Kruchinin void NLM_SM_NOTIFY2(struct nlm_sm_status) = 18; 389*bbaa8b60SDan Kruchinin } = 2; 390*bbaa8b60SDan Kruchinin 391*bbaa8b60SDan Kruchinin version NLM_VERSX { 392*bbaa8b60SDan Kruchinin nlm_shareres 393*bbaa8b60SDan Kruchinin NLM_SHARE(nlm_shareargs) = 20; 394*bbaa8b60SDan Kruchinin nlm_shareres 395*bbaa8b60SDan Kruchinin NLM_UNSHARE(nlm_shareargs) = 21; 396*bbaa8b60SDan Kruchinin nlm_res 397*bbaa8b60SDan Kruchinin NLM_NM_LOCK(nlm_lockargs) = 22; 398*bbaa8b60SDan Kruchinin void 399*bbaa8b60SDan Kruchinin NLM_FREE_ALL(nlm_notify) = 23; 400*bbaa8b60SDan Kruchinin } = 3; 401*bbaa8b60SDan Kruchinin 402*bbaa8b60SDan Kruchinin version NLM4_VERS { 403*bbaa8b60SDan Kruchinin void 404*bbaa8b60SDan Kruchinin NLM4_NULL(void) = 0; 405*bbaa8b60SDan Kruchinin nlm4_testres 406*bbaa8b60SDan Kruchinin NLM4_TEST(nlm4_testargs) = 1; 407*bbaa8b60SDan Kruchinin nlm4_res 408*bbaa8b60SDan Kruchinin NLM4_LOCK(nlm4_lockargs) = 2; 409*bbaa8b60SDan Kruchinin nlm4_res 410*bbaa8b60SDan Kruchinin NLM4_CANCEL(nlm4_cancargs) = 3; 411*bbaa8b60SDan Kruchinin nlm4_res 412*bbaa8b60SDan Kruchinin NLM4_UNLOCK(nlm4_unlockargs) = 4; 413*bbaa8b60SDan Kruchinin /* 414*bbaa8b60SDan Kruchinin * remote lock manager call-back to grant lock 415*bbaa8b60SDan Kruchinin */ 416*bbaa8b60SDan Kruchinin nlm4_res 417*bbaa8b60SDan Kruchinin NLM4_GRANTED(nlm4_testargs) = 5; 418*bbaa8b60SDan Kruchinin 419*bbaa8b60SDan Kruchinin /* 420*bbaa8b60SDan Kruchinin * message passing style of requesting lock 421*bbaa8b60SDan Kruchinin */ 422*bbaa8b60SDan Kruchinin 423*bbaa8b60SDan Kruchinin void 424*bbaa8b60SDan Kruchinin NLM4_TEST_MSG(nlm4_testargs) = 6; 425*bbaa8b60SDan Kruchinin void 426*bbaa8b60SDan Kruchinin NLM4_LOCK_MSG(nlm4_lockargs) = 7; 427*bbaa8b60SDan Kruchinin void 428*bbaa8b60SDan Kruchinin NLM4_CANCEL_MSG(nlm4_cancargs) = 8; 429*bbaa8b60SDan Kruchinin void 430*bbaa8b60SDan Kruchinin NLM4_UNLOCK_MSG(nlm4_unlockargs) = 9; 431*bbaa8b60SDan Kruchinin void 432*bbaa8b60SDan Kruchinin NLM4_GRANTED_MSG(nlm4_testargs) = 10; 433*bbaa8b60SDan Kruchinin void 434*bbaa8b60SDan Kruchinin NLM4_TEST_RES(nlm4_testres) = 11; 435*bbaa8b60SDan Kruchinin void 436*bbaa8b60SDan Kruchinin NLM4_LOCK_RES(nlm4_res) = 12; 437*bbaa8b60SDan Kruchinin void 438*bbaa8b60SDan Kruchinin NLM4_CANCEL_RES(nlm4_res) = 13; 439*bbaa8b60SDan Kruchinin void 440*bbaa8b60SDan Kruchinin NLM4_UNLOCK_RES(nlm4_res) = 14; 441*bbaa8b60SDan Kruchinin void 442*bbaa8b60SDan Kruchinin NLM4_GRANTED_RES(nlm4_res) = 15; 443*bbaa8b60SDan Kruchinin 444*bbaa8b60SDan Kruchinin /* 445*bbaa8b60SDan Kruchinin * DOS-style file sharing 446*bbaa8b60SDan Kruchinin */ 447*bbaa8b60SDan Kruchinin 448*bbaa8b60SDan Kruchinin nlm4_shareres 449*bbaa8b60SDan Kruchinin NLM4_SHARE(nlm4_shareargs) = 20; 450*bbaa8b60SDan Kruchinin nlm4_shareres 451*bbaa8b60SDan Kruchinin NLM4_UNSHARE(nlm4_shareargs) = 21; 452*bbaa8b60SDan Kruchinin nlm4_res 453*bbaa8b60SDan Kruchinin NLM4_NM_LOCK(nlm4_lockargs) = 22; 454*bbaa8b60SDan Kruchinin void 455*bbaa8b60SDan Kruchinin NLM4_FREE_ALL(nlm4_notify) = 23; 456*bbaa8b60SDan Kruchinin } = 4; 457*bbaa8b60SDan Kruchinin 458*bbaa8b60SDan Kruchinin } = 100021; 459