4BSD/usr/src/cmd/berknet/READ_ME


	B E R K E L E Y   N E T W O R K


The code in this directory is the most up-to-date network source
on the machine.

*** Adding a new machine

To add another machine to an existing network, change these programs:

* mach.h:
	add an ifdef entry for the new machines
* config.h:
	add in LOCALx section of config.h
	   the usual information about the machine interconnections
	add the name of the machine to the machine
	   name table and its type to the machine type table
* Paths.h:
	Change the path names in "Paths.h".
* makefile:
	change the makefile to suit.
* nsh.c:
	Change the path names in "nsh.c".
* sub.c:
	check routine "gothru"
* v6mail.c:
	add machine names to "v6mail.c"

To set up a new network, I suggest starting with two machines and
get everything up as you like it, then including others.
Follow the steps outlined above.  A good way to see the specific
places where another network has been changed is to 
	grep RAND *.h *.c


*** Other files ***
interact.c, listen.c -	manually send packets
speeds.c, speedr.c -	send various length packets, use "time" to evaluate
store.c, receive.c -	send a file (use for backup)
nettest.c -		run daemons locally, using pipes instead of tty lines
setmode.c -		set the mode on the tty line driver to "cat" things thru

***	Taxonomy of net pgms being sent around:

Internal:	sendberkmail, prmail, mmail, mwrite
External:	net, netcp, netlpr, netmail
Other:		netdaemon, netstart, netq, netrm


***	Naming Conventions (I may adopt these if I like them) ***
The names of simple variables are composed of three parts.
	[type char] [string] [type tag]
where
	typechar is one of
	i	integer (int)
	l	long integer (long)
	ch	character (char)
	s	string (char *)
	f	logical (char)
the (optional) string is any short descriptive string.
the (optional) type tag is noe of (assume string is "foo"):
	
	fooMin	minimum value of foo, for all foo, foo >= fooMin
	fooMax	maximum value of foo, foo <= fooMax
	fooMac	current maximum of foo, fooMin <= fooMac <= fooMax
		usually used for array substript
	fooOld	old value of foo, as opposed to fooNew
	fooNew	new value of foo, as opposes to fooOld

Example:
	sdate	a string containing a date
	sdateOld	a string containing an old date
	sdateNew 	a string containing the "current" date

Pointers

	pointer names are composed of the
	previous set of names precedd by a character "p", e.g.

		pch	pointer to char (same as string)
		pi	pointer to integer
		pltime	pointer to a long with the time in it

Counters
	Variables that count instances of things are preceded
	by 'n', e.g.
		nch	number of chars
		nsdate	number of date strings
Indices
	Are stored as integers and preceded by 'i':
		ich	index into char array
		is	same as above

Added types:
	uid	userid as set by getuid()
	sn	local name, w/o ':'
	fd	(FILE *) file descriptor
	mch	(char) 1 - letter machine code
	addr	(char *) address, may include ':'

Procedure names list
parameters appear after procedure name, return value before.
(Remember for external names only the first 7 characters are significant.)

Compile Time Constants
Are in upper-case.
(Remember only first 8 characters are significant to the preprocessor).


PROBLEMS

	If you have any problems or questions, don't hesitate
	to call me.
		Eric Schmidt
		706 International House
		Berkeley, Cal. 94720
		415-642-9365
		    642-9490 (messages)

	or
		C.S. Department
		Evans Hall
		U.C. Berkeley
		Berkeley, Cal. 94720
		415-642-4951
		    642-1024 (messages)
	
	or mail Bell Research mail to "research!ucbvax!schmidt"
	or mail ARPANET mail to me at "schmidt@berkeley" or "schmidt@parc".