Commit adefdaca by Gary Benson Committed by Gary Benson

InetAddress.java: Removed.

2006-11-03  Gary Benson  <gbenson@redhat.com>

	* java/net/InetAddress.java: Removed.
	* java/net/natInetAddressNoNet.cc: Likewise.
	* java/net/natInetAddressPosix.cc: Likewise.
	* java/net/natInetAddressWin32.cc: Likewise.
	* java/net/VMInetAddress.java (getLocalHostname,
	lookupInaddrAny, getHostByAddr, getHostByName,
	aton): Replace glue methods with native ones.
	* java/net/natVMInetAddressNoNet.cc: New file.
	* java/net/natVMInetAddressPosix.cc: Likewise.
	* java/net/natVMInetAddressWin32.cc: Likewise.
	* Makefile.am, configure.ac: Reflect the above.
	* sources.am, Makefile.in, configure: Rebuilt.

	* java/net/natVMNetworkInterfaceWin32.cc
	(winsock2GetRealNetworkInterfaces): Create InetAddress
	objects using InetAddress.getByAddress.
	* gnu/java/net/natPlainSocketImplWin32.cc
	(accept, getOption): Likewise.
	* gnu/java/net/natPlainDatagramSocketImplWin32.cc
	(peekData, receive, getOption): Likewise.

