1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License").  You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22/*
23 * Copyright 1991 Sun Microsystems, Inc.
24 * #ident	"%Z%%M%	%I%	%E% SMI"
25 */
26
27%/*
28% * Find out about remote users
29% */
30
31const RUSERS_MAXUSERLEN = 32;
32const RUSERS_MAXLINELEN = 32;
33const RUSERS_MAXHOSTLEN = 257;
34
35struct rusers_utmp {
36	string ut_user<RUSERS_MAXUSERLEN>;	/* aka ut_name */
37	string ut_line<RUSERS_MAXLINELEN>;	/* device */
38	string ut_host<RUSERS_MAXHOSTLEN>;	/* host user logged on from */
39	int ut_type;				/* type of entry */
40	int ut_time;				/* time entry was made */
41	unsigned int ut_idle;			/* minutes idle */
42};
43
44typedef rusers_utmp utmp_array<>;
45
46#ifdef RPC_HDR
47%
48%/*
49% * Values for ut_type field above.
50% */
51#endif
52const	RUSERS_EMPTY = 0;
53const	RUSERS_RUN_LVL = 1;
54const	RUSERS_BOOT_TIME = 2;
55const	RUSERS_OLD_TIME = 3;
56const	RUSERS_NEW_TIME = 4;
57const	RUSERS_INIT_PROCESS = 5;
58const	RUSERS_LOGIN_PROCESS = 6;
59const	RUSERS_USER_PROCESS = 7;
60const	RUSERS_DEAD_PROCESS = 8;
61const	RUSERS_ACCOUNTING = 9;
62
63program RUSERSPROG {
64
65	version RUSERSVERS_3 {
66		int
67		RUSERSPROC_NUM(void) = 1;
68
69		utmp_array
70		RUSERSPROC_NAMES(void) = 2;
71
72		utmp_array
73		RUSERSPROC_ALLNAMES(void) = 3;
74	} = 3;
75
76} = 100002;
77
78#ifdef RPC_HDR
79%
80%
81%
82%/*
83% * The following structures are used by version 2 of the rusersd protocol.
84% * They were not developed with rpcgen, so they do not appear as RPCL.
85% */
86%
87%#define	RUSERSVERS_IDLE 2
88%#define	RUSERSVERS 3		/* current version */
89%#define	MAXUSERS 100
90%
91%/*
92% * This is the structure used in version 2 of the rusersd RPC service.
93% * It corresponds to the utmp structure for BSD sytems.
94% */
95%struct ru_utmp {
96%	char	ut_line[8];		/* tty name */
97%	char	ut_name[8];		/* user id */
98%	char	ut_host[16];		/* host name, if remote */
99%	time_t	ut_time;		/* time on */
100%};
101%
102%struct utmpidle {
103%	struct ru_utmp ui_utmp;
104%	unsigned ui_idle;
105%};
106%
107%struct utmpidlearr {
108%	struct utmpidle **uia_arr;
109%	int uia_cnt;
110%};
111%
112%int xdr_utmpidlearr();
113%
114%#if defined(__STDC__) || defined(__cplusplus)
115%enum clnt_stat rusers(char *host, struct utmpidlearr *up);
116%int rnusers(char *host);
117%#else
118%enum clnt_stat rusers();
119%int rnusers();
120%#endif
121%
122#endif
123