1/*-
  2 * Copyright (c) 2010, Oracle America, Inc.
  3 *
  4 * Redistribution and use in source and binary forms, with or without
  5 * modification, are permitted provided that the following conditions are
  6 * met:
  7 *
  8 *     * Redistributions of source code must retain the above copyright
  9 *       notice, this list of conditions and the following disclaimer.
 10 *     * Redistributions in binary form must reproduce the above
 11 *       copyright notice, this list of conditions and the following
 12 *       disclaimer in the documentation and/or other materials
 13 *       provided with the distribution.
 14 *     * Neither the name of the "Oracle America, Inc." nor the names of its
 15 *       contributors may be used to endorse or promote products derived
 16 *       from this software without specific prior written permission.
 17 *
 18 *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 19 *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 20 *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 21 *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 22 *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 23 *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 24 *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 25 *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 26 *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 27 *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 28 *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 29 *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 30 */
 31
 32/*
 33 * Find out about remote users
 34 */
 35
 36#ifndef RPC_HDR
 37%#ifndef lint
 38%/*static char sccsid[] = "from: @(#)rnusers.x 1.2 87/09/20 Copyr 1987 Sun Micro";*/
 39%/*static char sccsid[] = "from: @(#)rnusers.x	2.1 88/08/01 4.0 RPCSRC";*/
 40%#endif /* not lint */
 41%#include <sys/cdefs.h>
 42#endif
 43
 44const MAXUSERS = 100;
 45const MAXUTLEN = 256;
 46
 47struct utmp {
 48	string ut_line<MAXUTLEN>;
 49	string ut_name<MAXUTLEN>;
 50	string ut_host<MAXUTLEN>;
 51	int ut_time;
 52};
 53
 54
 55struct utmpidle {
 56	utmp ui_utmp;
 57	unsigned int ui_idle;
 58};
 59
 60typedef utmp utmparr<MAXUSERS>;
 61
 62typedef utmpidle utmpidlearr<MAXUSERS>;
 63
 64const RUSERS_MAXUSERLEN = 32;
 65const RUSERS_MAXLINELEN = 32;
 66const RUSERS_MAXHOSTLEN = 257;
 67
 68struct rusers_utmp {
 69	string ut_user<RUSERS_MAXUSERLEN>;	/* aka ut_name */
 70	string ut_line<RUSERS_MAXLINELEN>;	/* device */
 71	string ut_host<RUSERS_MAXHOSTLEN>;	/* host user logged on from */
 72	int ut_type;				/* type of entry */
 73	int ut_time;				/* time entry was made */
 74	unsigned int ut_idle;			/* minutes idle */
 75};
 76
 77typedef rusers_utmp utmp_array<>;
 78
 79program RUSERSPROG {
 80	/*
 81	 * Old version does not include idle information
 82	 */
 83	version RUSERSVERS_ORIG {
 84		int
 85		RUSERSPROC_NUM(void) = 1;
 86
 87		utmparr
 88		RUSERSPROC_NAMES(void) = 2;
 89
 90		utmparr
 91		RUSERSPROC_ALLNAMES(void) = 3;
 92	} = 1;
 93
 94	/*
 95	 * Includes idle information
 96	 */
 97	version RUSERSVERS_IDLE {
 98		int
 99		RUSERSPROC_NUM(void) = 1;
100
101		utmpidlearr
102		RUSERSPROC_NAMES(void) = 2;
103
104		utmpidlearr
105		RUSERSPROC_ALLNAMES(void) = 3;
106	} = 2;
107
108	/*
109	 * Version 3 rusers procedures (from Solaris).
110	 * (Thanks a lot Sun.)
111	 */
112	version RUSERSVERS_3 {
113		int
114		RUSERSPROC_NUM(void) = 1;
115
116		utmp_array
117		RUSERSPROC_NAMES(void) = 2;
118
119		utmp_array
120		RUSERSPROC_ALLNAMES(void) = 3;
121	} = 3;
122
123} = 100002;