nlm_prot.x revision 75631
1251881Speter/* 2251881Speter * Network lock manager protocol definition 3251881Speter * Copyright (C) 1986 Sun Microsystems, Inc. 4251881Speter * 5251881Speter * protocol used between local lock manager and remote lock manager 6251881Speter */ 7251881Speter 8251881Speter#ifdef RPC_HDR 9251881Speter%#define LM_MAXSTRLEN 1024 10251881Speter%#define MAXNAMELEN LM_MAXSTRLEN+1 11251881Speter#else 12251881Speter%#include <sys/cdefs.h> 13251881Speter%#ifndef lint 14251881Speter%static const char rcsid[] = 15251881Speter% "$FreeBSD: head/include/rpcsvc/nlm_prot.x 75631 2001-04-17 20:45:23Z alfred $"; 16251881Speter%/*static char sccsid[] = "from: @(#)nlm_prot.x 1.8 87/09/21 Copyr 1987 Sun Micro";*/ 17251881Speter%/*static char sccsid[] = "from: * @(#)nlm_prot.x 2.1 88/08/01 4.0 RPCSRC";*/ 18251881Speter%__RCSID("$NetBSD: nlm_prot.x,v 1.6 2000/06/07 14:30:15 bouyer Exp $"); 19251881Speter%#endif /* not lint */ 20251881Speter#endif 21251881Speter 22251881Speter/* 23251881Speter * status of a call to the lock manager 24251881Speter */ 25251881Speterenum nlm_stats { 26251881Speter nlm_granted = 0, 27251881Speter nlm_denied = 1, 28251881Speter nlm_denied_nolocks = 2, 29299742Sdim nlm_blocked = 3, 30251881Speter nlm_denied_grace_period = 4, 31251881Speter nlm_deadlck = 5 32251881Speter}; 33251881Speter 34299742Sdimstruct nlm_holder { 35251881Speter bool exclusive; 36251881Speter int svid; 37251881Speter netobj oh; 38299742Sdim unsigned l_offset; 39251881Speter unsigned l_len; 40251881Speter}; 41299742Sdim 42299742Sdimunion nlm_testrply switch (nlm_stats stat) { 43299742Sdim case nlm_denied: 44299742Sdim struct nlm_holder holder; 45299742Sdim default: 46299742Sdim void; 47299742Sdim}; 48299742Sdim 49251881Speterstruct nlm_stat { 50251881Speter nlm_stats stat; 51251881Speter}; 52251881Speter 53251881Speterstruct nlm_res { 54251881Speter netobj cookie; 55251881Speter nlm_stat stat; 56251881Speter}; 57251881Speter 58251881Speterstruct nlm_testres { 59251881Speter netobj cookie; 60251881Speter nlm_testrply stat; 61251881Speter}; 62251881Speter 63251881Speterstruct nlm_lock { 64251881Speter string caller_name<LM_MAXSTRLEN>; 65251881Speter netobj fh; /* identify a file */ 66251881Speter netobj oh; /* identify owner of a lock */ 67251881Speter int svid; /* generated from pid for svid */ 68251881Speter unsigned l_offset; 69251881Speter unsigned l_len; 70251881Speter}; 71251881Speter 72251881Speterstruct nlm_lockargs { 73251881Speter netobj cookie; 74251881Speter bool block; 75251881Speter bool exclusive; 76251881Speter struct nlm_lock alock; 77251881Speter bool reclaim; /* used for recovering locks */ 78251881Speter int state; /* specify local status monitor state */ 79251881Speter}; 80251881Speter 81251881Speterstruct nlm_cancargs { 82251881Speter netobj cookie; 83251881Speter bool block; 84251881Speter bool exclusive; 85251881Speter struct nlm_lock alock; 86251881Speter}; 87251881Speter 88251881Speterstruct nlm_testargs { 89251881Speter netobj cookie; 90251881Speter bool exclusive; 91251881Speter struct nlm_lock alock; 92251881Speter}; 93251881Speter 94251881Speterstruct nlm_unlockargs { 95251881Speter netobj cookie; 96251881Speter struct nlm_lock alock; 97251881Speter}; 98251881Speter 99251881Speter 100251881Speter#ifdef RPC_HDR 101251881Speter%/* 102251881Speter% * The following enums are actually bit encoded for efficient 103251881Speter% * boolean algebra.... DON'T change them..... 104251881Speter% */ 105251881Speter#endif 106251881Speterenum fsh_mode { 107251881Speter fsm_DN = 0, /* deny none */ 108251881Speter fsm_DR = 1, /* deny read */ 109251881Speter fsm_DW = 2, /* deny write */ 110251881Speter fsm_DRW = 3 /* deny read/write */ 111251881Speter}; 112251881Speter 113251881Speterenum fsh_access { 114251881Speter fsa_NONE = 0, /* for completeness */ 115251881Speter fsa_R = 1, /* read only */ 116251881Speter fsa_W = 2, /* write only */ 117251881Speter fsa_RW = 3 /* read/write */ 118251881Speter}; 119251881Speter 120251881Speterstruct nlm_share { 121251881Speter string caller_name<LM_MAXSTRLEN>; 122251881Speter netobj fh; 123251881Speter netobj oh; 124251881Speter fsh_mode mode; 125251881Speter fsh_access access; 126251881Speter}; 127251881Speter 128251881Speterstruct nlm_shareargs { 129251881Speter netobj cookie; 130251881Speter nlm_share share; 131251881Speter bool reclaim; 132251881Speter}; 133251881Speter 134251881Speterstruct nlm_shareres { 135251881Speter netobj cookie; 136251881Speter nlm_stats stat; 137251881Speter int sequence; 138251881Speter}; 139251881Speter 140251881Speterstruct nlm_notify { 141251881Speter string name<MAXNAMELEN>; 142251881Speter long state; 143251881Speter}; 144251881Speter 145251881Speter#ifdef RPC_HDR 146251881Speter%/* definitions for NLM version 4 */ 147251881Speter#endif 148251881Speterenum nlm4_stats { 149251881Speter nlm4_granted = 0, 150251881Speter nlm4_denied = 1, 151251881Speter nlm4_denied_nolocks = 2, 152251881Speter nlm4_blocked = 3, 153251881Speter nlm4_denied_grace_period = 4, 154251881Speter nlm4_deadlck = 5, 155251881Speter nlm4_rofs = 6, 156251881Speter nlm4_stale_fh = 7, 157251881Speter nlm4_fbig = 8, 158251881Speter nlm4_failed = 9 159251881Speter}; 160251881Speter 161251881Speterstruct nlm4_stat { 162251881Speter nlm4_stats stat; 163251881Speter}; 164251881Speter 165251881Speterstruct nlm4_holder { 166251881Speter bool exclusive; 167251881Speter u_int32_t svid; 168251881Speter netobj oh; 169251881Speter u_int64_t l_offset; 170251881Speter u_int64_t l_len; 171251881Speter}; 172251881Speter 173251881Speterstruct nlm4_lock { 174251881Speter string caller_name<MAXNAMELEN>; 175251881Speter netobj fh; 176251881Speter netobj oh; 177251881Speter u_int32_t svid; 178251881Speter u_int64_t l_offset; 179251881Speter u_int64_t l_len; 180251881Speter}; 181251881Speter 182251881Speterstruct nlm4_share { 183251881Speter string caller_name<MAXNAMELEN>; 184251881Speter netobj fh; 185251881Speter netobj oh; 186251881Speter fsh_mode mode; 187251881Speter fsh_access access; 188251881Speter}; 189251881Speter 190251881Speterunion nlm4_testrply switch (nlm4_stats stat) { 191251881Speter case nlm_denied: 192251881Speter struct nlm4_holder holder; 193251881Speter default: 194251881Speter void; 195251881Speter}; 196251881Speter 197251881Speterstruct nlm4_testres { 198251881Speter netobj cookie; 199251881Speter nlm4_testrply stat; 200251881Speter}; 201251881Speter 202251881Speterstruct nlm4_testargs { 203251881Speter netobj cookie; 204251881Speter bool exclusive; 205251881Speter struct nlm4_lock alock; 206251881Speter}; 207251881Speter 208251881Speterstruct nlm4_res { 209299742Sdim netobj cookie; 210299742Sdim nlm4_stat stat; 211251881Speter}; 212251881Speter 213251881Speterstruct nlm4_lockargs { 214251881Speter netobj cookie; 215251881Speter bool block; 216251881Speter bool exclusive; 217251881Speter struct nlm4_lock alock; 218251881Speter bool reclaim; /* used for recovering locks */ 219251881Speter int state; /* specify local status monitor state */ 220251881Speter}; 221251881Speter 222251881Speterstruct nlm4_cancargs { 223251881Speter netobj cookie; 224251881Speter bool block; 225251881Speter bool exclusive; 226299742Sdim struct nlm4_lock alock; 227299742Sdim}; 228251881Speter 229251881Speterstruct nlm4_unlockargs { 230251881Speter netobj cookie; 231251881Speter struct nlm4_lock alock; 232251881Speter}; 233251881Speter 234251881Speterstruct nlm4_shareargs { 235251881Speter netobj cookie; 236299742Sdim nlm4_share share; 237299742Sdim bool reclaim; 238299742Sdim}; 239299742Sdim 240299742Sdimstruct nlm4_shareres { 241299742Sdim netobj cookie; 242299742Sdim nlm4_stats stat; 243299742Sdim int sequence; 244299742Sdim}; 245299742Sdim 246299742Sdim/* 247299742Sdim * argument for the procedure called by rpc.statd when a monitored host 248299742Sdim * status change. 249299742Sdim * XXX assumes LM_MAXSTRLEN == SM_MAXSTRLEN 250299742Sdim */ 251299742Sdimstruct nlm_sm_status { 252299742Sdim string mon_name<LM_MAXSTRLEN>; /* name of host */ 253299742Sdim int state; /* new state */ 254299742Sdim opaque priv[16]; /* private data */ 255299742Sdim}; 256299742Sdim 257299742Sdimstruct nlm4_notify { 258299742Sdim string name<MAXNAMELEN>; 259299742Sdim int32_t state; 260299742Sdim}; 261299742Sdim 262299742Sdim/* 263299742Sdim * Over-the-wire protocol used between the network lock managers 264299742Sdim */ 265299742Sdim 266299742Sdimprogram NLM_PROG { 267299742Sdim 268299742Sdim version NLM_SM { 269299742Sdim void NLM_SM_NOTIFY(struct nlm_sm_status) = 1; 270299742Sdim } = 0; 271299742Sdim 272299742Sdim version NLM_VERS { 273299742Sdim 274299742Sdim nlm_testres NLM_TEST(struct nlm_testargs) = 1; 275299742Sdim 276299742Sdim nlm_res NLM_LOCK(struct nlm_lockargs) = 2; 277299742Sdim 278299742Sdim nlm_res NLM_CANCEL(struct nlm_cancargs) = 3; 279299742Sdim nlm_res NLM_UNLOCK(struct nlm_unlockargs) = 4; 280299742Sdim 281299742Sdim /* 282299742Sdim * remote lock manager call-back to grant lock 283299742Sdim */ 284299742Sdim nlm_res NLM_GRANTED(struct nlm_testargs)= 5; 285299742Sdim /* 286299742Sdim * message passing style of requesting lock 287299742Sdim */ 288299742Sdim void NLM_TEST_MSG(struct nlm_testargs) = 6; 289299742Sdim void NLM_LOCK_MSG(struct nlm_lockargs) = 7; 290299742Sdim void NLM_CANCEL_MSG(struct nlm_cancargs) =8; 291299742Sdim void NLM_UNLOCK_MSG(struct nlm_unlockargs) = 9; 292299742Sdim void NLM_GRANTED_MSG(struct nlm_testargs) = 10; 293299742Sdim void NLM_TEST_RES(nlm_testres) = 11; 294299742Sdim void NLM_LOCK_RES(nlm_res) = 12; 295299742Sdim void NLM_CANCEL_RES(nlm_res) = 13; 296299742Sdim void NLM_UNLOCK_RES(nlm_res) = 14; 297299742Sdim void NLM_GRANTED_RES(nlm_res) = 15; 298299742Sdim } = 1; 299299742Sdim 300299742Sdim version NLM_VERSX { 301299742Sdim nlm_shareres NLM_SHARE(nlm_shareargs) = 20; 302299742Sdim nlm_shareres NLM_UNSHARE(nlm_shareargs) = 21; 303299742Sdim nlm_res NLM_NM_LOCK(nlm_lockargs) = 22; 304299742Sdim void NLM_FREE_ALL(nlm_notify) = 23; 305299742Sdim } = 3; 306299742Sdim 307299742Sdim version NLM_VERS4 { 308299742Sdim nlm4_testres NLM4_TEST(nlm4_testargs) = 1; 309299742Sdim nlm4_res NLM4_LOCK(nlm4_lockargs) = 2; 310299742Sdim nlm4_res NLM4_CANCEL(nlm4_cancargs) = 3; 311299742Sdim nlm4_res NLM4_UNLOCK(nlm4_unlockargs) = 4; 312299742Sdim nlm4_res NLM4_GRANTED(nlm4_testargs) = 5; 313299742Sdim void NLM4_TEST_MSG(nlm4_testargs) = 6; 314299742Sdim void NLM4_LOCK_MSG(nlm4_lockargs) = 7; 315299742Sdim void NLM4_CANCEL_MSG(nlm4_cancargs) = 8; 316299742Sdim void NLM4_UNLOCK_MSG(nlm4_unlockargs) = 9; 317299742Sdim void NLM4_GRANTED_MSG(nlm4_testargs) = 10; 318299742Sdim void NLM4_TEST_RES(nlm4_testres) = 11; 319299742Sdim void NLM4_LOCK_RES(nlm4_res) = 12; 320299742Sdim void NLM4_CANCEL_RES(nlm4_res) = 13; 321299742Sdim void NLM4_UNLOCK_RES(nlm4_res) = 14; 322299742Sdim void NLM4_GRANTED_RES(nlm4_res) = 15; 323299742Sdim nlm4_shareres NLM4_SHARE(nlm4_shareargs) = 20; 324299742Sdim nlm4_shareres NLM4_UNSHARE(nlm4_shareargs) = 21; 325299742Sdim nlm4_res NLM4_NM_LOCK(nlm4_lockargs) = 22; 326299742Sdim void NLM4_FREE_ALL(nlm4_notify) = 23; 327299742Sdim } = 4; 328299742Sdim} = 100021; 329299742Sdim