2.9 TCP effort at SRI

Greg Satz satz at CSL-Vax.ARPA
Sun Dec 9 14:59:20 AEST 1984


When I worked at SRI, I was responsible for three PDP-11/44s.  Two were
on the ARPAnet and two were on the local ethernet (SRINET).  One was
the SRINET-GATEWAY.  When I started work there, I inherited 2.8bsd.
Bill Croft has just left SRI for greener pasters after finishing the
4.1a port to 2.8 just in time for the NCP to TCP cutover.  Yes, 2.8/2.9
TCP/IP is Berkeley's first TCP effort.

Tektronix did the actual port from 2.8 to 2.9.  Berkeley approached us
to take the latest 2.9 and get the network up.  They supplied us with
Tektronix's code and a pre-release of 2.9.  What follows is the
modification log I kept of the effort.  It isn't complete and is not as
useful without the code, but it will give you some idea of what was
necessary.  I gave Berkeley all of my work (except for the advisory
lock stuff from 4.2, but I posted that) so anyone who got a tape from
Berkeley should have everything that I did.

The recent submission from Seismo asked for any suggestions.  See the
problem I had with boot in the following.

----------------------------------------------------------------------------
Edited by root on Wed Oct 12 15:08:40 PDT 1983

This is the list of modifications for the 2.9 BSD kernel being installed
on the SRI TSC PDP11/44 UNIX machines.  For more info, contact greg at sri-tsc
or dan at sri-tsc.

----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by root on Wed Oct 12 15:08:42 PDT 1983

conf/ovmakefile and conf/makefile
	dkbad.c was left out in OvMakefile.  Added to Overlay #3.
	checksys entry was modified to use ${CC} and ${CFLAGS}.

/usr/include/sys/hpreg.h
	Numerous mods for xp.c driver with badblocks.  Also, added code
	for SI Eagle (9751 415-Mb Winchester).

dev/xp.c
	Added code for SI Eagle.  Fixed bug where RMER2 should have
	been HPER2.

TSCB/ioconf.c
	Added SI Eagle.  Will back into conf/ioconf eventually.

sys/nami.c rcs version 1.2
	In the routine symchar, the statement "saveseg5(seg5)" should
	be "saveseg5(save5)".

dev/hk.c
	added hkroot routine, UNIBUS_MAP defines, extern on HKADDR,
	and bugfix in hkdump from Carl.

TSCB/c.c
	Added hkroot here too.  Will backport to conf someday.

sys/syslocal.c rcs version 1.2
	Changes added for UCB_NET neccesary for the network.  From
	Tektronix.

sys/machdep.c rcs version 1.2
	New version supplied by Carl Smith.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Mon Oct 17 23:18:56 PDT 1983

To make a network kernel, I discovered the hard way that NOKA5 cannot
be defined! In machdep.c there is an #ifdef that causes an error if
it is defined. Will look into this later.

Also, VIRUS_VFORK must also be defined for a network kernel. dev/pty.c
uses SVFORK which is defined in /usr/include/sys/proc.h if VFORK is
defined. dev/pty.c needs an #ifdef VIRUS_VFORK.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Fri Oct 21 11:42:09 PDT 1983

The second stage boot wouldn't work with split i/d overlaid kernels.
This version of boot tried to be clever if it is loading a split
overliad kernel by attempting to remap himself to 192k on the fly.
This was done in the reloc() called from stand/bootstrap/boot.c but
housed in stand/bootstrap/M.s.

This fix is a temporary hack that just allows boot to work.

boot.c	Set the variable segflag to 3 instead of 2.
	Comment out the call to reloc() if load split overlaid kernel.

M.s	Have boot relocate itself at 192k instead of 128k by changing the
	constants 4000 to 6000.

This has been done to the boot in pre-stand/bootstrap directory but not
in the distributed 2.9 boot.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Thu Nov 3 21:33:59 PST 1983

I found out the hard way that if you want autoboot, then you can't
probe the disk that holds swapping.  If your machine should crash
before your swapping disk gets probed, you will never get a crash
dump.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Thu Nov 3 21:38:43 PST 1983

sys/mbuf11.c rcs version 1.2

The file sys/mbuf11.c contains constants that determine how much of the
unibuss map will be accessed.  Needed to increase these constants for
our network kernel.  Used the values Bill Croft picked in the 2.8
kernel.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Thu Nov 3 21:40:29 PST 1983

Discovered problems with the xpdump routine.  Since you can't probe the
swapping disk, it must be preloaded in MACHINE/ioconf.c.  Some places
in xp.c required a variable xp_nspc, but it was used haphazardly.  The
dump routine expected this variable to be preset, but it wasn't done in
ioconf.c.  Added it in in ioconf.c.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by root on Wed Nov 2 17:30:25 PST 1983

/usr/src/cmd/ln.c
	Required the inclusion of <whoami.h> so the UCB_SYMLINKS could
	be found.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Fri Nov 4 16:07:04 PST 1983

/src/src/cmd/ls/symlnk_ucbls.c (aka ucbls.c)
/src/src/cmd/ls/symlnk_ls.c (aka ls.c)
	When UCB_SYMLINK was defined, there was a syntax (expression)
	error on line 796. Clearly this thing was never compiled with
	symlinks defined. Also fixed bugs in ln both programs. Logic
	errors when links where found.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Tue Nov 8 15:27:18 PST 1983

sys/socket.c rcs version 1.2

This revision fixes a number of problems that weren't installed in 2.9
but were in 2.8.  (1) Out of band data was using a character variable
that was converted into an interger.  So two bytes needed to be copied
instead of one. (2) the panic socreate was converted into a printf with
an #ifdef NEVER.

These were fixes in the 2.8 kernel but weren't needed in the 2.9 kernel
(yet). (1) the sostat() wasn't zeroing data correctly.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Thu Nov 10 17:18:31 PST 1983

sys/socketsubr.c rcs version 1.2
	back ported fix for the soreceive panic that John Stewart
	fixed in the 2.8 version.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Thu Nov 10 17:33:23 PST 1983

net/ip_icmp.c rcs version 1.3
	Various bugs fixes which include: ICMP ping fix from Muus.
Sam's ICMP echo packet incorrect IP data length fix.  Muss pass the
buck or default route code.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Thu Nov 10 23:13:45 PST 1983

net/if_acc.c rcs version 1.2
	added is jsq's fix from 2.8 that took more time when
	waiting for the ready line to return. Also added the
	constant PLI, which should be defined in acc.h, if the
	acc box is connected thru a PLI.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Fri Nov 11 00:17:29 PST 1983

net/if_imp.c rcs ver 1.2
	Added in Dan's patch to reenable ready line if it drops.
	Include Muus's patch to return "host dead" messages immediately
	if can't make connection. Both of these cam from 2.8. There is
	a label in this module with the word BRL which differs from the
	2.8 kernel. I don't understand why this was changed yet.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Fri Nov 11 00:41:23 PST 1983

net/tcp_timer.c rcs 1.2
	Increased retransmission times. Patch from 2.8 from Muus.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Sun Nov 13 00:57:43 PST 1983

net/ip.h version 1.2
	Decreased the time to live decrement from 5 to 1. From 2.8.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Sun Nov 13 02:02:04 PST 1983

net/udp_usrreq.c 1.2
	incorporated fixes from 2.8.  originally from Sam Leffler.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Sun Nov 13 02:24:39 PST 1983

net/if.h 1.2
	Made the interface statistic variables long instead of int.
	Allows better tracking.  This include if_ipackets, if_ierrors,
	if_opackets, if_oerrors, and if_collisions.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Sun Nov 13 02:58:35 PST 1983

net/route.c 1.2
	modifications for BRL's pass the buck routing or default
	route.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Sun Nov 13 03:15:55 PST 1983

net/if_sri.c 1.2
	changes for the ready line reenable. originally from 2.8.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Sun Nov 13 03:34:37 PST 1983

net/if_css.c 1.2
	Include changes that reenable ready line if it dissappears
	and modifications from sri-unix.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Sun Nov 13 13:31:17 PST 1983

net/tcp_input.c 1.2
	make sure a connection times out if synchronization is lost.
	used jsq's hack that increases time to timeout.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Fri Nov 25 12:07:32 PST 1983

net/if_ether.c
net/if_il.c
net/if_il.h
net/if.h
net/if.c
sys/socket.c

Added the Address Resolution Protocol from 4.2.  This allows us to talk
with other vendors ethernet boards.  Currently, all systems which have
a logical network address under 700 (oldmap in if_ether.c) will use ARP.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Wed Jan 4 22:31:45 PST 1984

c.c
l.s
ioconf.c
dev/hp.c (badblock version)

Removed all occurances of the SI Eagle disk for now. Modified the hp.c
driver to understand the Calcomp Trident (the badblock version).
Made sure NXP was 0 and NHP was 1.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Wed Jan 4 22:52:37 PST 1984

