rusers.x
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030: %
031:
032:
033:
034: const RUSERS_MAXUSERLEN = 32;
035: const RUSERS_MAXLINELEN = 32;
036: const RUSERS_MAXHOSTLEN = 257;
037:
038: struct rusers_utmp {
039: string ut_user<RUSERS_MAXUSERLEN>;
040: string ut_line<RUSERS_MAXLINELEN>;
041: string ut_host<RUSERS_MAXHOSTLEN>;
042: int ut_type;
043: int ut_time;
044: unsigned int ut_idle;
045: };
046:
047: typedef rusers_utmp utmp_array<>;
048:
049: #ifdef RPC_HDR
050: %
051: %
052:
053:
054: #endif
055: const RUSERS_EMPTY = 0;
056: const RUSERS_RUN_LVL = 1;
057: const RUSERS_BOOT_TIME = 2;
058: const RUSERS_OLD_TIME = 3;
059: const RUSERS_NEW_TIME = 4;
060: const RUSERS_INIT_PROCESS = 5;
061: const RUSERS_LOGIN_PROCESS = 6;
062: const RUSERS_USER_PROCESS = 7;
063: const RUSERS_DEAD_PROCESS = 8;
064: const RUSERS_ACCOUNTING = 9;
065:
066: program RUSERSPROG {
067:
068: version RUSERSVERS_3 {
069: int
070: RUSERSPROC_NUM(void) = 1;
071:
072: utmp_array
073: RUSERSPROC_NAMES(void) = 2;
074:
075: utmp_array
076: RUSERSPROC_ALLNAMES(void) = 3;
077: } = 3;
078:
079: } = 100002;
080:
081: #ifdef RPC_HDR
082: %
083: %
084: %#ifdef __cplusplus
085: %extern "C" {
086: %#endif
087: %
088: %#include <rpc/xdr.h>
089: %
090: %
091:
092:
093:
094: %
095: %#define RUSERSVERS_IDLE 2
096: %#define RUSERSVERS 3
097: %#define MAXUSERS 100
098: %
099: %
100:
101:
102:
103: %struct ru_utmp {
104: % char ut_line[8];
105: % char ut_name[8];
106: % char ut_host[16];
107: % long int ut_time;
108: %};
109: %
110: %struct utmparr {
111: % struct ru_utmp **uta_arr;
112: % int uta_cnt;
113: %};
114: %typedef struct utmparr utmparr;
115: %
116: %extern bool_t xdr_utmparr (XDR *xdrs, struct utmparr *objp) __THROW;
117: %
118: %struct utmpidle {
119: % struct ru_utmp ui_utmp;
120: % unsigned int ui_idle;
121: %};
122: %
123: %struct utmpidlearr {
124: % struct utmpidle **uia_arr;
125: % int uia_cnt;
126: %};
127: %
128: %extern bool_t xdr_utmpidlearr (XDR *xdrs, struct utmpidlearr *objp) __THROW;
129: %
130: %#ifdef __cplusplus
131: %}
132: %#endif
133: #endif
134:
135:
136: #ifdef RPC_XDR
137: %bool_t xdr_utmp (XDR *xdrs, struct ru_utmp *objp);
138: %
139: %bool_t
140: %xdr_utmp(xdrs, objp)
141: % XDR *xdrs;
142: % struct ru_utmp *objp;
143: %{
144: %
145: % if (xdrs->x_op != XDR_FREE)
146: % {
147: % char *ptr;
148: % unsigned int size;
149: % ptr = objp->ut_line;
150: % size = sizeof (objp->ut_line);
151: % if (!xdr_bytes (xdrs, &ptr, &size, size)) {
152: % return (FALSE);
153: % }
154: % ptr = objp->ut_name;
155: % size = sizeof (objp->ut_name);
156: % if (!xdr_bytes (xdrs, &ptr, &size, size)) {
157: % return (FALSE);
158: % }
159: % ptr = objp->ut_host;
160: % size = sizeof (objp->ut_host);
161: % if (!xdr_bytes (xdrs, &ptr, &size, size)) {
162: % return (FALSE);
163: % }
164: % }
165: % if (!xdr_long(xdrs, &objp->ut_time)) {
166: % return (FALSE);
167: % }
168: % return (TRUE);
169: %}
170: %
171: %bool_t xdr_utmpptr(XDR *xdrs, struct ru_utmp **objpp);
172: %
173: %bool_t
174: %xdr_utmpptr(xdrs, objpp)
175: % XDR *xdrs;
176: % struct ru_utmp **objpp;
177: %{
178: % if (!xdr_reference(xdrs, (char **) objpp, sizeof (struct ru_utmp),
179: % (xdrproc_t) xdr_utmp)) {
180: % return (FALSE);
181: % }
182: % return (TRUE);
183: %}
184: %
185: %bool_t
186: %xdr_utmparr(xdrs, objp)
187: % XDR *xdrs;
188: % struct utmparr *objp;
189: %{
190: % if (!xdr_array(xdrs, (char **)&objp->uta_arr, (u_int *)&objp->uta_cnt,
191: % MAXUSERS, sizeof(struct ru_utmp *),
192: % (xdrproc_t) xdr_utmpptr)) {
193: % return (FALSE);
194: % }
195: % return (TRUE);
196: %}
197: %
198: %bool_t xdr_utmpidle(XDR *xdrs, struct utmpidle *objp);
199: %
200: %bool_t
201: %xdr_utmpidle(xdrs, objp)
202: % XDR *xdrs;
203: % struct utmpidle *objp;
204: %{
205: % if (!xdr_utmp(xdrs, &objp->ui_utmp)) {
206: % return (FALSE);
207: % }
208: % if (!xdr_u_int(xdrs, &objp->ui_idle)) {
209: % return (FALSE);
210: % }
211: % return (TRUE);
212: %}
213: %
214: %bool_t xdr_utmpidleptr(XDR *xdrs, struct utmpidle **objp);
215: %
216: %bool_t
217: %xdr_utmpidleptr(xdrs, objpp)
218: % XDR *xdrs;
219: % struct utmpidle **objpp;
220: %{
221: % if (!xdr_reference(xdrs, (char **) objpp, sizeof (struct utmpidle),
222: % (xdrproc_t) xdr_utmpidle)) {
223: % return (FALSE);
224: % }
225: % return (TRUE);
226: %}
227: %
228: %bool_t
229: %xdr_utmpidlearr(xdrs, objp)
230: % XDR *xdrs;
231: % struct utmpidlearr *objp;
232: %{
233: % if (!xdr_array(xdrs, (char **)&objp->uia_arr, (u_int *)&objp->uia_cnt,
234: % MAXUSERS, sizeof(struct utmpidle *),
235: % (xdrproc_t) xdr_utmpidleptr)) {
236: % return (FALSE);
237: % }
238: % return (TRUE);
239: %}
240: #endif
241:
© Andrew Scott 2006 -
2025,
All Rights Reserved