Commit | Line | Data |
---|---|---|
557a5416 C |
1 | /* |
2 | * Network lock manager protocol definition | |
3 | * Copyright (C) 1986 Sun Microsystems, Inc. | |
4 | * | |
5 | * protocol used between local lock manager and remote lock manager | |
6 | */ | |
7 | ||
8 | #ifdef RPC_HDR | |
9 | %#define LM_MAXSTRLEN 1024 | |
10 | %#define MAXNAMELEN LM_MAXSTRLEN+1 | |
11 | #else | |
12 | %#ifndef lint | |
13 | %/*static char sccsid[] = "from: @(#)nlm_prot.x 1.8 87/09/21 Copyr 1987 Sun Micro";*/ | |
14 | %/*static char sccsid[] = "from: * @(#)nlm_prot.x 2.1 88/08/01 4.0 RPCSRC";*/ | |
15 | %static char rcsid[] = "$Id: nlm_prot.x,v 1.4 1993/08/03 21:53:22 mycroft Exp $"; | |
16 | %#endif /* not lint */ | |
17 | #endif | |
18 | ||
19 | /* | |
20 | * status of a call to the lock manager | |
21 | */ | |
22 | enum nlm_stats { | |
23 | nlm_granted = 0, | |
24 | nlm_denied = 1, | |
25 | nlm_denied_nolocks = 2, | |
26 | nlm_blocked = 3, | |
27 | nlm_denied_grace_period = 4 | |
28 | }; | |
29 | ||
30 | struct nlm_holder { | |
31 | bool exclusive; | |
32 | int svid; | |
33 | netobj oh; | |
34 | unsigned l_offset; | |
35 | unsigned l_len; | |
36 | }; | |
37 | ||
38 | union nlm_testrply switch (nlm_stats stat) { | |
39 | case nlm_denied: | |
40 | struct nlm_holder holder; | |
41 | default: | |
42 | void; | |
43 | }; | |
44 | ||
45 | struct nlm_stat { | |
46 | nlm_stats stat; | |
47 | }; | |
48 | ||
49 | struct nlm_res { | |
50 | netobj cookie; | |
51 | nlm_stat stat; | |
52 | }; | |
53 | ||
54 | struct nlm_testres { | |
55 | netobj cookie; | |
56 | nlm_testrply stat; | |
57 | }; | |
58 | ||
59 | struct nlm_lock { | |
60 | string caller_name<LM_MAXSTRLEN>; | |
61 | netobj fh; /* identify a file */ | |
62 | netobj oh; /* identify owner of a lock */ | |
63 | int svid; /* generated from pid for svid */ | |
64 | unsigned l_offset; | |
65 | unsigned l_len; | |
66 | }; | |
67 | ||
68 | struct nlm_lockargs { | |
69 | netobj cookie; | |
70 | bool block; | |
71 | bool exclusive; | |
72 | struct nlm_lock alock; | |
73 | bool reclaim; /* used for recovering locks */ | |
74 | int state; /* specify local status monitor state */ | |
75 | }; | |
76 | ||
77 | struct nlm_cancargs { | |
78 | netobj cookie; | |
79 | bool block; | |
80 | bool exclusive; | |
81 | struct nlm_lock alock; | |
82 | }; | |
83 | ||
84 | struct nlm_testargs { | |
85 | netobj cookie; | |
86 | bool exclusive; | |
87 | struct nlm_lock alock; | |
88 | }; | |
89 | ||
90 | struct nlm_unlockargs { | |
91 | netobj cookie; | |
92 | struct nlm_lock alock; | |
93 | }; | |
94 | ||
95 | ||
96 | #ifdef RPC_HDR | |
97 | %/* | |
98 | % * The following enums are actually bit encoded for efficient | |
99 | % * boolean algebra.... DON'T change them..... | |
100 | % */ | |
101 | #endif | |
102 | enum fsh_mode { | |
103 | fsm_DN = 0, /* deny none */ | |
104 | fsm_DR = 1, /* deny read */ | |
105 | fsm_DW = 2, /* deny write */ | |
106 | fsm_DRW = 3 /* deny read/write */ | |
107 | }; | |
108 | ||
109 | enum fsh_access { | |
110 | fsa_NONE = 0, /* for completeness */ | |
111 | fsa_R = 1, /* read only */ | |
112 | fsa_W = 2, /* write only */ | |
113 | fsa_RW = 3 /* read/write */ | |
114 | }; | |
115 | ||
116 | struct nlm_share { | |
117 | string caller_name<LM_MAXSTRLEN>; | |
118 | netobj fh; | |
119 | netobj oh; | |
120 | fsh_mode mode; | |
121 | fsh_access access; | |
122 | }; | |
123 | ||
124 | struct nlm_shareargs { | |
125 | netobj cookie; | |
126 | nlm_share share; | |
127 | bool reclaim; | |
128 | }; | |
129 | ||
130 | struct nlm_shareres { | |
131 | netobj cookie; | |
132 | nlm_stats stat; | |
133 | int sequence; | |
134 | }; | |
135 | ||
136 | struct nlm_notify { | |
137 | string name<MAXNAMELEN>; | |
138 | long state; | |
139 | }; | |
140 | ||
141 | /* | |
142 | * Over-the-wire protocol used between the network lock managers | |
143 | */ | |
144 | ||
145 | program NLM_PROG { | |
146 | version NLM_VERS { | |
147 | ||
148 | nlm_testres NLM_TEST(struct nlm_testargs) = 1; | |
149 | ||
150 | nlm_res NLM_LOCK(struct nlm_lockargs) = 2; | |
151 | ||
152 | nlm_res NLM_CANCEL(struct nlm_cancargs) = 3; | |
153 | nlm_res NLM_UNLOCK(struct nlm_unlockargs) = 4; | |
154 | ||
155 | /* | |
156 | * remote lock manager call-back to grant lock | |
157 | */ | |
158 | nlm_res NLM_GRANTED(struct nlm_testargs)= 5; | |
159 | /* | |
160 | * message passing style of requesting lock | |
161 | */ | |
162 | void NLM_TEST_MSG(struct nlm_testargs) = 6; | |
163 | void NLM_LOCK_MSG(struct nlm_lockargs) = 7; | |
164 | void NLM_CANCEL_MSG(struct nlm_cancargs) =8; | |
165 | void NLM_UNLOCK_MSG(struct nlm_unlockargs) = 9; | |
166 | void NLM_GRANTED_MSG(struct nlm_testargs) = 10; | |
167 | void NLM_TEST_RES(nlm_testres) = 11; | |
168 | void NLM_LOCK_RES(nlm_res) = 12; | |
169 | void NLM_CANCEL_RES(nlm_res) = 13; | |
170 | void NLM_UNLOCK_RES(nlm_res) = 14; | |
171 | void NLM_GRANTED_RES(nlm_res) = 15; | |
172 | } = 1; | |
173 | ||
174 | version NLM_VERSX { | |
175 | nlm_shareres NLM_SHARE(nlm_shareargs) = 20; | |
176 | nlm_shareres NLM_UNSHARE(nlm_shareargs) = 21; | |
177 | nlm_res NLM_NM_LOCK(nlm_lockargs) = 22; | |
178 | void NLM_FREE_ALL(nlm_notify) = 23; | |
179 | } = 3; | |
180 | ||
181 | } = 100021; | |
182 |