1.\" Copyright (c) 1983, 1991, 1993 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 3. Neither the name of the University nor the names of its contributors 13.\" may be used to endorse or promote products derived from this software 14.\" without specific prior written permission. 15.\" 16.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26.\" SUCH DAMAGE. 27.\" 28.\" @(#)rwhod.8 8.2 (Berkeley) 12/11/93 29.\" $FreeBSD: src/usr.sbin/rwhod/rwhod.8,v 1.13.2.4 2003/03/11 22:31:33 trhodes Exp $ 30.\" 31.Dd September 11, 2019 32.Dt RWHOD 8 33.Os 34.Sh NAME 35.Nm rwhod 36.Nd system status server 37.Sh SYNOPSIS 38.Nm 39.Op Fl i 40.Op Fl p 41.Op Fl l 42.Op Fl g Ar time 43.Op Fl m Op Ar ttl 44.Sh DESCRIPTION 45The 46.Nm 47utility is the server which maintains the database used by the 48.Xr rwho 1 49and 50.Xr ruptime 1 51programs. Its operation is predicated on the ability to 52.Em broadcast 53or 54.Em multicast 55messages on a network. 56.Pp 57The 58.Nm 59utility operates as both a producer and consumer of status information, 60unless the 61.Fl l 62(listen mode) option is specified, in which case 63it acts as a consumer only. 64As a producer of information it periodically 65queries the state of the system and constructs 66status messages which are broadcasted or multicasted on a network. 67As a consumer of information, it listens for other 68.Nm 69servers' status messages, validating them, then recording 70them in a collection of files located in the directory 71.Pa /var/rwho . 72.Pp 73The 74.Fl i 75option enables insecure mode, which causes 76.Nm 77to ignore the source port on incoming packets. 78.Pp 79The 80.Fl g 81option allows for the broadcast 82.Ar time 83for 84.Nm 85to be reduced below 3 minutes. This enables for more 'real' time statistics 86of the host. 87The 88.Ar time 89operand can be given as 30 (30 seconds) or 1m (1 minute), for example. 90.Pp 91The 92.Fl p 93option tells 94.Nm 95to ignore all 96.Dv POINTOPOINT 97interfaces. This is useful if you do not wish to keep dial on demand 98interfaces permanently active. 99.Pp 100The 101.Fl l 102option enables listen mode, which causes 103.Nm 104to not broadcast any information. 105This allows you to monitor other machines' 106.Nm 107information, without broadcasting your own. 108.Pp 109The 110.Fl m 111option causes 112.Nm 113to use IP multicast (instead of 114broadcast) on all interfaces that have 115the IFF_MULTICAST flag set in their "ifnet" structs 116(excluding the loopback interface). The multicast 117reports are sent with a time-to-live of 1, to prevent 118forwarding beyond the directly-connected subnet(s). 119.Pp 120If the optional 121.Ar ttl 122argument is supplied with the 123.Fl m 124flag, 125.Nm 126will send IP multicast datagrams with a 127time-to-live of 128.Ar ttl , 129via a SINGLE interface rather 130than all interfaces. 131.Ar ttl 132must be between 0 and 13332 (or MAX_MULTICAST_SCOPE). Note that 134.Fl m Ar 1 135is different from 136.Fl m , 137in that 138.Fl m Ar 1 139specifies transmission on one interface only. 140.Pp 141When 142.Fl m 143is used without a 144.Ar ttl 145argument, the program accepts multicast 146.Nm 147reports from all multicast-capable interfaces. If a 148.Ar ttl 149argument is given, it accepts multicast reports from only one interface, the 150one on which reports are sent (which may be controlled via the host's routing 151table). Regardless of the 152.Fl m 153option, the program accepts broadcast or 154unicast reports from all interfaces. Thus, this program will hear the 155reports of old, non-multicasting 156.Nm Ns s , 157but, if multicasting is used, 158those old 159.Nm Ns s 160won't hear the reports generated by this program. 161.Pp 162The server transmits and receives messages at the port indicated 163in the ``who'' service specification; see 164.Xr services 5 . 165The messages sent and received, are of the form: 166.Bd -literal -offset indent 167struct outmp { 168 char out_line[8]; /* tty name */ 169 char out_name[8]; /* user id */ 170 long out_time; /* time on */ 171}; 172 173struct whod { 174 char wd_vers; 175 char wd_type; 176 char wd_fill[2]; 177 int wd_sendtime; 178 int wd_recvtime; 179 char wd_hostname[32]; 180 int wd_loadav[3]; 181 int wd_boottime; 182 struct whoent { 183 struct outmp we_utmp; 184 int we_idle; 185 } wd_we[1024 / sizeof (struct whoent)]; 186}; 187.Ed 188.Pp 189All fields are converted to network byte order prior to 190transmission. The load averages are as calculated by the 191.Xr w 1 192program, and represent load averages over the 5, 10, and 15 minute 193intervals prior to a server's transmission; they are multiplied by 100 194for representation in an integer. The host name 195included is that returned by the 196.Xr gethostname 3 197system call, with any trailing domain name omitted. 198The array at the end of the message contains information about 199the users logged in to the sending machine. This information 200includes the contents of the 201.Xr utmpx 5 202entry for each non-idle terminal line and a value indicating the 203time in seconds since a character was last received on the terminal line. 204.Pp 205Messages received by the 206.Nm rwho 207server are discarded unless they originated at an 208.Nm rwho 209server's port or the 210.Fl i 211option was specified. In addition, if the host's name, as specified 212in the message, contains any unprintable 213.Tn ASCII 214characters, the 215message is discarded. Valid messages received by 216.Nm 217are placed in files named 218.Pa whod.hostname 219in the directory 220.Pa /var/rwho . 221These files contain only the most recent message, in the 222format described above. 223.Pp 224Status messages are generated by default approximately once every 2253 minutes. 226.Nm Rwhod 227performs an 228.Xr nlist 3 229on 230.Pa /boot/kernel 231every 30 minutes to guard against 232the possibility that this file is not the system 233image currently operating. 234.Sh SEE ALSO 235.Xr ruptime 1 , 236.Xr rwho 1 237.Sh HISTORY 238The 239.Nm 240utility appeared in 241.Bx 4.2 . 242.Sh BUGS 243Status information should be sent only upon request rather than continuously. 244People often interpret the server dying 245or network communication failures 246as a machine going down. 247