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