summaryrefslogtreecommitdiff
path: root/share
diff options
context:
space:
mode:
authorTed Unangst <tedu@cvs.openbsd.org>2010-07-01 20:02:30 +0000
committerTed Unangst <tedu@cvs.openbsd.org>2010-07-01 20:02:30 +0000
commit7c9275d132808298c9c7fbfdd44770f4ff8a32ac (patch)
treeae05c69c16053c2466e4db56db1c66a713fdffc0 /share
parent353fe33baaaf517f4f383f29c4d858aaf34b18f9 (diff)
delete a bunch of stale documentation. in theory ok deraadt
Diffstat (limited to 'share')
-rw-r--r--share/doc/smm/00.contents163
-rw-r--r--share/doc/smm/01.setup/0.t129
-rw-r--r--share/doc/smm/01.setup/1.t170
-rw-r--r--share/doc/smm/01.setup/2.t1656
-rw-r--r--share/doc/smm/01.setup/3.t1999
-rw-r--r--share/doc/smm/01.setup/4.t711
-rw-r--r--share/doc/smm/01.setup/5.t584
-rw-r--r--share/doc/smm/01.setup/6.t661
-rw-r--r--share/doc/smm/01.setup/Makefile19
-rw-r--r--share/doc/smm/01.setup/spell.ok618
-rw-r--r--share/doc/smm/04.quotas/Makefile11
-rw-r--r--share/doc/smm/04.quotas/quotas.ms316
-rw-r--r--share/doc/smm/06.nfs/0.t73
-rw-r--r--share/doc/smm/06.nfs/1.t586
-rw-r--r--share/doc/smm/06.nfs/2.t528
-rw-r--r--share/doc/smm/06.nfs/Makefile11
-rw-r--r--share/doc/smm/06.nfs/ref.t121
-rw-r--r--share/doc/smm/09.sendmail/Makefile18
-rw-r--r--share/doc/smm/09.sendmail/intro.me1458
-rw-r--r--share/doc/smm/17.password/Makefile13
-rw-r--r--share/doc/smm/17.password/password.ms601
-rw-r--r--share/doc/smm/18.net/0.t182
-rw-r--r--share/doc/smm/18.net/1.t64
-rw-r--r--share/doc/smm/18.net/2.t83
-rw-r--r--share/doc/smm/18.net/3.t57
-rw-r--r--share/doc/smm/18.net/4.t65
-rw-r--r--share/doc/smm/18.net/5.t182
-rw-r--r--share/doc/smm/18.net/6.t662
-rw-r--r--share/doc/smm/18.net/7.t254
-rw-r--r--share/doc/smm/18.net/8.t164
-rw-r--r--share/doc/smm/18.net/9.t122
-rw-r--r--share/doc/smm/18.net/Makefile14
-rw-r--r--share/doc/smm/18.net/a.t217
-rw-r--r--share/doc/smm/18.net/b.t143
-rw-r--r--share/doc/smm/18.net/c.t149
-rw-r--r--share/doc/smm/18.net/d.t71
-rw-r--r--share/doc/smm/18.net/e.t127
-rw-r--r--share/doc/smm/18.net/f.t115
-rw-r--r--share/doc/smm/18.net/spell.ok307
-rw-r--r--share/doc/smm/Makefile17
-rw-r--r--share/doc/smm/Title200
41 files changed, 2 insertions, 13639 deletions
diff --git a/share/doc/smm/00.contents b/share/doc/smm/00.contents
deleted file mode 100644
index 5e050026c81..00000000000
--- a/share/doc/smm/00.contents
+++ /dev/null
@@ -1,163 +0,0 @@
-.\" $OpenBSD: 00.contents,v 1.4 2004/04/09 12:10:04 jmc Exp $
-.\"
-.\" Copyright (c) 1986, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)00.contents 8.1 (Berkeley) 7/5/93
-.\"
-.if n \{\
-.po 5n
-.ll 70n
-.\}
-.OH '''SMM Contents'
-.EH 'SMM Contents'''
-.TL
-UNIX System Manager's Manual (SMM)
-.sp
-\s-24.4 Berkeley Software Distribution\s+2
-.sp
-\fRJune, 1993\fR
-.PP
-This volume contains manual pages and supplementary documents useful to system
-administrators.
-The information in these documents applies to
-the 4.4BSD system as distributed by U.C. Berkeley.
-.SH
-Reference Manual \- Section 8
-.tl '''(8)'
-.IP
-Section 8 of the UNIX Programmer's Manual contains information related to
-system operation, administration, and maintenance.
-.SH
-System Installation and Administration
-.IP
-.tl 'Installing and Operating 4.4BSD''SMM:1'
-.QP
-The definitive reference document for those occasions when
-you find you need to start over again.
-
-.IP
-.tl 'Building 4.4BSD Kernels with \fIConfig\fP''SMM:2'
-.QP
-In-depth discussions of the use and operation of the \fIconfig\fP
-program, and how to build your very own Unix kernel.
-
-.IP
-.tl 'Fsck \- The UNIX File System Check Program''SMM:3'
-.QP
-A reference document for using the \fIfsck\fP program during
-times of file system distress.
-
-.IP
-.tl 'Disc Quotas in a UNIX Environment''SMM:4'
-.QP
-A light introduction to the techniques
-for limiting the use of disc resources.
-
-.IP
-.tl 'A Fast File System for UNIX''SMM:5'
-.QP
-A description of the 4.4BSD file system organization,
-design and implementation.
-
-.IP
-.tl 'The 4.4BSD NFS Implementation''SMM:6'
-.QP
-An overview of the design, implementation, and use of NFS on 4.4BSD.
-
-.IP
-.tl 'Line Printer Spooler Manual''SMM:7'
-.QP
-This document describes the structure and installation procedure
-for the line printer spooling system.
-
-.IP
-.tl 'Sendmail Installation and Operation Guide''SMM:8'
-.QP
-The last word in installing and operating the \fIsendmail\fP program.
-
-.ne 3
-.IP
-.tl 'Sendmail \- An Internetwork Mail Router''SMM:9'
-.QP
-An overview document on the design and implementation of \fIsendmail\fP.
-
-.IP
-.tl 'Name Server Operations Guide for BIND''SMM:10'
-.QP
-Setting up and operating the name to Internet addressing software.
-If you have a network this will be of interest.
-
-.IP
-.tl 'Timed Installation and Operation Guide''SMM:11'
-.QP
-Describes how to maintain time synchronization between machines
-in a local network.
-
-.IP
-.tl 'The Berkeley UNIX Time Synchronization Protocol''SMM:12'
-.QP
-The protocols and algorithms used by timed,
-the network time synchronization daemon.
-
-.IP
-.tl 'AMD \- The 4.4BSD Automounter''SMM:13'
-.QP
-Automatically mounting file systems on demand.
-
-.IP
-.tl 'Installation and Operation of UUCP''SMM:14'
-.QP
-Describes the implementation of uucp; for the installer and administrator.
-
-.IP
-.tl 'A Dial\-Up Network of UNIX Systems''SMM:15'
-.QP
-Describes UUCP, a program for communicating files between UNIX systems.
-
-.IP
-.tl 'On the Security of UNIX''SMM:16'
-.QP
-Hints on how to break UNIX, and how to avoid your system being broken.
-
-.IP
-.tl 'Password Security \- A Case History''SMM:17'
-.QP
-How the bad guys used to be able to break the password algorithm, and why
-they cannot now (at least not so easily).
-
-.IP
-.tl 'Networking Implementation Notes, 4.4BSD Edition''SMM:18'
-.QP
-A concise description of the system interfaces used within the
-networking subsystem.
-
-.IP
-.tl 'The PERL Programming Language''SMM:19'
-.QP
-The Practical Extraction and Report Language is ideal for
-writing those pesky adminitration scripts.
diff --git a/share/doc/smm/01.setup/0.t b/share/doc/smm/01.setup/0.t
deleted file mode 100644
index cd197e075df..00000000000
--- a/share/doc/smm/01.setup/0.t
+++ /dev/null
@@ -1,129 +0,0 @@
-.\" $OpenBSD: 0.t,v 1.3 2003/06/02 23:30:10 millert Exp $
-.\"
-.\" Copyright (c) 1988, 1993 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)0.t 8.1 (Berkeley) 7/27/93
-.\"
-.ds Ux \s-1UNIX\s0
-.ds Bs \s-1BSD\s0
-.\" Current version:
-.ds 4B 4.4\*(Bs
-.ds Ps 4.3\*(Bs
-.\" tape and disk naming
-.ds Mt mt
-.ds Dk sd
-.ds Dn disk
-.ds Pa c
-.\" block size used on the tape
-.ds Bb 10240
-.ds Bz 20
-.\" document date
-.ds Dy July 27, 1993
-.de Sm
-\s-1\\$1\s0\\$2
-..
-.de Pn \" pathname
-\f(CW\\$1\fP\\$2
-..
-.de Li \" literal
-\f(CW\\$1\fP\\$2
-..
-.de I \" italicize first arg
-\fI\\$1\fP\^\\$2
-..
-.de Xr \" manual reference
-\fI\\$1\fP\^\\$2
-..
-.de Fn \" function
-\fI\\$1\fP\^()\\$2
-..
-.bd S B 3
-.EH 'SMM:1-%''Installing and Operating \*(4B UNIX'
-.OH 'Installing and Operating \*(4B UNIX''SMM:1-%'
-.de Sh
-.NH \\$1
-\\$2
-.nr PD .1v
-.XS \\n%
-.ta 0.6i
-\\*(SN \\$2
-.XE
-.nr PD .3v
-..
-.TL
-Installing and Operating \*(4B UNIX
-.br
-\*(Dy
-.AU
-Marshall Kirk McKusick
-.AU
-Keith Bostic
-.AU
-Michael J. Karels
-.AU
-Samuel J. Leffler
-.AI
-Computer Systems Research Group
-Department of Electrical Engineering and Computer Science
-University of California, Berkeley
-Berkeley, California 94720
-(415) 642-7780
-.AU
-Mike Hibler
-.AI
-Center for Software Science
-Department of Computer Science
-University of Utah
-Salt Lake City, Utah 84112
-(801) 581-5017
-.AB
-.PP
-This document contains instructions for the
-installation and operation of the
-\*(4B release of UNIX\**
-as distributed by The University of California at Berkeley.
-.FS
-UNIX is a registered trademark of USL in the USA and some other countries.
-.FE
-.PP
-It discusses procedures for installing UNIX on a new machine,
-and for upgrading an existing \*(Ps UNIX system to the new release.
-An explanation of how to lay out filesystems on available disks
-and the space requirements for various parts of the system are given.
-A brief overview of the major changes to
-the system between \*(Ps and \*(4B are outlined.
-An explanation of how to set up terminal lines and user accounts,
-and how to do system-specific tailoring is provided.
-A description of how to install and configure the \*(4B networking
-facilities is included.
-Finally, the document details system operation procedures:
-shutdown and startup, filesystem backup procedures,
-resource control, performance monitoring, and procedures for recompiling
-and reinstalling system software.
-.AE
-.bp +3
diff --git a/share/doc/smm/01.setup/1.t b/share/doc/smm/01.setup/1.t
deleted file mode 100644
index 08cf932c7f5..00000000000
--- a/share/doc/smm/01.setup/1.t
+++ /dev/null
@@ -1,170 +0,0 @@
-.\" $OpenBSD: 1.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1988, 1993 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)1.t 8.1 (Berkeley) 7/27/93
-.\"
-.ds lq ``
-.ds rq ''
-.ds LH "Installing/Operating \*(4B
-.ds RH Introduction
-.ds CF \*(Dy
-.LP
-.bp
-.Sh 1 "Introduction"
-.PP
-This document explains how to install the \*(4B Berkeley
-version of UNIX on your system.
-The filesystem format is compatible with \*(Ps
-and it will only be necessary for you to do a full bootstrap
-procedure if you are installing the release on a new machine.
-The object file formats are completely different from the System
-V release, so the most straightforward procedure for upgrading
-a System V system is to do a full bootstrap.
-.PP
-The full bootstrap procedure
-is outlined in section 2; the process starts with copying a filesystem
-image onto a new disk.
-This filesystem is then booted and used to extract the remainder of the
-system binaries and sources from the archives on the tape(s).
-.PP
-The technique for upgrading a \*(Ps system is described
-in section 3 of this document.
-The upgrade procedure involves extracting system binaries
-onto new root and
-.Pn /usr
-filesystems and merging local
-configuration files into the new system.
-User filesystems may be upgraded in place.
-Most \*(Ps binaries may be used with \*(4B in the course
-of the conversion.
-It is desirable to recompile local sources after the conversion,
-as the new compiler (GCC) provides superior code optimization.
-Consult section 3.5 for a description of some of the differences
-between \*(Ps and \*(4B.
-.Sh 2 "Distribution format"
-.PP
-The distribution comes in two formats:
-.DS
-(3)\0\0 6250bpi 2400' 9-track magnetic tapes, or
-(1)\0\0 8mm Exabyte tape
-.DE
-.PP
-If you have the facilities, we \fBstrongly\fP recommend copying the
-magnetic tape(s) in the distribution kit to guard against disaster.
-The tapes contain \*(Bb-byte records.
-There are interspersed tape marks;
-end-of-tape is signaled by a double end-of-file.
-The first file on the tape is architecture dependent.
-Additional files on the tape(s)
-contain tape archive images of the system binaries and sources (see
-.Xr tar (1)\**).
-.FS
-References of the form \fIX\fP(Y) mean the entry named
-\fIX\fP in section Y of the ``UNIX Programmer's Manual''.
-.FE
-See the tape label for a description of the contents
-and format of each individual tape.
-.Sh 2 "UNIX device naming"
-.PP
-Device names have a different syntax depending on whether you are talking
-to the standalone system or a running UNIX kernel.
-The standalone system syntax is currently architecture dependent and is
-described in the various architecture specific sections as applicable.
-When not running standalone, devices are available via files in the
-.Pn /dev/
-directory.
-The file name typically encodes the device type, its logical unit and
-a partition within that unit.
-For example,
-.Pn /dev/sd2b
-refers to the second partition (``b'') of
-SCSI (``sd'') drive number ``2'', while
-.Pn /dev/rmt0
-refers to the raw (``r'') interface of 9-track tape (``mt'') unit ``0''.
-.PP
-The mapping of physical addressing information (e.g. controller, target)
-to a logical unit number is dependent on the system configuration.
-In all simple cases, where only a single controller is present, a drive
-with physical unit number 0 (e.g., as determined by its unit
-specification, either unit plug or other selection mechanism)
-will be called unit 0 in its UNIX file name.
-This is not, however, strictly
-necessary, since the system has a level of indirection in this naming.
-If there are multiple controllers, the disk unit numbers will normally
-be counted sequentially across controllers. This can be taken
-advantage of to make the system less dependent on the interconnect
-topology, and to make reconfiguration after hardware failure easier.
-.PP
-Each UNIX physical disk is divided into at most 8 logical disk partitions,
-each of which may occupy any consecutive cylinder range on the physical
-device. The cylinders occupied by the 8 partitions for each drive type
-are specified initially in the disk description file
-.Pn /etc/disktab
-(c.f.
-.Xr disktab (5)).
-The partition information and description of the
-drive geometry are written in one of the first sectors of each disk with the
-.Xr disklabel (8)
-program. Each partition may be used for either a
-raw data area such as a paging area or to store a UNIX filesystem.
-It is conventional for the first partition on a disk to be used
-to store a root filesystem, from which UNIX may be bootstrapped.
-The second partition is traditionally used as a paging area, and the
-rest of the disk is divided into spaces for additional ``mounted
-filesystems'' by use of one or more additional partitions.
-.Sh 2 "UNIX devices: block and raw"
-.PP
-UNIX makes a distinction between ``block'' and ``raw'' (character)
-devices. Each disk has a block device interface where
-the system makes the device byte addressable and you can write
-a single byte in the middle of the disk. The system will read
-out the data from the disk sector, insert the byte you gave it
-and put the modified data back. The disks with the names
-.Pn /dev/xx0[a-h] ,
-etc., are block devices.
-There are also raw devices available.
-These have names like
-.Pn /dev/rxx0[a-h] ,
-the ``r'' here standing for ``raw''.
-Raw devices bypass the buffer cache and use DMA directly to/from
-the program's I/O buffers;
-they are normally restricted to full-sector transfers.
-In the bootstrap procedures we
-will often suggest using the raw devices, because these tend
-to work faster.
-Raw devices are used when making new filesystems,
-when checking unmounted filesystems,
-or for copying quiescent filesystems.
-The block devices are used to mount filesystems.
-.PP
-You should be aware that it is sometimes important whether to use
-the character device (for efficiency) or not (because it would not
-work, e.g. to write a single byte in the middle of a sector).
-Do not change the instructions by using the wrong type of device
-indiscriminately.
diff --git a/share/doc/smm/01.setup/2.t b/share/doc/smm/01.setup/2.t
deleted file mode 100644
index cb62ad19d2a..00000000000
--- a/share/doc/smm/01.setup/2.t
+++ /dev/null
@@ -1,1656 +0,0 @@
-.\" $OpenBSD: 2.t,v 1.4 2007/04/13 17:34:40 millert Exp $
-.\"
-.\" Copyright (c) 1988, 1993 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)2.t 8.1 (Berkeley) 7/27/93
-.\"
-.ds lq ``
-.ds rq ''
-.ds LH "Installing/Operating \*(4B
-.ds RH Bootstrapping
-.ds CF \*(Dy
-.Sh 1 "Bootstrap procedure"
-.PP
-This section explains the bootstrap procedure that can be used
-to get the kernel supplied with this distribution running on your machine.
-If you are not currently running \*(Ps you will
-have to do a full bootstrap.
-Section 3 describes how to upgrade a \*(Ps system.
-An understanding of the operations used in a full bootstrap
-is helpful in doing an upgrade as well.
-In either case, it is highly desirable to read and understand
-the remainder of this document before proceeding.
-.PP
-The distribution supports a somewhat wider set of machines than
-those for which we have built binaries.
-The architectures that are supported only in source form include:
-.IP \(bu
-Intel 386/486-based machines (ISA/AT or EISA bus only)
-.IP \(bu
-Sony News MIPS-based workstations
-.IP \(bu
-Omron Luna 68000-based workstations
-.LP
-If you wish to run one of these architectures,
-you will have to build a cross compilation environment.
-Note that the distribution does
-.B not
-include the machine support for the Tahoe and VAX architectures
-found in previous BSD distributions.
-Our primary development environment is the HP9000/300 series machines.
-The other architectures are developed and supported by
-people outside the university.
-Consequently, we are not able to directly test or maintain these
-other architectures, so cannot comment on their robustness,
-reliability, or completeness.
-.Sh 2 "Bootstrapping from the tape"
-.LP
-The set of files on the distribution tape are as follows:
-.IP 1)
-A
-.Xr dd (1)
-(HP300),
-.Xr tar (1)
-(DECstation), or
-.Xr dump (8)
-(SPARC) image of the root filesystem
-.IP 2)
-A
-.Xr tar
-image of the
-.Pn /var
-filesystem
-.IP 3)
-A
-.Xr tar
-image of the
-.Pn /usr
-filesystem
-.IP 4)
-A
-.Xr tar
-image of
-.Pn /usr/src/sys
-.IP 5)
-A
-.Xr tar
-image of
-.Pn /usr/src
-except sys and contrib
-.IP 6)
-A
-.Xr tar
-image of
-.Pn /usr/src/contrib
-.IP 7)
-(8mm Exabyte tape distributions only)
-A
-.Xr tar
-image of
-.Pn /usr/src/X11R5
-.LP
-The tape bootstrap procedure used to create a
-working system involves the following major steps:
-.IP 1)
-Transfer a bootable root filesystem from the tape to a disk
-and get it booted and running.
-.IP 2)
-Build and restore the
-.Pn /var
-and
-.Pn /usr
-filesystems from tape with
-.Xr tar (1).
-.IP 3)
-Extract the system and utility source files as desired.
-.PP
-The following sections describe the above steps in detail.
-The details of the first step vary between architectures.
-The specific steps for the HP300, SPARC, and DECstation are
-given in the next three sections respectively.
-You should follow the instructions for your particular architecture.
-In all sections,
-commands you are expected to type are shown in italics, while that
-information printed by the system is shown emboldened.
-.Sh 2 "Booting the HP300"
-.Sh 3 "Supported hardware"
-.LP
-The hardware supported by \*(4B for the HP300/400 is as follows:
-.TS
-center box;
-lw(1i) lw(4i).
-CPU's T{
-68020 based (318, 319, 320, 330 and 350),
-68030 based (340, 345, 360, 370, 375, 400) and
-68040 based (380, 425, 433).
-T}
-_
-DISK's T{
-HP-IB/CS80 (7912, 7914, 7933, 7936, 7945, 7957, 7958, 7959, 2200, 2203)
-and SCSI-I (including magneto-optical).
-T}
-_
-TAPE's T{
-Low-density CS80 cartridge (7914, 7946, 9144),
-high-density CS80 cartridge (9145),
-HP SCSI DAT and
-SCSI Exabyte.
-T}
-_
-RS232 T{
-98644 built-in single-port, 98642 4-port and 98638 8-port interfaces.
-T}
-_
-NETWORK T{
-98643 internal and external LAN cards.
-T}
-_
-GRAPHICS T{
-Terminal emulation and raw frame buffer support for
-98544 / 98545 / 98547 (Topcat color & monochrome),
-98548 / 98549 / 98550 (Catseye color & monochrome),
-98700 / 98710 (Gatorbox),
-98720 / 98721 (Renaissance),
-98730 / 98731 (DaVinci) and
-A1096A (Hyperion monochrome).
-T}
-_
-INPUT T{
-General interface supporting all HIL devices.
-(e.g. keyboard, 2 and 3 button mice, ID module, ...)
-T}
-_
-MISC T{
-Battery-backed real time clock,
-builtin and 98625A/B HP-IB interfaces,
-builtin and 98658A SCSI interfaces,
-serial printers and plotters on HP-IB,
-and SCSI autochanger device.
-T}
-.TE
-.LP
-Major items that are not supported
-include the 310 and 332 CPU's, 400 series machines
-configured for Domain/OS, EISA and VME bus adaptors, audio, the centronics
-port, 1/2" tape drives (7980), CD-ROM, and the PVRX/TVRX 3D graphics displays.
-.Sh 3 "Standalone device file naming"
-.LP
-The standalone system device name syntax on the HP300 is of the form:
-.DS
-xx(a,c,u,p)
-.DE
-where
-\fIxx\fP is the device type,
-\fIa\fP specifies the adaptor to use,
-\fIc\fP the controller,
-\fIu\fP the unit, and
-\fIp\fP a partition.
-The \fIdevice type\fP differentiates the various disks and tapes and is one of:
-``rd'' for HP-IB CS80 disks,
-``ct'' for HP-IB CS80 cartridge tapes, or
-``sd'' for SCSI-I disks
-(SCSI-I tapes are currently not supported).
-The \fIadaptor\fP field is a logical HP-IB or SCSI bus adaptor card number.
-This will typically be
-0 for SCSI disks,
-0 for devices on the ``slow'' HP-IB interface (usually tapes) and
-1 for devices on the ``fast'' HP-IB interface (usually disks).
-To get a complete mapping of physical (select-code) to logical card numbers
-just type a ^C at the standalone prompt.
-The \fIcontroller\fP field is the disk or tape's target number on the
-HP-IB or SCSI bus.
-For SCSI the range is 0 to 6 (7 is the adaptor address) and
-for HP-IB the range is 0 to 7.
-The \fIunit\fP field is unused and should be 0.
-The \fIpartition\fP field is interpreted differently for tapes
-and disks: for disks it is a disk partition (in the range 0-7),
-and for tapes it is a file number offset on the tape.
-Thus, partition 2 of a SCSI disk drive at target 3 on SCSI bus 1
-would be ``sd(1,3,0,2)''.
-If you have only one of any type bus adaptor, you may omit the adaptor
-and controller numbers;
-e.g. ``sd(0,2)'' could be used instead of ``sd(0,0,0,2)''.
-The following examples always use the full syntax for clarity.
-.Sh 3 "The procedure"
-.LP
-The basic steps involved in bringing up the HP300 are as follows:
-.IP 1)
-Obtain a second disk and format it, if necessary.
-.IP 2)
-Copy a root filesystem from the
-tape onto the beginning of the disk.
-.IP 3)
-Boot the UNIX system on the new disk.
-.IP 4)
-(Optional) Build a root filesystem optimized for your disk.
-.IP 5)
-Label the disks with the
-.Xr disklabel (8)
-program.
-.Sh 4 "Step 1: selecting and formatting a disk"
-.PP
-For your first system you will have to obtain a formatted disk
-of a type given in the ``supported hardware'' list above.
-If you want to load an entire binary system
-(i.e., everything except
-.Pn /usr/src ),
-on the single disk you will need a minimum of 290MB,
-ruling out anything smaller than a 7959B/S disk.
-The disklabel included in the bootstrap root image is laid out
-to accommodate this scenario.
-Note that an HP SCSI magneto-optical disk will work fine for this case.
-\*(4B will boot and run (albeit slowly) using one.
-If you want to load source on a single disk system,
-you will need at least 640MB (at least a 2213A SCSI or 2203A HP-IB disk).
-A disk as small as the 7945A (54MB) can be used for the bootstrap
-procedure but will hold only the root and primary swap partitions.
-If you plan to use multiple disks,
-refer to section 2.5 for suggestions on partitioning.
-.PP
-After selecting a disk, you may need to format it.
-Since most HP disk drives come pre-formatted
-(except optical media)
-you probably will not, but if necessary,
-you can format a disk under HP-UX using the
-.Xr mediainit (1m)
-program.
-Once you have \*(4B up and running on one machine you can use the
-.Xr scsiformat (8)
-program to format additional SCSI disks.
-Any additional HP-IB disks will have to be formatted using HP-UX.
-.Sh 4 "Step 2: copying the root filesystem from tape to disk"
-.PP
-Once you have a formatted second disk you can use the
-.Xr dd (1)
-command under HP-UX to copy the root filesystem image from
-the tape to the beginning of the second disk.
-For HP's, the root filesystem image is the first file on the tape.
-It includes a disklabel and bootblock along with the root filesystem.
-An example command to copy the image from tape to the beginning of a disk is:
-.DS
-.ft CW
-dd if=/dev/rmt/0m of=/dev/rdsk/1s0 bs=\*(Bzb
-.DE
-The actual special file syntax may vary depending on unit numbers and
-the version of HP-UX that is running.
-Consult the HP-UX
-.Xr mt (7)
-and
-.Xr disk (7)
-man pages for details.
-.PP
-Note that if you have a SCSI disk, you don't necessarily have to use
-HP-UX (or an HP) to create the boot disk.
-Any machine and operating system that will allow you to copy the
-raw disk image out to block 0 of the disk will do.
-.PP
-If you have only a single machine with a single disk,
-you may still be able to install and boot \*(4B if you have an
-HP-IB cartridge tape drive.
-If so, you can use a more difficult approach of booting a
-standalone copy program from the tape, and using that to copy the
-root filesystem image from the tape to the disk.
-To do this, you need to extract the first file of the distribution tape
-(the root image), copy it over to a machine with a cartridge drive
-and then copy the image onto tape.
-For example:
-.DS
-.ft CW
-dd if=/dev/rst0 of=bootimage bs=\*(Bzb
-rcp bootimage foo:/tmp/bootimage
-<login to foo>
-dd if=/tmp/bootimage of=/dev/rct/0m bs=\*(Bzb
-.DE
-Once this tape is created you can boot and run the standalone tape
-copy program from it.
-The copy program is loaded just as any other program would be loaded
-by the bootrom in ``attended'' mode:
-reset the CPU,
-hold down the space bar until the word ``Keyboard'' appears in the
-installed interface list, and
-enter the menu selection for SYS_TCOPY.
-Once loaded and running:
-.DS
-.TS
-lw(2i) l.
-\fBFrom:\fP \fI^C\fP (control-C to see logical adaptor assignments)
-\fBhpib0 at sc7\fP
-\fBscsi0 at sc14\fP
-\fBFrom:\fP \fIct(0,7,0,0)\fP (HP-IB tape, target 7, first tape file)
-\fBTo:\fP \fIsd(0,0,0,2)\fP (SCSI disk, target 0, third partition)
-\fBCopy completed: 1728 records copied\fP
-.TE
-.DE
-.LP
-This copy will likely take 30 minutes or more.
-.Sh 4 "Step 3: booting the root filesystem"
-.PP
-You now have a bootable root filesystem on the disk.
-If you were previously running with two disks,
-it would be best if you shut down the machine and turn off power on
-the HP-UX drive.
-It will be less confusing and it will eliminate any chance of accidentally
-destroying the HP-UX disk.
-If you used a cartridge tape for booting you should also unload the tape
-at this point.
-Whether you booted from tape or copied from disk you should now reboot
-the machine and do another attended boot (see previous section),
-this time with SYS_TBOOT.
-Once loaded and running the boot program will display the CPU type and
-prompt for a kernel file to boot:
-.DS
-.B
-HP433 CPU
-Boot
-.R
-\fB:\fP \fI/vmunix\fP
-.DE
-.LP
-After providing the kernel name, the machine will boot \*(4B with
-output that looks about like this:
-.DS
-.B
-597480+34120+139288 start 0xfe8019ec
-Copyright (c) 1982, 1986, 1989, 1991, 1993
- The Regents of the University of California.
-Copyright (c) 1992 Hewlett-Packard Company
-Copyright (c) 1992 Motorola Inc.
-All rights reserved.
-
-4.4BSD UNIX #1: Tue Jul 20 11:40:36 PDT 1993
- mckusick@vangogh.CS.Berkeley.EDU:/usr/obj/sys/compile/GENERIC.hp300
-HP9000/433 (33MHz MC68040 CPU+MMU+FPU, 4k on-chip physical I/D caches)
-real mem = xxx
-avail mem = ###
-using ### buffers containing ### bytes of memory
-(... information about available devices ...)
-root device?
-.R
-.DE
-.PP
-The first three numbers are printed out by the bootstrap program and
-are the sizes of different parts of the system (text, initialized and
-uninitialized data). The system also allocates several system data
-structures after it starts running. The sizes of these structures are
-based on the amount of available memory and the maximum count of active
-users expected, as declared in a system configuration description. This
-will be discussed later.
-.PP
-UNIX itself then runs for the first time and begins by printing out a banner
-identifying the release and
-version of the system that is in use and the date that it was compiled.
-.PP
-Next the
-.I mem
-messages give the
-amount of real (physical) memory and the
-memory available to user programs
-in bytes.
-For example, if your machine has 16Mb bytes of memory, then
-\fBxxx\fP will be 16777216.
-.PP
-The messages that come out next show what devices were found on
-the current processor. These messages are described in
-.Xr autoconf (4).
-The distributed system may not have
-found all the communications devices you have
-or all the mass storage peripherals you have, especially
-if you have more than
-two of anything. You will correct this when you create
-a description of your machine from which to configure a site-dependent
-version of UNIX.
-The messages printed at boot here contain much of the information
-that will be used in creating the configuration.
-In a correctly configured system most of the information
-present in the configuration description
-is printed out at boot time as the system verifies that each device
-is present.
-.PP
-The \*(lqroot device?\*(rq prompt was printed by the system
-to ask you for the name of the root filesystem to use.
-This happens because the distribution system is a \fIgeneric\fP
-system, i.e., it can be bootstrapped on a cpu with its root device
-and paging area on any available disk drive.
-You will most likely respond to the root device question with ``sd0''
-if you are booting from a SCSI disk,
-or with ``rd0'' if you are booting from an HP-IB disk.
-This response shows that the disk it is running
-on is drive 0 of type ``sd'' or ``rd'' respectively.
-If you have other disks attached to the system,
-it is possible that the drive you are using will not be configured
-as logical drive 0.
-Check the autoconfiguration messages printed out by the kernel to
-make sure.
-These messages will show the type of every logical drive
-and their associated controller and slave addresses.
-You will later build a system tailored to your configuration
-that will not prompt you for a root device when it is bootstrapped.
-.DS
-\fBroot device?\fP \fI\*(Dk0\fP
-\fBWARNING: preposterous time in filesystem \-\- CHECK AND RESET THE DATE!\fP
-\fBerase ^?, kill ^U, intr ^C\fP
-\fB#\fP
-.DE
-.PP
-The \*(lqerase ...\*(rq message is part of the
-.Pn /.profile
-that was executed by the root shell when it started. This message
-tells you about the settings of the character erase,
-line erase, and interrupt characters.
-.PP
-UNIX is now running,
-and the \fIUNIX Programmer's Manual\fP applies. The ``#'' is the prompt
-from the Bourne shell, and lets you know that you are the super-user,
-whose login name is \*(lqroot\*(rq.
-.PP
-At this point, the root filesystem is mounted read-only.
-Before continuing the installation, the filesystem needs to be ``updated''
-to allow writing and device special files for the following steps need
-to be created.
-This is done as follows:
-.DS
-.TS
-lw(2i) l.
-\fB#\fP \fImount_mfs -s 1000 -T type /dev/null /tmp\fP (create a writable filesystem)
-(\fItype\fP is the disk type as determined from /etc/disktab)
-\fB#\fP \fIcd /tmp\fP (connect to that directory)
-\fB#\fP \fI../dev/MAKEDEV \*(Dk#\fP (create special files for root disk)
-(\fI\*(Dk\fP is the disk type, \fI#\fP is the unit number)
-(ignore warning from ``sh'')
-\fB#\fP \fImount \-uw /tmp/\*(Dk#a /\fP (read-write mount root filesystem)
-\fB#\fP \fIcd /dev\fP (go to device directory)
-\fB#\fP \fI./MAKEDEV \*(Dk#\fP (create permanent special files for root disk)
-(again, ignore warning from ``sh'')
-.TE
-.DE
-.Sh 4 "Step 4: (optional) restoring the root filesystem"
-.PP
-The root filesystem that you are currently running on is complete,
-however it probably is not optimally laid out for the disk on
-which you are running.
-If you will be cloning copies of the system onto multiple disks for
-other machines, you are advised to connect one of these disks to
-this machine, and build and restore a properly laid out root filesystem
-onto it.
-If this is the only machine on which you will be running \*(4B
-or peak performance is not an issue, you can skip this step and
-proceed directly to step 5.
-.PP
-Connect a second disk to your machine.
-If you bootstrapped using the two disk method, you can
-overwrite your initial HP-UX disk, as it will no longer
-be needed (assuming you have no plans to run HP-UX again).
-.PP
-To really create the root filesystem on drive 1
-you should first label the disk as described in step 5 below.
-Then run the following commands:
-.DS
-\fB#\fP \fIcd /dev\fP
-\fB#\fP \fI./MAKEDEV \*(Dk1a\fP
-\fB#\fP\|\fInewfs /dev/r\*(Dk1a\fP
-\fB#\fP\|\fImount /dev/\*(Dk1a /mnt\fP
-\fB#\fP\|\fIcd /mnt\fP
-\fB#\fP\|\fIdump 0f \- /dev/r\*(Dk0a | restore xf \-\fP
-(Note: restore will ask if you want to ``set owner/mode for '.'''
-to which you should reply ``yes''.)
-.DE
-.PP
-When this completes,
-you should then shut down the system, and boot on the disk that
-you just created following the procedure in step (3) above.
-.Sh 4 "Step 5: placing labels on the disks"
-.PP
-For each disk on the HP300, \*(4B places information about the geometry
-of the drive and the partition layout at byte offset 1024.
-This information is written with
-.Xr disklabel (8).
-.PP
-The root image just loaded includes a ``generic'' label intended to allow
-easy installation of the root and
-.Pn /usr
-and may not be suitable for the actual
-disk on which it was installed.
-In particular,
-it may make your disk appear larger or smaller than its real size.
-In the former case, you lose some capacity.
-In the latter, some of the partitions may map non-existent sectors
-leading to errors if those partitions are used.
-It is also possible that the defined geometry will interact poorly with
-the filesystem code resulting in reduced performance.
-However, as long as you are willing to give up a little space,
-not use certain partitions or suffer minor performance degradation,
-you might want to avoid this step;
-especially if you do not know how to use
-.Xr ed (1).
-.PP
-If you choose to edit this label,
-you can fill in correct geometry information from
-.Pn /etc/disktab .
-You may also want to rework the ``e'' and ``f'' partitions used for loading
-.Pn /usr
-and
-.Pn /var .
-You should not attempt to, and
-.Xr disklabel
-will not let you, modify the ``a'', ``b'' and ``d'' partitions.
-To edit a label:
-.DS
-\fB#\fP \fIEDITOR=ed\fP
-\fB#\fP \fIexport EDITOR\fP
-\fB#\fP \fIdisklabel -r -e /dev/r\fBXX#\fPd
-.DE
-where \fBXX\fP is the type and \fB#\fP is the logical drive number; e.g.
-.Pn /dev/rsd0d
-or
-.Pn /dev/rrd0d .
-Note the explicit use of the ``d'' partition.
-This partition includes the bootblock as does ``c''
-and using it allows you to change the size of ``c''.
-.PP
-If you wish to label any additional disks, run the following command for each:
-.DS
-\fB#\|\fP\fIdisklabel -rw \fBXX# type\fP \fI"optional_pack_name"\fP
-.DE
-where \fBXX#\fP is the same as in the previous command
-and \fBtype\fP is the HP300 disk device name as listed in
-.Pn /etc/disktab .
-The optional information may contain any descriptive name for the
-contents of a disk, and may be up to 16 characters long. This procedure
-will place the label on the disk using the information found in
-.Pn /etc/disktab
-for the disk type named.
-If you have changed the disk partition sizes,
-you may wish to add entries for the modified configuration in
-.Pn /etc/disktab
-before labeling the affected disks.
-.PP
-You have now completed the HP300 specific part of the installation.
-Now proceed to the generic part of the installation
-described starting in section 2.5 below.
-Note that where the disk name ``sd'' is used throughout section 2.5,
-you should substitute the name ``rd'' if you are running on an HP-IB disk.
-Also, if you are loading on a single disk with the default disklabel,
-.Pn /var
-should be restored to the ``f'' partition and
-.Pn /usr
-to the ``e'' partition.
-.Sh 2 "Booting the SPARC"
-.Sh 3 "Supported hardware"
-.LP
-The hardware supported by \*(4B for the SPARC is as follows:
-.TS
-center box;
-lw(1i) lw(4i).
-CPU's T{
-SPARCstation 1 series (1, 1+, SLC, IPC) and
-SPARCstation 2 series (2, IPX).
-T}
-_
-DISK's T{
-SCSI.
-T}
-_
-TAPE's T{
-none.
-T}
-_
-NETWORK T{
-SPARCstation Lance (le).
-T}
-_
-GRAPHICS T{
-bwtwo and cgthree.
-T}
-_
-INPUT T{
-Keyboard and mouse.
-T}
-_
-MISC T{
-Battery-backed real time clock,
-built-in serial devices,
-Sbus SCSI controller,
-and audio device.
-T}
-.TE
-.LP
-Major items that are not supported include
-anything VME-based,
-the GX (cgsix) display,
-the floppy disk, and SCSI tapes.
-.Sh 3 "Limitations"
-.LP
-There are several important limitations on the \*(4B distribution
-for the SPARC:
-.IP 1)
-You
-.B must
-have SunOS 4.1.x or Solaris to bring up \*(4B.
-There is no SPARCstation bootstrap code in this distribution. The
-Sun-supplied boot loader will be used to boot \*(4B; you must copy
-this from your SunOS distribution. This imposes several
-restrictions on the system, as detailed below.
-.IP 2)
-The \*(4B SPARC kernel does not remap SCSI IDs. A SCSI disk at
-target 0 will become ``sd0'', where in SunOS the same disk will
-normally be called ``sd3''. If your existing SunOS system is
-diskful, it will be least painful to have SunOS running on the disk
-on target 0 lun 0 and put \*(4B on the disk on target 3 lun 0. Both
-systems will then think they are running on ``sd0'', and you can
-boot either system as needed simply by changing the EEPROM's boot
-device.
-.IP 3)
-There is no SCSI tape driver.
-You must have another system for tape reading and backups.
-.IP 4)
-Although the \*(4B SPARC kernel will handle existing SunOS shared
-libraries, it does not use or create them itself, and therefore
-requires much more disk space than SunOS does.
-.IP 5)
-It is currently difficult (though not completely impossible) to
-run \*(4B diskless. These instructions assume you will have a local
-boot, swap, and root filesystem.
-.IP 6)
-When using a serial port rather than a graphics display as the console,
-only port
-.Pn ttya
-can be used.
-Attempts to use port
-.Pn ttyb
-will fail when the kernel tries
-to print the boot up messages to the console.
-.Sh 3 "The procedure"
-.PP
-You must have a spare disk on which to place \*(4B.
-The steps involved in bootstrapping this tape are as follows:
-.IP 1)
-Bring up SunOS (preferably SunOS 4.1.x or Solaris 1.x, although
-Solaris 2 may work \(em this is untested).
-.IP 2)
-Attach auxiliary SCSI disk(s). Format and label using the
-SunOS formatting and labeling programs as needed.
-Note that the root filesystem currently requires at least 10 MB; 16 MB
-or more is recommended. The b partition will be used for swap;
-this should be at least 32 MB.
-.IP 3)
-Use the SunOS
-.Xr newfs
-to build the root filesystem. You may also
-want to build other filesystems at the same time. (By default, the
-\*(4B
-.Xr newfs
-builds a filesystem that SunOS will not handle; if you
-plan to switch OSes back and forth you may want to sacrifice the
-performance gain from the new filesystem format for compatibility.)
-You can build an old-format filesystem on \*(4B by giving the \-O
-0 option to
-.Xr newfs (8).
-.Xr Fsck (8)
-can convert old format filesystems to new format
-filesystems, but not vice versa,
-so you may want to initially build old format filesystems so that they
-can be mounted under SunOS,
-and then later convert them to new format filesystems when you are
-satisfied that \*(4B is running properly.
-In any case,
-.B
-you must build an old-style root filesystem
-.R
-so that the SunOS boot program will work.
-.IP 4)
-Mount the new root, then copy the SunOS
-.Pn /boot
-into place and use the SunOS ``installboot'' program
-to enable disk-based booting.
-Note that the filesystem must be mounted when you do the ``installboot'':
-.DS
-.ft CW
-# mount /dev/sd3a /mnt
-# cp /boot /mnt/boot
-# cd /usr/kvm/mdec
-# installboot /mnt/boot bootsd /dev/rsd3a
-.DE
-The SunOS
-.Pn /boot
-will load \*(4B kernels; there is no SPARCstation
-bootstrap code on the distribution. Note that the SunOS
-.Pn /boot
-does not handle the new \*(4B filesystem format.
-.IP 5)
-Restore the contents of the \*(4B root filesystem.
-.DS
-.ft CW
-# cd /mnt
-# rrestore xf tapehost:/dev/nrst0
-.DE
-.IP 6)
-Boot the supplied kernel:
-.DS
-.ft CW
-# halt
-ok boot sd(0,3)vmunix -s [for old proms] OR
-ok boot disk3 -s [for new proms]
-\&... [\*(4B boot messages]
-.DE
-.LP
-To install the remaining filesystems, use the procedure described
-starting in section 2.5.
-In these instructions,
-.Pn /usr
-should be loaded into the ``e'' partition and
-.Pn /var
-in the ``f'' partition.
-.LP
-After completing the filesystem installation you may want
-to set up \*(4B to reboot automatically:
-.DS
-.ft CW
-# halt
-ok setenv boot-from sd(0,3)vmunix [for old proms] OR
-ok setenv boot-device disk3 [for new proms]
-.DE
-If you build backwards-compatible filesystems, either with the SunOS
-newfs or with the \*(4B ``\-O'' option, you can mount these under
-SunOS. The SunOS fsck will, however, always think that these filesystems
-are corrupted, as there are several new (previously unused)
-superblock fields that are updated in \*(4B. Running ``fsck \-b32''
-and letting it ``fix'' the superblock will take care of this.
-.sp 0.5
-If you wish to run SunOS binaries that use SunOS shared libraries, you
-simply need to copy all the dynamic linker files from an existing
-SunOS system:
-.DS
-.ft CW
-# rcp sunos-host:/etc/ld.so.cache /etc/
-# rcp sunos-host:'/usr/lib/*.so*' /usr/lib/
-.DE
-The SunOS compiler and linker should be able to produce SunOS binaries
-under \*(4B, but this has not been tested. If you plan to try it you
-will need the appropriate .sa files as well.
-.Sh 2 "Booting the DECstation"
-.Sh 3 "Supported hardware"
-.LP
-The hardware supported by \*(4B for the DECstation is as follows:
-.TS
-center box;
-lw(1i) lw(4i).
-CPU's T{
-R2000 based (3100) and
-R3000 based (5000/200, 5000/20, 5000/25, 5000/1xx).
-T}
-_
-DISK's T{
-SCSI-I (tested RZ23, RZ55, RZ57, Maxtor 8760S).
-T}
-_
-TAPE's T{
-SCSI-I (tested DEC TK50, Archive DAT, Emulex MT02).
-T}
-_
-RS232 T{
-Internal DEC dc7085 and AMD 8530 based interfaces.
-T}
-_
-NETWORK T{
-TURBOchannel PMAD-AA and internal LANCE based interfaces.
-T}
-_
-GRAPHICS T{
-Terminal emulation and raw frame buffer support for
-3100 (color & monochrome),
-TURBOchannel PMAG-AA, PMAG-BA, PMAG-DV.
-T}
-_
-INPUT T{
-Standard DEC keyboard (LK201) and mouse.
-T}
-_
-MISC T{
-Battery-backed real time clock,
-internal and TURBOchannel PMAZ-AA SCSI interfaces.
-T}
-.TE
-.LP
-Major items that are not supported include the 5000/240
-(there is code but not compiled in or tested),
-R4000 based machines, FDDI and audio interfaces.
-Diskless machines are not supported but booting kernels and bootstrapping
-over the network is supported on the 5000 series.
-.Sh 3 "The procedure"
-.PP
-The first file on the distribution tape is a tar file that contains
-four files.
-The first step requires a running UNIX (or ULTRIX) system that can
-be used to extract the tar archive from the first file on the tape.
-The command:
-.DS
-.ft CW
-tar xf /dev/rmt0
-.DE
-will extract the following four files:
-.DS
-A) root.image: \fIdd\fP image of the root filesystem
-B) vmunix.tape: \fIdd\fP image for creating boot tapes
-C) vmunix.net: file for booting over the network
-D) root.dump: \fIdump\fP image of the root filesystem
-.DE
-There are three basic ways a system can be bootstrapped corresponding to the
-first three files.
-You may want to read the section on bootstrapping the HP300
-since many of the steps are similar.
-A spare, formatted SCSI disk is also useful.
-.Sh 4 "Procedure A: copy root filesystem to disk"
-.PP
-This procedure is similar to the HP300.
-If you have an extra disk, the easiest approach is to use \fIdd\fP\|(1)
-under ULTRIX to copy the root filesystem image to the beginning
-of the spare disk.
-The root filesystem image includes a disklabel and bootblock along with the
-root filesystem.
-An example command to copy the image to the beginning of a disk is:
-.DS
-.ft CW
-dd if=root.image of=/dev/rz1c bs=\*(Bzb
-.DE
-The actual special file syntax will vary depending on unit numbers and
-the version of ULTRIX that is running.
-This system is now ready to boot. You can boot the kernel with one of the
-following PROM commands. If you are booting on a 3100, the disk must be SCSI
-id zero because of a bug.
-.DS
-.ft CW
-DEC 3100: boot \-f rz(0,0,0)vmunix
-DEC 5000: boot 5/rz0/vmunix
-.DE
-You can then proceed to section 2.5
-to create reasonable disk partitions for your machine
-and then install the rest of the system.
-.Sh 4 "Procedure B: bootstrap from tape"
-.PP
-If you have only a single machine with a single disk,
-you need to use the more difficult approach of booting a
-kernel and mini-root from tape or the network, and using it to restore
-the root filesystem.
-.PP
-First, you will need to create a boot tape. This can be done using
-\fIdd\fP as in the following example.
-.DS
-.ft CW
-dd if=vmunix.tape of=/dev/nrmt0 bs=1b
-dd if=root.dump of=/dev/nrmt0 bs=\*(Bzb
-.DE
-The actual special file syntax for the tape drive will vary depending on
-unit numbers, tape device and the version of ULTRIX that is running.
-.PP
-The first file on the boot tape contains a boot header, kernel, and
-mini-root filesystem that the PROM can copy into memory.
-Installing from tape has only been tested
-on a 3100 and a 5000/200 using a TK50 tape drive. Here are two example
-PROM commands to boot from tape.
-.DS
-.ft CW
-DEC 3100: boot \-f tz(0,5,0) m # 5 is the SCSI id of the TK50
-DEC 5000: boot 5/tz6 m # 6 is the SCSI id of the TK50
-.DE
-The `m' argument tells the kernel to look for a root filesystem in memory.
-Next you should proceed to section 2.4.3 to build a disk-based root filesystem.
-.Sh 4 "Procedure C: bootstrap over the network"
-.PP
-You will need a host machine that is running the \fIbootp\fP server
-with the
-.Pn vmunix.net
-file installed in the default directory defined by the
-configuration file for
-.Xr bootp .
-Here are two example PROM commands to boot across the net:
-.DS
-.ft CW
-DEC 3100: boot \-f tftp()vmunix.net m
-DEC 5000: boot 6/tftp/vmunix.net m
-.DE
-This command should load the kernel and mini-root into memory and
-run the same as the tape install (procedure B).
-The rest of the steps are the same except
-you will need to start the network
-(if you are unsure how to fill in the <name> fields below,
-see sections 4.4 and 5).
-Execute the following to start the networking:
-.DS
-.ft CW
-# mount \-uw /
-# echo 127.0.0.1 localhost >> /etc/hosts
-# echo <your.host.inet.number> myname.my.domain myname >> /etc/hosts
-# echo <friend.host.inet.number> myfriend.my.domain myfriend >> /etc/hosts
-# ifconfig le0 inet myname
-.DE
-Next you should proceed to section 2.4.3 to build a disk-based root filesystem.
-.Sh 3 "Label disk and create the root filesystem"
-.LP
-There are five steps to create a disk-based root filesystem.
-.IP 1)
-Label the disk.
-.DS
-.ft CW
-# disklabel -W /dev/rrz?c # This enables writing the label
-# disklabel -w -r -B /dev/rrz?c $DISKTYPE
-# newfs /dev/rrz?a
-\&...
-# fsck /dev/rrz?a
-\&...
-.DE
-Supported disk types are listed in
-.Pn /etc/disktab .
-.IP 2)
-Restore the root filesystem.
-.DS
-.ft CW
-# mount \-uw /
-# mount /dev/rz?a /a
-# cd /a
-.DE
-.ti +0.4i
-If you are restoring locally (procedure B), run:
-.DS
-.ft CW
-# mt \-f /dev/nrmt0 rew
-# restore \-xsf 2 /dev/rmt0
-.DE
-.ti +0.4i
-If you are restoring across the net (procedure c), run:
-.DS
-.ft CW
-# rrestore xf myfriend:/path/to/root.dump
-.DE
-.ti +0.4i
-When the restore finishes, clean up with:
-.DS
-.ft CW
-# cd /
-# sync
-# umount /a
-# fsck /dev/rz?a
-.DE
-.IP 3)
-Reset the system and initialize the PROM monitor to boot automatically.
-.DS
-.ft CW
-DEC 3100: setenv bootpath boot \-f rz(0,?,0)vmunix
-DEC 5000: setenv bootpath 5/rz?/vmunix -a
-.DE
-.IP 4)
-After booting UNIX, you will need to create
-.Pn /dev/mouse
-to run X windows as in the following example.
-.DS
-.ft CW
-rm /dev/mouse
-ln /dev/xx /dev/mouse
-.DE
-The 'xx' should be one of the following:
-.DS
-pm0 raw interface to PMAX graphics devices
-cfb0 raw interface to TURBOchannel PMAG-BA color frame buffer
-xcfb0 raw interface to maxine graphics devices
-mfb0 raw interface to mono graphics devices
-.DE
-You can then proceed to section 2.5 to install the rest of the system.
-Note that where the disk name ``sd'' is used throughout section 2.5,
-you should substitute the name ``rz''.
-.Sh 2 "Disk configuration"
-.PP
-All architectures now have a root filesystem up and running and
-proceed from this point to layout filesystems to make use
-of the available space and to balance disk load for better system
-performance.
-.Sh 3 "Disk naming and divisions"
-.PP
-Each physical disk drive can be divided into up to 8 partitions;
-UNIX typically uses only 3 or 4 partitions.
-For instance, the first partition, \*(Dk0a,
-is used for a root filesystem, a backup thereof,
-or a small filesystem like,
-.Pn /var/tmp ;
-the second partition, \*(Dk0b,
-is used for paging and swapping; and
-a third partition, typically \*(Dk0e,
-holds a user filesystem.
-.PP
-The space available on a disk varies per device.
-Each disk typically has a paging area of 30 to 100 megabytes
-and a root filesystem of about 17 megabytes.
-.\" XXX check
-The distributed system binaries occupy about 150 (180 with X11R5) megabytes
-.\" XXX check
-while the major sources occupy another 250 (340 with X11R5) megabytes.
-The
-.Pn /var
-filesystem as delivered on the tape is only 2Mb,
-however it should have at least 50Mb allocated to it just for
-normal system activity.
-Usually it is allocated the last partition on the disk
-so that it can provide as much space as possible to the
-.Pn /var/users
-filesystem.
-See section 2.5.4 for further details on disk layouts.
-.PP
-Be aware that the disks have their sizes
-measured in disk sectors (usually 512 bytes), while the UNIX filesystem
-blocks are variable sized.
-If
-.Sm BLOCKSIZE=1k
-is set in the user's environment, all user programs report
-disk space in kilobytes, otherwise,
-disk sizes are always reported in units of 512-byte sectors\**.
-.FS
-You can thank System V intransigence and POSIX duplicity for
-requiring that 512-byte blocks be the units that programs report.
-.FE
-The
-.Pn /etc/disktab
-file used in labelling disks and making filesystems
-specifies disk partition sizes in sectors.
-.Sh 3 "Layout considerations"
-.PP
-There are several considerations in deciding how
-to adjust the arrangement of things on your disks.
-The most important is making sure that there is adequate space
-for what is required; secondarily, throughput should be maximized.
-Paging space is an important parameter.
-The system, as distributed, sizes the configured
-paging areas each time the system is booted. Further,
-multiple paging areas of different sizes may be interleaved.
-.PP
-Many common system programs (C, the editor, the assembler etc.)
-create intermediate files in the
-.Pn /tmp
-directory, so the filesystem where this is stored also should be made
-large enough to accommodate most high-water marks.
-Typically,
-.Pn /tmp
-is constructed from a memory-based filesystem (see
-.Xr mount_mfs (8)).
-Programs that want their temporary files to persist
-across system reboots (such as editors) should use
-.Pn /var/tmp .
-If you plan to use a disk-based
-.Pn /tmp
-filesystem to avoid loss across system reboots, it makes
-sense to mount this in a ``root'' (i.e. first partition)
-filesystem on another disk.
-All the programs that create files in
-.Pn /tmp
-take care to delete them, but are not immune to rare events
-and can leave dregs.
-The directory should be examined every so often and the old
-files deleted.
-.PP
-The efficiency with which UNIX is able to use the CPU
-is often strongly affected by the configuration of disk controllers;
-it is critical for good performance to balance disk load.
-There are at least five components of the disk load that you can
-divide between the available disks:
-.IP 1)
-The root filesystem.
-.IP 2)
-The
-.Pn /var
-and
-.Pn /var/tmp
-filesystems.
-.IP 3)
-The
-.Pn /usr
-filesystem.
-.IP 4)
-The user filesystems.
-.IP 5)
-The paging activity.
-.LP
-The following possibilities are ones we have used at times
-when we had 2, 3 and 4 disks:
-.TS
-center doublebox;
-l | c s s
-l | lw(5) | lw(5) | lw(5).
- disks
-what 2 3 4
-_
-root 0 0 0
-var 1 2 3
-usr 1 1 1
-paging 0+1 0+2 0+2+3
-users 0 0+2 0+2
-archive x x 3
-.TE
-.PP
-The most important things to consider are to
-even out the disk load as much as possible, and to do this by
-decoupling filesystems (on separate arms) between which heavy copying occurs.
-Note that a long term average balanced load is not important; it is
-much more important to have an instantaneously balanced
-load when the system is busy.
-.PP
-Intelligent experimentation with a few filesystem arrangements can
-pay off in much improved performance. It is particularly easy to
-move the root, the
-.Pn /var
-and
-.Pn /var/tmp
-filesystems and the paging areas. Place the
-user files and the
-.Pn /usr
-directory as space needs dictate and experiment
-with the other, more easily moved filesystems.
-.Sh 3 "Filesystem parameters"
-.PP
-Each filesystem is parameterized according to its block size,
-fragment size, and the disk geometry characteristics of the
-medium on which it resides. Inaccurate specification of the disk
-characteristics or haphazard choice of the filesystem parameters
-can result in substantial throughput degradation or significant
-waste of disk space. As distributed,
-filesystems are configured according to the following table.
-.DS
-.TS
-center;
-l l l.
-Filesystem Block size Fragment size
-_
-root 8 kbytes 1 kbytes
-usr 8 kbytes 1 kbytes
-users 4 kbytes 512 bytes
-.TE
-.DE
-.PP
-The root filesystem block size is
-made large to optimize bandwidth to the associated disk.
-The large block size is important as many of the most
-heavily used programs are demand paged out of the
-.Pn /bin
-directory.
-The fragment size of 1 kbyte is a ``nominal'' value to use
-with a filesystem. With a 1 kbyte fragment size
-disk space utilization is about the same
-as with the earlier versions of the filesystem.
-.PP
-The filesystems for users have a 4 kbyte block
-size with 512 byte fragment size. These parameters
-have been selected based on observations of the
-performance of our user filesystems. The 4 kbyte
-block size provides adequate bandwidth while the
-512 byte fragment size provides acceptable space compaction
-and disk fragmentation.
-.PP
-Other parameters may be chosen in constructing filesystems,
-but the factors involved in choosing a block
-size and fragment size are many and interact in complex
-ways. Larger block sizes result in better
-throughput to large files in the filesystem as
-larger I/O requests will then be done by the
-system. However,
-consideration must be given to the average file sizes
-found in the filesystem and the performance of the
-internal system buffer cache. The system
-currently provides space in the inode for
-12 direct block pointers, 1 single indirect block
-pointer, 1 double indirect block pointer,
-and 1 triple indirect block pointer.
-If a file uses only direct blocks, access time to
-it will be optimized by maximizing the block size.
-If a file spills over into an indirect block,
-increasing the block size of the filesystem may
-decrease the amount of space used
-by eliminating the need to allocate an indirect block.
-However, if the block size is increased and an indirect
-block is still required, then more disk space will be
-used by the file because indirect blocks are allocated
-according to the block size of the filesystem.
-.PP
-In selecting a fragment size for a filesystem, at least
-two considerations should be given. The major performance
-tradeoffs observed are between an 8 kbyte block filesystem
-and a 4 kbyte block filesystem. Because of implementation
-constraints, the block size versus fragment size ratio can not
-be greater than 8. This means that an 8 kbyte filesystem
-will always have a fragment size of at least 1 kbytes. If
-a filesystem is created with a 4 kbyte block size and a
-1 kbyte fragment size, then upgraded to an 8 kbyte block size
-and 1 kbyte fragment size, identical space compaction will be
-observed. However, if a filesystem has a 4 kbyte block size
-and 512 byte fragment size, converting it to an 8K/1K
-filesystem will result in 4-8% more space being
-used. This implies that 4 kbyte block filesystems that
-might be upgraded to 8 kbyte blocks for higher performance should
-use fragment sizes of at least 1 kbytes to minimize the amount
-of work required in conversion.
-.PP
-A second, more important, consideration when selecting the
-fragment size for a filesystem is the level of fragmentation
-on the disk. With an 8:1 fragment to block ratio, storage fragmentation
-occurs much sooner, particularly with a busy filesystem running
-near full capacity. By comparison, the level of fragmentation in a
-4:1 fragment to block ratio filesystem is one tenth as severe. This
-means that on filesystems where many files are created and
-deleted, the 512 byte fragment size is more likely to result in apparent
-space exhaustion because of fragmentation. That is, when the filesystem
-is nearly full, file expansion that requires locating a
-contiguous area of disk space is more likely to fail on a 512
-byte filesystem than on a 1 kbyte filesystem. To minimize
-fragmentation problems of this sort, a parameter in the super
-block specifies a minimum acceptable free space threshold. When
-normal users (i.e. anyone but the super-user) attempt to allocate
-disk space and the free space threshold is exceeded, the user is
-returned an error as if the filesystem were really full. This
-parameter is nominally set to 5%; it may be changed by supplying
-a parameter to
-.Xr newfs (8),
-or by updating the super block of an existing filesystem using
-.Xr tunefs (8).
-.PP
-Finally, a third, less common consideration is the attributes of
-the disk itself. The fragment size should not be smaller than the
-physical sector size of the disk. As an example, the HP magneto-optical
-disks have 1024 byte physical sectors. Using a 512 byte fragment size
-on such disks will work but is extremely inefficient.
-.PP
-Note that the above discussion considers block sizes of up to only 8k.
-As of the 4.4 release, the maximum block size has been increased to 64k.
-This allows an entirely new set of block/fragment combinations for which
-there is little experience to date.
-In general though, unless a filesystem is to be used
-for a special purpose application (for example, storing
-image processing data), we recommend using the
-values supplied above.
-Remember that the current
-implementation limits the block size to at most 64 kbytes
-and the ratio of block size versus fragment size must be 1, 2, 4, or 8.
-.PP
-The disk geometry information used by the filesystem
-affects the block layout policies employed. The file
-.Pn /etc/disktab ,
-as supplied, contains the data for most
-all drives supported by the system. Before constructing
-a filesystem with
-.Xr newfs (8)
-you should label the disk (if it has not yet been labeled,
-and the driver supports labels).
-If labels cannot be used, you must instead
-specify the type of disk on which the filesystem resides;
-.Xr newfs
-then reads
-.Pn /etc/disktab
-instead of the pack label.
-This file also contains the default
-filesystem partition
-sizes, and default block and fragment sizes. To
-override any of the default values you can modify the file,
-edit the disk label,
-or use an option to
-.Xr newfs .
-.Sh 3 "Implementing a layout"
-.PP
-To put a chosen disk layout into effect, you should use the
-.Xr newfs (8)
-command to create each new filesystem.
-Each filesystem must also be added to the file
-.Pn /etc/fstab
-so that it will be checked and mounted when the system is bootstrapped.
-.PP
-First we will consider a system with a single disk.
-There is little real choice on how to do the layout;
-the root filesystem goes in the ``a'' partition,
-.Pn /usr
-goes in the ``e'' partition, and
-.Pn /var
-fills out the remainder of the disk in the ``f'' partition.
-This is the organization used if you loaded the disk-image root filesystem.
-With the addition of a memory-based
-.Pn /tmp
-filesystem, its fstab entry would be as follows:
-.TS
-center;
-lfC lfC l l n n.
-/dev/\*(Dk0a / ufs rw 1 1
-/dev/\*(Dk0b none swap sw 0 0
-/dev/\*(Dk0b /tmp mfs rw,-s=14000,-b=8192,-f=1024,-T=sd660 0 0
-/dev/\*(Dk0e /usr ufs ro 1 2
-/dev/\*(Dk0f /var ufs rw 1 2
-.TE
-.PP
-If we had a second disk, we would split the load between the drives.
-On the second disk, we place the
-.Pn /usr
-and
-.Pn /var
-filesystems in their usual \*(Dk1e and \*(Dk1f
-partitions respectively.
-The \*(Dk1b partition would be used as a second paging area,
-and the \*(Dk1a partition left as a spare root filesystem
-(alternatively \*(Dk1a could be used for
-.Pn /var/tmp ).
-The first disk still holds the
-the root filesystem in \*(Dk0a, and the primary swap area in \*(Dk0b.
-The \*(Dk0e partition is used to hold home directories in
-.Pn /var/users .
-The \*(Dk0f partition can be used for
-.Pn /usr/src
-or alternately the \*(Dk0e partition can be extended to cover
-the rest of the disk with
-.Xr disklabel (8).
-As before, the
-.Pn /tmp
-directory is a memory-based filesystem.
-Note that to interleave the paging between the two disks
-you must build a system configuration that specifies:
-.DS
-config vmunix root on \*(Dk0 swap on \*(Dk0 and \*(Dk1
-.DE
-The
-.Pn /etc/fstab
-file would then contain
-.TS
-center;
-lfC lfC l l n n.
-/dev/\*(Dk0a / ufs rw 1 1
-/dev/\*(Dk0b none swap sw 0 0
-/dev/\*(Dk1b none swap sw 0 0
-/dev/\*(Dk0b /tmp mfs rw,-s=14000,-b=8192,-f=1024,-T=sd660 0 0
-/dev/\*(Dk1e /usr ufs ro 1 2
-/dev/\*(Dk0f /usr/src ufs rw 1 2
-/dev/\*(Dk1f /var ufs rw 1 2
-/dev/\*(Dk0e /var/users ufs rw 1 2
-.TE
-.PP
-To make the
-.Pn /var
-filesystem we would do:
-.DS
-\fB#\fP \fIcd /dev\fP
-\fB#\fP \fIMAKEDEV \*(Dk1\fP
-\fB#\fP \fIdisklabel -wr \*(Dk1 "disk type" "disk name"\fP
-\fB#\fP \fInewfs \*(Dk1f\fP
-(information about filesystem prints out)
-\fB#\fP \fImkdir /var\fP
-\fB#\fP \fImount /dev/\*(Dk1f /var\fP
-.DE
-.Sh 2 "Installing the rest of the system"
-.PP
-At this point you should have your disks partitioned.
-The next step is to extract the rest of the data from the tape.
-At a minimum you need to set up the
-.Pn /var
-and
-.Pn /usr
-filesystems.
-You may also want to extract some or all the program sources.
-Since not all architectures support tape drives or don't support the
-correct ones, you may need to extract the files indirectly using
-.Xr rsh (1).
-For example, for a directly connected tape drive you might do:
-.DS
-\fB#\fP \fImt -f /dev/nr\*(Mt0 fsf\fP
-\fB#\fP \fItar xbpf \*(Bz /dev/nr\*(Mt0\fP
-.DE
-The equivalent indirect procedure (where the tape drive is on machine ``foo'')
-is:
-.DS
-\fB#\fP \fIrsh foo mt -f /dev/nr\*(Mt0 fsf\fP
-\fB#\fP \fIrsh foo dd if=/dev/nr\*(Mt0 bs=\*(Bzb | tar xbpf \*(Bz -\fP
-.DE
-Obviously, the target machine must be connected to the local network
-for this to work.
-To do this:
-.DS
-\fB#\fP \fIecho 127.0.0.1 localhost >> /etc/hosts\fP
-\fB#\fP \fIecho \fPyour.host.inet.number myname.my.domain myname\fI >> /etc/hosts\fP
-\fB#\fP \fIecho \fPfriend.host.inet.number myfriend.my.domain myfriend\fI >> /etc/hosts\fP
-\fB#\fP \fIifconfig le0 inet \fPmyname
-.DE
-where the ``host.inet.number'' fields are the IP addresses for your host and
-the host with the tape drive
-and the ``my.domain'' fields are the names of your machine and the tape-hosting
-machine.
-See sections 4.4 and 5 for more information on setting up the network.
-.PP
-Assuming a directly connected tape drive, here is how to extract and
-install
-.Pn /var
-and
-.Pn /usr :
-.br
-.ne 5
-.TS
-lw(2i) l.
-\fB#\fP \fImount \-uw /dev/\*(Dk#a /\fP (read-write mount root filesystem)
-\fB#\fP \fIdate yymmddhhmm\fP (set date, see \fIdate\fP\|(1))
-\&....
-\fB#\fP \fIpasswd -l root\fP (set password for super-user)
-\fBNew password:\fP (password will not echo)
-\fBRetype new password:\fP
-\fB#\fP \fIpasswd -l toor\fP (set password for super-user)
-\fBNew password:\fP (password will not echo)
-\fBRetype new password:\fP
-\fB#\fP \fIhostname mysitename\fP (set your hostname)
-\fB#\fP \fInewfs r\*(Dk#p\fP (create empty user filesystem)
-(\fI\*(Dk\fP is the disk type, \fI#\fP is the unit number,
-\fIp\fP is the partition; this takes a few minutes)
-\fB#\fP \fImount /dev/\*(Dk#p /var\fP (mount the var filesystem)
-\fB#\fP \fIcd /var\fP (make /var the current directory)
-\fB#\fP \fImt -f /dev/nr\*(Mt0 fsf\fP (space to end of previous tape file)
-\fB#\fP \fItar xbpf \*(Bz /dev/nr\*(Mt0\fP (extract all of var)
-(this takes a few minutes)
-\fB#\fP \fInewfs r\*(Dk#p\fP (create empty user filesystem)
-(as before \fI\*(Dk\fP is the disk type, \fI#\fP is the unit number,
-\fIp\fP is the partition)
-\fB#\fP \fImount /dev/\*(Dk#p /mnt\fP (mount the new /usr in temporary location)
-\fB#\fP \fIcd /mnt\fP (make /mnt the current directory)
-\fB#\fP \fImt -f /dev/nr\*(Mt0 fsf\fP (space to end of previous tape file)
-\fB#\fP \fItar xbpf \*(Bz /dev/nr\*(Mt0\fP (extract all of usr except usr/src)
-(this takes about 15-20 minutes)
-\fB#\fP \fIcd /\fP (make / the current directory)
-\fB#\fP \fIumount /mnt\fP (unmount from temporary mount point)
-\fB#\fP \fIrm -r /usr/*\fP (remove excess bootstrap binaries)
-\fB#\fP \fImount /dev/\*(Dk#p /usr\fP (remount /usr)
-.TE
-If no disk label has been installed on the disk, the
-.Xr newfs
-command will require a third argument to specify the disk type,
-using one of the names in
-.Pn /etc/disktab .
-If the tape had been rewound or positioned incorrectly before the
-.Xr tar ,
-to extract
-.Pn /var
-it may be repositioned by the following commands.
-.DS
-\fB#\fP \fImt -f /dev/nr\*(Mt0 rew\fP
-\fB#\fP \fImt -f /dev/nr\*(Mt0 fsf 1\fP
-.DE
-The data on the second and third tape files has now been extracted.
-If you are using 6250bpi tapes, the first reel of the
-distribution is no longer needed; you should now mount the second
-reel instead. The installation procedure continues from this
-point on the 8mm tape.
-The next step is to extract the sources.
-As previously noted,
-.Pn /usr/src
-.\" XXX Check
-requires about 250-340Mb of space.
-Ideally sources should be in a separate filesystem;
-if you plan to put them into your
-.Pn /usr
-filesystem, it will need at least 500Mb of space.
-Assuming that you will be using a separate filesystem on \*(Dk0f for
-.Pn /usr/src ,
-you will start by creating and mounting it:
-.DS
-\fB#\fP \fInewfs \*(Dk0f\fP
-(information about filesystem prints out)
-\fB#\fP \fImkdir /usr/src\fP
-\fB#\fP \fImount /dev/\*(Dk0f /usr/src\fP
-.DE
-.LP
-First you will extract the kernel source:
-.DS
-.TS
-lw(2i) l.
-\fB#\fP \fIcd /usr/src\fP
-\fB#\fP \fImt -f /dev/nr\*(Mt0 fsf\fP (space to end of previous tape file)
-(this should only be done on Exabyte distributions)
-\fB#\fP \fItar xpbf \*(Bz /dev/nr\*(Mt0\fP (extract the kernel sources)
-(this takes about 15-30 minutes)
-.TE
-.DE
-.LP
-The next tar file contains the sources for the utilities.
-It is extracted as follows:
-.DS
-.TS
-lw(2i) l.
-\fB#\fP \fIcd /usr/src\fP
-\fB#\fP \fImt -f /dev/nr\*(Mt0 fsf\fP (space to end of previous tape file)
-\fB#\fP \fItar xpbf \*(Bz /dev/rmt12\fP (extract the utility source)
-(this takes about 30-60 minutes)
-.TE
-.DE
-.PP
-If you are using 6250bpi tapes, the second reel of the
-distribution is no longer needed; you should now mount the third
-reel instead. The installation procedure continues from this
-point on the 8mm tape.
-.PP
-The next tar file contains the sources for the contributed software.
-It is extracted as follows:
-.DS
-.TS
-lw(2i) l.
-\fB#\fP \fIcd /usr/src\fP
-\fB#\fP \fImt -f /dev/nr\*(Mt0 fsf\fP (space to end of previous tape file)
-(this should only be done on Exabyte distributions)
-\fB#\fP \fItar xpbf \*(Bz /dev/rmt12\fP (extract the contributed software source)
-(this takes about 30-60 minutes)
-.TE
-.DE
-.PP
-If you received a distribution on 8mm Exabyte tape,
-there is one additional tape file on the distribution tape
-that has not been installed to this point; it contains the
-sources for X11R5 in
-.Xr tar (1)
-format. As distributed, X11R5 should be placed in
-.Pn /usr/src/X11R5 .
-.DS
-.TS
-lw(2i) l.
-\fB#\fP \fIcd /usr/src\fP
-\fB#\fP \fImt -f /dev/nr\*(Mt0 fsf\fP (space to end of previous tape file)
-\fB#\fP \fItar xpbf \*(Bz /dev/nr\*(Mt0\fP (extract the X11R5 source)
-(this takes about 30-60 minutes)
-.TE
-.DE
-Many of the X11 utilities search using the path
-.Pn /usr/X11 ,
-so be sure that you have a symbolic link that points at
-the location of your X11 binaries (here, X11R5).
-.PP
-Having now completed the extraction of the sources,
-you may want to verify that your
-.Pn /usr/src
-filesystem is consistent.
-To do so, you must unmount it, and run
-.Xr fsck (8);
-assuming that you used \*(Dk0f you would proceed as follows:
-.DS
-.TS
-lw(2i) l.
-\fB#\fP \fIcd /\fP (change directory, back to the root)
-\fB#\fP \fIumount /usr/src\fP (unmount /usr/src)
-\fB#\fP \fIfsck /dev/r\*(Dk0f\fP
-.TE
-.DE
-The output from
-.Xr fsck
-should look something like:
-.DS
-.B
-** /dev/r\*(Dk0f
-** Last Mounted on /usr/src
-** Phase 1 - Check Blocks and Sizes
-** Phase 2 - Check Pathnames
-** Phase 3 - Check Connectivity
-** Phase 4 - Check Reference Counts
-** Phase 5 - Check Cyl groups
-23000 files, 261000 used, 39000 free (2200 frags, 4600 blocks)
-.R
-.DE
-.PP
-If there are inconsistencies in the filesystem, you may be prompted
-to apply corrective action; see the
-.Xr fsck (8)
-or \fIFsck \(en The UNIX File System Check Program\fP (SMM:3) for more details.
-.PP
-To use the
-.Pn /usr/src
-filesystem, you should now remount it with:
-.DS
-\fB#\fP \fImount /dev/\*(Dk0f /usr/src\fP
-.DE
-or if you have made an entry for it in
-.Pn /etc/fstab
-you can remount it with:
-.DS
-\fB#\fP \fImount /usr/src\fP
-.DE
-.Sh 2 "Additional conversion information"
-.PP
-After setting up the new \*(4B filesystems, you may restore the user
-files that were saved on tape before beginning the conversion.
-Note that the \*(4B
-.Xr restore
-program does its work on a mounted filesystem using normal system operations.
-This means that filesystem dumps may be restored even
-if the characteristics of the filesystem changed.
-To restore a dump tape for, say, the
-.Pn /a
-filesystem something like the following would be used:
-.DS
-\fB#\fP \fImkdir /a\fP
-\fB#\fP \fInewfs \*(Dk#p\fI
-\fB#\fP \fImount /dev/\*(Dk#p /a\fP
-\fB#\fP \fIcd /a\fP
-\fB#\fP \fIrestore x\fP
-.DE
-.PP
-If
-.Xr tar
-images were written instead of doing a dump, you should
-be sure to use its `\-p' option when reading the files back. No matter
-how you restore a filesystem, be sure to unmount it and and check its
-integrity with
-.Xr fsck (8)
-when the job is complete.
diff --git a/share/doc/smm/01.setup/3.t b/share/doc/smm/01.setup/3.t
deleted file mode 100644
index 0263f3ad1b9..00000000000
--- a/share/doc/smm/01.setup/3.t
+++ /dev/null
@@ -1,1999 +0,0 @@
-.\" $OpenBSD: 3.t,v 1.4 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1980, 1986, 1988, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)3.t 8.1 (Berkeley) 7/27/93
-.\"
-.ds lq ``
-.ds rq ''
-.ds RH "Upgrading a \*(Ps System
-.ds CF \*(Dy
-.Sh 1 "Upgrading a \*(Ps system"
-.PP
-This section describes the procedure for upgrading a \*(Ps
-system to \*(4B. This procedure may vary according to the version of
-the system running before conversion.
-If you are converting from a
-System V system, some of this section will still apply (in particular,
-the filesystem conversion). However, many of the system configuration
-files are different, and the executable file formats are completely
-incompatible.
-.PP
-In particular be wary when using this information to upgrade
-a \*(Ps HP300 system.
-There are at least four different versions of ``\*(Ps'' out there:
-.IP 1)
-HPBSD 1.x from Utah.
-.br
-This was the original version of \*(Ps for HP300s from which the
-other variants (and \*(4B) are derived.
-It is largely a \*(Ps system with Sun's NFS 3.0 filesystem code and
-some \*(Ps-Tahoe features (e.g. networking code).
-Since the filesystem code is 4.2/4.3 vintage and the filesystem
-hierarchy is largely \*(Ps, most of this section should apply.
-.IP 2)
-MORE/bsd from Mt. Xinu.
-.br
-This is a \*(Ps-Tahoe vintage system with Sun's NFS 4.0 filesystem code
-upgraded with Tahoe UFS features.
-The instructions for \*(Ps-Tahoe should largely apply.
-.IP 3)
-\*(Ps-Reno from CSRG.
-.br
-At least one site bootstrapped HP300 support from the Reno distribution.
-The Reno filesystem code was somewhere between \*(Ps and \*(4B: the VFS switch
-had been added but many of the UFS features (e.g. ``inline'' symlinks)
-were missing.
-The filesystem hierarchy reorganization first appeared in this release.
-Be extremely careful following these instructions if you are
-upgrading from the Reno distribution.
-.IP 4)
-HPBSD 2.0 from Utah.
-.br
-As if things were not bad enough already,
-this release has the \*(4B filesystem and networking code
-as well as some utilities, but still has a \*(Ps hierarchy.
-No filesystem conversions are necessary for this upgrade,
-but files will still need to be moved around.
-.Sh 2 "Installation overview"
-.PP
-If you are running \*(Ps, upgrading your system
-involves replacing your kernel and system utilities.
-In general, there are three possible ways to install a new \*(Bs distribution:
-(1) boot directly from the distribution tape, use it to load new binaries
-onto empty disks, and then merge or restore any existing configuration files
-and filesystems;
-(2) use an existing \*(Ps or later system to extract the root and
-.Pn /usr
-filesystems from the distribution tape,
-boot from the new system, then merge or restore existing
-configuration files and filesystems; or
-(3) extract the sources from the distribution tape onto an existing system,
-and use that system to cross-compile and install \*(4B.
-For this release, the second alternative is strongly advised,
-with the third alternative reserved as a last resort.
-In general, older binaries will continue to run under \*(4B,
-but there are many exceptions that are on the critical path
-for getting the system running.
-Ideally, the new system binaries (root and
-.Pn /usr
-filesystems) should be installed on spare disk partitions,
-then site-specific files should be merged into them.
-Once the new system is up and fully merged, the previous root and
-.Pn /usr
-filesystems can be reused.
-Other existing filesystems can be retained and used,
-except that (as usual) the new
-.Xr fsck
-should be run before they are mounted.
-.PP
-It is \fBSTRONGLY\fP advised that you make full dumps of each filesystem
-before beginning, especially any that you intend to modify in place
-during the merge.
-It is also desirable to run filesystem checks
-of all filesystems to be converted to \*(4B before shutting down.
-This is an excellent time to review your disk configuration
-for possible tuning of the layout.
-Most systems will need to provide a new filesystem for system use
-mounted on
-.Pn /var
-(see below).
-However, the
-.Pn /tmp
-filesystem can be an MFS virtual-memory-resident filesystem,
-potentially freeing an existing disk partition.
-(Additional swap space may be desirable as a consequence.)
-See
-.Xr mount_mfs (8).
-.PP
-The recommended installation procedure includes the following steps.
-The order of these steps will probably vary according to local needs.
-.IP \(bu
-Extract root and
-.Pn /usr
-filesystems from the distribution tapes.
-.IP \(bu
-Extract kernel and/or user-level sources from the distribution tape
-if space permits.
-This can serve as the backup documentation as needed.
-.IP \(bu
-Configure and boot a kernel for the local system.
-This can be delayed if the generic kernel from the distribution
-supports enough hardware to proceed.
-.IP \(bu
-Build a skeletal
-.Pn /var
-filesystem (see
-.Xr mtree (8)).
-.IP \(bu
-Merge site-dependent configuration files from
-.Pn /etc
-and
-.Pn /usr/lib
-into the new
-.Pn /etc
-directory.
-Note that many file formats and contents have changed; see section 3.4
-of this document.
-.IP \(bu
-Copy or merge files from
-.Pn /usr/adm ,
-.Pn /usr/spool ,
-.Pn /usr/preserve ,
-.Pn /usr/lib ,
-and other locations into
-.Pn /var .
-.IP \(bu
-Merge local macros, dictionaries, etc. into
-.Pn /usr/share .
-.IP \(bu
-Merge and update local software to reflect the system changes.
-.IP \(bu
-Take off the rest of the morning, you've earned it!
-.PP
-Section 3.2 lists the files to be saved as part of the conversion process.
-Section 3.3 describes the bootstrap process.
-Section 3.4 discusses the merger of the saved files back into the new system.
-Section 3.5 gives an overview of the major
-bug fixes and changes between \*(Ps and \*(4B.
-Section 3.6 provides general hints on possible problems to be
-aware of when converting from \*(Ps to \*(4B.
-.Sh 2 "Files to save"
-.PP
-The following list enumerates the standard set of files you will want to
-save and suggests directories in which site-specific files should be present.
-This list will likely be augmented with non-standard files you
-have added to your system.
-If you do not have enough space to create parallel
-filesystems, you should create a
-.Xr tar
-image of the following files before the new filesystems are created.
-The rest of this subsection describes where theses files
-have moved and how they have changed.
-.TS
-lfC c l.
-/.cshrc \(dg root csh startup script (moves to \f(CW/root/.cshrc\fP)
-/.login \(dg root csh login script (moves to \f(CW/root/.login\fP)
-/.profile \(dg root sh startup script (moves to \f(CW/root/.profile\fP)
-/.rhosts \(dg for trusted machines and users (moves to \f(CW/root/.rhosts\fP)
-/etc/disktab \(dd in case you changed disk partition sizes
-/etc/fstab * disk configuration data
-/etc/ftpusers \(dg for local additions
-/etc/gettytab \(dd getty database
-/etc/group * group data base
-/etc/hosts \(dg for local host information
-/etc/hosts.equiv \(dg for local host equivalence information
-/etc/hosts.lpd \(dg printer access file
-/etc/inetd.conf * Internet services configuration data
-/etc/named* \(dg named configuration files
-/etc/netstart \(dg network initialization
-/etc/networks \(dg for local network information
-/etc/passwd * user data base
-/etc/printcap * line printer database
-/etc/protocols \(dd in case you added any local protocols
-/etc/rc * for any local additions
-/etc/rc.local * site specific system startup commands
-/etc/remote \(dg auto-dialer configuration
-/etc/services \(dd for local additions
-/etc/shells \(dd list of valid shells
-/etc/syslog.conf * system logger configuration
-/etc/securettys * merged into ttys
-/etc/ttys * terminal line configuration data
-/etc/ttytype * merged into ttys
-/etc/termcap \(dd for any local entries that may have been added
-/lib \(dd for any locally developed language processors
-/usr/dict/* \(dd for local additions to words and papers
-/usr/include/* \(dd for local additions
-/usr/lib/aliases * mail forwarding data base (moves to \f(CW/etc/aliases\fP)
-/usr/lib/crontab * cron daemon data base (moves to \f(CW/etc/crontab\fP)
-/usr/lib/crontab.local * local cron daemon data base (moves to \f(CW/etc/crontab.local\fP)
-/usr/lib/lib*.a \(dg for local libraries
-/usr/lib/mail.rc \(dg system-wide mail(1) initialization (moves to \f(CW/etc/mail.rc\fP)
-/usr/lib/sendmail.cf * sendmail configuration (moves to \f(CW/etc/sendmail.cf\fP)
-/usr/lib/tmac/* \(dd for locally developed troff/nroff macros (moves to \f(CW/usr/share/tmac/*\fP)
-/usr/lib/uucp/* \(dg for local uucp configuration files
-/usr/man/manl * for manual pages for locally developed programs (moves to \f(CW/usr/local/man\fP)
-/usr/spool/* \(dg for current mail, news, uucp files, etc. (moves to \f(CW/var/spool\fP)
-/usr/src/local \(dg for source for locally developed programs
-/sys/conf/HOST \(dg configuration file for your machine (moves to \f(CW/sys/<arch>/conf\fP)
-/sys/conf/files.HOST \(dg list of special files in your kernel (moves to \f(CW/sys/<arch>/conf\fP)
-/*/quotas * filesystem quota files (moves to \f(CW/*/quotas.user\fP)
-.TE
-.DS
-\(dg\|Files that can be used from \*(Ps without change.
-\(dd\|Files that need local changes merged into \*(4B files.
-*\|Files that require special work to merge and are discussed in section 3.4.
-.DE
-.Sh 2 "Installing \*(4B"
-.PP
-The next step is to build a working \*(4B system.
-This can be done by following the steps in section 2 of
-this document for extracting the root and
-.Pn /usr
-filesystems from the distribution tape onto unused disk partitions.
-For the SPARC, the root filesystem dump on the tape could also be
-extracted directly.
-For the HP300 and DECstation, the raw disk image can be copied
-into an unused partition and this partition can then be dumped
-to create an image that can be restored.
-The exact procedure chosen will depend on the disk configuration
-and the number of suitable disk partitions that may be used.
-It is also desirable to run filesystem checks
-of all filesystems to be converted to \*(4B before shutting down.
-In any case, this is an excellent time to review your disk configuration
-for possible tuning of the layout.
-Section 2.5 and
-.Xr config (8)
-are required reading.
-.LP
-The filesystem in \*(4B has been reorganized in an effort to
-meet several goals:
-.IP 1)
-The root filesystem should be small.
-.IP 2)
-There should be a per-architecture centrally-shareable read-only
-.Pn /usr
-filesystem.
-.IP 3)
-Variable per-machine directories should be concentrated below
-a single mount point named
-.Pn /var .
-.IP 4)
-Site-wide machine independent shareable text files should be separated
-from architecture specific binary files and should be concentrated below
-a single mount point named
-.Pn /usr/share .
-.LP
-These goals are realized with the following general layouts.
-The reorganized root filesystem has the following directories:
-.TS
-lfC l.
-/etc (config files)
-/bin (user binaries needed when single-user)
-/sbin (root binaries needed when single-user)
-/local (locally added binaries used only by this machine)
-/tmp (mount point for memory based filesystem)
-/dev (local devices)
-/home (mount point for AMD)
-/var (mount point for per-machine variable directories)
-/usr (mount point for multiuser binaries and files)
-.TE
-.LP
-The reorganized
-.Pn /usr
-filesystem has the following directories:
-.TS
-lfC l.
-/usr/bin (user binaries)
-/usr/contrib (software contributed to \*(4B)
-/usr/games (binaries for games, score files in \f(CW/var\fP)
-/usr/include (standard include files)
-/usr/lib (lib*.a from old \f(CW/usr/lib\fP)
-/usr/libdata (databases from old \f(CW/usr/lib\fP)
-/usr/libexec (executables from old \f(CW/usr/lib\fP)
-/usr/local (locally added binaries used site-wide)
-/usr/old (deprecated binaries)
-/usr/sbin (root binaries)
-/usr/share (mount point for site-wide shared text)
-/usr/src (mount point for sources)
-.TE
-.LP
-The reorganized
-.Pn /usr/share
-filesystem has the following directories:
-.TS
-lfC l.
-/usr/share/calendar (various useful calendar files)
-/usr/share/dict (dictionaries)
-/usr/share/doc (\*(4B manual sources)
-/usr/share/games (games text files)
-/usr/share/groff_font (groff font information)
-/usr/share/man (typeset manual pages)
-/usr/share/misc (dumping ground for random text files)
-/usr/share/mk (templates for \*(4B makefiles)
-/usr/share/skel (template user home directory files)
-/usr/share/tmac (various groff macro packages)
-/usr/share/zoneinfo (information on time zones)
-.TE
-.LP
-The reorganized
-.Pn /var
-filesystem has the following directories:
-.TS
-lfC l.
-/var/account (accounting files, formerly \f(CW/usr/adm\fP)
-/var/at (\fIat\fP\|(1) spooling area)
-/var/backups (backups of system files)
-/var/crash (crash dumps)
-/var/db (system-wide databases, e.g. tags)
-/var/games (score files)
-/var/log (log files)
-/var/mail (users mail)
-/var/obj (hierarchy to build \f(CW/usr/src\fP)
-/var/preserve (preserve area for vi)
-/var/quotas (directory to store quota files)
-/var/run (directory to store *.pid files)
-/var/rwho (rwho databases)
-/var/spool/ftp (home directory for anonymous ftp)
-/var/spool/mqueue (sendmail spooling directory)
-/var/spool/news (news spooling area)
-/var/spool/output (printer spooling area)
-/var/spool/uucp (uucp spooling area)
-/var/tmp (disk-based temporary directory)
-/var/users (root of per-machine user home directories)
-.TE
-.PP
-The \*(4B bootstrap routines pass the identity of the boot device
-through to the kernel.
-The kernel then uses that device as its root filesystem.
-Thus, for example, if you boot from
-.Pn /dev/\*(Dk1a ,
-the kernel will use
-.Pn \*(Dk1a
-as its root filesystem. If
-.Pn /dev/\*(Dk1b
-is configured as a swap partition,
-it will be used as the initial swap area,
-otherwise the normal primary swap area (\c
-.Pn /dev/\*(Dk0b )
-will be used.
-The \*(4B bootstrap is backward compatible with \*(Ps,
-so you can replace your old bootstrap if you use it
-to boot your first \*(4B kernel.
-However, the \*(Ps bootstrap cannot access \*(4B filesystems,
-so if you plan to convert your filesystems to \*(4B,
-you must install a new bootstrap \fIbefore\fP doing the conversion.
-Note that SPARC users cannot build a \*(4B compatible version
-of the bootstrap, so must \fInot\fP convert their root filesystem
-to the new \*(4B format.
-.PP
-Once you have extracted the \*(4B system and booted from it,
-you will have to build a kernel customized for your configuration.
-If you have any local device drivers,
-they will have to be incorporated into the new kernel.
-See section 4.1.3 and ``Building 4.3BSD UNIX Systems with Config'' (SMM:2).
-.PP
-If converting from \*(Ps, your old filesystems should be converted.
-If you've modified the partition
-sizes from the original \*(Ps ones, and are not already using the
-\*(4B disk labels, you will have to modify the default disk partition
-tables in the kernel. Make the necessary table changes and boot
-your custom kernel \fBBEFORE\fP trying to access any of your old
-filesystems! After doing this, if necessary, the remaining filesystems
-may be converted in place by running the \*(4B version of
-.Xr fsck (8)
-on each filesystem and allowing it to make the necessary corrections.
-The new version of
-.Xr fsck
-is more strict about the size of directories than
-the version supplied with \*(Ps.
-Thus the first time that it is run on a \*(Ps filesystem,
-it will produce messages of the form:
-.DS
-\fBDIRECTORY ...: LENGTH\fP xx \fBNOT MULTIPLE OF 512 (ADJUSTED)\fP
-.DE
-Length ``xx'' will be the size of the directory;
-it will be expanded to the next multiple of 512 bytes.
-The new
-.Xr fsck
-will also set default \fIinterleave\fP and
-\fInpsect\fP (number of physical sectors per track) values on older
-filesystems, in which these fields were unused spares; this correction
-will produce messages of the form:
-.DS
-\fBIMPOSSIBLE INTERLEAVE=0 IN SUPERBLOCK (SET TO DEFAULT)\fP\**
-\fBIMPOSSIBLE NPSECT=0 IN SUPERBLOCK (SET TO DEFAULT)\fP
-.DE
-.FS
-The defaults are to set \fIinterleave\fP to 1 and
-\fInpsect\fP to \fInsect\fP.
-This is correct on most drives;
-it affects only performance (usually virtually unmeasurably).
-.FE
-Filesystems that have had their interleave and npsect values
-set will be diagnosed by the old
-.Xr fsck
-as having a bad superblock; the old
-.Xr fsck
-will run only if given an alternate superblock
-(\fIfsck \-b32\fP),
-in which case it will re-zero these fields.
-The \*(4B kernel will internally set these fields to their defaults
-if fsck has not done so; again, the \fI\-b32\fP option may be
-necessary for running the old
-.Xr fsck .
-.PP
-In addition, \*(4B removes several limits on filesystem sizes
-that were present in \*(Ps.
-The limited filesystems
-continue to work in \*(4B, but should be converted
-as soon as it is convenient
-by running
-.Xr fsck
-with the \fI\-c 2\fP option.
-The sequence \fIfsck \-p \-c 2\fP will update them all,
-fix the interleave and npsect fields,
-fix any incorrect directory lengths,
-expand maximum uid's and gid's to 32-bits,
-place symbolic links less than 60 bytes into their inode,
-and fill in directory type fields all at once.
-The new filesystem formats are incompatible with older systems.
-If you wish to continue using these filesystems with the older
-systems you should make only the compatible changes using
-\fIfsck \-c 1\fP.
-.Sh 2 "Merging your files from \*(Ps into \*(4B"
-.PP
-When your system is booting reliably and you have the \*(4B root and
-.Pn /usr
-filesystems fully installed you will be ready
-to continue with the next step in the conversion process,
-merging your old files into the new system.
-.PP
-If you saved the files on a
-.Xr tar
-tape, extract them into a scratch directory, say
-.Pn /usr/convert :
-.DS
-\fB#\fP \fImkdir /usr/convert\fP
-\fB#\fP \fIcd /usr/convert\fP
-\fB#\fP \fItar xp\fP
-.DE
-.PP
-The data files marked in the previous table with a dagger (\(dg)
-may be used without change from the previous system.
-Those data files marked with a double dagger (\(dd) have syntax
-changes or substantial enhancements.
-You should start with the \*(4B version and carefully
-integrate any local changes into the new file.
-Usually these local changes can be incorporated
-without conflict into the new file;
-some exceptions are noted below.
-The files marked with an asterisk (*) require
-particular attention and are discussed below.
-.PP
-As described in section 3.3,
-the most immediately obvious change in \*(4B is the reorganization
-of the system filesystems.
-Users of certain recent vendor releases have seen this general organization,
-although \*(4B takes the reorganization a bit further.
-The directories most affected are
-.Pn /etc ,
-that now contains only system configuration files;
-.Pn /var ,
-a new filesystem containing per-system spool and log files; and
-.Pn /usr/share,
-that contains most of the text files shareable across architectures
-such as documentation and macros.
-System administration programs formerly in
-.Pn /etc
-are now found in
-.Pn /sbin
-and
-.Pn /usr/sbin .
-Various programs and data files formerly in
-.Pn /usr/lib
-are now found in
-.Pn /usr/libexec
-and
-.Pn /usr/libdata ,
-respectively.
-Administrative files formerly in
-.Pn /usr/adm
-are in
-.Pn /var/account
-and, similarly, log files are now in
-.Pn /var/log .
-The directory
-.Pn /usr/ucb
-has been merged into
-.Pn /usr/bin ,
-and the sources for programs in
-.Pn /usr/bin
-are in
-.Pn /usr/src/usr.bin .
-Other source directories parallel the destination directories;
-.Pn /usr/src/etc
-has been greatly expanded, and
-.Pn /usr/src/share
-is new.
-The source for the manual pages, in general, are with the source
-code for the applications they document.
-Manual pages not closely corresponding to an application program
-are found in
-.Pn /usr/src/share/man .
-The locations of all man pages is listed in
-.Pn /usr/src/share/man/man0/man[1-8] .
-The manual page
-.Xr hier (7)
-has been updated and made more detailed;
-it is included in the printed documentation.
-You should review it to familiarize yourself with the new layout.
-.PP
-A new utility,
-.Xr mtree (8),
-is provided to build and check filesystem hierarchies
-with the proper contents, owners and permissions.
-Scripts are provided in
-.Pn /etc/mtree
-(and
-.Pn /usr/src/etc/mtree )
-for the root,
-.Pn /usr
-and
-.Pn /var
-filesystems.
-Once a filesystem has been made for
-.Pn /var ,
-.Xr mtree
-can be used to create a directory hierarchy there
-or you can simply use tar to extract the prototype from
-the second file of the distribution tape.
-.Sh 3 "Changes in the \f(CW/etc\fP directory"
-.PP
-The
-.Pn /etc
-directory now contains nearly all the host-specific configuration
-files.
-Note that some file formats have changed,
-and those configuration files containing pathnames are nearly all affected
-by the reorganization.
-See the examples provided in
-.Pn /etc
-(installed from
-.Pn /usr/src/etc )
-as a guide.
-The following table lists some of the local configuration files
-whose locations and/or contents have changed.
-.TS
-l l l
-lfC lfC l.
-\*(Ps and Earlier \*(4B Comments
-_ _ _
-/etc/fstab /etc/fstab new format; see below
-/etc/inetd.conf /etc/inetd.conf pathnames of executables changed
-/etc/printcap /etc/printcap pathnames changed
-/etc/syslog.conf /etc/syslog.conf pathnames of log files changed
-/etc/ttys /etc/ttys pathnames of executables changed
-/etc/passwd /etc/master.passwd new format; see below
-/usr/lib/sendmail.cf /etc/sendmail.cf changed pathnames
-/usr/lib/aliases /etc/aliases may contain changed pathnames
-/etc/*.pid /var/run/*.pid
-
-.T&
-l l l
-lfC lfC l.
-New in \*(Ps-Tahoe \*(4B Comments
-_ _ _
-/usr/games/dm.config /etc/dm.conf configuration for games (see \fIdm\fP\|(8))
-/etc/zoneinfo/localtime /etc/localtime timezone configuration
-/etc/zoneinfo /usr/share/zoneinfo timezone configuration
-.TE
-.ne 1.5i
-.TS
-l l l
-lfC lfC l.
- New in \*(4B Comments
-_ _ _
- /etc/aliases.db database version of the aliases file
- /etc/amd-home location database of home directories
- /etc/amd-vol location database of exported filesystems
- /etc/changelist \f(CW/etc/security\fP files to back up
- /etc/csh.cshrc system-wide csh(1) initialization file
- /etc/csh.login system-wide csh(1) login file
- /etc/csh.logout system-wide csh(1) logout file
- /etc/disklabels directory for saving disklabels
- /etc/exports NFS list of export permissions
- /etc/ftpwelcome message displayed for ftp users; see ftpd(8)
- /etc/kerberosIV Kerberos directory; see below
- /etc/man.conf lists directories searched by \fIman\fP\|(1)
- /etc/mtree directory for local mtree files; see mtree(8)
- /etc/netgroup NFS group list used in \f(CW/etc/exports\fP
- /etc/pwd.db non-secure hashed user data base file
- /etc/spwd.db secure hashed user data base file
- /etc/security daily system security checker
-.TE
-.PP
-System security changes require adding several new ``well-known'' groups to
-.Pn /etc/group .
-The groups that are needed by the system as distributed are:
-.TS
-l n l.
-name number purpose
-_
-wheel 0 users allowed superuser privilege
-daemon 1 processes that need less than wheel privilege
-kmem 2 read access to kernel memory
-sys 3 access to kernel sources
-tty 4 access to terminals
-operator 5 read access to raw disks
-bin 7 group for system binaries
-news 8 group for news
-wsrc 9 write access to sources
-games 13 access to games
-staff 20 system staff
-guest 31 system guests
-nobody 39 the least privileged group
-utmp 45 access to utmp files
-dialer 117 access to remote ports and dialers
-.TE
-Only users in the ``wheel'' group are permitted to
-.Xr su
-to ``root''.
-Most programs that manage directories in
-.Pn /var/spool
-now run set-group-id to ``daemon'' so that users cannot
-directly access the files in the spool directories.
-The special files that access kernel memory,
-.Pn /dev/kmem
-and
-.Pn /dev/mem ,
-are made readable only by group ``kmem''.
-Standard system programs that require this access are
-made set-group-id to that group.
-The group ``sys'' is intended to control access to kernel sources,
-and other sources belong to group ``wsrc.''
-Rather than make user terminals writable by all users,
-they are now placed in group ``tty'' and made only group writable.
-Programs that should legitimately have access to write on user terminals
-such as
-.Xr talkd
-and
-.Xr write
-now run set-group-id to ``tty''.
-The ``operator'' group controls access to disks.
-By default, disks are readable by group ``operator'',
-so that programs such as
-.Xr dump
-can access the filesystem information without being set-user-id to ``root''.
-The
-.Xr shutdown (8)
-program is executable only by group operator
-and is setuid to root so that members of group operator may shut down
-the system without root access.
-.PP
-The ownership and modes of some directories have changed.
-The
-.Xr at
-programs now run set-user-id ``root'' instead of ``daemon.''
-Also, the uucp directory no longer needs to be publicly writable,
-as
-.Xr tip
-reverts to privileged status to remove its lock files.
-After copying your version of
-.Pn /var/spool ,
-you should do:
-.DS
-\fB#\fP \fIchown \-R root /var/spool/at\fP
-\fB#\fP \fIchown \-R uucp:daemon /var/spool/uucp\fP
-\fB#\fP \fIchmod \-R o\-w /var/spool/uucp\fP
-.DE
-.PP
-The format of the cron table,
-.Pn /etc/crontab ,
-has been changed to specify the user-id that should be used to run a process.
-The userid ``nobody'' is frequently useful for non-privileged programs.
-Local changes are now put in a separate file,
-.Pn /etc/crontab.local .
-.PP
-Some of the commands previously in
-.Pn /etc/rc.local
-have been moved to
-.Pn /etc/rc ;
-several new functions are now handled by
-.Pn /etc/rc ,
-.Pn /etc/netstart
-and
-.Pn /etc/rc.local .
-You should look closely at the prototype version of these files
-and read the manual pages for the commands contained in it
-before trying to merge your local copy.
-Note in particular that
-.Xr ifconfig
-has had many changes,
-and that host names are now fully specified as domain-style names
-(e.g., vangogh.CS.Berkeley.EDU) for the benefit of the name server.
-.PP
-Some of the commands previously in
-.Pn /etc/daily
-have been moved to
-.Pn /etc/security ,
-and several new functions have been added to
-.Pn /etc/security
-to do nightly security checks on the system.
-The script
-.Pn /etc/daily
-runs
-.Pn /etc/security
-each night, and mails the output to the super-user.
-Some of the checks done by
-.Pn /etc/security
-are:
-.DS
-\(bu Syntax errors in the password and group files.
-\(bu Duplicate user and group names and id's.
-\(bu Dangerous search paths and umask values for the superuser.
-\(bu Dangerous values in various initialization files.
-\(bu Dangerous .rhosts files.
-\(bu Dangerous directory and file ownership or permissions.
-\(bu Globally exported filesystems.
-\(bu Dangerous owners or permissions for special devices.
-.DE
-In addition, it reports any changes to setuid and setgid files, special
-devices, or the files in
-.Pn /etc/changelist
-since the last run of
-.Pn /etc/security .
-Backup copies of the files are saved in
-.Pn /var/backups .
-Finally, the system binaries are checksummed and their permissions
-validated against the
-.Xr mtree (8)
-specifications in
-.Pn /etc/mtree .
-.PP
-The C-library and system binaries on the distribution tape
-are compiled with new versions of
-.Xr gethostbyname
-and
-.Xr gethostbyaddr
-that use the name server,
-.Xr named (8).
-If you have only a small network and are not connected
-to a large network, you can use the distributed library routines without
-any problems; they use a linear scan of the host table
-.Pn /etc/hosts
-if the name server is not running.
-If you are on the Internet or have a large local network,
-it is recommend that you set up
-and use the name server.
-For instructions on how to set up the necessary configuration files,
-refer to ``Name Server Operations Guide for BIND'' (SMM:10).
-Several programs rely on the host name returned by
-.Xr gethostname
-to determine the local domain name.
-.PP
-If you are using the name server, your
-.Xr sendmail
-configuration file will need some updates to accommodate it.
-See the ``Sendmail Installation and Operation Guide'' (SMM:8) and
-the sample
-.Xr sendmail
-configuration files in
-.Pn /usr/src/usr.sbin/sendmail/cf .
-The aliases file,
-.Pn /etc/aliases
-has also been changed to add certain well-known addresses.
-.Sh 3 "Shadow password files"
-.PP
-The password file format adds change and expiration fields
-and its location has changed to protect
-the encrypted passwords stored there.
-The actual password file is now stored in
-.Pn /etc/master.passwd .
-The hashed dbm password files do not contain encrypted passwords,
-but contain the file offset to the entry with the password in
-.Pn /etc/master.passwd
-(that is readable only by root).
-Thus, the
-.Fn getpwnam
-and
-.Fn getpwuid
-functions will no longer return an encrypted password string to non-root
-callers.
-An old-style passwd file is created in
-.Pn /etc/passwd
-by the
-.Xr vipw (8)
-and
-.Xr pwd_mkdb (8)
-programs.
-See also
-.Xr passwd (5).
-.PP
-Several new users have also been added to the group of ``well-known'' users in
-.Pn /etc/passwd .
-The current list is:
-.DS
-.TS
-l c.
-name number
-_
-root 0
-daemon 1
-operator 2
-bin 3
-games 7
-uucp 66
-nobody 32767
-.TE
-.DE
-The ``daemon'' user is used for daemon processes that
-do not need root privileges.
-The ``operator'' user-id is used as an account for dumpers
-so that they can log in without having the root password.
-By placing them in the ``operator'' group,
-they can get read access to the disks.
-The ``uucp'' login has existed long before \*(4B,
-and is noted here just to provide a common user-id.
-The password entry ``nobody'' has been added to specify
-the user with least privilege. The ``games'' user is a pseudo-user
-that controls access to game programs.
-.PP
-After installing your updated password file, you must run
-.Xr pwd_mkdb (8)
-to create the password database.
-Note that
-.Xr pwd_mkdb (8)
-is run whenever
-.Xr vipw (8)
-is run.
-.Sh 3 "The \f(CW/var\fP filesystem"
-.PP
-The spooling directories saved on tape may be restored in their
-eventual resting places without too much concern. Be sure to
-use the `\-p' option to
-.Xr tar (1)
-so that files are recreated with the same file modes.
-The following commands provide a guide for copying spool and log files from
-an existing system into a new
-.Pn /var
-filesystem.
-At least the following directories should already exist on
-.Pn /var :
-.Pn output ,
-.Pn log ,
-.Pn backups
-and
-.Pn db .
-.LP
-.DS
-.ft CW
-SRC=/oldroot/usr
-
-cd $SRC; tar cf - msgs preserve | (cd /var && tar xpf -)
-.DE
-.DS
-.ft CW
-# copy $SRC/spool to /var
-cd $SRC/spool
-tar cf - at mail rwho | (cd /var && tar xpf -)
-tar cf - ftp mqueue news secretmail uucp uucppublic | \e
- (cd /var/spool && tar xpf -)
-.DE
-.DS
-.ft CW
-# everything else in spool is probably a printer area
-mkdir .save
-mv at ftp mail mqueue rwho secretmail uucp uucppublic .save
-tar cf - * | (cd /var/spool/output && tar xpf -)
-mv .save/* .
-rmdir .save
-.DE
-.DS
-.ft CW
-cd /var/spool/mqueue
-mv syslog.7 /var/log/maillog.7
-mv syslog.6 /var/log/maillog.6
-mv syslog.5 /var/log/maillog.5
-mv syslog.4 /var/log/maillog.4
-mv syslog.3 /var/log/maillog.3
-mv syslog.2 /var/log/maillog.2
-mv syslog.1 /var/log/maillog.1
-mv syslog.0 /var/log/maillog.0
-mv syslog /var/log/maillog
-.DE
-.DS
-.ft CW
-# move $SRC/adm to /var
-cd $SRC/adm
-tar cf - . | (cd /var/account && tar xpf -)
-cd /var/account
-rm -f msgbuf
-mv messages messages.[0-9] ../log
-mv wtmp wtmp.[0-9] ../log
-mv lastlog ../log
-.DE
-.Sh 2 "Bug fixes and changes between \*(Ps and \*(4B"
-.PP
-The major new facilities available in the \*(4B release are
-a new virtual memory system,
-the addition of ISO/OSI networking support,
-a new virtual filesystem interface supporting filesystem stacking,
-a freely redistributable implementation of NFS,
-a log-structured filesystem,
-enhancement of the local filesystems to support
-files and filesystems that are up to 2^63 bytes in size,
-enhanced security and system management support,
-and the conversion to and addition of the IEEE Std1003.1 (``POSIX'')
-facilities and many of the IEEE Std1003.2 facilities.
-In addition, many new utilities and additions to the C
-library are present as well.
-The kernel sources have been reorganized to collect all machine-dependent
-files for each architecture under one directory,
-and most of the machine-independent code is now free of code
-conditional on specific machines.
-The user structure and process structure have been reorganized
-to eliminate the statically-mapped user structure and to make most
-of the process resources shareable by multiple processes.
-The system and include files have been converted to be compatible
-with ANSI C, including function prototypes for most of the exported
-functions.
-There are numerous other changes throughout the system.
-.Sh 3 "Changes to the kernel"
-.PP
-This release includes several important structural kernel changes.
-The kernel uses a new internal system call convention;
-the use of global (``u-dot'') variables for parameters and error returns
-has been eliminated,
-and interrupted system calls no longer abort using non-local goto's (longjmp's).
-A new sleep interface separates signal handling from scheduling priority,
-returning characteristic errors to abort or restart the current system call.
-This sleep call also passes a string describing the process state,
-that is used by the ps(1) program.
-The old sleep interface can be used only for non-interruptible sleeps.
-The sleep interface (\fItsleep\fP) can be used at any priority,
-but is only interruptible if the PCATCH flag is set.
-When interrupted, \fItsleep\fP returns EINTR or ERESTART.
-.PP
-Many data structures that were previously statically allocated
-are now allocated dynamically.
-These structures include mount entries, file entries,
-user open file descriptors, the process entries, the vnode table,
-the name cache, and the quota structures.
-.PP
-To protect against indiscriminate reading or writing of kernel
-memory, all writing and most reading of kernel data structures
-must be done using a new ``sysctl'' interface.
-The information to be accessed is described through an extensible
-``Management Information Base'' (MIB) style name,
-described as a dotted set of components.
-A new utility,
-.Xr sysctl (8),
-retrieves kernel state and allows processes with appropriate
-privilege to set kernel state.
-.Sh 3 "Security"
-.PP
-The kernel runs with four different levels of security.
-Any superuser process can raise the security level, but only
-.Fn init (8)
-can lower it.
-Security levels are defined as follows:
-.IP \-1
-Permanently insecure mode \- always run system in level 0 mode.
-.IP " 0"
-Insecure mode \- immutable and append-only flags may be turned off.
-All devices may be read or written subject to their permissions.
-.IP " 1"
-Secure mode \- immutable and append-only flags may not be cleared;
-disks for mounted filesystems,
-.Pn /dev/mem ,
-and
-.Pn /dev/kmem
-are read-only.
-.IP " 2"
-Highly secure mode \- same as secure mode, plus disks are always
-read-only whether mounted or not.
-This level precludes tampering with filesystems by unmounting them,
-but also inhibits running
-.Xr newfs (8)
-while the system is multi-user.
-See
-.Xr chflags (1)
-and the \-\fBo\fP option to
-.Xr ls (1)
-for information on setting and displaying the immutable and append-only
-flags.
-.PP
-Normally, the system runs in level 0 mode while single user
-and in level 1 mode while multiuser.
-If the level 2 mode is desired while running multiuser,
-it can be set in the startup script
-.Pn /etc/rc
-using
-.Xr sysctl (1).
-If it is desired to run the system in level 0 mode while multiuser,
-the administrator must build a kernel with the variable
-.Li securelevel
-in the kernel source file
-.Pn /sys/kern/kern_sysctl.c
-initialized to \-1.
-.Sh 4 "Virtual memory changes"
-.PP
-The new virtual memory implementation is derived from the Mach
-operating system developed at Carnegie-Mellon,
-and was ported to the BSD kernel at the University of Utah.
-It is based on the 2.0 release of Mach
-(with some bug fixes from the 2.5 and 3.0 releases)
-and retains many of its essential features such as
-the separation of the machine dependent and independent layers
-(the ``pmap'' interface),
-efficient memory utilization using copy-on-write
-and other lazy-evaluation techniques,
-and support for large, sparse address spaces.
-It does not include the ``external pager'' interface instead using
-a primitive internal pager interface.
-The Mach virtual memory system call interface has been replaced with the
-``mmap''-based interface described in the ``Berkeley Software
-Architecture Manual'' (see UNIX Programmer's Manual,
-Supplementary Documents, PSD:5).
-The interface is similar to the interfaces shipped
-by several commercial vendors such as Sun, USL, and Convex Computer Corp.
-The integration of the new virtual memory is functionally complete,
-but still has serious performance problems under heavy memory load.
-The internal kernel interfaces have not yet been completed
-and the memory pool and buffer cache have not been merged.
-Some additional caveats:
-.IP \(bu
-Since the code is based on the 2.0 release of Mach,
-bugs and misfeatures of the BSD version should not be considered
-short-comings of the current Mach virtual memory system.
-.IP \(bu
-Because of the disjoint virtual memory (page) and IO (buffer) caches,
-it is possible to see inconsistencies if using both the mmap and
-read/write interfaces on the same file simultaneously.
-.IP \(bu
-Swap space is allocated on-demand rather than up front and no
-allocation checks are performed so it is possible to over-commit
-memory and eventually deadlock.
-.IP \(bu
-The semantics of the
-.Xr vfork (2)
-system call are slightly different.
-The synchronization between parent and child is preserved,
-but the memory sharing aspect is not.
-In practice this has been enough for backward compatibility,
-but newer code should just use
-.Xr fork (2).
-.Sh 4 "Networking additions and changes"
-.PP
-The ISO/OSI Networking consists of a kernel implementation of
-transport class 4 (TP-4),
-connectionless networking protocol (CLNP),
-and 802.3-based link-level support (hardware-compatible with Ethernet\**).
-.FS
-Ethernet is a trademark of the Xerox Corporation.
-.FE
-We also include support for ISO Connection-Oriented Network Service,
-X.25, TP-0.
-The session and presentation layers are provided outside
-the kernel using the ISO Development Environment by Marshall Rose,
-that is available via anonymous FTP
-(but is not included on the distribution tape).
-Included in this development environment are file
-transfer and management (FTAM), virtual terminals (VT),
-a directory services implementation (X.500),
-and miscellaneous other utilities.
-.PP
-Kernel support for the ISO OSI protocols is enabled with the ISO option
-in the kernel configuration file.
-The
-.Xr iso (4)
-manual page describes the protocols and addressing;
-see also
-.Xr clnp (4),
-.Xr tp (4)
-and
-.Xr cltp (4).
-The OSI equivalent to ARP is ESIS (End System to Intermediate System Routing
-Protocol); running this protocol is mandatory, however one can manually add
-translations for machines that do not participate by use of the
-.Xr route (8)
-command.
-Additional information is provided in the manual page describing
-.Xr esis (4).
-.PP
-The command
-.Xr route (8)
-has a new syntax and several new capabilities:
-it can install routes with a specified destination and mask,
-and can change route characteristics such as hop count, packet size
-and window size.
-.PP
-Several important enhancements have been added to the TCP/IP
-protocols including TCP header prediction and
-serial line IP (SLIP) with header compression.
-The routing implementation has been completely rewritten
-to use a hierarchical routing tree with a mask per route
-to support the arbitrary levels of routing found in the ISO protocols.
-The routing table also stores and caches route characteristics
-to speed the adaptation of the throughput and congestion avoidance
-algorithms.
-.PP
-The format of the
-.I sockaddr
-structure (the structure used to describe a generic network address with an
-address family and family-specific data)
-has changed from previous releases,
-as have the address family-specific versions of this structure.
-The
-.I sa_family
-family field has been split into a length,
-.Pn sa_len ,
-and a family,
-.Pn sa_family .
-System calls that pass a
-.I sockaddr
-structure into the kernel (e.g.
-.Fn sendto
-and
-.Fn connect )
-have a separate parameter that specifies the
-.I sockaddr
-length, and thus it is not necessary to fill in the
-.I sa_len
-field for those system calls.
-System calls that pass a
-.I sockaddr
-structure back from the kernel (e.g.
-.Fn recvfrom
-and
-.Fn accept )
-receive a completely filled-in
-.I sockaddr
-structure, thus the length field is valid.
-Because this would not work for old binaries,
-the new library uses a different system call number.
-Thus, most networking programs compiled under \*(4B are incompatible
-with older systems.
-.PP
-Although this change is mostly source and binary compatible
-with old programs, there are three exceptions.
-Programs with statically initialized
-.I sockaddr
-structures
-(usually the Internet form, a
-.I sockaddr_in )
-are not compatible.
-Generally, such programs should be changed to fill in the structure
-at run time, as C allows no way to initialize a structure without
-assuming the order and number of fields.
-Also, programs with use structures to describe a network packet format
-that contain embedded
-.I sockaddr
-structures also require change; a definition of an
-.I osockaddr
-structure is provided for this purpose.
-Finally, programs that use the
-.Sm SIOCGIFCONF
-ioctl to get a complete list of interface addresses
-need to check the
-.I sa_len
-field when iterating through the array of addresses returned,
-as not all the structures returned have the same length
-(this variance in length is nearly guaranteed by the presence of link-layer
-address structures).
-.Sh 4 "Additions and changes to filesystems"
-.PP
-The \*(4B distribution contains most of the interfaces
-specified in the IEEE Std1003.1 system interface standard.
-Filesystem additions include IEEE Std1003.1 FIFOs,
-byte-range file locking, and saved user and group identifiers.
-.PP
-A new virtual filesystem interface has been added to the
-kernel to support multiple filesystems.
-In comparison with other interfaces,
-the Berkeley interface has been structured for more efficient support
-of filesystems that maintain state (such as the local filesystem).
-The interface has been extended with support for stackable
-filesystems done at UCLA.
-These extensions allow for filesystems to be layered on top of each
-other and allow new vnode operations to be added without requiring
-changes to existing filesystem implementations.
-For example,
-the umap filesystem (see
-.Xr mount_umap (8))
-is used to mount a sub-tree of an existing filesystem
-that uses a different set of uids and gids than the local system.
-Such a filesystem could be mounted from a remote site via NFS or it
-could be a filesystem on removable media brought from some foreign
-location that uses a different password file.
-.PP
-Other new filesystems that may be stacked include the loopback filesystem
-.Xr mount_lofs (8),
-the kernel filesystem
-.Xr mount_kernfs (8),
-and the portal filesystem
-.Xr mount_portal (8).
-.PP
-The buffer cache in the kernel is now organized as a file block cache
-rather than a device block cache.
-As a consequence, cached blocks from a file
-and from the corresponding block device would no longer be kept consistent.
-The block device thus has little remaining value.
-Three changes have been made for these reasons:
-.IP 1)
-block devices may not be opened while they are mounted,
-and may not be mounted while open, so that the two versions of cached
-file blocks cannot be created,
-.IP 2)
-filesystem checks of the root now use the raw device
-to access the root filesystem, and
-.IP 3)
-the root filesystem is initially mounted read-only
-so that nothing can be written back to disk during or after change to
-the raw filesystem by
-.Xr fsck .
-.LP
-The root filesystem may be made writable while in single-user mode
-with the command:
-.DS
-.ft CW
-mount \-uw /
-.DE
-The mount command has an option to update the flags on a mounted filesystem,
-including the ability to upgrade a filesystem from read-only to read-write
-or downgrade it from read-write to read-only.
-.PP
-In addition to the local ``fast filesystem'',
-we have added an implementation of the network filesystem (NFS)
-that fully interoperates with the NFS shipped by Sun and its licensees.
-Because our NFS implementation was implemented
-by Rick Macklem of the University of Guelph
-using only the publicly available NFS specification,
-it does not require a license from Sun to use in source or binary form.
-By default it runs over UDP to be compatible with Sun's implementation.
-However, it can be configured on a per-mount basis to run over TCP.
-Using TCP allows it to be used quickly and efficiently through
-gateways and over long-haul networks.
-Using an extended protocol, it supports Leases to allow a limited
-callback mechanism that greatly reduces the network traffic necessary
-to maintain cache consistency between the server and its clients.
-Its use will be familiar to users of other implementations of NFS.
-See the manual pages
-.Xr mount (8),
-.Xr mountd (8),
-.Xr fstab (5),
-.Xr exports (5),
-.Xr netgroup (5),
-.Xr nfsd (8),
-.Xr nfsiod (8),
-and
-.Xr nfssvc (8).
-and the document ``The 4.4BSD NFS Implementation'' (SMM:6)
-for further information.
-The format of
-.Pn /etc/fstab
-has changed from previous \*(Bs releases
-to a blank-separated format to allow colons in pathnames.
-.PP
-A new local filesystem, the log-structured filesystem (LFS),
-has been added to the system.
-It provides near disk-speed output and fast crash recovery.
-This work is based, in part, on the LFS filesystem created
-for the Sprite operating system at Berkeley.
-While the kernel implementation is almost complete,
-only some of the utilities to support the
-filesystem have been written,
-so we do not recommend it for production use.
-See
-.Xr newlfs (8),
-.Xr mount_lfs (8)
-and
-.Xr lfs_cleanerd (8)
-for more information.
-For a in-depth description of the implementation and performance
-characteristics of log-structured filesystems in general,
-and this one in particular, see Dr. Margo Seltzer's doctoral thesis,
-available from the University of California Computer Science Department.
-.PP
-We have also added a memory-based filesystem that runs in
-pageable memory, allowing large temporary filesystems without
-requiring dedicated physical memory.
-.PP
-The local ``fast filesystem'' has been enhanced to do
-clustering that allows large pieces of files to be
-allocated contiguously resulting in near doubling
-of filesystem throughput.
-The filesystem interface has been extended to allow
-files and filesystems to grow to 2^63 bytes in size.
-The quota system has been rewritten to support both
-user and group quotas (simultaneously if desired).
-Quota expiration is based on time rather than
-the previous metric of number of logins over quota.
-This change makes quotas more useful on fileservers
-onto which users seldom login.
-.PP
-The system security has been greatly enhanced by the
-addition of additional file flags that permit a file to be
-marked as immutable or append only.
-Once set, these flags can only be cleared by the super-user
-when the system is running in insecure mode (normally, single-user).
-In addition to the immutable and append-only flags,
-the filesystem supports a new user-settable flag ``nodump''.
-(File flags are set using the
-.Xr chflags (1)
-utility.)
-When set on a file,
-.Xr dump (8)
-will omit the file from incremental backups
-but retain them on full backups.
-See the ``-h'' flag to
-.Xr dump (8)
-for details on how to change this default.
-The ``nodump'' flag is usually set on core dumps,
-system crash dumps, and object files generated by the compiler.
-Note that the flag is not preserved when files are copied
-so that installing an object file will cause it to be preserved.
-.PP
-The filesystem format used in \*(4B has several additions.
-Directory entries have an additional field,
-.Pn d_type ,
-that identifies the type of the entry
-(normally found in the
-.Pn st_mode
-field of the
-.Pn stat
-structure).
-This field is particularly useful for identifying
-directories without the need to use
-.Xr stat (2).
-.PP
-Short (less than sixty byte) symbolic links are now stored
-in the inode itself rather than in a separate data block.
-This saves disk space and makes access of symbolic links faster.
-Short symbolic links are not given a special type,
-so a user-level application is unaware of their special treatment.
-Unlike pre-\*(4B systems, symbolic links do
-not have an owner, group, access mode, times, etc.
-Instead, these attributes are taken from the directory that contains the link.
-The only attributes returned from an
-.Xr lstat (2)
-that refer to the symbolic link itself are the file type (S_IFLNK),
-size, blocks, and link count (always 1).
-.PP
-An implementation of an auto-mounter daemon,
-.Xr amd ,
-was contributed by Jan-Simon Pendry of the
-Imperial College of Science, Technology & Medicine.
-See the document ``AMD \- The 4.4BSD Automounter'' (SMM:13)
-for further information.
-.PP
-The directory
-.Pn /dev/fd
-contains special files
-.Pn 0
-through
-.Pn 63
-that, when opened, duplicate the corresponding file descriptor.
-The names
-.Pn /dev/stdin ,
-.Pn /dev/stdout
-and
-.Pn /dev/stderr
-refer to file descriptors 0, 1 and 2.
-See
-.Xr fd (4)
-and
-.Xr mount_fdesc (8)
-for more information.
-.Sh 4 "POSIX terminal driver changes"
-.PP
-The \*(4B system uses the IEEE P1003.1 (POSIX.1) terminal interface
-rather than the previous \*(Bs terminal interface.
-The terminal driver is similar to the System V terminal driver
-with the addition of the necessary extensions to get the
-functionality previously available in the \*(Ps terminal driver.
-Both the old
-.Xr ioctl
-calls and old options to
-.Xr stty (1)
-are emulated.
-This emulation is expected to be unavailable in many vendors releases,
-so conversion to the new interface is encouraged.
-.PP
-\*(4B also adds the IEEE Std1003.1 job control interface,
-that is similar to the \*(Ps job control interface,
-but adds a security model that was missing in the
-\*(Ps job control implementation.
-A new system call,
-.Fn setsid ,
-creates a job-control session consisting of a single process
-group with one member, the caller, that becomes a session leader.
-Only a session leader may acquire a controlling terminal.
-This is done explicitly via a
-.Sm TIOCSCTTY
-.Fn ioctl
-call, not implicitly by an
-.Fn open
-call.
-The call fails if the terminal is in use.
-Programs that allocate controlling terminals (or pseudo-terminals)
-require change to work in this environment.
-The versions of
-.Xr xterm
-provided in the X11R5 release includes the necessary changes.
-New library routines are available for allocating and initializing
-pseudo-terminals and other terminals as controlling terminal; see
-.Pn /usr/src/lib/libutil/pty.c
-and
-.Pn /usr/src/lib/libutil/login_tty.c .
-.PP
-The POSIX job control model formalizes the previous conventions
-used in setting up a process group.
-Unfortunately, this requires that changes be made in a defined order
-and with some synchronization that were not necessary in the past.
-Older job control shells (csh, ksh) will generally not operate correctly
-with the new system.
-.PP
-Most of the other kernel interfaces have been changed to correspond
-with the POSIX.1 interface, although that work is not complete.
-See the relevant manual pages and the IEEE POSIX standard.
-.Sh 4 "Native operating system compatibility"
-.PP
-Both the HP300 and SPARC ports feature the ability to run binaries
-built for the native operating system (HP-UX or SunOS) by emulating
-their system calls.
-Building an HP300 kernel with the HPUXCOMPAT and COMPAT_OHPUX options
-or a SPARC kernel with the COMPAT_SUNOS option will enable this feature
-(on by default in the generic kernel provided in the root filesystem image).
-Though this native operating system compatibility was provided by the
-developers as needed for their purposes and is by no means complete,
-it is complete enough to run several non-trivial applications including
-those that require HP-UX or SunOS shared libraries.
-For example, the vendor supplied X11 server and windowing environment
-can be used on both the HP300 and SPARC.
-.PP
-It is important to remember that merely copying over a native binary
-and executing it (or executing it directly across NFS) does not imply
-that it will run.
-All but the most trivial of applications are likely to require access
-to auxiliary files that do not exist under \*(4B (e.g.
-.Pn /etc/ld.so.cache )
-or have a slightly different format (e.g.
-.Pn /etc/passwd ).
-However, by using system call tracing and
-through creative use of symlinks,
-many problems can be tracked down and corrected.
-.PP
-The DECstation port also has code for ULTRIX emulation
-(kernel option ULTRIXCOMPAT, not compiled into the generic kernel)
-but it was used primarily for initially bootstrapping the port and
-has not been used since.
-Hence, some work may be required to make it generally useful.
-.Sh 3 "Changes to the utilities"
-.PP
-We have been tracking the IEEE Std1003.2 shell and utility work
-and have included prototypes of many of the proposed utilities
-based on draft 12 of the POSIX.2 Shell and Utilities document.
-Because most of the traditional utilities have been replaced
-with implementations conformant to the POSIX standards,
-you should realize that the utility software may not be as stable,
-reliable or well documented as in traditional Berkeley releases.
-In particular, almost the entire manual suite has been rewritten to
-reflect the POSIX defined interfaces, and in some instances
-it does not correctly reflect the current state of the software.
-It is also worth noting that, in rewriting this software, we have generally
-been rewarded with significant performance improvements.
-Most of the libraries and header files have been converted
-to be compliant with ANSI C.
-The shipped compiler (gcc) is a superset of ANSI C,
-but supports traditional C as a command-line option.
-The system libraries and utilities all compile
-with either ANSI or traditional C.
-.Sh 4 "Make and Makefiles"
-.PP
-This release uses a completely new version of the
-.Xr make
-program derived from the
-.Xr pmake
-program developed by the Sprite project at Berkeley.
-It supports existing makefiles, although certain incorrect makefiles
-may fail.
-The makefiles for the \*(4B sources make extensive use of the new
-facilities, especially conditionals and file inclusion, and are thus
-completely incompatible with older versions of
-.Xr make
-(but nearly all the makefiles are now trivial!).
-The standard include files for
-.Xr make
-are in
-.Pn /usr/share/mk .
-There is a
-.Pn bsd.README
-file in
-.Pn /usr/src/share/mk .
-.PP
-Another global change supported by the new
-.Xr make
-is designed to allow multiple architectures to share a copy of the sources.
-If a subdirectory named
-.Pn obj
-is present in the current directory,
-.Xr make
-descends into that directory and creates all object and other files there.
-We use this by building a directory hierarchy in
-.Pn /var/obj
-that parallels
-.Pn /usr/src .
-We then create the
-.Pn obj
-subdirectories in
-.Pn /usr/src
-as symbolic links to the corresponding directories in
-.Pn /var/obj .
-(This step is automated.
-The command ``make obj'' in
-.Pn /usr/src
-builds both the local symlink and the shadow directory,
-using
-.Pn /usr/obj ,
-that may be a symbolic link, as the root of the shadow tree.
-The use of
-.Pn /usr/obj
-is for historic reasons only, and the system make configuration files in
-.Pn /usr/share/mk
-can trivially be modified to use
-.Pn /var/obj
-instead.)
-We have one
-.Pn /var/obj
-hierarchy on the local system, and another on each
-system that shares the source filesystem.
-All the sources in
-.Pn /usr/src
-except for
-.Pn /usr/src/contrib
-and portions of
-.Pn /usr/src/old
-have been converted to use the new make and
-.Pn obj
-subdirectories;
-this change allows compilation for multiple
-architectures from the same source tree
-(that may be mounted read-only).
-.Sh 4 "Kerberos"
-.PP
-The Kerberos authentication server from MIT (version 4)
-is included in this release.
-See
-.Xr kerberos (1)
-for a general, if MIT-specific, introduction.
-If it is configured,
-.Xr login (1),
-.Xr passwd (1),
-.Xr rlogin (1)
-and
-.Xr rsh (1)
-will all begin to use it automatically.
-The file
-.Pn /etc/kerberosIV/README
-describes the configuration.
-Each system needs the file
-.Pn /etc/kerberosIV/krb.conf
-to set its realm and local servers,
-and a private key stored in
-.Pn /etc/kerberosIV/srvtab
-(see
-.Xr ext_srvtab (8)).
-The Kerberos server should be set up on a single, physically secure,
-server machine.
-Users and hosts may be added to the server database manually with
-.Xr kdb_edit (8),
-or users on authorized hosts can add themselves and a Kerberos
-password after verification of their ``local'' (passwd-file) password
-using the
-.Xr register (1)
-program.
-.PP
-Note that by default the password-changing program
-.Xr passwd (1)
-changes the Kerberos password, that must exist.
-The
-.Li \-l
-option to
-.Xr passwd (1)
-changes the ``local'' password if one exists.
-.PP
-Note that Version 5 of Kerberos will be released soon;
-Version 4 should probably be replaced at that time.
-.Sh 4 "Timezone support"
-.PP
-The timezone conversion code in the C library uses data files installed in
-.Pn /usr/share/zoneinfo
-to convert from ``GMT'' to various timezones. The data file for the default
-timezone for the system should be copied to
-.Pn /etc/localtime .
-Other timezones can be selected by setting the TZ environment variable.
-.PP
-The data files initially installed in
-.Pn /usr/share/zoneinfo
-include corrections for leap seconds since the beginning of 1970.
-Thus, they assume that the
-kernel will increment the time at a constant rate during a leap second;
-that is, time just keeps on ticking. The conversion routines will then
-name a leap second 23:59:60. For purists, this effectively means that
-the kernel maintains TAI (International Atomic Time) rather than UTC
-(Coordinated Universal Time, aka GMT).
-.PP
-For systems that run current NTP (Network Time Protocol) implementations
-or that wish to conform to the letter of the POSIX.1 law, it is possible
-to rebuild the timezone data files so that leap seconds are not counted.
-(NTP causes the time to jump over a leap second, and POSIX effectively
-requires the clock to be reset by hand when a leap second occurs.
-In this mode, the kernel effectively runs UTC rather than TAI.)
-.PP
-The data files without leap second information
-are constructed from the source directory,
-.Pn /usr/src/share/zoneinfo .
-Change the variable REDO in Makefile
-from ``right'' to ``posix'', and then do
-.DS
-make obj (if necessary)
-make
-make install
-.DE
-.PP
-You will then need to copy the correct default zone file to
-.Pn /etc/localtime ,
-as the old one would still have used leap seconds, and because the Makefile
-installs a default
-.Pn /etc/localtime
-each time ``make install'' is done.
-.PP
-It is possible to install both sets of timezone data files. This results
-in subdirectories
-.Pn /usr/share/zoneinfo/right
-and
-.Pn /usr/share/zoneinfo/posix .
-Each contain a complete set of zone files.
-See
-.Pn /usr/src/share/zoneinfo/Makefile
-for details.
-.Sh 4 "Additions and changes to the libraries"
-.PP
-Notable additions to the libraries include functions to traverse a
-filesystem hierarchy, database interfaces to btree and hashing functions,
-a new, faster implementation of stdio and a radix and merge sort
-functions.
-.PP
-The
-.Xr fts (3)
-functions will do either physical or logical traversal of
-a file hierarchy as well as handle essentially infinite depth
-filesystems and filesystems with cycles.
-All the utilities in \*(4B which traverse file hierarchies
-have been converted to use
-.Xr fts (3).
-The conversion has always resulted in a significant performance
-gain, often of four or five to one in system time.
-.PP
-The
-.Xr dbopen (3)
-functions are intended to be a family of database access methods.
-Currently, they consist of
-.Xr hash (3),
-an extensible, dynamic hashing scheme,
-.Xr btree (3),
-a sorted, balanced tree structure (B+tree's), and
-.Xr recno (3),
-a flat-file interface for fixed or variable length records
-referenced by logical record number.
-Each of the access methods stores associated key/data pairs and
-uses the same record oriented interface for access.
-.PP
-The
-.Xr qsort (3)
-function has been rewritten for additional performance.
-In addition, three new types of sorting functions,
-.Xr heapsort (3),
-.Xr mergesort (3)
-and
-.Xr radixsort (3)
-have been added to the system.
-The
-.Xr mergesort
-function is optimized for data with pre-existing order,
-in which case it usually significantly outperforms
-.Xr qsort .
-The
-.Xr radixsort (3)
-functions are variants of most-significant-byte radix sorting.
-They take time linear to the number of bytes to be
-sorted, usually significantly outperforming
-.Xr qsort
-on data that can be sorted in this fashion.
-An implementation of the POSIX 1003.2 standard
-.Xr sort (1),
-based on
-.Xr radixsort ,
-is included in
-.Pn /usr/src/contrib/sort .
-.PP
-Some additional comments about the \*(4B C library:
-.IP \(bu
-The floating point support in the C library has been replaced
-and is now accurate.
-.IP \(bu
-The C functions specified by both ANSI C, POSIX 1003.1 and
-1003.2 are now part of the C library.
-This includes support for file name matching, shell globbing
-and both basic and extended regular expressions.
-.IP \(bu
-ANSI C multibyte and wide character support has been integrated.
-The rune functionality from the Bell Labs' Plan 9 system is provided
-as well.
-.IP \(bu
-The
-.Xr termcap (3)
-functions have been generalized and replaced with a general
-purpose interface named
-.Xr getcap (3).
-.IP \(bu
-The
-.Xr stdio (3)
-routines have been replaced, and are usually much faster.
-In addition, the
-.Xr funopen (3)
-interface permits applications to provide their own I/O stream
-function support.
-.PP
-The
-.Xr curses (3)
-library has been largely rewritten.
-Important additional features include support for scrolling and
-.Xr termios (3).
-.PP
-An application front-end editing library, named libedit, has been
-added to the system.
-.PP
-A superset implementation of the SunOS kernel memory interface library,
-libkvm, has been integrated into the system.
-.PP
-.Sh 4 "Additions and changes to other utilities"
-.PP
-There are many new utilities, offering many new capabilities,
-in \*(4B.
-Skimming through the section 1 and section 8 manual pages is sure
-to be useful.
-The additions to the utility suite include greatly enhanced versions of
-programs that display system status information, implementations of
-various traditional tools described in the IEEE Std1003.2 standard,
-new tools not previous available on Berkeley UNIX systems,
-and many others.
-Also, with only a very few exceptions, all the utilities from
-\*(Ps that included proprietary source code have been replaced,
-and their \*(4B counterparts are freely redistributable.
-Normally, this replacement resulted in significant performance
-improvements and the increase of the limits imposed on data by
-the utility as well.
-.PP
-A summary of specific additions and changes are as follows:
-.TS
-lfC l.
-amd An auto-mounter implementation.
-ar Replacement of the historic archive format with a new one.
-awk Replaced by gawk; see /usr/src/old/awk for the historic version.
-bdes Utility implementing DES modes of operation described in FIPS PUB 81.
-calendar Addition of an interface for system calendars.
-cap_mkdb Utility for building hashed versions of termcap style databases.
-cc Replacement of pcc with gcc suite.
-chflags A utility for setting the per-file user and system flags.
-chfn An editor based replacement for changing user information.
-chpass An editor based replacement for changing user information.
-chsh An editor based replacement for changing user information.
-cksum The POSIX 1003.2 checksum utility; compatible with sum.
-column A columnar text formatting utility.
-cp POSIX 1003.2 compatible, able to copy special files.
-csh Freely redistributable and 8-bit clean.
-date User specified formats added.
-dd New EBCDIC conversion tables, major performance improvements.
-dev_mkdb Hashed interface to devices.
-dm Dungeon master.
-find Several new options and primaries, major performance improvements.
-fstat Utility displaying information on files open on the system.
-ftpd Connection logging added.
-hexdump A binary dump utility, superseding od.
-id The POSIX 1003.2 user identification utility.
-inetd Tcpmux added.
-jot A text formatting utility.
-kdump A system-call tracing facility.
-ktrace A system-call tracing facility.
-kvm_mkdb Hashed interface to the kernel name list.
-lam A text formatting utility.
-lex A new, freely redistributable, significantly faster version.
-locate A database of the system files, by name, constructed weekly.
-logname The POSIX 1003.2 user identification utility.
-mail.local New local mail delivery agent, replacing mail.
-make Replaced with a new, more powerful make, supporting include files.
-man Added support for man page location configuration.
-mkdep A new utility for generating make dependency lists.
-mkfifo The POSIX 1003.2 FIFO creation utility.
-mtree A new utility for mapping file hierarchies to a file.
-nfsstat An NFS statistics utility.
-nvi A freely redistributable replacement for the ex/vi editors.
-pax The POSIX 1003.2 replacement for cpio and tar.
-printf The POSIX 1003.2 replacement for echo.
-roff Replaced by groff; see /usr/src/old/roff for the historic versions.
-rs New utility for text formatting.
-shar An archive building utility.
-sysctl MIB-style interface to system state.
-tcopy Fast tape-to-tape copying and verification.
-touch Time and file reference specifications.
-tput The POSIX 1003.2 terminal display utility.
-tr Addition of character classes.
-uname The POSIX 1003.2 system identification utility.
-vis A filter for converting and displaying non-printable characters.
-xargs The POSIX 1003.2 argument list constructor utility.
-yacc A new, freely redistributable, significantly faster version.
-.TE
-.PP
-The new versions of
-.Xr lex (1)
-(``flex'') and
-.Xr yacc (1)
-(``zoo'') should be installed early on if attempting to
-cross-compile \*(4B on another system.
-Note that the new
-.Xr lex
-program is not completely backward compatible with historic versions of
-.Xr lex ,
-although it is believed that all documented features are supported.
-.PP
-The
-.Xr find
-utility has two new options that are important to be aware of if you
-intend to use NFS.
-The ``fstype'' and ``prune'' options can be used together to prevent
-find from crossing NFS mount points.
-See
-.Pn /etc/daily
-for an example of their use.
-.Sh 2 "Hints on converting from \*(Ps to \*(4B"
-.PP
-This section summarizes changes between
-\*(Ps and \*(4B that are likely to
-cause difficulty in doing the conversion.
-It does not include changes in the network;
-see section 5 for information on setting up the network.
-.PP
-Since the stat st_size field is now 64-bits instead of 32,
-doing something like:
-.DS
-.ft CW
-foo(st.st_size);
-.DE
-and then (improperly) defining foo with an ``int'' or ``long'' parameter:
-.DS
-.ft CW
-foo(size)
- int size;
-{
- ...
-}
-.DE
-will fail miserably (well, it might work on a little endian machine).
-This problem showed up in
-.Xr emacs (1)
-as well as several other programs.
-A related problem is improperly casting (or failing to cast)
-the second argument to
-.Xr lseek (2),
-.Xr truncate (2),
-or
-.Xr ftruncate (2)
-ala:
-.DS
-.ft CW
-lseek(fd, (long)off, 0);
-.DE
-or
-.DS
-.ft CW
-lseek(fd, 0, 0);
-.DE
-The best solution is to include
-.Pn <unistd.h>
-which has prototypes that catch these types of errors.
-.PP
-Determining the ``namelen'' parameter for a
-.Xr connect (2)
-call on a unix domain socket should use the ``SUN_LEN'' macro from
-.Pn <sys/un.h> .
-One old way that was used:
-.DS
-.ft CW
-addrlen = strlen(unaddr.sun_path) + sizeof(unaddr.sun_family);
-.DE
-no longer works as there is an additional
-.Pn sun_len
-field.
-.PP
-The kernel's limit on the number of open files has been
-increased from 20 to 64.
-It is now possible to change this limit almost arbitrarily.
-The standard I/O library
-autoconfigures to the kernel limit.
-Note that file (``_iob'') entries may be allocated by
-.Xr malloc
-from
-.Xr fopen ;
-this allocation has been known to cause problems with programs
-that use their own memory allocators.
-Memory allocation does not occur until after 20 files have been opened
-by the standard I/O library.
-.PP
-.Xr Select
-can be used with more than 32 descriptors
-by using arrays of \fBint\fPs for the bit fields rather than single \fBint\fPs.
-Programs that used
-.Xr getdtablesize
-as their first argument to
-.Xr select
-will no longer work correctly.
-Usually the program can be modified to correctly specify the number
-of bits in an \fBint\fP.
-Alternatively the program can be modified to use an array of \fBint\fPs.
-There are a set of macros available in
-.Pn <sys/types.h>
-to simplify this.
-See
-.Xr select (2).
-.PP
-Old core files will not be intelligible by the current debuggers
-because of numerous changes to the user structure
-and because the kernel stack has been enlarged.
-The
-.Xr a.out
-header that was in the user structure is no longer present.
-Locally-written debuggers that try to check the magic number
-will need to be changed.
-.PP
-Files may not be deleted from directories having the ``sticky'' (ISVTX) bit
-set in their modes
-except by the owner of the file or of the directory, or by the superuser.
-This is primarily to protect users' files in publicly-writable directories
-such as
-.Pn /tmp
-and
-.Pn /var/tmp .
-All publicly-writable directories should have their ``sticky'' bits set
-with ``chmod +t.''
-.PP
-The following two sections contain additional notes about
-changes in \*(4B that affect the installation of local files;
-be sure to read them as well.
diff --git a/share/doc/smm/01.setup/4.t b/share/doc/smm/01.setup/4.t
deleted file mode 100644
index 3e94b3976e1..00000000000
--- a/share/doc/smm/01.setup/4.t
+++ /dev/null
@@ -1,711 +0,0 @@
-.\" $OpenBSD: 4.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1980, 1986, 1988 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)4.t 8.1 (Berkeley) 7/29/93
-.\"
-.ds LH "Installing/Operating \*(4B
-.ds CF \*(Dy
-.ds RH "System setup
-.Sh 1 "System setup"
-.PP
-This section describes procedures used to set up a \*(4B UNIX system.
-These procedures are used when a system is first installed
-or when the system configuration changes. Procedures for normal
-system operation are described in the next section.
-.Sh 2 "Kernel configuration"
-.PP
-This section briefly describes the layout of the kernel code and
-how files for devices are made.
-For a full discussion of configuring
-and building system images, consult the document ``Building
-4.3BSD UNIX Systems with Config'' (SMM:2).
-.Sh 3 "Kernel organization"
-.PP
-As distributed, the kernel source is in a
-separate tar image. The source may be physically
-located anywhere within any filesystem so long as
-a symbolic link to the location is created for the file
-.Pn /sys
-(many files in
-.Pn /usr/include
-are normally symbolic links relative to
-.Pn /sys ).
-In further discussions of the system source all path names
-will be given relative to
-.Pn /sys .
-.LP
-The kernel is made up of several large generic parts:
-.TS
-l l l.
-sys main kernel header files
-kern kernel functions broken down as follows
- init system startup, syscall dispatching, entry points
- kern scheduling, descriptor handling and generic I/O
- sys process management, signals
- tty terminal handling and job control
- vfs filesystem management
- uipc interprocess communication (sockets)
- subr miscellaneous support routines
-vm virtual memory management
-ufs local filesystems broken down as follows
- ufs common local filesystem routines
- ffs fast filesystem
- lfs log-based filesystem
- mfs memory based filesystem
-nfs Sun-compatible network filesystem
-miscfs miscellaneous filesystems broken down as follows
- deadfs where rejected vnodes go to die
- fdesc access to per-process file descriptors
- fifofs IEEE Std1003.1 FIFOs
- kernfs filesystem access to kernel data structures
- lofs loopback filesystem
- nullfs another loopback filesystem
- portal associate processes with filesystem locations
- specfs device special files
- umapfs provide alternate uid/gid mappings
-dev generic device drivers (SCSI, vnode, concatenated disk)
-.TE
-.LP
-The networking code is organized by protocol
-.TS
-l l.
-net routing and generic interface drivers
-netinet Internet protocols (TCP, UDP, IP, etc)
-netiso ISO protocols (TP-4, CLNP, CLTP, etc)
-netns Xerox network systems protocols (IDP, SPP, etc)
-netx25 CCITT X.25 protocols (X.25 Packet Level, HDLC/LAPB)
-.TE
-.LP
-A separate subdirectory is provided for each machine architecture
-.TS
-l l.
-hp300 HP 9000/300 series of Motorola 68000-based machines
-hp code common to both HP 68k and (non-existent) PA-RISC ports
-i386 Intel 386/486-based PC machines
-luna68k Omron 68000-based workstations
-news3400 Sony News MIPS-based workstations
-pmax Digital 3100/5000 MIPS-based workstations
-sparc Sun Microsystems SPARCstation 1, 1+, and 2
-tahoe (deprecated) CCI Power 6-series machines
-vax (deprecated) Digital VAX machines
-.TE
-.LP
-Each machine directory is subdivided by function;
-for example the hp300 directory contains
-.TS
-l l.
-include exported machine-dependent header files
-hp300 machine-dependent support code and private header files
-dev device drivers
-conf configuration files
-stand machine-dependent standalone code
-.TE
-.LP
-Other kernel related directories
-.TS
-l l.
-compile area to compile kernels
-conf machine-independent configuration files
-stand machine-independent standalone code
-.TE
-.Sh 3 "Devices and device drivers"
-.PP
-Devices supported by UNIX are implemented in the kernel
-by drivers whose source is kept in
-.Pn /sys/<architecture>/dev .
-These drivers are loaded
-into the system when included in a cpu specific configuration file
-kept in the conf directory. Devices are accessed through special
-files in the filesystem, made by the
-.Xr mknod (8)
-program and normally kept in the
-.Pn /dev
-directory.
-For all the devices supported by the distribution system, the
-files in
-.Pn /dev
-are created by the
-.Pn /dev/MAKEDEV
-shell script.
-.PP
-Determine the set of devices that you have and create a new
-.Pn /dev
-directory by running the MAKEDEV script.
-First create a new directory
-.Pn /newdev ,
-copy MAKEDEV into it, edit the file MAKEDEV.local
-to provide an entry for local needs,
-and run it to generate a
-.Pn /newdev directory.
-For instance,
-.DS
-\fB#\fP \fIcd /\fP
-\fB#\fP \fImkdir newdev\fP
-\fB#\fP \fIcp dev/MAKEDEV newdev/MAKEDEV\fP
-\fB#\fP \fIcd newdev\fP
-\fB#\fP \fIMAKEDEV \*(Dk0 pt0 std LOCAL\fP
-.DE
-Note the ``std'' argument causes standard devices such as
-.Pn /dev/console ,
-the machine console, to be created.
-.PP
-You can then do
-.DS
-\fB#\fP \fIcd /\fP
-\fB#\fP \fImv dev olddev ; mv newdev dev\fP
-\fB#\fP \fIsync\fP
-.DE
-to install the new device directory.
-.Sh 3 "Building new system images"
-.PP
-The kernel configuration of each UNIX system is described by
-a single configuration file, stored in the
-.Pn /sys/<architecture>/conf
-directory.
-To learn about the format of this file and the procedure used
-to build system images,
-start by reading ``Building 4.3BSD UNIX Systems with Config'' (SMM:2),
-look at the manual pages in section 4
-of the UNIX manual for the devices you have,
-and look at the sample configuration files in the
-.Pn /sys/<architecture>/conf
-directory.
-.PP
-The configured system image
-.Pn vmunix
-should be copied to the root, and then booted to try it out.
-It is best to name it
-.Pn /newvmunix
-so as not to destroy the working system until you are sure it does work:
-.DS
-\fB#\fP \fIcp vmunix /newvmunix\fP
-\fB#\fP \fIsync\fP
-.DE
-It is also a good idea to keep the previous system around under some other
-name. In particular, we recommend that you save the generic distribution
-version of the system permanently as
-.Pn /genvmunix
-for use in emergencies.
-To boot the new version of the system you should follow the
-bootstrap procedures outlined in section 6.1.
-After having booted and tested the new system, it should be installed as
-.Pn /vmunix
-before going into multiuser operation.
-A systematic scheme for numbering and saving old versions
-of the system may be useful.
-.Sh 2 "Configuring terminals"
-.PP
-If UNIX is to support simultaneous
-access from directly-connected terminals other than the console,
-the file
-.Pn /etc/ttys
-(see
-.Xr ttys (5))
-must be edited.
-.PP
-To add a new terminal device, be sure the device is configured into the system
-and that the special files for the device have been made by
-.Pn /dev/MAKEDEV .
-Then, enable the appropriate lines of
-.Pn /etc/ttys
-by setting the ``status''
-field to \fBon\fP (or add new lines).
-Note that lines in
-.Pn /etc/ttys
-are one-for-one with entries in the file of current users
-(see
-.Pn /var/run/utmp ),
-and therefore it is best to make changes
-while running in single-user mode
-and to add all the entries for a new device at once.
-.PP
-Each line in the
-.Pn /etc/ttys
-file is broken into four tab separated
-fields (comments are shown by a `#' character and extend to
-the end of the line). For each terminal line the four fields
-are:
-the device (without a leading
-.Pn /dev ),
-the program
-.Pn /sbin/init
-should startup to service the line
-(or \fBnone\fP if the line is to be left alone),
-the terminal type (found in
-.Pn /usr/share/misc/termcap ),
-and optional status information describing if the terminal is
-enabled or not and if it is ``secure'' (i.e. the super user should
-be allowed to login on the line).
-If the console is marked as ``insecure'',
-then the root password is required to bring the machine up single-user.
-All fields are character strings
-with entries requiring embedded white space enclosed in double
-quotes.
-Thus a newly added terminal
-.Pn /dev/tty00
-could be added as
-.DS
-tty00 "/usr/libexec/getty std.9600" vt100 on secure # mike's office
-.DE
-The std.9600 parameter provided to
-.Pn /usr/libexec/getty
-is used in searching the file
-.Pn /etc/gettytab ;
-it specifies a terminal's characteristics (such as baud rate).
-To make custom terminal types, consult
-.Xr gettytab (5)
-before modifying
-.Pn /etc/gettytab .
-.PP
-Dialup terminals should be wired so that carrier is asserted only when the
-phone line is dialed up.
-For non-dialup terminals, from which modem control is not available,
-you must wire back the signals so that
-the carrier appears to always be present. For further details,
-find your terminal driver in section 4 of the manual.
-.PP
-For network terminals (i.e. pseudo terminals), no program should
-be started up on the lines. Thus, the normal entry in
-.Pn /etc/ttys
-would look like
-.DS
-ttyp0 none network
-.DE
-(Note, the fourth field is not needed here.)
-.PP
-When the system is running multi-user, all terminals that are listed in
-.Pn /etc/ttys
-as \fBon\fP have their line enabled.
-If, during normal operations, you wish
-to disable a terminal line, you can edit the file
-.Pn /etc/ttys
-to change the terminal's status to \fBoff\fP and
-then send a hangup signal to the
-.Xr init
-process, by doing
-.DS
-\fB#\fP \fIkill \-s HUP 1\fP
-.DE
-Terminals can similarly be enabled by changing the status field
-from \fBoff\fP to \fBon\fP and sending a hangup signal to
-.Xr init .
-.PP
-Note that if a special file is inaccessible when
-.Xr init
-tries to create a process for it,
-.Xr init
-will log a message to the
-system error logging process (see
-.Xr syslogd (8))
-and try to reopen the terminal every minute, reprinting the warning
-message every 10 minutes. Messages of this sort are normally
-printed on the console, though other actions may occur depending
-on the configuration information found in
-.Pn /etc/syslog.conf .
-.PP
-Finally note that you should change the names of any dialup
-terminals to ttyd?
-where ? is in [0-9a-zA-Z], as some programs use this property of the
-names to determine if a terminal is a dialup.
-Shell commands to do this should be put in the
-.Pn /dev/MAKEDEV.local
-script.
-.PP
-While it is possible to use truly arbitrary strings for terminal names,
-the accounting and noticeably the
-.Xr ps (1)
-command make good use of the convention that tty names
-(by default, and also after dialups are named as suggested above)
-are distinct in the last 2 characters.
-Change this and you may be sorry later, as the heuristic
-.Xr ps (1)
-uses based on these conventions will then break down and
-.Xr ps
-will run MUCH slower.
-.Sh 2 "Adding users"
-.PP
-The procedure for adding a new user is described in
-.Xr adduser (8).
-You should add accounts for the initial user community, giving
-each a directory and a password, and putting users who will wish
-to share software in the same groups.
-.PP
-Several guest accounts have been provided on the distribution
-system; these accounts are for people at Berkeley,
-Bell Laboratories, and others
-who have done major work on UNIX in the past. You can delete these accounts,
-or leave them on the system if you expect that these people would have
-occasion to login as guests on your system.
-.Sh 2 "Site tailoring"
-.PP
-All programs that require the site's name, or some similar
-characteristic, obtain the information through system calls
-or from files located in
-.Pn /etc .
-Aside from parts of the
-system related to the network, to tailor the system to your
-site you must simply select a site name, then edit the file
-.DS
-/etc/netstart
-.DE
-The first lines in
-.Pn /etc/netstart
-use a variable to set the hostname,
-.DS
-hostname=\fImysitename\fP
-/bin/hostname $hostname
-.DE
-to define the value returned by the
-.Xr gethostname (2)
-system call. If you are running the name server, your site
-name should be your fully qualified domain name. Programs such as
-.Xr getty (8),
-.Xr mail (1),
-.Xr wall (1),
-and
-.Xr uucp (1)
-use this system call so that the binary images are site
-independent.
-.PP
-You will also need to edit
-.Pn /etc/netstart
-to do the network interface initialization using
-.Xr ifconfig (8).
-If you are not sure how to do this, see sections 5.1, 5.2, and 5.3.
-If you are not running a routing daemon and have
-more than one Ethernet in your environment
-you will need to set up a default route;
-see section 5.4 for details.
-Before bringing your system up multiuser,
-you should ensure that the networking is properly configured.
-The network is started by running
-.Pn /etc/netstart .
-Once started, you should test connectivity using
-.Xr ping (8).
-You should first test connectivity to yourself,
-then another host on your Ethernet,
-and finally a host on another Ethernet.
-The
-.Xr netstat (8)
-program can be used to inspect and debug
-your routes; see section 5.4.
-.Sh 2 "Setting up the line printer system"
-.PP
-The line printer system consists of at least
-the following files and commands:
-.DS
-.TS
-l l.
-/usr/bin/lpq spooling queue examination program
-/usr/bin/lprm program to delete jobs from a queue
-/usr/bin/lpr program to enter a job in a printer queue
-/etc/printcap printer configuration and capability database
-/usr/sbin/lpd line printer daemon, scans spooling queues
-/usr/sbin/lpc line printer control program
-/etc/hosts.lpd list of host allowed to use the printers
-.TE
-.DE
-.PP
-The file
-.Pn /etc/printcap
-is a master database describing line
-printers directly attached to a machine and, also, printers
-accessible across a network. The manual page
-.Xr printcap (5)
-describes the format of this database and also
-shows the default values for such things as the directory
-in which spooling is performed. The line printer system handles
-multiple printers, multiple spooling queues, local and remote
-printers, and also printers attached via serial lines that require
-line initialization such as the baud rate. Raster output devices
-such as a Varian or Versatec, and laser printers such as an Imagen,
-are also supported by the line printer system.
-.PP
-Remote spooling via the network is handled with two spooling
-queues, one on the local machine and one on the remote machine.
-When a remote printer job is started with
-.Xr lpr ,
-the job is queued locally and a daemon process created to oversee the
-transfer of the job to the remote machine. If the destination
-machine is unreachable, the job will remain queued until it is
-possible to transfer the files to the spooling queue on the
-remote machine. The
-.Xr lpq
-program shows the contents of spool
-queues on both the local and remote machines.
-.PP
-To configure your line printers, consult the printcap manual page
-and the accompanying document, ``4.3BSD Line Printer Spooler Manual'' (SMM:7).
-A call to the
-.Xr lpd
-program should be present in
-.Pn /etc/rc .
-.Sh 2 "Setting up the mail system"
-.PP
-The mail system consists of the following commands:
-.DS
-.TS
-l l.
-/usr/bin/mail UCB mail program, described in \fImail\fP\|(1)
-/usr/sbin/sendmail mail routing program
-/var/spool/mail mail spooling directory
-/var/spool/secretmail secure mail directory
-/usr/bin/xsend secure mail sender
-/usr/bin/xget secure mail receiver
-/etc/aliases mail forwarding information
-/usr/bin/newaliases command to rebuild binary forwarding database
-/usr/bin/biff mail notification enabler
-/usr/libexec/comsat mail notification daemon
-.TE
-.DE
-Mail is normally sent and received using the
-.Xr mail (1)
-command (found in
-.Pn /usr/bin/mail ),
-which provides a front-end to edit the messages sent
-and received, and passes the messages to
-.Xr sendmail (8)
-for routing.
-The routing algorithm uses knowledge of the network name syntax,
-aliasing and forwarding information, and network topology, as
-defined in the configuration file
-.Pn /usr/lib/sendmail.cf ,
-to process each piece of mail.
-Local mail is delivered by giving it to the program
-.Pn /usr/libexec/mail.local
-that adds it to the mailboxes in the directory
-.Pn /var/spool/mail/<username> ,
-using a locking protocol to avoid problems with simultaneous updates.
-After the mail is delivered, the local mail delivery daemon
-.Pn /usr/libexec/comsat
-is notified, which in turn notifies users who have issued a
-``\fIbiff\fP y'' command that mail has arrived.
-.PP
-Mail queued in the directory
-.Pn /var/spool/mail
-is normally readable only by the recipient.
-To send mail that is secure against perusal
-(except by a code-breaker) you should use the secret mail facility,
-which encrypts the mail.
-.PP
-To set up the mail facility you should read the instructions in the
-file READ_ME in the directory
-.Pn /usr/src/usr.sbin/sendmail
-and then adjust the necessary configuration files.
-You should also set up the file
-.Pn /etc/aliases
-for your installation, creating mail groups as appropriate.
-For more informations see
-``Sendmail Installation and Operation Guide'' (SMM:8) and
-``Sendmail \- An Internetwork Mail Router'' (SMM:9).
-.Sh 3 "Setting up a UUCP connection"
-.LP
-The version of
-.Xr uucp
-included in \*(4B has the following features:
-.IP \(bu 3
-support for many auto call units and dialers
-in addition to the DEC DN11,
-.IP \(bu 3
-breakup of the spooling area into multiple subdirectories,
-.IP \(bu 3
-addition of an
-.Pn L.cmds
-file to control the set
-of commands that may be executed by a remote site,
-.IP \(bu 3
-enhanced ``expect-send'' sequence capabilities when
-logging in to a remote site,
-.IP \(bu 3
-new commands to be used in polling sites and
-obtaining snap shots of
-.Xr uucp
-activity,
-.IP \(bu 3
-additional protocols for different communication media.
-.LP
-This section gives a brief overview of
-.Xr uucp
-and points out the most important steps in its installation.
-.PP
-To connect two UNIX machines with a
-.Xr uucp
-network link using modems,
-one site must have an automatic call unit
-and the other must have a dialup port.
-It is better if both sites have both.
-.PP
-You should first read the paper in the UNIX System Manager's Manual:
-``Uucp Implementation Description'' (SMM:14).
-It describes in detail the file formats and conventions,
-and will give you a little context.
-In addition,
-the document ``setup.tblms'',
-located in the directory
-.Pn /usr/src/usr.bin/uucp/UUAIDS ,
-may be of use in tailoring the software to your needs.
-.PP
-The
-.Xr uucp
-support is located in three major directories:
-.Pn /usr/bin,
-.Pn /usr/lib/uucp,
-and
-.Pn /var/spool/uucp .
-User commands are kept in
-.Pn /usr/bin,
-operational commands in
-.Pn /usr/lib/uucp ,
-and
-.Pn /var/spool/uucp
-is used as a spooling area.
-The commands in
-.Pn /usr/bin
-are:
-.DS
-.TS
-l l.
-/usr/bin/uucp file-copy command
-/usr/bin/uux remote execution command
-/usr/bin/uusend binary file transfer using mail
-/usr/bin/uuencode binary file encoder (for \fIuusend\fP)
-/usr/bin/uudecode binary file decoder (for \fIuusend\fP)
-/usr/bin/uulog scans session log files
-/usr/bin/uusnap gives a snap-shot of \fIuucp\fP activity
-/usr/bin/uupoll polls remote system until an answer is received
-/usr/bin/uuname prints a list of known uucp hosts
-/usr/bin/uuq gives information about the queue
-.TE
-.DE
-The important files and commands in
-.Pn /usr/lib/uucp
-are:
-.DS
-.TS
-l l.
-/usr/lib/uucp/L-devices list of dialers and hard-wired lines
-/usr/lib/uucp/L-dialcodes dialcode abbreviations
-/usr/lib/uucp/L.aliases hostname aliases
-/usr/lib/uucp/L.cmds commands remote sites may execute
-/usr/lib/uucp/L.sys systems to communicate with, how to connect, and when
-/usr/lib/uucp/SEQF sequence numbering control file
-/usr/lib/uucp/USERFILE remote site pathname access specifications
-/usr/lib/uucp/uucico \fIuucp\fP protocol daemon
-/usr/lib/uucp/uuclean cleans up garbage files in spool area
-/usr/lib/uucp/uuxqt \fIuucp\fP remote execution server
-.TE
-.DE
-while the spooling area contains the following important files and directories:
-.DS
-.TS
-l l.
-/var/spool/uucp/C. directory for command, ``C.'' files
-/var/spool/uucp/D. directory for data, ``D.'', files
-/var/spool/uucp/X. directory for command execution, ``X.'', files
-/var/spool/uucp/D.\fImachine\fP directory for local ``D.'' files
-/var/spool/uucp/D.\fImachine\fPX directory for local ``X.'' files
-/var/spool/uucp/TM. directory for temporary, ``TM.'', files
-/var/spool/uucp/LOGFILE log file of \fIuucp\fP activity
-/var/spool/uucp/SYSLOG log file of \fIuucp\fP file transfers
-.TE
-.DE
-.PP
-To install
-.Xr uucp
-on your system,
-start by selecting a site name
-(shorter than 14 characters).
-A
-.Xr uucp
-account must be created in the password file and a password set up.
-Then,
-create the appropriate spooling directories with mode 755
-and owned by user
-.Xr uucp ,
-group \fIdaemon\fP.
-.PP
-If you have an auto-call unit,
-the L.sys, L-dialcodes, and L-devices files should be created.
-The L.sys file should contain
-the phone numbers and login sequences
-required to establish a connection with a
-.Xr uucp
-daemon on another machine.
-For example, our L.sys file looks something like:
-.DS
-adiron Any ACU 1200 out0123456789- ogin-EOT-ogin uucp
-cbosg Never Slave 300
-cbosgd Never Slave 300
-chico Never Slave 1200 out2010123456
-.DE
-The first field is the name of a site,
-the second shows when the machine may be called,
-the third field specifies how the host is connected
-(through an ACU, a hard-wired line, etc.),
-then comes the phone number to use in connecting through an auto-call unit,
-and finally a login sequence.
-The phone number
-may contain common abbreviations that are defined in the L-dialcodes file.
-The device specification should refer to devices
-specified in the L-devices file.
-Listing only ACU causes the
-.Xr uucp
-daemon,
-.Xr uucico ,
-to search for any available auto-call unit in L-devices.
-Our L-dialcodes file is of the form:
-.DS
-ucb 2
-out 9%
-.DE
-while our L-devices file is:
-.DS
-ACU cul0 unused 1200 ventel
-.DE
-Refer to the README file in the
-.Xr uucp
-source directory for more information about installation.
-.PP
-As
-.Xr uucp
-operates it creates (and removes) many small
-files in the directories underneath
-.Pn /var/spool/uucp .
-Sometimes files are left undeleted;
-these are most easily purged with the
-.Xr uuclean
-program.
-The log files can grow without bound unless trimmed back;
-.Xr uulog
-maintains these files.
-Many useful aids in maintaining your
-.Xr uucp
-installation are included in a subdirectory UUAIDS beneath
-.Pn /usr/src/usr.bin/uucp .
-Peruse this directory and read the ``setup'' instructions also located there.
diff --git a/share/doc/smm/01.setup/5.t b/share/doc/smm/01.setup/5.t
deleted file mode 100644
index 44a53fc745d..00000000000
--- a/share/doc/smm/01.setup/5.t
+++ /dev/null
@@ -1,584 +0,0 @@
-.\" $OpenBSD: 5.t,v 1.4 2004/02/25 08:42:38 jmc Exp $
-.\"
-.\" Copyright (c) 1980, 1986, 1988, 1993 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)5.t 8.1 (Berkeley) 7/27/93
-.\"
-.ds lq ``
-.ds rq ''
-.ds LH "Installing/Operating \*(4B
-.ds RH Network setup
-.ds CF \*(Dy
-.Sh 1 "Network setup"
-.PP
-\*(4B provides support for the standard Internet
-protocols IP, ICMP, TCP, and UDP. These protocols may be used
-on top of a variety of hardware devices ranging from
-serial lines to local area network controllers
-for the Ethernet. Network services are split between the
-kernel (communication protocols) and user programs (user
-services such as TELNET and FTP). This section describes
-how to configure your system to use the Internet networking support.
-\*(4B also supports the Xerox Network Systems (NS) protocols.
-IDP and SPP are implemented in the kernel,
-and other protocols such as Courier run at the user level.
-\*(4B provides some support for the ISO OSI protocols CLNP
-TP4, and ESIS. User level process
-complete the application protocols such as X.400 and X.500.
-.Sh 2 "System configuration"
-.PP
-To configure the kernel to include the Internet communication
-protocols, define the INET option.
-Xerox NS support is enabled with the NS option.
-ISO OSI support is enabled with the ISO option.
-In either case, include the pseudo-devices
-``pty'', and ``loop'' in your machine's configuration
-file.
-The ``pty'' pseudo-device forces the pseudo terminal device driver
-to be configured into the system, see
-.Xr pty (4),
-while the ``loop'' pseudo-device forces inclusion of the software loopback
-interface driver.
-The loop driver is used in network testing
-and also by the error logging system.
-.PP
-If you are planning to use the Internet network facilities on a 10Mb/s
-Ethernet, the pseudo-device ``ether'' should also be included
-in the configuration; this forces inclusion of the Address Resolution
-Protocol module used in mapping between 48-bit Ethernet
-and 32-bit Internet addresses.
-.PP
-Before configuring the appropriate networking hardware, you should
-consult the manual pages in section 4 of the Programmer's Manual
-selecting the appropriate interfaces for your architecture.
-.PP
-All network interface drivers including the loopback interface,
-require that their host address(es) be defined at boot time.
-This is done with
-.Xr ifconfig (8)
-commands included in the
-.Pn /etc/netstart
-file.
-Interfaces that are able to dynamically deduce the host
-part of an address may check that the host part of the address is correct.
-The manual page for each network interface
-describes the method used to establish a host's address.
-.Xr Ifconfig (8)
-can also be used to set options for the interface at boot time.
-Options are set independently for each interface, and
-apply to all packets sent using that interface.
-Alternatively, translations for such hosts may be set in advance
-or ``published'' by a \*(4B host by use of the
-.Xr arp (8)
-command.
-Note that the use of trailer link-level is now negotiated between \*(4B hosts
-using ARP,
-and it is thus no longer necessary to disable the use of trailers
-with
-.Xr ifconfig .
-.PP
-The OSI equivalent to ARP is ESIS (End System to Intermediate System Routing
-Protocol); running this protocol is mandatory, however one can manually add
-translations for machines that do not participate by use of the
-.Xr route (8)
-command.
-Additional information is provided in the manual page describing
-.Xr ESIS (4).
-.PP
-To use the pseudo terminals just configured, device
-entries must be created in the
-.Pn /dev
-directory. To create 32
-pseudo terminals (plenty, unless you have a heavy network load)
-execute the following commands.
-.DS
-\fB#\fP \fIcd /dev\fP
-\fB#\fP \fIMAKEDEV pty0 pty1\fP
-.DE
-More pseudo terminals may be made by specifying
-.Pn pty2 ,
-.Pn pty3 ,
-etc. The kernel normally includes support for 32 pseudo terminals
-unless the configuration file specifies a different number.
-Each pseudo terminal really consists of two files in
-.Pn /dev :
-a master and a slave. The master pseudo terminal file is named
-.Pn /dev/ptyp? ,
-while the slave side is
-.Pn /dev/ttyp? .
-Pseudo terminals are also used by several programs not related to the network.
-In addition to creating the pseudo terminals,
-be sure to install them in the
-.Pn /etc/ttys
-file (with a `none' in the second column so no
-.Xr getty
-is started).
-.Sh 2 "Local subnets"
-.PP
-In \*(4B the Internet support
-includes the notion of ``subnets''. This is a mechanism
-by which multiple local networks may appears as a single Internet
-network to off-site hosts. Subnetworks are useful because
-they allow a site to hide their local topology, requiring only a single
-route in external gateways;
-it also means that local network numbers may be locally administered.
-The standard describing this change in Internet addressing is RFC-950.
-.PP
-To set up local subnets one must first decide how the available
-address space (the Internet ``host part'' of the 32-bit address)
-is to be partitioned.
-Sites with a class A network
-number have a 24-bit host address space with which to work, sites with a
-class B network number have a 16-bit host address space, while sites with
-a class C network number have an 8-bit host address space\**.
-.FS
-If you are unfamiliar with the Internet addressing structure, consult
-``Address Mappings'', Internet RFC-796, J. Postel; available from
-the Internet Network Information Center at SRI.
-.FE
-To define local subnets you must steal some bits
-from the local host address space for use in extending the network
-portion of the Internet address. This reinterpretation of Internet
-addresses is done only for local networks; i.e. it is not visible
-to hosts off-site. For example, if your site has a class B network
-number, hosts on this network have an Internet address that contains
-the network number, 16 bits, and the host number, another
-16 bits. To define 254 local subnets, each
-possessing at most 255 hosts, 8 bits may be taken from the local part.
-(The use of subnets 0 and all-1's, 255 in this example, is discouraged
-to avoid confusion about broadcast addresses.)
-These new network
-numbers are then constructed by concatenating the original 16-bit network
-number with the extra 8 bits containing the local subnet number.
-.PP
-The existence of local subnets is communicated to the system at the time a
-network interface is configured with the
-.I netmask
-option to the
-.Xr ifconfig
-program. A ``network mask'' is specified to define the
-portion of the Internet address that is to be considered the network part
-for that network.
-This mask normally contains the bits corresponding to the standard
-network part as well as the portion of the local part
-that has been assigned to subnets.
-If no mask is specified when the address is set,
-it will be set according to the class of the network.
-For example, at Berkeley (class B network 128.32) 8 bits
-of the local part have been reserved for defining subnets;
-consequently the
-.Pn /etc/netstart
-file contains lines of the form
-.DS
-.ft CW
-/sbin/ifconfig le0 netmask 0xffffff00 128.32.1.7
-.DE
-This specifies that for interface ``le0'', the upper 24 bits of
-the Internet address should be used in calculating network numbers
-(netmask 0xffffff00), and the interface's Internet address is
-``128.32.1.7'' (host 7 on network 128.32.1). Hosts \fIm\fP on
-sub-network \fIn\fP of this network would then have addresses of
-the form ``128.32.\fIn\fP.\fIm\fP''; for example, host
-99 on network 129 would have an address ``128.32.129.99''.
-For hosts with multiple interfaces, the network mask should
-be set for each interface,
-although in practice only the mask of the first interface on each network
-is really used.
-.Sh 2 "Internet broadcast addresses"
-.PP
-The address defined as the broadcast address for Internet networks
-according to RFC-919 is the address with a host part of all 1's.
-The address used by 4.2BSD was the address with a host part of 0.
-\*(4B uses the standard broadcast address (all 1's) by default,
-but allows the broadcast address to be set (with
-.Xr ifconfig )
-for each interface.
-This allows networks consisting of both 4.2BSD, \*(Ps and \*(4B hosts
-to coexist while the upgrade process proceeds.
-In the presence of subnets, the broadcast address uses the subnet field
-as for normal host addresses, with the remaining host part set to 1's
-(or 0's, on a network that has not yet been converted).
-\*(4B hosts recognize and accept packets
-sent to the logical-network broadcast address as well as those sent
-to the subnet broadcast address, and when using an all-1's broadcast,
-also recognize and receive packets sent to host 0 as a broadcast.
-.Sh 2 "Routing"
-.PP
-If your environment allows access to networks not directly
-attached to your host you will need to set up routing information
-to allow packets to be properly routed. Two schemes are
-supported by the system. The first scheme
-employs a routing table management daemon.
-Optimally, you should use the routing daemon
-.Xr gated
-available from Cornell university.
-We use it on our systems and it works well,
-especially for multi-homed hosts using Serial Line IP (SLIP).
-Unfortunately, we were not able to obtain permission to
-include it on \*(4B.
-.PP
-If you do not wish to or cannot obtain
-.Xr gated ,
-the distribution does include
-.Xr routed (8)
-to maintain the system routing tables. The routing daemon
-uses a variant of the Xerox Routing Information Protocol
-to maintain up to date routing tables in a cluster of local
-area networks. By using the
-.Pn /etc/gateways
-file, the routing daemon can also be used to initialize static routes
-to distant networks (see the next section for further discussion).
-When the routing daemon is started up
-(usually from
-.Pn /etc/rc )
-it reads
-.Pn /etc/gateways
-if it exists and installs those routes defined there,
-then broadcasts on each local network
-to which the host is attached to find other instances of the routing
-daemon. If any responses are received, the routing daemons
-cooperate in maintaining a globally consistent view of routing
-in the local environment. This view can be extended to include
-remote sites also running the routing daemon by setting up suitable
-entries in
-.Pn /etc/gateways ;
-consult
-.Xr routed (8)
-for a more thorough discussion.
-.PP
-The second approach is to define a default or wildcard
-route to a smart
-gateway and depend on the gateway to provide ICMP routing
-redirect information to dynamically create a routing data
-base. This is done by adding an entry of the form
-.DS
-.ft CW
-/sbin/route add default \fIsmart-gateway\fP 1
-.DE
-to
-.Pn /etc/netstart ;
-see
-.Xr route (8)
-for more information. The default route
-will be used by the system as a ``last resort''
-in routing packets to their destination. Assuming the gateway
-to which packets are directed is able to generate the proper
-routing redirect messages, the system will then add routing
-table entries based on the information supplied. This approach
-has certain advantages over the routing daemon, but is
-unsuitable in an environment where there are only bridges (i.e.
-pseudo gateways that, for instance, do not generate routing
-redirect messages). Further, if the
-smart gateway goes down there is no alternative, save manual
-alteration of the routing table entry, to maintaining service.
-.PP
-The system always listens, and processes, routing redirect
-information, so it is possible to combine both of the above
-facilities. For example, the routing table management process
-might be used to maintain up to date information about routes
-to geographically local networks, while employing the wildcard
-routing techniques for ``distant'' networks. The
-.Xr netstat (1)
-program may be used to display routing table contents as well
-as various routing oriented statistics. For example,
-.DS
-\fB#\fP \fInetstat \-r\fP
-.DE
-will display the contents of the routing tables, while
-.DS
-\fB#\fP \fInetstat \-r \-s\fP
-.DE
-will show the number of routing table entries dynamically
-created as a result of routing redirect messages, etc.
-.Sh 2 "Use of \*(4B machines as gateways"
-.PP
-Several changes have been made in \*(4B in the area of gateway support
-(or packet forwarding, if one prefers).
-A new configuration option, GATEWAY, is used when configuring
-a machine to be used as a gateway.
-This option increases the size of the routing hash tables in the kernel.
-Unless configured with that option,
-hosts with only a single non-loopback interface never attempt
-to forward packets or to respond with ICMP error messages to misdirected
-packets.
-This change reduces the problems that may occur when different hosts
-on a network disagree on the network number or broadcast address.
-Another change is that \*(4B machines that forward packets back through
-the same interface on which they arrived
-will send ICMP redirects to the source host if it is on the same network.
-This improves the interaction of \*(4B gateways with hosts that configure
-their routes via default gateways and redirects.
-The generation of redirects may be disabled with the configuration option
-IPSENDREDIRECTS=0 or while the system is running by using the command:
-.DS
-.ft CW
-sysctl net.inet.ip.redirect=0
-.DE
-in environments where it may cause difficulties.
-.Sh 2 "Network databases"
-.PP
-Several data files are used by the network library routines
-and server programs. Most of these files are host independent
-and updated only rarely.
-.br
-.ne 1i
-.TS
-lfC l l.
-File Manual reference Use
-_
-/etc/hosts \fIhosts\fP\|(5) local host names
-/etc/networks \fInetworks\fP\|(5) network names
-/etc/services \fIservices\fP\|(5) list of known services
-/etc/protocols \fIprotocols\fP\|(5) protocol names
-/etc/hosts.equiv \fIrshd\fP\|(8) list of ``trusted'' hosts
-/etc/netstart \fIrc\fP\|(8) command script for initializing network
-/etc/rc \fIrc\fP\|(8) command script for starting standard servers
-/etc/rc.local \fIrc\fP\|(8) command script for starting local servers
-/etc/ftpusers \fIftpd\fP\|(8) list of ``unwelcome'' ftp users
-/etc/hosts.lpd \fIlpd\fP\|(8) list of hosts allowed to access printers
-/etc/inetd.conf \fIinetd\fP\|(8) list of servers started by \fIinetd\fP
-.TE
-The files distributed are set up for Internet hosts.
-Local networks and hosts should be added to describe the local
-configuration; the Berkeley entries may serve as examples
-(see also the section on
-.Pn /etc/hosts ).
-Network numbers will have to be chosen for each Ethernet.
-For sites connected to the Internet,
-the normal channels should be used for allocation of network
-numbers (contact hostmaster@SRI-NIC.ARPA).
-For other sites,
-these could be chosen more or less arbitrarily,
-but it is generally better to request official numbers
-to avoid conversion if a connection to the Internet (or others on the Internet)
-is ever established.
-.Sh 3 "Network servers"
-.PP
-Most network servers are automatically started up at boot time
-by the command file
-.Pn /etc/rc
-or by the Internet daemon (see below).
-These include the following:
-.TS
-lfC l l.
-Program Server Started by
-_
-/usr/sbin/syslogd error logging server \f(CW/etc/rc\fP
-/usr/sbin/named Internet name server \f(CW/etc/rc\fP
-/sbin/routed routing table management daemon \f(CW/etc/rc\fP
-/usr/sbin/rwhod system status daemon \f(CW/etc/rc\fP
-/usr/sbin/timed time synchronization daemon \f(CW/etc/rc\fP
-/usr/sbin/sendmail SMTP server \f(CW/etc/rc\fP
-/usr/libexec/rshd shell server inetd
-/usr/libexec/rexecd exec server inetd
-/usr/libexec/rlogind login server inetd
-/usr/libexec/telnetd TELNET server inetd
-/usr/libexec/ftpd FTP server inetd
-/usr/libexec/fingerd Finger server inetd
-/usr/libexec/tftpd TFTP server inetd
-.TE
-Consult the manual pages and accompanying documentation (particularly
-for named and sendmail) for details about their operation.
-.PP
-The use of
-.Xr routed
-and
-.Xr rwhod
-is controlled by shell
-variables set in
-.Pn /etc/netstart .
-By default,
-.Xr routed
-is used, but
-.Xr rwhod
-is not; they are enabled by setting the variables \fIroutedflags\fP and
-.Xr rwhod
-to strings other than ``NO.''
-The value of \fIroutedflags\fP provides host-specific options to
-.Xr routed .
-For example,
-.DS
-.ft CW
-routedflags=-q
-rwhod=NO
-.DE
-would run
-.Xr "routed -q"
-and would not run
-.Xr rwhod .
-.PP
-To have other network servers started as well,
-commands of the following sort should be placed in the site-dependent file
-.Pn /etc/rc.local .
-.DS
-.ft CW
-if [ -f /usr/sbin/timed ]; then
- /usr/sbin/timed & echo -n ' timed' >/dev/console
-f\&i
-.DE
-.Sh 3 "Internet daemon"
-.PP
-In \*(4B most of the servers for user-visible services are started up by a
-``super server'', the Internet daemon. The Internet
-daemon,
-.Pn /usr/sbin/inetd ,
-acts as a master server for
-programs specified in its configuration file,
-.Pn /etc/inetd.conf ,
-listening for service requests for these servers, and starting
-up the appropriate program whenever a request is received.
-The configuration file contains lines containing a service
-name (as found in
-.Pn /etc/services ),
-the type of socket the
-server expects (e.g. stream or dgram), the protocol to be
-used with the socket (as found in
-.Pn /etc/protocols ),
-whether to wait for each server to complete before starting up another,
-the user name by which the server should run, the server
-program's name, and at most five arguments to pass to the
-server program.
-Some trivial services are implemented internally in
-.Xr inetd ,
-and their servers are listed as ``internal.''
-For example, an entry for the file
-transfer protocol server would appear as
-.DS
-.ft CW
-ftp stream tcp nowait root /usr/libexec/ftpd ftpd
-.DE
-Consult
-.Xr inetd (8)
-for more detail on the format of the configuration file
-and the operation of the Internet daemon.
-.Sh 3 "The \f(CW/etc/hosts.equiv\fP file"
-.PP
-The remote login and shell servers use an
-authentication scheme based on trusted hosts. The
-.Pn hosts.equiv
-file contains a list of hosts that are considered trusted
-and, under a single administrative control. When a user
-contacts a remote login or shell server requesting service,
-the client process passes the user's name and the official
-name of the host on which the client is located. In the simple
-case, if the host's name is located in
-.Pn hosts.equiv
-and the user has an account on the server's machine, then service
-is rendered (i.e. the user is allowed to log in, or the command
-is executed). Users may expand this ``equivalence'' of
-machines by installing a
-.Pn \&.rhosts
-file in their login directory.
-The root login is handled specially, bypassing the
-.Pn hosts.equiv
-file, and using only the
-.Pn /.rhosts
-file.
-.PP
-Thus, to create a class of equivalent machines, the
-.Pn hosts.equiv
-file should contain the \fIofficial\fP names for those machines.
-If you are running the name server, you may omit the domain part
-of the host name for machines in your local domain.
-For example, four machines on our local
-network are considered trusted, so the
-.Pn hosts.equiv
-file is of the form:
-.DS
-.ft CW
-vangogh.CS.Berkeley.EDU
-picasso.CS.Berkeley.EDU
-okeeffe.CS.Berkeley.EDU
-.DE
-.Sh 3 "The \f(CW/etc/ftpusers\fP file"
-.PP
-The FTP server included in the system provides support for an
-anonymous FTP account. Because of the inherent security problems
-with such a facility you should read this section carefully if
-you consider providing such a service.
-.PP
-An anonymous account is enabled by creating a user
-.Xr ftp .
-When a client uses the anonymous account a
-.Xr chroot (2)
-system call is performed by the server to restrict the client
-from moving outside that part of the filesystem where the
-user ftp home directory is located. Because a
-.Xr chroot
-call is used, certain programs and files used by the server
-process must be placed in the ftp home directory.
-Further, one must be
-sure that all directories and executable images are unwritable.
-The following directory setup is recommended. The
-use of the
-.Xr awk
-commands to copy the
-.Pn /etc/passwd
-and
-.Pn /etc/group
-files are \fBSTRONGLY\fP recommended.
-.DS
-\fB#\fP \fIcd ~ftp\fP
-\fB#\fP \fIchmod 555 .; chown ftp .; chgrp ftp .\fP
-\fB#\fP \fImkdir bin etc pub\fP
-\fB#\fP \fIchown root bin etc\fP
-\fB#\fP \fIchmod 555 bin etc\fP
-\fB#\fP \fIchown ftp pub\fP
-\fB#\fP \fIchmod 777 pub\fP
-\fB#\fP \fIcd bin\fP
-\fB#\fP \fIcp /bin/sh /bin/ls .\fP
-\fB#\fP \fIchmod 111 sh ls\fP
-\fB#\fP \fIcd ../etc\fP
-\fB#\fP \fIawk -F: '{$2="*";print$1":"$2":"$3":"$4":"$5":"$6":"}' < /etc/passwd > passwd\fP
-\fB#\fP \fIawk -F: '{$2="*";print$1":"$2":"}' < /etc/group > group\fP
-\fB#\fP \fIchmod 444 passwd group\fP
-.DE
-When local users wish to place files in the anonymous
-area, they must be placed in a subdirectory. In the
-setup here, the directory
-.Pn ~ftp/pub
-is used.
-.PP
-Aside from the problems of directory modes and such,
-the ftp server may provide a loophole for interlopers
-if certain user accounts are allowed.
-The file
-.Pn /etc/ftpusers
-is checked on each connection.
-If the requested user name is located in the file, the
-request for service is denied. This file normally has
-the following names on our systems.
-.DS
-uucp
-root
-.DE
-Accounts without passwords need not be listed in this file as the ftp
-server will refuse service to these users.
-Accounts with nonstandard shells (any not listed in
-.Pn /etc/shells )
-will also be denied access via ftp.
diff --git a/share/doc/smm/01.setup/6.t b/share/doc/smm/01.setup/6.t
deleted file mode 100644
index 20f564e6a07..00000000000
--- a/share/doc/smm/01.setup/6.t
+++ /dev/null
@@ -1,661 +0,0 @@
-.\" $OpenBSD: 6.t,v 1.4 2005/09/19 06:40:01 krw Exp $
-.\"
-.\" Copyright (c) 1980, 1986, 1988, 1993 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)6.t 8.1 (Berkeley) 7/27/93
-.\"
-.ds LH "Installing/Operating \*(4B
-.ds CF \*(Dy
-.Sh 1 "System operation"
-.PP
-This section describes procedures used to operate a \*(4B UNIX system.
-Procedures described here are used periodically, to reboot the system,
-analyze error messages from devices, do disk backups, monitor
-system performance, recompile system software and control local changes.
-.Sh 2 "Bootstrap and shutdown procedures"
-.PP
-In a normal reboot, the system checks the disks and comes up multi-user
-without intervention at the console.
-Such a reboot
-can be stopped (after it prints the date) with a ^C (interrupt).
-This will leave the system in single-user mode, with only the console
-terminal active.
-(If the console has been marked ``insecure'' in
-.Pn /etc/ttys
-you must enter the root password to bring the machine to single-user mode.)
-It is also possible to allow the filesystem checks to complete
-and then to return to single-user mode by signaling
-.Xr fsck (8)
-with a QUIT signal (^\|\e).
-.PP
-To bring the system up to a multi-user configuration from the single-user
-status,
-all you have to do is hit ^D on the console. The system
-will then execute
-.Pn /etc/rc ,
-a multi-user restart script (and
-.Pn /etc/rc.local ),
-and come up on the terminals listed as
-active in the file
-.Pn /etc/ttys .
-See
-.Xr init (8)
-and
-.Xr ttys (5) for more details.
-Note, however, that this does not cause a filesystem check to be done.
-Unless the system was taken down cleanly, you should run
-``fsck \-p'' or force a reboot with
-.Xr reboot (8)
-to have the disks checked.
-.PP
-To take the system down to a single user state you can use
-.DS
-\fB#\fP \fIkill 1\fP
-.DE
-or use the
-.Xr shutdown (8)
-command (which is much more polite, if there are other users logged in)
-when you are running multi-user.
-Either command will kill all processes and give you a shell on the console,
-as if you had just booted. Filesystems remain mounted after the
-system is taken single-user. If you wish to come up multi-user again, you
-should do this by:
-.DS
-\fB#\fP \fIcd /\fP
-\fB#\fP \fI/sbin/umount -a\fP
-\fB#\fP \fI^D\fP
-.DE
-.PP
-Each system shutdown, crash, processor halt and reboot
-is recorded in the system log
-with its cause.
-.Sh 2 "Device errors and diagnostics"
-.PP
-When serious errors occur on peripherals or in the system, the system
-prints a warning diagnostic on the console.
-These messages are collected
-by the system error logging process
-.Xr syslogd (8)
-and written into a system error log file
-.Pn /var/log/messages .
-Less serious errors are sent directly to
-.Xr syslogd ,
-which may log them on the console.
-The error priorities that are logged and the locations to which they are logged
-are controlled by
-.Pn /etc/syslog.conf .
-See
-.Xr syslogd (8)
-for further details.
-.PP
-Error messages printed by the devices in the system are described with the
-drivers for the devices in section 4 of the programmer's manual.
-If errors occur suggesting hardware problems, you should contact
-your hardware support group or field service. It is a good idea to
-examine the error log file regularly
-(e.g. with the command \fItail \-r /var/log/messages\fP).
-.Sh 2 "Filesystem checks, backups, and disaster recovery"
-.PP
-Periodically (say every week or so in the absence of any problems)
-and always (usually automatically) after a crash,
-all the filesystems should be checked for consistency
-by
-.Xr fsck (1).
-The procedures of
-.Xr reboot (8)
-should be used to get the system to a state where a filesystem
-check can be done manually or automatically.
-.PP
-Dumping of the filesystems should be done regularly,
-since once the system is going it is easy to
-become complacent.
-Complete and incremental dumps are easily done with
-.Xr dump (8).
-You should arrange to do a towers-of-hanoi dump sequence; we tune
-ours so that almost all files are dumped on two tapes and kept for at
-least a week in most every case. We take full dumps every month (and keep
-these indefinitely).
-Operators can execute ``dump w'' at login that will tell them what needs
-to be dumped
-(based on the
-.Pn /etc/fstab
-information).
-Be sure to create a group
-.B operator
-in the file
-.Pn /etc/group
-so that dump can notify logged-in operators when it needs help.
-.PP
-More precisely, we have three sets of dump tapes: 10 daily tapes,
-5 weekly sets of 2 tapes, and fresh sets of three tapes monthly.
-We do daily dumps circularly on the daily tapes with sequence
-`3 2 5 4 7 6 9 8 9 9 9 ...'.
-Each weekly is a level 1 and the daily dump sequence level
-restarts after each weekly dump.
-Full dumps are level 0 and the daily sequence restarts after each full dump
-also.
-.PP
-Thus a typical dump sequence would be:
-.br
-.ne 6
-.TS
-center;
-c c c c c
-n n n l l.
-tape name level number date opr size
-_
-FULL 0 Nov 24, 1992 operator 137K
-D1 3 Nov 28, 1992 operator 29K
-D2 2 Nov 29, 1992 operator 34K
-D3 5 Nov 30, 1992 operator 19K
-D4 4 Dec 1, 1992 operator 22K
-W1 1 Dec 2, 1992 operator 40K
-D5 3 Dec 4, 1992 operator 15K
-D6 2 Dec 5, 1992 operator 25K
-D7 5 Dec 6, 1992 operator 15K
-D8 4 Dec 7, 1992 operator 19K
-W2 1 Dec 9, 1992 operator 118K
-D9 3 Dec 11, 1992 operator 15K
-D10 2 Dec 12, 1992 operator 26K
-D1 5 Dec 15, 1992 operator 14K
-W3 1 Dec 17, 1992 operator 71K
-D2 3 Dec 18, 1992 operator 13K
-FULL 0 Dec 22, 1992 operator 135K
-.TE
-We do weekly dumps often enough that daily dumps always fit on one tape.
-.PP
-Dumping of files by name is best done by
-.Xr tar (1)
-but the amount of data that can be moved in this way is limited
-to a single tape.
-Finally if there are enough drives entire
-disks can be copied with
-.Xr dd (1)
-using the raw special files and an appropriate
-blocking factor; the number of sectors per track is usually
-a good value to use, consult
-.Pn /etc/disktab .
-.PP
-It is desirable that full dumps of the root filesystem be
-made regularly.
-This is especially true when only one disk is available.
-Then, if the
-root filesystem is damaged by a hardware or software failure, you
-can rebuild a workable disk doing a restore in the
-same way that the initial root filesystem was created.
-.PP
-Exhaustion of user-file space is certain to occur
-now and then; disk quotas may be imposed, or if you
-prefer a less fascist approach, try using the programs
-.Xr du (1),
-.Xr df (1),
-and
-.Xr quot (8),
-combined with threatening
-messages of the day, and personal letters.
-.Sh 2 "Moving filesystem data"
-.PP
-If you have the resources,
-the best way to move a filesystem
-is to dump it to a spare disk partition, or magtape, using
-.Xr dump (8),
-use
-.Xr newfs (8)
-to create the new filesystem,
-and restore the filesystem using
-.Xr restore (8).
-Filesystems may also be moved by piping the output of
-.Xr dump
-to
-.Xr restore .
-The
-.Xr restore
-program uses an ``in-place'' algorithm that
-allows filesystem dumps to be restored without concern for the
-original size of the filesystem. Further, portions of a
-filesystem may be selectively restored using a method similar
-to the tape archive program.
-.PP
-If you have to merge a filesystem into another, existing one,
-the best bet is to use
-.Xr tar (1).
-If you must shrink a filesystem, the best bet is to dump
-the original and restore it onto the new filesystem.
-If you
-are playing with the root filesystem and only have one drive,
-the procedure is more complicated.
-If the only drive is a Winchester disk, this procedure may not be used
-without overwriting the existing root or another partition.
-What you do is the following:
-.IP 1.
-GET A SECOND PACK, OR USE ANOTHER DISK DRIVE!!!!
-.IP 2.
-Dump the root filesystem to tape using
-.Xr dump (8).
-.IP 3.
-Bring the system down.
-.IP 4.
-Mount the new pack in the correct disk drive, if
-using removable media.
-.IP 5.
-Load the distribution tape and install the new
-root filesystem as you did when first installing the system.
-Boot normally
-using the newly created disk filesystem.
-.PP
-Note that if you change the disk partition tables or add new disk
-drivers they should also be added to the standalone system in
-.Pn /sys/<architecture>/stand ,
-and the default disk partition tables in
-.Pn /etc/disktab
-should be modified.
-.Sh 2 "Monitoring system performance"
-.PP
-The
-.Xr systat
-program provided with the system is designed to be an aid to monitoring
-systemwide activity. The default ``pigs'' mode shows a dynamic ``ps''.
-By running in the ``vmstat'' mode
-when the system is active you can judge the system activity in several
-dimensions: job distribution, virtual memory load, paging and swapping
-activity, device interrupts, and disk and cpu utilization.
-Ideally, there should be few blocked (b) jobs,
-there should be little paging or swapping activity, there should
-be available bandwidth on the disk devices (most single arms peak
-out at 20-30 tps in practice), and the user cpu utilization (us) should
-be high (above 50%).
-.PP
-If the system is busy, then the count of active jobs may be large,
-and several of these jobs may often be blocked (b). If the virtual
-memory is active, then the paging daemon will be running (sr will
-be non-zero). It is healthy for the paging daemon to free pages when
-the virtual memory gets active; it is triggered by the amount of free
-memory dropping below a threshold and increases its pace as free memory
-goes to zero.
-.PP
-If you run in the ``vmstat'' mode
-when the system is busy, you can find
-imbalances by noting abnormal job distributions. If many
-processes are blocked (b), then the disk subsystem
-is overloaded or imbalanced. If you have several non-dma
-devices or open teletype lines that are ``ringing'', or user programs
-that are doing high-speed non-buffered input/output, then the system
-time may go high (60-70% or higher).
-It is often possible to pin down the cause of high system time by
-looking to see if there is excessive context switching (cs), interrupt
-activity (in) and per-device interrupt counts,
-or system call activity (sy). Cumulatively on one of
-our large machines we average about 60-200 context switches and interrupts
-per second and about 50-500 system calls per second.
-.PP
-If the system is heavily loaded, or if you have little memory
-for your load (2M is little in most any case), then the system
-may be forced to swap. This is likely to be accompanied by a noticeable
-reduction in system performance and pregnant pauses when interactive
-jobs such as editors swap out.
-If you expect to be in a memory-poor environment
-for an extended period you might consider administratively
-limiting system load.
-.Sh 2 "Recompiling and reinstalling system software"
-.PP
-It is easy to regenerate either the entire system or a single utility,
-and it is a good idea to try rebuilding pieces of the system to build
-confidence in the procedures.
-.LP
-In general, there are six well-known targets supported by
-all the makefiles on the system:
-.IP all 9
-This entry is the default target, the same as if no target is specified.
-This target builds the kernel, binary or library, as well as its
-associated manual pages.
-This target \fBdoes not\fP build the dependency files.
-Some of the utilities require that a \fImake depend\fP be done before
-a \fImake all\fP can succeed.
-.IP depend
-Build the include file dependency file, ``.depend'', which is
-read by
-.Xr make .
-See
-.Xr mkdep (1)
-for further details.
-.IP install
-Install the kernel, binary or library, as well as its associated
-manual pages.
-See
-.Xr install (1)
-for further details.
-.IP clean
-Remove the kernel, binary or library, as well as any object files
-created when building it.
-.IP cleandir
-The same as clean, except that the dependency files and formatted
-manual pages are removed as well.
-.IP obj
-Build a shadow directory structure in the area referenced by
-.Pn /usr/obj
-and create a symbolic link in the current source directory to
-referenced it, named ``obj''.
-Once this shadow structure has been created, all the files created by
-.Xr make
-will live in the shadow structure, and
-.Pn /usr/src
-may be mounted read-only by multiple machines.
-Doing a \fImake obj\fP in
-.Pn /usr/src
-will build the shadow directory structure for everything on the
-system except for the contributed, old, and kernel software.
-.PP
-The system consists of three major parts:
-the kernel itself, found in
-.Pn /usr/src/sys ,
-the libraries , found in
-.Pn /usr/src/lib ,
-and the user programs (the rest of
-.Pn /usr/src ).
-.PP
-Deprecated software, found in
-.Pn /usr/src/old ,
-often has old style makefiles;
-some of it does not compile under \*(4B at all.
-.PP
-Contributed software, found in
-.Pn /usr/src/contrib ,
-usually does not support the ``cleandir'', ``depend'', or ``obj'' targets.
-.PP
-The kernel does not support the ``obj'' shadow structure.
-All kernels are compiled in subdirectories of
-.Pn /usr/src/sys/compile
-which is usually abbreviated as
-.Pn /sys/compile .
-If you want to mount your source tree read-only,
-.Pn /usr/src/sys/compile
-will have to be on a separate filesystem from
-.Pn /usr/src .
-Separation from
-.Pn /usr/src
-can be done by making
-.Pn /usr/src/sys/compile
-a symbolic link that references
-.Pn /usr/obj/sys/compile .
-If it is a symbolic link, the \fIS\fP variable in the kernel
-Makefile must be changed from
-.Pn \&../..
-to the absolute pathname needed to locate the kernel sources, usually
-.Pn /usr/src/sys .
-The symbolic link created by
-.Xr config (8)
-for
-.Pn machine
-must also be manually changed to an absolute pathname.
-Finally, the
-.Pn /usr/src/sys/libkern/obj
-directory must be located in
-.Pn /usr/obj/sys/libkern .
-.PP
-Each of the standard utilities and libraries may be built and
-installed by changing directories into the correct location and
-doing:
-.DS
-\fB#\fP \fImake\fP
-\fB#\fP \fImake install\fP
-.DE
-Note, if system include files have changed between compiles,
-.Xr make
-will not do the correct dependency checks if the dependency
-files have not been built using the ``depend'' target.
-.PP
-The entire library and utility suite for the system may be recompiled
-from scratch by changing directory to
-.Pn /usr/src
-and doing:
-.DS
-\fB#\fP \fImake build\fP
-.DE
-This target installs the system include files, cleans the source
-tree, builds and installs the libraries, and builds and installs
-the system utilities.
-.PP
-To recompile a specific program, first determine where the binary
-resides with the
-.Xr whereis (1)
-command, then change to the corresponding source directory and build
-it with the Makefile in the directory.
-For instance, to recompile ``passwd'',
-all one has to do is:
-.DS
-\fB#\fP \fIwhereis passwd\fP
-\fB/usr/bin/passwd\fP
-\fB#\fP \fIcd /usr/src/usr.bin/passwd\fP
-\fB#\fP \fImake\fP
-\fB#\fP \fImake install\fP
-.DE
-this will compile and install the
-.Xr passwd
-utility.
-.PP
-If you wish to recompile and install all programs into a particular
-target area you can override the default path prefix by doing:
-.DS
-\fB#\fP \fImake\fP
-\fB#\fP \fImake DESTDIR=\fPpathname \fIinstall\fP
-.DE
-Similarly, the mode, owner, group, and other characteristics of
-the installed object can be modified by changing other default
-make variables.
-See
-.Xr make (1),
-.Pn /usr/src/share/mk/bsd.README ,
-and the ``.mk'' scripts in the
-.Pn /usr/share/mk
-directory for more information.
-.PP
-If you modify the C library or system include files, to change a
-system call for example, and want to rebuild and install everything,
-you have to be a little careful.
-You must ensure that the include files are installed before anything
-is compiled, and that the libraries are installed before the remainder
-of the source, otherwise the loaded images will not contain the new
-routine from the library.
-If include files have been modified, the following commands should
-be done first:
-.DS
-\fB#\fP \fIcd /usr/src/include\fP
-\fB#\fP \fImake install\fP
-.DE
-Then, if, for example, C library files have been modified, the
-following commands should be executed:
-.DS
-\fB#\fP \fIcd /usr/src/lib/libc\fP
-\fB#\fP \fImake depend\fP
-\fB#\fP \fImake\fP
-\fB#\fP \fImake install\fP
-\fB#\fP \fIcd /usr/src\fP
-\fB#\fP \fImake depend\fP
-\fB#\fP \fImake\fP
-\fB#\fP \fImake install\fP
-.DE
-Alternatively, the \fImake build\fP command described above will
-accomplish the same tasks.
-This takes several hours on a reasonably configured machine.
-.Sh 2 "Making local modifications"
-.PP
-The source for locally written commands is normally stored in
-.Pn /usr/src/local ,
-and their binaries are kept in
-.Pn /usr/local/bin .
-This isolation of local binaries allows
-.Pn /usr/bin ,
-and
-.Pn /bin
-to correspond to the distribution tape (and to the manuals that
-people can buy).
-People using local commands should be made aware that they are not
-in the base manual.
-Manual pages for local commands should be installed in
-.Pn /usr/local/man/cat[1-8].
-The
-.Xr man (1)
-command automatically finds manual pages placed in
-/usr/local/man/cat[1-8] to encourage this practice (see
-.Xr man.conf (5)).
-.Sh 2 "Accounting"
-.PP
-UNIX optionally records two kinds of accounting information:
-connect time accounting and process resource accounting. The connect
-time accounting information is stored in the file
-.Pn /var/log/wtmp ,
-which is summarized by the program
-.Xr ac (8).
-The process time accounting information is stored in the file
-.Pn /var/account/acct
-after it is enabled by
-.Xr accton (8),
-and is analyzed and summarized by the program
-.Xr sa (8).
-.PP
-If you need to recharge for computing time, you can develop
-procedures based on the information provided by these commands.
-A convenient way to do this is to give commands to the clock daemon
-.Pn /usr/sbin/cron
-to be executed every day at a specified time.
-This is done by adding lines to
-.Pn /etc/crontab.local ;
-see
-.Xr cron (8)
-for details.
-.Sh 2 "Resource control"
-.PP
-Resource control in the current version of UNIX is more
-elaborate than in most UNIX systems. The disk quota
-facilities developed at the University of Melbourne have
-been incorporated in the system and allow control over the
-number of files and amount of disk space each user and/or group may use
-on each filesystem. In addition, the resources consumed
-by any single process can be limited by the mechanisms of
-.Xr setrlimit (2).
-As distributed, the latter mechanism
-is voluntary, though sites may choose to modify the login
-mechanism to impose limits not covered with disk quotas.
-.PP
-To use the disk quota facilities, the system must be
-configured with ``options QUOTA''. Filesystems may then
-be placed under the quota mechanism by creating a null file
-.Pn quota.user
-and/or
-.Pn quota.group
-at the root of the filesystem, running
-.Xr quotacheck (8),
-and modifying
-.Pn /etc/fstab
-to show that the filesystem is to run
-with disk quotas (options userquota and/or groupquota).
-The
-.Xr quotaon (8)
-program may then be run to enable quotas.
-.PP
-Individual quotas are applied by using the quota editor
-.Xr edquota (8).
-Users may view their quotas (but not those of other users) with the
-.Xr quota (1)
-program. The
-.Xr repquota (8)
-program may be used to summarize the quotas and current
-space usage on a particular filesystem or filesystems.
-.PP
-Quotas are enforced with \fIsoft\fP and \fIhard\fP limits.
-When a user and/or group first reaches a soft limit on a resource, a
-message is generated on their terminal. If the user and/or group fails to
-lower the resource usage below the soft limit
-for longer than the time limit established for that filesystem
-(default seven days) the system then treats the soft limit as a
-\fIhard\fP limit and disallows any allocations until enough space is
-reclaimed to bring the user and/or group back below the soft limit.
-Hard limits are enforced strictly resulting in errors when a user
-and/or group tries to create or write a file. Each time a hard limit is
-exceeded the system will generate a message on the user's terminal.
-.PP
-Consult the auxiliary document, ``Disc Quotas in a UNIX Environment'' (SMM:4)
-and the appropriate manual entries for more information.
-.Sh 2 "Network troubleshooting"
-.PP
-If you have anything more than a trivial network configuration,
-from time to time you are bound to run into problems. Before
-blaming the software, first check your network connections. On
-networks such as the Ethernet a
-loose cable tap or misplaced power cable can result in severely
-deteriorated service. The
-.Xr netstat (1)
-program may be of aid in tracking down hardware malfunctions.
-In particular, look at the \fB\-i\fP and \fB\-s\fP options in the manual page.
-.PP
-Should you believe a communication protocol problem exists,
-consult the protocol specifications and attempt to isolate the
-problem in a packet trace. The SO_DEBUG option may be supplied
-before establishing a connection on a socket, in which case the
-system will trace all traffic and internal actions (such as timers
-expiring) in a circular trace buffer.
-This buffer may then be printed out with the
-.Xr trpt (8)
-program.
-Most of the servers distributed with the system
-accept a \fB\-d\fP option forcing
-all sockets to be created with debugging turned on.
-Consult the appropriate manual pages for more information.
-.Sh 2 "Files that need periodic attention"
-.PP
-We conclude the discussion of system operations by listing
-the files that require periodic attention or are system specific:
-.TS
-center;
-lfC l.
-/etc/fstab how disk partitions are used
-/etc/disktab default disk partition sizes/labels
-/etc/printcap printer database
-/etc/gettytab terminal type definitions
-/etc/remote names and phone numbers of remote machines for \fItip\fP(1)
-/etc/group group memberships
-/etc/motd message of the day
-/etc/master.passwd password file; each account has a line
-/etc/rc.local local system restart script; runs reboot; starts daemons
-/etc/inetd.conf local internet servers
-/etc/hosts local host name database
-/etc/networks network name database
-/etc/services network services database
-/etc/hosts.equiv hosts under same administrative control
-/etc/syslog.conf error log configuration for \fIsyslogd\fP\|(8)
-/etc/ttys enables/disables ports
-/etc/crontab commands that are run periodically
-/etc/crontab.local local commands that are run periodically
-/etc/aliases mail forwarding and distribution groups
-/var/account/acct raw process account data
-/var/log/messages system error log
-/var/log/wtmp login session accounting
-.TE
-.pn 2
-.bp
-.PX
diff --git a/share/doc/smm/01.setup/Makefile b/share/doc/smm/01.setup/Makefile
deleted file mode 100644
index d001037f516..00000000000
--- a/share/doc/smm/01.setup/Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
-# $OpenBSD: Makefile,v 1.4 2004/02/01 14:22:45 jmc Exp $
-
-
-DIR= smm/01.setup
-SRCS= 0.t 1.t 2.t 3.t 4.t 5.t 6.t
-FILES= ${SRCS}
-MACROS= -ms
-
-paper.ps: ${SRCS}
- ${TBL} ${SRCS} | ${ROFF} > ${.TARGET}
-
-paper.txt: ${SRCS}
- ${TBL} ${SRCS} | ${ROFF} -Tascii > ${.TARGET}
-
-install: ${SRCS}
- install -c -o ${DOCOWN} -g ${DOCGRP} -m ${DOCMODE} \
- Makefile ${FILES} ${EXTRA} ${DESTDIR}${DOCDIR}/${DIR}
-
-.include <bsd.doc.mk>
diff --git a/share/doc/smm/01.setup/spell.ok b/share/doc/smm/01.setup/spell.ok
deleted file mode 100644
index c4f58a2a14d..00000000000
--- a/share/doc/smm/01.setup/spell.ok
+++ /dev/null
@@ -1,618 +0,0 @@
-A1096A
-AA
-ACU
-AMD
-Automounter
-BA
-BLOCKSIZE
-BSD
-Bb
-Bostic
-Bourne
-Bs
-Bz
-CCI
-CCITT
-CLNP
-CLTP
-COMPAT
-CPU's
-CS80
-CSRG
-CW
-Catseye
-Cyl
-DAT
-DECstation
-DESTDIR
-DISK's
-DISKTYPE
-DMA
-DN11
-DV
-DaVinci
-Dk
-Dn
-Dy
-EBCDIC
-EEPROM's
-EINTR
-EISA
-EOT
-ERESTART
-ESIS
-Emulex
-Exabyte
-FDDI
-FIPS
-FPU
-FTAM
-Filesystem
-Filesystems
-GCC
-GENERIC.hp300
-GX
-Gatorbox
-HDLC
-HIL
-HP
-HP's
-HP300
-HP300s
-HP433
-HP9000
-HPBSD
-HPUXCOMPAT
-Hibler
-IB
-ICMP
-IDP
-IDs
-IFLNK
-IP
-IPC
-IPSENDREDIRECTS
-IPX
-ISA
-ISO
-ISVTX
-Intel
-Jul
-Karels
-Kerberos
-L.aliases
-L.cmds
-L.sys
-LAN
-LAPB
-LFS
-LH
-LK201
-LOGFILE
-Leffler
-Luna
-MAKEDEV.local
-MB
-MC68040
-MFS
-MIB
-MIPS
-MISC
-MMU
-MT02
-Macklem
-Makefile
-Makefiles
-Maxtor
-McKusick
-NFS
-NIC.ARPA
-NPSECT
-NTP
-OHPUX
-OS
-OSI
-OSes
-Omron
-PCATCH
-PDT
-PMAD
-PMAG
-PMAX
-PMAZ
-POSIX
-POSIX.1
-POSIX.2
-PSD:5
-PVRX
-Pathnames
-Pendry
-Postel
-README
-RFC
-RH
-RISC
-ROM
-RS232
-RZ23
-RZ55
-RZ57
-SCSI
-SEQF
-SIOCGIFCONF
-SLC
-SMM:1
-SMM:10
-SMM:13
-SMM:14
-SMM:2
-SMM:3
-SMM:4
-SMM:6
-SMM:7
-SMM:8
-SMM:9
-SMTP
-SPARC
-SPARCstation
-SPP
-SRC
-SUNOS
-Sbus
-Solaris
-Standalone
-Std1003.1
-Std1003.2
-SunOS
-TAI
-TAPE's
-TBOOT
-TCP
-TIOCSCTTY
-TK50
-TM
-TP4
-TURBOchannel
-TVRX
-TZ
-Tcpmux
-Topcat
-Tue
-UCB
-UDP
-UFS
-ULTRIX
-ULTRIXCOMPAT
-UNIX''SMM:1
-USERFILE
-USL
-UTC
-UUAIDS
-UX
-Ux
-VAX
-VFS
-VME
-X11R5
-XX
-Xinu
-a,c,u,p
-a.out
-adaptor
-adaptors
-addrlen
-adiron
-adm
-aka
-aliases.db
-amd
-autochanger
-autoconf
-autoconfiguration
-autoconfigures
-bdes
-bootblock
-bootimage
-bootp
-bootpath
-bootrom
-bootsd
-bootstrapped
-bs
-bsd
-bsd.README
-btree
-bwtwo
-c.f
-callback
-cbosg
-cbosgd
-centronics
-cfb0
-cgsix
-cgthree
-changelist
-chflags
-chico
-chpass
-cksum
-cleandir
-cleanerd
-clnp
-cltp
-conf
-conformant
-contrib
-cpio
-crontab
-crontab.local
-cs
-csh.cshrc
-csh.login
-csh.logout
-cshrc
-ct
-cul0
-db
-dbopen
-dc7085
-deadfs
-dev
-dgram
-dialcode
-dialcodes
-dict
-disk3
-diskful
-disklabel
-disklabels
-disktab
-dm
-dm.conf
-dm.config
-dma
-doc
-endian
-es
-esis
-ext
-fd
-fdesc
-fifofs
-files.HOST
-fileservers
-filesystem
-filesystems
-foo
-frags
-friend.host.inet.number
-fsf
-fstab
-fstype
-ftpusers
-ftpwelcome
-fts
-funopen
-gcc
-genvmunix
-getcap
-gettytab
-gid
-gid's
-gids
-groff
-groupquota
-hangup
-hanoi
-heapsort
-hexdump
-hier
-host.inet.number
-hostmaster
-hosts.equiv
-hosts.lpd
-hp
-hp300
-hpib0
-inetd.conf
-inline
-inode
-int
-intr
-iob
-iso
-kbyte
-kbytes
-kdb
-kdump
-kerberos
-kerberosIV
-kernfs
-kmem
-krb.conf
-ksh
-ktrace
-kvm
-labelling
-lastlog
-ld.so.cache
-le
-le0
-lfs
-lib
-libc
-libdata
-libedit
-libexec
-libkern
-libkvm
-libutil
-localhost
-lofs
-logname
-loopback
-lq
-lun
-luna68k
-magtape
-mail.local
-mail.rc
-maillog
-maillog.0
-maillog.1
-maillog.2
-maillog.3
-maillog.4
-maillog.5
-maillog.6
-maillog.7
-makefiles
-man.conf
-man0
-manl
-master.passwd
-maxine
-mckusick
-mdec
-mediainit
-mem
-mergesort
-mfb0
-mfs
-misc
-miscfs
-mk
-mkdb
-mkdep
-mkfifo
-mmap
-mnt
-mono
-motd
-mountd
-mqueue
-msgbuf
-mtree
-my.domain
-myfriend
-myfriend.my.domain
-myname
-myname.my.domain
-mysitename
-namelen
-net.inet.ip.redirect
-netgroup
-netinet
-netiso
-netmask
-netns
-netstart
-netx25
-newdev
-newlfs
-news3400
-newvmunix
-nfs
-nfsd
-nfsiod
-nfsstat
-nfssvc
-nodump
-nowait
-npsect
-nr
-nrmt0
-nrst0
-nsect
-nullfs
-nvi
-obj
-ogin
-ok
-okeeffe.CS.Berkeley.EDU
-olddev
-oldroot
-opr
-osockaddr
-out0123456789
-out2010123456
-pageable
-pathname
-pathnames
-pcc
-picasso.CS.Berkeley.EDU
-pid
-pm0
-pmake
-pmap
-pmax
-posix
-printcap
-pt0
-pty
-pty.c
-pty0
-pty1
-pty2
-pty3
-ptyp
-pwd.db
-quota.group
-quota.user
-quotas.user
-radixsort
-rc.local
-rct
-rd
-rd0
-rdsk
-recno
-rew
-rf
-rhosts
-rmt0
-rmt12
-ro
-roff
-root.dump
-root.image
-routedflags
-rq
-rrd0d
-rrz?a
-rrz?c
-rsd0d
-rsd3a
-rsf
-rst0
-rw
-rxx0
-rz
-rz0
-rz1c
-rz?a
-sbin
-sc14
-sc7
-scsi0
-scsiformat
-sd
-sd0
-sd2b
-sd3
-sd3a
-sd660
-secretmail
-securelevel
-securettys
-sendmail.cf
-setsid
-setup.tblms
-shar
-shareable
-sizeof
-skel
-sockaddr
-sparc
-specfs
-spwd.db
-sr
-src
-srvtab
-st
-st.st
-standalone
-std
-std.9600
-stderr
-stdin
-stdout
-subr
-sunos
-sw
-sy
-sysctl
-sysctl.c
-syslog.0
-syslog.1
-syslog.2
-syslog.3
-syslog.4
-syslog.5
-syslog.6
-syslog.7
-syslog.conf
-tahoe
-tapehost
-tcp
-termios
-tmac
-tmp
-toor
-tps
-tput
-tsleep
-tty.c
-tty00
-ttya
-ttyb
-ttyd
-ttyp
-ttyp0
-ttytype
-types.h
-tz
-tz6
-ucb
-ufs
-uid
-uid's
-uids
-uipc
-umap
-umapfs
-un.h
-unaddr.sun
-uname
-unistd.h
-userid
-username
-userquota
-usr.bin
-usr.sbin
-utmp
-uucp.daemon
-uucppublic
-uw
-vangogh.CS.Berkeley.EDU
-var
-vax
-ventel
-vfs
-vm
-vmunix
-vmunix.net
-vmunix.tape
-vnode
-vnodes
-vol
-vt100
-wildcard
-wr
-wsrc
-wtmp
-xargs
-xbpf
-xcfb0
-xf
-xp
-xpbf
-xpf
-xsf
-xx
-xx0
-xxx
-your.host.inet.number
-yymmddhhmm
-zA
-zoneinfo
diff --git a/share/doc/smm/04.quotas/Makefile b/share/doc/smm/04.quotas/Makefile
deleted file mode 100644
index 475d172278e..00000000000
--- a/share/doc/smm/04.quotas/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-# $OpenBSD: Makefile,v 1.3 2004/02/01 14:22:45 jmc Exp $
-
-
-DIR= smm/04.quotas
-SRCS= quotas.ms
-MACROS= -ms
-
-paper.txt: ${SRCS}
- ${ROFF} -Tascii ${SRCS} > ${.TARGET}
-
-.include <bsd.doc.mk>
diff --git a/share/doc/smm/04.quotas/quotas.ms b/share/doc/smm/04.quotas/quotas.ms
deleted file mode 100644
index 5ca3035c1d1..00000000000
--- a/share/doc/smm/04.quotas/quotas.ms
+++ /dev/null
@@ -1,316 +0,0 @@
-.\" $OpenBSD: quotas.ms,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1983, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)quotas.ms 8.1 (Berkeley) 6/8/93
-.\"
-.EH 'SMM:4-%''Disc Quotas in a \s-2UNIX\s+2 Environment'
-.OH 'Disc Quotas in a \s-2UNIX\s+2 Environment''SMM:4-%'
-.ND 5th July, 1983
-.TL
-Disc Quotas in a \s-2UNIX\s+2\s-3\u*\d\s0 Environment
-.FS
-* UNIX is a trademark of Bell Laboratories.
-.FE
-.AU
-Robert Elz
-.AI
-Department of Computer Science
-University of Melbourne,
-Parkville,
-Victoria,
-Australia.
-.AB
-.PP
-In most computing environments, disc space is not
-infinite.
-The disc quota system provides a mechanism
-to control usage of disc space, on an
-individual basis.
-.PP
-Quotas may be set for each individual user, on any, or
-all filesystems.
-.PP
-The quota system will warn users when they
-exceed their allotted limit, but allow some
-extra space for current work.
-Repeatedly remaining over quota at logout,
-will cause a fatal over quota condition eventually.
-.PP
-The quota system is an optional part of
-\s-2VMUNIX\s0 that may be included when the
-system is configured.
-.AE
-.NH 1
-Users' view of disc quotas
-.PP
-To most users, disc quotas will either be of no concern,
-or a fact of life that cannot be avoided.
-The
-\fIquota\fP\|(1)
-command will provide information on any disc quotas
-that may have been imposed upon a user.
-.PP
-There are two individual possible quotas that may be
-imposed, usually if one is, both will be.
-A limit can be set on the amount of space a user
-can occupy, and there may be a limit on the number
-of files (inodes) he can own.
-.PP
-.I Quota
-provides information on the quotas that have
-been set by the system administrators, in each
-of these areas, and current usage.
-.PP
-There are four numbers for each limit, the current
-usage, soft limit (quota), hard limit, and number
-of remaining login warnings.
-The soft limit is the number of 1K blocks (or files)
-that the user is expected to remain below.
-Each time the user's usage goes past this limit,
-he will be warned.
-The hard limit cannot be exceeded.
-If a user's usage reaches this number, further
-requests for space (or attempts to create a file)
-will fail with an EDQUOT error, and the first time
-this occurs, a message will be written to the user's
-terminal.
-Only one message will be output, until space occupied
-is reduced below the limit, and reaches it again,
-in order to avoid continual noise from those
-programs that ignore write errors.
-.PP
-Whenever a user logs in with a usage greater than
-his soft limit, he will be warned, and his login
-warning count decremented.
-When he logs in under quota, the counter is reset
-to its maximum value (which is a system configuration
-parameter, that is typically 3).
-If the warning count should ever reach zero (caused
-by three successive logins over quota), the
-particular limit that has been exceeded will be treated
-as if the hard limit has been reached, and no
-more resources will be allocated to the user.
-The \fBonly\fP way to reset this condition is
-to reduce usage below quota, then log in again.
-.NH 2
-Surviving when quota limit is reached
-.PP
-In most cases, the only way to recover from over
-quota conditions, is to abort whatever activity was in progress
-on the filesystem that has reached its limit, remove
-sufficient files to bring the limit back below quota,
-and retry the failed program.
-.PP
-However, if you are in the editor and a write fails
-because of an over quota situation, that is not
-a suitable course of action, as it is most likely
-that initially attempting to write the file
-will have truncated its previous contents, so should
-the editor be aborted without correctly writing the
-file not only will the recent changes be lost, but
-possibly much, or even all, of the data
-that previously existed.
-.PP
-There are several possible safe exits for a user
-caught in this situation.
-He may use the editor \fB!\fP shell escape command to
-examine his file space, and remove surplus files.
-Alternatively, using \fIcsh\fP, he may suspend the
-editor, remove some files, then resume it.
-A third possibility, is to write the file to
-some other filesystem (perhaps to a file on /tmp)
-where the user's quota has not been exceeded.
-Then after rectifying the quota situation,
-the file can be moved back to the filesystem
-it belongs on.
-.NH 1
-Administering the quota system
-.PP
-To set up and establish the disc quota system,
-there are several steps necessary to be performed
-by the system administrator.
-.PP
-First, the system must be configured to include
-the disc quota sub-system.
-This is done by including the line:
-.DS
-options QUOTA
-.DE
-in the system configuration file, then running
-\fIconfig\fP\|(8)
-followed by a system configuration\s-3\u*\d\s0.
-.FS
-* See also the document ``Building 4.2BSD UNIX Systems with Config''.
-.FE
-.PP
-Second, a decision as to what filesystems need to have
-quotas applied needs to be made.
-Usually, only filesystems that house users' home directories,
-or other user files, will need to be subjected to
-the quota system, though it may also prove useful to
-also include \fB/usr\fR.
-If possible, \fB/tmp\fP should usually be free of quotas.
-.PP
-Having decided on which filesystems quotas need to be
-set upon, the administrator should then allocate the
-available space amongst the competing needs. How this
-should be done is (way) beyond the scope of this document.
-.PP
-Then, the
-\fIedquota\fP\|(8)
-command can be used to actually set the limits desired upon
-each user. Where a number of users are to be given the
-same quotas (a common occurrence) the \fB\-p\fP switch
-to edquota will allow this to be easily accomplished.
-.PP
-Once the quotas are set, ready to operate, the system
-must be informed to enforce quotas on the desired filesystems.
-This is accomplished with the
-\fIquotaon\fP\|(8)
-command.
-.I Quotaon
-will either enable quotas for a particular filesystem, or
-with the \fB\-a\fP switch, will enable quotas for each
-filesystem indicated in \fB/etc/fstab\fP as using quotas.
-See
-\fIfstab\fP\|(5)
-for details.
-Most sites using the quota system, will include the
-line
-.DS C
-/etc/quotaon -a
-.DE
-in \fB/etc/rc.local\fP.
-.PP
-Should quotas need to be disabled, the
-\fIquotaoff\fP(8)
-command will do that, however, should the filesystem be
-about to be dismounted, the
-\fIumount\fP\|(8)
-command will disable quotas immediately before the
-filesystem is unmounted.
-This is actually an effect of the
-\fIumount\fP\|(2)
-system call, and it guarantees that the quota system
-will not be disabled if the umount would fail
-because the filesystem is not idle.
-.PP
-Periodically (certainly after each reboot, and when quotas
-are first enabled for a filesystem), the records retained
-in the quota file should be checked for consistency with
-the actual number of blocks and files allocated to
-the user.
-The
-\fIquotacheck\fP\|(8)
-command can be used to accomplish this.
-It is not necessary to dismount the filesystem, or disable
-the quota system to run this command, though on
-active filesystems inaccurate results may occur.
-This does no real harm in most cases, another run of
-.I quotacheck
-when the filesystem is idle will certainly correct any inaccuracy.
-.PP
-The super-user may use the
-\fIquota\fP\|(1)
-command to examine the usage and quotas of any user, and
-the
-\fIrepquota\fP\|(8)
-command may be used to check the usages and limits for
-all users on a filesystem.
-.NH 1
-Some implementation detail.
-.PP
-Disc quota usage and information is stored in a file on the
-filesystem that the quotas are to be applied to.
-Conventionally, this file is \fBquotas\fR in the root of
-the filesystem.
-While this name is not known to the system in any way,
-several of the user level utilities "know" it, and
-choosing any other name would not be wise.
-.PP
-The data in the file comprises an array of structures, indexed
-by uid, one structure for each user on the system (whether
-the user has a quota on this filesystem or not).
-If the uid space is sparse, then the file may have holes
-in it, which would be lost by copying, so it is best to
-avoid this.
-.PP
-The system is informed of the existence of the quota
-file by the
-\fIsetquota\fP\|(2)
-system call.
-It then reads the quota entries for each user currently
-active, then for any files open owned by users who
-are not currently active.
-Each subsequent open of a file on the filesystem, will
-be accompanied by a pairing with its quota information.
-In most cases this information will be retained in core,
-either because the user who owns the file is running some
-process, because other files are open owned by the same
-user, or because some file (perhaps this one) was recently
-accessed.
-In memory, the quota information is kept hashed by user-id
-and filesystem, and retained in an LRU chain so recently
-released data can be easily reclaimed.
-Information about those users whose last process has
-recently terminated is also retained in this way.
-.PP
-Each time a block is accessed or released, and each time an inode
-is allocated or freed, the quota system gets told
-about it, and in the case of allocations, gets the
-opportunity to object.
-.PP
-Measurements have shown
-that the quota code uses a very small percentage of the system
-cpu time consumed in writing a new block to disc.
-.NH 1
-Acknowledgments
-.PP
-The current disc quota system is loosely based upon a very
-early scheme implemented at the University of New South
-Wales, and Sydney University in the mid 70's. That system
-implemented a single combined limit for both files and blocks
-on all filesystems.
-.PP
-A later system was implemented at the University of Melbourne
-by the author, but was not kept highly accurately, eg:
-chown's (etc) did not affect quotas, nor did i/o to a file
-other than one owned by the instigator.
-.PP
-The current system has been running (with only minor modifications)
-since January 82 at Melbourne.
-It is actually just a small part of a much broader resource
-control scheme, which is capable of controlling almost
-anything that is usually uncontrolled in unix. The rest
-of this is, as yet, still in a state where it is far too
-subject to change to be considered for distribution.
-.PP
-For the 4.2BSD release, much work has been done to clean
-up and sanely incorporate the quota code by Sam Leffler and
-Kirk McKusick at The University of California at Berkeley.
diff --git a/share/doc/smm/06.nfs/0.t b/share/doc/smm/06.nfs/0.t
deleted file mode 100644
index b0ca9dfc10b..00000000000
--- a/share/doc/smm/06.nfs/0.t
+++ /dev/null
@@ -1,73 +0,0 @@
-.\" $OpenBSD: 0.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" This document is derived from software contributed to Berkeley by
-.\" Rick Macklem at The University of Guelph.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)0.t 8.1 (Berkeley) 6/8/93
-.\"
-.(l C
-.sz 14
-.b "The 4.4BSD NFS Implementation"
-.sp
-.sz 10
-Rick Macklem
-.i "University of Guelph"
-.)l
-.sp 2
-.ce 1
-.sz 12
-.b "ABSTRACT"
-.eh 'SMM:06-%''The 4.4BSD NFS Implementation'
-.oh 'The 4.4BSD NFS Implementation''SMM:06-%'
-.pp
-The 4.4BSD implementation of the Network File System (NFS)\** is
-intended to interoperate with
-.(f
-\**Network File System (NFS) is believed to be a registered trademark of
-Sun Microsystems Inc.
-.)f
-other NFS Version 2 Protocol (RFC1094) implementations but also
-allows use of an alternate protocol that is hoped to provide better
-performance in certain environments.
-This paper will informally discuss these various protocol features and
-their use.
-There is a brief overview of the implementation followed
-by several sections on various problem areas related to NFS
-and some hints on how to deal with them.
-.pp
-Not Quite NFS (NQNFS) is an NFS like protocol designed to maintain full cache
-consistency between clients in a crash tolerant manner. It is an adaptation
-of the NFS protocol such that the server supports both NFS
-and NQNFS clients while maintaining full consistency between the server and
-NQNFS clients.
-It borrows heavily from work done on Spritely-NFS [Srinivasan89], but uses
-Leases [Gray89] to avoid the need to recover server state information
-after a crash.
-.sp
diff --git a/share/doc/smm/06.nfs/1.t b/share/doc/smm/06.nfs/1.t
deleted file mode 100644
index 64337ea8f23..00000000000
--- a/share/doc/smm/06.nfs/1.t
+++ /dev/null
@@ -1,586 +0,0 @@
-.\" $OpenBSD: 1.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" This document is derived from software contributed to Berkeley by
-.\" Rick Macklem at The University of Guelph.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)1.t 8.1 (Berkeley) 6/8/93
-.\"
-.sh 1 "NFS Implementation"
-.pp
-The 4.4BSD implementation of NFS and the alternate protocol nicknamed
-Not Quite NFS (NQNFS) are kernel resident, but make use of a few system
-daemons.
-The kernel implementation does not use an RPC library, handling the RPC
-request and reply messages directly in \fImbuf\fR data areas. NFS
-interfaces to the network using
-sockets via. the kernel interface available in
-\fIsys/kern/uipc_syscalls.c\fR as \fIsosend(), soreceive(),\fR...
-There are connection management routines for support of sockets for connection
-oriented protocols and timeout/retransmit support for datagram sockets on
-the client side.
-For connection oriented transport protocols,
-such as TCP/IP, there is one connection
-for each client to server mount point that is maintained until an umount.
-If the connection breaks, the client will attempt a reconnect with a new
-socket.
-The client side can operate without any daemons running, but performance
-will be improved by running nfsiod daemons that perform read-aheads
-and write-behinds.
-For the server side to function, the daemons portmap, mountd and
-nfsd must be running.
-The mountd daemon performs two important functions.
-.ip 1)
-Upon startup and after a hangup signal, mountd reads the exports
-file and pushes the export information for each local file system down
-into the kernel via. the mount system call.
-.ip 2)
-Mountd handles remote mount protocol (RFC1094, Appendix A) requests.
-.lp
-The nfsd master daemon forks off children that enter the kernel
-via. the nfssvc system call. The children normally remain kernel
-resident, providing a process context for the NFS RPC servers. The only
-exception to this is when a Kerberos [Steiner88]
-ticket is received and at that time
-the nfsd exits the kernel temporarily to verify the ticket via. the
-Kerberos libraries and then returns to the kernel with the results.
-(This only happens for Kerberos mount points as described further under
-Security.)
-Meanwhile, the master nfsd waits to accept new connections from clients
-using connection oriented transport protocols and passes the new sockets down
-into the kernel.
-The client side mount_nfs along with portmap and
-mountd are the only parts of the NFS subsystem that make any
-use of the Sun RPC library.
-.sh 1 "Mount Problems"
-.pp
-There are several problems that can be encountered at the time of an NFS
-mount, ranging from a unresponsive NFS server (crashed, network partitioned
-from client, etc.) to various interoperability problems between different
-NFS implementations.
-.pp
-On the server side,
-if the 4.4BSD NFS server will be handling any PC clients, mountd will
-require the \fB-n\fR option to enable non-root mount request servicing.
-Running of a pcnfsd\** daemon will also be necessary.
-.(f
-\** Pcnfsd is available in source form from Sun Microsystems and many
-anonymous ftp sites.
-.)f
-The server side requires that the daemons
-mountd and nfsd be running and that
-they be registered with portmap properly.
-If problems are encountered,
-the safest fix is to kill all the daemons and then restart them in
-the order portmap, mountd and nfsd.
-Other server side problems are normally caused by problems with the format
-of the exports file, which is covered under
-Security and in the exports man page.
-.pp
-On the client side, there are several mount options useful for dealing
-with server problems.
-In cases where a file system is not critical for system operation, the
-\fB-b\fR
-mount option may be specified so that mount_nfs will go into the
-background for a mount attempt on an unresponsive server.
-This is useful for mounts specified in
-\fIfstab(5)\fR,
-so that the system will not get hung while booting doing
-\fBmount -a\fR
-because a file server is not responsive.
-On the other hand, if the file system is critical to system operation, this
-option should not be used so that the client will wait for the server to
-come up before completing bootstrapping.
-There are also three mount options to help deal with interoperability issues
-with various non-BSD NFS servers. The
-\fB-P\fR
-option specifies that the NFS
-client use a reserved IP port number to satisfy some servers' security
-requirements.\**
-.(f
-\**Any security benefit of this is highly questionable and as
-such the BSD server does not require a client to use a reserved port number.
-.)f
-The
-\fB-c\fR
-option stops the NFS client from doing a \fIconnect\fR on the UDP
-socket, so that the mount works with servers that send NFS replies from
-port numbers other than the standard 2049.\**
-.(f
-\**The Encore Multimax is known
-to require this.
-.)f
-Finally, the
-\fB-g=\fInum\fR
-option sets the maximum size of the group list in the credentials passed
-to an NFS server in every RPC request. Although RFC1057 specifies a maximum
-size of 16 for the group list, some servers can't handle that many.
-If a user, particularly root doing a mount,
-keeps getting access denied from a file server, try temporarily
-reducing the number of groups that user is in to less than 5
-by editing /etc/group. If the user can then access the file system, slowly
-increase the number of groups for that user until the limit is found and
-then peg the limit there with the
-\fB-g=\fInum\fR
-option.
-This implies that the server will only see the first \fInum\fR
-groups that the user is in, which can cause some accessibility problems.
-.pp
-For sites that have many NFS servers, amd [Pendry93]
-is a useful administration tool.
-It also reduces the number of actual NFS mount points, alleviating problems
-with commands such as df(1) that hang when any of the NFS servers is
-unreachable.
-.sh 1 "Dealing with Hung Servers"
-.pp
-There are several mount options available to help a client deal with
-being hung waiting for response from a crashed or unreachable\** server.
-.(f
-\**Due to a network partitioning or similar.
-.)f
-By default, a hard mount will continue to try to contact the server
-``forever'' to complete the system call. This type of mount is appropriate
-when processes on the client that access files in the file system do not
-tolerate file I/O systems calls that return -1 with \fIerrno == EINTR\fR
-and/or access to the file system is critical for normal system operation.
-.lp
-There are two other alternatives:
-.ip 1)
-A soft mount (\fB-s\fR option) retries an RPC \fIn\fR
-times and then the corresponding
-system call returns -1 with errno set to EINTR.
-For TCP transport, the actual RPC request is not retransmitted, but the
-timeout intervals waiting for a reply from the server are done
-in the same manner as UDP for this purpose.
-The problem with this type of mount is that most applications do not
-expect an EINTR error return from file I/O system calls (since it never
-occurs for a local file system) and get confused by the error return
-from the I/O system call.
-The option
-\fB-x=\fInum\fR
-is used to set the RPC retry limit and if set too low, the error returns
-will start occurring whenever the NFS server is slow due to heavy load.
-Alternately, a large retry limit can result in a process hung for a long
-time, due to a crashed server or network partitioning.
-.ip 2)
-An interruptible mount (\fB-i\fR option) checks to see if a termination signal
-is pending for the process when waiting for server response and if it is,
-the I/O system call posts an EINTR. Normally this results in the process
-being terminated by the signal when returning from the system call.
-This feature allows you to ``^C'' out of processes that are hung
-due to unresponsive servers.
-The problem with this approach is that signals that are caught by
-a process are not recognized as termination signals
-and the process will remain hung.\**
-.(f
-\**Unfortunately, there are also some resource allocation situations in the
-BSD kernel where the termination signal will be ignored and the process
-will not terminate.
-.)f
-.sh 1 "RPC Transport Issues"
-.pp
-The NFS Version 2 protocol runs over UDP/IP transport by
-sending each Sun Remote Procedure Call (RFC1057)
-request/reply message in a single UDP
-datagram. Since UDP does not guarantee datagram delivery, the
-Remote Procedure Call (RPC) layer
-times out and retransmits an RPC request if
-no RPC reply has been received. Since this round trip timeout (RTO) value
-is for the entire RPC operation, including RPC message transmission to the
-server, queuing at the server for an nfsd, performing the RPC and
-sending the RPC reply message back to the client, it can be highly variable
-for even a moderately loaded NFS server.
-As a result, the RTO interval must be a conservation (large) estimate, in
-order to avoid extraneous RPC request retransmits.\**
-.(f
-\**At best, an extraneous RPC request retransmit increases
-the load on the server and at worst can result in damaged files
-on the server when non-idempotent RPCs are redone [Juszczak89].
-.)f
-Also, with an 8Kbyte read/write data size
-(the default), the read/write reply/request will be an 8+Kbyte UDP datagram
-that must normally be fragmented at the IP layer for transmission.\**
-.(f
-\**6 IP fragments for an Ethernet,
-which has an maximum transmission unit of 1500bytes.
-.)f
-For IP fragments to be successfully reassembled into
-the IP datagram at the receive end, all
-fragments must be received within a fairly short ``time to live''.
-If one fragment is lost/damaged in transit,
-the entire RPC must be retransmitted and redone.
-This problem can be exaggerated by a network interface on the receiver that
-cannot handle the reception of back to back network packets. [Kent87a]
-.pp
-There are several tuning mount
-options on the client side that can prove useful when trying to
-alleviate performance problems related to UDP RPC transport.
-The options
-\fB-r=\fInum\fR
-and
-\fB-w=\fInum\fR
-specify the maximum read or write data size respectively.
-The size \fInum\fR
-should be a power of 2 (4K, 2K, 1K) and adjusted downward from the
-maximum of 8Kbytes
-whenever IP fragmentation is causing problems. The best indicator of
-IP fragmentation problems is a significant number of
-\fIfragments dropped after timeout\fR
-reported by the \fIip:\fR section of a \fBnetstat -s\fR
-command on either the client or server.
-Of course, if the fragments are being dropped at the server, it can be
-fun figuring out which client(s) are involved.
-The most likely candidates are clients that are not
-on the same local area network as the
-server or have network interfaces that do not receive several
-back to back network packets properly.
-.pp
-By default, the 4.4BSD NFS client dynamically estimates the retransmit
-timeout interval for the RPC and this appears to work reasonably well for
-many environments. However, the
-\fB-d\fR
-flag can be specified to turn off
-the dynamic estimation of retransmit timeout, so that the client will
-use a static initial timeout interval.\**
-.(f
-\**After the first retransmit timeout, the initial interval is backed off
-exponentially.
-.)f
-The
-\fB-t=\fInum\fR
-option can be used with
-\fB-d\fR
-to set the initial timeout interval to other than the default of 2 seconds.
-The best indicator that dynamic estimation should be turned off would
-be a significant number\** in the \fIX Replies\fR field and a
-.(f
-\**Even 0.1% of the total RPCs is probably significant.
-.)f
-large number in the \fIRetries\fR field
-in the \fIRpc Info:\fR section as reported
-by the \fBnfsstat\fR command.
-On the server, there would be significant numbers of \fIInprog\fR recent
-request cache hits in the \fIServer Cache Stats:\fR section as reported
-by the \fBnfsstat\fR command, when run on the server.
-.pp
-The tradeoff is that a smaller timeout interval results in a better
-average RPC response time, but increases the risk of extraneous retries
-that in turn increase server load and the possibility of damaged files
-on the server. It is probably best to err on the safe side and use a large
-(>= 2sec) fixed timeout if the dynamic retransmit timeout estimation
-seems to be causing problems.
-.pp
-An alternative to all this fiddling is to run NFS over TCP transport instead
-of UDP.
-Since the 4.4BSD TCP implementation provides reliable
-delivery with congestion control, it avoids all of the above problems.
-It also permits the use of read and write data sizes greater than the 8Kbyte
-limit for UDP transport.\**
-.(f
-\**Read/write data sizes greater than 8Kbytes will not normally improve
-performance unless the kernel constant MAXBSIZE is increased and the
-file system on the server has a block size greater than 8Kbytes.
-.)f
-NFS over TCP usually delivers comparable to significantly better performance
-than NFS over UDP
-unless the client or server processor runs at less than 5-10MIPS. For a
-slow processor, the extra CPU overhead of using TCP transport will become
-significant and TCP transport may only be useful when the client
-to server interconnect traverses congested gateways.
-The main problem with using TCP transport is that it is only supported
-between BSD clients and servers.\**
-.(f
-\**There are rumors of commercial NFS over TCP implementations on the horizon
-and these may well be worth exploring.
-.)f
-.sh 1 "Other Tuning Tricks"
-.pp
-Another mount option that may improve performance over
-certain network interconnects is \fB-a=\fInum\fR
-which sets the number of blocks that the system will
-attempt to read-ahead during sequential reading of a file. The default value
-of 1 seems to be appropriate for most situations, but a larger value might
-achieve better performance for some environments, such as a mount to a server
-across a ``high bandwidth * round trip delay'' interconnect.
-.pp
-For the adventurous, playing with the size of the buffer cache
-can also improve performance for some environments that use NFS heavily.
-Under some workloads, a buffer cache of 4-6Mbytes can result in significant
-performance improvements over 1-2Mbytes, both in client side system call
-response time and reduced server RPC load.
-The buffer cache size defaults to 10% of physical memory,
-but this can be overridden by specifying the BUFPAGES option
-in the machine's config file.\**
-.(f
-BUFPAGES is the number of physical machine pages allocated to the buffer cache.
-ie. BUFPAGES * NBPG = buffer cache size in bytes
-.)f
-When increasing the size of BUFPAGES, it is also advisable to increase the
-number of buffers NBUF by a corresponding amount.
-Note that there is a tradeoff of memory allocated to the buffer cache versus
-available for paging, which implies that making the buffer cache larger
-will increase paging rate, with possibly disastrous results.
-.sh 1 "Security Issues"
-.pp
-When a machine is running an NFS server it opens up a great big security hole.
-For ordinary NFS, the server receives client credentials
-in the RPC request as a user id
-and a list of group ids and trusts them to be authentic!
-The only tool available to restrict remote access to
-file systems with is the exports(5) file,
-so file systems should be exported with great care.
-The exports file is read by mountd upon startup and after a hangup signal
-is posted for it and then as much of the access specifications as possible are
-pushed down into the kernel for use by the nfsd(s).
-The trick here is that the kernel information is stored on a per
-local file system mount point and client host address basis and cannot refer to
-individual directories within the local server file system.
-It is best to think of the exports file as referring to the various local
-file systems and not just directory paths as mount points.
-A local file system may be exported to a specific host, all hosts that
-match a subnet mask or all other hosts (the world). The latter is very
-dangerous and should only be used for public information. It is also
-strongly recommended that file systems exported to ``the world'' be exported
-read-only.
-For each host or group of hosts, the file system can be exported read-only or
-read/write.
-You can also define one of three client user id to server credential
-mappings to help control access.
-Root (user id == 0) can be mapped to some default credentials while all other
-user ids are accepted as given.
-If the default credentials for user id equal zero
-are root, then there is essentially no remapping.
-Most NFS file systems are exported this way, most commonly mapping
-user id == 0 to the credentials for the user nobody.
-Since the client user id and group id list is used unchanged on the server
-(except for root), this also implies that
-the user id and group id space must be common between the client and server.
-(ie. user id N on the client must refer to the same user on the server)
-All user ids can be mapped to a default set of credentials, typically that of
-the user nobody. This essentially gives world access to all
-users on the corresponding hosts.
-.pp
-There is also a non-standard BSD
-\fB-kerb\fR export option that requires the client provide
-a KerberosIV rcmd service ticket to authenticate the user on the server.
-If successful, the Kerberos principal is looked up in the server's password
-and group databases to get a set of credentials and a map of client userid to
-these credentials is then cached.
-The use of TCP transport is strongly recommended,
-since the scheme depends on the TCP connection to avert replay attempts.
-Unfortunately, this option is only usable
-between BSD clients and servers since it is
-not compatible with other known ``kerberized'' NFS systems.
-To enable use of this Kerberos option, both mount_nfs on the client and
-nfsd on the server must be rebuilt with the -DKERBEROS option and
-linked to KerberosIV libraries.
-The file system is then exported to the client(s) with the \fB-kerb\fR option
-in the exports file on the server
-and the client mount specifies the
-\fB-K\fR
-and
-\fB-T\fR
-options.
-The
-\fB-m=\fIrealm\fR
-mount option may be used to specify a Kerberos Realm for the ticket
-(it must be the Kerberos Realm of the server) that is other than
-the client's local Realm.
-To access files in a \fB-kerb\fR mount point, the user must have a valid
-TGT for the server's Realm, as provided by kinit or similar.
-.pp
-As well as the standard NFS Version 2 protocol (RFC1094) implementation, BSD
-systems can use a variant of the protocol called Not Quite NFS (NQNFS) that
-supports a variety of protocol extensions.
-This protocol uses 64bit file offsets
-and sizes, an \fIaccess rpc\fR, an \fIappend\fR option on the write rpc
-and extended file attributes to support 4.4BSD file system functionality
-more fully.
-It also makes use of a variant of short term
-\fIleases\fR [Gray89] with delayed write client caching,
-in an effort to provide full cache consistency and better performance.
-This protocol is available between 4.4BSD systems only and is used when
-the \fB-q\fR mount option is specified.
-It can be used with any of the aforementioned options for NFS, such as TCP
-transport (\fB-T\fR) and KerberosIV authentication (\fB-K\fR).
-Although this protocol is experimental, it is recommended over NFS for
-mounts between 4.4BSD systems.\**
-.(f
-\**I would appreciate email from anyone who can provide
-NFS vs. NQNFS performance measurements,
-particularly fast clients, many clients or over an internetwork
-connection with a large ``bandwidth * RTT'' product.
-.)f
-.sh 1 "Monitoring NFS Activity"
-.pp
-The basic command for monitoring NFS activity on clients and servers is
-nfsstat. It reports cumulative statistics of various NFS activities,
-such as counts of the various different RPCs and cache hit rates on the client
-and server. Of particular interest on the server are the fields in the
-\fIServer Cache Stats:\fR section, which gives numbers for RPC retries received
-in the first three fields and total RPCs in the fourth. The first three fields
-should remain a very small percentage of the total. If not, it
-would indicate one or more clients doing retries too aggressively and the fix
-would be to isolate these clients,
-disable the dynamic RTO estimation on them and
-make their initial timeout interval a conservative (ie. large) value.
-.pp
-On the client side, the fields in the \fIRpc Info:\fR section are of particular
-interest, as they give an overall picture of NFS activity.
-The \fITimedOut\fR field is the number of I/O system calls that returned -1
-for ``soft'' mounts and can be reduced
-by increasing the retry limit or changing
-the mount type to ``intr'' or ``hard''.
-The \fIInvalid\fR field is a count of trashed RPC replies that are received
-and should remain zero.\**
-.(f
-\**Some NFS implementations run with UDP checksums disabled, so garbage RPC
-messages can be received.
-.)f
-The \fIX Replies\fR field counts the number of repeated RPC replies received
-from the server and is a clear indication of a too aggressive RTO estimate.
-Unfortunately, a good NFS server implementation will use a ``recent request
-cache'' [Juszczak89] that will suppress the extraneous replies.
-A large value for \fIRetries\fR indicates a problem, but
-it could be any of:
-.ip \(bu
-a too aggressive RTO estimate
-.ip \(bu
-an overloaded NFS server
-.ip \(bu
-IP fragments being dropped (gateway, client or server)
-.lp
-and requires further investigation.
-The \fIRequests\fR field is the total count of RPCs done on all servers.
-.pp
-The \fBnetstat -s\fR comes in useful during investigation of RPC transport
-problems.
-The field \fIfragments dropped after timeout\fR in
-the \fIip:\fR section indicates IP fragments are
-being lost and a significant number of these occurring indicates that the
-use of TCP transport or a smaller read/write data size is in order.
-A significant number of \fIbad checksums\fR reported in the \fIudp:\fR
-section would suggest network problems of a more generic sort.
-(cabling, transceiver or network hardware interface problems or similar)
-.pp
-There is a RPC activity logging facility for both the client and
-server side in the kernel.
-When logging is enabled by setting the kernel variable nfsrtton to
-one, the logs in the kernel structures nfsrtt (for the client side)
-and nfsdrt (for the server side) are updated upon the completion
-of each RPC in a circular manner.
-The pos element of the structure is the index of the next element
-of the log array to be updated.
-In other words, elements of the log array from \fIlog\fR[pos] to
-\fIlog\fR[pos - 1] are in chronological order.
-The include file <sys/nfsrtt.h> should be consulted for details on the
-fields in the two log structures.\**
-.(f
-\**Unfortunately, a monitoring tool that uses these logs is still in the
-planning (dreaming) stage.
-.)f
-.sh 1 "Diskless Client Support"
-.pp
-The NFS client does include kernel support for diskless/dataless operation
-where the root file system and optionally the swap area is remote NFS mounted.
-A diskless/dataless client is configured using a version of the
-``swapvmunix.c'' file as provided in the directory \fIcontrib/diskless.nfs\fR.
-If the swap device == NODEV, it specifies an NFS mounted swap area and should
-be configured the same size as set up by diskless_setup when run on the server.
-This file must be put in the \fIsys/compile/<machine_name>\fR kernel build
-directory after the config command has been run, since config does
-not know about specifying NFS root and swap areas.
-The kernel variable mountroot must be set to nfs_mountroot instead of
-ffs_mountroot and the kernel structure nfs_diskless must be filled in
-properly.
-There are some primitive system administration tools in the \fIcontrib/diskless.nfs\fR directory to assist in filling in
-the nfs_diskless structure and in setting up an NFS server for
-diskless/dataless clients.
-The tools were designed to provide a bare bones capability, to allow maximum
-flexibility when setting up different servers.
-.lp
-The tools are as follows:
-.ip \(bu
-diskless_offset.c - This little program reads a ``vmunix'' object file and
-writes the file byte offset of the nfs_diskless structure in it to
-standard out. It was kept separate because it sometimes has to
-be compiled/linked in funny ways depending on the client architecture.
-(See the comment at the beginning of it.)
-.ip \(bu
-diskless_setup.c - This program is run on the server and sets up files for a
-given client. It mostly just fills in an nfs_diskless structure and
-writes it out to either the "vmunix" file or a separate file called
-/var/diskless/setup.<official-hostname>
-.ip \(bu
-diskless_boot.c - There are two functions in here that may be used
-by a bootstrap server such as tftpd to permit sharing of the ``vmunix''
-object file for similar clients. This saves disk space on the bootstrap
-server and simplify organization, but are not critical for correct operation.
-They read the ``vmunix''
-file, but optionally fill in the nfs_diskless structure from a
-separate "setup.<official-hostname>" file so that there is only
-one copy of "vmunix" for all similar (same arch etc.) clients.
-These functions use a text file called
-/var/diskless/boot.<official-hostname> to control the netboot.
-.lp
-The basic setup steps are:
-.ip \(bu
-make a "vmunix" for the client(s) with mountroot() == nfs_mountroot()
-and swdevt[0].sw_dev == NODEV if it is to do nfs swapping as well
-(See the same swapvmunix.c file)
-.ip \(bu
-run diskless_offset on the vmunix file to find out the byte offset
-of the nfs_diskless structure
-.ip \(bu
-Run diskless_setup on the server to set up the server and fill in the
-nfs_diskless structure for that client.
-The nfs_diskless structure can either be written into the
-vmunix file (the -x option) or
-saved in /var/diskless/setup.<official-hostname>.
-.ip \(bu
-Set up the bootstrap server. If the nfs_diskless structure was written into
-the ``vmunix'' file, any vanilla bootstrap protocol such as bootp/tftp can
-be used. If the bootstrap server has been modified to use the functions in
-diskless_boot.c, then a
-file called /var/diskless/boot.<official-hostname>
-must be created.
-It is simply a two line text file, where the first line is the pathname
-of the correct ``vmunix'' file and the second line has the pathname of
-the nfs_diskless structure file and its byte offset in it.
-For example:
-.br
- /var/diskless/vmunix.pmax
-.br
- /var/diskless/setup.rickers.cis.uoguelph.ca 642308
-.br
-.ip \(bu
-Create a /var subtree for each client in an appropriate place on the server,
-such as /var/diskless/var/<client-hostname>/...
-By using the <client-hostname> to differentiate /var for each host,
-/etc/rc can be modified to mount the correct /var from the server.
diff --git a/share/doc/smm/06.nfs/2.t b/share/doc/smm/06.nfs/2.t
deleted file mode 100644
index 242e5a8baef..00000000000
--- a/share/doc/smm/06.nfs/2.t
+++ /dev/null
@@ -1,528 +0,0 @@
-.\" $OpenBSD: 2.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" This document is derived from software contributed to Berkeley by
-.\" Rick Macklem at The University of Guelph.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)2.t 8.1 (Berkeley) 6/8/93
-.\"
-.sh 1 "Not Quite NFS, Crash Tolerant Cache Consistency for NFS"
-.pp
-Not Quite NFS (NQNFS) is an NFS like protocol designed to maintain full cache
-consistency between clients in a crash tolerant manner.
-It is an adaptation of the NFS protocol such that the server supports both NFS
-and NQNFS clients while maintaining full consistency between the server and
-NQNFS clients.
-This section borrows heavily from work done on Spritely-NFS [Srinivasan89],
-but uses Leases [Gray89] to avoid the need to recover server state information
-after a crash.
-The reader is strongly encouraged to read these references before
-trying to grasp the material presented here.
-.sh 2 "Overview"
-.pp
-The protocol maintains cache consistency by using a somewhat
-Sprite [Nelson88] like protocol,
-but is based on short term leases\** instead of hard state information
-about open files.
-.(f
-\** A lease is a ticket permitting an activity that is
-valid until some expiry time.
-.)f
-The basic principal is that the protocol will disable client caching of a
-file whenever that file is write shared\**.
-.(f
-\** Write sharing occurs when at least one client is modifying a file while
-other client(s) are reading the file.
-.)f
-Whenever a client wishes to cache data for a file it must hold a valid lease.
-There are three types of leases: read caching, write caching and non-caching.
-The latter type requires that all file operations be done synchronously with
-the server via. RPCs.
-A read caching lease allows for client data caching, but no file modifications
-may be done.
-A write caching lease allows for client caching of writes,
-but requires that all writes be pushed to the server when the lease expires.
-If a client has dirty buffers\**
-.(f
-\** Cached write data is not yet pushed (written) to the server.
-.)f
-when a write cache lease has almost expired, it will attempt to
-extend the lease but is required to push the dirty buffers if extension fails.
-A client gets leases by either doing a \fBGetLease RPC\fR or by piggybacking
-a \fBGetLease Request\fR onto another RPC. Piggybacking is supported for the
-frequent RPCs Getattr, Setattr, Lookup, Readlink, Read, Write and Readdir
-in an effort to minimize the number of \fBGetLease RPCs\fR required.
-All leases are at the granularity of a file, since all NFS RPCs operate on
-individual files and NFS has no intrinsic notion of a file hierarchy.
-Directories, symbolic links and file attributes may be read cached but
-are not write cached.
-The exception here is the attribute file_size, which is updated during cached
-writing on the client to reflect a growing file.
-.pp
-It is the server's responsibility to ensure that consistency is maintained
-among the NQNFS clients by disabling client caching whenever a server file
-operation would cause inconsistencies.
-The possibility of inconsistencies occurs whenever a client has
-a write caching lease and any other client,
-or local operations on the server,
-tries to access the file or when
-a modify operation is attempted on a file being read cached by client(s).
-At this time, the server sends an \fBeviction notice\fR to all clients holding
-the lease and then waits for lease termination.
-Lease termination occurs when a \fBvacated the premises\fR message has been
-received from all the clients that have signed the lease or when the lease
-expires via. timeout.
-The message pair \fBeviction notice\fR and \fBvacated the premises\fR roughly
-correspond to a Sprite server\(->client callback, but are not implemented as an
-actual RPC, to avoid the server waiting indefinitely for a reply from a dead
-client.
-.pp
-Server consistency checking can be viewed as issuing intrinsic leases for a
-file operation for the duration of the operation only. For example, the
-\fBCreate RPC\fR will get an intrinsic write lease on the directory in which
-the file is being created, disabling client read caches for that directory.
-.pp
-By relegating this responsibility to the server, consistency between the
-server and NQNFS clients is maintained when NFS clients are modifying the
-file system as well.\**
-.(f
-\** The NFS clients will continue to be \fIapproximately\fR consistent with
-the server.
-.)f
-.pp
-The leases are issued as time intervals to avoid the requirement of time of day
-clock synchronization. There are three important time constants known to
-the server. The \fBmaximum_lease_term\fR sets an upper bound on lease duration.
-The \fBclock_skew\fR is added to all lease terms on the server to correct for
-differing clock speeds between the client and server and \fBwrite_slack\fR is
-the number of seconds the server is willing to wait for a client with
-an expired write caching lease to push dirty writes.
-.pp
-The server maintains a \fBmodify_revision\fR number for each file. It is
-defined as a unsigned quadword integer that is never zero and that must
-increase whenever the corresponding file is modified on the server.
-It is used
-by the client to determine whether or not cached data for the file is
-stale.
-Generating this value is easier said than done. The current implementation
-uses the following technique, which is believed to be adequate.
-The high order longword is stored in the ufs inode and is initialized to one
-when an inode is first allocated.
-The low order longword is stored in main memory only and is initialized to
-zero when an inode is read in from disk.
-When the file is modified for the first time within a given second of
-wall clock time, the high order longword is incremented by one and
-the low order longword reset to zero.
-For subsequent modifications within the same second of wall clock
-time, the low order longword is incremented. If the low order longword wraps
-around to zero, the high order longword is incremented again.
-Since the high order longword only increments once per second and the inode
-is pushed to disk frequently during file modification, this implies
-0 \(<= Current\(miDisk \(<= 5.
-When the inode is read in from disk, 10
-is added to the high order longword, which ensures that the quadword
-is greater than any value it could have had before a crash.
-This introduces apparent modifications every time the inode falls out of
-the LRU inode cache, but this should only reduce the client caching performance
-by a (hopefully) small margin.
-.sh 2 "Crash Recovery and other Failure Scenarios"
-.pp
-The server must maintain the state of all the current leases held by clients.
-The nice thing about short term leases is that maximum_lease_term seconds
-after the server stops issuing leases, there are no current leases left.
-As such, server crash recovery does not require any state recovery. After
-rebooting, the server refuses to service any RPCs except for writes until
-write_slack seconds after the last lease would have expired\**.
-.(f
-\** The last lease expiry time may be safely estimated as
-"boottime+maximum_lease_term+clock_skew" for machines that cannot store
-it in nonvolatile RAM.
-.)f
-By then, the server would not have any outstanding leases to recover the
-state of and the clients have had at least write_slack seconds to push dirty
-writes to the server and get the server sync'd up to date. After this, the
-server simply services requests in a manner similar to NFS.
-In an effort to minimize the effect of "recovery storms" [Baker91],
-the server replies \fBtry_again_later\fR to the RPCs it is not
-yet ready to service.
-.pp
-After a client crashes, the server may have to wait for a lease to timeout
-before servicing a request if write sharing of a file with a cachable lease
-on the client is about to occur.
-As for the client, it simply starts up getting any leases it now needs. Any
-outstanding leases for that client on the server prior to the crash will either be renewed or expire
-via timeout.
-.pp
-Certain network partitioning failures are more problematic. If a client to
-server network connection is severed just before a write caching lease expires,
-the client cannot push the dirty writes to the server. After the lease expires
-on the server, the server permits other clients to access the file with the
-potential of getting stale data. Unfortunately I believe this failure scenario
-is intrinsic in any delay write caching scheme unless the server is required to
-wait \fBforever\fR for a client to regain contact\**.
-.(f
-\** Gray and Cheriton avoid this problem by using a \fBwrite through\fR policy.
-.)f
-Since the write caching lease has expired on the client,
-it will sync up with the
-server as soon as the network connection has been re-established.
-.pp
-There is another failure condition that can occur when the server is congested.
-The worst case scenario would have the client pushing dirty writes to the server
-but a large request queue on the server delays these writes for more than
-\fBwrite_slack\fR seconds. It is hoped that a congestion control scheme using
-the \fBtry_again_later\fR RPC reply after booting combined with
-the following lease termination rule for write caching leases
-can minimize the risk of this occurrence.
-A write caching lease is only terminated on the server when there are have
-been no writes to the file and the server has not been overloaded during
-the previous write_slack seconds. The server has not been overloaded
-is approximated by a test for sleeping nfsd(s) at the end of the write_slack
-period.
-.sh 2 "Server Disk Full"
-.pp
-There is a serious unresolved problem for delayed write caching with respect to
-server disk space allocation.
-When the disk on the file server is full, delayed write RPCs can fail
-due to "out of space".
-For NFS, this occurrence results in an error return from the close system
-call on the file, since the dirty blocks are pushed on close.
-Processes writing important files can check for this error return
-to ensure that the file was written successfully.
-For NQNFS, the dirty blocks are not pushed on close and as such the client
-may not attempt the write RPC until after the process has done the close
-which implies no error return from the close.
-For the current prototype,
-the only solution is to modify programs writing important
-file(s) to call fsync and check for an error return from it instead of close.
-.sh 2 "Protocol Details"
-.pp
-The protocol specification is identical to that of NFS [Sun89] except for
-the following changes.
-.ip \(bu
-RPC Information
-.(l
- Program Number 300105
- Version Number 1
-.)l
-.ip \(bu
-Readdir_and_Lookup RPC
-.(l
- struct readdirlookargs {
- fhandle file;
- nfscookie cookie;
- unsigned count;
- unsigned duration;
- };
-
- struct entry {
- unsigned cachable;
- unsigned duration;
- modifyrev rev;
- fhandle entry_fh;
- nqnfs_fattr entry_attrib;
- unsigned fileid;
- filename name;
- nfscookie cookie;
- entry *nextentry;
- };
-
- union readdirlookres switch (stat status) {
- case NFS_OK:
- struct {
- entry *entries;
- bool eof;
- } readdirlookok;
- default:
- void;
- };
-
- readdirlookres
- NQNFSPROC_READDIRLOOK(readdirlookargs) = 18;
-.)l
-Reads entries in a directory in a manner analogous to the NFSPROC_READDIR RPC
-in NFS, but returns the file handle and attributes of each entry as well.
-This allows the attribute and lookup caches to be primed.
-.ip \(bu
-Get Lease RPC
-.(l
- struct getleaseargs {
- fhandle file;
- cachetype readwrite;
- unsigned duration;
- };
-
- union getleaseres switch (stat status) {
- case NFS_OK:
- bool cachable;
- unsigned duration;
- modifyrev rev;
- nqnfs_fattr attributes;
- default:
- void;
- };
-
- getleaseres
- NQNFSPROC_GETLEASE(getleaseargs) = 19;
-.)l
-Gets a lease for "file" valid for "duration" seconds from when the lease
-was issued on the server\**.
-.(f
-\** To be safe, the client may only assume that the lease is valid
-for ``duration'' seconds from when the RPC request was sent to the server.
-.)f
-The lease permits client caching if "cachable" is true.
-The modify revision level and attributes for the file are also returned.
-.ip \(bu
-Eviction Message
-.(l
- void
- NQNFSPROC_EVICTED (fhandle) = 21;
-.)l
-This message is sent from the server to the client. When the client receives
-the message, it should flush data associated with the file represented by
-"fhandle" from its caches and then send the \fBVacated Message\fR back to
-the server. Flushing includes pushing any dirty writes via. write RPCs.
-.ip \(bu
-Vacated Message
-.(l
- void
- NQNFSPROC_VACATED (fhandle) = 20;
-.)l
-This message is sent from the client to the server in response to the
-\fBEviction Message\fR. See above.
-.ip \(bu
-Access RPC
-.(l
- struct accessargs {
- fhandle file;
- bool read_access;
- bool write_access;
- bool exec_access;
- };
-
- stat
- NQNFSPROC_ACCESS(accessargs) = 22;
-.)l
-The access RPC does permission checking on the server for the given type
-of access required by the client for the file.
-Use of this RPC avoids accessibility problems caused by client->server uid
-mapping.
-.ip \(bu
-Piggybacked Get Lease Request
-.pp
-The piggybacked get lease request is functionally equivalent to the Get Lease
-RPC except that is attached to one of the other NQNFS RPC requests as follows.
-A getleaserequest is prepended to all of the request arguments for NQNFS
-and a getleaserequestres is inserted in all NFS result structures just after
-the "stat" field only if "stat == NFS_OK".
-.(l
- union getleaserequest switch (cachetype type) {
- case NQLREAD:
- case NQLWRITE:
- unsigned duration;
- default:
- void;
- };
-
- union getleaserequestres switch (cachetype type) {
- case NQLREAD:
- case NQLWRITE:
- bool cachable;
- unsigned duration;
- modifyrev rev;
- default:
- void;
- };
-.)l
-The get lease request applies to the file that the attached RPC operates on
-and the file attributes remain in the same location as for the NFS RPC reply
-structure.
-.ip \(bu
-Three additional "stat" values
-.pp
-Three additional values have been added to the enumerated type "stat".
-.(l
- NQNFS_EXPIRED=500
- NQNFS_TRYLATER=501
- NQNFS_AUTHERR=502
-.)l
-The "expired" value indicates that a lease has expired.
-The "try later"
-value is returned by the server when it wishes the client to retry the
-RPC request after a short delay. It is used during crash recovery (Section 2)
-and may also be useful for server congestion control.
-The "authetication error" value is returned for kerberized mount points to
-indicate that there is no cached authentication mapping and a Kerberos ticket
-for the principal is required.
-.sh 2 "Data Types"
-.ip \(bu
-cachetype
-.(l
- enum cachetype {
- NQLNONE = 0,
- NQLREAD = 1,
- NQLWRITE = 2
- };
-.)l
-Type of lease requested. NQLNONE is used to indicate no piggybacked lease
-request.
-.ip \(bu
-modifyrev
-.(l
- typedef unsigned hyper modifyrev;
-.)l
-The "modifyrev" is a unsigned quadword integer value that is never zero
-and increases every time the corresponding file is modified on the server.
-.ip \(bu
-nqnfs_time
-.(l
- struct nqnfs_time {
- unsigned seconds;
- unsigned nano_seconds;
- };
-.)l
-For NQNFS times are handled at nano second resolution instead of micro second
-resolution for NFS.
-.ip \(bu
-nqnfs_fattr
-.(l
- struct nqnfs_fattr {
- ftype type;
- unsigned mode;
- unsigned nlink;
- unsigned uid;
- unsigned gid;
- unsigned hyper size;
- unsigned blocksize;
- unsigned rdev;
- unsigned hyper bytes;
- unsigned fsid;
- unsigned fileid;
- nqnfs_time atime;
- nqnfs_time mtime;
- nqnfs_time ctime;
- unsigned flags;
- unsigned generation;
- modifyrev rev;
- };
-.)l
-The nqnfs_fattr structure is modified from the NFS fattr so that it stores
-the file size as a 64bit quantity and the storage occupied as a 64bit number
-of bytes. It also has fields added for the 4.4BSD va_flags and va_gen fields
-as well as the file's modify rev level.
-.ip \(bu
-nqnfs_sattr
-.(l
- struct nqnfs_sattr {
- unsigned mode;
- unsigned uid;
- unsigned gid;
- unsigned hyper size;
- nqnfs_time atime;
- nqnfs_time mtime;
- unsigned flags;
- unsigned rdev;
- };
-.)l
-The nqnfs_sattr structure is modified from the NFS sattr structure in the
-same manner as fattr.
-.lp
-The arguments to several of the NFS RPCs have been modified as well. Mostly,
-these are minor changes to use 64bit file offsets or similar. The modified
-argument structures follow.
-.ip \(bu
-Lookup RPC
-.(l
- struct lookup_diropargs {
- unsigned duration;
- fhandle dir;
- filename name;
- };
-
- union lookup_diropres switch (stat status) {
- case NFS_OK:
- struct {
- union getleaserequestres lookup_lease;
- fhandle file;
- nqnfs_fattr attributes;
- } lookup_diropok;
- default:
- void;
- };
-
-.)l
-The additional "duration" argument tells the server to get a lease for the
-name being looked up if it is non-zero and the lease is specified
-in "lookup_lease".
-.ip \(bu
-Read RPC
-.(l
- struct nqnfs_readargs {
- fhandle file;
- unsigned hyper offset;
- unsigned count;
- };
-.)l
-.ip \(bu
-Write RPC
-.(l
- struct nqnfs_writeargs {
- fhandle file;
- unsigned hyper offset;
- bool append;
- nfsdata data;
- };
-.)l
-The "append" argument is true for apeend only write operations.
-.ip \(bu
-Get Filesystem Attributes RPC
-.(l
- union nqnfs_statfsres (stat status) {
- case NFS_OK:
- struct {
- unsigned tsize;
- unsigned bsize;
- unsigned blocks;
- unsigned bfree;
- unsigned bavail;
- unsigned files;
- unsigned files_free;
- } info;
- default:
- void;
- };
-.)l
-The "files" field is the number of files in the file system and the "files_free"
-is the number of additional files that can be created.
-.sh 1 "Summary"
-.pp
-The configuration and tuning of an NFS environment tends to be a bit of a
-mystic art, but hopefully this paper along with the man pages and other
-reading will be helpful. Good Luck.
diff --git a/share/doc/smm/06.nfs/Makefile b/share/doc/smm/06.nfs/Makefile
deleted file mode 100644
index ac2c14a6f5b..00000000000
--- a/share/doc/smm/06.nfs/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-# $OpenBSD: Makefile,v 1.3 2004/02/01 14:22:45 jmc Exp $
-
-
-DIR= smm/06.nfs
-SRCS= 0.t 1.t 2.t ref.t
-MACROS= -me
-
-paper.txt: ${SRCS}
- ${ROFF} -Tascii ${SRCS} > ${.TARGET}
-
-.include <bsd.doc.mk>
diff --git a/share/doc/smm/06.nfs/ref.t b/share/doc/smm/06.nfs/ref.t
deleted file mode 100644
index 274802846c3..00000000000
--- a/share/doc/smm/06.nfs/ref.t
+++ /dev/null
@@ -1,121 +0,0 @@
-.\" $OpenBSD: ref.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" This document is derived from software contributed to Berkeley by
-.\" Rick Macklem at The University of Guelph.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)ref.t 8.1 (Berkeley) 6/8/93
-.\"
-.sh 1 "Bibliography"
-.ip [Baker91] 16
-Mary Baker and John Ousterhout, Availability in the Sprite Distributed
-File System, In \fIOperating System Review\fR, (25)2, pg. 95-98,
-April 1991.
-.ip [Baker91a] 16
-Mary Baker, Private Email Communication, May 1991.
-.ip [Burrows88] 16
-Michael Burrows, Efficient Data Sharing, Technical Report #153,
-Computer Laboratory, University of Cambridge, Dec. 1988.
-.ip [Gray89] 16
-Cary G. Gray and David R. Cheriton, Leases: An Efficient Fault-Tolerant
-Mechanism for Distributed File Cache Consistency, In \fIProc. of the
-Twelfth ACM Symposium on Operating Systems Principals\fR, Litchfield Park,
-AZ, Dec. 1989.
-.ip [Howard88] 16
-John H. Howard, Michael L. Kazar, Sherri G. Menees, David A. Nichols,
-M. Satyanarayanan, Robert N. Sidebotham and Michael J. West,
-Scale and Performance in a Distributed File System, \fIACM Trans. on
-Computer Systems\fR, (6)1, pg 51-81, Feb. 1988.
-.ip [Juszczak89] 16
-Chet Juszczak, Improving the Performance and Correctness of an NFS Server,
-In \fIProc. Winter 1989 USENIX Conference,\fR pg. 53-63, San Diego, CA, January 1989.
-.ip [Keith90] 16
-Bruce E. Keith, Perspectives on NFS File Server Performance Characterization,
-In \fIProc. Summer 1990 USENIX Conference\fR, pg. 267-277, Anaheim, CA,
-June 1990.
-.ip [Kent87] 16
-Christopher. A. Kent, \fICache Coherence in Distributed Systems\fR,
-Research Report 87/4,
-Digital Equipment Corporation Western Research Laboratory, April 1987.
-.ip [Kent87a] 16
-Christopher. A. Kent and Jeffrey C. Mogul,
-\fIFragmentation Considered Harmful\fR, Research Report 87/3,
-Digital Equipment Corporation Western Research Laboratory, Dec. 1987.
-.ip [Macklem91] 16
-Rick Macklem, Lessons Learned Tuning the 4.3BSD Reno Implementation of the
-NFS Protocol, In \fIProc. Winter USENIX Conference\fR, pg. 53-64,
-Dallas, TX, January 1991.
-.ip [Nelson88] 16
-Michael N. Nelson, Brent B. Welch, and John K. Ousterhout, Caching in the
-Sprite Network File System, \fIACM Transactions on Computer Systems\fR (6)1
-pg. 134-154, February 1988.
-.ip [Nowicki89] 16
-Bill Nowicki, Transport Issues in the Network File System, In
-\fIComputer Communication Review\fR, pg. 16-20, Vol. 19, Number 2, April 1989.
-.ip [Ousterhout90] 16
-John K. Ousterhout, Why Aren't Operating Systems Getting Faster As Fast as
-Hardware? In \fIProc. Summer 1990 USENIX Conference\fR, pg. 247-256, Anaheim,
-CA, June 1990.
-.ip [Pendry93] 16
-Jan-Simon Pendry, 4.4 BSD Automounter Reference Manual, In
-\fIsrc/usr.sbin/amd/doc directory of 4.4 BSD distribution tape\fR.
-.ip [Reid90] 16
-Jim Reid, N(e)FS: the Protocol is the Problem, In
-\fIProc. Summer 1990 UKUUG Conference\fR,
-London, England, July 1990.
-.ip [Sandberg85] 16
-Russel Sandberg, David Goldberg, Steve Kleiman, Dan Walsh, and Bob Lyon,
-Design and Implementation of the Sun Network filesystem, In \fIProc. Summer
-1985 USENIX Conference\fR, pages 119-130, Portland, OR, June 1985.
-.ip [Schroeder85] 16
-Michael D. Schroeder, David K. Gifford and Roger M. Needham, A Caching
-File System For A Programmer's Workstation, In \fIProc. of the Tenth
-ACM Symposium on Operating Systems Principals\fR, pg. 25-34, Orcas Island,
-WA, Dec. 1985.
-.ip [Srinivasan89] 16
-V. Srinivasan and Jeffrey. C. Mogul, \fISpritely NFS: Implementation and
-Performance of Cache-Consistency Protocols\fR, Research Report 89/5,
-Digital Equipment Corporation Western Research Laboratory, May 1989.
-.ip [Steiner88] 16
-Jennifer G. Steiner, Clifford Neuman and Jeffrey I. Schiller,
-Kerberos: An Authentication Service for Open Network Systems, In
-\fIProc. Winter 1988 USENIX Conference\fR, Dallas, TX, February 1988.
-.ip [Stern] 16
-Hal Stern, \fIManaging NFS and NIS\fR, O'Reilly and Associates,
-ISBN 0-937175-75-7.
-.ip [Sun87] 16
-Sun Microsystems Inc., \fIXDR: External Data Representation Standard\fR,
-RFC1014, Network Information Center, SRI International, June 1987.
-.ip [Sun88] 16
-Sun Microsystems Inc., \fIRPC: Remote Procedure Call Protocol Specification Version 2\fR,
-RFC1057, Network Information Center, SRI International, June 1988.
-.ip [Sun89] 16
-Sun Microsystems Inc., \fINFS: Network File System Protocol Specification\fR,
-ARPANET Working Group Requests for Comment, DDN Network Information Center,
-SRI International, Menlo Park, CA, March 1989, RFC-1094.
diff --git a/share/doc/smm/09.sendmail/Makefile b/share/doc/smm/09.sendmail/Makefile
deleted file mode 100644
index 0c982f93ca1..00000000000
--- a/share/doc/smm/09.sendmail/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-# $OpenBSD: Makefile,v 1.3 2004/02/01 14:22:45 jmc Exp $
-
-
-DIR= smm/09.sendmail
-SRCS= intro.me
-MACROS= -me
-
-all: intro.ps
-
-intro.ps: ${SRCS}
- rm -f ${.TARGET}
- ${PIC} ${SRCS} | ${ROFF} > ${.TARGET}
-
-paper.txt: ${SRCS}
- rm -f ${.TARGET}
- ${PIC} ${SRCS} | ${ROFF} -Tascii > ${.TARGET}
-
-.include <bsd.doc.mk>
diff --git a/share/doc/smm/09.sendmail/intro.me b/share/doc/smm/09.sendmail/intro.me
deleted file mode 100644
index 6bc6d807760..00000000000
--- a/share/doc/smm/09.sendmail/intro.me
+++ /dev/null
@@ -1,1458 +0,0 @@
-.\" $OpenBSD: intro.me,v 1.2 2001/02/03 08:15:08 niklas Exp $
-.\"
-.\" Copyright (c) 1998 Sendmail, Inc. All rights reserved.
-.\" Copyright (c) 1983 Eric P. Allman. All rights reserved.
-.\" Copyright (c) 1988, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" By using this file, you agree to the terms and conditions set
-.\" forth in the LICENSE file which can be found at the top level of
-.\" the sendmail distribution.
-.\"
-.\"
-.\" @(#)intro.me 8.7 (Berkeley) 5/19/1998
-.\"
-.\" pic -Pxx intro.me | ditroff -me -Pxx
-.eh 'SMM:9-%''SENDMAIL \*- An Internetwork Mail Router'
-.oh 'SENDMAIL \*- An Internetwork Mail Router''SMM:9-%'
-.nr si 3n
-.if n .ls 2
-.+c
-.(l C
-.sz 14
-SENDMAIL \*- An Internetwork Mail Router
-.sz
-.sp
-Eric Allman*
-.sp 0.5
-.i
-University of California, Berkeley
-Mammoth Project
-.)l
-.sp
-.(l F
-.ce
-ABSTRACT
-.sp \n(psu
-Routing mail through a heterogenous internet presents many new
-problems. Among the worst of these is that of address mapping.
-Historically, this has been handled on an
-.i "ad hoc"
-basis. However,
-this approach has become unmanageable as internets grow.
-.sp \n(psu
-Sendmail acts a unified "post office" to which all mail can be
-submitted. Address interpretation is controlled by a production
-system, which can parse both domain-based addressing and old-style
-.i "ad hoc"
-addresses.
-The production system is powerful
-enough to rewrite addresses in the message header to conform to the
-standards of a number of common target networks, including old
-(NCP/RFC733) Arpanet, new (TCP/RFC822) Arpanet, UUCP, and Phonenet.
-Sendmail also implements an SMTP server, message
-queueing, and aliasing.
-.)l
-.sp 2
-.(f
-*A considerable part of this work
-was done while under the employ
-of the INGRES Project
-at the University of California at Berkeley
-and at Britton Lee.
-.)f
-.pp
-.i Sendmail
-implements a general internetwork mail routing facility,
-featuring aliasing and forwarding,
-automatic routing to network gateways,
-and flexible configuration.
-.pp
-In a simple network,
-each node has an address,
-and resources can be identified
-with a host-resource pair;
-in particular,
-the mail system can refer to users
-using a host-username pair.
-Host names and numbers have to be administered by a central authority,
-but usernames can be assigned locally to each host.
-.pp
-In an internet,
-multiple networks with different characterstics
-and managements
-must communicate.
-In particular,
-the syntax and semantics of resource identification change.
-Certain special cases can be handled trivially
-by
-.i "ad hoc"
-techniques,
-such as
-providing network names that appear local to hosts
-on other networks,
-as with the Ethernet at Xerox PARC.
-However, the general case is extremely complex.
-For example,
-some networks require point-to-point routing,
-which simplifies the database update problem
-since only adjacent hosts must be entered
-into the system tables,
-while others use end-to-end addressing.
-Some networks use a left-associative syntax
-and others use a right-associative syntax,
-causing ambiguity in mixed addresses.
-.pp
-Internet standards seek to eliminate these problems.
-Initially, these proposed expanding the address pairs
-to address triples,
-consisting of
-{network, host, resource}
-triples.
-Network numbers must be universally agreed upon,
-and hosts can be assigned locally
-on each network.
-The user-level presentation was quickly expanded
-to address domains,
-comprised of a local resource identification
-and a hierarchical domain specification
-with a common static root.
-The domain technique
-separates the issue of physical versus logical addressing.
-For example,
-an address of the form
-.q "eric@a.cc.berkeley.arpa"
-describes only the logical
-organization of the address space.
-.pp
-.i Sendmail
-is intended to help bridge the gap
-between the totally
-.i "ad hoc"
-world
-of networks that know nothing of each other
-and the clean, tightly-coupled world
-of unique network numbers.
-It can accept old arbitrary address syntaxes,
-resolving ambiguities using heuristics
-specified by the system administrator,
-as well as domain-based addressing.
-It helps guide the conversion of message formats
-between disparate networks.
-In short,
-.i sendmail
-is designed to assist a graceful transition
-to consistent internetwork addressing schemes.
-.sp
-.pp
-Section 1 discusses the design goals for
-.i sendmail .
-Section 2 gives an overview of the basic functions of the system.
-In section 3,
-details of usage are discussed.
-Section 4 compares
-.i sendmail
-to other internet mail routers,
-and an evaluation of
-.i sendmail
-is given in section 5,
-including future plans.
-.sh 1 "DESIGN GOALS"
-.pp
-Design goals for
-.i sendmail
-include:
-.np
-Compatibility with the existing mail programs,
-including Bell version 6 mail,
-Bell version 7 mail
-[UNIX83],
-Berkeley
-.i Mail
-[Shoens79],
-BerkNet mail
-[Schmidt79],
-and hopefully UUCP mail
-[Nowitz78a, Nowitz78b].
-ARPANET mail
-[Crocker77a, Postel77]
-was also required.
-.np
-Reliability, in the sense of guaranteeing
-that every message is correctly delivered
-or at least brought to the attention of a human
-for correct disposal;
-no message should ever be completely lost.
-This goal was considered essential
-because of the emphasis on mail in our environment.
-It has turned out to be one of the hardest goals to satisfy,
-especially in the face of the many anomalous message formats
-produced by various ARPANET sites.
-For example,
-certain sites generate improperly formated addresses,
-occasionally
-causing error-message loops.
-Some hosts use blanks in names,
-causing problems with
-UNIX mail programs that assume that an address
-is one word.
-The semantics of some fields
-are interpreted slightly differently
-by different sites.
-In summary,
-the obscure features of the ARPANET mail protocol
-really
-.i are
-used and
-are difficult to support,
-but must be supported.
-.np
-Existing software to do actual delivery
-should be used whenever possible.
-This goal derives as much from political and practical considerations
-as technical.
-.np
-Easy expansion to
-fairly complex environments,
-including multiple
-connections to a single network type
-(such as with multiple UUCP or Ether nets
-[Metcalfe76]).
-This goal requires consideration of the contents of an address
-as well as its syntax
-in order to determine which gateway to use.
-For example,
-the ARPANET is bringing up the
-TCP protocol to replace the old NCP protocol.
-No host at Berkeley runs both TCP and NCP,
-so it is necessary to look at the ARPANET host name
-to determine whether to route mail to an NCP gateway
-or a TCP gateway.
-.np
-Configuration should not be compiled into the code.
-A single compiled program should be able to run as is at any site
-(barring such basic changes as the CPU type or the operating system).
-We have found this seemingly unimportant goal
-to be critical in real life.
-Besides the simple problems that occur when any program gets recompiled
-in a different environment,
-many sites like to
-.q fiddle
-with anything that they will be recompiling anyway.
-.np
-.i Sendmail
-must be able to let various groups maintain their own mailing lists,
-and let individuals specify their own forwarding,
-without modifying the system alias file.
-.np
-Each user should be able to specify which mailer to execute
-to process mail being delivered for him.
-This feature allows users who are using specialized mailers
-that use a different format to build their environment
-without changing the system,
-and facilitates specialized functions
-(such as returning an
-.q "I am on vacation"
-message).
-.np
-Network traffic should be minimized
-by batching addresses to a single host where possible,
-without assistance from the user.
-.pp
-These goals motivated the architecture illustrated in figure 1.
-.(z
-.hl
-.ie t \
-\{\
-.ie !"\*(.T"" \
-\{\
-.PS
-boxht = 0.5i
-boxwid = 1.0i
-
- down
-S: [
- right
- S1: box "sender1"
- move
- box "sender2"
- move
- S3: box "sender3"
- ]
- arrow
-SM: box "sendmail" wid 2i ht boxht
- arrow
-M: [
- right
- M1: box "mailer1"
- move
- box "mailer2"
- move
- M3: box "mailer3"
- ]
-
- arrow from S.S1.s to 1/2 between SM.nw and SM.n
- arrow from S.S3.s to 1/2 between SM.n and SM.ne
-
- arrow from 1/2 between SM.sw and SM.s to M.M1.n
- arrow from 1/2 between SM.s and SM.se to M.M3.n
-.PE
-.\}
-.el \
-. sp 18
-.\}
-.el \{\
-.(c
-+---------+ +---------+ +---------+
-| sender1 | | sender2 | | sender3 |
-+---------+ +---------+ +---------+
- | | |
- +----------+ + +----------+
- | | |
- v v v
- +-------------+
- | sendmail |
- +-------------+
- | | |
- +----------+ + +----------+
- | | |
- v v v
-+---------+ +---------+ +---------+
-| mailer1 | | mailer2 | | mailer3 |
-+---------+ +---------+ +---------+
-.)c
-.\}
-
-.ce
-Figure 1 \*- Sendmail System Structure.
-.hl
-.)z
-The user interacts with a mail generating and sending program.
-When the mail is created,
-the generator calls
-.i sendmail ,
-which routes the message to the correct mailer(s).
-Since some of the senders may be network servers
-and some of the mailers may be network clients,
-.i sendmail
-may be used as an internet mail gateway.
-.sh 1 "OVERVIEW"
-.sh 2 "System Organization"
-.pp
-.i Sendmail
-neither interfaces with the user
-nor does actual mail delivery.
-Rather,
-it collects a message
-generated by a user interface program (UIP)
-such as Berkeley
-.i Mail ,
-MS
-[Crocker77b],
-or MH
-[Borden79],
-edits the message as required by the destination network,
-and calls appropriate mailers
-to do mail delivery or queueing for network transmission\**.
-.(f
-\**except when mailing to a file,
-when
-.i sendmail
-does the delivery directly.
-.)f
-This discipline allows the insertion of new mailers
-at minimum cost.
-In this sense
-.i sendmail
-resembles the Message Processing Module (MPM)
-of [Postel79b].
-.sh 2 "Interfaces to the Outside World"
-.pp
-There are three ways
-.i sendmail
-can communicate with the outside world,
-both in receiving and in sending mail.
-These are using the conventional UNIX
-argument vector/return status,
-speaking SMTP over a pair of UNIX pipes,
-and speaking SMTP over an interprocess(or) channel.
-.sh 3 "Argument vector/exit status"
-.pp
-This technique is the standard UNIX method
-for communicating with the process.
-A list of recipients is sent in the argument vector,
-and the message body is sent on the standard input.
-Anything that the mailer prints
-is simply collected and sent back to the sender
-if there were any problems.
-The exit status from the mailer is collected
-after the message is sent,
-and a diagnostic is printed if appropriate.
-.sh 3 "SMTP over pipes"
-.pp
-The SMTP protocol
-[Postel82]
-can be used to run an interactive lock-step interface
-with the mailer.
-A subprocess is still created,
-but no recipient addresses are passed to the mailer
-via the argument list.
-Instead, they are passed one at a time
-in commands sent to the processes standard input.
-Anything appearing on the standard output
-must be a reply code
-in a special format.
-.sh 3 "SMTP over an IPC connection"
-.pp
-This technique is similar to the previous technique,
-except that it uses a 4.2bsd IPC channel
-[UNIX83].
-This method is exceptionally flexible
-in that the mailer need not reside
-on the same machine.
-It is normally used to connect to a sendmail process
-on another machine.
-.sh 2 "Operational Description"
-.pp
-When a sender wants to send a message,
-it issues a request to
-.i sendmail
-using one of the three methods described above.
-.i Sendmail
-operates in two distinct phases.
-In the first phase,
-it collects and stores the message.
-In the second phase,
-message delivery occurs.
-If there were errors during processing
-during the second phase,
-.i sendmail
-creates and returns a new message describing the error
-and/or returns an status code
-telling what went wrong.
-.sh 3 "Argument processing and address parsing"
-.pp
-If
-.i sendmail
-is called using one of the two subprocess techniques,
-the arguments
-are first scanned
-and option specifications are processed.
-Recipient addresses are then collected,
-either from the command line
-or from the SMTP
-RCPT command,
-and a list of recipients is created.
-Aliases are expanded at this step,
-including mailing lists.
-As much validation as possible of the addresses
-is done at this step:
-syntax is checked, and local addresses are verified,
-but detailed checking of host names and addresses
-is deferred until delivery.
-Forwarding is also performed
-as the local addresses are verified.
-.pp
-.i Sendmail
-appends each address
-to the recipient list after parsing.
-When a name is aliased or forwarded,
-the old name is retained in the list,
-and a flag is set that tells the delivery phase
-to ignore this recipient.
-This list is kept free from duplicates,
-preventing alias loops
-and duplicate messages deliverd to the same recipient,
-as might occur if a person is in two groups.
-.sh 3 "Message collection"
-.pp
-.i Sendmail
-then collects the message.
-The message should have a header at the beginning.
-No formatting requirements are imposed on the message
-except that they must be lines of text
-(i.e., binary data is not allowed).
-The header is parsed and stored in memory,
-and the body of the message is saved
-in a temporary file.
-.pp
-To simplify the program interface,
-the message is collected even if no addresses were valid.
-The message will be returned with an error.
-.sh 3 "Message delivery"
-.pp
-For each unique mailer and host in the recipient list,
-.i sendmail
-calls the appropriate mailer.
-Each mailer invocation sends to all users receiving the message on one host.
-Mailers that only accept one recipient at a time
-are handled properly.
-.pp
-The message is sent to the mailer
-using one of the same three interfaces
-used to submit a message to sendmail.
-Each copy of the message is
-prepended by a customized header.
-The mailer status code is caught and checked,
-and a suitable error message given as appropriate.
-The exit code must conform to a system standard
-or a generic message
-(\c
-.q "Service unavailable" )
-is given.
-.sh 3 "Queueing for retransmission"
-.pp
-If the mailer returned an status that
-indicated that it might be able to handle the mail later,
-.i sendmail
-will queue the mail and try again later.
-.sh 3 "Return to sender"
-.pp
-If errors occur during processing,
-.i sendmail
-returns the message to the sender for retransmission.
-The letter can be mailed back
-or written in the file
-.q dead.letter
-in the sender's home directory\**.
-.(f
-\**Obviously, if the site giving the error is not the originating
-site, the only reasonable option is to mail back to the sender.
-Also, there are many more error disposition options,
-but they only effect the error message \*- the
-.q "return to sender"
-function is always handled in one of these two ways.
-.)f
-.sh 2 "Message Header Editing"
-.pp
-Certain editing of the message header
-occurs automatically.
-Header lines can be inserted
-under control of the configuration file.
-Some lines can be merged;
-for example,
-a
-.q From:
-line and a
-.q Full-name:
-line can be merged under certain circumstances.
-.sh 2 "Configuration File"
-.pp
-Almost all configuration information is read at runtime
-from an ASCII file,
-encoding
-macro definitions
-(defining the value of macros used internally),
-header declarations
-(telling sendmail the format of header lines that it will process specially,
-i.e., lines that it will add or reformat),
-mailer definitions
-(giving information such as the location and characteristics
-of each mailer),
-and address rewriting rules
-(a limited production system to rewrite addresses
-which is used to parse and rewrite the addresses).
-.pp
-To improve performance when reading the configuration file,
-a memory image can be provided.
-This provides a
-.q compiled
-form of the configuration file.
-.sh 1 "USAGE AND IMPLEMENTATION"
-.sh 2 "Arguments"
-.pp
-Arguments may be flags and addresses.
-Flags set various processing options.
-Following flag arguments,
-address arguments may be given,
-unless we are running in SMTP mode.
-Addresses follow the syntax in RFC822
-[Crocker82]
-for ARPANET
-address formats.
-In brief, the format is:
-.np
-Anything in parentheses is thrown away
-(as a comment).
-.np
-Anything in angle brackets (\c
-.q "<\|>" )
-is preferred
-over anything else.
-This rule implements the ARPANET standard that addresses of the form
-.(b
-user name <machine-address>
-.)b
-will send to the electronic
-.q machine-address
-rather than the human
-.q "user name."
-.np
-Double quotes
-(\ "\ )
-quote phrases;
-backslashes quote characters.
-Backslashes are more powerful
-in that they will cause otherwise equivalent phrases
-to compare differently \*- for example,
-.i user
-and
-.i
-"user"
-.r
-are equivalent,
-but
-.i \euser
-is different from either of them.
-.pp
-Parentheses, angle brackets, and double quotes
-must be properly balanced and nested.
-The rewriting rules control remaining parsing\**.
-.(f
-\**Disclaimer: Some special processing is done
-after rewriting local names; see below.
-.)f
-.sh 2 "Mail to Files and Programs"
-.pp
-Files and programs are legitimate message recipients.
-Files provide archival storage of messages,
-useful for project administration and history.
-Programs are useful as recipients in a variety of situations,
-for example,
-to maintain a public repository of systems messages
-(such as the Berkeley
-.i msgs
-program,
-or the MARS system
-[Sattley78]).
-.pp
-Any address passing through the initial parsing algorithm
-as a local address
-(i.e, not appearing to be a valid address for another mailer)
-is scanned for two special cases.
-If prefixed by a vertical bar (\c
-.q \^|\^ )
-the rest of the address is processed as a shell command.
-If the user name begins with a slash mark (\c
-.q /\^ )
-the name is used as a file name,
-instead of a login name.
-.pp
-Files that have setuid or setgid bits set
-but no execute bits set
-have those bits honored if
-.i sendmail
-is running as root.
-.sh 2 "Aliasing, Forwarding, Inclusion"
-.pp
-.i Sendmail
-reroutes mail three ways.
-Aliasing applies system wide.
-Forwarding allows each user to reroute incoming mail
-destined for that account.
-Inclusion directs
-.i sendmail
-to read a file for a list of addresses,
-and is normally used
-in conjunction with aliasing.
-.sh 3 "Aliasing"
-.pp
-Aliasing maps names to address lists using a system-wide file.
-This file is indexed to speed access.
-Only names that parse as local
-are allowed as aliases;
-this guarantees a unique key
-(since there are no nicknames for the local host).
-.sh 3 "Forwarding"
-.pp
-After aliasing,
-recipients that are local and valid
-are checked for the existence of a
-.q .forward
-file in their home directory.
-If it exists,
-the message is
-.i not
-sent to that user,
-but rather to the list of users in that file.
-Often
-this list will contain only one address,
-and the feature will be used for network mail forwarding.
-.pp
-Forwarding also permits a user to specify a private incoming mailer.
-For example,
-forwarding to:
-.(b
-"\^|\|/usr/local/newmail myname"
-.)b
-will use a different incoming mailer.
-.sh 3 "Inclusion"
-.pp
-Inclusion is specified in RFC 733 [Crocker77a] syntax:
-.(b
-:Include: pathname
-.)b
-An address of this form reads the file specified by
-.i pathname
-and sends to all users listed in that file.
-.pp
-The intent is
-.i not
-to support direct use of this feature,
-but rather to use this as a subset of aliasing.
-For example,
-an alias of the form:
-.(b
-project: :include:/usr/project/userlist
-.)b
-is a method of letting a project maintain a mailing list
-without interaction with the system administration,
-even if the alias file is protected.
-.pp
-It is not necessary to rebuild the index on the alias database
-when a :include: list is changed.
-.sh 2 "Message Collection"
-.pp
-Once all recipient addresses are parsed and verified,
-the message is collected.
-The message comes in two parts:
-a message header and a message body,
-separated by a blank line.
-.pp
-The header is formatted as a series of lines
-of the form
-.(b
- field-name: field-value
-.)b
-Field-value can be split across lines by starting the following
-lines with a space or a tab.
-Some header fields have special internal meaning,
-and have appropriate special processing.
-Other headers are simply passed through.
-Some header fields may be added automatically,
-such as time stamps.
-.pp
-The body is a series of text lines.
-It is completely uninterpreted and untouched,
-except that lines beginning with a dot
-have the dot doubled
-when transmitted over an SMTP channel.
-This extra dot is stripped by the receiver.
-.sh 2 "Message Delivery"
-.pp
-The send queue is ordered by receiving host
-before transmission
-to implement message batching.
-Each address is marked as it is sent
-so rescanning the list is safe.
-An argument list is built as the scan proceeds.
-Mail to files is detected during the scan of the send list.
-The interface to the mailer
-is performed using one of the techniques
-described in section 2.2.
-.pp
-After a connection is established,
-.i sendmail
-makes the per-mailer changes to the header
-and sends the result to the mailer.
-If any mail is rejected by the mailer,
-a flag is set to invoke the return-to-sender function
-after all delivery completes.
-.sh 2 "Queued Messages"
-.pp
-If the mailer returns a
-.q "temporary failure"
-exit status,
-the message is queued.
-A control file is used to describe the recipients to be sent to
-and various other parameters.
-This control file is formatted as a series of lines,
-each describing a sender,
-a recipient,
-the time of submission,
-or some other salient parameter of the message.
-The header of the message is stored
-in the control file,
-so that the associated data file in the queue
-is just the temporary file that was originally collected.
-.sh 2 "Configuration"
-.pp
-Configuration is controlled primarily by a configuration file
-read at startup.
-.i Sendmail
-should not need to be recomplied except
-.np
-To change operating systems
-(V6, V7/32V, 4BSD).
-.np
-To remove or insert the DBM
-(UNIX database)
-library.
-.np
-To change ARPANET reply codes.
-.np
-To add headers fields requiring special processing.
-.lp
-Adding mailers or changing parsing
-(i.e., rewriting)
-or routing information
-does not require recompilation.
-.pp
-If the mail is being sent by a local user,
-and the file
-.q .mailcf
-exists in the sender's home directory,
-that file is read as a configuration file
-after the system configuration file.
-The primary use of this feature is to add header lines.
-.pp
-The configuration file encodes macro definitions,
-header definitions,
-mailer definitions,
-rewriting rules,
-and options.
-.sh 3 Macros
-.pp
-Macros can be used in three ways.
-Certain macros transmit
-unstructured textual information
-into the mail system,
-such as the name
-.i sendmail
-will use to identify itself in error messages.
-Other macros transmit information from
-.i sendmail
-to the configuration file
-for use in creating other fields
-(such as argument vectors to mailers);
-e.g., the name of the sender,
-and the host and user
-of the recipient.
-Other macros are unused internally,
-and can be used as shorthand in the configuration file.
-.sh 3 "Header declarations"
-.pp
-Header declarations inform
-.i sendmail
-of the format of known header lines.
-Knowledge of a few header lines
-is built into
-.i sendmail ,
-such as the
-.q From:
-and
-.q Date:
-lines.
-.pp
-Most configured headers
-will be automatically inserted
-in the outgoing message
-if they don't exist in the incoming message.
-Certain headers are suppressed by some mailers.
-.sh 3 "Mailer declarations"
-.pp
-Mailer declarations tell
-.i sendmail
-of the various mailers available to it.
-The definition specifies the internal name of the mailer,
-the pathname of the program to call,
-some flags associated with the mailer,
-and an argument vector to be used on the call;
-this vector is macro-expanded before use.
-.sh 3 "Address rewriting rules"
-.pp
-The heart of address parsing in
-.i sendmail
-is a set of rewriting rules.
-These are an ordered list of pattern-replacement rules,
-(somewhat like a production system,
-except that order is critical),
-which are applied to each address.
-The address is rewritten textually until it is either rewritten
-into a special canonical form
-(i.e.,
-a (mailer, host, user)
-3-tuple,
-such as {arpanet, usc-isif, postel}
-representing the address
-.q "postel@usc-isif" ),
-or it falls off the end.
-When a pattern matches,
-the rule is reapplied until it fails.
-.pp
-The configuration file also supports the editing of addresses
-into different formats.
-For example,
-an address of the form:
-.(b
-ucsfcgl!tef
-.)b
-might be mapped into:
-.(b
-tef@ucsfcgl.UUCP
-.)b
-to conform to the domain syntax.
-Translations can also be done in the other direction.
-.sh 3 "Option setting"
-.pp
-There are several options that can be set
-from the configuration file.
-These include the pathnames of various support files,
-timeouts,
-default modes,
-etc.
-.sh 1 "COMPARISON WITH OTHER MAILERS"
-.sh 2 "Delivermail"
-.pp
-.i Sendmail
-is an outgrowth of
-.i delivermail .
-The primary differences are:
-.np
-Configuration information is not compiled in.
-This change simplifies many of the problems
-of moving to other machines.
-It also allows easy debugging of new mailers.
-.np
-Address parsing is more flexible.
-For example,
-.i delivermail
-only supported one gateway to any network,
-whereas
-.i sendmail
-can be sensitive to host names
-and reroute to different gateways.
-.np
-Forwarding and
-:include:
-features eliminate the requirement that the system alias file
-be writable by any user
-(or that an update program be written,
-or that the system administration make all changes).
-.np
-.i Sendmail
-supports message batching across networks
-when a message is being sent to multiple recipients.
-.np
-A mail queue is provided in
-.i sendmail.
-Mail that cannot be delivered immediately
-but can potentially be delivered later
-is stored in this queue for a later retry.
-The queue also provides a buffer against system crashes;
-after the message has been collected
-it may be reliably redelivered
-even if the system crashes during the initial delivery.
-.np
-.i Sendmail
-uses the networking support provided by 4.2BSD
-to provide a direct interface networks such as the ARPANET
-and/or Ethernet
-using SMTP (the Simple Mail Transfer Protocol)
-over a TCP/IP connection.
-.sh 2 "MMDF"
-.pp
-MMDF
-[Crocker79]
-spans a wider problem set than
-.i sendmail .
-For example,
-the domain of
-MMDF includes a
-.q "phone network"
-mailer, whereas
-.i sendmail
-calls on preexisting mailers in most cases.
-.pp
-MMDF and
-.i sendmail
-both support aliasing,
-customized mailers,
-message batching,
-automatic forwarding to gateways,
-queueing,
-and retransmission.
-MMDF supports two-stage timeout,
-which
-.i sendmail
-does not support.
-.pp
-The configuration for MMDF
-is compiled into the code\**.
-.(f
-\**Dynamic configuration tables are currently being considered
-for MMDF;
-allowing the installer to select either compiled
-or dynamic tables.
-.)f
-.pp
-Since MMDF does not consider backwards compatibility
-as a design goal,
-the address parsing is simpler but much less flexible.
-.pp
-It is somewhat harder to integrate a new channel\**
-.(f
-\**The MMDF equivalent of a
-.i sendmail
-.q mailer.
-.)f
-into MMDF.
-In particular,
-MMDF must know the location and format
-of host tables for all channels,
-and the channel must speak a special protocol.
-This allows MMDF to do additional verification
-(such as verifying host names)
-at submission time.
-.pp
-MMDF strictly separates the submission and delivery phases.
-Although
-.i sendmail
-has the concept of each of these stages,
-they are integrated into one program,
-whereas in MMDF they are split into two programs.
-.sh 2 "Message Processing Module"
-.pp
-The Message Processing Module (MPM)
-discussed by Postel [Postel79b]
-matches
-.i sendmail
-closely in terms of its basic architecture.
-However,
-like MMDF,
-the MPM includes the network interface software
-as part of its domain.
-.pp
-MPM also postulates a duplex channel to the receiver,
-as does MMDF,
-thus allowing simpler handling of errors
-by the mailer
-than is possible in
-.i sendmail .
-When a message queued by
-.i sendmail
-is sent,
-any errors must be returned to the sender
-by the mailer itself.
-Both MPM and MMDF mailers
-can return an immediate error response,
-and a single error processor can create an appropriate response.
-.pp
-MPM prefers passing the message as a structured object,
-with type-length-value tuples\**.
-.(f
-\**This is similar to the NBS standard.
-.)f
-Such a convention requires a much higher degree of cooperation
-between mailers than is required by
-.i sendmail .
-MPM also assumes a universally agreed upon internet name space
-(with each address in the form of a net-host-user tuple),
-which
-.i sendmail
-does not.
-.sh 1 "EVALUATIONS AND FUTURE PLANS"
-.pp
-.i Sendmail
-is designed to work in a nonhomogeneous environment.
-Every attempt is made to avoid imposing unnecessary constraints
-on the underlying mailers.
-This goal has driven much of the design.
-One of the major problems
-has been the lack of a uniform address space,
-as postulated in [Postel79a]
-and [Postel79b].
-.pp
-A nonuniform address space implies that a path will be specified
-in all addresses,
-either explicitly (as part of the address)
-or implicitly
-(as with implied forwarding to gateways).
-This restriction has the unpleasant effect of making replying to messages
-exceedingly difficult,
-since there is no one
-.q address
-for any person,
-but only a way to get there from wherever you are.
-.pp
-Interfacing to mail programs
-that were not initially intended to be applied
-in an internet environment
-has been amazingly successful,
-and has reduced the job to a manageable task.
-.pp
-.i Sendmail
-has knowledge of a few difficult environments
-built in.
-It generates ARPANET FTP/SMTP compatible error messages
-(prepended with three-digit numbers
-[Neigus73, Postel74, Postel82])
-as necessary,
-optionally generates UNIX-style
-.q From
-lines on the front of messages for some mailers,
-and knows how to parse the same lines on input.
-Also,
-error handling has an option customized for BerkNet.
-.pp
-The decision to avoid doing any type of delivery where possible
-(even, or perhaps especially, local delivery)
-has turned out to be a good idea.
-Even with local delivery,
-there are issues of the location of the mailbox,
-the format of the mailbox,
-the locking protocol used,
-etc.,
-that are best decided by other programs.
-One surprisingly major annoyance in many internet mailers
-is that the location and format of local mail is built in.
-The feeling seems to be that local mail is so common
-that it should be efficient.
-This feeling is not born out by
-our experience;
-on the contrary,
-the location and format of mailboxes seems to vary widely
-from system to system.
-.pp
-The ability to automatically generate a response to incoming mail
-(by forwarding mail to a program)
-seems useful
-(\c
-.q "I am on vacation until late August...." )
-but can create problems
-such as forwarding loops
-(two people on vacation whose programs send notes back and forth,
-for instance)
-if these programs are not well written.
-A program could be written to do standard tasks correctly,
-but this would solve the general case.
-.pp
-It might be desirable to implement some form of load limiting.
-I am unaware of any mail system that addresses this problem,
-nor am I aware of any reasonable solution at this time.
-.pp
-The configuration file is currently practically inscrutable;
-considerable convenience could be realized
-with a higher-level format.
-.pp
-It seems clear that common protocols will be changing soon
-to accommodate changing requirements and environments.
-These changes will include modifications to the message header
-(e.g., [NBS80])
-or to the body of the message itself
-(such as for multimedia messages
-[Postel80]).
-Experience indicates that
-these changes should be relatively trivial to integrate
-into the existing system.
-.pp
-In tightly coupled environments,
-it would be nice to have a name server
-such as Grapvine
-[Birrell82]
-integrated into the mail system.
-This would allow a site such as
-.q Berkeley
-to appear as a single host,
-rather than as a collection of hosts,
-and would allow people to move transparently among machines
-without having to change their addresses.
-Such a facility
-would require an automatically updated database
-and some method of resolving conflicts.
-Ideally this would be effective even without
-all hosts being under
-a single management.
-However,
-it is not clear whether this feature
-should be integrated into the
-aliasing facility
-or should be considered a
-.q "value added"
-feature outside
-.i sendmail
-itself.
-.pp
-As a more interesting case,
-the CSNET name server
-[Solomon81]
-provides an facility that goes beyond a single
-tightly-coupled environment.
-Such a facility would normally exist outside of
-.i sendmail
-however.
-.sh 0 "ACKNOWLEDGEMENTS"
-.pp
-Thanks are due to Kurt Shoens for his continual cheerful
-assistance and good advice,
-Bill Joy for pointing me in the correct direction
-(over and over),
-and Mark Horton for more advice,
-prodding,
-and many of the good ideas.
-Kurt and Eric Schmidt are to be credited
-for using
-.i delivermail
-as a server for their programs
-(\c
-.i Mail
-and BerkNet respectively)
-before any sane person should have,
-and making the necessary modifications
-promptly and happily.
-Eric gave me considerable advice about the perils
-of network software which saved me an unknown
-amount of work and grief.
-Mark did the original implementation of the DBM version
-of aliasing, installed the VFORK code,
-wrote the current version of
-.i rmail ,
-and was the person who really convinced me
-to put the work into
-.i delivermail
-to turn it into
-.i sendmail .
-Kurt deserves accolades for using
-.i sendmail
-when I was myself afraid to take the risk;
-how a person can continue to be so enthusiastic
-in the face of so much bitter reality is beyond me.
-.pp
-Kurt,
-Mark,
-Kirk McKusick,
-Marvin Solomon,
-and many others have reviewed this paper,
-giving considerable useful advice.
-.pp
-Special thanks are reserved for Mike Stonebraker at Berkeley
-and Bob Epstein at Britton-Lee,
-who both knowingly allowed me to put so much work into this
-project
-when there were so many other things I really should
-have been working on.
-.+c
-.ce
-REFERENCES
-.nr ii 1.5i
-.ip [Birrell82]
-Birrell, A. D.,
-Levin, R.,
-Needham, R. M.,
-and
-Schroeder, M. D.,
-.q "Grapevine: An Exercise in Distributed Computing."
-In
-.ul
-Comm. A.C.M. 25,
-4,
-April 82.
-.ip [Borden79]
-Borden, S.,
-Gaines, R. S.,
-and
-Shapiro, N. Z.,
-.ul
-The MH Message Handling System: Users' Manual.
-R-2367-PAF.
-Rand Corporation.
-October 1979.
-.ip [Crocker77a]
-Crocker, D. H.,
-Vittal, J. J.,
-Pogran, K. T.,
-and
-Henderson, D. A. Jr.,
-.ul
-Standard for the Format of ARPA Network Text Messages.
-RFC 733,
-NIC 41952.
-In [Feinler78].
-November 1977.
-.ip [Crocker77b]
-Crocker, D. H.,
-.ul
-Framework and Functions of the MS Personal Message System.
-R-2134-ARPA,
-Rand Corporation,
-Santa Monica, California.
-1977.
-.ip [Crocker79]
-Crocker, D. H.,
-Szurkowski, E. S.,
-and
-Farber, D. J.,
-.ul
-An Internetwork Memo Distribution Facility \*- MMDF.
-6th Data Communication Symposium,
-Asilomar.
-November 1979.
-.ip [Crocker82]
-Crocker, D. H.,
-.ul
-Standard for the Format of Arpa Internet Text Messages.
-RFC 822.
-Network Information Center,
-SRI International,
-Menlo Park, California.
-August 1982.
-.ip [Metcalfe76]
-Metcalfe, R.,
-and
-Boggs, D.,
-.q "Ethernet: Distributed Packet Switching for Local Computer Networks" ,
-.ul
-Communications of the ACM 19,
-7.
-July 1976.
-.ip [Feinler78]
-Feinler, E.,
-and
-Postel, J.
-(eds.),
-.ul
-ARPANET Protocol Handbook.
-NIC 7104,
-Network Information Center,
-SRI International,
-Menlo Park, California.
-1978.
-.ip [NBS80]
-National Bureau of Standards,
-.ul
-Specification of a Draft Message Format Standard.
-Report No. ICST/CBOS 80-2.
-October 1980.
-.ip [Neigus73]
-Neigus, N.,
-.ul
-File Transfer Protocol for the ARPA Network.
-RFC 542, NIC 17759.
-In [Feinler78].
-August, 1973.
-.ip [Nowitz78a]
-Nowitz, D. A.,
-and
-Lesk, M. E.,
-.ul
-A Dial-Up Network of UNIX Systems.
-Bell Laboratories.
-In
-UNIX Programmer's Manual, Seventh Edition,
-Volume 2.
-August, 1978.
-.ip [Nowitz78b]
-Nowitz, D. A.,
-.ul
-Uucp Implementation Description.
-Bell Laboratories.
-In
-UNIX Programmer's Manual, Seventh Edition,
-Volume 2.
-October, 1978.
-.ip [Postel74]
-Postel, J.,
-and
-Neigus, N.,
-Revised FTP Reply Codes.
-RFC 640, NIC 30843.
-In [Feinler78].
-June, 1974.
-.ip [Postel77]
-Postel, J.,
-.ul
-Mail Protocol.
-NIC 29588.
-In [Feinler78].
-November 1977.
-.ip [Postel79a]
-Postel, J.,
-.ul
-Internet Message Protocol.
-RFC 753,
-IEN 85.
-Network Information Center,
-SRI International,
-Menlo Park, California.
-March 1979.
-.ip [Postel79b]
-Postel, J. B.,
-.ul
-An Internetwork Message Structure.
-In
-.ul
-Proceedings of the Sixth Data Communications Symposium,
-IEEE.
-New York.
-November 1979.
-.ip [Postel80]
-Postel, J. B.,
-.ul
-A Structured Format for Transmission of Multi-Media Documents.
-RFC 767.
-Network Information Center,
-SRI International,
-Menlo Park, California.
-August 1980.
-.ip [Postel82]
-Postel, J. B.,
-.ul
-Simple Mail Transfer Protocol.
-RFC821
-(obsoleting RFC788).
-Network Information Center,
-SRI International,
-Menlo Park, California.
-August 1982.
-.ip [Schmidt79]
-Schmidt, E.,
-.ul
-An Introduction to the Berkeley Network.
-University of California, Berkeley California.
-1979.
-.ip [Shoens79]
-Shoens, K.,
-.ul
-Mail Reference Manual.
-University of California, Berkeley.
-In UNIX Programmer's Manual,
-Seventh Edition,
-Volume 2C.
-December 1979.
-.ip [Sluizer81]
-Sluizer, S.,
-and
-Postel, J. B.,
-.ul
-Mail Transfer Protocol.
-RFC 780.
-Network Information Center,
-SRI International,
-Menlo Park, California.
-May 1981.
-.ip [Solomon81]
-Solomon, M., Landweber, L., and Neuhengen, D.,
-.q "The Design of the CSNET Name Server."
-CS-DN-2,
-University of Wisconsin, Madison.
-November 1981.
-.ip [Su82]
-Su, Zaw-Sing,
-and
-Postel, Jon,
-.ul
-The Domain Naming Convention for Internet User Applications.
-RFC819.
-Network Information Center,
-SRI International,
-Menlo Park, California.
-August 1982.
-.ip [UNIX83]
-.ul
-The UNIX Programmer's Manual, Seventh Edition,
-Virtual VAX-11 Version,
-Volume 1.
-Bell Laboratories,
-modified by the University of California,
-Berkeley, California.
-March, 1983.
diff --git a/share/doc/smm/17.password/Makefile b/share/doc/smm/17.password/Makefile
deleted file mode 100644
index 5ca01c3cc78..00000000000
--- a/share/doc/smm/17.password/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-# $OpenBSD: Makefile,v 1.2 2004/02/01 14:22:45 jmc Exp $
-
-DIR= smm/17.password
-SRCS= password.ms
-MACROS= -ms
-
-paper.ps: ${SRCS}
- ${TBL} ${SRCS} | ${EQN} | ${ROFF} > ${.TARGET}
-
-paper.txt: ${SRCS}
- ${TBL} ${SRCS} | ${EQN} -Tascii | ${ROFF} -Tascii > ${.TARGET}
-
-.include <bsd.doc.mk>
diff --git a/share/doc/smm/17.password/password.ms b/share/doc/smm/17.password/password.ms
deleted file mode 100644
index 9edcd44cc26..00000000000
--- a/share/doc/smm/17.password/password.ms
+++ /dev/null
@@ -1,601 +0,0 @@
-.\" $OpenBSD: password.ms,v 1.2 2004/04/06 10:00:32 jmc Exp $
-.\"
-.\" Copyright (C) Caldera International Inc. 2001-2002.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code and documentation must retain the above
-.\" copyright notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed or owned by Caldera
-.\" International, Inc.
-.\" 4. Neither the name of Caldera International, Inc. nor the names of other
-.\" contributors may be used to endorse or promote products derived from
-.\" this software without specific prior written permission.
-.\"
-.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
-.\" INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
-.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-.\" IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE LIABLE FOR ANY DIRECT,
-.\" INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-.\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-.\" SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
-.\" IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-.\" POSSIBILITY OF SUCH DAMAGE.
-.\"
-.\" @(#)password.ms 8.1 (Berkeley) 6/8/93
-.\"
-.\" tbl mm ^ eqn ^ troff -ms
-.if n \{\
-.po 5n
-.ll 70n
-.\}
-.EH 'SMM:17-%''Password Security: A Case History'
-.OH 'Password Security: A Case History''SMM:17-%'
-.EQ
-delim $$
-.EN
-.\".RP
-.\" TM 78-1271-5 39199 39199-11
-.ND April 3, 1978
-.TL
-Password Security:
-A Case History
-.\" .OK
-.\"Encryption
-.\"Computing
-.AU "MH 2C-524" 3878
-Robert Morris
-.AU "MH 2C-523" 2394
-Ken Thompson
-.AI
-AT&T Bell Laboratories
-Murray Hill, NJ
-.AB
-This paper describes the history of the design of the
-password security scheme on a remotely accessed time-sharing
-system.
-The present design was the result of countering
-observed attempts to penetrate the system.
-The result is a compromise between extreme security and
-ease of use.
-.AE
-.\" .CS 6 0 6 0 0 4
-.SH
-INTRODUCTION
-.PP
-Password security on the
-.UX
-time-sharing system [1] is provided by a
-collection of programs
-whose elaborate and strange design is the outgrowth of
-many years of experience with earlier versions.
-To help develop a secure system, we have had a continuing
-competition to devise new ways to
-attack the security of the system (the bad guy) and, at the same time, to
-devise new techniques to resist the new attacks (the good guy).
-This competition has been in the same vein as the
-competition of long standing between manufacturers of armor
-plate and those of armor-piercing shells.
-For this reason, the description that follows will
-trace the history of the password system rather than simply
-presenting the program in its current state.
-In this way, the reasons for the design will be made clearer,
-as the design cannot be understood without also
-understanding the potential attacks.
-.PP
-An underlying goal has been to provide password security
-at minimal inconvenience to the users of the system.
-For example, those who want to run a completely open
-system without passwords, or to have passwords only at the
-option of the individual users, are able to do so, while
-those who require all of their users to have passwords
-gain a high degree of security
-against penetration of the system by unauthorized
-users.
-.PP
-The password system must be able not only to prevent
-any access to the system by unauthorized users
-(i.e. prevent them from logging in at all),
-but it must also
-prevent users who are already logged in from doing
-things that they are not authorized to do.
-The so called ``super-user'' password, for example, is especially
-critical because the super-user has all sorts of
-permissions and has essentially unlimited access to
-all system resources.
-.PP
-Password security is of course only one component of
-overall system security, but it is an essential component.
-Experience has shown that attempts to penetrate
-remote-access systems have been astonishingly
-sophisticated.
-.PP
-Remote-access systems are peculiarly vulnerable to
-penetration by outsiders as there are threats at the
-remote terminal, along the communications link, as well
-as at the computer itself.
-Although the security of a password encryption algorithm
-is an interesting intellectual and mathematical problem,
-it is only one tiny facet of a very large problem.
-In practice, physical security of the computer, communications
-security of the communications link, and physical control
-of the computer itself loom as far more important issues.
-Perhaps most important of all is control over the actions
-of ex-employees, since they are not under any direct control
-and they may have intimate
-knowledge about the system, its resources, and
-methods of access.
-Good system security involves realistic
-evaluation of the risks not only of deliberate
-attacks but also of casual unauthorized access
-and accidental disclosure.
-.SH
-PROLOGUE
-.PP
-The UNIX system was first implemented with a password file that contained
-the actual passwords of all the users, and for that reason
-the password file had to
-be heavily protected against being either read or written.
-Although historically, this had been the technique used
-for remote-access systems,
-it was completely unsatisfactory for several reasons.
-.PP
-The technique is excessively vulnerable to lapses in
-security.
-Temporary loss of protection can occur when
-the password file is being edited or otherwise modified.
-There is no way to prevent the making of copies by
-privileged users.
-Experience with several earlier remote-access systems
-showed that such lapses occur with frightening frequency.
-Perhaps the most memorable such occasion occurred
-in the early 60's when
-a system administrator on the CTSS system at MIT
-was editing the
-password file and another system administrator was editing
-the daily message that is printed on everyone's terminal
-on login.
-Due to a software design error, the temporary editor files
-of the two users were interchanged and thus, for a time, the password
-file was printed on every terminal when it was logged in.
-.PP
-Once such a lapse in security has been discovered, everyone's
-password must be changed, usually simultaneously, at a considerable
-administrative cost.
-This is not a great matter, but
-far more serious is the high probability of such lapses
-going unnoticed by the system administrators.
-.PP
-Security against unauthorized disclosure of the passwords was,
-in the last analysis, impossible with this system because,
-for example, if the
-contents of the file system are put on to magnetic tape for
-backup, as they must be, then anyone who has physical
-access to the tape
-can read anything on it with no restriction.
-.PP
-Many programs must get information of various kinds
-about the users of the system, and these programs in general
-should have no special permission to read the password file.
-The information which should have been in the password file actually was
-distributed (or replicated) into a number of files, all of
-which had to be updated whenever a user was added to or
-dropped from the system.
-.SH
-THE FIRST SCHEME
-.PP
-The obvious solution is to arrange that the passwords not
-appear in the system at all, and it is not difficult to decide
-that this can be done by encrypting each user's password,
-putting only the encrypted form in the password file, and
-throwing away his original password (the one that
-he typed in).
-When the user later tries to log in to the system, the password
-that he types is encrypted and compared with the encrypted
-version in the password file.
-If the two match, his login attempt is accepted.
-Such a scheme was first described
-in [3, p.91ff.].
-It also seemed advisable to devise
-a system in which neither the password file nor the
-password program itself needed to be
-protected against being read by anyone.
-.PP
-All that was needed to implement these ideas
-was to find a means of encryption that was very difficult
-to invert, even when the encryption program
-is available.
-Most of the standard encryption methods used (in the past)
-for encryption of messages are rather easy to invert.
-A convenient and rather good encryption program happened
-to exist on the system at the time; it simulated the
-M-209 cipher machine [4]
-used by the U.S. Army during World War II.
-It turned out that the M-209 program was usable, but with
-a given key, the ciphers produced by this program are
-trivial to invert.
-It is a much more difficult matter to find out the key
-given the cleartext input and the enciphered output of the program.
-Therefore,
-the password was used not as the text to be encrypted but as the
-key, and a constant was encrypted using this key.
-The encrypted result was entered into the password file.
-.SH
-ATTACKS ON THE FIRST APPROACH
-.PP
-Suppose that the bad guy has available
-the text of the password encryption program and
-the complete password file.
-Suppose also that he has substantial computing
-capacity at his disposal.
-.PP
-One obvious approach to penetrating the password
-mechanism is to attempt to find a general method of inverting
-the encryption algorithm.
-Very possibly this can be done, but few
-successful results
-have come to light, despite substantial efforts extending
-over a period of more than five years.
-The results have not proved to be very useful
-in penetrating systems.
-.PP
-Another approach to penetration is simply to keep trying
-potential
-passwords until one succeeds; this is a general cryptanalytic
-approach called
-.I
-key search.
-.R
-Human beings being what they are, there is a strong tendency
-for people to choose relatively short and simple passwords that
-they can remember.
-Given free choice, most people will choose their passwords
-from a restricted character set (e.g. all lower-case letters),
-and will often choose words or names.
-This human habit makes the key search job a great deal easier.
-.PP
-The critical factor involved in key search is the amount of
-time needed to encrypt a potential password and to check the result
-against an entry in the password file.
-The running time to encrypt one trial password and check
-the result turned out to be approximately 1.25 milliseconds on
-a PDP-11/70 when the encryption algorithm was recoded for
-maximum speed.
-It is takes essentially no more time to test the encrypted
-trial password against all the passwords in
-an entire password file, or for that matter, against
-any collection of encrypted passwords, perhaps collected
-from many installations.
-.PP
-If we want to check all passwords of length
-.I
-n
-.R
-that consist entirely of lower-case letters, the number
-of such passwords is $26 sup n$.
-If we suppose that the password consists of
-printable characters only, then the number of possible passwords
-is somewhat less than $95 sup n$.
-(The standard system ``character erase'' and ``line kill''
-characters are, for example, not prime
-candidates.)
-We can immediately estimate the running time of a program that
-will test every password of a given length with all of its
-characters chosen from some set of characters.
-The following table gives estimates of the running time
-required on a PDP-11/70
-to test all possible character strings of length $n$
-chosen from various sets of characters: namely, all lower-case
-letters, all lower-case letters plus digits,
-all alphanumeric characters, all 95 printable
-ASCII characters, and finally all 128 ASCII characters.
-.TS
-cccccc
-cccccc
-nnnnnn.
- 26 lower-case 36 lower-case letters 62 alphanumeric 95 printable all 128 ASCII
-n letters and digits characters characters characters
-.sp .5
-1 30 msec. 40 msec. 80 msec. 120 msec. 160 msec.
-2 800 msec. 2 sec. 5 sec. 11 sec. 20 sec.
-3 22 sec. 58 sec. 5 min. 17 min. 43 min.
-4 10 min. 35 min. 5 hrs. 28 hrs. 93 hrs.
-5 4 hrs. 21 hrs. 318 hrs.
-6 107 hrs.
-.TE
-.LP
-One has to conclude that it is no great matter for someone with
-access to a PDP-11 to test all lower-case alphabetic strings up
-to length five
-and, given access to the machine for, say, several weekends, to test
-all such strings up to six characters in length.
-By using such a program against a collection of actual encrypted
-passwords, a substantial fraction of all the passwords will be
-found.
-.PP
-Another profitable approach for the bad guy is to use the word
-list from a dictionary or to use a list of names.
-For example, a large commercial dictionary contains typicallly about
-250,000 words; these words can be checked in about five minutes.
-Again, a noticeable fraction of any collection of passwords
-will be found.
-Improvements and extensions will be (and have been) found by
-a determined bad guy.
-Some ``good'' things to try are:
-.IP -
-The dictionary with the words spelled backwards.
-.IP -
-A list of first names (best obtained from some mailing list).
-Last names, street names, and city names also work well.
-.IP -
-The above with initial upper-case letters.
-.IP -
-All valid license plate numbers in your state.
-(This takes about five hours in New Jersey.)
-.IP -
-Room numbers, social security numbers, telephone numbers, and
-the like.
-.PP
-The authors have conducted experiments to try to determine
-typical users' habits in the choice of passwords when no
-constraint is put on their choice.
-The results were disappointing, except to the bad guy.
-In a collection of 3,289 passwords
-gathered from many users over a long period of time;
-.IP
-15 were a single ASCII character;
-.IP
-72 were strings of two ASCII characters;
-.IP
-464 were strings of three ASCII characters;
-.IP
-477 were string of four alphamerics;
-.IP
-706 were five letters, all upper-case or all lower-case;
-.IP
-605 were six letters, all lower-case.
-.LP
-An additional 492 passwords appeared in various available
-dictionaries, name lists, and the like.
-A total of 2,831, or 86% of this sample of passwords fell into one of
-these classes.
-.PP
-There was, of course, considerable overlap between the
-dictionary results and the character string searches.
-The dictionary search alone, which required only five
-minutes to run, produced about one third of the passwords.
-.PP
-Users could be urged (or forced) to use either longer passwords
-or passwords chosen from a larger character set, or the system
-could itself choose passwords for the users.
-.SH
-AN ANECDOTE
-.PP
-An entertaining and instructive example is
-the attempt made at one installation to force users to use less predictable
-passwords.
-The users did not choose their own passwords; the system supplied
-them.
-The supplied passwords were eight characters long and
-were taken from the character set consisting of
-lower-case letters and digits.
-They were generated by a pseudo-random number generator
-with only $2 sup 15$ starting values.
-The time required to search (again on a PDP-11/70) through
-all character strings of length 8 from a 36-character
-alphabet is 112 years.
-.PP
-Unfortunately, only $2 sup 15$ of them need be looked at,
-because that is the number of possible outputs of the random
-number generator.
-The bad guy did, in fact, generate and test each of these strings
-and found every one of the system-generated passwords using
-a total of only about one minute of machine time.
-.SH
-IMPROVEMENTS TO THE FIRST APPROACH
-.NH
-Slower Encryption
-.PP
-Obviously, the first algorithm used was far too fast.
-The announcement of the DES encryption algorithm [2]
-by the National Bureau of Standards
-was timely and fortunate.
-The DES is, by design, hard to invert, but equally valuable
-is the fact that it is extremely slow when implemented in
-software.
-The DES was implemented and used in the following way:
-The first eight characters of the user's password are
-used as a key for the DES; then the algorithm
-is used to encrypt a constant.
-Although this constant is zero at the moment, it is easily
-accessible and can be made installation-dependent.
-Then the DES algorithm is iterated 25 times and the
-resulting 64 bits are repacked to become a string of
-11 printable characters.
-.NH
-Less Predictable Passwords
-.PP
-The password entry program was modified so as to urge
-the user to use more obscure passwords.
-If the user enters an alphabetic password (all upper-case or
-all lower-case) shorter than six characters, or a
-password from a larger character set shorter than five
-characters, then the program asks him to enter a
-longer password.
-This further reduces the efficacy of key search.
-.PP
-These improvements make it exceedingly difficult to find
-any individual password.
-The user is warned of the risks and if he cooperates,
-he is very safe indeed.
-On the other hand, he is not prevented from using
-his spouse's name if he wants to.
-.NH
-Salted Passwords
-.PP
-The key search technique is still
-likely to turn up a few passwords when it is used
-on a large collection of passwords, and it seemed wise to make this
-task as difficult as possible.
-To this end, when a password is first entered, the password program
-obtains a 12-bit random number (by reading the real-time clock)
-and appends this to the password typed in by the user.
-The concatenated string is encrypted and both the
-12-bit random quantity (called the $salt$) and the 64-bit
-result of the encryption are entered into the password
-file.
-.PP
-When the user later logs in to the system, the 12-bit
-quantity is extracted from the password file and appended
-to the typed password.
-The encrypted result is required, as before, to be the same as the
-remaining 64 bits in the password file.
-This modification does not increase the task of finding
-any individual
-password,
-starting from scratch,
-but now the work of testing a given character string
-against a large collection of encrypted passwords has
-been multiplied by 4096 ($2 sup 12$).
-The reason for this is that there are 4096 encrypted
-versions of each password and one of them has been picked more
-or less at random by the system.
-.PP
-With this modification,
-it is likely that the bad guy can spend days of computer
-time trying to find a password on a system with hundreds
-of passwords, and find none at all.
-More important is the fact that it becomes impractical
-to prepare an encrypted dictionary in advance.
-Such an encrypted dictionary could be used to crack
-new passwords in milliseconds when they appear.
-.PP
-There is a (not inadvertent) side effect of this
-modification.
-It becomes nearly impossible to find out whether a
-person with passwords on two or more systems has used
-the same password on all of them,
-unless you already know that.
-.NH
-The Threat of the DES Chip
-.PP
-Chips to perform the DES encryption are already commercially
-available and they are very fast.
-The use of such a chip speeds up the process of password
-hunting by three orders of magnitude.
-To avert this possibility, one of the internal tables
-of the DES algorithm
-(in particular, the so-called E-table)
-is changed in a way that depends on the 12-bit random
-number.
-The E-table is inseparably wired into the DES chip,
-so that the commercial chip cannot be used.
-Obviously, the bad guy could have his own chip designed and
-built, but the cost would be unthinkable.
-.NH
-A Subtle Point
-.PP
-To login successfully on the UNIX system, it is necessary
-after dialing in to type a valid user name, and then the
-correct password for that user name.
-It is poor design to write the login command in such a way that it
-tells an interloper when he has typed in a invalid user name.
-The response to an invalid name should be identical to
-that for a valid name.
-.PP
-When the slow encryption algorithm was first implemented,
-the encryption was done only if the user name was valid,
-because otherwise there was no encrypted password to
-compare with the supplied password.
-The result was that the response was delayed
-by about one-half second if the name was valid, but was
-immediate if invalid.
-The bad guy could find out
-whether a particular user name was valid.
-The routine was modified to do the encryption in either
-case.
-.SH
-CONCLUSIONS
-.PP
-On the issue of password security, UNIX is probably
-better than most systems.
-The use of encrypted passwords appears reasonably
-secure in the absence of serious attention of experts
-in the field.
-.PP
-It is also worth some effort to conceal even the encrypted
-passwords.
-Some UNIX systems have instituted what is called an
-``external security code'' that must be typed when
-dialing into the system, but before logging in.
-If this code is changed periodically, then someone
-with an old password will likely be prevented from
-using it.
-.PP
-Whenever any security procedure is instituted that attempts
-to deny access to unauthorized persons, it is wise to
-keep a record of both successful and unsuccessful attempts
-to get at the secured resource.
-Just as an out-of-hours visitor to a computer center normally
-must not only identify himself, but a record is usually also kept of
-his entry.
-Just so, it is a wise precaution to make and keep a record
-of all attempts to log into a remote-access time-sharing
-system, and certainly all unsuccessful attempts.
-.PP
-Bad guys fall on a spectrum whose one end is someone with
-ordinary access to a system and whose goal is to find
-out a particular password (usually that of the super-user)
-and, at the other end, someone who wishes to collect as
-much password information as possible from as many systems
-as possible.
-Most of the work reported here serves to frustrate the latter type;
-our experience indicates that the former type of bad guy never
-was very successful.
-.PP
-We recognize that a time-sharing system must operate in a
-hostile environment.
-We did not attempt to hide the security aspects of the operating
-system, thereby playing the customary make-believe game in
-which weaknesses of the system are not discussed no matter
-how apparent.
-Rather we advertised the password algorithm and invited attack
-in the belief that this approach would minimize future trouble.
-The approach has been successful.
-.\" .SG MH-1271-RM/KT
-.SH
-References
-.IP [1]
-Ritchie, D.M. and Thompson, K.
-The UNIX Time-Sharing System.
-.I
-Comm. ACM
-.B
-17
-.R
-(July 1974),
-pp. 365-375.
-.IP [2]
-.I
-Proposed Federal Information Processing Data Encryption Standard.
-.R
-Federal Register (40FR12134), March 17, 1975
-.IP [3]
-Wilkes, M. V.
-.I
-Time-Sharing Computer Systems.
-.R
-American Elsevier,
-New York, (1968).
-.IP [4]
-U. S. Patent Number 2,089,603.
diff --git a/share/doc/smm/18.net/0.t b/share/doc/smm/18.net/0.t
deleted file mode 100644
index cb36a129580..00000000000
--- a/share/doc/smm/18.net/0.t
+++ /dev/null
@@ -1,182 +0,0 @@
-.\" $OpenBSD: 0.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1983, 1986, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)0.t 8.1 (Berkeley) 6/10/93
-.\"
-.de IR
-\fI\\$1\fP\\$2
-..
-.if n .ND
-.TL
-Networking Implementation Notes
-.br
-4.4BSD Edition
-.AU
-Samuel J. Leffler, William N. Joy, Robert S. Fabry, and Michael J. Karels
-.AI
-Computer Systems Research Group
-Computer Science Division
-Department of Electrical Engineering and Computer Science
-University of California, Berkeley
-Berkeley, CA 94720
-.AB
-.FS
-* UNIX is a trademark of Bell Laboratories.
-.FE
-This report describes the internal structure of the
-networking facilities developed for the 4.4BSD version
-of the UNIX* operating system
-for the VAX\(dg. These facilities
-.FS
-\(dg DEC, VAX, DECnet, and UNIBUS are trademarks of
-Digital Equipment Corporation.
-.FE
-are based on several central abstractions which
-structure the external (user) view of network communication
-as well as the internal (system) implementation.
-.PP
-The report documents the internal structure of the networking system.
-The ``Berkeley Software Architecture Manual, 4.4BSD Edition'' (PSD:5)
-provides a description of the user interface to the networking facilities.
-.sp
-.LP
-Revised June 10, 1993
-.AE
-.LP
-.\".de PT
-.\".lt \\n(LLu
-.\".pc %
-.\".nr PN \\n%
-.\".tl '\\*(LH'\\*(CH'\\*(RH'
-.\".lt \\n(.lu
-.\"..
-.\".ds RH Contents
-.OH 'Networking Implementation Notes''SMM:18-%'
-.EH 'SMM:18-%''Networking Implementation Notes'
-.bp
-.ce
-.B "TABLE OF CONTENTS"
-.LP
-.sp 1
-.nf
-.B "1. Introduction"
-.LP
-.sp .5v
-.nf
-.B "2. Overview"
-.LP
-.sp .5v
-.nf
-.B "3. Goals
-.LP
-.sp .5v
-.nf
-.B "4. Internal address representation"
-.LP
-.sp .5v
-.nf
-.B "5. Memory management"
-.LP
-.sp .5v
-.nf
-.B "6. Internal layering
-6.1. Socket layer
-6.1.1. Socket state
-6.1.2. Socket data queues
-6.1.3. Socket connection queuing
-6.2. Protocol layer(s)
-6.3. Network-interface layer
-6.3.1. UNIBUS interfaces
-.LP
-.sp .5v
-.nf
-.B "7. Socket/protocol interface"
-.LP
-.sp .5v
-.nf
-.B "8. Protocol/protocol interface"
-8.1. pr_output
-8.2. pr_input
-8.3. pr_ctlinput
-8.4. pr_ctloutput
-.LP
-.sp .5v
-.nf
-.B "9. Protocol/network-interface interface"
-9.1. Packet transmission
-9.2. Packet reception
-.LP
-.sp .5v
-.nf
-.B "10. Gateways and routing issues
-10.1. Routing tables
-10.2. Routing table interface
-10.3. User level routing policies
-.LP
-.sp .5v
-.nf
-.B "11. Raw sockets"
-11.1. Control blocks
-11.2. Input processing
-11.3. Output processing
-.LP
-.sp .5v
-.nf
-.B "12. Buffering and congestion control"
-12.1. Memory management
-12.2. Protocol buffering policies
-12.3. Queue limiting
-12.4. Packet forwarding
-.LP
-.sp .5v
-.nf
-.B "13. Out of band data"
-.LP
-.sp .5v
-.nf
-.B "14. Trailer protocols"
-.LP
-.sp .5v
-.nf
-.B Acknowledgements
-.LP
-.sp .5v
-.nf
-.B References
-.bp
-.de _d
-.if t .ta .6i 2.1i 2.6i
-.\" 2.94 went to 2.6, 3.64 to 3.30
-.if n .ta .84i 2.6i 3.30i
-..
-.de _f
-.if t .ta .5i 1.25i 2.5i
-.\" 3.5i went to 3.8i
-.if n .ta .7i 1.75i 3.8i
-..
diff --git a/share/doc/smm/18.net/1.t b/share/doc/smm/18.net/1.t
deleted file mode 100644
index 7af903fae07..00000000000
--- a/share/doc/smm/18.net/1.t
+++ /dev/null
@@ -1,64 +0,0 @@
-.\" $OpenBSD: 1.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1983, 1986, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)1.t 8.1 (Berkeley) 6/8/93
-.\"
-.\".ds RH Introduction
-.br
-.ne 2i
-.NH
-\s+2Introduction\s0
-.PP
-This report describes the internal structure of
-facilities added to the
-4.2BSD version of the UNIX operating system for
-the VAX,
-as modified in the 4.4BSD release.
-The system facilities provide
-a uniform user interface to networking
-within UNIX. In addition, the implementation
-introduces a structure for network communications which may be
-used by system implementors in adding new networking
-facilities. The internal structure is not visible
-to the user, rather it is intended to aid implementors
-of communication protocols and network services by
-providing a framework which
-promotes code sharing and minimizes implementation effort.
-.PP
-The reader is expected to be familiar with the C programming
-language and system interface, as described in the
-\fIBerkeley Software Architecture Manual, 4.4BSD Edition\fP [Joy86].
-Basic understanding of network
-communication concepts is assumed; where required
-any additional ideas are introduced.
-.PP
-The remainder of this document
-provides a description of the system internals,
-avoiding, when possible, those portions which are utilized only
-by the interprocess communication facilities.
diff --git a/share/doc/smm/18.net/2.t b/share/doc/smm/18.net/2.t
deleted file mode 100644
index 4240dc10c5f..00000000000
--- a/share/doc/smm/18.net/2.t
+++ /dev/null
@@ -1,83 +0,0 @@
-.\" $OpenBSD: 2.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1983, 1986, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)2.t 8.1 (Berkeley) 6/8/93
-.\"
-.nr H2 1
-.\".ds RH Overview
-.br
-.ne 2i
-.NH
-\s+2Overview\s0
-.PP
-If we consider
-the International Standards Organization's (ISO)
-Open System Interconnection (OSI) model of
-network communication [ISO81] [Zimmermann80],
-the networking facilities
-described here correspond to a portion of the
-session layer (layer 3) and all of the transport and
-network layers (layers 2 and 1, respectively).
-.PP
-The network layer provides possibly imperfect
-data transport services with minimal addressing
-structure.
-Addressing at this level is normally host to host,
-with implicit or explicit routing optionally supported
-by the communicating agents.
-.PP
-At the transport
-layer the notions of reliable transfer, data sequencing,
-flow control, and service addressing are normally
-included. Reliability is usually managed by
-explicit acknowledgement of data delivered. Failure
-to acknowledge a transfer results in retransmission of
-the data. Sequencing may be handled by tagging
-each message handed to the network layer by a
-\fIsequence number\fP and maintaining
-state at the endpoints of communication to utilize
-received sequence numbers in reordering data which
-arrives out of order.
-.PP
-The session layer facilities may provide forms of
-addressing which are mapped into formats required
-by the transport layer, service authentication
-and client authentication, etc. Various systems
-also provide services such as data encryption and
-address and protocol translation.
-.PP
-The following sections begin by describing some of the common
-data structures and utility routines, then examine
-the internal layering. The contents of each layer
-and its interface are considered. Certain of the
-interfaces are protocol implementation specific. For
-these cases examples have been drawn from the Internet [Cerf78]
-protocol family. Later sections cover routing issues,
-the design of the raw socket interface and other
-miscellaneous topics.
diff --git a/share/doc/smm/18.net/3.t b/share/doc/smm/18.net/3.t
deleted file mode 100644
index 4278acbd055..00000000000
--- a/share/doc/smm/18.net/3.t
+++ /dev/null
@@ -1,57 +0,0 @@
-.\" $OpenBSD: 3.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1983, 1986, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)3.t 8.1 (Berkeley) 6/8/93
-.\"
-.nr H2 1
-.\".ds RH Goals
-.br
-.ne 2i
-.NH
-\s+2Goals\s0
-.PP
-The networking system was designed with the goal of supporting
-multiple \fIprotocol families\fP and addressing styles. This required
-information to be ``hidden'' in common data structures which
-could be manipulated by all the pieces of the system, but which
-required interpretation only by the protocols which ``controlled''
-it. The system described here attempts to minimize
-the use of shared data structures to those kept by a suite of
-protocols (a \fIprotocol family\fP), and those used for rendezvous
-between ``synchronous'' and ``asynchronous'' portions of the
-system (e.g. queues of data packets are filled at interrupt
-time and emptied based on user requests).
-.PP
-A major goal of the system was to provide a framework within
-which new protocols and hardware could be easily be supported.
-To this end, a great deal of effort has been extended to
-create utility routines which hide many of the more
-complex and/or hardware dependent chores of networking.
-Later sections describe the utility routines and the underlying
-data structures they manipulate.
diff --git a/share/doc/smm/18.net/4.t b/share/doc/smm/18.net/4.t
deleted file mode 100644
index 5037106a47f..00000000000
--- a/share/doc/smm/18.net/4.t
+++ /dev/null
@@ -1,65 +0,0 @@
-.\" $OpenBSD: 4.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1983, 1986, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)4.t 8.1 (Berkeley) 6/8/93
-.\"
-.nr H2 1
-.\".ds RH "Address representation
-.br
-.ne 2i
-.NH
-\s+2Internal address representation\s0
-.PP
-Common to all portions of the system are two data structures.
-These structures are used to represent
-addresses and various data objects.
-Addresses, internally are described by the \fIsockaddr\fP structure,
-.DS
-._f
-struct sockaddr {
- short sa_family; /* data format identifier */
- char sa_data[14]; /* address */
-};
-.DE
-All addresses belong to one or more \fIaddress families\fP
-which define their format and interpretation.
-The \fIsa_family\fP field indicates the address family to which the address
-belongs, and the \fIsa_data\fP field contains the actual data value.
-The size of the data field, 14 bytes, was selected based on a study
-of current address formats.*
-Specific address formats use private structure definitions
-that define the format of the data field.
-The system interface supports larger address structures,
-although address-family-independent support facilities, for example routing
-and raw socket interfaces, provide only 14 bytes for address storage.
-Protocols that do not use those facilities (e.g, the current Unix domain)
-may use larger data areas.
-.FS
-* Later versions of the system may support variable length addresses.
-.FE
diff --git a/share/doc/smm/18.net/5.t b/share/doc/smm/18.net/5.t
deleted file mode 100644
index 006375527a1..00000000000
--- a/share/doc/smm/18.net/5.t
+++ /dev/null
@@ -1,182 +0,0 @@
-.\" $OpenBSD: 5.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1983, 1986, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)5.t 8.1 (Berkeley) 6/8/93
-.\"
-.nr H2 1
-.\".ds RH "Memory management
-.br
-.ne 2i
-.NH
-\s+2Memory management\s0
-.PP
-A single mechanism is used for data storage: memory buffers, or
-\fImbuf\fP's. An mbuf is a structure of the form:
-.DS
-._f
-struct mbuf {
- struct mbuf *m_next; /* next buffer in chain */
- u_long m_off; /* offset of data */
- short m_len; /* amount of data in this mbuf */
- short m_type; /* mbuf type (accounting) */
- u_char m_dat[MLEN]; /* data storage */
- struct mbuf *m_act; /* link in higher-level mbuf list */
-};
-.DE
-The \fIm_next\fP field is used to chain mbufs together on linked
-lists, while the \fIm_act\fP field allows lists of mbuf chains to be
-accumulated. By convention, the mbufs common to a single object
-(for example, a packet) are chained together with the \fIm_next\fP
-field, while groups of objects are linked via the \fIm_act\fP
-field (possibly when in a queue).
-.PP
-Each mbuf has a small data area for storing information, \fIm_dat\fP.
-The \fIm_len\fP field indicates the amount of data, while the \fIm_off\fP
-field is an offset to the beginning of the data from the base of the
-mbuf. Thus, for example, the macro \fImtod\fP, which converts a pointer
-to an mbuf to a pointer to the data stored in the mbuf, has the form
-.DS
-._d
-#define mtod(\fIx\fP,\fIt\fP) ((\fIt\fP)((int)(\fIx\fP) + (\fIx\fP)->m_off))
-.DE
-(note the \fIt\fP parameter, a C type cast, which is used to cast
-the resultant pointer for proper assignment).
-.PP
-In addition to storing data directly in the mbuf's data area, data
-of page size may be also be stored in a separate area of memory.
-The mbuf utility routines maintain
-a pool of pages for this purpose and manipulate a private page map
-for such pages.
-An mbuf with an external data area may be recognized by the larger
-offset to the data area;
-this is formalized by the macro M_HASCL(\fIm\fP), which is true
-if the mbuf whose address is \fIm\fP has an external page cluster.
-An array of reference counts on pages is also maintained
-so that copies of pages may be made without core to core
-copying (copies are created simply by duplicating the reference to the data
-and incrementing the associated reference counts for the pages).
-Separate data pages are currently used only
-when copying data from a user process into the kernel,
-and when bringing data in at the hardware level. Routines which
-manipulate mbufs are not normally aware whether data is stored directly in
-the mbuf data array, or if it is kept in separate pages.
-.PP
-The following may be used to allocate and free mbufs:
-.LP
-m = m_get(wait, type);
-.br
-MGET(m, wait, type);
-.IP
-The subroutine \fIm_get\fP and the macro \fIMGET\fP
-each allocate an mbuf, placing its address in \fIm\fP.
-The argument \fIwait\fP is either M_WAIT or M_DONTWAIT according
-to whether allocation should block or fail if no mbuf is available.
-The \fItype\fP is one of the predefined mbuf types for use in accounting
-of mbuf allocation.
-.IP "MCLGET(m);"
-This macro attempts to allocate an mbuf page cluster
-to associate with the mbuf \fIm\fP.
-If successful, the length of the mbuf is set to CLSIZE,
-the size of the page cluster.
-.LP
-n = m_free(m);
-.br
-MFREE(m,n);
-.IP
-The routine \fIm_free\fP and the macro \fIMFREE\fP
-each free a single mbuf, \fIm\fP, and any associated external storage area,
-placing a pointer to its successor in the chain it heads, if any, in \fIn\fP.
-.IP "m_freem(m);"
-This routine frees an mbuf chain headed by \fIm\fP.
-.PP
-The following utility routines are available for manipulating mbuf
-chains:
-.IP "m = m_copy(m0, off, len);"
-.br
-The \fIm_copy\fP routine create a copy of all, or part, of a
-list of the mbufs in \fIm0\fP. \fILen\fP bytes of data, starting
-\fIoff\fP bytes from the front of the chain, are copied.
-Where possible, reference counts on pages are used instead
-of core to core copies. The original mbuf chain must have at
-least \fIoff\fP + \fIlen\fP bytes of data. If \fIlen\fP is
-specified as M_COPYALL, all the data present, offset
-as before, is copied.
-.IP "m_cat(m, n);"
-.br
-The mbuf chain, \fIn\fP, is appended to the end of \fIm\fP.
-Where possible, compaction is performed.
-.IP "m_adj(m, diff);"
-.br
-The mbuf chain, \fIm\fP is adjusted in size by \fIdiff\fP
-bytes. If \fIdiff\fP is non-negative, \fIdiff\fP bytes
-are shaved off the front of the mbuf chain. If \fIdiff\fP
-is negative, the alteration is performed from back to front.
-No space is reclaimed in this operation; alterations are
-accomplished by changing the \fIm_len\fP and \fIm_off\fP
-fields of mbufs.
-.IP "m = m_pullup(m0, size);"
-.br
-After a successful call to \fIm_pullup\fP, the mbuf at
-the head of the returned list, \fIm\fP, is guaranteed
-to have at least \fIsize\fP
-bytes of data in contiguous memory within the data area of the mbuf
-(allowing access via a pointer, obtained using the \fImtod\fP macro,
-and allowing the mbuf to be located from a pointer to the data area
-using \fIdtom\fP, defined below).
-If the original data was less than \fIsize\fP bytes long,
-\fIlen\fP was greater than the size of an mbuf data
-area (112 bytes), or required resources were unavailable,
-\fIm\fP is 0 and the original mbuf chain is deallocated.
-.IP
-This routine is particularly useful when verifying packet
-header lengths on reception. For example, if a packet is
-received and only 8 of the necessary 16 bytes required
-for a valid packet header are present at the head of the list
-of mbufs representing the packet, the remaining 8 bytes
-may be ``pulled up'' with a single \fIm_pullup\fP call.
-If the call fails the invalid packet will have been discarded.
-.PP
-By insuring that mbufs always reside on 128 byte boundaries,
-it is always possible to locate the mbuf associated with a data
-area by masking off the low bits of the virtual address.
-This allows modules to store data structures in mbufs and
-pass them around without concern for locating the original
-mbuf when it comes time to free the structure.
-Note that this works only with objects stored in the internal data
-buffer of the mbuf.
-The \fIdtom\fP macro is used to convert a pointer into an mbuf's
-data area to a pointer to the mbuf,
-.DS
-#define dtom(x) ((struct mbuf *)((int)x & ~(MSIZE-1)))
-.DE
-.PP
-Mbufs are used for dynamically allocated data structures such as
-sockets as well as memory allocated for packets and headers. Statistics are
-maintained on mbuf usage and can be viewed by users using the
-\fInetstat\fP\|(1) program.
diff --git a/share/doc/smm/18.net/6.t b/share/doc/smm/18.net/6.t
deleted file mode 100644
index e8a4b99636e..00000000000
--- a/share/doc/smm/18.net/6.t
+++ /dev/null
@@ -1,662 +0,0 @@
-.\" $OpenBSD: 6.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1983, 1986, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)6.t 8.1 (Berkeley) 6/8/93
-.\"
-.nr H2 1
-.\".ds RH "Internal layering
-.br
-.ne 2i
-.NH
-\s+2Internal layering\s0
-.PP
-The internal structure of the network system is divided into
-three layers. These
-layers correspond to the services provided by the socket
-abstraction, those provided by the communication protocols,
-and those provided by the hardware interfaces. The communication
-protocols are normally layered into two or more individual
-cooperating layers, though they are collectively viewed
-in the system as one layer providing services supportive
-of the appropriate socket abstraction.
-.PP
-The following sections describe the properties of each layer
-in the system and the interfaces to which each must conform.
-.NH 2
-Socket layer
-.PP
-The socket layer deals with the interprocess communication
-facilities provided by the system. A socket is a bidirectional
-endpoint of communication which is ``typed'' by the semantics
-of communication it supports. The system calls described in
-the \fIBerkeley Software Architecture Manual\fP [Joy86]
-are used to manipulate sockets.
-.PP
-A socket consists of the following data structure:
-.DS
-._f
-struct socket {
- short so_type; /* generic type */
- short so_options; /* from socket call */
- short so_linger; /* time to linger while closing */
- short so_state; /* internal state flags */
- caddr_t so_pcb; /* protocol control block */
- struct protosw *so_proto; /* protocol handle */
- struct socket *so_head; /* back pointer to accept socket */
- struct socket *so_q0; /* queue of partial connections */
- short so_q0len; /* partials on so_q0 */
- struct socket *so_q; /* queue of incoming connections */
- short so_qlen; /* number of connections on so_q */
- short so_qlimit; /* max number queued connections */
- struct sockbuf so_rcv; /* receive queue */
- struct sockbuf so_snd; /* send queue */
- short so_timeo; /* connection timeout */
- u_short so_error; /* error affecting connection */
- u_short so_oobmark; /* chars to oob mark */
- short so_pgrp; /* pgrp for signals */
-};
-.DE
-.PP
-Each socket contains two data queues, \fIso_rcv\fP and \fIso_snd\fP,
-and a pointer to routines which provide supporting services.
-The type of the socket,
-\fIso_type\fP is defined at socket creation time and used in selecting
-those services which are appropriate to support it. The supporting
-protocol is selected at socket creation time and recorded in
-the socket data structure for later use. Protocols are defined
-by a table of procedures, the \fIprotosw\fP structure, which will
-be described in detail later. A pointer to a protocol-specific
-data structure,
-the ``protocol control block,'' is also present in the socket structure.
-Protocols control this data structure, which normally includes a
-back pointer to the parent socket structure to allow easy
-lookup when returning information to a user
-(for example, placing an error number in the \fIso_error\fP
-field). The other entries in the socket structure are used in
-queuing connection requests, validating user requests, storing
-socket characteristics (e.g.
-options supplied at the time a socket is created), and maintaining
-a socket's state.
-.PP
-Processes ``rendezvous at a socket'' in many instances. For instance,
-when a process wishes to extract data from a socket's receive queue
-and it is empty, or lacks sufficient data to satisfy the request,
-the process blocks, supplying the address of the receive queue as
-a ``wait channel' to be used in notification. When data arrives
-for the process and is placed in the socket's queue, the blocked
-process is identified by the fact it is waiting ``on the queue.''
-.NH 3
-Socket state
-.PP
-A socket's state is defined from the following:
-.DS
-.ta \w'#define 'u +\w'SS_ISDISCONNECTING 'u +\w'0x000 'u
-#define SS_NOFDREF 0x001 /* no file table ref any more */
-#define SS_ISCONNECTED 0x002 /* socket connected to a peer */
-#define SS_ISCONNECTING 0x004 /* in process of connecting to peer */
-#define SS_ISDISCONNECTING 0x008 /* in process of disconnecting */
-#define SS_CANTSENDMORE 0x010 /* can't send more data to peer */
-#define SS_CANTRCVMORE 0x020 /* can't receive more data from peer */
-#define SS_RCVATMARK 0x040 /* at mark on input */
-
-#define SS_PRIV 0x080 /* privileged */
-#define SS_NBIO 0x100 /* non-blocking ops */
-#define SS_ASYNC 0x200 /* async i/o notify */
-.DE
-.PP
-The state of a socket is manipulated both by the protocols
-and the user (through system calls).
-When a socket is created, the state is defined based on the type of socket.
-It may change as control actions are performed, for example connection
-establishment.
-It may also change according to the type of
-input/output the user wishes to perform, as indicated by options
-set with \fIfcntl\fP. ``Non-blocking'' I/O implies that
-a process should never be blocked to await resources. Instead, any
-call which would block returns prematurely
-with the error EWOULDBLOCK, or the service request may be partially
-fulfilled, e.g. a request for more data than is present.
-.PP
-If a process requested ``asynchronous'' notification of events
-related to the socket, the SIGIO signal is posted to the process
-when such events occur.
-An event is a change in the socket's state;
-examples of such occurrences are: space
-becoming available in the send queue, new data available in the
-receive queue, connection establishment or disestablishment, etc.
-.PP
-A socket may be marked ``privileged'' if it was created by the
-super-user. Only privileged sockets may
-bind addresses in privileged portions of an address space
-or use ``raw'' sockets to access lower levels of the network.
-.NH 3
-Socket data queues
-.PP
-A socket's data queue contains a pointer to the data stored in
-the queue and other entries related to the management of
-the data. The following structure defines a data queue:
-.DS
-._f
-struct sockbuf {
- u_short sb_cc; /* actual chars in buffer */
- u_short sb_hiwat; /* max actual char count */
- u_short sb_mbcnt; /* chars of mbufs used */
- u_short sb_mbmax; /* max chars of mbufs to use */
- u_short sb_lowat; /* low water mark */
- short sb_timeo; /* timeout */
- struct mbuf *sb_mb; /* the mbuf chain */
- struct proc *sb_sel; /* process selecting read/write */
- short sb_flags; /* flags, see below */
-};
-.DE
-.PP
-Data is stored in a queue as a chain of mbufs.
-The actual count of data characters as well as high and low water marks are
-used by the protocols in controlling the flow of data.
-The amount of buffer space (characters of mbufs and associated data pages)
-is also recorded along with the limit on buffer allocation.
-The socket routines cooperate in implementing the flow control
-policy by blocking a process when it requests to send data and
-the high water mark has been reached, or when it requests to
-receive data and less than the low water mark is present
-(assuming non-blocking I/O has not been specified).*
-.FS
-* The low-water mark is always presumed to be 0
-in the current implementation.
-.FE
-.PP
-When a socket is created, the supporting protocol ``reserves'' space
-for the send and receive queues of the socket.
-The limit on buffer allocation is set somewhat higher than the limit
-on data characters
-to account for the granularity of buffer allocation.
-The actual storage associated with a
-socket queue may fluctuate during a socket's lifetime, but it is assumed
-that this reservation will always allow a protocol to acquire enough memory
-to satisfy the high water marks.
-.PP
-The timeout and select values are manipulated by the socket routines
-in implementing various portions of the interprocess communications
-facilities and will not be described here.
-.PP
-Data queued at a socket is stored in one of two styles.
-Stream-oriented sockets queue data with no addresses, headers
-or record boundaries.
-The data are in mbufs linked through the \fIm_next\fP field.
-Buffers containing access rights may be present within the chain
-if the underlying protocol supports passage of access rights.
-Record-oriented sockets, including datagram sockets,
-queue data as a list of packets; the sections of packets are distinguished
-by the types of the mbufs containing them.
-The mbufs which comprise a record are linked through the \fIm_next\fP field;
-records are linked from the \fIm_act\fP field of the first mbuf
-of one packet to the first mbuf of the next.
-Each packet begins with an mbuf containing the ``from'' address
-if the protocol provides it,
-then any buffers containing access rights, and finally any buffers
-containing data.
-If a record contains no data,
-no data buffers are required unless neither address nor access rights
-are present.
-.PP
-A socket queue has a number of flags used in synchronizing access
-to the data and in acquiring resources:
-.DS
-._d
-#define SB_LOCK 0x01 /* lock on data queue (so_rcv only) */
-#define SB_WANT 0x02 /* someone is waiting to lock */
-#define SB_WAIT 0x04 /* someone is waiting for data/space */
-#define SB_SEL 0x08 /* buffer is selected */
-#define SB_COLL 0x10 /* collision selecting */
-.DE
-The last two flags are manipulated by the system in implementing
-the select mechanism.
-.NH 3
-Socket connection queuing
-.PP
-In dealing with connection oriented sockets (e.g. SOCK_STREAM)
-the two ends are considered distinct. One end is termed
-\fIactive\fP, and generates connection requests. The other
-end is called \fIpassive\fP and accepts connection requests.
-.PP
-From the passive side, a socket is marked with
-SO_ACCEPTCONN when a \fIlisten\fP call is made,
-creating two queues of sockets: \fIso_q0\fP for connections
-in progress and \fIso_q\fP for connections already made and
-awaiting user acceptance.
-As a protocol is preparing incoming connections, it creates
-a socket structure queued on \fIso_q0\fP by calling the routine
-\fIsonewconn\fP(). When the connection
-is established, the socket structure is then transferred
-to \fIso_q\fP, making it available for an \fIaccept\fP.
-.PP
-If an SO_ACCEPTCONN socket is closed with sockets on either
-\fIso_q0\fP or \fIso_q\fP, these sockets are dropped,
-with notification to the peers as appropriate.
-.NH 2
-Protocol layer(s)
-.PP
-Each socket is created in a communications domain,
-which usually implies both an addressing structure (address family)
-and a set of protocols which implement various socket types within the domain
-(protocol family).
-Each domain is defined by the following structure:
-.DS
-.ta .5i +\w'struct 'u +\w'(*dom_externalize)(); 'u
-struct domain {
- int dom_family; /* PF_xxx */
- char *dom_name;
- int (*dom_init)(); /* initialize domain data structures */
- int (*dom_externalize)(); /* externalize access rights */
- int (*dom_dispose)(); /* dispose of internalized rights */
- struct protosw *dom_protosw, *dom_protoswNPROTOSW;
- struct domain *dom_next;
-};
-.DE
-.PP
-At boot time, each domain configured into the kernel
-is added to a linked list of domain.
-The initialization procedure of each domain is then called.
-After that time, the domain structure is used to locate protocols
-within the protocol family.
-It may also contain procedure references
-for externalization of access rights at the receiving socket
-and the disposal of access rights that are not received.
-.PP
-Protocols are described by a set of entry points and certain
-socket-visible characteristics, some of which are used in
-deciding which socket type(s) they may support.
-.PP
-An entry in the ``protocol switch'' table exists for each
-protocol module configured into the system. It has the following form:
-.DS
-.ta .5i +\w'struct 'u +\w'domain *pr_domain; 'u
-struct protosw {
- short pr_type; /* socket type used for */
- struct domain *pr_domain; /* domain protocol a member of */
- short pr_protocol; /* protocol number */
- short pr_flags; /* socket visible attributes */
-/* protocol-protocol hooks */
- int (*pr_input)(); /* input to protocol (from below) */
- int (*pr_output)(); /* output to protocol (from above) */
- int (*pr_ctlinput)(); /* control input (from below) */
- int (*pr_ctloutput)(); /* control output (from above) */
-/* user-protocol hook */
- int (*pr_usrreq)(); /* user request */
-/* utility hooks */
- int (*pr_init)(); /* initialization routine */
- int (*pr_fasttimo)(); /* fast timeout (200ms) */
- int (*pr_slowtimo)(); /* slow timeout (500ms) */
- int (*pr_drain)(); /* flush any excess space possible */
-};
-.DE
-.PP
-A protocol is called through the \fIpr_init\fP entry before any other.
-Thereafter it is called every 200 milliseconds through the
-\fIpr_fasttimo\fP entry and
-every 500 milliseconds through the \fIpr_slowtimo\fP for timer based actions.
-The system will call the \fIpr_drain\fP entry if it is low on space and
-this should throw away any non-critical data.
-.PP
-Protocols pass data between themselves as chains of mbufs using
-the \fIpr_input\fP and \fIpr_output\fP routines. \fIPr_input\fP
-passes data up (towards
-the user) and \fIpr_output\fP passes it down (towards the network); control
-information passes up and down on \fIpr_ctlinput\fP and \fIpr_ctloutput\fP.
-The protocol is responsible for the space occupied by any of the
-arguments to these entries and must either pass it onward or dispose of it.
-(On output, the lowest level reached must free buffers storing the arguments;
-on input, the highest level is responsible for freeing buffers.)
-.PP
-The \fIpr_usrreq\fP routine interfaces protocols to the socket
-code and is described below.
-.PP
-The \fIpr_flags\fP field is constructed from the following values:
-.DS
-.ta \w'#define 'u +\w'PR_CONNREQUIRED 'u +8n
-#define PR_ATOMIC 0x01 /* exchange atomic messages only */
-#define PR_ADDR 0x02 /* addresses given with messages */
-#define PR_CONNREQUIRED 0x04 /* connection required by protocol */
-#define PR_WANTRCVD 0x08 /* want PRU_RCVD calls */
-#define PR_RIGHTS 0x10 /* passes capabilities */
-.DE
-Protocols which are connection-based specify the PR_CONNREQUIRED
-flag so that the socket routines will never attempt to send data
-before a connection has been established. If the PR_WANTRCVD flag
-is set, the socket routines will notify the protocol when the user
-has removed data from the socket's receive queue. This allows
-the protocol to implement acknowledgement on user receipt, and
-also update windowing information based on the amount of space
-available in the receive queue. The PR_ADDR field indicates that any
-data placed in the socket's receive queue will be preceded by the
-address of the sender. The PR_ATOMIC flag specifies that each \fIuser\fP
-request to send data must be performed in a single \fIprotocol\fP send
-request; it is the protocol's responsibility to maintain record
-boundaries on data to be sent. The PR_RIGHTS flag indicates that the
-protocol supports the passing of capabilities; this is currently
-used only by the protocols in the UNIX protocol family.
-.PP
-When a socket is created, the socket routines scan the protocol
-table for the domain
-looking for an appropriate protocol to support the type of
-socket being created. The \fIpr_type\fP field contains one of the
-possible socket types (e.g. SOCK_STREAM), while the \fIpr_domain\fP
-is a back pointer to the domain structure.
-The \fIpr_protocol\fP field contains the protocol number of the
-protocol, normally a well-known value.
-.NH 2
-Network-interface layer
-.PP
-Each network-interface configured into a system defines a
-path through which packets may be sent and received.
-Normally a hardware device is associated with this interface,
-though there is no requirement for this (for example, all
-systems have a software ``loopback'' interface used for
-debugging and performance analysis).
-In addition to manipulating the hardware device, an interface
-module is responsible
-for encapsulation and decapsulation of any link-layer header
-information required to deliver a message to its destination.
-The selection of which interface to use in delivering packets
-is a routing decision carried out at a
-higher level than the network-interface layer.
-An interface may have addresses in one or more address families.
-The address is set at boot time using an \fIioctl\fP on a socket
-in the appropriate domain; this operation is implemented by the protocol
-family, after verifying the operation through the device \fIioctl\fP entry.
-.PP
-An interface is defined by the following structure,
-.DS
-.ta .5i +\w'struct 'u +\w'ifaddr *if_addrlist; 'u
-struct ifnet {
- char *if_name; /* name, e.g. ``en'' or ``lo'' */
- short if_unit; /* sub-unit for lower level driver */
- short if_mtu; /* maximum transmission unit */
- short if_flags; /* up/down, broadcast, etc. */
- short if_timer; /* time 'til if_watchdog called */
- struct ifaddr *if_addrlist; /* list of addresses of interface */
- struct ifqueue if_snd; /* output queue */
- int (*if_init)(); /* init routine */
- int (*if_output)(); /* output routine */
- int (*if_ioctl)(); /* ioctl routine */
- int (*if_reset)(); /* bus reset routine */
- int (*if_watchdog)(); /* timer routine */
- int if_ipackets; /* packets received on interface */
- int if_ierrors; /* input errors on interface */
- int if_opackets; /* packets sent on interface */
- int if_oerrors; /* output errors on interface */
- int if_collisions; /* collisions on csma interfaces */
- struct ifnet *if_next;
-};
-.DE
-Each interface address has the following form:
-.DS
-.ta \w'#define 'u +\w'struct 'u +\w'struct 'u +\w'sockaddr ifa_addr; 'u-\w'struct 'u
-struct ifaddr {
- struct sockaddr ifa_addr; /* address of interface */
- union {
- struct sockaddr ifu_broadaddr;
- struct sockaddr ifu_dstaddr;
- } ifa_ifu;
- struct ifnet *ifa_ifp; /* back-pointer to interface */
- struct ifaddr *ifa_next; /* next address for interface */
-};
-.ta \w'#define 'u +\w'ifa_broadaddr 'u +\w'ifa_ifu.ifu_broadaddr 'u
-#define ifa_broadaddr ifa_ifu.ifu_broadaddr /* broadcast address */
-#define ifa_dstaddr ifa_ifu.ifu_dstaddr /* other end of p-to-p link */
-.DE
-The protocol generally maintains this structure as part of a larger
-structure containing additional information concerning the address.
-.PP
-Each interface has a send queue and routines used for
-initialization, \fIif_init\fP, and output, \fIif_output\fP.
-If the interface resides on a system bus, the routine \fIif_reset\fP
-will be called after a bus reset has been performed.
-An interface may also
-specify a timer routine, \fIif_watchdog\fP;
-if \fIif_timer\fP is non-zero, it is decremented once per second
-until it reaches zero, at which time the watchdog routine is called.
-.PP
-The state of an interface and certain characteristics are stored in
-the \fIif_flags\fP field. The following values are possible:
-.DS
-._d
-#define IFF_UP 0x1 /* interface is up */
-#define IFF_BROADCAST 0x2 /* broadcast is possible */
-#define IFF_DEBUG 0x4 /* turn on debugging */
-#define IFF_LOOPBACK 0x8 /* is a loopback net */
-#define IFF_POINTOPOINT 0x10 /* interface is point-to-point link */
-#define IFF_NOTRAILERS 0x20 /* avoid use of trailers */
-#define IFF_RUNNING 0x40 /* resources allocated */
-#define IFF_NOARP 0x80 /* no address resolution protocol */
-.DE
-If the interface is connected to a network which supports transmission
-of \fIbroadcast\fP packets, the IFF_BROADCAST flag will be set and
-the \fIifa_broadaddr\fP field will contain the address to be used in
-sending or accepting a broadcast packet. If the interface is associated
-with a point-to-point hardware link (for example, a DEC DMR-11), the
-IFF_POINTOPOINT flag will be set and \fIifa_dstaddr\fP will contain the
-address of the host on the other side of the connection. These addresses
-and the local address of the interface, \fIif_addr\fP, are used in
-filtering incoming packets. The interface sets IFF_RUNNING after
-it has allocated system resources and posted an initial read on the
-device it manages. This state bit is used to avoid multiple allocation
-requests when an interface's address is changed. The IFF_NOTRAILERS
-flag indicates the interface should refrain from using a \fItrailer\fP
-encapsulation on outgoing packets, or (where per-host negotiation
-of trailers is possible) that trailer encapsulations should not be requested;
-\fItrailer\fP protocols are described
-in section 14. The IFF_NOARP flag indicates the interface should not
-use an ``address resolution protocol'' in mapping internetwork addresses
-to local network addresses.
-.PP
-Various statistics are also stored in the interface structure. These
-may be viewed by users using the \fInetstat\fP(1) program.
-.PP
-The interface address and flags may be set with the SIOCSIFADDR and
-SIOCSIFFLAGS \fIioctl\fP\^s. SIOCSIFADDR is used initially to define each
-interface's address; SIOGSIFFLAGS can be used to mark
-an interface down and perform site-specific configuration.
-The destination address of a point-to-point link is set with SIOCSIFDSTADDR.
-Corresponding operations exist to read each value.
-Protocol families may also support operations to set and read the broadcast
-address.
-In addition, the SIOCGIFCONF \fIioctl\fP retrieves a list of interface
-names and addresses for all interfaces and protocols on the host.
-.NH 3
-UNIBUS interfaces
-.PP
-All hardware related interfaces currently reside on the UNIBUS.
-Consequently a common set of utility routines for dealing
-with the UNIBUS has been developed. Each UNIBUS interface
-utilizes a structure of the following form:
-.DS
-.ta \w'#define 'u +\w'ifw_xtofree 'u +\w'pte ifu_wmap[IF_MAXNUBAMR]; 'u
-struct ifubinfo {
- short iff_uban; /* uba number */
- short iff_hlen; /* local net header length */
- struct uba_regs *iff_uba; /* uba regs, in vm */
- short iff_flags; /* used during uballoc's */
-};
-.DE
-Additional structures are associated with each receive and transmit buffer,
-normally one each per interface; for read,
-.DS
-.ta \w'#define 'u +\w'ifw_xtofree 'u +\w'pte ifu_wmap[IF_MAXNUBAMR]; 'u
-struct ifrw {
- caddr_t ifrw_addr; /* virt addr of header */
- short ifrw_bdp; /* unibus bdp */
- short ifrw_flags; /* type, etc. */
-#define IFRW_W 0x01 /* is a transmit buffer */
- int ifrw_info; /* value from ubaalloc */
- int ifrw_proto; /* map register prototype */
- struct pte *ifrw_mr; /* base of map registers */
-};
-.DE
-and for write,
-.DS
-.ta \w'#define 'u +\w'ifw_xtofree 'u +\w'pte ifu_wmap[IF_MAXNUBAMR]; 'u
-struct ifxmt {
- struct ifrw ifrw;
- caddr_t ifw_base; /* virt addr of buffer */
- struct pte ifw_wmap[IF_MAXNUBAMR]; /* base pages for output */
- struct mbuf *ifw_xtofree; /* pages being dma'd out */
- short ifw_xswapd; /* mask of clusters swapped */
- short ifw_nmr; /* number of entries in wmap */
-};
-.ta \w'#define 'u +\w'ifw_xtofree 'u +\w'pte ifu_wmap[IF_MAXNUBAMR]; 'u
-#define ifw_addr ifrw.ifrw_addr
-#define ifw_bdp ifrw.ifrw_bdp
-#define ifw_flags ifrw.ifrw_flags
-#define ifw_info ifrw.ifrw_info
-#define ifw_proto ifrw.ifrw_proto
-#define ifw_mr ifrw.ifrw_mr
-.DE
-One of each of these structures is conveniently packaged for interfaces
-with single buffers for each direction, as follows:
-.DS
-.ta \w'#define 'u +\w'ifw_xtofree 'u +\w'pte ifu_wmap[IF_MAXNUBAMR]; 'u
-struct ifuba {
- struct ifubinfo ifu_info;
- struct ifrw ifu_r;
- struct ifxmt ifu_xmt;
-};
-.ta \w'#define 'u +\w'ifw_xtofree 'u
-#define ifu_uban ifu_info.iff_uban
-#define ifu_hlen ifu_info.iff_hlen
-#define ifu_uba ifu_info.iff_uba
-#define ifu_flags ifu_info.iff_flags
-#define ifu_w ifu_xmt.ifrw
-#define ifu_xtofree ifu_xmt.ifw_xtofree
-.DE
-.PP
-The \fIif_ubinfo\fP structure contains the general information needed
-to characterize the I/O-mapped buffers for the device.
-In addition, there is a structure describing each buffer, including
-UNIBUS resources held by the interface.
-Sufficient memory pages and bus map registers are allocated to each buffer
-upon initialization according to the maximum packet size and header length.
-The kernel virtual address of the buffer is held in \fIifrw_addr\fP,
-and the map registers begin
-at \fIifrw_mr\fP. UNIBUS map register \fIifrw_mr\fP\^[\-1]
-maps the local network header
-ending on a page boundary. UNIBUS data paths are
-reserved for read and for
-write, given by \fIifrw_bdp\fP. The prototype of the map
-registers for read and for write is saved in \fIifrw_proto\fP.
-.PP
-When write transfers are not at least half-full pages on page boundaries,
-the data are just copied into the pages mapped on the UNIBUS
-and the transfer is started.
-If a write transfer is at least half a page long and on a page
-boundary, UNIBUS page table entries are swapped to reference
-the pages, and then the initial pages are
-remapped from \fIifw_wmap\fP when the transfer completes.
-The mbufs containing the mapped pages are placed on the \fIifw_xtofree\fP
-queue to be freed after transmission.
-.PP
-When read transfers give at least half a page of data to be input, page
-frames are allocated from a network page list and traded
-with the pages already containing the data, mapping the allocated
-pages to replace the input pages for the next UNIBUS data input.
-.PP
-The following utility routines are available for use in
-writing network interface drivers; all use the
-structures described above.
-.LP
-if_ubaminit(ifubinfo, uban, hlen, nmr, ifr, nr, ifx, nx);
-.br
-if_ubainit(ifuba, uban, hlen, nmr);
-.IP
-\fIif_ubaminit\fP allocates resources on UNIBUS adapter \fIuban\fP,
-storing the information in the \fIifubinfo\fP, \fIifrw\fP and \fIifxmt\fP
-structures referenced.
-The \fIifr\fP and \fIifx\fP parameters are pointers to arrays
-of \fIifrw\fP and \fIifxmt\fP structures whose dimensions
-are \fInr\fP and \fInx\fP, respectively.
-\fIif_ubainit\fP is a simpler, backwards-compatible interface used
-for hardware with single buffers of each type.
-They are called only at boot time or after a UNIBUS reset.
-One data path (buffered or unbuffered,
-depending on the \fIifu_flags\fP field) is allocated for each buffer.
-The \fInmr\fP parameter indicates
-the number of UNIBUS mapping registers required to map a maximal
-sized packet onto the UNIBUS, while \fIhlen\fP specifies the size
-of a local network header, if any, which should be mapped separately
-from the data (see the description of trailer protocols in chapter 14).
-Sufficient UNIBUS mapping registers and pages of memory are allocated
-to initialize the input data path for an initial read. For the output
-data path, mapping registers and pages of memory are also allocated
-and mapped onto the UNIBUS. The pages associated with the output
-data path are held in reserve in the event a write requires copying
-non-page-aligned data (see \fIif_wubaput\fP below).
-If \fIif_ubainit\fP is called with memory pages already allocated,
-they will be used instead of allocating new ones (this normally
-occurs after a UNIBUS reset).
-A 1 is returned when allocation and initialization are successful,
-0 otherwise.
-.LP
-m = if_ubaget(ifubinfo, ifr, totlen, off0, ifp);
-.br
-m = if_rubaget(ifuba, totlen, off0, ifp);
-.IP
-\fIif_ubaget\fP and \fIif_rubaget\fP pull input data
-out of an interface receive buffer and into an mbuf chain.
-The first interface passes pointers to the \fIifubinfo\fP structure
-for the interface and the \fIifrw\fP structure for the receive buffer;
-the second call may be used for single-buffered devices.
-\fItotlen\fP specifies the length of data to be obtained, not counting the
-local network header. If \fIoff0\fP is non-zero, it indicates
-a byte offset to a trailing local network header which should be
-copied into a separate mbuf and prepended to the front of the resultant mbuf
-chain. When the data amount to at least a half a page,
-the previously mapped data pages are remapped
-into the mbufs and swapped with fresh pages, thus avoiding
-any copy.
-The receiving interface is recorded as \fIifp\fP, a pointer to an \fIifnet\fP
-structure, for the use of the receiving network protocol.
-A 0 return value indicates a failure to allocate resources.
-.LP
-if_wubaput(ifubinfo, ifx, m);
-.br
-if_wubaput(ifuba, m);
-.IP
-\fIif_ubaput\fP and \fIif_wubaput\fP map a chain of mbufs
-onto a network interface in preparation for output.
-The first interface is used by devices with multiple transmit buffers.
-The chain includes any local network
-header, which is copied so that it resides in the mapped and
-aligned I/O space.
-Page-aligned data that are page-aligned in the output buffer
-are mapped to the UNIBUS in place of the normal buffer page,
-and the corresponding mbuf is placed on a queue to be freed after transmission.
-Any other mbufs which contained non-page-sized
-data portions are copied to the I/O space and then freed.
-Pages mapped from a previous output operation (no longer needed)
-are unmapped.
diff --git a/share/doc/smm/18.net/7.t b/share/doc/smm/18.net/7.t
deleted file mode 100644
index 7b431c2da09..00000000000
--- a/share/doc/smm/18.net/7.t
+++ /dev/null
@@ -1,254 +0,0 @@
-.\" $OpenBSD: 7.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1983, 1986, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)7.t 8.1 (Berkeley) 6/8/93
-.\"
-.nr H2 1
-.br
-.ne 30v
-.\".ds RH "Socket/protocol interface
-.NH
-\s+2Socket/protocol interface\s0
-.PP
-The interface between the socket routines and the communication
-protocols is through the \fIpr_usrreq\fP routine defined in the
-protocol switch table. The following requests to a protocol
-module are possible:
-.DS
-._d
-#define PRU_ATTACH 0 /* attach protocol */
-#define PRU_DETACH 1 /* detach protocol */
-#define PRU_BIND 2 /* bind socket to address */
-#define PRU_LISTEN 3 /* listen for connection */
-#define PRU_CONNECT 4 /* establish connection to peer */
-#define PRU_ACCEPT 5 /* accept connection from peer */
-#define PRU_DISCONNECT 6 /* disconnect from peer */
-#define PRU_SHUTDOWN 7 /* won't send any more data */
-#define PRU_RCVD 8 /* have taken data; more room now */
-#define PRU_SEND 9 /* send this data */
-#define PRU_ABORT 10 /* abort (fast DISCONNECT, DETATCH) */
-#define PRU_CONTROL 11 /* control operations on protocol */
-#define PRU_SENSE 12 /* return status into m */
-#define PRU_RCVOOB 13 /* retrieve out of band data */
-#define PRU_SENDOOB 14 /* send out of band data */
-#define PRU_SOCKADDR 15 /* fetch socket's address */
-#define PRU_PEERADDR 16 /* fetch peer's address */
-#define PRU_CONNECT2 17 /* connect two sockets */
-/* begin for protocols internal use */
-#define PRU_FASTTIMO 18 /* 200ms timeout */
-#define PRU_SLOWTIMO 19 /* 500ms timeout */
-#define PRU_PROTORCV 20 /* receive from below */
-#define PRU_PROTOSEND 21 /* send to below */
-.DE
-A call on the user request routine is of the form,
-.DS
-._f
-error = (*protosw[].pr_usrreq)(so, req, m, addr, rights);
-int error; struct socket *so; int req; struct mbuf *m, *addr, *rights;
-.DE
-The mbuf data chain \fIm\fP is supplied for output operations
-and for certain other operations where it is to receive a result.
-The address \fIaddr\fP is supplied for address-oriented requests
-such as PRU_BIND and PRU_CONNECT.
-The \fIrights\fP parameter is an optional pointer to an mbuf
-chain containing user-specified capabilities (see the \fIsendmsg\fP
-and \fIrecvmsg\fP system calls). The protocol is responsible for
-disposal of the data mbuf chains on output operations.
-A non-zero return value gives a
-UNIX error number which should be passed to higher level software.
-The following paragraphs describe each
-of the requests possible.
-.IP PRU_ATTACH
-.br
-When a protocol is bound to a socket (with the \fIsocket\fP
-system call) the protocol module is called with this
-request. It is the responsibility of the protocol module to
-allocate any resources necessary.
-The ``attach'' request
-will always precede any of the other requests, and should not
-occur more than once.
-.IP PRU_DETACH
-.br
-This is the antithesis of the attach request, and is used
-at the time a socket is deleted. The protocol module may
-deallocate any resources assigned to the socket.
-.IP PRU_BIND
-.br
-When a socket is initially created it has no address bound
-to it. This request indicates that an address should be bound to
-an existing socket. The protocol module must verify that the
-requested address is valid and available for use.
-.IP PRU_LISTEN
-.br
-The ``listen'' request indicates the user wishes to listen
-for incoming connection requests on the associated socket.
-The protocol module should perform any state changes needed
-to carry out this request (if possible). A ``listen'' request
-always precedes a request to accept a connection.
-.IP PRU_CONNECT
-.br
-The ``connect'' request indicates the user wants to a establish
-an association. The \fIaddr\fP parameter supplied describes
-the peer to be connected to. The effect of a connect request
-may vary depending on the protocol. Virtual circuit protocols,
-such as TCP [Postel81b], use this request to initiate establishment of a
-TCP connection. Datagram protocols, such as UDP [Postel80], simply
-record the peer's address in a private data structure and use
-it to tag all outgoing packets. There are no restrictions
-on how many times a connect request may be used after an attach.
-If a protocol supports the notion of \fImulti-casting\fP, it
-is possible to use multiple connects to establish a multi-cast
-group. Alternatively, an association may be broken by a
-PRU_DISCONNECT request, and a new association created with a
-subsequent connect request; all without destroying and creating
-a new socket.
-.IP PRU_ACCEPT
-.br
-Following a successful PRU_LISTEN request and the arrival
-of one or more connections, this request is made to
-indicate the user
-has accepted the first connection on the queue of
-pending connections. The protocol module should fill
-in the supplied address buffer with the address of the
-connected party.
-.IP PRU_DISCONNECT
-.br
-Eliminate an association created with a PRU_CONNECT request.
-.IP PRU_SHUTDOWN
-.br
-This call is used to indicate no more data will be sent and/or
-received (the \fIaddr\fP parameter indicates the direction of
-the shutdown, as encoded in the \fIsoshutdown\fP system call).
-The protocol may, at its discretion, deallocate any data
-structures related to the shutdown and/or notify a connected peer
-of the shutdown.
-.IP PRU_RCVD
-.br
-This request is made only if the protocol entry in the protocol
-switch table includes the PR_WANTRCVD flag.
-When a user removes data from the receive queue this request
-will be sent to the protocol module. It may be used to trigger
-acknowledgements, refresh windowing information, initiate
-data transfer, etc.
-.IP PRU_SEND
-.br
-Each user request to send data is translated into one or more
-PRU_SEND requests (a protocol may indicate that a single user
-send request must be translated into a single PRU_SEND request by
-specifying the PR_ATOMIC flag in its protocol description).
-The data to be sent is presented to the protocol as a list of
-mbufs and an address is, optionally, supplied in the \fIaddr\fP
-parameter. The protocol is responsible for preserving the data
-in the socket's send queue if it is not able to send it immediately,
-or if it may need it at some later time (e.g. for retransmission).
-.IP PRU_ABORT
-.br
-This request indicates an abnormal termination of service. The
-protocol should delete any existing association(s).
-.IP PRU_CONTROL
-.br
-The ``control'' request is generated when a user performs a
-UNIX \fIioctl\fP system call on a socket (and the ioctl is not
-intercepted by the socket routines). It allows protocol-specific
-operations to be provided outside the scope of the common socket
-interface. The \fIaddr\fP parameter contains a pointer to a static
-kernel data area where relevant information may be obtained or returned.
-The \fIm\fP parameter contains the actual \fIioctl\fP request code
-(note the non-standard calling convention).
-The \fIrights\fP parameter contains a pointer to an \fIifnet\fP structure
-if the \fIioctl\fP operation pertains to a particular network interface.
-.IP PRU_SENSE
-.br
-The ``sense'' request is generated when the user makes an \fIfstat\fP
-system call on a socket; it requests status of the associated socket.
-This currently returns a standard \fIstat\fP structure.
-It typically contains only the
-optimal transfer size for the connection (based on buffer size,
-windowing information and maximum packet size).
-The \fIm\fP parameter contains a pointer
-to a static kernel data area where the status buffer should be placed.
-.IP PRU_RCVOOB
-.br
-Any ``out-of-band'' data presently available is to be returned. An
-mbuf is passed to the protocol module, and the protocol
-should either place
-data in the mbuf or attach new mbufs to the one supplied if there is
-insufficient space in the single mbuf.
-An error may be returned if out-of-band data is not (yet) available
-or has already been consumed.
-The \fIaddr\fP parameter contains any options such as MSG_PEEK
-to examine data without consuming it.
-.IP PRU_SENDOOB
-.br
-Like PRU_SEND, but for out-of-band data.
-.IP PRU_SOCKADDR
-.br
-The local address of the socket is returned, if any is currently
-bound to it. The address (with protocol specific format) is returned
-in the \fIaddr\fP parameter.
-.IP PRU_PEERADDR
-.br
-The address of the peer to which the socket is connected is returned.
-The socket must be in a SS_ISCONNECTED state for this request to
-be made to the protocol. The address format (protocol specific) is
-returned in the \fIaddr\fP parameter.
-.IP PRU_CONNECT2
-.br
-The protocol module is supplied two sockets and requested to
-establish a connection between the two without binding any
-addresses, if possible. This call is used in implementing
-the
-.IR socketpair (2)
-system call.
-.PP
-The following requests are used internally by the protocol modules
-and are never generated by the socket routines. In certain instances,
-they are handed to the \fIpr_usrreq\fP routine solely for convenience
-in tracing a protocol's operation (e.g. PRU_SLOWTIMO).
-.IP PRU_FASTTIMO
-.br
-A ``fast timeout'' has occurred. This request is made when a timeout
-occurs in the protocol's \fIpr_fastimo\fP routine. The \fIaddr\fP
-parameter indicates which timer expired.
-.IP PRU_SLOWTIMO
-.br
-A ``slow timeout'' has occurred. This request is made when a timeout
-occurs in the protocol's \fIpr_slowtimo\fP routine. The \fIaddr\fP
-parameter indicates which timer expired.
-.IP PRU_PROTORCV
-.br
-This request is used in the protocol-protocol interface, not by the
-routines. It requests reception of data destined for the protocol and
-not the user. No protocols currently use this facility.
-.IP PRU_PROTOSEND
-.br
-This request allows a protocol to send data destined for another
-protocol module, not a user. The details of how data is marked
-``addressed to protocol'' instead of ``addressed to user'' are
-left to the protocol modules. No protocols currently use this facility.
diff --git a/share/doc/smm/18.net/8.t b/share/doc/smm/18.net/8.t
deleted file mode 100644
index e837ab214f9..00000000000
--- a/share/doc/smm/18.net/8.t
+++ /dev/null
@@ -1,164 +0,0 @@
-.\" $OpenBSD: 8.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1983, 1986, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)8.t 8.1 (Berkeley) 6/8/93
-.\"
-.nr H2 1
-.\".ds RH "Protocol/protocol interface
-.br
-.ne 2i
-.NH
-\s+2Protocol/protocol interface\s0
-.PP
-The interface between protocol modules is through the \fIpr_usrreq\fP,
-\fIpr_input\fP, \fIpr_output\fP, \fIpr_ctlinput\fP, and
-\fIpr_ctloutput\fP routines. The calling conventions for all
-but the \fIpr_usrreq\fP routine are expected to be specific to
-the protocol
-modules and are not guaranteed to be consistent across protocol
-families. We
-will examine the conventions used for some of the Internet
-protocols in this section as an example.
-.NH 2
-pr_output
-.PP
-The Internet protocol UDP uses the convention,
-.DS
-error = udp_output(inp, m);
-int error; struct inpcb *inp; struct mbuf *m;
-.DE
-where the \fIinp\fP, ``\fIin\fP\^ternet
-\fIp\fP\^rotocol \fIc\fP\^ontrol \fIb\fP\^lock'',
-passed between modules conveys per connection state information, and
-the mbuf chain contains the data to be sent. UDP
-performs consistency checks, appends its header, calculates a
-checksum, etc. before passing the packet on.
-UDP is based on the Internet Protocol, IP [Postel81a], as its transport.
-UDP passes a packet to the IP module for output as follows:
-.DS
-error = ip_output(m, opt, ro, flags);
-int error; struct mbuf *m, *opt; struct route *ro; int flags;
-.DE
-.PP
-The call to IP's output routine is more complicated than that for
-UDP, as befits the additional work the IP module must do.
-The \fIm\fP parameter is the data to be sent, and the \fIopt\fP
-parameter is an optional list of IP options which should
-be placed in the IP packet header. The \fIro\fP parameter is
-is used in making routing decisions (and passing them back to the
-caller for use in subsequent calls). The
-final parameter, \fIflags\fP contains flags indicating whether the
-user is allowed to transmit a broadcast packet
-and if routing is to be performed. The broadcast flag may
-be inconsequential if the underlying hardware does not support the
-notion of broadcasting.
-.PP
-All output routines return 0 on success and a UNIX error number
-if a failure occurred which could be detected immediately
-(no buffer space available, no route to destination, etc.).
-.NH 2
-pr_input
-.PP
-Both UDP and TCP use the following calling convention,
-.DS
-(void) (*protosw[].pr_input)(m, ifp);
-struct mbuf *m; struct ifnet *ifp;
-.DE
-Each mbuf list passed is a single packet to be processed by
-the protocol module.
-The interface from which the packet was received is passed as the second
-parameter.
-.PP
-The IP input routine is a VAX software interrupt level routine,
-and so is not called with any parameters. It instead communicates
-with network interfaces through a queue, \fIipintrq\fP, which is
-identical in structure to the queues used by the network interfaces
-for storing packets awaiting transmission.
-The software interrupt is enabled by the network interfaces
-when they place input data on the input queue.
-.NH 2
-pr_ctlinput
-.PP
-This routine is used to convey ``control'' information to a
-protocol module (i.e. information which might be passed to the
-user, but is not data).
-.PP
-The common calling convention for this routine is,
-.DS
-(void) (*protosw[].pr_ctlinput)(req, addr);
-int req; struct sockaddr *addr;
-.DE
-The \fIreq\fP parameter is one of the following,
-.DS
-.ta \w'#define 'u +\w'PRC_UNREACH_NEEDFRAG 'u +8n
-#define PRC_IFDOWN 0 /* interface transition */
-#define PRC_ROUTEDEAD 1 /* select new route if possible */
-#define PRC_QUENCH 4 /* some said to slow down */
-#define PRC_MSGSIZE 5 /* message size forced drop */
-#define PRC_HOSTDEAD 6 /* normally from IMP */
-#define PRC_HOSTUNREACH 7 /* ditto */
-#define PRC_UNREACH_NET 8 /* no route to network */
-#define PRC_UNREACH_HOST 9 /* no route to host */
-#define PRC_UNREACH_PROTOCOL 10 /* dst says bad protocol */
-#define PRC_UNREACH_PORT 11 /* bad port # */
-#define PRC_UNREACH_NEEDFRAG 12 /* IP_DF caused drop */
-#define PRC_UNREACH_SRCFAIL 13 /* source route failed */
-#define PRC_REDIRECT_NET 14 /* net routing redirect */
-#define PRC_REDIRECT_HOST 15 /* host routing redirect */
-#define PRC_REDIRECT_TOSNET 14 /* redirect for type of service & net */
-#define PRC_REDIRECT_TOSHOST 15 /* redirect for tos & host */
-#define PRC_TIMXCEED_INTRANS 18 /* packet lifetime expired in transit */
-#define PRC_TIMXCEED_REASS 19 /* lifetime expired on reass q */
-#define PRC_PARAMPROB 20 /* header incorrect */
-.DE
-while the \fIaddr\fP parameter is the address to which the condition applies.
-Many of the requests have obviously been
-derived from ICMP (the Internet Control Message Protocol [Postel81c]),
-and from error messages defined in the 1822 host/IMP convention
-[BBN78]. Mapping tables exist to convert
-control requests to UNIX error codes which are delivered
-to a user.
-.NH 2
-pr_ctloutput
-.PP
-This is the routine that implements per-socket options at the protocol
-level for \fIgetsockopt\fP and \fIsetsockopt\fP.
-The calling convention is,
-.DS
-error = (*protosw[].pr_ctloutput)(op, so, level, optname, mp);
-int op; struct socket *so; int level, optname; struct mbuf **mp;
-.DE
-where \fIop\fP is one of PRCO_SETOPT or PRCO_GETOPT,
-\fIso\fP is the socket from whence the call originated,
-and \fIlevel\fP and \fIoptname\fP are the protocol level and option name
-supplied by the user.
-The results of a PRCO_GETOPT call are returned in an mbuf whose address
-is placed in \fImp\fP before return.
-On a PRCO_SETOPT call, \fImp\fP contains the address of an mbuf
-containing the option data; the mbuf should be freed before return.
diff --git a/share/doc/smm/18.net/9.t b/share/doc/smm/18.net/9.t
deleted file mode 100644
index 3b28f017aa2..00000000000
--- a/share/doc/smm/18.net/9.t
+++ /dev/null
@@ -1,122 +0,0 @@
-.\" $OpenBSD: 9.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1983, 1986, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)9.t 8.1 (Berkeley) 6/8/93
-.\"
-.nr H2 1
-.\".ds RH "Protocol/network-interface
-.br
-.ne 2i
-.NH
-\s+2Protocol/network-interface interface\s0
-.PP
-The lowest layer in the set of protocols which comprise a
-protocol family must interface itself to one or more network
-interfaces in order to transmit and receive
-packets. It is assumed that
-any routing decisions have been made before handing a packet
-to a network interface, in fact this is absolutely necessary
-in order to locate any interface at all (unless, of course,
-one uses a single ``hardwired'' interface). There are two
-cases with which to be concerned, transmission of a packet
-and receipt of a packet; each will be considered separately.
-.NH 2
-Packet transmission
-.PP
-Assuming a protocol has a handle on an interface, \fIifp\fP,
-a (struct ifnet\ *),
-it transmits a fully formatted packet with the following call,
-.DS
-error = (*ifp->if_output)(ifp, m, dst)
-int error; struct ifnet *ifp; struct mbuf *m; struct sockaddr *dst;
-.DE
-The output routine for the network interface transmits the packet
-\fIm\fP to the \fIdst\fP address, or returns an error indication
-(a UNIX error number). In reality transmission may
-not be immediate or successful; normally the output
-routine simply queues the packet on its send queue and primes
-an interrupt driven routine to actually transmit the packet.
-For unreliable media, such as the Ethernet, ``successful''
-transmission simply means that the packet has been placed on the cable
-without a collision. On the other hand, an 1822 interface guarantees
-proper delivery or an error indication for each message transmitted.
-The model employed in the networking system attaches no promises
-of delivery to the packets handed to a network interface, and thus
-corresponds more closely to the Ethernet. Errors returned by the
-output routine are only those that can be detected immediately,
-and are normally trivial in nature (no buffer space,
-address format not handled, etc.).
-No indication is received if errors are detected after the call has returned.
-.NH 2
-Packet reception
-.PP
-Each protocol family must have one or more ``lowest level'' protocols.
-These protocols deal with internetwork addressing and are responsible
-for the delivery of incoming packets to the proper protocol processing
-modules. In the PUP model [Boggs78] these protocols are termed Level
-1 protocols,
-in the ISO model, network layer protocols. In this system each such
-protocol module has an input packet queue assigned to it. Incoming
-packets received by a network interface are queued for the protocol
-module, and a VAX software interrupt is posted to initiate processing.
-.PP
-Three macros are available for queuing and dequeuing packets:
-.IP "IF_ENQUEUE(ifq, m)"
-.br
-This places the packet \fIm\fP at the tail of the queue \fIifq\fP.
-.IP "IF_DEQUEUE(ifq, m)"
-.br
-This places a pointer to the packet at the head of queue \fIifq\fP
-in \fIm\fP
-and removes the packet from the queue.
-A zero value will be returned in \fIm\fP if the queue is empty.
-.IP "IF_DEQUEUEIF(ifq, m, ifp)"
-.br
-Like IF_DEQUEUE, this removes the next packet from the head of a queue
-and returns it in \fIm\fP.
-A pointer to the interface on which the packet was received
-is placed in \fIifp\fP, a (struct ifnet\ *).
-.IP "IF_PREPEND(ifq, m)"
-.br
-This places the packet \fIm\fP at the head of the queue \fIifq\fP.
-.PP
-Each queue has a maximum length associated with it as a simple form
-of congestion control. The macro IF_QFULL(ifq) returns 1 if the queue
-is filled, in which case the macro IF_DROP(ifq) should be used to
-increment the count of the number of packets dropped, and the offending
-packet is dropped. For example, the following code fragment is commonly
-found in a network interface's input routine,
-.DS
-._f
-if (IF_QFULL(inq)) {
- IF_DROP(inq);
- m_freem(m);
-} else
- IF_ENQUEUE(inq, m);
-.DE
diff --git a/share/doc/smm/18.net/Makefile b/share/doc/smm/18.net/Makefile
deleted file mode 100644
index 3addbcae956..00000000000
--- a/share/doc/smm/18.net/Makefile
+++ /dev/null
@@ -1,14 +0,0 @@
-# $OpenBSD: Makefile,v 1.3 2004/02/01 14:22:45 jmc Exp $
-
-
-DIR= smm/18.net
-SRCS= 0.t 1.t 2.t 3.t 4.t 5.t 6.t 7.t 8.t 9.t a.t b.t c.t d.t e.t f.t
-MACROS= -ms
-
-paper.ps: ${SRCS}
- ${TBL} ${SRCS} | ${ROFF} > ${.TARGET}
-
-paper.txt: ${SRCS}
- ${TBL} ${SRCS} | ${ROFF} -Tascii > ${.TARGET}
-
-.include <bsd.doc.mk>
diff --git a/share/doc/smm/18.net/a.t b/share/doc/smm/18.net/a.t
deleted file mode 100644
index 3ff56276610..00000000000
--- a/share/doc/smm/18.net/a.t
+++ /dev/null
@@ -1,217 +0,0 @@
-.\" $OpenBSD: a.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1983, 1986, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)a.t 8.1 (Berkeley) 6/8/93
-.\"
-.nr H2 1
-.\".ds RH "Gateways and routing
-.br
-.ne 2i
-.NH
-\s+2Gateways and routing issues\s0
-.PP
-The system has been designed with the expectation that it will
-be used in an internetwork environment. The ``canonical''
-environment was envisioned to be a collection of local area
-networks connected at one or more points through hosts with
-multiple network interfaces (one on each local area network),
-and possibly a connection to a long haul network (for example,
-the ARPANET). In such an environment, issues of
-gatewaying and packet routing become very important. Certain
-of these issues, such as congestion
-control, have been handled in a simplistic manner or specifically
-not addressed.
-Instead, where possible, the network system
-attempts to provide simple mechanisms upon which more involved
-policies may be implemented. As some of these problems become
-better understood, the solutions developed will be incorporated
-into the system.
-.PP
-This section will describe the facilities provided for packet
-routing. The simplistic mechanisms provided for congestion
-control are described in chapter 12.
-.NH 2
-Routing tables
-.PP
-The network system maintains a set of routing tables for
-selecting a network interface to use in delivering a
-packet to its destination. These tables are of the form:
-.DS
-.ta \w'struct 'u +\w'u_long 'u +\w'sockaddr rt_gateway; 'u
-struct rtentry {
- u_long rt_hash; /* hash key for lookups */
- struct sockaddr rt_dst; /* destination net or host */
- struct sockaddr rt_gateway; /* forwarding agent */
- short rt_flags; /* see below */
- short rt_refcnt; /* no. of references to structure */
- u_long rt_use; /* packets sent using route */
- struct ifnet *rt_ifp; /* interface to give packet to */
-};
-.DE
-.PP
-The routing information is organized in two separate tables, one
-for routes to a host and one for routes to a network. The
-distinction between hosts and networks is necessary so
-that a single mechanism may be used
-for both broadcast and multi-drop type networks, and
-also for networks built from point-to-point links (e.g
-DECnet [DEC80]).
-.PP
-Each table is organized as a hashed set of linked lists.
-Two 32-bit hash values are calculated by routines defined for
-each address family; one based on the destination being
-a host, and one assuming the target is the network portion
-of the address. Each hash value is used to
-locate a hash chain to search (by taking the value modulo the
-hash table size) and the entire 32-bit value is then
-used as a key in scanning the list of routes. Lookups are
-applied first to the routing
-table for hosts, then to the routing table for networks.
-If both lookups fail, a final lookup is made for a ``wildcard''
-route (by convention, network 0).
-The first appropriate route discovered is used.
-By doing this, routes to a specific host on a network may be
-present as well as routes to the network. This also allows a
-``fall back'' network route to be defined to a ``smart'' gateway
-which may then perform more intelligent routing.
-.PP
-Each routing table entry contains a destination (the desired final destination),
-a gateway to which to send the packet,
-and various flags which indicate the route's status and type (host or
-network). A count
-of the number of packets sent using the route is kept, along
-with a count of ``held references'' to the dynamically
-allocated structure to insure that memory reclamation
-occurs only when the route is not in use. Finally, a pointer to the
-a network interface is kept; packets sent using
-the route should be handed to this interface.
-.PP
-Routes are typed in two ways: either as host or network, and as
-``direct'' or ``indirect''. The host/network
-distinction determines how to compare the \fIrt_dst\fP field
-during lookup. If the route is to a network, only a packet's
-destination network is compared to the \fIrt_dst\fP entry stored
-in the table. If the route is to a host, the addresses must
-match bit for bit.
-.PP
-The distinction between ``direct'' and ``indirect'' routes indicates
-whether the destination is directly connected to the source.
-This is needed when performing local network encapsulation. If
-a packet is destined for a peer at a host or network which is
-not directly connected to the source, the internetwork packet
-header will
-contain the address of the eventual destination, while
-the local network header will address the intervening
-gateway. Should the destination be directly connected, these addresses
-are likely to be identical, or a mapping between the two exists.
-The RTF_GATEWAY flag indicates that the route is to an ``indirect''
-gateway agent, and that the local network header should be filled in
-from the \fIrt_gateway\fP field instead of
-from the final internetwork destination address.
-.PP
-It is assumed that multiple routes to the same destination will not
-be present; only one of multiple routes, that most recently installed,
-will be used.
-.PP
-Routing redirect control messages are used to dynamically
-modify existing routing table entries as well as dynamically
-create new routing table entries. On hosts where exhaustive
-routing information is too expensive to maintain (e.g. work
-stations), the
-combination of wildcard routing entries and routing redirect
-messages can be used to provide a simple routing management
-scheme without the use of a higher level policy process.
-Current connections may be rerouted after notification of the protocols
-by means of their \fIpr_ctlinput\fP entries.
-Statistics are kept by the routing table routines
-on the use of routing redirect messages and their
-affect on the routing tables. These statistics may be viewed using
-.IR netstat (1).
-.PP
-Status information other than routing redirect control messages
-may be used in the future, but at present they are ignored.
-Likewise, more intelligent ``metrics'' may be used to describe
-routes in the future, possibly based on bandwidth and monetary
-costs.
-.NH 2
-Routing table interface
-.PP
-A protocol accesses the routing tables through
-three routines,
-one to allocate a route, one to free a route, and one
-to process a routing redirect control message.
-The routine \fIrtalloc\fP performs route allocation; it is
-called with a pointer to the following structure containing
-the desired destination:
-.DS
-._f
-struct route {
- struct rtentry *ro_rt;
- struct sockaddr ro_dst;
-};
-.DE
-The route returned is assumed ``held'' by the caller until
-released with an \fIrtfree\fP call. Protocols which implement
-virtual circuits, such as TCP, hold onto routes for the duration
-of the circuit's lifetime, while connection-less protocols,
-such as UDP, allocate and free routes whenever their destination address
-changes.
-.PP
-The routine \fIrtredirect\fP is called to process a routing redirect
-control message. It is called with a destination address,
-the new gateway to that destination, and the source of the redirect.
-Redirects are accepted only from the current router for the destination.
-If a non-wildcard route
-exists to the destination, the gateway entry in the route is modified
-to point at the new gateway supplied. Otherwise, a new routing
-table entry is inserted reflecting the information supplied. Routes
-to interfaces and routes to gateways which are not directly accessible
-from the host are ignored.
-.NH 2
-User level routing policies
-.PP
-Routing policies implemented in user processes manipulate the
-kernel routing tables through two \fIioctl\fP calls. The
-commands SIOCADDRT and SIOCDELRT add and delete routing entries,
-respectively; the tables are read through the /dev/kmem device.
-The decision to place policy decisions in a user process implies
-that routing table updates may lag a bit behind the identification of
-new routes, or the failure of existing routes, but this period
-of instability is normally very small with proper implementation
-of the routing process. Advisory information, such as ICMP
-error messages and IMP diagnostic messages, may be read from
-raw sockets (described in the next section).
-.PP
-Several routing policy processes have already been implemented. The
-system standard
-``routing daemon'' uses a variant of the Xerox NS Routing Information
-Protocol [Xerox82] to maintain up-to-date routing tables in our local
-environment. Interaction with other existing routing protocols,
-such as the Internet EGP (Exterior Gateway Protocol), has been
-accomplished using a similar process.
diff --git a/share/doc/smm/18.net/b.t b/share/doc/smm/18.net/b.t
deleted file mode 100644
index a4fa1fe5493..00000000000
--- a/share/doc/smm/18.net/b.t
+++ /dev/null
@@ -1,143 +0,0 @@
-.\" $OpenBSD: b.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1983, 1986, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)b.t 8.1 (Berkeley) 6/8/93
-.\"
-.nr H2 1
-.\".ds RH "Raw sockets
-.br
-.ne 2i
-.NH
-\s+2Raw sockets\s0
-.PP
-A raw socket is an object which allows users direct access
-to a lower-level protocol. Raw sockets are intended for knowledgeable
-processes which wish to take advantage of some protocol
-feature not directly accessible through the normal interface, or
-for the development of new protocols built atop existing lower level
-protocols. For example, a new version of TCP might be developed at the
-user level by utilizing a raw IP socket for delivery of packets.
-The raw IP socket interface attempts to provide an identical interface
-to the one a protocol would have if it were resident in the kernel.
-.PP
-The raw socket support is built around a generic raw socket interface,
-(possibly) augmented by protocol-specific processing routines.
-This section will describe the core of the raw socket interface.
-.NH 2
-Control blocks
-.PP
-Every raw socket has a protocol control block of the following form:
-.DS
-.ta \w'struct 'u +\w'caddr_t 'u +\w'sockproto rcb_proto; 'u
-struct rawcb {
- struct rawcb *rcb_next; /* doubly linked list */
- struct rawcb *rcb_prev;
- struct socket *rcb_socket; /* back pointer to socket */
- struct sockaddr rcb_faddr; /* destination address */
- struct sockaddr rcb_laddr; /* socket's address */
- struct sockproto rcb_proto; /* protocol family, protocol */
- caddr_t rcb_pcb; /* protocol specific stuff */
- struct mbuf *rcb_options; /* protocol specific options */
- struct route rcb_route; /* routing information */
- short rcb_flags;
-};
-.DE
-All the control blocks are kept on a doubly linked list for
-performing lookups during packet dispatch. Associations may
-be recorded in the control block and used by the output routine
-in preparing packets for transmission.
-The \fIrcb_proto\fP structure contains the protocol family and protocol
-number with which the raw socket is associated.
-The protocol, family and addresses are
-used to filter packets on input; this will be described in more
-detail shortly. If any protocol-specific information is required,
-it may be attached to the control block using the \fIrcb_pcb\fP
-field.
-Protocol-specific options for transmission in outgoing packets
-may be stored in \fIrcb_options\fP.
-.PP
-A raw socket interface is datagram oriented. That is, each send
-or receive on the socket requires a destination address. This
-address may be supplied by the user or stored in the control block
-and automatically installed in the outgoing packet by the output
-routine. Since it is not possible to determine whether an address
-is present or not in the control block, two flags, RAW_LADDR and
-RAW_FADDR, indicate if a local and foreign address are present.
-Routing is expected to be performed by the underlying protocol
-if necessary.
-.NH 2
-Input processing
-.PP
-Input packets are ``assigned'' to raw sockets based on a simple
-pattern matching scheme. Each network interface or protocol
-gives unassigned packets
-to the raw input routine with the call:
-.DS
-raw_input(m, proto, src, dst)
-struct mbuf *m; struct sockproto *proto, struct sockaddr *src, *dst;
-.DE
-The data packet then has a generic header prepended to it of the
-form
-.DS
-._f
-struct raw_header {
- struct sockproto raw_proto;
- struct sockaddr raw_dst;
- struct sockaddr raw_src;
-};
-.DE
-and it is placed in a packet queue for the ``raw input protocol'' module.
-Packets taken from this queue are copied into any raw sockets that
-match the header according to the following rules,
-.IP 1)
-The protocol family of the socket and header agree.
-.IP 2)
-If the protocol number in the socket is non-zero, then it agrees
-with that found in the packet header.
-.IP 3)
-If a local address is defined for the socket, the address format
-of the local address is the same as the destination address's and
-the two addresses agree bit for bit.
-.IP 4)
-The rules of 3) are applied to the socket's foreign address and the packet's
-source address.
-.LP
-A basic assumption is that addresses present in the
-control block and packet header (as constructed by the network
-interface and any raw input protocol module) are in a canonical
-form which may be ``block compared''.
-.NH 2
-Output processing
-.PP
-On output the raw \fIpr_usrreq\fP routine
-passes the packet and a pointer to the raw control block to the
-raw protocol output routine for any processing required before
-it is delivered to the appropriate network interface. The
-output routine is normally the only code required to implement
-a raw socket interface.
diff --git a/share/doc/smm/18.net/c.t b/share/doc/smm/18.net/c.t
deleted file mode 100644
index fead405cc6a..00000000000
--- a/share/doc/smm/18.net/c.t
+++ /dev/null
@@ -1,149 +0,0 @@
-.\" $OpenBSD: c.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1983, 1986, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)c.t 8.1 (Berkeley) 6/8/93
-.\"
-.nr H2 1
-.\".ds RH "Buffering and congestion control
-.br
-.ne 2i
-.NH
-\s+2Buffering and congestion control\s0
-.PP
-One of the major factors in the performance of a protocol is
-the buffering policy used. Lack of a proper buffering policy
-can force packets to be dropped, cause falsified windowing
-information to be emitted by protocols, fragment host memory,
-degrade the overall host performance, etc. Due to problems
-such as these, most systems allocate a fixed pool of memory
-to the networking system and impose
-a policy optimized for ``normal'' network operation.
-.PP
-The networking system developed for UNIX is little different in this
-respect. At boot time a fixed amount of memory is allocated by
-the networking system. At later times more system memory
-may be requested as the need arises, but at no time is
-memory ever returned to the system. It is possible to
-garbage collect memory from the network, but difficult. In
-order to perform this garbage collection properly, some
-portion of the network will have to be ``turned off'' as
-data structures are updated. The interval over which this
-occurs must kept small compared to the average inter-packet
-arrival time, or too much traffic may
-be lost, impacting other hosts on the network, as well as
-increasing load on the interconnecting mediums. In our
-environment we have not experienced a need for such compaction,
-and thus have left the problem unresolved.
-.PP
-The mbuf structure was introduced in chapter 5. In this
-section a brief description will be given of the allocation
-mechanisms, and policies used by the protocols in performing
-connection level buffering.
-.NH 2
-Memory management
-.PP
-The basic memory allocation routines manage a private page map,
-the size of which determines the maximum amount of memory
-that may be allocated by the network.
-A small amount of memory is allocated at boot time
-to initialize the mbuf and mbuf page cluster free lists.
-When the free lists are exhausted, more memory is requested
-from the system memory allocator if space remains in the map.
-If memory cannot be allocated,
-callers may block awaiting free memory,
-or the failure may be reflected to the caller immediately.
-The allocator will not block awaiting free map entries, however,
-as exhaustion of the page map usually indicates that buffers have been lost
-due to a ``leak.''
-The private page table is used by the network buffer management
-routines in remapping pages to
-be logically contiguous as the need arises. In addition, an
-array of reference counts parallels the page table and is used
-when multiple references to a page are present.
-.PP
-Mbufs are 128 byte structures, 8 fitting in a 1Kbyte
-page of memory. When data is placed in mbufs,
-it is copied or remapped into logically contiguous pages of
-memory from the network page pool if possible.
-Data smaller than half of the size
-of a page is copied into one or more 112 byte mbuf data areas.
-.NH 2
-Protocol buffering policies
-.PP
-Protocols reserve fixed amounts of
-buffering for send and receive queues at socket creation time. These
-amounts define the high and low water marks used by the socket routines
-in deciding when to block and unblock a process. The reservation
-of space does not currently
-result in any action by the memory management
-routines.
-.PP
-Protocols which provide connection level flow control do this
-based on the amount of space in the associated socket queues. That
-is, send windows are calculated based on the amount of free space
-in the socket's receive queue, while receive windows are adjusted
-based on the amount of data awaiting transmission in the send queue.
-Care has been taken to avoid the ``silly window syndrome'' described
-in [Clark82] at both the sending and receiving ends.
-.NH 2
-Queue limiting
-.PP
-Incoming packets from the network are always received unless
-memory allocation fails. However, each Level 1 protocol
-input queue
-has an upper bound on the queue's length, and any packets
-exceeding that bound are discarded. It is possible for a host to be
-overwhelmed by excessive network traffic (for instance a host
-acting as a gateway from a high bandwidth network to a low bandwidth
-network). As a ``defensive'' mechanism the queue limits may be
-adjusted to throttle network traffic load on a host.
-Consider a host willing to devote some percentage of
-its machine to handling network traffic.
-If the cost of handling an
-incoming packet can be calculated so that an acceptable
-``packet handling rate''
-can be determined, then input queue lengths may be dynamically
-adjusted based on a host's network load and the number of packets
-awaiting processing. Obviously, discarding packets is
-not a satisfactory solution to a problem such as this
-(simply dropping packets is likely to increase the load on a network);
-the queue lengths were incorporated mainly as a safeguard mechanism.
-.NH 2
-Packet forwarding
-.PP
-When packets can not be forwarded because of memory limitations,
-the system attempts to generate a ``source quench'' message. In addition,
-any other problems encountered during packet forwarding are also
-reflected back to the sender in the form of ICMP packets. This
-helps hosts avoid unneeded retransmissions.
-.PP
-Broadcast packets are never forwarded due to possible dire
-consequences. In an early stage of network development, broadcast
-packets were forwarded and a ``routing loop'' resulted in network
-saturation and every host on the network crashing.
diff --git a/share/doc/smm/18.net/d.t b/share/doc/smm/18.net/d.t
deleted file mode 100644
index d7044b7009a..00000000000
--- a/share/doc/smm/18.net/d.t
+++ /dev/null
@@ -1,71 +0,0 @@
-.\" $OpenBSD: d.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1983, 1986, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)d.t 8.1 (Berkeley) 6/8/93
-.\"
-.nr H2 1
-.\".ds RH "Out of band data
-.br
-.ne 2i
-.NH
-\s+2Out of band data\s0
-.PP
-Out of band data is a facility peculiar to the stream socket
-abstraction defined. Little agreement appears to exist as
-to what its semantics should be. TCP defines the notion of
-``urgent data'' as in-line, while the NBS protocols [Burruss81]
-and numerous others provide a fully independent logical
-transmission channel along which out of band data is to be
-sent.
-In addition, the amount of the data which may be sent as an out
-of band message varies from protocol to protocol; everything
-from 1 bit to 16 bytes or more.
-.PP
-A stream socket's notion of out of band data has been defined
-as the lowest reasonable common denominator (at least reasonable
-in our minds);
-clearly this is subject to debate. Out of band data is expected
-to be transmitted out of the normal sequencing and flow control
-constraints of the data stream. A minimum of 1 byte of out of
-band data and one outstanding out of band message are expected to
-be supported by the protocol supporting a stream socket.
-It is a protocol's prerogative to support larger-sized messages, or
-more than one outstanding out of band message at a time.
-.PP
-Out of band data is maintained by the protocol and is usually not
-stored in the socket's receive queue.
-A socket-level option, SO_OOBINLINE,
-is provided to force out-of-band data to be placed in the normal
-receive queue when urgent data is received;
-this sometimes amelioriates problems due to loss of data
-when multiple out-of-band
-segments are received before the first has been passed to the user.
-The PRU_SENDOOB and PRU_RCVOOB
-requests to the \fIpr_usrreq\fP routine are used in sending and
-receiving data.
diff --git a/share/doc/smm/18.net/e.t b/share/doc/smm/18.net/e.t
deleted file mode 100644
index 9b6117abf64..00000000000
--- a/share/doc/smm/18.net/e.t
+++ /dev/null
@@ -1,127 +0,0 @@
-.\" $OpenBSD: e.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1983, 1986, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)e.t 8.1 (Berkeley) 6/8/93
-.\"
-.nr H2 1
-.\".ds RH "Trailer protocols
-.br
-.ne 2i
-.NH
-\s+2Trailer protocols\s0
-.PP
-Core to core copies can be expensive.
-Consequently, a great deal of effort was spent
-in minimizing such operations. The VAX architecture
-provides virtual memory hardware organized in
-page units. To cut down on copy operations, data
-is kept in page-sized units on page-aligned
-boundaries whenever possible. This allows data
-to be moved in memory simply by remapping the page
-instead of copying. The mbuf and network
-interface routines perform page table manipulations
-where needed, hiding the complexities of the VAX
-virtual memory hardware from higher level code.
-.PP
-Data enters the system in two ways: from the user,
-or from the network (hardware interface). When data
-is copied from the user's address space
-into the system it is deposited in pages (if sufficient
-data is present).
-This encourages the user to transmit information in
-messages which are a multiple of the system page size.
-.PP
-Unfortunately, performing a similar operation when taking
-data from the network is very difficult.
-Consider the format of an incoming packet. A packet
-usually contains a local network header followed by
-one or more headers used by the high level protocols.
-Finally, the data, if any, follows these headers. Since
-the header information may be variable length, DMA'ing the eventual
-data for the user into a page aligned area of
-memory is impossible without
-\fIa priori\fP knowledge of the format (e.g., by supporting
-only a single protocol header format).
-.PP
-To allow variable length header information to
-be present and still ensure page alignment of data,
-a special local network encapsulation may be used.
-This encapsulation, termed a \fItrailer protocol\fP [Leffler84],
-places the variable length header information after
-the data. A fixed size local network
-header is then prepended to the resultant packet.
-The local network header contains the size of the
-data portion (in units of 512 bytes), and a new \fItrailer protocol
-header\fP, inserted before the variable length
-information, contains the size of the variable length
-header information. The following trailer
-protocol header is used to store information
-regarding the variable length protocol header:
-.DS
-._f
-struct {
- short protocol; /* original protocol no. */
- short length; /* length of trailer */
-};
-.DE
-.PP
-The processing of the trailer protocol is very
-simple. On output, the local network header indicates that
-a trailer encapsulation is being used.
-The header also includes an indication
-of the number of data pages present before the trailer
-protocol header. The trailer protocol header is
-initialized to contain the actual protocol identifier and the
-variable length header size, and is appended to the data
-along with the variable length header information.
-.PP
-On input, the interface routines identify the
-trailer encapsulation
-by the protocol type stored in the local network header,
-then calculate the number of
-pages of data to find the beginning of the trailer.
-The trailing information is copied into a separate
-mbuf and linked to the front of the resultant packet.
-.PP
-Clearly, trailer protocols require cooperation between
-source and destination. In addition, they are normally
-cost effective only when sizable packets are used. The
-current scheme works because the local network encapsulation
-header is a fixed size, allowing DMA operations
-to be performed at a known offset from the first data page
-being received. Should the local network header be
-variable length this scheme fails.
-.PP
-Statistics collected indicate that as much as 200Kb/s
-can be gained by using a trailer protocol with
-1Kbyte packets. The average size of the variable
-length header was 40 bytes (the size of a
-minimal TCP/IP packet header). If hardware
-supports larger sized packets, even greater gains
-may be realized.
diff --git a/share/doc/smm/18.net/f.t b/share/doc/smm/18.net/f.t
deleted file mode 100644
index 2b202aff843..00000000000
--- a/share/doc/smm/18.net/f.t
+++ /dev/null
@@ -1,115 +0,0 @@
-.\" $OpenBSD: f.t,v 1.3 2003/06/02 23:30:11 millert Exp $
-.\"
-.\" Copyright (c) 1983, 1986, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)f.t 8.1 (Berkeley) 6/8/93
-.\"
-.nr H2 1
-.\".ds RH Acknowledgements
-.br
-.ne 2i
-.SH
-\s+2Acknowledgements\s0
-.PP
-The internal structure of the system is patterned
-after the Xerox PUP architecture [Boggs79], while in certain
-places the Internet
-protocol family has had a great deal of influence in the design.
-The use of software interrupts for process invocation
-is based on similar facilities found in
-the VMS operating system.
-Many of the
-ideas related to protocol modularity, memory management, and network
-interfaces are based on Rob Gurwitz's TCP/IP implementation for the
-4.1BSD version of UNIX on the VAX [Gurwitz81].
-Greg Chesson explained his use of trailer encapsulations in Datakit,
-instigating their use in our system.
-.\".ds RH References
-.nr H2 1
-.sp 2
-.ne 2i
-.SH
-\s+2References\s0
-.LP
-.IP [Boggs79] 20
-Boggs, D. R., J. F. Shoch, E. A. Taft, and R. M. Metcalfe;
-\fIPUP: An Internetwork Architecture\fP. Report CSL-79-10.
-XEROX Palo Alto Research Center, July 1979.
-.IP [BBN78] 20
-Bolt Beranek and Newman;
-Specification for the Interconnection of Host and IMP.
-BBN Technical Report 1822. May 1978.
-.IP [Cerf78] 20
-Cerf, V. G.; The Catenet Model for Internetworking.
-Internet Working Group, IEN 48. July 1978.
-.IP [Clark82] 20
-Clark, D. D.; Window and Acknowledgement Strategy in TCP, RFC-813.
-Network Information Center, SRI International. July 1982.
-.IP [DEC80] 20
-Digital Equipment Corporation; \fIDECnet DIGITAL Network
-Architecture \- General Description\fP. Order No.
-AA-K179A-TK. October 1980.
-.IP [Gurwitz81] 20
-Gurwitz, R. F.; VAX-UNIX Networking Support Project \- Implementation
-Description. Internetwork Working Group, IEN 168.
-January 1981.
-.IP [ISO81] 20
-International Organization for Standardization.
-\fIISO Open Systems Interconnection \- Basic Reference Model\fP.
-ISO/TC 97/SC 16 N 719. August 1981.
-.IP [Joy86] 20
-Joy, W.; Fabry, R.; Leffler, S.; McKusick, M.; and Karels, M.;
-Berkeley Software Architecture Manual, 4.4BSD Edition.
-\fIUNIX Programmer's Supplementary Documents\fP, Vol. 1 (PSD:5).
-Computer Systems Research Group,
-University of California, Berkeley.
-May, 1986.
-.IP [Leffler84] 20
-Leffler, S.J. and Karels, M.J.; Trailer Encapsulations, RFC-893.
-Network Information Center, SRI International.
-April 1984.
-.IP [Postel80] 20
-Postel, J. User Datagram Protocol, RFC-768.
-Network Information Center, SRI International. May 1980.
-.IP [Postel81a] 20
-Postel, J., ed. Internet Protocol, RFC-791.
-Network Information Center, SRI International. September 1981.
-.IP [Postel81b] 20
-Postel, J., ed. Transmission Control Protocol, RFC-793.
-Network Information Center, SRI International. September 1981.
-.IP [Postel81c] 20
-Postel, J. Internet Control Message Protocol, RFC-792.
-Network Information Center, SRI International. September 1981.
-.IP [Xerox81] 20
-Xerox Corporation. \fIInternet Transport Protocols\fP.
-Xerox System Integration Standard 028112. December 1981.
-.IP [Zimmermann80] 20
-Zimmermann, H. OSI Reference Model \- The ISO Model of
-Architecture for Open Systems Interconnection.
-\fIIEEE Transactions on Communications\fP. Com-28(4); 425-432.
-April 1980.
diff --git a/share/doc/smm/18.net/spell.ok b/share/doc/smm/18.net/spell.ok
deleted file mode 100644
index f9a387bc75d..00000000000
--- a/share/doc/smm/18.net/spell.ok
+++ /dev/null
@@ -1,307 +0,0 @@
-A,1986A
-AA
-ACCEPTCONN
-ADDR
-ARPANET
-ASYNC
-BBN
-BBN78
-Beranek
-Boggs
-Boggs78
-Boggs79
-Burruss81
-CANTRCVMORE
-CANTSENDMORE
-CLSIZE
-COLL
-CONNECT2
-CONNREQUIRED
-COPYALL
-CSL
-Catenet
-Cerf
-Cerf78
-Chesson
-Clark82
-Com
-DEC80
-DECnet
-DEQUEUE
-DEQUEUEIF
-DETATCH
-DMA
-DMA'ing
-DMR
-DONTWAIT
-Datagram
-Datakit
-EGP
-EWOULDBLOCK
-Ethernet
-FADDR
-FASTTIMO
-Fabry
-GETOPT
-Gurwitz
-Gurwitz's
-Gurwitz81
-HASCL
-HOSTDEAD
-HOSTUNREACH
-ICMP
-IEN
-IFDOWN
-IFF
-IFRW
-INTRANS
-IP
-IP's
-ISCONNECTED
-ISCONNECTING
-ISDISCONNECTING
-ISO
-ISO81
-Ircb
-Joy86
-K179A
-Karels
-LADDR
-LOOPBACK
-Leffler
-Leffler84
-M.J
-MAXNUBAMR
-MCLGET
-MFREE
-MGET
-MLEN
-MSG
-MSGSIZE
-MSIZE
-Mbufs
-McKusick
-Metcalfe
-NBIO
-NEEDFRAG
-NOARP
-NOFDREF
-NOTRAILERS
-NS
-Notes''SMM:15
-OOBINLINE
-OSI
-PARAMPROB
-PEERADDR
-PF
-POINTOPOINT
-PRC
-PRCO
-PRIV
-PROTORCV
-PROTOSEND
-PRU
-PS1:6
-Postel
-Postel80
-Postel81a
-Postel81b
-Postel81c
-QFULL
-RCVATMARK
-RCVD
-RCVOOB
-RFC
-RH
-ROUTEDEAD
-RTF
-S.J
-SB
-SEL
-SENDOOB
-SETOPT
-SIGIO
-SIOCADDRT
-SIOCDELRT
-SIOCGIFCONF
-SIOCSIFADDR
-SIOCSIFDSTADDR
-SIOCSIFFLAGS
-SIOGSIFFLAGS
-SLOWTIMO
-SMM:15
-SOCKADDR
-SRCFAIL
-SS
-Shoch
-TCP
-TIMXCEED
-TOSHOST
-TOSNET
-UDP
-UNIBUS
-VAX
-VMS
-Vol
-WANTRCVD
-Xerox81
-Xerox82
-Zimmermann
-Zimmermann80
-addr
-addrlist
-adj
-amelioriates
-async
-bdp
-broadaddr
-caddr
-csma
-ctlinput
-ctloutput
-daemon
-dat
-datagram
-decapsulation
-dequeuing
-dev
-dma'd
-dom
-dst
-dstaddr
-dtom
-faddr
-fastimo
-fasttimo
-fcntl
-freem
-fstat
-getsockopt
-hardwired
-hiwat
-hlen
-ierrors
-ifa
-ifaddr
-iff
-ifnet
-ifp
-ifq
-ifqueue
-ifr
-ifrw
-ifrw.ifrw
-ifu
-ifu.ifu
-ifuba
-ifubinfo
-ifw
-ifx
-ifxmt
-info
-info.iff
-init
-inp
-inpcb
-inq
-ip
-ipackets
-ipintrq
-laddr
-len
-loopback
-lowat
-m,n
-mb
-mbcnt
-mbmax
-mbuf
-mbuf's
-mbufs
-mp
-mr
-mtod
-mtu
-netstat
-nmr
-nr
-nx
-oerrors
-off0
-ontrol
-oob
-oobmark
-op
-opackets
-ops
-optname
-pcb
-pgrp
-prev
-proc
-proto
-protosw
-protoswNPROTOSW
-pte
-pullup
-q0len
-qlen
-qlimit
-rawcb
-rcb
-rcv
-recvmsg
-ref
-refcnt
-regs
-req
-rerouted
-ro
-rotocol
-rt
-rtalloc
-rtentry
-rtfree
-rtredirect
-rubaget
-sb
-sel
-sendmsg
-setsockopt
-slowtimo
-snd
-sockaddr
-sockbuf
-socketpair
-sockproto
-sonewconn
-soshutdown
-src
-ta
-ternet
-timeo
-totlen
-uba
-ubaalloc
-ubaget
-ubainit
-uballoc's
-ubaminit
-uban
-ubaput
-ubinfo
-udp
-unibus
-usrreq
-virt
-vm
-wildcard
-wmap
-wubaput
-x,t
-xmt
-xmt.ifrw
-xmt.ifw
-xswapd
-xtofree
-xxx
diff --git a/share/doc/smm/Makefile b/share/doc/smm/Makefile
index 0467ba7b6fd..e5333a2cd14 100644
--- a/share/doc/smm/Makefile
+++ b/share/doc/smm/Makefile
@@ -1,21 +1,8 @@
-# $OpenBSD: Makefile,v 1.8 2010/01/04 17:50:39 deraadt Exp $
+# $OpenBSD: Makefile,v 1.9 2010/07/01 20:02:28 tedu Exp $
# from: @(#)Makefile 8.1 (Berkeley) 6/10/93
-# Missing or not installed:
-# 02.config 14.uucpimpl 15.uucpnet 16.security
-
DOCDIR= /usr/share/doc/smm
-FILES= 00.contents Makefile Title
-
-Title.ps: ${FILES}
- groff Title > ${.TARGET}
-Title.txt: ${FILES}
- groff -Tascii Title > ${.TARGET}
-
-contents.ps: ${FILES}
- groff -ms 00.contents > ${.TARGET}
-contents.txt: ${FILES}
- groff -Tascii -ms 00.contents > ${.TARGET}
+FILES= Makefile
beforeinstall:
install -c -o ${DOCOWN} -g ${DOCGRP} -m ${DOCMODE} ${FILES} \
diff --git a/share/doc/smm/Title b/share/doc/smm/Title
deleted file mode 100644
index 6e852e6269a..00000000000
--- a/share/doc/smm/Title
+++ /dev/null
@@ -1,200 +0,0 @@
-.\" $OpenBSD: Title,v 1.5 2004/04/09 12:10:04 jmc Exp $
-.\"
-.\" Copyright (c) 1986, 1993 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)Title 8.2 (Berkeley) 4/19/94
-.\"
-.if n \{\
-.po 5n
-.ll 70n
-.\}
-.ps 18
-.vs 22
-.sp 2.75i
-.ft B
-.ce 2
-UNIX System Manager's Manual
-(SMM)
-.ps 14
-.vs 16
-.sp |4i
-.ce 2
-4.4 Berkeley Software Distribution
-.sp |5.75i
-.ft R
-.pt 12
-.vs 16
-.ce
-June, 1993
-.sp |8.2i
-.ce 5
-Computer Systems Research Group
-Computer Science Division
-Department of Electrical Engineering and Computer Science
-University of California
-Berkeley, California 94720
-.bp
-\&
-.sp |1i
-.hy 0
-.ps 10
-.vs 12p
-Copyright 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993
-The Regents of the University of California. All rights reserved.
-.sp 2
-Other than the specific manual pages and documents listed below
-as copyrighted by AT&T,
-redistribution and use of this manual in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-.sp 0.5
-.in +0.2i
-.ta 0.2i
-.ti -0.2i
-1) Redistributions of this manual must retain the copyright
-notices on this page, this list of conditions and the following disclaimer.
-.ti -0.2i
-2) Software or documentation that incorporates part of this manual must
-reproduce the copyright notices on this page, this list of conditions and
-the following disclaimer in the documentation and/or other materials
-provided with the distribution.
-.ti -0.2i
-3) Neither the name of the University nor the names of its contributors
-may be used to endorse or promote products derived from this software
-without specific prior written permission.
-.in -0.2i
-.sp
-\fB\s-1THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.\s+1\fP
-.sp 2
-The Institute of Electrical and Electronics Engineers and the American
-National Standards Committee X3, on Information Processing Systems have
-given us permission to reprint portions of their documentation.
-.sp
-In the following statement, the phrase ``this text'' refers to portions
-of the system documentation.
-.sp 0.5
-``Portions of this text are reprinted and reproduced in
-electronic form in 4.4BSD from IEEE Std 1003.1-1988, IEEE
-Standard Portable Operating System Interface for Computer Environments
-(POSIX), copyright 1988 by the Institute of Electrical and Electronics
-Engineers, Inc. In the event of any discrepancy between these versions
-and the original IEEE Standard, the original IEEE Standard is the referee
-document.''
-.sp
-In the following statement, the phrase ``This material'' refers to portions
-of the system documentation.
-.sp 0.5
-``This material is reproduced with permission from American National
-Standards Committee X3, on Information Processing Systems. Computer and
-Business Equipment Manufacturers Association (CBEMA), 311 First St., NW,
-Suite 500, Washington, DC 20001-2178. The developmental work of
-Programming Language C was completed by the X3J11 Technical Committee.''
-.sp 2
-Manual pages cron.8, icheck.8, ncheck.8, and sa.8
-and documents SMM:15, 16, and 17
-are copyright 1979, AT&T Bell Laboratories, Incorporated.
-Document SMM:14 is a modification of an earlier document that
-is copyrighted 1979 by AT&T Bell Laboratories, Incorporated.
-Holders of \x'-1p'UNIX\v'-4p'\s-3TM\s0\v'4p'/32V,
-System III, or System V software licenses are
-permitted to copy these documents, or any portion of them,
-as necessary for licensed use of the software,
-provided this copyright notice and statement of permission
-are included.
-.sp 2
-The views and conclusions contained in this manual are those of the
-authors and should not be interpreted as representing official policies,
-either expressed or implied, of the Regents of the University of California.
-.br
-.ll 6.5i
-.lt 6.5i
-.po .75i
-.in 0i
-.af % i
-.ds ET\"
-.de HD
-.po 0
-.lt 7.4i
-.tl ''''
-.lt
-.po
-'sp 18p
-.if o .tl '\\*(ET''\\*(OT'
-.if e .tl '\\*(OT''\\*(ET'
-'sp 18p
-.ns
-..
-.de FO
-'sp 18p
-.if e .tl '\s9\\*(Dt''\\*(Ed\s0'
-.if o .tl '\s9\\*(Ed''\\*(Dt\s0'
-'bp
-..
-.wh 0 HD
-.wh -60p FO
-.bp 5
-.ds ET \s9\f2Table \|of \|Contents\fP\s0
-.ds OT - % -
-.ce
-\f3TABLE \|OF \|CONTENTS\fP
-.nr x .5i
-.in +\nxu
-.nf
-.ta \n(.lu-\nxuR
-.de xx
-\\$1\f3 \a \fP\\$2
-..
-.de t
-.sp 1v
-.ne .5i
-.cs 3
-.ti -.5i
-.ss 18
-\f3\s9\\$2. \\$3\s0\fP
-.ss 12
-.if t .sp .5v
-.cs 3 36
-.ds Ed Section \\$2
-.ds Dt \\$3
-.so \\$1
-..
-.\" .t /usr/src/share/man/man0/toc8 8 "System Maintenance"
-.in -.5i
-.cs 3
-.if n .ta 8n 16n 24n 32n 40n 48n 56n 64n 72n 80n
-.if t .ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i 5.5i 6i 6.5i