You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mt...@apache.org on 2011/05/07 15:42:14 UTC
svn commit: r1100530 - in /commons/sandbox/runtime/trunk/src/main:
java/org/apache/commons/runtime/net/ native/shared/
Author: mturk
Date: Sat May 7 13:42:14 2011
New Revision: 1100530
URL: http://svn.apache.org/viewvc?rev=1100530&view=rev
Log:
Add IP address classes
Added:
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/IPSocketAddress.java (with props)
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/IPv4SocketAddress.java (with props)
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/IPv6SocketAddress.java (with props)
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketAddressImpl.java (with props)
Removed:
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/AbstractSocketAddress.java
Modified:
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/EndpointAddress.java
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketAddress.java
commons/sandbox/runtime/trunk/src/main/native/shared/netaddr.c
Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/EndpointAddress.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/EndpointAddress.java?rev=1100530&r1=1100529&r2=1100530&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/EndpointAddress.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/EndpointAddress.java Sat May 7 13:42:14 2011
@@ -31,24 +31,19 @@ public abstract class EndpointAddress
protected byte[] sa;
private int family;
- private static final int sasize;
- private static native int init0();
private static native int family0(byte[] sa);
private static native void free0(byte[] sa);
private static native boolean equals0(byte[] sa1, byte[] sa2);
private static native String name0(byte[] sa);
- static {
- // Gets the size of internal structure
- //
- sasize = init0();
-
- }
/**
* Creates a new EndpointAddress object.
*/
protected EndpointAddress()
{
+ // Mark the family as unresolved.
+ // The next getFamily() call will return
+ // the value from the internal buffer.
this.family = -1;
}
@@ -72,14 +67,6 @@ public abstract class EndpointAddress
}
/**
- * Returns {@code true} if the address has more elements.
- */
- public final boolean hasNext()
- {
- return sa.length > sasize;
- }
-
- /**
* Returns a string representation of this endpoint.
*/
@Override
Added: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/IPSocketAddress.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/IPSocketAddress.java?rev=1100530&view=auto
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/IPSocketAddress.java (added)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/IPSocketAddress.java Sat May 7 13:42:14 2011
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package org.apache.commons.runtime.net;
+
+import java.io.File;
+import java.net.UnknownHostException;
+import org.apache.commons.runtime.Memory;
+import org.apache.commons.runtime.Status;
+import org.apache.commons.runtime.SystemException;
+
+/**
+ * This class represents a Internet Protocol (IP) socket endpoint
+ * described by a name and port.
+ * <p>
+ * </p>
+ */
+public class IPSocketAddress extends SocketAddress
+{
+
+ private static native int size0();
+ private static final int sasize;
+
+ static {
+ // Gets the size of internal structure
+ //
+ sasize = size0();
+ }
+
+ protected IPSocketAddress()
+ {
+ // No instance
+ }
+
+ public IPSocketAddress(String hostname, int port)
+ throws OutOfMemoryError, NetworkException
+ {
+ byte[] sa = SocketAddressImpl.getnameinfo(AddressFamily.UNSPEC, hostname, null, port);
+ SocketAddressImpl.sockaddr(this, sa);
+ }
+
+ public static final SocketAddress[] getAll(String hostname, int port)
+ throws OutOfMemoryError, NetworkException
+ {
+ byte[] sa = SocketAddressImpl.getnameinfo(AddressFamily.UNSPEC, hostname, null, port);
+ int n = sa.length / sasize;
+ SocketAddress[] a = new SocketAddress[n];
+ for (int i = 0; i < n; i++) {
+ byte[] ba = new byte[sasize];
+ System.arraycopy(sa, i * sasize, ba, 0, sasize);
+ // Create a new SocketAddress
+ a[i] = new SocketAddressImpl(ba);
+ }
+ return a;
+ }
+
+}
Propchange: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/IPSocketAddress.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/IPv4SocketAddress.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/IPv4SocketAddress.java?rev=1100530&view=auto
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/IPv4SocketAddress.java (added)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/IPv4SocketAddress.java Sat May 7 13:42:14 2011
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package org.apache.commons.runtime.net;
+
+import java.io.File;
+import java.net.SocketException;
+import java.net.UnknownHostException;
+import org.apache.commons.runtime.Status;
+
+/**
+ * This class represents a Internet Protocol 4 (IPv4) socket endpoint
+ * described by a name and port.
+ * <p>
+ * </p>
+ */
+public final class IPv4SocketAddress extends IPSocketAddress
+{
+
+ private IPv4SocketAddress()
+ {
+ // No instance
+ }
+
+ public IPv4SocketAddress(String hostname, int port)
+ throws OutOfMemoryError, NetworkException
+ {
+ if (hostname == null || hostname.length() == 0)
+ throw new IllegalArgumentException("invalid hostname");
+ byte[] sa = SocketAddressImpl.getnameinfo(AddressFamily.INET, hostname, null, port);
+ SocketAddressImpl.sockaddr(this, sa);
+ }
+
+ public IPv4SocketAddress(String hostname)
+ throws OutOfMemoryError, NetworkException
+ {
+ this(hostname, 0);
+ }
+
+}
Propchange: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/IPv4SocketAddress.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/IPv6SocketAddress.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/IPv6SocketAddress.java?rev=1100530&view=auto
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/IPv6SocketAddress.java (added)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/IPv6SocketAddress.java Sat May 7 13:42:14 2011
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package org.apache.commons.runtime.net;
+
+import java.io.File;
+import java.net.SocketException;
+import java.net.UnknownHostException;
+import org.apache.commons.runtime.Status;
+
+/**
+ * This class represents a Internet Protocol 6 (IPv6) socket endpoint
+ * described by a name and port.
+ * <p>
+ * </p>
+ */
+public final class IPv6SocketAddress extends IPSocketAddress
+{
+
+ private IPv6SocketAddress()
+ {
+ // No instance
+ }
+
+ public IPv6SocketAddress(String hostname, int port)
+ throws OutOfMemoryError, NetworkException
+ {
+ if (hostname == null || hostname.length() == 0)
+ throw new IllegalArgumentException("invalid hostname");
+ byte[] sa = SocketAddressImpl.getnameinfo(AddressFamily.INET6, hostname, null, port);
+ SocketAddressImpl.sockaddr(this, sa);
+ }
+
+ public IPv6SocketAddress(String hostname)
+ throws OutOfMemoryError, NetworkException
+ {
+ this(hostname, 0);
+ }
+
+}
Propchange: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/IPv6SocketAddress.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketAddress.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketAddress.java?rev=1100530&r1=1100529&r2=1100530&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketAddress.java (original)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketAddress.java Sat May 7 13:42:14 2011
@@ -33,21 +33,6 @@ public abstract class SocketAddress exte
{
// Hide parent field.
// private byte[] sa;
- /**
- * First query for IPv4 addresses; only look
- * for IPv6 addresses if the first query failed;
- * only valid if family is UNSPEC and hostname
- * isn't null; mutually exclusive with IPV6_ADDR_OK
- */
- private static final int IPV4_ADDR_OK = 1;
- /**
- * First query for IPv6 addresses; only look
- * for IPv4 addresses if the first query failed;
- * only valid if family is UNSPEC and hostname
- * isn't null; mutually exclusive with IPV4_ADDR_OK
- */
- private static final int IPV6_ADDR_OK = 2;
-
/* Structure members */
private static native String hostname0(byte[] sa);
private static native String hostname1(byte[] sa);
@@ -55,11 +40,10 @@ public abstract class SocketAddress exte
private static native int port0(byte[] sa);
private static native String ipaddr0(byte[] sa);
- private static native byte[] sockaddr0(String hostname, String servname, int family, int port, int flags)
- throws OutOfMemoryError, NetworkException;
private static native int next0(byte[] sa);
private String fqdn = null;
+
/**
* Creates an new object
*/
@@ -75,6 +59,10 @@ public abstract class SocketAddress exte
super(family);
}
+ protected SocketAddress(byte[] sockaddr)
+ {
+ super.sa = sockaddr;
+ }
/**
* Create a new socket address object.
*
@@ -82,35 +70,31 @@ public abstract class SocketAddress exte
* @param servname a service name or a port number represented as string.
* @param family indicates a protocl family accepted.
*/
- protected SocketAddress(AddressFamily family, String hostname, String servname, int port, int flags)
+ protected SocketAddress(AddressFamily family, String hostname, String servname, int port)
throws InvalidArgumentException,
NetworkException
{
super(family);
if (family == AddressFamily.LOCAL)
throw new InvalidArgumentException();
- if (hostname == null) {
- int masked = flags & (IPV4_ADDR_OK | IPV6_ADDR_OK);
- if (family != AddressFamily.UNSPEC || masked == (IPV4_ADDR_OK | IPV6_ADDR_OK))
- throw new InvalidArgumentException();
- if (servname == null)
- servname = Integer.toString(port);
+ if (hostname == null && family != AddressFamily.UNSPEC) {
+ throw new InvalidArgumentException();
}
- super.sa = sockaddr0(hostname, servname, family.valueOf(), port, flags);
+ super.sa = SocketAddressImpl.getnameinfo(family, hostname, servname, port);
}
protected SocketAddress(AddressFamily family, String hostname, String servname)
throws InvalidArgumentException,
NetworkException
{
- this(family, hostname, servname, 0, 0);
+ this(family, hostname, servname, 0);
}
protected SocketAddress(AddressFamily family, String hostname)
throws InvalidArgumentException,
NetworkException
{
- this(family, hostname, null, 0, 0);
+ this(family, hostname, null, 0);
}
/**
@@ -160,5 +144,4 @@ public abstract class SocketAddress exte
return port0(super.sa);
}
-
}
Added: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketAddressImpl.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketAddressImpl.java?rev=1100530&view=auto
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketAddressImpl.java (added)
+++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketAddressImpl.java Sat May 7 13:42:14 2011
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+package org.apache.commons.runtime.net;
+
+import org.apache.commons.runtime.InvalidArgumentException;
+
+/**
+ * This class represents a generic socket endpoint.
+ * It is used by {@link SocketAddress#next()} to create
+ * a next address object form internal sockaddr structure.
+ */
+final class SocketAddressImpl extends SocketAddress
+{
+
+ private static native byte[] sockaddr0(String hostname, String servname, int family, int port, int flags)
+ throws OutOfMemoryError, NetworkException;
+
+ /**
+ * First query for IPv4 addresses; only look
+ * for IPv6 addresses if the first query failed;
+ * only valid if family is UNSPEC and hostname
+ * isn't null; mutually exclusive with IPV6_ADDR_OK
+ */
+ public static final int IPV4_ADDR_OK = 1;
+ /**
+ * First query for IPv6 addresses; only look
+ * for IPv4 addresses if the first query failed;
+ * only valid if family is UNSPEC and hostname
+ * isn't null; mutually exclusive with IPV4_ADDR_OK
+ */
+ public static final int IPV6_ADDR_OK = 2;
+
+
+ /**
+ * Default constructor
+ */
+ public SocketAddressImpl(byte[] sockaddr)
+ {
+ super(sockaddr);
+ }
+
+ /**
+ * Create a new socket address with given family.
+ */
+ public SocketAddressImpl(AddressFamily family)
+ throws NetworkException, InvalidArgumentException
+ {
+ super(family);
+ }
+
+ public static byte[] getnameinfo(AddressFamily family, String hostname, String servname, int port)
+ throws OutOfMemoryError, NetworkException
+ {
+ if (hostname == null && servname == null)
+ servname = Integer.toString(port);
+ return sockaddr0(hostname, servname, family.valueOf(), port, 0);
+ }
+
+ public static void sockaddr(EndpointAddress e, byte[] ba)
+ {
+ e.sa = ba;
+ }
+
+}
Propchange: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/net/SocketAddressImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: commons/sandbox/runtime/trunk/src/main/native/shared/netaddr.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/netaddr.c?rev=1100530&r1=1100529&r2=1100530&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/netaddr.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/netaddr.c Sat May 7 13:42:14 2011
@@ -387,8 +387,8 @@ AcrInetPton(int af, const char *src, voi
/* NOTREACHED */
}
-int
-AcrGetSockaddrIp(char *buf, int buflen, acr_sockaddr_t *sockaddr)
+static int
+sockaddr_to_ipstr(char *buf, int buflen, acr_sockaddr_t *sockaddr)
{
if (AcrInetNtop(sockaddr->family, sockaddr->ipaddr, buf, buflen) == 0)
return ACR_GET_OS_ERROR();
@@ -472,7 +472,7 @@ sockaddr_vars_set(acr_sockaddr_t *addr,
static int
call_resolver(acr_sockaddr_t **sa, const char *hostname,
const char *servname,
- int family, int port, int flags)
+ int family, int port)
{
struct addrinfo hints, *ai, *ai_list;
acr_sockaddr_t *new_sa;
@@ -531,26 +531,24 @@ call_resolver(acr_sockaddr_t **sa, const
ai = ai_list;
while (ai != 0) {
- if (ai->ai_family != AF_INET && ai->ai_family != AF_INET6) {
- ai = ai->ai_next;
- continue;
- }
- ai_cnt++;
+ if (ai->ai_family == AF_INET || ai->ai_family == AF_INET6)
+ ai_cnt++;
ai = ai->ai_next;
}
if (ai_cnt == 0) {
- /* No inet addresses found
+ /* No inet/inet6 addresses found
*/
return ACR_ENOENT;
}
new_sa = calloc(ai_len, ai_cnt);
- if (sa == 0)
+ if (new_sa == 0)
return ACR_ENOMEM;
ai = ai_list;
while (ai) {
/* Ignore anything bogus: getaddrinfo in some old versions of
* glibc will return AF_LOCAL entries for APR_UNSPEC+AI_PASSIVE
- * lookups. */
+ * lookups.
+ */
if (ai->ai_family != AF_INET && ai->ai_family != AF_INET6) {
ai = ai->ai_next;
continue;
@@ -574,30 +572,30 @@ call_resolver(acr_sockaddr_t **sa, const
return 0;
}
-int
-AcrFindAddresses(acr_sockaddr_t **sa, const char *hostname,
+static int
+find_addresses(acr_sockaddr_t **sa, const char *hostname,
const char *servname, int family, int port, int flags)
{
if (flags & ACR_IPV4_ADDR_OK) {
- int rc = call_resolver(sa, hostname, servname, AF_INET, port, flags);
+ int rc = call_resolver(sa, hostname, servname, AF_INET, port);
if (rc != 0)
family = AF_INET6; /* try again */
else
return 0;
}
else if (flags & ACR_IPV6_ADDR_OK) {
- int rc = call_resolver(sa, hostname, servname, AF_INET6, port, flags);
+ int rc = call_resolver(sa, hostname, servname, AF_INET6, port);
if (rc != 0)
family = AF_INET; /* try again */
else
return 0;
}
- return call_resolver(sa, hostname, servname, family, port, flags);
+ return call_resolver(sa, hostname, servname, family, port);
}
#define GETHOSTBYNAME_BUFLEN 512
-int
-AcrGetNameInfo(const char **hostname, acr_sockaddr_t *sockaddr, int flags)
+static int
+get_hostname(const char **hostname, acr_sockaddr_t *sockaddr, int flags)
{
int rc;
char tmphostname[NI_MAXHOST];
@@ -662,8 +660,8 @@ AcrGetNameInfo(const char **hostname, ac
return 0;
}
-int
-AcrGetServInfo(const char **servname, acr_sockaddr_t *sockaddr, int flags)
+static int
+get_servname(const char **servname, acr_sockaddr_t *sockaddr, int flags)
{
int rc;
char tmpservname[NI_MAXSERV];
@@ -747,11 +745,6 @@ sockaddr_to_byte_array(JNI_STDENV, acr_s
#define SOCKADDR_RELEASE(BA, SA) \
AcrReleaseArrayCritical(env, (BA), (SA))
-ACR_NET_EXPORT(jint, EndpointAddress, init0)(JNI_STDARGS)
-{
- return ISIZEOF(acr_sockaddr_t);
-}
-
ACR_NET_EXPORT(jint, EndpointAddress, family0)(JNI_STDARGS, jbyteArray a)
{
jint rv = -1;
@@ -784,7 +777,7 @@ ACR_NET_EXPORT(jstring, EndpointAddress,
if (sa->hostname[0] == '\0') {
/* Return IP address representation
*/
- if (AcrGetSockaddrIp(buf, 256, sa) == 0)
+ if (sockaddr_to_ipstr(buf, 256, sa) == 0)
name = buf;
}
else
@@ -874,6 +867,11 @@ ACR_NET_EXPORT(jbyteArray, LocalEndpoint
return ba;
}
+ACR_NET_EXPORT(jint, IPSocketAddress, size0)(JNI_STDARGS)
+{
+ return ISIZEOF(acr_sockaddr_t);
+}
+
ACR_NET_EXPORT(jstring, SocketAddress, hostname0)(JNI_STDARGS, jbyteArray a)
{
jstring rv = 0;
@@ -884,7 +882,7 @@ ACR_NET_EXPORT(jstring, SocketAddress, h
rv = AcrNewJavaStringA(env, sa->hostname);
else {
char buf[256];
- if (AcrGetSockaddrIp(buf, 256, sa) == 0)
+ if (sockaddr_to_ipstr(buf, 256, sa) == 0)
rv = AcrNewJavaStringA(env, buf);
}
}
@@ -900,12 +898,12 @@ ACR_NET_EXPORT(jstring, SocketAddress, h
acr_sockaddr_t *sa = SOCKADDR_CAST(a);
if (sa != 0) {
- rc = AcrGetNameInfo(&host, sa, 0);
+ rc = get_hostname(&host, sa, 0);
if (rc == 0)
rv = AcrNewJavaStringA(env, host);
else {
char buf[256];
- if (AcrGetSockaddrIp(buf, 256, sa) == 0)
+ if (sockaddr_to_ipstr(buf, 256, sa) == 0)
rv = AcrNewJavaStringA(env, buf);
}
}
@@ -924,7 +922,7 @@ ACR_NET_EXPORT(jstring, SocketAddress, s
if (sa->servname != '\0')
rv = AcrNewJavaStringA(env, sa->servname);
else {
- rc = AcrGetServInfo(&serv, sa, 0);
+ rc = get_servname(&serv, sa, 0);
if (rc == 0)
rv = AcrNewJavaStringA(env, serv);
}
@@ -940,7 +938,7 @@ ACR_NET_EXPORT(jstring, SocketAddress, i
acr_sockaddr_t *sa = SOCKADDR_CAST(a);
if (sa != 0) {
- if (AcrGetSockaddrIp(buf, 256, sa) == 0)
+ if (sockaddr_to_ipstr(buf, 256, sa) == 0)
rv = AcrNewJavaStringA(env, buf);
}
SOCKADDR_RELEASE(a, sa);
@@ -958,28 +956,31 @@ ACR_NET_EXPORT(jint, SocketAddress, port
return rv;
}
-ACR_NET_EXPORT(jbyteArray, SocketAddress, sockaddr0)(JNI_STDARGS, jstring hostname,
- jstring servname,
- jint family, jint port, jint flags)
+ACR_NET_EXPORT(jbyteArray, SocketAddressImpl, sockaddr0)(JNI_STDARGS,
+ jstring hostname,
+ jstring servname,
+ jint jfamily,
+ jint port,
+ jint flags)
{
acr_sockaddr_t *sa = 0;
- int ffamily;
+ int family;
int rc = 0;
- switch (family) {
+ switch (jfamily) {
case 1:
- ffamily = AF_INET;
+ family = AF_INET;
break;
case 2:
- ffamily = AF_INET6;
+ family = AF_INET6;
break;
default:
- ffamily = AF_UNSPEC;
+ family = AF_UNSPEC;
break;
}
WITH_CSTR(hostname) {
WITH_CSTR(servname) {
- rc = AcrFindAddresses(&sa, J2S(hostname), J2S(servname), ffamily, port, flags);
+ rc = find_addresses(&sa, J2S(hostname), J2S(servname), family, port, flags);
} DONE_WITH_STR(servname);
} DONE_WITH_STR(hostname);