satz@CSL-Vax.ARPA (Greg Satz) (12/09/84)
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@sri-tsc or dan@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@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@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. ----------------------------------------------------------------------------