PatchSet 4774 
Date: 2004/05/23 20:39:04
Author: dalibor
Branch: HEAD
Tag: (none) 
Log:
Fixed NetworkInterface to return single interface per interface name

2004-05-23  Dalibor Topic  <[EMAIL PROTECTED]>

        * libraries/javalib/java/net/NetworkInterface.java:
        (condense) new method.
        (getNetworkInterfaces) Use condense.
        (getByName, getByInetAddress) Use getNetworkInterfaces.

        Reported by: Ito Kazumitsu <[EMAIL PROTECTED]>

Members: 
        ChangeLog:1.2345->1.2346 
        libraries/javalib/java/net/NetworkInterface.java:1.6->1.7 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2345 kaffe/ChangeLog:1.2346
--- kaffe/ChangeLog:1.2345      Sun May 23 18:53:07 2004
+++ kaffe/ChangeLog     Sun May 23 20:39:04 2004
@@ -1,3 +1,12 @@
+2004-05-23  Dalibor Topic  <[EMAIL PROTECTED]>
+
+       * libraries/javalib/java/net/NetworkInterface.java:
+       (condense) new method.
+       (getNetworkInterfaces) Use condense.
+       (getByName, getByInetAddress) Use getNetworkInterfaces.
+
+       Reported by: Ito Kazumitsu <[EMAIL PROTECTED]>
+
 2004-05-23  Guilhem Lavaux <[EMAIL PROTECTED]>
 
        * libraries/javalib/bootstrap.classlist: Added several missing classes
Index: kaffe/libraries/javalib/java/net/NetworkInterface.java
diff -u kaffe/libraries/javalib/java/net/NetworkInterface.java:1.6 
kaffe/libraries/javalib/java/net/NetworkInterface.java:1.7
--- kaffe/libraries/javalib/java/net/NetworkInterface.java:1.6  Mon May 17 22:25:05 
2004
+++ kaffe/libraries/javalib/java/net/NetworkInterface.java      Sun May 23 20:39:10 
2004
@@ -40,7 +40,7 @@
 import gnu.classpath.Configuration;
 import java.util.Enumeration;
 import java.util.Vector;
-
+import java.util.*;
 
 /**
  * This class models a network interface on the host computer.  A network
@@ -143,7 +143,7 @@
   public static NetworkInterface getByName(String name)
     throws SocketException
   {
-    Vector networkInterfaces = getRealNetworkInterfaces();
+    Vector networkInterfaces = getNetworkInterfaces();
 
     for (Enumeration e = networkInterfaces.elements(); e.hasMoreElements();)
       {
@@ -168,7 +168,7 @@
   public static NetworkInterface getByInetAddress(InetAddress addr)
     throws SocketException
   {
-    Vector networkInterfaces = getRealNetworkInterfaces();
+    Vector networkInterfaces = getNetworkInterfaces();
 
     for (Enumeration interfaces = networkInterfaces.elements();
          interfaces.hasMoreElements();)
@@ -186,6 +186,41 @@
     throw new SocketException("no network interface is bound to such an IP address");
   }
 
+  static private Collection condense(Collection interfaces) 
+  {
+    final Map condensed = new HashMap();
+
+    final Iterator interfs = interfaces.iterator();
+    while (interfs.hasNext()) {
+
+      final NetworkInterface face = (NetworkInterface) interfs.next();
+      final String name = face.getName();
+      
+      if (condensed.containsKey(name))
+       {
+         final NetworkInterface conface = (NetworkInterface) condensed.get(name);
+         if (!conface.inetAddresses.containsAll(face.inetAddresses))
+           {
+             final Iterator faceAddresses = face.inetAddresses.iterator();
+             while (faceAddresses.hasNext())
+               {
+                 final InetAddress faceAddress = (InetAddress) faceAddresses.next();
+                 if (!conface.inetAddresses.contains(faceAddress))
+                   {
+                     conface.inetAddresses.add(faceAddress);
+                   }
+               }
+           }
+       }
+      else
+       {
+         condensed.put(name, face);
+       }
+    }
+
+    return condensed.values();
+  }
+
   /**
    *  Return an <code>Enumeration</code> of all available network interfaces
    *
@@ -198,7 +233,9 @@
     if (networkInterfaces.isEmpty())
       return null;
 
-    return networkInterfaces.elements();
+    Collection condensed = condense(networkInterfaces);
+
+    return Collections.enumeration(condensed);
   }
 
   /**

_______________________________________________
kaffe mailing list
[EMAIL PROTECTED]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to