cmd/rm.c
cmd/ln.c

Just had screwed up includes. It seems most things include types.h, but
forget to include param.h or whoami.h. The later include the former with
the added benefit of obtaining the system parameters.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Wed Jan 4 22:55:19 PST 1984

cmd/ls/ls.c
cmd/ls/ucbls.c

These things where never tested with symbolic links. Did much to make it
work.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Fri Jan 6 23:19:49 PST 1984

net/if_ether.c (1.3)
	Fixed a bug where the incorrect packet size was being sent out
	for ARP packets. From Lou Salkind.

net/if_il.c (1.4)
	Commented out the printf("QFULL") statement which would
	effectively hang the system when the interlan wsa being swamped
	with requests.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by root on Mon Jan 9 00:08:28 PST 1984

dev/dh.c

	Defined a new manifest constant called DH_HANGUP.  If defined
in the dh.h file, it will always cause the dh to drop carrier on close.
This is useful for lines that are conencted to port selectors.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Thu Jan 26 02:38:11 PST 1984

cmd/getty.c
	Made the banner look more like 4.2. Also changed table 9
	to merge with TEXAS autobaud. This allows 9600 lines
	by default and then any other speed after.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Thu Jan 26 02:39:24 PST 1984

cmd/su.c
cmd/passwd.c

	Used the versions from 2.8. Passwd does much more checking
	and we want that.  I modified it so short passwords won't be
	accepted unless you try it for over 100 times. su prints out
	user's name on the console. The 2.9 su is much better and
	should be modified. the UCB_GRPMAST code should be used someday.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Thu Jan 26 02:43:49 PST 1984

cmd/login.c

	Many changes to support the rlogin and telnet argument
	passing. It records host name is lastlog. It also does
	the SRI accounting (blah). It doesn't support > 8 character
	login names, however.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Fri Mar 16 10:20:25 PST 1984

sys/syslocal.c
	From: Robert W. Scheifler <rws at mit-bold>
	If a SIGTSTP is generated on the controlling tty of a process
	that is waiting in a select() on that tty, the process will
	mysteriously vanish.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Fri Mar 16 22:52:04 PST 1984

sys/proto.c
	Changes so that SOCK_RAW will work for ICMP messages. Included
	data in the second table entry as provided by RWS at MIT-BOLD.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Tue Apr 17 10:45:47 PST 1984

net/if_ether.c rcs 1.4

	When packets were routed over the loopback interface, if the
	queue became full, an mbuf would get lost.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Tue Apr 17 11:00:36 PST 1984

net/ip_input.c rcs 1.2

	Make the ip_dooption routine be more paranoid about checking
	the option length.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Tue Apr 17 11:47:59 PST 1984

net/in_pcb.c rcs 1.2
	Minor for change from htons to ntohs.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Tue May 15 10:48:17 PDT 1984

cmd/init.c rcs 1.2
	Fix form Lou Salkind that prevents init from killing all processes
	when an interrupt is generated before someone logs in.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Wed Jun 27 23:23:18 PDT 1984

sys/sys1.c rcs 1.2
	Copied the 2.8 big fix which allowed pgrp 0 a seperate process
	number limit besides MAXUPRC. MAXSPRC is set in param.h and is
	only active if UCB_PGRP is defined.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Wed Jun 27 23:36:43 PDT 1984

sys/mbuf.s rcs 1.2
	Make the tm dump routine work with the unibus map.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Wed Jun 27 23:39:59 PDT 1984

net/if.c rcs 1.3
	The ioctl that attempted to return the interface info
	didn.t work correctly. Found a bug that was fixed in
	the 4.2 version and make it copy memory correctly like
	a pdp-11 should.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Wed Jun 27 23:43:42 PDT 1984

net/if_loop.c rcs 1.2
	Make the local host address for the loopback interface
	conform to be more like 4.2. Use the address 127.0.0.1
	Also, add the loioctl routine which was missing.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Wed Jun 27 23:48:13 PDT 1984

net/in.h rcs 1.2
	changed the SYSLOG named port to be the 4.2 number. Also
	make the INADDR_ANY constant long like it should have
	been all along.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Edited by satz on Wed Jun 27 23:55:32 PDT 1984

dev/xp.c rcs 1.4
	kick controller to see if more than one drive exists. otherwise
	we might not see it.
----------------------------------------------------------------------------



More information about the Comp.bugs.2bsd mailing list