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 const MAXUSERS = 100; 37 const MAXUTLEN = 256; 38 39 struct utmp { 40 string ut_line<MAXUTLEN>; 41 string ut_name<MAXUTLEN>; 42 string ut_host<MAXUTLEN>; 43 int ut_time; 44 }; 45 46 47 struct utmpidle { 48 utmp ui_utmp; 49 unsigned int ui_idle; 50 }; 51 52 typedef utmp utmparr<MAXUSERS>; 53 54 typedef utmpidle utmpidlearr<MAXUSERS>; 55 56 const RUSERS_MAXUSERLEN = 32; 57 const RUSERS_MAXLINELEN = 32; 58 const RUSERS_MAXHOSTLEN = 257; 59 60 struct rusers_utmp { 61 string ut_user<RUSERS_MAXUSERLEN>; /* aka ut_name */ 62 string ut_line<RUSERS_MAXLINELEN>; /* device */ 63 string ut_host<RUSERS_MAXHOSTLEN>; /* host user logged on from */ 64 int ut_type; /* type of entry */ 65 int ut_time; /* time entry was made */ 66 unsigned int ut_idle; /* minutes idle */ 67 }; 68 69 typedef rusers_utmp utmp_array<>; 70 71 program RUSERSPROG { 72 /* 73 * Old version does not include idle information 74 */ 75 version RUSERSVERS_ORIG { 76 int 77 RUSERSPROC_NUM(void) = 1; 78 79 utmparr 80 RUSERSPROC_NAMES(void) = 2; 81 82 utmparr 83 RUSERSPROC_ALLNAMES(void) = 3; 84 } = 1; 85 86 /* 87 * Includes idle information 88 */ 89 version RUSERSVERS_IDLE { 90 int 91 RUSERSPROC_NUM(void) = 1; 92 93 utmpidlearr 94 RUSERSPROC_NAMES(void) = 2; 95 96 utmpidlearr 97 RUSERSPROC_ALLNAMES(void) = 3; 98 } = 2; 99 100 /* 101 * Version 3 rusers procedures (from Solaris). 102 * (Thanks a lot Sun.) 103 */ 104 version RUSERSVERS_3 { 105 int 106 RUSERSPROC_NUM(void) = 1; 107 108 utmp_array 109 RUSERSPROC_NAMES(void) = 2; 110 111 utmp_array 112 RUSERSPROC_ALLNAMES(void) = 3; 113 } = 3; 114 115 } = 100002; 116 117