X-Git-Url: http://git.argeo.org/?p=lgpl%2Fargeo-commons.git;a=blobdiff_plain;f=org.argeo.api.uuid%2Fsrc%2Forg%2Fargeo%2Fapi%2Fuuid%2FMacAddressUuidFactory.java;fp=org.argeo.api.uuid%2Fsrc%2Forg%2Fargeo%2Fapi%2Fuuid%2FMacAddressUuidFactory.java;h=6cbe98178123bb59b7a4342a87efdd7a260869f9;hp=51d68e3ef2aefb0420366ae212a17c108e229ceb;hb=52964c9b7edf437ca3eec0aa7a0baa32bc6dafd6;hpb=e7e7ea80443a94cefd9b16c5ccf11253c9991c02 diff --git a/org.argeo.api.uuid/src/org/argeo/api/uuid/MacAddressUuidFactory.java b/org.argeo.api.uuid/src/org/argeo/api/uuid/MacAddressUuidFactory.java index 51d68e3ef..6cbe98178 100644 --- a/org.argeo.api.uuid/src/org/argeo/api/uuid/MacAddressUuidFactory.java +++ b/org.argeo.api.uuid/src/org/argeo/api/uuid/MacAddressUuidFactory.java @@ -35,17 +35,19 @@ public class MacAddressUuidFactory extends ConcurrentUuidFactory { try { localHost = InetAddress.getLocalHost(); NetworkInterface nic = NetworkInterface.getByInetAddress(localHost); - if (nic != null) + if (nic != null && nic.getHardwareAddress() != null) return hardwareAddressToNodeId(nic); Enumeration netInterfaces = null; - try { - netInterfaces = NetworkInterface.getNetworkInterfaces(); - } catch (SocketException e) { - throw new IllegalStateException(e); - } + netInterfaces = NetworkInterface.getNetworkInterfaces(); if (netInterfaces == null || !netInterfaces.hasMoreElements()) throw new IllegalStateException("No interfaces"); - return hardwareAddressToNodeId(netInterfaces.nextElement()); + while (netInterfaces.hasMoreElements()) { + // TODO find out public/physical interfaces + nic = netInterfaces.nextElement(); + if (nic.getHardwareAddress() != null) + return hardwareAddressToNodeId(nic); + } + throw new IllegalStateException("No interfaces with a MAC address"); } catch (UnknownHostException | SocketException e) { throw new IllegalStateException(e); }