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

1998/0307/ip/netlog.c (diff list | history)

1997/0327/sys/src/9/ip/netlog.c:148,1541997/0423/sys/src/9/ip/netlog.c:148,155 (short | long)
1997/0327    
{ 
	int i, n, set; 
	Logflag *f; 
	char *fields[10], *p, addr[4], buf[256]; 
1997/0423    
	char *fields[10], *p, buf[256]; 
	uchar addr[Ipaddrlen]; 
1997/0327    
 
	if(len == 0) 
		return Ebadnetctl; 
1997/0423/sys/src/9/ip/netlog.c:46,511997/0806/sys/src/9/ip/netlog.c:46,53 (short | long)
1997/0327    
	{ "ilmsg",	Logil|Logilmsg, }, 
	{ "gre",	Loggre, }, 
	{ "tcpmsg",	Logtcp|Logtcpmsg, }, 
1997/0806    
	{ "udpmsg",	Logudp|Logudpmsg, }, 
	{ "ipmsg",	Logip|Logipmsg, }, 
1997/0327    
	{ nil,		0, }, 
}; 
 
1997/0806/sys/src/9/ip/netlog.c:151,1571997/0815/sys/src/9/ip/netlog.c:151,157 (short | long)
1997/0327    
	int i, n, set; 
	Logflag *f; 
1997/0423    
	char *fields[10], *p, buf[256]; 
	uchar addr[Ipaddrlen]; 
1997/0815    
	uchar addr[IPaddrlen]; 
1997/0327    
 
	if(len == 0) 
		return Ebadnetctl; 
1997/0815/sys/src/9/ip/netlog.c:62,691997/1104/sys/src/9/ip/netlog.c:62,72 (short | long)
1997/0327    
		nexterror(); 
	} 
	if(alog.opens == 0){ 
		if(alog.buf == nil) 
1997/1104    
		if(alog.buf == nil){ 
1997/0327    
			alog.buf = malloc(Nlog); 
1997/1104    
			if(alog.buf == nil) 
				error(Enomem); 
		} 
1997/0327    
		alog.rptr = alog.buf; 
		alog.end = alog.buf + Nlog; 
	} 
1997/1104/sys/src/9/ip/netlog.c:7,131998/0306/sys/src/9/ip/netlog.c:7,14 (short | long)
1997/0327    
#include	"../ip/ip.h" 
 
int logmask;				/* mask of things to debug */ 
Ipaddr iponly;				/* ip address to print debugging for */ 
1998/0306    
uchar iponly[IPaddrlen];		/* ip address to print debugging for */ 
int iponlyset; 
1997/0327    
 
enum { 
	Nlog		= 4*1024, 
1997/1104/sys/src/9/ip/netlog.c:62,721998/0306/sys/src/9/ip/netlog.c:63,70
1997/0327    
		nexterror(); 
	} 
	if(alog.opens == 0){ 
1997/1104    
		if(alog.buf == nil){ 
1998/0306    
		if(alog.buf == nil) 
1997/0327    
			alog.buf = malloc(Nlog); 
1997/1104    
			if(alog.buf == nil) 
				error(Enomem); 
		} 
1997/0327    
		alog.rptr = alog.buf; 
		alog.end = alog.buf + Nlog; 
	} 
1997/1104/sys/src/9/ip/netlog.c:175,1811998/0306/sys/src/9/ip/netlog.c:173,183
1997/0327    
	else if(strcmp("clear", fields[0]) == 0) 
		set = 0; 
	else if(strcmp("only", fields[0]) == 0){ 
		iponly = parseip(addr, fields[1]); 
1998/0306    
		parseip(iponly, fields[1]); 
		if(ipcmp(iponly, IPnoaddr) == 0) 
			iponlyset = 0; 
		else 
			iponlyset = 1; 
1997/0327    
		return nil; 
	} else 
		return Ebadnetctl; 
