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