plan 9 kernel history: overview | file list | diff list

1999/0917/ip/il.c (diff list | history)

1999/0916/sys/src/9/ip/il.c:191,1961999/0917/sys/src/9/ip/il.c:191,197 (short | long | prev | next)
1997/0804    
int	ilnextqt(Ilcb*); 
1998/0929    
void	ilcbinit(Ilcb*); 
1999/0501    
int	later(ulong, ulong, char*); 
1999/0917    
void	ilreject(Fs*, Ilhdr*); 
1997/0327    
 
	int 	ilcksum = 1; 
static 	int 	initseq = 25001; 
1999/0916/sys/src/9/ip/il.c:543,5481999/0917/sys/src/9/ip/il.c:544,550
1997/0327    
			st = "?"; 
		else 
			st = iltype[ih->iltype]; 
1999/0917    
		ilreject(il->f, ih);		/* no channel and not sync */ 
1998/0313    
		netlog(il->f, Logil, "il: no channel, pkt(%s id %lud ack %lud %I/%ud->%ud)\n", 
1998/0306    
			st, nhgetl(ih->ilid), nhgetl(ih->ilack), raddr, sp, dp);  
1997/0327    
		goto raise; 
1999/0916/sys/src/9/ip/il.c:573,5781999/0917/sys/src/9/ip/il.c:575,581
1997/0327    
		s = gen; 
1999/0302    
	else { 
		qunlock(il); 
1999/0917    
		ilreject(il->f, ih);		/* no listener */ 
1997/0327    
		goto raise; 
1999/0302    
	} 
1997/0327    
 
1999/0916/sys/src/9/ip/il.c:646,6521999/0917/sys/src/9/ip/il.c:649,655
1997/0327    
			break; 
		case Ilclose: 
			if(ack == ic->start) 
				ilhangup(s, "remote close"); 
1999/0917    
				ilhangup(s, "connection rejected"); 
1997/0327    
			break; 
		} 
		freeblist(bp); 
1999/0916/sys/src/9/ip/il.c:728,7331999/0917/sys/src/9/ip/il.c:731,737
1997/0327    
			freeblist(bp); 
			if(ack < ic->start || ack > ic->next)  
				break; 
1999/0917    
			ic->recvd = id; 
1997/0804    
			ilsendctl(s, nil, Ilclose, ic->next, ic->recvd, 0); 
1997/0327    
			ic->state = Ilclosing; 
1999/0429    
			ilsettimeout(ic); 
1999/0916/sys/src/9/ip/il.c:991,9961999/0917/sys/src/9/ip/il.c:995,1033
1997/0327    
		nhgets(ih->ilsrc), nhgets(ih->ildst)); 
 
1999/0817    
	ipoput(ipc->p->f, bp, 0, ttl, tos); 
1999/0917    
} 
 
void 
ilreject(Fs *f, Ilhdr *inih) 
{ 
	Ilhdr *ih; 
	Block *bp; 
 
	bp = allocb(IL_IPSIZE+IL_HDRSIZE); 
	bp->wp += IL_IPSIZE+IL_HDRSIZE; 
 
	ih = (Ilhdr *)(bp->rp); 
 
	/* Ip fields */ 
	ih->proto = IP_ILPROTO; 
	hnputs(ih->illen, IL_HDRSIZE); 
	ih->frag[0] = 0; 
	ih->frag[1] = 0; 
	hnputl(ih->dst, nhgetl(inih->src)); 
	hnputl(ih->src, nhgetl(inih->dst)); 
	hnputs(ih->ilsrc, nhgets(inih->ildst)); 
	hnputs(ih->ildst, nhgets(inih->ilsrc)); 
	hnputl(ih->ilid, nhgetl(inih->ilack)); 
	hnputl(ih->ilack, nhgetl(inih->ilid)); 
	ih->iltype = Ilclose; 
	ih->ilspec = 0; 
	ih->ilsum[0] = 0; 
	ih->ilsum[1] = 0; 
 
	if(ilcksum) 
		hnputs(ih->ilsum, ptclcsum(bp, IL_IPSIZE, IL_HDRSIZE)); 
 
	ipoput(f, bp, 0, MAXTTL, DFLTTOS); 
1997/0327    
} 
 
void 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)