1997/1104/sys/src/9/ip/netlog.c:206,2171998/0306/sys/src/9/ip/netlog.c:208,221
1997/0327    
	int i, n; 
	va_list arg; 
 
	if(alog.opens == 0 || !(logmask & mask)) 
1998/0306    
	if(!(logmask & mask)) 
1997/0327    
		return; 
 
	va_start(arg, fmt); 
	n = doprint(buf, buf+sizeof(buf), fmt, arg) - buf; 
	va_end(arg); 
1998/0306    
 
print("%s", buf); 
1997/0327    
 
	if(alog.opens == 0) 
		return; 
1998/0306/sys/src/9/ip/netlog.c:152,1581998/0307/sys/src/9/ip/netlog.c:152,157 (short | long)
1997/0327    
	int i, n, set; 
	Logflag *f; 
1997/0423    
	char *fields[10], *p, buf[256]; 
1997/0815    
	uchar addr[IPaddrlen]; 
1997/0327    
 
	if(len == 0) 
		return Ebadnetctl; 
1998/0307/sys/src/9/ip/netlog.c:6,151998/0313/sys/src/9/ip/netlog.c:6,11 (short | long)
1997/0327    
#include	"../port/error.h" 
#include	"../ip/ip.h" 
 
int logmask;				/* mask of things to debug */ 
1998/0306    
uchar iponly[IPaddrlen];		/* ip address to print debugging for */ 
int iponlyset; 
1997/0327    
                 
enum { 
	Nlog		= 4*1024, 
}; 
1998/0307/sys/src/9/ip/netlog.c:17,231998/0313/sys/src/9/ip/netlog.c:13,19
1997/0327    
/* 
 *  action log 
 */ 
typedef struct Log { 
1998/0313    
struct Log { 
1997/0327    
	Lock; 
	int	opens; 
	char*	buf; 
1998/0307/sys/src/9/ip/netlog.c:25,391998/0313/sys/src/9/ip/netlog.c:21,39
1997/0327    
	char	*rptr; 
	int	len; 
 
1998/0313    
	int	logmask;			/* mask of things to debug */ 
	uchar	iponly[IPaddrlen];		/* ip address to print debugging for */ 
	int	iponlyset; 
 
1997/0327    
	QLock; 
	Rendez; 
} Log; 
static Log alog; 
1998/0313    
}; 
1997/0327    
 
typedef struct Logflag { 
	char*	name; 
	int	mask; 
} Logflag; 
1998/0313    
 
