rnusers.x revision 1.5 1 /*
2 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
3 * unrestricted use provided that this legend is included on all tape
4 * media and as a part of the software program in whole or part. Users
5 * may copy or modify Sun RPC without charge, but are not authorized
6 * to license or distribute it to anyone else except as part of a product or
7 * program developed by the user.
8 *
9 * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
10 * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
11 * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
12 *
13 * Sun RPC is provided with no support and without any obligation on the
14 * part of Sun Microsystems, Inc. to assist in its use, correction,
15 * modification or enhancement.
16 *
17 * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
18 * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
19 * OR ANY PART THEREOF.
20 *
21 * In no event will Sun Microsystems, Inc. be liable for any lost revenue
22 * or profits or other special, indirect and consequential damages, even if
23 * Sun has been advised of the possibility of such damages.
24 *
25 * Sun Microsystems, Inc.
26 * 2550 Garcia Avenue
27 * Mountain View, California 94043
28 */
29
30 /*
31 * Find out about remote users
32 */
33
34 #ifndef RPC_HDR
35 %#include <sys/cdefs.h>
36 %#ifndef lint
37 %/*static char sccsid[] = "from: @(#)rnusers.x 1.2 87/09/20 Copyr 1987 Sun Micro";*/
38 %/*static char sccsid[] = "from: @(#)rnusers.x 2.1 88/08/01 4.0 RPCSRC";*/
39 %__RCSID("$NetBSD: rnusers.x,v 1.5 1997/10/09 14:21:23 lukem Exp $");
40 %#endif /* not lint */
41 #endif
42
43
44 #ifdef RPC_HDR
45 %/*
46 % * The following structures are used by version 2 of the rusersd protocol.
47 % * They were not developed with rpcgen, so they do not appear as RPCL.
48 % */
49 %
50 %#define RUSERSVERS_ORIG 1 /* original version */
51 %#define RUSERSVERS_IDLE 2
52 %#define MAXUSERS 100
53 %
54 %/*
55 % * This is the structure used in version 2 of the rusersd RPC service.
56 % * It corresponds to the utmp structure for BSD sytems.
57 % */
58 %struct ru_utmp {
59 % char ut_line[8]; /* tty name */
60 % char ut_name[8]; /* user id */
61 % char ut_host[16]; /* host name, if remote */
62 % long ut_time; /* time on */
63 %};
64 %typedef struct ru_utmp rutmp;
65 %
66 %struct utmparr {
67 % struct utmp **uta_arr;
68 % int uta_cnt;
69 %};
70 %typedef struct utmparr utmparr;
71 %
72 %struct utmpidle {
73 % struct ru_utmp ui_utmp;
74 % unsigned ui_idle;
75 %};
76 %
77 %struct utmpidlearr {
78 % struct utmpidle **uia_arr;
79 % int uia_cnt;
80 %};
81 %typedef struct utmpidlearr utmpidlearr;
82 %
83 %#include <sys/cdefs.h>
84 %__BEGIN_DECLS
85 %bool_t xdr_utmp __P((XDR *, struct ru_utmp *));
86 %bool_t xdr_utmpptr __P((XDR *, struct ru_utmp **));
87 %bool_t xdr_utmparr __P((XDR *, struct utmparr *));
88 %bool_t xdr_utmpidle __P((XDR *, struct utmpidle *));
89 %bool_t xdr_utmpidleptr __P((XDR *, struct utmpidle **));
90 %bool_t xdr_utmpidlearr __P((XDR *, struct utmpidlearr *));
91 %__END_DECLS
92 %
93 %#define RUSERSVERS_1 ((u_long)1)
94 %#define RUSERSVERS_2 ((u_long)2)
95 %#ifndef RUSERSPROG
96 %#define RUSERSPROG ((u_long)100002)
97 %#endif
98 %#ifndef RUSERSPROC_NUM
99 %#define RUSERSPROC_NUM ((u_long)1)
100 %#endif
101 %#ifndef RUSERSPROC_NAMES
102 %#define RUSERSPROC_NAMES ((u_long)2)
103 %#endif
104 %#ifndef RUSERSPROC_ALLNAMES
105 %#define RUSERSPROC_ALLNAMES ((u_long)3)
106 %#endif
107 %
108 #endif /* RPC_HDR */
109
110 #ifdef RPC_XDR
111 %bool_t
112 %xdr_utmp(xdrs, objp)
113 % XDR *xdrs;
114 % struct ru_utmp *objp;
115 %{
116 % char *ptr;
117 % int size;
118 %
119 %
120 % /*
121 % * We are using a non-malloc allocated array,
122 % * so we are not supposed to call xdr_free with it.
123 % */
124 % if (xdrs->x_op == XDR_FREE)
125 % return (TRUE);
126 % ptr = objp->ut_line;
127 % size = sizeof(objp->ut_line);
128 % if (!xdr_bytes(xdrs, &ptr, &size, size)) {
129 % return (FALSE);
130 % }
131 % ptr = objp->ut_name;
132 % size = sizeof(objp->ut_name);
133 % if (!xdr_bytes(xdrs, &ptr, &size, size)) {
134 % return (FALSE);
135 % }
136 % ptr = objp->ut_host;
137 % size = sizeof(objp->ut_host);
138 % if (!xdr_bytes(xdrs, &ptr, &size, size)) {
139 % return (FALSE);
140 % }
141 % if (!xdr_long(xdrs, &objp->ut_time)) {
142 % return (FALSE);
143 % }
144 % return (TRUE);
145 %}
146 %
147 %bool_t
148 %xdr_utmpptr(xdrs, objpp)
149 % XDR *xdrs;
150 % struct ru_utmp **objpp;
151 %{
152 % if (!xdr_reference(xdrs, (char **) objpp, sizeof (struct ru_utmp),
153 % xdr_utmp)) {
154 % return (FALSE);
155 % }
156 % return (TRUE);
157 %}
158 %
159 %bool_t
160 %xdr_utmparr(xdrs, objp)
161 % XDR *xdrs;
162 % struct utmparr *objp;
163 %{
164 % if (!xdr_array(xdrs, (char **)&objp->uta_arr, (u_int *)&objp->uta_cnt,
165 % MAXUSERS, sizeof(struct utmp *), xdr_utmpptr)) {
166 % return (FALSE);
167 % }
168 % return (TRUE);
169 %}
170 %
171 %bool_t
172 %xdr_utmpidle(xdrs, objp)
173 % XDR *xdrs;
174 % struct utmpidle *objp;
175 %{
176 % if (!xdr_utmp(xdrs, &objp->ui_utmp)) {
177 % return (FALSE);
178 % }
179 % if (!xdr_u_int(xdrs, &objp->ui_idle)) {
180 % return (FALSE);
181 % }
182 % return (TRUE);
183 %}
184 %
185 %bool_t
186 %xdr_utmpidleptr(xdrs, objpp)
187 % XDR *xdrs;
188 % struct utmpidle **objpp;
189 %{
190 % if (!xdr_reference(xdrs, (char **) objpp, sizeof (struct utmpidle),
191 % xdr_utmpidle)) {
192 % return (FALSE);
193 % }
194 % return (TRUE);
195 %}
196 %
197 %bool_t
198 %xdr_utmpidlearr(xdrs, objp)
199 % XDR *xdrs;
200 % struct utmpidlearr *objp;
201 %{
202 % if (!xdr_array(xdrs, (char **)&objp->uia_arr, (u_int *)&objp->uia_cnt,
203 % MAXUSERS, sizeof(struct utmpidle *), xdr_utmpidleptr)) {
204 % return (FALSE);
205 % }
206 % return (TRUE);
207 %}
208 #endif
209