From-SVN: r118451
parent 5d7de335
2006-11-03 Gary Benson <gbenson@redhat.com>
* java/net/InetAddress.java: Removed.
* java/net/natInetAddressNoNet.cc: Likewise.
* java/net/natInetAddressPosix.cc: Likewise.
* java/net/natInetAddressWin32.cc: Likewise.
* java/net/VMInetAddress.java (getLocalHostname,
lookupInaddrAny, getHostByAddr, getHostByName,
aton): Replace glue methods with native ones.
* java/net/natVMInetAddressNoNet.cc: New file.
* java/net/natVMInetAddressPosix.cc: Likewise.
* java/net/natVMInetAddressWin32.cc: Likewise.
* Makefile.am, configure.ac: Reflect the above.
* sources.am, Makefile.in, configure: Rebuilt.
* java/net/natVMNetworkInterfaceWin32.cc
(winsock2GetRealNetworkInterfaces): Create InetAddress
objects using InetAddress.getByAddress.
* gnu/java/net/natPlainSocketImplWin32.cc
(accept, getOption): Likewise.
* gnu/java/net/natPlainDatagramSocketImplWin32.cc
(peekData, receive, getOption): Likewise.
2006-11-02 Keith Seitz <keiths@redhat.com> 2006-11-02 Keith Seitz <keiths@redhat.com>
* gnu/classpath/jdwp/natVMMethod.cc (getLineTable): Implement. * gnu/classpath/jdwp/natVMMethod.cc (getLineTable): Implement.
......
...@@ -858,7 +858,7 @@ java/lang/reflect/natConstructor.cc \ ...@@ -858,7 +858,7 @@ java/lang/reflect/natConstructor.cc \
java/lang/reflect/natField.cc \ java/lang/reflect/natField.cc \
java/lang/reflect/natMethod.cc \ java/lang/reflect/natMethod.cc \
java/net/natVMNetworkInterface.cc \ java/net/natVMNetworkInterface.cc \
java/net/natInetAddress.cc \ java/net/natVMInetAddress.cc \
java/net/natURLClassLoader.cc \ java/net/natURLClassLoader.cc \
java/nio/channels/natVMChannels.cc \ java/nio/channels/natVMChannels.cc \
java/nio/natDirectByteBufferImpl.cc \ java/nio/natDirectByteBufferImpl.cc \
......
...@@ -95,7 +95,7 @@ CONFIG_HEADER = $(top_builddir)/include/config.h \ ...@@ -95,7 +95,7 @@ CONFIG_HEADER = $(top_builddir)/include/config.h \
$(top_builddir)/gcj/libgcj-config.h $(top_builddir)/gcj/libgcj-config.h
CONFIG_CLEAN_FILES = libgcj.pc libgcj.spec libgcj-test.spec \ CONFIG_CLEAN_FILES = libgcj.pc libgcj.spec libgcj-test.spec \
scripts/jar java/io/natFile.cc java/lang/ConcreteProcess.java \ scripts/jar java/io/natFile.cc java/lang/ConcreteProcess.java \
java/lang/natConcreteProcess.cc java/net/natInetAddress.cc \ java/lang/natConcreteProcess.cc java/net/natVMInetAddress.cc \
java/net/natVMNetworkInterface.cc \ java/net/natVMNetworkInterface.cc \
gnu/java/net/natPlainSocketImpl.cc \ gnu/java/net/natPlainSocketImpl.cc \
gnu/java/net/natPlainDatagramSocketImpl.cc \ gnu/java/net/natPlainDatagramSocketImpl.cc \
...@@ -300,7 +300,7 @@ am__libgcj_la_SOURCES_DIST = prims.cc jni.cc jvmti.cc exception.cc \ ...@@ -300,7 +300,7 @@ am__libgcj_la_SOURCES_DIST = prims.cc jni.cc jvmti.cc exception.cc \
java/lang/ref/natReference.cc java/lang/reflect/natArray.cc \ java/lang/ref/natReference.cc java/lang/reflect/natArray.cc \
java/lang/reflect/natConstructor.cc \ java/lang/reflect/natConstructor.cc \
java/lang/reflect/natField.cc java/lang/reflect/natMethod.cc \ java/lang/reflect/natField.cc java/lang/reflect/natMethod.cc \
java/net/natVMNetworkInterface.cc java/net/natInetAddress.cc \ java/net/natVMNetworkInterface.cc java/net/natVMInetAddress.cc \
java/net/natURLClassLoader.cc \ java/net/natURLClassLoader.cc \
java/nio/channels/natVMChannels.cc \ java/nio/channels/natVMChannels.cc \
java/nio/natDirectByteBufferImpl.cc \ java/nio/natDirectByteBufferImpl.cc \
...@@ -348,7 +348,7 @@ am__objects_2 = gnu/classpath/natSystemProperties.lo \ ...@@ -348,7 +348,7 @@ am__objects_2 = gnu/classpath/natSystemProperties.lo \
java/lang/ref/natReference.lo java/lang/reflect/natArray.lo \ java/lang/ref/natReference.lo java/lang/reflect/natArray.lo \
java/lang/reflect/natConstructor.lo \ java/lang/reflect/natConstructor.lo \
java/lang/reflect/natField.lo java/lang/reflect/natMethod.lo \ java/lang/reflect/natField.lo java/lang/reflect/natMethod.lo \
java/net/natVMNetworkInterface.lo java/net/natInetAddress.lo \ java/net/natVMNetworkInterface.lo java/net/natVMInetAddress.lo \
java/net/natURLClassLoader.lo \ java/net/natURLClassLoader.lo \
java/nio/channels/natVMChannels.lo \ java/nio/channels/natVMChannels.lo \
java/nio/natDirectByteBufferImpl.lo \ java/nio/natDirectByteBufferImpl.lo \
...@@ -4130,7 +4130,7 @@ classpath/java/net/FileNameMap.java \ ...@@ -4130,7 +4130,7 @@ classpath/java/net/FileNameMap.java \
classpath/java/net/HttpURLConnection.java \ classpath/java/net/HttpURLConnection.java \
classpath/java/net/Inet4Address.java \ classpath/java/net/Inet4Address.java \
classpath/java/net/Inet6Address.java \ classpath/java/net/Inet6Address.java \
java/net/InetAddress.java \ classpath/java/net/InetAddress.java \
classpath/java/net/InetSocketAddress.java \ classpath/java/net/InetSocketAddress.java \
classpath/java/net/JarURLConnection.java \ classpath/java/net/JarURLConnection.java \
classpath/java/net/MalformedURLException.java \ classpath/java/net/MalformedURLException.java \
...@@ -7431,7 +7431,7 @@ java/lang/reflect/natConstructor.cc \ ...@@ -7431,7 +7431,7 @@ java/lang/reflect/natConstructor.cc \
java/lang/reflect/natField.cc \ java/lang/reflect/natField.cc \
java/lang/reflect/natMethod.cc \ java/lang/reflect/natMethod.cc \
java/net/natVMNetworkInterface.cc \ java/net/natVMNetworkInterface.cc \
java/net/natInetAddress.cc \ java/net/natVMInetAddress.cc \
java/net/natURLClassLoader.cc \ java/net/natURLClassLoader.cc \
java/nio/channels/natVMChannels.cc \ java/nio/channels/natVMChannels.cc \
java/nio/natDirectByteBufferImpl.cc \ java/nio/natDirectByteBufferImpl.cc \
...@@ -7929,7 +7929,7 @@ java/net/$(DEPDIR)/$(am__dirstamp): ...@@ -7929,7 +7929,7 @@ java/net/$(DEPDIR)/$(am__dirstamp):
@: > java/net/$(DEPDIR)/$(am__dirstamp) @: > java/net/$(DEPDIR)/$(am__dirstamp)
java/net/natVMNetworkInterface.lo: java/net/$(am__dirstamp) \ java/net/natVMNetworkInterface.lo: java/net/$(am__dirstamp) \
java/net/$(DEPDIR)/$(am__dirstamp) java/net/$(DEPDIR)/$(am__dirstamp)
java/net/natInetAddress.lo: java/net/$(am__dirstamp) \ java/net/natVMInetAddress.lo: java/net/$(am__dirstamp) \
java/net/$(DEPDIR)/$(am__dirstamp) java/net/$(DEPDIR)/$(am__dirstamp)
java/net/natURLClassLoader.lo: java/net/$(am__dirstamp) \ java/net/natURLClassLoader.lo: java/net/$(am__dirstamp) \
java/net/$(DEPDIR)/$(am__dirstamp) java/net/$(DEPDIR)/$(am__dirstamp)
...@@ -8261,10 +8261,10 @@ mostlyclean-compile: ...@@ -8261,10 +8261,10 @@ mostlyclean-compile:
-rm -f java/lang/reflect/natField.lo -rm -f java/lang/reflect/natField.lo
-rm -f java/lang/reflect/natMethod.$(OBJEXT) -rm -f java/lang/reflect/natMethod.$(OBJEXT)
-rm -f java/lang/reflect/natMethod.lo -rm -f java/lang/reflect/natMethod.lo
-rm -f java/net/natInetAddress.$(OBJEXT)
-rm -f java/net/natInetAddress.lo
-rm -f java/net/natURLClassLoader.$(OBJEXT) -rm -f java/net/natURLClassLoader.$(OBJEXT)
-rm -f java/net/natURLClassLoader.lo -rm -f java/net/natURLClassLoader.lo
-rm -f java/net/natVMInetAddress.$(OBJEXT)
-rm -f java/net/natVMInetAddress.lo
-rm -f java/net/natVMNetworkInterface.$(OBJEXT) -rm -f java/net/natVMNetworkInterface.$(OBJEXT)
-rm -f java/net/natVMNetworkInterface.lo -rm -f java/net/natVMNetworkInterface.lo
-rm -f java/nio/channels/natVMChannels.$(OBJEXT) -rm -f java/nio/channels/natVMChannels.$(OBJEXT)
...@@ -8392,8 +8392,8 @@ distclean-compile: ...@@ -8392,8 +8392,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@java/lang/reflect/$(DEPDIR)/natConstructor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@java/lang/reflect/$(DEPDIR)/natConstructor.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@java/lang/reflect/$(DEPDIR)/natField.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@java/lang/reflect/$(DEPDIR)/natField.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@java/lang/reflect/$(DEPDIR)/natMethod.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@java/lang/reflect/$(DEPDIR)/natMethod.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@java/net/$(DEPDIR)/natInetAddress.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@java/net/$(DEPDIR)/natURLClassLoader.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@java/net/$(DEPDIR)/natURLClassLoader.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@java/net/$(DEPDIR)/natVMInetAddress.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@java/net/$(DEPDIR)/natVMNetworkInterface.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@java/net/$(DEPDIR)/natVMNetworkInterface.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@java/nio/$(DEPDIR)/natDirectByteBufferImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@java/nio/$(DEPDIR)/natDirectByteBufferImpl.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@java/nio/channels/$(DEPDIR)/natVMChannels.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@java/nio/channels/$(DEPDIR)/natVMChannels.Plo@am__quote@
......
...@@ -7486,9 +7486,9 @@ test -d java/lang || mkdir java/lang ...@@ -7486,9 +7486,9 @@ test -d java/lang || mkdir java/lang
ac_config_links="$ac_config_links java/lang/natConcreteProcess.cc:java/lang/nat${PLATFORM}Process.cc" ac_config_links="$ac_config_links java/lang/natConcreteProcess.cc:java/lang/nat${PLATFORM}Process.cc"
# Likewise for natInetAddress.cc and natVMNetworkInterface.cc. # Likewise for natVMInetAddress.cc and natVMNetworkInterface.cc.
test -d java/net || mkdir java/net test -d java/net || mkdir java/net
ac_config_links="$ac_config_links java/net/natInetAddress.cc:java/net/natInetAddress${PLATFORMNET}.cc" ac_config_links="$ac_config_links java/net/natVMInetAddress.cc:java/net/natVMInetAddress${PLATFORMNET}.cc"
ac_config_links="$ac_config_links java/net/natVMNetworkInterface.cc:java/net/natVMNetworkInterface${PLATFORMNET}.cc" ac_config_links="$ac_config_links java/net/natVMNetworkInterface.cc:java/net/natVMNetworkInterface${PLATFORMNET}.cc"
...@@ -17479,7 +17479,7 @@ do ...@@ -17479,7 +17479,7 @@ do
"java/io/natFile.cc" ) CONFIG_LINKS="$CONFIG_LINKS java/io/natFile.cc:java/io/natFile${FILE-${PLATFORM}}.cc" ;; "java/io/natFile.cc" ) CONFIG_LINKS="$CONFIG_LINKS java/io/natFile.cc:java/io/natFile${FILE-${PLATFORM}}.cc" ;;
"java/lang/ConcreteProcess.java" ) CONFIG_LINKS="$CONFIG_LINKS java/lang/ConcreteProcess.java:java/lang/${PLATFORM}Process.java" ;; "java/lang/ConcreteProcess.java" ) CONFIG_LINKS="$CONFIG_LINKS java/lang/ConcreteProcess.java:java/lang/${PLATFORM}Process.java" ;;
"java/lang/natConcreteProcess.cc" ) CONFIG_LINKS="$CONFIG_LINKS java/lang/natConcreteProcess.cc:java/lang/nat${PLATFORM}Process.cc" ;; "java/lang/natConcreteProcess.cc" ) CONFIG_LINKS="$CONFIG_LINKS java/lang/natConcreteProcess.cc:java/lang/nat${PLATFORM}Process.cc" ;;
"java/net/natInetAddress.cc" ) CONFIG_LINKS="$CONFIG_LINKS java/net/natInetAddress.cc:java/net/natInetAddress${PLATFORMNET}.cc" ;; "java/net/natVMInetAddress.cc" ) CONFIG_LINKS="$CONFIG_LINKS java/net/natVMInetAddress.cc:java/net/natVMInetAddress${PLATFORMNET}.cc" ;;
"java/net/natVMNetworkInterface.cc" ) CONFIG_LINKS="$CONFIG_LINKS java/net/natVMNetworkInterface.cc:java/net/natVMNetworkInterface${PLATFORMNET}.cc" ;; "java/net/natVMNetworkInterface.cc" ) CONFIG_LINKS="$CONFIG_LINKS java/net/natVMNetworkInterface.cc:java/net/natVMNetworkInterface${PLATFORMNET}.cc" ;;
"gnu/java/net/natPlainSocketImpl.cc" ) CONFIG_LINKS="$CONFIG_LINKS gnu/java/net/natPlainSocketImpl.cc:gnu/java/net/natPlainSocketImpl${PLATFORMNET}.cc" ;; "gnu/java/net/natPlainSocketImpl.cc" ) CONFIG_LINKS="$CONFIG_LINKS gnu/java/net/natPlainSocketImpl.cc:gnu/java/net/natPlainSocketImpl${PLATFORMNET}.cc" ;;
"gnu/java/net/natPlainDatagramSocketImpl.cc" ) CONFIG_LINKS="$CONFIG_LINKS gnu/java/net/natPlainDatagramSocketImpl.cc:gnu/java/net/natPlainDatagramSocketImpl${PLATFORMNET}.cc" ;; "gnu/java/net/natPlainDatagramSocketImpl.cc" ) CONFIG_LINKS="$CONFIG_LINKS gnu/java/net/natPlainDatagramSocketImpl.cc:gnu/java/net/natPlainDatagramSocketImpl${PLATFORMNET}.cc" ;;
......
...@@ -663,9 +663,9 @@ test -d java/lang || mkdir java/lang ...@@ -663,9 +663,9 @@ test -d java/lang || mkdir java/lang
AC_CONFIG_LINKS(java/lang/ConcreteProcess.java:java/lang/${PLATFORM}Process.java) AC_CONFIG_LINKS(java/lang/ConcreteProcess.java:java/lang/${PLATFORM}Process.java)
AC_CONFIG_LINKS(java/lang/natConcreteProcess.cc:java/lang/nat${PLATFORM}Process.cc) AC_CONFIG_LINKS(java/lang/natConcreteProcess.cc:java/lang/nat${PLATFORM}Process.cc)
# Likewise for natInetAddress.cc and natVMNetworkInterface.cc. # Likewise for natVMInetAddress.cc and natVMNetworkInterface.cc.
test -d java/net || mkdir java/net test -d java/net || mkdir java/net
AC_CONFIG_LINKS(java/net/natInetAddress.cc:java/net/natInetAddress${PLATFORMNET}.cc) AC_CONFIG_LINKS(java/net/natVMInetAddress.cc:java/net/natVMInetAddress${PLATFORMNET}.cc)
AC_CONFIG_LINKS(java/net/natVMNetworkInterface.cc:java/net/natVMNetworkInterface${PLATFORMNET}.cc) AC_CONFIG_LINKS(java/net/natVMNetworkInterface.cc:java/net/natVMNetworkInterface${PLATFORMNET}.cc)
# Likewise for natPlainSocketImpl.cc and natPlainDatagramSocketImpl.cc. # Likewise for natPlainSocketImpl.cc and natPlainDatagramSocketImpl.cc.
......
/* Copyright (C) 2003 Free Software Foundation /* Copyright (C) 2003, 2006 Free Software Foundation
This file is part of libgcj. This file is part of libgcj.
...@@ -238,7 +238,7 @@ gnu::java::net::PlainDatagramSocketImpl::peekData(::java::net::DatagramPacket *p ...@@ -238,7 +238,7 @@ gnu::java::net::PlainDatagramSocketImpl::peekData(::java::net::DatagramPacket *p
else else
throw new ::java::net::SocketException (JvNewStringUTF ("invalid family")); throw new ::java::net::SocketException (JvNewStringUTF ("invalid family"));
p->setAddress (new ::java::net::InetAddress (raddr, NULL)); p->setAddress (::java::net::InetAddress::getByAddress (raddr));
p->setPort (rport); p->setPort (rport);
p->length = (jint) retlen; p->length = (jint) retlen;
return rport; return rport;
...@@ -360,7 +360,7 @@ gnu::java::net::PlainDatagramSocketImpl::receive (::java::net::DatagramPacket *p ...@@ -360,7 +360,7 @@ gnu::java::net::PlainDatagramSocketImpl::receive (::java::net::DatagramPacket *p
else else
throw new ::java::net::SocketException (JvNewStringUTF ("invalid family")); throw new ::java::net::SocketException (JvNewStringUTF ("invalid family"));
p->setAddress (new ::java::net::InetAddress (raddr, NULL)); p->setAddress (::java::net::InetAddress::getByAddress (raddr));
p->setPort (rport); p->setPort (rport);
p->length = (jint) retlen; p->length = (jint) retlen;
return; return;
...@@ -656,7 +656,7 @@ gnu::java::net::PlainDatagramSocketImpl::getOption (jint optID) ...@@ -656,7 +656,7 @@ gnu::java::net::PlainDatagramSocketImpl::getOption (jint optID)
else else
throw new ::java::net::SocketException ( throw new ::java::net::SocketException (
JvNewStringUTF ("invalid family")); JvNewStringUTF ("invalid family"));
localAddress = new ::java::net::InetAddress (laddr, NULL); localAddress = ::java::net::InetAddress::getByAddress (laddr);
} }
return localAddress; return localAddress;
break; break;
......
/* Copyright (C) 2003, 2004, 2005 Free Software Foundation /* Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation
This file is part of libgcj. This file is part of libgcj.
...@@ -328,7 +328,7 @@ gnu::java::net::PlainSocketImpl::accept (gnu::java::net::PlainSocketImpl *s) ...@@ -328,7 +328,7 @@ gnu::java::net::PlainSocketImpl::accept (gnu::java::net::PlainSocketImpl *s)
s->native_fd = (jint) hSocket; s->native_fd = (jint) hSocket;
s->localport = localport; s->localport = localport;
s->address = new ::java::net::InetAddress (raddr, NULL); s->address = ::java::net::InetAddress::getByAddress (raddr);
s->port = rport; s->port = rport;
return; return;
...@@ -735,7 +735,7 @@ gnu::java::net::PlainSocketImpl::getOption (jint optID) ...@@ -735,7 +735,7 @@ gnu::java::net::PlainSocketImpl::getOption (jint optID)
else else
throw new ::java::net::SocketException throw new ::java::net::SocketException
(JvNewStringUTF ("invalid family")); (JvNewStringUTF ("invalid family"));
localAddress = new ::java::net::InetAddress (laddr, NULL); localAddress = ::java::net::InetAddress::getByAddress (laddr);
} }
return localAddress; return localAddress;
......
...@@ -58,18 +58,12 @@ class VMInetAddress implements Serializable ...@@ -58,18 +58,12 @@ class VMInetAddress implements Serializable
* *
* @return The local hostname. * @return The local hostname.
*/ */
public static String getLocalHostname() public static native String getLocalHostname();
{
return InetAddress.getLocalHostname();
}
/** /**
* Returns the value of the special address INADDR_ANY * Returns the value of the special address INADDR_ANY
*/ */
public static byte[] lookupInaddrAny() throws UnknownHostException public static native byte[] lookupInaddrAny() throws UnknownHostException;
{
return new byte[] {0, 0, 0, 0};
}
/** /**
* This method returns the hostname for a given IP address. It will * This method returns the hostname for a given IP address. It will
...@@ -81,26 +75,15 @@ class VMInetAddress implements Serializable ...@@ -81,26 +75,15 @@ class VMInetAddress implements Serializable
* *
* @exception UnknownHostException If the reverse lookup fails * @exception UnknownHostException If the reverse lookup fails
*/ */
public static String getHostByAddr(byte[] ip) throws UnknownHostException public static native String getHostByAddr(byte[] ip)
{ throws UnknownHostException;
InetAddress addr = InetAddress.getByAddress(ip);
InetAddress.lookup(null, addr, false);
return addr.getHostName();
}
/** /**
* Returns a list of all IP addresses for a given hostname. Will throw * Returns a list of all IP addresses for a given hostname. Will throw
* an UnknownHostException if the hostname cannot be resolved. * an UnknownHostException if the hostname cannot be resolved.
*/ */
public static byte[][] getHostByName(String hostname) public static native byte[][] getHostByName(String hostname)
throws UnknownHostException throws UnknownHostException;
{
InetAddress[] iaddrs = InetAddress.lookup(hostname, null, true);
byte[][] addrs = new byte[iaddrs.length][];
for (int i = 0; i < iaddrs.length; i++)
addrs[i] = iaddrs[i].getAddress();
return addrs;
}
/** /**
* Return the IP address represented by a literal address. * Return the IP address represented by a literal address.
...@@ -110,8 +93,5 @@ class VMInetAddress implements Serializable ...@@ -110,8 +93,5 @@ class VMInetAddress implements Serializable
* *
* @return The IP address as a byte array * @return The IP address as a byte array
*/ */
public static byte[] aton(String address) public static native byte[] aton(String address);
{
return InetAddress.aton(address);
}
} }
/* Copyright (C) 2003 Free Software Foundation
This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
#include <config.h>
#include <platform.h>
#undef STRICT
#include <java/net/InetAddress.h>
#include <java/net/UnknownHostException.h>
#include <java/lang/SecurityException.h>
jbyteArray
java::net::InetAddress::aton (jstring host)
{
JV_TEMP_UTF_STRING (hostname, host);
char* bytes = NULL;
int blen = 0;
unsigned long laddr = inet_addr (hostname);
if (laddr != INADDR_NONE)
{
bytes = (char*) &laddr;
blen = 4;
}
if (blen == 0)
return NULL;
jbyteArray result = JvNewByteArray (blen);
memcpy (elements (result), bytes, blen);
return result;
}
jint
java::net::InetAddress::getFamily (jbyteArray bytes)
{
int len = bytes->length;
if (len == 4)
return AF_INET;
#ifdef HAVE_INET6
else if (len == 16)
return AF_INET6;
#endif /* HAVE_INET6 */
else
JvFail ("unrecognized size");
}
JArray<java::net::InetAddress*> *
java::net::InetAddress::lookup (jstring host, java::net::InetAddress* iaddr,
jboolean all)
{
struct hostent *hptr = NULL;
if (host != NULL)
{
JV_TEMP_UTF_STRING (hostname, host);
// FIXME: this is insufficient if some other piece of code calls
// this gethostbyname.
JvSynchronize sync (java::net::InetAddress::loopbackAddress);
hptr = gethostbyname (hostname);
}
else
{
jbyteArray bytes = iaddr->addr;
char *chars = (char*) elements (bytes);
int len = bytes->length;
int type;
char *val;
if (len == 4)
{
val = chars;
type = iaddr->family = AF_INET;
}
#ifdef HAVE_INET6
else if (len == 16)
{
val = (char *) &chars;
type = iaddr->family = AF_INET6;
}
#endif /* HAVE_INET6 */
else
JvFail ("unrecognized size");
// FIXME: this is insufficient if some other piece of code calls
// this gethostbyaddr.
JvSynchronize sync (java::net::InetAddress::loopbackAddress);
hptr = gethostbyaddr (val, len, type);
}
if (hptr != NULL)
{
if (!all)
host = JvNewStringUTF (hptr->h_name);
java::lang::SecurityException *ex = checkConnect (host);
if (ex != NULL)
{
if (iaddr == NULL || iaddr->addr == NULL)
throw ex;
hptr = NULL;
}
}
if (hptr == NULL)
{
if (iaddr != NULL && iaddr->addr != NULL)
{
iaddr->hostName = iaddr->getHostAddress();
return NULL;
}
else
throw new java::net::UnknownHostException(host);
}
int count;
if (all)
{
char** ptr = hptr->h_addr_list;
count = 0;
while (*ptr++) count++;
}
else
count = 1;
JArray<java::net::InetAddress*> *result;
java::net::InetAddress** iaddrs;
if (all)
{
result = java::net::InetAddress::allocArray (count);
iaddrs = elements (result);
}
else
{
result = NULL;
iaddrs = &iaddr;
}
for (int i = 0; i < count; i++)
{
if (iaddrs[i] == NULL)
iaddrs[i] = new java::net::InetAddress (NULL, NULL);
if (iaddrs[i]->hostName == NULL)
iaddrs[i]->hostName = host;
if (iaddrs[i]->addr == NULL)
{
char *bytes = hptr->h_addr_list[i];
iaddrs[i]->addr = JvNewByteArray (hptr->h_length);
iaddrs[i]->family = getFamily (iaddrs[i]->addr);
memcpy (elements (iaddrs[i]->addr), bytes, hptr->h_length);
}
}
return result;
}
jstring
java::net::InetAddress::getLocalHostname ()
{
char buffer[400];
if (gethostname (buffer, sizeof(buffer)))
return NULL;
// It is admittedly non-optimal to convert the hostname to Unicode
// only to convert it back in getByName, but simplicity wins. Note
// that unless there is a SecurityManager, we only get called once
// anyway, thanks to the InetAddress.localhost cache.
return JvNewStringUTF (buffer);
}
/* Copyright (C) 2003 Free Software Foundation /* Copyright (C) 2003, 2006 Free Software Foundation
This file is part of libgcj. This file is part of libgcj.
...@@ -9,28 +9,32 @@ details. */ ...@@ -9,28 +9,32 @@ details. */
#include <config.h> #include <config.h>
#include <stddef.h> #include <stddef.h>
#include <java/net/InetAddress.h> jstring
java::net::VMInetAddress::getLocalHostname ()
{
return NULL;
}
jbyteArray jbyteArray
java::net::InetAddress::aton (jstring) java::net::VMInetAddress::lookupInaddrAny ()
{ {
return NULL; return NULL;
} }
jint jstring
java::net::InetAddress::getFamily (jbyteArray bytes) java::net::VMInetAddress::getHostByAddr (jbyteArray addr)
{ {
return 0; return NULL;
} }
JArray<java::net::InetAddress*> * JArray<jbyteArray> *
java::net::InetAddress::lookup (jstring, java::net::InetAddress *, jboolean) java::net::VMInetAddress::getHostByName (jstring host)
{ {
return NULL; return NULL;
} }
jstring jbyteArray
java::net::InetAddress::getLocalHostname () java::net::VMInetAddress::aton (jstring host)
{ {
return NULL; return NULL;
} }
/* Copyright (C) 2003, 2006 Free Software Foundation
This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
#include <config.h>
#include <platform.h>
#undef STRICT
#include <java/net/VMInetAddress.h>
#include <java/net/UnknownHostException.h>
jstring
java::net::VMInetAddress::getLocalHostname ()
{
char buffer[400];
if (gethostname (buffer, sizeof(buffer)))
return NULL;
// It is admittedly non-optimal to convert the hostname to Unicode
// only to convert it back in getByName, but simplicity wins.
return JvNewStringUTF (buffer);
}
jbyteArray
java::net::VMInetAddress::lookupInaddrAny ()
{
unsigned long laddr = INADDR_ANY;
char *bytes = (char *) &laddr;
int blen = sizeof (laddr);
jbyteArray result = JvNewByteArray (blen);
memcpy (elements (result), bytes, blen);
return result;
}
jstring
java::net::VMInetAddress::getHostByAddr (jbyteArray addr)
{
struct hostent *hptr = NULL;
char *bytes = (char*) elements (addr);
int len = addr->length;
int type;
char *val;
if (len == 4)
{
val = bytes;
type = AF_INET;
}
#ifdef HAVE_INET6
else if (len == 16)
{
val = (char *) &bytes;
type = AF_INET6;
}
#endif /* HAVE_INET6 */
else
JvFail ("unrecognized size");
// FIXME: this is insufficient if some other piece of code calls
// this gethostbyaddr.
JvSynchronize sync (&java::net::VMInetAddress::class$);
hptr = gethostbyaddr (val, len, type);
if (hptr == NULL)
throw new java::net::UnknownHostException ();
return JvNewStringUTF (hptr->h_name);
}
JArray<jbyteArray> *
java::net::VMInetAddress::getHostByName (jstring host)
{
struct hostent *hptr = NULL;
JV_TEMP_UTF_STRING (hostname, host);
// FIXME: this is insufficient if some other piece of code calls
// this gethostbyname.
JvSynchronize sync (&java::net::VMInetAddress::class$);
hptr = gethostbyname (hostname);
if (hptr == NULL)
throw new java::net::UnknownHostException (host);
int count = 0;
char ** ptr = hptr->h_addr_list;
while (*ptr++) count++;
JArray<jbyteArray> *result =
(JArray<jbyteArray> *) _Jv_NewObjectArray (
count, _Jv_GetArrayClass(JvPrimClass(byte), NULL), NULL);
jbyteArray* addrs = elements (result);
for (int i = 0; i < count; i++)
{
addrs[i] = JvNewByteArray (hptr->h_length);
memcpy (elements (addrs[i]), hptr->h_addr_list[i], hptr->h_length);
}
return result;
}
jbyteArray
java::net::VMInetAddress::aton (jstring host)
{
JV_TEMP_UTF_STRING (hostname, host);
char* bytes = NULL;
int blen = 0;
unsigned long laddr = inet_addr (hostname);
if (laddr != INADDR_NONE)
{
bytes = (char *) &laddr;
blen = 4;
}
if (blen == 0)
return NULL;
jbyteArray result = JvNewByteArray (blen);
memcpy (elements (result), bytes, blen);
return result;
}
...@@ -12,7 +12,7 @@ details. */ ...@@ -12,7 +12,7 @@ details. */
#undef STRICT #undef STRICT
#include <java/net/NetworkInterface.h> #include <java/net/NetworkInterface.h>
#include <java/net/Inet4Address.h> #include <java/net/InetAddress.h>
#include <java/net/SocketException.h> #include <java/net/SocketException.h>
#include <java/net/VMNetworkInterface.h> #include <java/net/VMNetworkInterface.h>
#include <java/util/Vector.h> #include <java/util/Vector.h>
...@@ -83,8 +83,8 @@ winsock2GetRealNetworkInterfaces (jstring* pjstrName, ...@@ -83,8 +83,8 @@ winsock2GetRealNetworkInterfaces (jstring* pjstrName,
} }
jstring if_name = _Jv_Win32NewString (szName); jstring if_name = _Jv_Win32NewString (szName);
java::net::Inet4Address* address = java::net::InetAddress* address =
new java::net::Inet4Address (baddr, JvNewStringLatin1 ("")); java::net::InetAddress::getByAddress (baddr);
pjstrName[i] = if_name; pjstrName[i] = if_name;
ppAddress[i] = address; ppAddress[i] = address;
} }
......
...@@ -5229,7 +5229,7 @@ classpath/java/net/FileNameMap.java \ ...@@ -5229,7 +5229,7 @@ classpath/java/net/FileNameMap.java \
classpath/java/net/HttpURLConnection.java \ classpath/java/net/HttpURLConnection.java \
classpath/java/net/Inet4Address.java \ classpath/java/net/Inet4Address.java \
classpath/java/net/Inet6Address.java \ classpath/java/net/Inet6Address.java \
java/net/InetAddress.java \ classpath/java/net/InetAddress.java \
classpath/java/net/InetSocketAddress.java \ classpath/java/net/InetSocketAddress.java \
classpath/java/net/JarURLConnection.java \ classpath/java/net/JarURLConnection.java \
classpath/java/net/MalformedURLException.java \ classpath/java/net/MalformedURLException.java \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment