	%Z%%M%	%I%	(Alex Crain) %G%

	This package contains a device driver to implement BSD style
sockets on an AT&T 3b1. It is written for unix release 3.51 and
compiled using gcc, I don't know if it will work with a different
OS/compiler combination.

	The code is directly derived from Berkeley kernel source, and
carries the Berkeley Copyright. I have added my own Copyright as well,
although I question its legality and I don't really much care what
happens to the code as long as nobody *sells* it (giving away is OK)
and my name stays on it.

	The code is far from complete. At this writing, only the
AF_UNIX domain is supported, and SOCK_RAW is not implemented. Within
these restraints, the code implements the following system calls:

		socket ()
		bind ()
		listen ()
		accept ()
		connect ()
		socketpair ()
		sockpipe ()
		sendto ()
		send ()
		recvfrom ()
		recv ()
		setsockopt ()
		getsockopt ()

	The code has also not been adaquately tested and surely has
bugs.  Since the interface routines are true system calls, the bugs
are likely to cause panics and other types of system crashes, so use
this driver at your own risk. Bug reports are encouraged, as are
enhancements and extensions within the realm of BSD compatability.
Send bug reports and patches to:

		alex%nerwin.uucp@umbc3.umbc.edu

			or

		uunet!umbc3!nerwin!alex

	The documentation is miserable, I will try to do better.

	The system files are:

		src/*	- the c source files
		uipc/*	- the header files
		lib/*	- the user interface library
		test/*	- misc. test programs
		Makefile- the global makefile
		sysconfig.m4 - the system configuration file

To install the system, type 'make' in the root directory. This will
create two interesting files: src/uipc.o and lib/libuipc.a. uipc.o
goes in the /etc/lddrv directory. Add the following line to
/etc/master:

uipc	1100	000	000	uipc	0	0

and type:

	cd /etc/lddrv; ./lddrv -av uipc

to load the driver. To make the driver load at boot tome, add "uipc"
to the file /etc/lddrv/drivers.

Put libuipc.a in /usr/lib, and copy the uipc directory to
/usr/include/uipc.



	Again, please be aware that this code is delicate and likely
to cause crashes. If appropriate precautions are taken, however, it is
possible to avoid trashing your system. When testing device drivers
and code that uses them:

	1) make sure that the system is quiet. Open files may be
damaged or lost when the kernel crashes. Do not test the driver when
uucico is running.

	2) don't do two things at once. Get out of the editor before
testing new code.

	3) type "sync" before running new code. This will flush the
kernels internal buffers. DO NOT run sync immediately after testing
new code, because if the kernel has trashed buffers, they will be
written to disk. Instead, run "ls" a few times to see if the system is
going to crash.

	4) Do not install code that uses this package until it becomes
more stable. It might work for a while, but is likely to cause crashes
at in oppertune times.

	The code is heavily protected with calls to panic(), so it is
doubtful that any major damage will result (I have crashed many times
while writing this and have yet to lose a file) if the precautions are
taken. The code will be better tested and documented soon, so if you
don't want to beta test, you can wait. In any case,

	Enjoy

					Alex Crain
