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

1991/0516/port/devip.c (diff list | history)

1991/0504/sys/src/9/port/devip.c:297,3031991/0516/sys/src/9/port/devip.c:297,303 (short | long | prev | next)
1991/0424    
		return stringread(c, a, n, buf, offset); 
	} 
 
	return Eperm; 
1991/0516    
	error(Eperm); 
1991/0424    
} 
 
long 
1991/0504/sys/src/9/port/devip.c:314,3381991/0516/sys/src/9/port/devip.c:314,340
1991/0424    
 
	if (type == Sctlqid) { 
		cp = &ipconv[c->dev][STREAMID(c->qid.path)]; 
		if(cp->stproto == &tcpinfo && cp->tcpctl.state != CLOSED) 
			return Edevbusy; 
 
		strncpy(buf, a, sizeof buf); 
		m = getfields(buf, field, 5, ' '); 
 
		if(strcmp(field[0], "connect") == 0) { 
1991/0516    
			if(cp->stproto == &tcpinfo && 
			   cp->tcpctl.state != CLOSED) 
				error(Edevbusy); 
 
1991/0424    
			if(m != 2) 
				return Ebadarg; 
1991/0516    
				error(Ebadarg); 
1991/0424    
 
			switch(getfields(field[1], field, 5, '!')) { 
			default: 
				return Ebadarg; 
1991/0516    
				error(Ebadarg); 
1991/0424    
			case 2: 
				base = PORTALLOC; 
				break; 
			case 3: 
				if(strcmp(field[2], "r") != 0) 
					return Eperm; 
1991/0516    
					error(Eperm); 
1991/0424    
				base = PRIVPORTALLOC; 
				break; 
			} 
1991/0504/sys/src/9/port/devip.c:348,3611991/0516/sys/src/9/port/devip.c:350,367
1991/0424    
		} 
		else if(strcmp(field[0], "announce") == 0 || 
			strcmp(field[0], "reserve") == 0) { 
1991/0516    
				if(cp->stproto == &tcpinfo && 
				   cp->tcpctl.state != CLOSED) 
					error(Edevbusy); 
 
1991/0424    
			if(m != 2) 
				return Ebadarg; 
1991/0516    
				error(Ebadarg); 
1991/0424    
			port = atoi(field[1]); 
 
			qlock(&ipalloc); 
			if(portused(ipconv[c->dev], port)) { 
				qunlock(&ipalloc);	 
				return Einuse; 
1991/0516    
				error(Einuse); 
1991/0424    
			} 
			cp->psrc = port; 
			cp->ptype = *field[0]; 
1991/0504/sys/src/9/port/devip.c:363,3721991/0516/sys/src/9/port/devip.c:369,378
1991/0424    
		} 
		else if(strcmp(field[0], "backlog") == 0) { 
			if(m != 2) 
				return Ebadarg; 
1991/0516    
				error(Ebadarg); 
1991/0424    
			backlog = atoi(field[1]); 
			if(backlog == 0) 
				return Ebadarg; 
1991/0516    
				error(Ebadarg); 
1991/0424    
			if(backlog > 5) 
				backlog = 5; 
			cp->backlog = backlog; 
1991/0504/sys/src/9/port/devip.c:377,3831991/0516/sys/src/9/port/devip.c:383,389
1991/0424    
		return n; 
	} 
 
	return Eperm; 
1991/0516    
	error(Eperm); 
1991/0424    
} 
 
 
1991/0504/sys/src/9/port/devip.c:384,3931991/0516/sys/src/9/port/devip.c:390,396
1991/0424    
void 
udpstiput(Queue *q, Block *bp) 
{ 
	if(bp->type == M_CTL) 
		PUTNEXT(q, bp); 
	else 
		panic("udpstiput: Why am I here"); 
1991/0516    
	PUTNEXT(q, bp); 
1991/0424    
} 
 
/* 
1991/0504/sys/src/9/port/devip.c:535,5441991/0516/sys/src/9/port/devip.c:538,544
1991/0424    
void 
tcpstiput(Queue *q, Block *bp) 
{ 
	if(bp->type == M_CTL) 
		PUTNEXT(q, bp); 
	else 
		panic("tcpstiput: Why am I here"); 
1991/0516    
	PUTNEXT(q, bp); 
1991/0424    
} 
 
void 


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