[kaffe] NetworkInterfaceTest failed

Timothy Stack stack at cs.utah.edu
Fri May 21 07:52:03 PDT 2004


> 
> 
> > The network interface ed0 has two addresses:
> >        inet 192.168.0.4 netmask 0xffffff00 broadcast 192.168.0.255
> >        inet6 fe80::290:99ff:fe5f:4cb2%ed0 prefixlen 64 scopeid 0x2
> 
> > In this case, I think, java.net.getNetworkInterfaces() should
> > return one interface, [ed0 {192.168.0.4, fe80::290:99ff:fe5f:4cb2}],
> > but actually returns two interfaces, [ed0 {192.168.0.4}] and
> > [ed0 {fe80::290:99ff:fe5f:4cb2}].
> 
> Suppose a network interface I has two IP addresses A1 and A2.
> NetworkInterface.getNetworkInterfaces() should return one interface
> [I, {A1, A2}].  But now two interfaces [I, {A1}] and [I, {A2}]
> are returned.  Before the recent change to NetworkInterface,
> only one interface [I, {A1}] was returned.
> 
> This can be explained as follows.
> 
> In NetworkInterface.c, detectInterfaces() returns the list
> ([I, {A1}], [I, {A2}]).
> 
> Formerly,  the network interfaces were kept in a hashtable
> and before putting a new object into the hashtable,
> NetworkInterface checked whether the interface with the
> same name existed in the hashtable.  Thus only the first
> one was put in the hashtable.  This is why  only [I, {A1}]
> was returned.
> 
> Now NetworkInterface uses a vector for keeping network interfaces.
> So both [I, {A1}] and [I, {A2}] are stored.  This is why
> both [I, {A1}] and [I, {A2}] are returned now.
> 
> I think we should somehow create [I, {A1, A2}] from
> ([I, {A1}], [I, {A2}]).

Sorry, I just can't help myself...  The original JanosVM implementation of 
this did "the right thing", i think.  It used a hash table to store each 
network interface and then added the ip addresses to the vector in the 
object.  Lets not overwrite functioning code with broken stuff, okie... 
*grumble*

tim




More information about the kaffe mailing list