1997/0327    
static Logflag flags[] = 
{ 
	{ "ppp",	Logppp, }, 
1998/0307/sys/src/9/ip/netlog.c:55,1271998/0313/sys/src/9/ip/netlog.c:55,135
1997/0327    
static char Ebadnetctl[] = "unknown netlog ctl message"; 
 
void 
netlogopen(void) 
1998/0313    
netloginit(Fs *f) 
1997/0327    
{ 
	lock(&alog); 
1998/0313    
	f->alog = smalloc(sizeof(Log)); 
} 
 
void 
netlogopen(Fs *f) 
{ 
	lock(f->alog); 
1997/0327    
	if(waserror()){ 
		unlock(&alog); 
1998/0313    
		unlock(f->alog); 
1997/0327    
		nexterror(); 
	} 
	if(alog.opens == 0){ 
1998/0306    
		if(alog.buf == nil) 
1997/0327    
			alog.buf = malloc(Nlog); 
		alog.rptr = alog.buf; 
		alog.end = alog.buf + Nlog; 
1998/0313    
	if(f->alog->opens == 0){ 
		if(f->alog->buf == nil) 
			f->alog->buf = malloc(Nlog); 
		f->alog->rptr = f->alog->buf; 
		f->alog->end = f->alog->buf + Nlog; 
1997/0327    
	} 
	alog.opens++; 
	unlock(&alog); 
1998/0313    
	f->alog->opens++; 
	unlock(f->alog); 
1997/0327    
	poperror(); 
} 
 
void 
netlogclose(void) 
1998/0313    
netlogclose(Fs *f) 
1997/0327    
{ 
	lock(&alog); 
1998/0313    
	lock(f->alog); 
1997/0327    
	if(waserror()){ 
		unlock(&alog); 
1998/0313    
		unlock(f->alog); 
1997/0327    
		nexterror(); 
	} 
	alog.opens--; 
	if(alog.opens == 0){ 
		free(alog.buf); 
		alog.buf = nil; 
1998/0313    
	f->alog->opens--; 
	if(f->alog->opens == 0){ 
		free(f->alog->buf); 
		f->alog->buf = nil; 
1997/0327    
	} 
	unlock(&alog); 
1998/0313    
	unlock(f->alog); 
1997/0327    
	poperror(); 
} 
 
static int 
netlogready(void*) 
1998/0313    
netlogready(void *a) 
1997/0327    
{ 
	return alog.len; 
1998/0313    
	Fs *f = a; 
 
	return f->alog->len; 
1997/0327    
} 
 
long 
netlogread(void* a, ulong, long n) 
1998/0313    
netlogread(Fs *f, void *a, ulong, long n) 
1997/0327    
{ 
	int i, d; 
	char *p, *rptr; 
 
	qlock(&alog); 
1998/0313    
	qlock(f->alog); 
1997/0327    
	if(waserror()){ 
		qunlock(&alog); 
1998/0313    
		qunlock(f->alog); 
1997/0327    
		nexterror(); 
	} 
 
	for(;;){ 
		lock(&alog); 
		if(alog.len){ 
			if(n > alog.len) 
				n = alog.len; 
1998/0313    
		lock(f->alog); 
		if(f->alog->len){ 
			if(n > f->alog->len) 
				n = f->alog->len; 
1997/0327    
			d = 0; 
			rptr = alog.rptr; 
			alog.rptr += n; 
			if(alog.rptr >= alog.end){ 
				d = alog.rptr - alog.end; 
				alog.rptr = alog.buf + d; 
1998/0313    
			rptr = f->alog->rptr; 
			f->alog->rptr += n; 
			if(f->alog->rptr >= f->alog->end){ 
				d = f->alog->rptr - f->alog->end; 
				f->alog->rptr = f->alog->buf + d; 
1997/0327    
			} 
			alog.len -= n; 
			unlock(&alog); 
1998/0313    
			f->alog->len -= n; 
			unlock(f->alog); 
1997/0327    
 
			i = n; 
			p = a; 
1998/0307/sys/src/9/ip/netlog.c:129,1461998/0313/sys/src/9/ip/netlog.c:137,154
1997/0327    
				memmove(p, rptr, d); 
				i -= d; 
				p += d; 
				rptr = alog.buf; 
1998/0313    
				rptr = f->alog->buf; 
1997/0327    
			} 
			memmove(p, rptr, i); 
			break; 
		} 
		else 
			unlock(&alog); 
1998/0313    
			unlock(f->alog); 
1997/0327    
 
		sleep(&alog, netlogready, 0); 
1998/0313    
		sleep(f->alog, netlogready, 0); 
1997/0327    
	} 
 
	qunlock(&alog); 
1998/0313    
	qunlock(f->alog); 
1997/0327    
	poperror(); 
 
	return n; 
1998/0307/sys/src/9/ip/netlog.c:147,1561998/0313/sys/src/9/ip/netlog.c:155,164
1997/0327    
} 
 
char* 
netlogctl(char* s, int len) 
1998/0313    
netlogctl(Fs *f, char* s, int len) 
1997/0327    
{ 
	int i, n, set; 
	Logflag *f; 
1998/0313    
	Logflag *fp; 
1997/0423    
	char *fields[10], *p, buf[256]; 
1997/0327    
 
	if(len == 0) 
1998/0307/sys/src/9/ip/netlog.c:172,1821998/0313/sys/src/9/ip/netlog.c:180,190
1997/0327    
	else if(strcmp("clear", fields[0]) == 0) 
		set = 0; 
	else if(strcmp("only", fields[0]) == 0){ 
1998/0306    
		parseip(iponly, fields[1]); 
		if(ipcmp(iponly, IPnoaddr) == 0) 
			iponlyset = 0; 
1998/0313    
		parseip(f->alog->iponly, fields[1]); 
		if(ipcmp(f->alog->iponly, IPnoaddr) == 0) 
			f->alog->iponlyset = 0; 
1998/0306    
		else 
			iponlyset = 1; 
1998/0313    
			f->alog->iponlyset = 1; 
1997/0327    
		return nil; 
	} else 
		return Ebadnetctl; 
1998/0307/sys/src/9/ip/netlog.c:186,2001998/0313/sys/src/9/ip/netlog.c:194,208
1997/0327    
		*p = 0; 
 
	for(i = 1; i < n; i++){ 
		for(f = flags; f->name; f++) 
			if(strcmp(f->name, fields[i]) == 0) 
1998/0313    
		for(fp = flags; fp->name; fp++) 
			if(strcmp(fp->name, fields[i]) == 0) 
1997/0327    
				break; 
		if(f->name == nil) 
1998/0313    
		if(fp->name == nil) 
1997/0327    
			continue; 
		if(set) 
			logmask |= f->mask; 
1998/0313    
			f->alog->logmask |= fp->mask; 
1997/0327    
		else 
			logmask &= ~f->mask; 
1998/0313    
			f->alog->logmask &= ~fp->mask; 
1997/0327    
	} 
 
	return nil; 
1998/0307/sys/src/9/ip/netlog.c:201,2131998/0313/sys/src/9/ip/netlog.c:209,221
1997/0327    
} 
 
void 
netlog(int mask, char *fmt, ...) 
1998/0313    
netlog(Fs *f, int mask, char *fmt, ...) 
1997/0327    
{ 
	char buf[128], *t, *f; 
1998/0313    
	char buf[128], *t, *fp; 
1997/0327    
	int i, n; 
	va_list arg; 
 
1998/0306    
	if(!(logmask & mask)) 
1998/0313    
	if(!(f->alog->logmask & mask)) 
1997/0327    
		return; 
 
	va_start(arg, fmt); 
1998/0307/sys/src/9/ip/netlog.c:214,2411998/0313/sys/src/9/ip/netlog.c:222,247
1997/0327    
	n = doprint(buf, buf+sizeof(buf), fmt, arg) - buf; 
	va_end(arg); 
1998/0306    
 
print("%s", buf); 
1997/0327    
                 
	if(alog.opens == 0) 
1998/0313    
	if(f->alog->opens == 0) 
1997/0327    
		return; 
 
	lock(&alog); 
	i = alog.len + n - Nlog; 
1998/0313    
	lock(f->alog); 
	i = f->alog->len + n - Nlog; 
1997/0327    
	if(i > 0){ 
		alog.len -= i; 
		alog.rptr += i; 
		if(alog.rptr >= alog.end) 
			alog.rptr = alog.buf + (alog.rptr - alog.end); 
1998/0313    
		f->alog->len -= i; 
		f->alog->rptr += i; 
		if(f->alog->rptr >= f->alog->end) 
			f->alog->rptr = f->alog->buf + (f->alog->rptr - f->alog->end); 
1997/0327    
	} 
	t = alog.rptr + alog.len; 
	f = buf; 
	alog.len += n; 
1998/0313    
	t = f->alog->rptr + f->alog->len; 
	fp = buf; 
	f->alog->len += n; 
1997/0327    
	while(n-- > 0){ 
		if(t >= alog.end) 
			t = alog.buf + (t - alog.end); 
		*t++ = *f++; 
1998/0313    
		if(t >= f->alog->end) 
			t = f->alog->buf + (t - f->alog->end); 
		*t++ = *fp++; 
1997/0327    
	} 
	unlock(&alog); 
1998/0313    
	unlock(f->alog); 
1997/0327    
 
	wakeup(&alog); 
1998/0313    
	wakeup(f->alog); 
1997/0327    
} 
1998/0313/sys/src/9/ip/netlog.c:145,1511998/0314/sys/src/9/ip/netlog.c:145,151 (short | long)
1997/0327    
		else 
1998/0313    
			unlock(f->alog); 
1997/0327    
 
1998/0313    
		sleep(f->alog, netlogready, 0); 
1998/0314    
		sleep(f->alog, netlogready, f); 
1997/0327    
	} 
 
1998/0313    
	qunlock(f->alog); 
1998/0314/sys/src/9/ip/netlog.c:13,191999/0316/sys/src/9/ip/netlog.c:13,19 (short | long)
1997/0327    
/* 
 *  action log 
 */ 
1998/0313    
struct Log { 
1999/0316    
struct Netlog { 
1997/0327    
	Lock; 
	int	opens; 
	char*	buf; 
1998/0314/sys/src/9/ip/netlog.c:29,401999/0316/sys/src/9/ip/netlog.c:29,40
1997/0327    
	Rendez; 
1998/0313    
}; 
1997/0327    
 
typedef struct Logflag { 
1999/0316    
typedef struct Netlogflag { 
1997/0327    
	char*	name; 
	int	mask; 
} Logflag; 
1999/0316    
} Netlogflag; 
1998/0313    
 
1997/0327    
static Logflag flags[] = 
1999/0316    
static Netlogflag flags[] = 
1997/0327    
{ 
	{ "ppp",	Logppp, }, 
	{ "ip",		Logip, }, 
1998/0314/sys/src/9/ip/netlog.c:49,541999/0316/sys/src/9/ip/netlog.c:49,55
1997/0327    
	{ "tcpmsg",	Logtcp|Logtcpmsg, }, 
1997/0806    
	{ "udpmsg",	Logudp|Logudpmsg, }, 
	{ "ipmsg",	Logip|Logipmsg, }, 
1999/0316    
	{ "esp",	Logesp, }, 
1997/0327    
	{ nil,		0, }, 
}; 
 
1998/0314/sys/src/9/ip/netlog.c:57,631999/0316/sys/src/9/ip/netlog.c:58,64
1997/0327    
void 
1998/0313    
netloginit(Fs *f) 
1997/0327    
{ 
1998/0313    
	f->alog = smalloc(sizeof(Log)); 
1999/0316    
	f->alog = smalloc(sizeof(Netlog)); 
1998/0313    
} 
 
void 
1998/0314/sys/src/9/ip/netlog.c:158,1641999/0316/sys/src/9/ip/netlog.c:159,165
1998/0313    
netlogctl(Fs *f, char* s, int len) 
1997/0327    
{ 
	int i, n, set; 
1998/0313    
	Logflag *fp; 
1999/0316    
	Netlogflag *fp; 
1997/0423    
	char *fields[10], *p, buf[256]; 
1997/0327    
 
	if(len == 0) 
1999/0316/sys/src/9/ip/netlog.c:132,1461999/0731/sys/src/9/ip/netlog.c:132,141 (short | long)
1998/0313    
			f->alog->len -= n; 
			unlock(f->alog); 
1997/0327    
 
			i = n; 
1999/0731    
			i = n-d; 
1997/0327    
			p = a; 
			if(d){ 
				memmove(p, rptr, d); 
				i -= d; 
				p += d; 
1998/0313    
				rptr = f->alog->buf; 
1997/0327    
			} 
			memmove(p, rptr, i); 
1999/0731    
			memmove(p+i, f->alog->buf, d); 
1997/0327    
			break; 
		} 
		else 
1999/0731/sys/src/9/ip/netlog.c:167,1732000/0308/sys/src/9/ip/netlog.c:167,173 (short | long)
1997/0327    
	if(len > 0 && buf[len-1] == '\n') 
		buf[len-1] = 0; 
 
	n = parsefields(buf, fields, 10, " "); 
2000/0308    
	n = getfields(buf, fields, 10, 1, " "); 
1997/0327    
	if(n < 2) 
		return Ebadnetctl; 
 
2000/0308/sys/src/9/ip/netlog.c:167,1732001/1117/sys/src/9/ip/netlog.c:167,173 (short | long)
1997/0327    
	if(len > 0 && buf[len-1] == '\n') 
		buf[len-1] = 0; 
 
2000/0308    
	n = getfields(buf, fields, 10, 1, " "); 
2001/1117    
	n = tokenize(buf, fields, 10); 
1997/0327    
	if(n < 2) 
		return Ebadnetctl; 
 
2001/1117/sys/src/9/ip/netlog.c:53,602001/1120/sys/src/9/ip/netlog.c:53,74 (short | long)
1997/0327    
	{ nil,		0, }, 
}; 
 
static char Ebadnetctl[] = "unknown netlog ctl message"; 
2001/1120    
char Ebadnetctl[] = "too few arguments for netlog control message"; 
1997/0327    
 
2001/1120    
enum 
{ 
	CMset, 
	CMclear, 
	CMonly, 
}; 
 
static 
Cmdtab routecmd[] = { 
	CMset,		"set",		0, 
	CMclear,	"clear",	0, 
	CMonly,		"only",		0, 
}; 
 
1997/0327    
void 
1998/0313    
netloginit(Fs *f) 
1997/0327    
{ 
2001/1117/sys/src/9/ip/netlog.c:150,1972001/1120/sys/src/9/ip/netlog.c:164,215
1997/0327    
	return n; 
} 
 
char* 
1998/0313    
netlogctl(Fs *f, char* s, int len) 
2001/1120    
void 
netlogctl(Fs *f, char* s, int n) 
1997/0327    
{ 
	int i, n, set; 
2001/1120    
	int i, set; 
1999/0316    
	Netlogflag *fp; 
1997/0423    
	char *fields[10], *p, buf[256]; 
2001/1120    
	Cmdbuf *cb; 
	Cmdtab *ct; 
1997/0327    
 
	if(len == 0) 
		return Ebadnetctl; 
2001/1120    
	cb = parsecmd(s, n); 
	if(waserror()){ 
		free(cb); 
		nexterror(); 
	} 
1997/0327    
 
	if(len >= sizeof(buf)) 
		len = sizeof(buf)-1; 
	strncpy(buf, s, len); 
	buf[len] = 0; 
	if(len > 0 && buf[len-1] == '\n') 
		buf[len-1] = 0; 
2001/1120    
	if(cb->nf < 2) 
		error(Ebadnetctl); 
1997/0327    
 
2001/1117    
	n = tokenize(buf, fields, 10); 
1997/0327    
	if(n < 2) 
		return Ebadnetctl; 
2001/1120    
	ct = lookupcmd(cb, routecmd, nelem(routecmd)); 
1997/0327    
 
	if(strcmp("set", fields[0]) == 0) 
2001/1120    
	SET(set); 
 
	switch(ct->index){ 
	case CMset: 
1997/0327    
		set = 1; 
	else if(strcmp("clear", fields[0]) == 0) 
2001/1120    
		break; 
 
	case CMclear: 
1997/0327    
		set = 0; 
	else if(strcmp("only", fields[0]) == 0){ 
1998/0313    
		parseip(f->alog->iponly, fields[1]); 
2001/1120    
		break; 
 
	case CMonly: 
		parseip(f->alog->iponly, cb->f[1]); 
1998/0313    
		if(ipcmp(f->alog->iponly, IPnoaddr) == 0) 
			f->alog->iponlyset = 0; 
1998/0306    
		else 
1998/0313    
			f->alog->iponlyset = 1; 
1997/0327    
		return nil; 
	} else 
		return Ebadnetctl; 
2001/1120    
		free(cb); 
		return; 
1997/0327    
 
	p = strchr(fields[n-1], '\n'); 
	if(p) 
		*p = 0; 
2001/1120    
	default: 
		cmderror(cb, "unknown ip control message"); 
	} 
1997/0327    
 
	for(i = 1; i < n; i++){ 
1998/0313    
		for(fp = flags; fp->name; fp++) 
			if(strcmp(fp->name, fields[i]) == 0) 
2001/1120    
			if(strcmp(fp->name, cb->f[i]) == 0) 
1997/0327    
				break; 
1998/0313    
		if(fp->name == nil) 
1997/0327    
			continue; 
2001/1117/sys/src/9/ip/netlog.c:201,2072001/1120/sys/src/9/ip/netlog.c:219,226
1998/0313    
			f->alog->logmask &= ~fp->mask; 
1997/0327    
	} 
 
	return nil; 
2001/1120    
	free(cb); 
	poperror(); 
1997/0327    
} 
 
void 
2001/1120/sys/src/9/ip/netlog.c:233,2442002/0217/sys/src/9/ip/netlog.c:233,244 (short | long)
Convert to new fmt library.
rsc Fri Mar 4 12:44:25 2005
1998/0313    
	if(!(f->alog->logmask & mask)) 
1997/0327    
		return; 
 
	va_start(arg, fmt); 
	n = doprint(buf, buf+sizeof(buf), fmt, arg) - buf; 
	va_end(arg); 
1998/0306    
                 
1998/0313    
	if(f->alog->opens == 0) 
1997/0327    
		return; 
2002/0217    
 
	va_start(arg, fmt); 
	n = vseprint(buf, buf+sizeof(buf), fmt, arg) - buf; 
	va_end(arg); 
1997/0327    
 
1998/0313    
	lock(f->alog); 
	i = f->alog->len + n - Nlog; 
2002/0217/sys/src/9/ip/netlog.c:207,2132002/0306/sys/src/9/ip/netlog.c:207,213 (short | long)
2001/1120    
		cmderror(cb, "unknown ip control message"); 
	} 
1997/0327    
 
	for(i = 1; i < n; i++){ 
2002/0306    
	for(i = 1; i < cb->nf; i++){ 
1998/0313    
		for(fp = flags; fp->name; fp++) 
2001/1120    
			if(strcmp(fp->name, cb->f[i]) == 0) 
1997/0327    
				break; 
2002/0306/sys/src/9/ip/netlog.c:207,2132002/0507/sys/src/9/ip/netlog.c:207,213 (short | long)
2001/1120    
		cmderror(cb, "unknown ip control message"); 
	} 
1997/0327    
 
2002/0306    
	for(i = 1; i < cb->nf; i++){ 
2002/0507    
	for(i = 1; i < n; i++){ 
1998/0313    
		for(fp = flags; fp->name; fp++) 
2001/1120    
			if(strcmp(fp->name, cb->f[i]) == 0) 
1997/0327    
				break; 
2002/0507/sys/src/9/ip/netlog.c:207,2132002/0615/sys/src/9/ip/netlog.c:207,213 (short | long)
2001/1120    
		cmderror(cb, "unknown ip control message"); 
	} 
1997/0327    
 
2002/0507    
	for(i = 1; i < n; i++){ 
2002/0615    
	for(i = 1; i < cb->nf; i++){ 
1998/0313    
		for(fp = flags; fp->name; fp++) 
2001/1120    
			if(strcmp(fp->name, cb->f[i]) == 0) 
1997/0327    
				break; 
2002/0615/sys/src/9/ip/netlog.c:46,522002/0713/sys/src/9/ip/netlog.c:46,53 (short | long)
1997/0327    
	{ "compress",	Logcompress, }, 
	{ "ilmsg",	Logil|Logilmsg, }, 
	{ "gre",	Loggre, }, 
	{ "tcpmsg",	Logtcp|Logtcpmsg, }, 
2002/0713    
	{ "tcpwin",	Logtcp|Logtcpwin, }, 
	{ "tcprxmt",	Logtcp|Logtcprxmt, }, 
1997/0806    
	{ "udpmsg",	Logudp|Logudpmsg, }, 
	{ "ipmsg",	Logip|Logipmsg, }, 
1999/0316    
	{ "esp",	Logesp, }, 


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