From 643b6b605c1751de1706a86283a0ac5d16ae3a4c Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Fri, 24 Jul 1992 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1992-07-24 --- boot/key.c | 14 ++++++-------- port/stip.c | 3 +++ port/tcpinput.c | 13 ++++++++++--- port/tcpoutput.c | 8 ++++++-- ss/l.s | 30 +++++++++++++++--------------- ss/main.c | 2 -- ss/mmu.c | 14 +++++++------- 7 files changed, 47 insertions(+), 37 deletions(-) diff --git a/boot/key.c b/boot/key.c index 4e0e8ea7a4ed4afe431008881b034879ebd25da0..4a17391605b7551dac1c4da58a636577ff93dad5 100644 --- a/boot/key.c +++ b/boot/key.c @@ -3,14 +3,12 @@ #include #include <../boot/boot.h> -char defpass[] = {0x64, 0x3e, 0x4d, 0x13, 0x32, 0x00, 0x0b, 0xe1, 0xce}; - void key(int islocal, Method *mp) { Nvrsafe safe; char password[20]; - int prompt, fd, i; + int prompt, fd; USED(islocal); USED(mp); @@ -25,16 +23,16 @@ key(int islocal, Method *mp) || read(fd, &safe, sizeof safe) != sizeof safe) warning("can't read nvram key"); +getp: if(prompt){ do getpasswd(password, sizeof password); while(!passtokey(safe.machkey, password)); }else if(nvcsum(safe.machkey, DESKEYLEN) != safe.machsum){ - warning("bad nvram key; using default password"); - /* Just so its not plain text in the binary */ - for(i=0; iflen -= ovlap; BLKFRAG(*l)->foff += ovlap; + /* move up ether+ip hdrs */ + memmove((*l)->rptr + ovlap, (*l)->rptr, + ETHER_HDR+ETHER_IPHDR); (*l)->rptr += ovlap; break; } diff --git a/port/tcpinput.c b/port/tcpinput.c index ab9eacb3110aab93c0ce368e54e105ae3baf9605..087446c42b223e0e6218d4a36785274999e70455 100644 --- a/port/tcpinput.c +++ b/port/tcpinput.c @@ -163,7 +163,7 @@ tcp_input(Ipifc *ifc, Block *bp) if(bp == 0) return; - /* Look for a connection, failing that attempt to establish a listen */ + /* Look for a connection. failing that look for a listener. */ s = ip_conn(ifc, seg.dest, seg.source, source); if (s == 0) { if(seg.flags & SYN){ @@ -390,7 +390,6 @@ tcp_input(Ipifc *ifc, Block *bp) case Syn_received: case Established: case Finwait1: - case Finwait2: /* Place on receive queue */ tcb->rcvcnt += blen(bp); if(bp){ @@ -409,6 +408,12 @@ tcp_input(Ipifc *ifc, Block *bp) if(tcb->max_snd <= tcb->rcv.nxt-tcb->last_ack) tcb->flags |= FORCE; break; + case Finwait2: + /* no process to read the data, send a reset */ + if(bp) + freeb(bp); + reset(source, dest, tos, length, &seg); + goto done; } } @@ -612,8 +617,10 @@ add_reseq(Tcpctl *tcb, char tos, Tcp *seg, Block *bp, ushort length) Reseq *rp, *rp1; rp = malloc(sizeof(Reseq)); - if(rp == 0) + if(rp == 0){ + freeb(bp); /* bp always consumed by add_reseq */ return; + } rp->seg = *seg; rp->tos = tos; diff --git a/port/tcpoutput.c b/port/tcpoutput.c index 0503af9ab77fd0e243897bcb8580bc00381e3793..4388b1b2cc42caa75acb37cb8a295d1aec015ff5 100644 --- a/port/tcpoutput.c +++ b/port/tcpoutput.c @@ -231,13 +231,17 @@ void tcprcvwin(Ipconv *s) /* Call with tcb locked */ { Tcpctl *tcb = &s->tcpctl; + int w; /* Calculate new window */ qlock(s); if(s->readq) { - tcb->rcv.wnd = Streamhi - s->readq->next->len; - if(tcb->rcv.wnd < 0) + /* use w because rcv.wnd is unsigned */ + w = Streamhi - s->readq->next->len; + if(w < 0) tcb->rcv.wnd = 0; + else + tcb->rcv.wnd = w; } else tcb->rcv.wnd = Streamhi; diff --git a/ss/l.s b/ss/l.s index 9f99a00f07d73673323812520a7c37717e69346b..79cf2caf6ecaca9e7b65c3dc6f976c233ae4f6f2 100644 --- a/ss/l.s +++ b/ss/l.s @@ -430,35 +430,35 @@ TEXT putwE16(SB), $0 MOVW 4(FP), R8 MOVW R8, (R7, 0xE) - ADD $(1<<4), R7 + ADD $VACLINESZ, R7 MOVW R8, (R7, 0xE) - ADD $(1<<4), R7 + ADD $VACLINESZ, R7 MOVW R8, (R7, 0xE) - ADD $(1<<4), R7 + ADD $VACLINESZ, R7 MOVW R8, (R7, 0xE) - ADD $(1<<4), R7 + ADD $VACLINESZ, R7 MOVW R8, (R7, 0xE) - ADD $(1<<4), R7 + ADD $VACLINESZ, R7 MOVW R8, (R7, 0xE) - ADD $(1<<4), R7 + ADD $VACLINESZ, R7 MOVW R8, (R7, 0xE) - ADD $(1<<4), R7 + ADD $VACLINESZ, R7 MOVW R8, (R7, 0xE) - ADD $(1<<4), R7 + ADD $VACLINESZ, R7 MOVW R8, (R7, 0xE) - ADD $(1<<4), R7 + ADD $VACLINESZ, R7 MOVW R8, (R7, 0xE) - ADD $(1<<4), R7 + ADD $VACLINESZ, R7 MOVW R8, (R7, 0xE) - ADD $(1<<4), R7 + ADD $VACLINESZ, R7 MOVW R8, (R7, 0xE) - ADD $(1<<4), R7 + ADD $VACLINESZ, R7 MOVW R8, (R7, 0xE) - ADD $(1<<4), R7 + ADD $VACLINESZ, R7 MOVW R8, (R7, 0xE) - ADD $(1<<4), R7 + ADD $VACLINESZ, R7 MOVW R8, (R7, 0xE) - ADD $(1<<4), R7 + ADD $VACLINESZ, R7 MOVW R8, (R7, 0xE) RETURN diff --git a/ss/main.c b/ss/main.c index 0afac6130aed236f6b47e5b53dbcfe561947c561..3574845d54fa08dcfea4da83ffbf3c092cdaaac5 100644 --- a/ss/main.c +++ b/ss/main.c @@ -96,14 +96,12 @@ init0(void) u->p->state = Running; u->p->mach = m; spllo(); -print("init0:\n"); prflush(); u->slash = (*devtab[0].attach)(0); u->dot = clone(u->slash, 0); kproc("alarm", alarmkproc, 0); chandevinit(); -print("alarmkp:\n"); prflush(); if(!waserror()){ ksetterm("sun %s"); diff --git a/ss/mmu.c b/ss/mmu.c index 34f9777ef2e739c5167fd3ce227a2fcede753ff0..f15bf0cfb40293a92d2cba00498c3ad2e0ecefd1 100644 --- a/ss/mmu.c +++ b/ss/mmu.c @@ -125,8 +125,8 @@ flushcontext(void) /* * Clear context from cache */ - for(i=0; i<0x1000; i+=16) - putwE16((i<<4), 0); + for(i=0; i