Initial load
diff --git a/test/java/net/InetAddress/CheckJNI.java b/test/java/net/InetAddress/CheckJNI.java
new file mode 100644
index 0000000..03cd1b7
--- /dev/null
+++ b/test/java/net/InetAddress/CheckJNI.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* @test
+ @bug 4889870 4890033
+ @summary java -Xcheck:jni failing in net code on Solaris / [Datagram]Socket.getLocalAddress() failure
+ @run main/othervm -Xcheck:jni CheckJNI
+*/
+
+import java.net.*;
+import java.util.*;
+
+public class CheckJNI {
+ static Socket s;
+ static ServerSocket server;
+ static DatagramSocket dg1, dg2;
+
+ public static void main (String[] args) throws Exception {
+ /* try to invoke as much java.net native code as possible */
+
+ System.out.println ("Testing IPv4 Socket/ServerSocket");
+ server = new ServerSocket (0);
+ s = new Socket ("127.0.0.1", server.getLocalPort());
+ s.close();
+ server.close();
+
+ System.out.println ("Testing IPv4 DatagramSocket");
+ dg1 = new DatagramSocket (0, InetAddress.getByName ("127.0.0.1"));
+ dg2 = new DatagramSocket (0, InetAddress.getByName ("127.0.0.1"));
+ testDatagrams (dg1, dg2);
+
+ /* Use NetworkInterface to find link local IPv6 addrs to test */
+
+ Enumeration ifs = NetworkInterface.getNetworkInterfaces();
+ server = new ServerSocket (0);
+
+ while (ifs.hasMoreElements()) {
+ NetworkInterface nif = (NetworkInterface)ifs.nextElement();
+ Enumeration addrs = nif.getInetAddresses();
+ while (addrs.hasMoreElements()) {
+ InetAddress addr = (InetAddress) addrs.nextElement();
+ if (addr instanceof Inet6Address) {
+ Inet6Address ia6 = (Inet6Address) addr;
+ if (ia6.isLinkLocalAddress()) {
+ System.out.println ("Testing IPv6 Socket");
+ s = new Socket (ia6, server.getLocalPort());
+ s.close();
+
+ System.out.println ("Testing IPv6 DatagramSocket");
+ dg1 = new DatagramSocket (0, ia6);
+ dg2 = new DatagramSocket (0, ia6);
+ testDatagrams (dg1, dg2);
+ }
+ }
+ }
+ }
+ server.close();
+ System.out.println ("OK");
+ }
+
+ static void testDatagrams (DatagramSocket s1, DatagramSocket s2) throws Exception {
+ DatagramPacket p1 = new DatagramPacket (
+ "hello world".getBytes(),
+ 0, "hello world".length(), s2.getLocalAddress(),
+ s2.getLocalPort()
+ );
+
+ DatagramPacket p2 = new DatagramPacket (new byte[128], 128);
+ s1.send (p1);
+ s2.receive (p2);
+ s1.close ();
+ s2.close ();
+ }
+}