9fans archive / 1999 / 01 / 6 /    prev next

From: arisawa@ar.aichi-u.ac.jp arisawa@ar.aichi-u.ac.jp
Subject: [9fans] cs trouble on multi-ether
Date: Wed, 6 Jan 1999 01:49:47 -0500 (EST)

Hello Russ!

>In this case, dnresolve.c uses udpport()
>to get a UDP port for DNS queries, and the process
>of dialing asks cs how to translate udp!0.0.0.0!0.

OK. I have confirmed the origin of "udp!0.0.0.0!0" is dns.
After stopping  to run dns, "udp!0.0.0.0!0"'s are disappeared
and it seems the system become stable.


>Which call to reorder() is looping?  There are two that could be.

If I run dns and allow cs to accept "udp!0.0.0.0!0", cs can fall into
endless loop.
The pass to the loop is shown bellow:

int
lookup(Mfile *mf, char *net, char *host, char *serv)
{
	...
		for(np = netlist; np; np = np->next){
			nt = (*np->lookup)(np, host, serv, 0);
	...
}

Ndbtuple*
iplookup(Network *np, char *host, char *serv, int nolookup)
{
	...
	return reorder(t, s.t);
}

Ndbtuple*
reorder(Ndbtuple *t, Ndbtuple *x)
{
	...
	for(line = x; line->entry == line->line; line = line->line)
		if(line->line == x)  abort()/* inserted to detect endless loop */
		;
	...
}


By the way, IP's of may system are configured as follows:
# corega etherlink II
ip=202.250.160.40  ether=0000f45d4345    sys=ar
        dom=ar.aichi-u.ac.jp
        bootf=/386/n9pccpu
        proto=il

# alias (ether1) of ar
# 3c905b
ip=202.250.160.122  ether=00a024d113a2    sys=plan9
        dom=plan9.aichi-u.ac.jp
        bootf=/386/n9pccpu
        proto=il

Which IP will be used on calling dial() ?
It seems to me dial() uses ether0 and we have no way to select IP.


Kenji Arisawa
E-mail: arisawa@aic...