fix can't find host ip address on Mac OS

This commit is contained in:
Edison Su 2013-07-02 15:19:32 -07:00
parent 19651ff5fd
commit 96e1c54cb4
1 changed files with 11 additions and 9 deletions

View File

@ -26,14 +26,7 @@ import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.URI;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Formatter;
import java.util.List;
import java.util.Random;
import java.util.Set;
import java.util.SortedSet;
import java.util.StringTokenizer;
import java.util.TreeSet;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -46,6 +39,7 @@ import com.googlecode.ipv6.IPv6Network;
import com.cloud.utils.IteratorUtil;
import com.cloud.utils.Pair;
import com.cloud.utils.script.Script;
import org.apache.commons.lang.SystemUtils;
public class NetUtils {
protected final static Logger s_logger = Logger.getLogger(NetUtils.class);
@ -158,8 +152,10 @@ public class NetUtils {
return false;
}
public static String getDefaultHostIp() {
if(isWindows()) {
if(SystemUtils.IS_OS_WINDOWS) {
Pattern pattern = Pattern.compile("\\s*0.0.0.0\\s*0.0.0.0\\s*(\\S*)\\s*(\\S*)\\s*");
try {
Process result = Runtime.getRuntime().exec("route print -4");
@ -197,6 +193,10 @@ public class NetUtils {
}
public static String getDefaultEthDevice() {
if (SystemUtils.IS_OS_MAC) {
String defDev = Script.runSimpleBashScript("/sbin/route -n get default | grep interface | awk '{print $2}'");
return defDev;
}
String defaultRoute = Script.runSimpleBashScript("/sbin/route | grep default");
if (defaultRoute == null) {
@ -212,6 +212,8 @@ public class NetUtils {
return defaultRouteList[7];
}
public static InetAddress getFirstNonLoopbackLocalInetAddress() {
InetAddress[] addrs = getAllLocalInetAddresses();
if (addrs != null) {