1 /*
2  * Please do not edit this file.
3  * It was generated using rpcgen.
4  */
5 
6 #ifndef _RUSERS_H_RPCGEN
7 #define	_RUSERS_H_RPCGEN
8 
9 #include <rpc/rpc.h>
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 /*
16  * Find out about remote users
17  */
18 #define	RUSERS_MAXUSERLEN 32
19 #define	RUSERS_MAXLINELEN 32
20 #define	RUSERS_MAXHOSTLEN 257
21 
22 struct rusers_utmp {
23 	char *ut_user;
24 	char *ut_line;
25 	char *ut_host;
26 	int ut_type;
27 	int ut_time;
28 	u_int ut_idle;
29 };
30 typedef struct rusers_utmp rusers_utmp;
31 
32 typedef struct {
33 	u_int utmp_array_len;
34 	rusers_utmp *utmp_array_val;
35 } utmp_array;
36 
37 /*
38  * Values for ut_type field above.
39  */
40 #define	RUSERS_EMPTY 0
41 #define	RUSERS_RUN_LVL 1
42 #define	RUSERS_BOOT_TIME 2
43 #define	RUSERS_OLD_TIME 3
44 #define	RUSERS_NEW_TIME 4
45 #define	RUSERS_INIT_PROCESS 5
46 #define	RUSERS_LOGIN_PROCESS 6
47 #define	RUSERS_USER_PROCESS 7
48 #define	RUSERS_DEAD_PROCESS 8
49 #define	RUSERS_ACCOUNTING 9
50 
51 
52 
53 /*
54  * The following structures are used by version 2 of the rusersd protocol.
55  * They were not developed with rpcgen, so they do not appear as RPCL.
56  */
57 
58 #define	RUSERSVERS_IDLE 2
59 #define	RUSERSVERS 3		/* current version */
60 #define	MAXUSERS 100
61 
62 /*
63  * This is the structure used in version 2 of the rusersd RPC service.
64  * It corresponds to the utmp structure for BSD sytems.
65  */
66 struct ru_utmp {
67 	char	ut_line[8];		/* tty name */
68 	char	ut_name[8];		/* user id */
69 	char	ut_host[16];		/* host name, if remote */
70 	time_t	ut_time;		/* time on */
71 };
72 
73 struct utmpidle {
74 	struct ru_utmp ui_utmp;
75 	unsigned ui_idle;
76 };
77 
78 struct utmpidlearr {
79 	struct utmpidle **uia_arr;
80 	int uia_cnt;
81 };
82 
83 int xdr_utmpidlearr();
84 
85 #if defined(__STDC__) || defined(__cplusplus)
86 enum clnt_stat rusers(char *host, struct utmpidlearr *up);
87 int rnusers(char *host);
88 #else
89 enum clnt_stat rusers();
90 int rnusers();
91 #endif
92 
93 
94 #define	RUSERSPROG	100002
95 #define	RUSERSVERS_3	3
96 
97 #if defined(__STDC__) || defined(__cplusplus)
98 #define	RUSERSPROC_NUM	1
99 extern  int * rusersproc_num_3(void *, CLIENT *);
100 extern  int * rusersproc_num_3_svc(void *, struct svc_req *);
101 #define	RUSERSPROC_NAMES	2
102 extern  utmp_array * rusersproc_names_3(void *, CLIENT *);
103 extern  utmp_array * rusersproc_names_3_svc(void *, struct svc_req *);
104 #define	RUSERSPROC_ALLNAMES	3
105 extern  utmp_array * rusersproc_allnames_3(void *, CLIENT *);
106 extern  utmp_array * rusersproc_allnames_3_svc(void *, struct svc_req *);
107 extern int rusersprog_3_freeresult(SVCXPRT *, xdrproc_t, caddr_t);
108 
109 #else /* K&R C */
110 #define	RUSERSPROC_NUM	1
111 extern  int * rusersproc_num_3();
112 extern  int * rusersproc_num_3_svc();
113 #define	RUSERSPROC_NAMES	2
114 extern  utmp_array * rusersproc_names_3();
115 extern  utmp_array * rusersproc_names_3_svc();
116 #define	RUSERSPROC_ALLNAMES	3
117 extern  utmp_array * rusersproc_allnames_3();
118 extern  utmp_array * rusersproc_allnames_3_svc();
119 extern int rusersprog_3_freeresult();
120 #endif /* K&R C */
121 
122 /* the xdr functions */
123 
124 #if defined(__STDC__) || defined(__cplusplus)
125 extern  bool_t xdr_rusers_utmp(XDR *, rusers_utmp*);
126 extern  bool_t xdr_utmp_array(XDR *, utmp_array*);
127 
128 #else /* K&R C */
129 extern bool_t xdr_rusers_utmp();
130 extern bool_t xdr_utmp_array();
131 
132 #endif /* K&R C */
133 
134 #ifdef __cplusplus
135 }
136 #endif
137 
138 #endif /* !_RUSERS_H_RPCGEN */
139