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...