[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 netmask 0xffffff00 broadcast
> >        inet6 fe80::290:99ff:fe5f:4cb2%ed0 prefixlen 64 scopeid 0x2
> > In this case, I think, java.net.getNetworkInterfaces() should
> > return one interface, [ed0 {, fe80::290:99ff:fe5f:4cb2}],
> > but actually returns two interfaces, [ed0 {}] 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... 


More information about the kaffe mailing list