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