## diffname port/tcpif.c 1991/0424
## diff -e /dev/null /n/bootesdump/1991/0424/sys/src/9/port/tcpif.c
0a
#include "u.h"
#include "lib.h"
#include "mem.h"
#include "dat.h"
#include "fns.h"
#include "errno.h"
#include "arp.h"
#include "ipdat.h"
extern int tcpdbg;
#define DPRINT if(tcpdbg) print
void
state_upcall(Ipconv *s, char oldstate, char newstate)
{
Block *bp;
int len;
char *ptr = 0;
SET(len);
DPRINT("state_upcall: %s -> %s err %d\n",
tcpstate[oldstate], tcpstate[newstate], s->err);
if(oldstate == newstate)
return;
switch(newstate) {
case CLOSED:
s->psrc = 0;
s->pdst = 0;
s->dst = 0;
case CLOSE_WAIT: /* Remote closes */
if(s->readq == 0)
break;
if(s->err) {
ptr = errstrtab[s->err];
len = strlen(ptr)+1;
bp = allocb(len);
}
else
bp = allocb(0);
if(bp) {
if(ptr) {
strcpy((char *)bp->wptr, ptr);
bp->wptr += len;
}
bp->flags |= S_DELIM;
bp->type = M_HANGUP;
PUTNEXT(s->readq, bp);
}
}
}
void
open_tcp(Ipconv *s, int mode, ushort window, char tos)
{
Tcpctl *tcb = &s->tcpctl;
if(tcb->state != CLOSED)
return;
init_tcpctl(s);
tcb->window = tcb->rcv.wnd = window;
tcb->tos = tos;
switch(mode){
case TCP_PASSIVE:
tcb->flags |= CLONE;
setstate(s, LISTEN);
break;
case TCP_ACTIVE:
/* Send SYN, go into SYN_SENT state */
tcb->flags |= ACTIVE;
qlock(tcb);
send_syn(tcb);
setstate(s, SYN_SENT);
tcp_output(s);
qunlock(tcb);
break;
}
}
.
## diffname port/tcpif.c 1991/1014
## diff -e /n/bootesdump/1991/0424/sys/src/9/port/tcpif.c /n/bootesdump/1991/1014/sys/src/9/port/tcpif.c
57c
tcpstart(Ipconv *s, int mode, ushort window, char tos)
.
## diffname port/tcpif.c 1991/1120
## diff -e /n/bootesdump/1991/1014/sys/src/9/port/tcpif.c /n/bootesdump/1991/1120/sys/src/9/port/tcpif.c
44,52c
bp->flags |= S_DELIM;
bp->type = M_HANGUP;
PUTNEXT(s->readq, bp);
break;
.
39a
strcpy((char *)bp->wptr, errstrtab[s->err]);
bp->wptr += len;
.
37,38c
len = strlen(errstrtab[s->err]);
.
35a
.
20,21d
18d
## diffname port/tcpif.c 1991/1126
## diff -e /n/bootesdump/1991/1120/sys/src/9/port/tcpif.c /n/bootesdump/1991/1126/sys/src/9/port/tcpif.c
29a
/* NO break */
.
## diffname port/tcpif.c 1991/12171
## diff -e /n/bootesdump/1991/1126/sys/src/9/port/tcpif.c /n/bootesdump/1991/12171/sys/src/9/port/tcpif.c
74c
setstate(s, Syn_sent);
.
67c
setstate(s, Listen);
.
56c
if(tcb->state != Closed)
.
31c
case Close_wait: /* Remote closes */
.
26c
case Closed:
.
## diffname port/tcpif.c 1992/0111
## diff -e /n/bootesdump/1991/12171/sys/src/9/port/tcpif.c /n/bootesdump/1992/0111/sys/src/9/port/tcpif.c
38c
strcpy((char *)bp->wptr, s->err);
.
36c
len = strlen(s->err);
.
19c
DPRINT("state_upcall: %s -> %s err %s\n",
.
6c
#include "../port/error.h"
.
## diffname port/tcpif.c 1992/0223
## diff -e /n/bootesdump/1992/0111/sys/src/9/port/tcpif.c /n/bootesdump/1992/0223/sys/src/9/port/tcpif.c
46c
qlock(s);
if(s->readq == 0)
freeb(bp);
else
PUTNEXT(s->readq, bp);
qunlock(s);
.
32,34d
## diffname port/tcpif.c 1992/0303
## diff -e /n/bootesdump/1992/0223/sys/src/9/port/tcpif.c /n/bootesdump/1992/0303/sys/src/9/port/tcpif.c
78a
sleep(&tcb->syner, notsyner, tcb);
if(tcb->state != Established && tcb->state != Syn_received)
error(Etimedout);
.
52a
static int
notsyner(void *ic)
{
return ((Tcpctl*)ic)->state != Syn_sent;
}
.
50a
if(oldstate == Syn_sent)
wakeup(&tcb->syner);
.
17a
Tcpctl *tcb = &s->tcpctl;
.
## diffname port/tcpif.c 1992/0321
## diff -e /n/bootesdump/1992/0303/sys/src/9/port/tcpif.c /n/bootesdump/1992/0321/sys/src/9/port/tcpif.c
2c
#include "../port/lib.h"
.
## diffname port/tcpif.c 1992/0322
## diff -e /n/bootesdump/1992/0321/sys/src/9/port/tcpif.c /n/bootesdump/1992/0322/sys/src/9/port/tcpif.c
86a
poperror();
.
83a
if(waserror()) {
qunlock(tcb);
nexterror();
}
.
48a
poperror();
.
44a
if(waserror()) {
qunlock(s);
nexterror();
}
.
## diffname port/tcpif.c 1992/0325
## diff -e /n/bootesdump/1992/0322/sys/src/9/port/tcpif.c /n/bootesdump/1992/0325/sys/src/9/port/tcpif.c
84a
.
66a
.
## diffname port/tcpif.c 1992/0416
## diff -e /n/bootesdump/1992/0325/sys/src/9/port/tcpif.c /n/bootesdump/1992/0416/sys/src/9/port/tcpif.c
49,51c
if(s->readq == 0){
if(newstate == Close_wait)
putb(&tcb->rcvq, bp);
else
freeb(bp);
} else
.
## diffname port/tcpif.c 1992/0529
## diff -e /n/bootesdump/1992/0416/sys/src/9/port/tcpif.c /n/bootesdump/1992/0529/sys/src/9/port/tcpif.c
74a
char msg[NAMELEN+2];
.
## diffname port/tcpif.c 1992/0711
## diff -e /n/bootesdump/1992/0529/sys/src/9/port/tcpif.c /n/bootesdump/1992/0711/sys/src/9/port/tcpif.c
75d
## diffname port/tcpif.c 1992/0903
## diff -e /n/bootesdump/1992/0711/sys/src/9/port/tcpif.c /n/bootesdump/1992/0903/sys/src/9/port/tcpif.c
98,100c
tcpsndsyn(tcb);
tcpsetstate(s, Syn_sent);
tcpoutput(s);
.
87c
tcpsetstate(s, Listen);
.
49c
if(s->readq == 0) {
.
31c
.
28c
s->psrc = 0; /* This connection is toast */
.
20,22d
17a
Block *bp;
.
16d
14c
tcpxstate(Ipconv *s, char oldstate, char newstate)
.
## diffname port/tcpif.c 1992/0906
## diff -e /n/bootesdump/1992/0903/sys/src/9/port/tcpif.c /n/bootesdump/1992/0906/sys/src/9/port/tcpif.c
78c
tcb->window = window;
tcb->rcv.wnd = window;
.
72a
tcb = &s->tcpctl;
.
71c
Tcpctl *tcb;
.
22a
tcb = &s->tcpctl;
.
18c
Tcpctl *tcb;
.
## diffname port/tcpif.c 1992/1220
## diff -e /n/bootesdump/1992/0906/sys/src/9/port/tcpif.c /n/bootesdump/1992/1220/sys/src/9/port/tcpif.c
103c
tsleep(&tcb->syner, notsyner, tcb, 120*1000);
.
## diffname port/tcpif.c 1993/0804 # deleted
## diff -e /n/bootesdump/1992/1220/sys/src/9/port/tcpif.c /n/fornaxdump/1993/0804/sys/src/brazil/port/tcpif.c
1,108d
|