Skip to content
Snippets Groups Projects
Commit 4b6df3d9 authored by damonkohler's avatar damonkohler
Browse files

Merge pull request #180 from tulku/networkinterface

Adds newNonLoopbackForNetworkInterface
parents bbdf1ae8 4500f7dd
No related branches found
No related tags found
No related merge requests found
...@@ -25,6 +25,7 @@ import java.net.InetAddress; ...@@ -25,6 +25,7 @@ import java.net.InetAddress;
import java.net.NetworkInterface; import java.net.NetworkInterface;
import java.net.SocketException; import java.net.SocketException;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
...@@ -63,8 +64,8 @@ public class InetAddressFactory { ...@@ -63,8 +64,8 @@ public class InetAddressFactory {
return inetAddresses; return inetAddresses;
} }
public static InetAddress newNonLoopback() { private static InetAddress filterInetAddresses (Collection<InetAddress> inetAddresses) {
for (InetAddress address : getAllInetAddresses()) { for (InetAddress address : inetAddresses) {
// IPv4 only for now. // IPv4 only for now.
if (!address.isLoopbackAddress() && isIpv4(address)) { if (!address.isLoopbackAddress() && isIpv4(address)) {
return address; return address;
...@@ -73,7 +74,15 @@ public class InetAddressFactory { ...@@ -73,7 +74,15 @@ public class InetAddressFactory {
throw new RosRuntimeException("No non-loopback interface found."); throw new RosRuntimeException("No non-loopback interface found.");
} }
private static Collection<InetAddress> getAllInetAddressByName(String host) { public static InetAddress newNonLoopback() {
return filterInetAddresses(getAllInetAddresses());
}
public static InetAddress newNonLoopbackForNetworkInterface(NetworkInterface networkInterface) {
return filterInetAddresses(Collections.list(networkInterface.getInetAddresses()));
}
private static Collection<InetAddress> getAllInetAddressesByName(String host) {
InetAddress[] allAddressesByName; InetAddress[] allAddressesByName;
try { try {
allAddressesByName = org.xbill.DNS.Address.getAllByName(host); allAddressesByName = org.xbill.DNS.Address.getAllByName(host);
...@@ -117,7 +126,7 @@ public class InetAddressFactory { ...@@ -117,7 +126,7 @@ public class InetAddressFactory {
} catch (UnknownHostException e) { } catch (UnknownHostException e) {
throw new RosRuntimeException(e); throw new RosRuntimeException(e);
} }
Collection<InetAddress> allAddressesByName = getAllInetAddressByName(host); Collection<InetAddress> allAddressesByName = getAllInetAddressesByName(host);
// First, try to find a non-loopback IPv4 address. // First, try to find a non-loopback IPv4 address.
for (InetAddress address : allAddressesByName) { for (InetAddress address : allAddressesByName) {
if (!address.isLoopbackAddress() && isIpv4(address)) { if (!address.isLoopbackAddress() && isIpv4(address)) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment