1package eu.siacs.conversations.xmpp.jingle;
2
3import com.google.common.collect.ImmutableList;
4
5import java.net.Inet6Address;
6import java.net.InetAddress;
7import java.net.NetworkInterface;
8import java.net.SocketException;
9import java.net.UnknownHostException;
10import java.security.SecureRandom;
11import java.util.ArrayList;
12import java.util.Enumeration;
13import java.util.List;
14import java.util.UUID;
15
16import eu.siacs.conversations.xmpp.Jid;
17
18public class DirectConnectionUtils {
19
20 public static List<InetAddress> getLocalAddresses() {
21 final ImmutableList.Builder<InetAddress> inetAddresses = new ImmutableList.Builder<>();
22 final Enumeration<NetworkInterface> interfaces;
23 try {
24 interfaces = NetworkInterface.getNetworkInterfaces();
25 } catch (final SocketException e) {
26 return inetAddresses.build();
27 }
28 while (interfaces.hasMoreElements()) {
29 NetworkInterface networkInterface = interfaces.nextElement();
30 final Enumeration<InetAddress> inetAddressEnumeration = networkInterface.getInetAddresses();
31 while (inetAddressEnumeration.hasMoreElements()) {
32 final InetAddress inetAddress = inetAddressEnumeration.nextElement();
33 if (inetAddress.isLoopbackAddress() || inetAddress.isLinkLocalAddress()) {
34 continue;
35 }
36 if (inetAddress instanceof Inet6Address) {
37 //let's get rid of scope
38 try {
39 inetAddresses.add(Inet6Address.getByAddress(inetAddress.getAddress()));
40 } catch (UnknownHostException e) {
41 //ignored
42 }
43 } else {
44 inetAddresses.add(inetAddress);
45 }
46 }
47 }
48 return inetAddresses.build();
49 }
50}