~kris/9p

9hist

109d3225907352e17c670a7512611d11dc5b2e4b — David du Colombier 28 years ago 56c9899
Plan 9 from Bell Labs 1998-05-09
5 files changed, 27 insertions(+), 10 deletions(-)

M ip/devip.c
M ip/icmp.c
M ip/ip.h
M ip/udp.c
M pc/vgamga2164w.c
M ip/devip.c => ip/devip.c +6 -0
@@ 1099,6 1099,12 @@ Fsrcvpcol(Fs* f, uchar proto)
		return f->t2p[proto];
}

Proto*
Fsrcvpcolx(Fs *f, uchar proto)
{
	return f->t2p[proto];
}

Conv*
Fsnewcall(Conv *c, uchar *raddr, ushort rport, uchar *laddr, ushort lport)
{

M ip/icmp.c => ip/icmp.c +15 -2
@@ 141,8 141,21 @@ icmpnoconv(Fs *f, Block *bp)
{
	Block	*nbp;
	Icmp	*p, *np;
	int	i;
	uchar	addr[IPaddrlen];

	p = (Icmp *)bp->rp;

	/* only do this for unicast sources and destinations */
	v4tov6(addr, p->dst);
	i = ipforme(f, addr);
	if((i&Runi) == 0)
		return;
	v4tov6(addr, p->src);
	i = ipforme(f, addr);
	if((i&Runi) == 0)
		return;

	netlog(f, Logicmp, "sending icmpnoconv -> %V\n", p->src);
	nbp = allocb(ICMP_IPSIZE + ICMP_HDRSIZE + ICMP_IPSIZE + 8);
	nbp->wp += ICMP_IPSIZE + ICMP_HDRSIZE + ICMP_IPSIZE + 8;


@@ 263,7 276,7 @@ icmpiput(Proto *icmp, uchar*, Block *bp)
			goto raise;
		}
		p = (Icmp *)bp->rp;
		pr = Fsrcvpcol(icmp->f, p->proto);
		pr = Fsrcvpcolx(icmp->f, p->proto);
		if(pr != nil && pr->advise != nil) {
			(*pr->advise)(pr, bp, msg);
			return;


@@ 282,7 295,7 @@ icmpiput(Proto *icmp, uchar*, Block *bp)
				goto raise;
			}
			p = (Icmp *)bp->rp;
			pr = Fsrcvpcol(icmp->f, p->proto);
			pr = Fsrcvpcolx(icmp->f, p->proto);
			if(pr != nil && pr->advise != nil) {
				(*pr->advise)(pr, bp, m2);
				return;

M ip/ip.h => ip/ip.h +1 -0
@@ 264,6 264,7 @@ int	Fsproto(Fs*, Proto*);
int	Fsbuiltinproto(Fs*, uchar);
Conv*	Fsprotoclone(Proto*, char*);
Proto*	Fsrcvpcol(Fs*, uchar);
Proto*	Fsrcvpcolx(Fs*, uchar);
char*	Fsstdconnect(Conv*, char**, int);
char*	Fsstdannounce(Conv*, char**, int);
char*	Fsstdbind(Conv*, char**, int);

M ip/udp.c => ip/udp.c +3 -6
@@ 284,12 284,9 @@ udpiput(Proto *udp, uchar *ia, Block *bp)
		upriv->ustats.udpNoPorts++;
		netlog(f, Logudp, "udp: no conv %I!%d -> %I!%d\n", raddr, rport,
			laddr, lport);
		/* don't complain about broadcasts... */
		if(ipforme(f, raddr) == 0){
			uh->Unused = ottl;
			hnputs(uh->udpplen, olen);
			icmpnoconv(f, bp);
		}
		uh->Unused = ottl;
		hnputs(uh->udpplen, olen);
		icmpnoconv(f, bp);
		freeblist(bp);
		return;
	}

M pc/vgamga2164w.c => pc/vgamga2164w.c +2 -2
@@ 54,7 54,7 @@ mga2164wlinear(VGAscr* scr, int* size, int* align)

	if(p = mgapcimatch()){
		aperture = p->mem[p->did==MGA2064? 1 : 0].bar & ~0x0F;
		*size = 16*1024*1024;
		*size = (p->did==MGA2064? 8 :16)*1024*1024;
	}
	else
		aperture = 0;


@@ 117,7 117,7 @@ mga2164wenable(VGAscr* scr)
	scr->io = (ulong)KADDR(scr->io);

	/* need to map frame buffer here too, so vga can find memory size */
	size = 16*1024*1024;
	size = (p->did==MGA2064? 8 :16)*1024*1024;
	align = 0;
	aperture = mga2164wlinear(scr, &size, &align);
	if(aperture) {