xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/rpcsvc/rusers.x (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi /*
2*53ee8cc1Swenshuai.xi  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
3*53ee8cc1Swenshuai.xi  * unrestricted use provided that this legend is included on all tape
4*53ee8cc1Swenshuai.xi  * media and as a part of the software program in whole or part.  Users
5*53ee8cc1Swenshuai.xi  * may copy or modify Sun RPC without charge, but are not authorized
6*53ee8cc1Swenshuai.xi  * to license or distribute it to anyone else except as part of a product or
7*53ee8cc1Swenshuai.xi  * program developed by the user.
8*53ee8cc1Swenshuai.xi  *
9*53ee8cc1Swenshuai.xi  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
10*53ee8cc1Swenshuai.xi  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
11*53ee8cc1Swenshuai.xi  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
12*53ee8cc1Swenshuai.xi  *
13*53ee8cc1Swenshuai.xi  * Sun RPC is provided with no support and without any obligation on the
14*53ee8cc1Swenshuai.xi  * part of Sun Microsystems, Inc. to assist in its use, correction,
15*53ee8cc1Swenshuai.xi  * modification or enhancement.
16*53ee8cc1Swenshuai.xi  *
17*53ee8cc1Swenshuai.xi  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
18*53ee8cc1Swenshuai.xi  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
19*53ee8cc1Swenshuai.xi  * OR ANY PART THEREOF.
20*53ee8cc1Swenshuai.xi  *
21*53ee8cc1Swenshuai.xi  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
22*53ee8cc1Swenshuai.xi  * or profits or other special, indirect and consequential damages, even if
23*53ee8cc1Swenshuai.xi  * Sun has been advised of the possibility of such damages.
24*53ee8cc1Swenshuai.xi  *
25*53ee8cc1Swenshuai.xi  * Sun Microsystems, Inc.
26*53ee8cc1Swenshuai.xi  * 2550 Garcia Avenue
27*53ee8cc1Swenshuai.xi  * Mountain View, California  94043
28*53ee8cc1Swenshuai.xi  */
29*53ee8cc1Swenshuai.xi 
30*53ee8cc1Swenshuai.xi %/*
31*53ee8cc1Swenshuai.xi % * Find out about remote users
32*53ee8cc1Swenshuai.xi % */
33*53ee8cc1Swenshuai.xi 
34*53ee8cc1Swenshuai.xi const RUSERS_MAXUSERLEN = 32;
35*53ee8cc1Swenshuai.xi const RUSERS_MAXLINELEN = 32;
36*53ee8cc1Swenshuai.xi const RUSERS_MAXHOSTLEN = 257;
37*53ee8cc1Swenshuai.xi 
38*53ee8cc1Swenshuai.xi struct rusers_utmp {
39*53ee8cc1Swenshuai.xi 	string ut_user<RUSERS_MAXUSERLEN>;	/* aka ut_name */
40*53ee8cc1Swenshuai.xi 	string ut_line<RUSERS_MAXLINELEN>;	/* device */
41*53ee8cc1Swenshuai.xi 	string ut_host<RUSERS_MAXHOSTLEN>;	/* host user logged on from */
42*53ee8cc1Swenshuai.xi 	int ut_type;				/* type of entry */
43*53ee8cc1Swenshuai.xi 	int ut_time;				/* time entry was made */
44*53ee8cc1Swenshuai.xi 	unsigned int ut_idle;			/* minutes idle */
45*53ee8cc1Swenshuai.xi };
46*53ee8cc1Swenshuai.xi 
47*53ee8cc1Swenshuai.xi typedef rusers_utmp utmp_array<>;
48*53ee8cc1Swenshuai.xi 
49*53ee8cc1Swenshuai.xi #ifdef RPC_HDR
50*53ee8cc1Swenshuai.xi %
51*53ee8cc1Swenshuai.xi %/*
52*53ee8cc1Swenshuai.xi % * Values for ut_type field above.
53*53ee8cc1Swenshuai.xi % */
54*53ee8cc1Swenshuai.xi #endif
55*53ee8cc1Swenshuai.xi const	RUSERS_EMPTY = 0;
56*53ee8cc1Swenshuai.xi const	RUSERS_RUN_LVL = 1;
57*53ee8cc1Swenshuai.xi const	RUSERS_BOOT_TIME = 2;
58*53ee8cc1Swenshuai.xi const	RUSERS_OLD_TIME = 3;
59*53ee8cc1Swenshuai.xi const	RUSERS_NEW_TIME = 4;
60*53ee8cc1Swenshuai.xi const	RUSERS_INIT_PROCESS = 5;
61*53ee8cc1Swenshuai.xi const	RUSERS_LOGIN_PROCESS = 6;
62*53ee8cc1Swenshuai.xi const	RUSERS_USER_PROCESS = 7;
63*53ee8cc1Swenshuai.xi const	RUSERS_DEAD_PROCESS = 8;
64*53ee8cc1Swenshuai.xi const	RUSERS_ACCOUNTING = 9;
65*53ee8cc1Swenshuai.xi 
66*53ee8cc1Swenshuai.xi program RUSERSPROG {
67*53ee8cc1Swenshuai.xi 
68*53ee8cc1Swenshuai.xi 	version RUSERSVERS_3 {
69*53ee8cc1Swenshuai.xi 		int
70*53ee8cc1Swenshuai.xi 		RUSERSPROC_NUM(void) = 1;
71*53ee8cc1Swenshuai.xi 
72*53ee8cc1Swenshuai.xi 		utmp_array
73*53ee8cc1Swenshuai.xi 		RUSERSPROC_NAMES(void) = 2;
74*53ee8cc1Swenshuai.xi 
75*53ee8cc1Swenshuai.xi 		utmp_array
76*53ee8cc1Swenshuai.xi 		RUSERSPROC_ALLNAMES(void) = 3;
77*53ee8cc1Swenshuai.xi 	} = 3;
78*53ee8cc1Swenshuai.xi 
79*53ee8cc1Swenshuai.xi } = 100002;
80*53ee8cc1Swenshuai.xi 
81*53ee8cc1Swenshuai.xi #ifdef RPC_HDR
82*53ee8cc1Swenshuai.xi %
83*53ee8cc1Swenshuai.xi %
84*53ee8cc1Swenshuai.xi %#ifdef	__cplusplus
85*53ee8cc1Swenshuai.xi %extern "C" {
86*53ee8cc1Swenshuai.xi %#endif
87*53ee8cc1Swenshuai.xi %
88*53ee8cc1Swenshuai.xi %#include <rpc/xdr.h>
89*53ee8cc1Swenshuai.xi %
90*53ee8cc1Swenshuai.xi %/*
91*53ee8cc1Swenshuai.xi % * The following structures are used by version 2 of the rusersd protocol.
92*53ee8cc1Swenshuai.xi % * They were not developed with rpcgen, so they do not appear as RPCL.
93*53ee8cc1Swenshuai.xi % */
94*53ee8cc1Swenshuai.xi %
95*53ee8cc1Swenshuai.xi %#define	RUSERSVERS_IDLE 2
96*53ee8cc1Swenshuai.xi %#define	RUSERSVERS 3		/* current version */
97*53ee8cc1Swenshuai.xi %#define	MAXUSERS 100
98*53ee8cc1Swenshuai.xi %
99*53ee8cc1Swenshuai.xi %/*
100*53ee8cc1Swenshuai.xi % * This is the structure used in version 2 of the rusersd RPC service.
101*53ee8cc1Swenshuai.xi % * It corresponds to the utmp structure for BSD systems.
102*53ee8cc1Swenshuai.xi % */
103*53ee8cc1Swenshuai.xi %struct ru_utmp {
104*53ee8cc1Swenshuai.xi %	char	ut_line[8];		/* tty name */
105*53ee8cc1Swenshuai.xi %	char	ut_name[8];		/* user id */
106*53ee8cc1Swenshuai.xi %	char	ut_host[16];		/* host name, if remote */
107*53ee8cc1Swenshuai.xi %	long int ut_time;		/* time on */
108*53ee8cc1Swenshuai.xi %};
109*53ee8cc1Swenshuai.xi %
110*53ee8cc1Swenshuai.xi %struct utmparr {
111*53ee8cc1Swenshuai.xi %       struct ru_utmp **uta_arr;
112*53ee8cc1Swenshuai.xi %       int uta_cnt;
113*53ee8cc1Swenshuai.xi %};
114*53ee8cc1Swenshuai.xi %typedef struct utmparr utmparr;
115*53ee8cc1Swenshuai.xi %
116*53ee8cc1Swenshuai.xi %extern bool_t xdr_utmparr (XDR *xdrs, struct utmparr *objp) __THROW;
117*53ee8cc1Swenshuai.xi %
118*53ee8cc1Swenshuai.xi %struct utmpidle {
119*53ee8cc1Swenshuai.xi %	struct ru_utmp ui_utmp;
120*53ee8cc1Swenshuai.xi %	unsigned int ui_idle;
121*53ee8cc1Swenshuai.xi %};
122*53ee8cc1Swenshuai.xi %
123*53ee8cc1Swenshuai.xi %struct utmpidlearr {
124*53ee8cc1Swenshuai.xi %	struct utmpidle **uia_arr;
125*53ee8cc1Swenshuai.xi %	int uia_cnt;
126*53ee8cc1Swenshuai.xi %};
127*53ee8cc1Swenshuai.xi %
128*53ee8cc1Swenshuai.xi %extern bool_t xdr_utmpidlearr (XDR *xdrs, struct utmpidlearr *objp) __THROW;
129*53ee8cc1Swenshuai.xi %
130*53ee8cc1Swenshuai.xi %#ifdef	__cplusplus
131*53ee8cc1Swenshuai.xi %}
132*53ee8cc1Swenshuai.xi %#endif
133*53ee8cc1Swenshuai.xi #endif
134*53ee8cc1Swenshuai.xi 
135*53ee8cc1Swenshuai.xi 
136*53ee8cc1Swenshuai.xi #ifdef	RPC_XDR
137*53ee8cc1Swenshuai.xi %bool_t xdr_utmp (XDR *xdrs, struct ru_utmp *objp);
138*53ee8cc1Swenshuai.xi %
139*53ee8cc1Swenshuai.xi %bool_t
140*53ee8cc1Swenshuai.xi %xdr_utmp(xdrs, objp)
141*53ee8cc1Swenshuai.xi %	XDR *xdrs;
142*53ee8cc1Swenshuai.xi %	struct ru_utmp *objp;
143*53ee8cc1Swenshuai.xi %{
144*53ee8cc1Swenshuai.xi %	/* Since the fields are char foo [xxx], we should not free them. */
145*53ee8cc1Swenshuai.xi %	if (xdrs->x_op != XDR_FREE)
146*53ee8cc1Swenshuai.xi %	{
147*53ee8cc1Swenshuai.xi %		char *ptr;
148*53ee8cc1Swenshuai.xi %		unsigned int size;
149*53ee8cc1Swenshuai.xi %		ptr = objp->ut_line;
150*53ee8cc1Swenshuai.xi %		size = sizeof (objp->ut_line);
151*53ee8cc1Swenshuai.xi %		if (!xdr_bytes (xdrs, &ptr, &size, size)) {
152*53ee8cc1Swenshuai.xi %			return (FALSE);
153*53ee8cc1Swenshuai.xi %		}
154*53ee8cc1Swenshuai.xi %		ptr = objp->ut_name;
155*53ee8cc1Swenshuai.xi %		size = sizeof (objp->ut_name);
156*53ee8cc1Swenshuai.xi %		if (!xdr_bytes (xdrs, &ptr, &size, size)) {
157*53ee8cc1Swenshuai.xi %			return (FALSE);
158*53ee8cc1Swenshuai.xi %		}
159*53ee8cc1Swenshuai.xi %		ptr = objp->ut_host;
160*53ee8cc1Swenshuai.xi %		size = sizeof (objp->ut_host);
161*53ee8cc1Swenshuai.xi %		if (!xdr_bytes (xdrs, &ptr, &size, size)) {
162*53ee8cc1Swenshuai.xi %			return (FALSE);
163*53ee8cc1Swenshuai.xi %		}
164*53ee8cc1Swenshuai.xi %	}
165*53ee8cc1Swenshuai.xi %	if (!xdr_long(xdrs, &objp->ut_time)) {
166*53ee8cc1Swenshuai.xi %		return (FALSE);
167*53ee8cc1Swenshuai.xi %	}
168*53ee8cc1Swenshuai.xi %	return (TRUE);
169*53ee8cc1Swenshuai.xi %}
170*53ee8cc1Swenshuai.xi %
171*53ee8cc1Swenshuai.xi %bool_t xdr_utmpptr(XDR *xdrs, struct ru_utmp **objpp);
172*53ee8cc1Swenshuai.xi %
173*53ee8cc1Swenshuai.xi %bool_t
174*53ee8cc1Swenshuai.xi %xdr_utmpptr(xdrs, objpp)
175*53ee8cc1Swenshuai.xi %	XDR *xdrs;
176*53ee8cc1Swenshuai.xi %	struct ru_utmp **objpp;
177*53ee8cc1Swenshuai.xi %{
178*53ee8cc1Swenshuai.xi %	if (!xdr_reference(xdrs, (char **) objpp, sizeof (struct ru_utmp),
179*53ee8cc1Swenshuai.xi %			   (xdrproc_t) xdr_utmp)) {
180*53ee8cc1Swenshuai.xi %		return (FALSE);
181*53ee8cc1Swenshuai.xi %	}
182*53ee8cc1Swenshuai.xi %	return (TRUE);
183*53ee8cc1Swenshuai.xi %}
184*53ee8cc1Swenshuai.xi %
185*53ee8cc1Swenshuai.xi %bool_t
186*53ee8cc1Swenshuai.xi %xdr_utmparr(xdrs, objp)
187*53ee8cc1Swenshuai.xi %	XDR *xdrs;
188*53ee8cc1Swenshuai.xi %	struct utmparr *objp;
189*53ee8cc1Swenshuai.xi %{
190*53ee8cc1Swenshuai.xi %	if (!xdr_array(xdrs, (char **)&objp->uta_arr, (u_int *)&objp->uta_cnt,
191*53ee8cc1Swenshuai.xi %		       MAXUSERS, sizeof(struct ru_utmp *),
192*53ee8cc1Swenshuai.xi %		       (xdrproc_t) xdr_utmpptr)) {
193*53ee8cc1Swenshuai.xi %		return (FALSE);
194*53ee8cc1Swenshuai.xi %	}
195*53ee8cc1Swenshuai.xi %	return (TRUE);
196*53ee8cc1Swenshuai.xi %}
197*53ee8cc1Swenshuai.xi %
198*53ee8cc1Swenshuai.xi %bool_t xdr_utmpidle(XDR *xdrs, struct utmpidle *objp);
199*53ee8cc1Swenshuai.xi %
200*53ee8cc1Swenshuai.xi %bool_t
201*53ee8cc1Swenshuai.xi %xdr_utmpidle(xdrs, objp)
202*53ee8cc1Swenshuai.xi %	XDR *xdrs;
203*53ee8cc1Swenshuai.xi %	struct utmpidle *objp;
204*53ee8cc1Swenshuai.xi %{
205*53ee8cc1Swenshuai.xi %	if (!xdr_utmp(xdrs, &objp->ui_utmp)) {
206*53ee8cc1Swenshuai.xi %		return (FALSE);
207*53ee8cc1Swenshuai.xi %	}
208*53ee8cc1Swenshuai.xi %	if (!xdr_u_int(xdrs, &objp->ui_idle)) {
209*53ee8cc1Swenshuai.xi %		return (FALSE);
210*53ee8cc1Swenshuai.xi %	}
211*53ee8cc1Swenshuai.xi %	return (TRUE);
212*53ee8cc1Swenshuai.xi %}
213*53ee8cc1Swenshuai.xi %
214*53ee8cc1Swenshuai.xi %bool_t xdr_utmpidleptr(XDR *xdrs, struct utmpidle **objp);
215*53ee8cc1Swenshuai.xi %
216*53ee8cc1Swenshuai.xi %bool_t
217*53ee8cc1Swenshuai.xi %xdr_utmpidleptr(xdrs, objpp)
218*53ee8cc1Swenshuai.xi %	XDR *xdrs;
219*53ee8cc1Swenshuai.xi %	struct utmpidle **objpp;
220*53ee8cc1Swenshuai.xi %{
221*53ee8cc1Swenshuai.xi %	if (!xdr_reference(xdrs, (char **) objpp, sizeof (struct utmpidle),
222*53ee8cc1Swenshuai.xi %			   (xdrproc_t) xdr_utmpidle)) {
223*53ee8cc1Swenshuai.xi %		return (FALSE);
224*53ee8cc1Swenshuai.xi %	}
225*53ee8cc1Swenshuai.xi %	return (TRUE);
226*53ee8cc1Swenshuai.xi %}
227*53ee8cc1Swenshuai.xi %
228*53ee8cc1Swenshuai.xi %bool_t
229*53ee8cc1Swenshuai.xi %xdr_utmpidlearr(xdrs, objp)
230*53ee8cc1Swenshuai.xi %	XDR *xdrs;
231*53ee8cc1Swenshuai.xi %	struct utmpidlearr *objp;
232*53ee8cc1Swenshuai.xi %{
233*53ee8cc1Swenshuai.xi %	if (!xdr_array(xdrs, (char **)&objp->uia_arr, (u_int *)&objp->uia_cnt,
234*53ee8cc1Swenshuai.xi %		       MAXUSERS, sizeof(struct utmpidle *),
235*53ee8cc1Swenshuai.xi %		       (xdrproc_t) xdr_utmpidleptr)) {
236*53ee8cc1Swenshuai.xi %		return (FALSE);
237*53ee8cc1Swenshuai.xi %	}
238*53ee8cc1Swenshuai.xi %	return (TRUE);
239*53ee8cc1Swenshuai.xi %}
240*53ee8cc1Swenshuai.xi #endif
241