Merge IPUtil and NetworkConstants into IpAddresses and also make naming of methods consistent
This commit is contained in:
parent
213c1e3d23
commit
5d13c7d27b
|
@ -17,7 +17,7 @@ package io.netty.handler.codec.socks;
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import io.netty.util.CharsetUtil;
|
import io.netty.util.CharsetUtil;
|
||||||
import io.netty.util.IPUtil;
|
import io.netty.util.IpAddresses;
|
||||||
|
|
||||||
import java.net.IDN;
|
import java.net.IDN;
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ public final class SocksCmdRequest extends SocksRequest {
|
||||||
}
|
}
|
||||||
switch (addressType) {
|
switch (addressType) {
|
||||||
case IPv4:
|
case IPv4:
|
||||||
if (!IPUtil.isValidIPV4Address(host)) {
|
if (!IpAddresses.isValidIpV4Address(host)) {
|
||||||
throw new IllegalArgumentException(host + " is not a valid IPv4 address");
|
throw new IllegalArgumentException(host + " is not a valid IPv4 address");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -56,7 +56,7 @@ public final class SocksCmdRequest extends SocksRequest {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case IPv6:
|
case IPv6:
|
||||||
if (!IPUtil.isValidIP6Address(host)) {
|
if (!IpAddresses.isValidIp6Address(host)) {
|
||||||
throw new IllegalArgumentException(host + " is not a valid IPv6 address");
|
throw new IllegalArgumentException(host + " is not a valid IPv6 address");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -116,7 +116,7 @@ public final class SocksCmdRequest extends SocksRequest {
|
||||||
byteBuf.writeByte(addressType.getByteValue());
|
byteBuf.writeByte(addressType.getByteValue());
|
||||||
switch (addressType) {
|
switch (addressType) {
|
||||||
case IPv4: {
|
case IPv4: {
|
||||||
byteBuf.writeBytes(IPUtil.createByteArrayFromIPAddressString(host));
|
byteBuf.writeBytes(IpAddresses.createByteArrayFromIpAddressString(host));
|
||||||
byteBuf.writeShort(port);
|
byteBuf.writeShort(port);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -129,7 +129,7 @@ public final class SocksCmdRequest extends SocksRequest {
|
||||||
}
|
}
|
||||||
|
|
||||||
case IPv6: {
|
case IPv6: {
|
||||||
byteBuf.writeBytes(IPUtil.createByteArrayFromIPAddressString(host));
|
byteBuf.writeBytes(IpAddresses.createByteArrayFromIpAddressString(host));
|
||||||
byteBuf.writeShort(port);
|
byteBuf.writeShort(port);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,31 +15,183 @@
|
||||||
*/
|
*/
|
||||||
package io.netty.util;
|
package io.netty.util;
|
||||||
|
|
||||||
|
import io.netty.logging.InternalLogger;
|
||||||
|
import io.netty.logging.InternalLoggerFactory;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.net.InetSocketAddress;
|
||||||
|
import java.net.NetworkInterface;
|
||||||
|
import java.net.ServerSocket;
|
||||||
|
import java.net.Socket;
|
||||||
|
import java.net.SocketException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Enumeration;
|
||||||
import java.util.StringTokenizer;
|
import java.util.StringTokenizer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utility functions for IPV6 operations.
|
* A class that holds a number of network-related constants.
|
||||||
*
|
*
|
||||||
* see Inet6Util from the Apache Harmony project
|
* This class borrowed some of its methods from a modified fork of the
|
||||||
*
|
* <a href="http://svn.apache.org/repos/asf/harmony/enhanced/java/branches/java6/classlib/modules/luni/
|
||||||
* see org.apache.harmony.util.Inet6Util
|
* src/main/java/org/apache/harmony/luni/util/Inet6Util.java">Inet6Util class</a> which was part of Apache Harmony.
|
||||||
*/
|
*/
|
||||||
public final class IPUtil {
|
public final class IpAddresses {
|
||||||
|
|
||||||
private IPUtil() {
|
/**
|
||||||
// make this class a an utility class non-instantiable
|
* The {@link InetAddress} representing the host machine
|
||||||
|
*
|
||||||
|
* We cache this because some machines take almost forever to return from
|
||||||
|
* {@link InetAddress}.getLocalHost(). This may be due to incorrect
|
||||||
|
* configuration of the hosts and DNS client configuration files.
|
||||||
|
*/
|
||||||
|
public static final InetAddress LOCALHOST;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The loopback {@link NetworkInterface} on the current machine
|
||||||
|
*/
|
||||||
|
public static final NetworkInterface LOOPBACK_IF;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The SOMAXCONN value of the current machine. If failed to get the value, 3072 is used as a
|
||||||
|
* default value.
|
||||||
|
*/
|
||||||
|
public static final int SOMAXCONN;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The logger being used by this class
|
||||||
|
*/
|
||||||
|
private static final InternalLogger logger =
|
||||||
|
InternalLoggerFactory.getInstance(IpAddresses.class);
|
||||||
|
|
||||||
|
static {
|
||||||
|
|
||||||
|
//Start the process of discovering localhost
|
||||||
|
InetAddress localhost;
|
||||||
|
try {
|
||||||
|
localhost = InetAddress.getLocalHost();
|
||||||
|
validateHost(localhost);
|
||||||
|
} catch (IOException e) {
|
||||||
|
// The default local host names did not work. Try hard-coded IPv4 address.
|
||||||
|
try {
|
||||||
|
localhost = InetAddress.getByAddress(new byte[] { 127, 0, 0, 1 });
|
||||||
|
validateHost(localhost);
|
||||||
|
} catch (IOException e1) {
|
||||||
|
// The hard-coded IPv4 address did not work. Try hard coded IPv6 address.
|
||||||
|
try {
|
||||||
|
localhost = InetAddress.getByAddress(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 });
|
||||||
|
validateHost(localhost);
|
||||||
|
} catch (IOException e2) {
|
||||||
|
throw new Error("Failed to resolve localhost - incorrect network configuration?", e2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LOCALHOST = localhost;
|
||||||
|
|
||||||
|
//Prepare to get the local NetworkInterface
|
||||||
|
NetworkInterface loopbackInterface;
|
||||||
|
|
||||||
|
try {
|
||||||
|
//Automatically get the loopback interface
|
||||||
|
loopbackInterface = NetworkInterface.getByInetAddress(LOCALHOST);
|
||||||
|
} catch (SocketException e) {
|
||||||
|
//No? Alright. There is a backup!
|
||||||
|
loopbackInterface = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Check to see if a network interface was not found
|
||||||
|
if (loopbackInterface == null) {
|
||||||
|
try {
|
||||||
|
//Start iterating over all network interfaces
|
||||||
|
for (Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
|
||||||
|
interfaces.hasMoreElements();) {
|
||||||
|
//Get the "next" interface
|
||||||
|
NetworkInterface networkInterface = interfaces.nextElement();
|
||||||
|
|
||||||
|
//Check to see if the interface is a loopback interface
|
||||||
|
if (networkInterface.isLoopback()) {
|
||||||
|
//Phew! The loopback interface was found.
|
||||||
|
loopbackInterface = networkInterface;
|
||||||
|
//No need to keep iterating
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (SocketException e) {
|
||||||
|
//Nope. Can't do anything else, sorry!
|
||||||
|
logger.error("Failed to enumerate network interfaces", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Set the loopback interface constant
|
||||||
|
LOOPBACK_IF = loopbackInterface;
|
||||||
|
|
||||||
|
int somaxconn = 3072;
|
||||||
|
BufferedReader in = null;
|
||||||
|
try {
|
||||||
|
in = new BufferedReader(new FileReader("/proc/sys/net/core/somaxconn"));
|
||||||
|
somaxconn = Integer.parseInt(in.readLine());
|
||||||
|
} catch (Exception e) {
|
||||||
|
// Failed to get SOMAXCONN
|
||||||
|
} finally {
|
||||||
|
if (in != null) {
|
||||||
|
try {
|
||||||
|
in.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
// Ignored.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SOMAXCONN = somaxconn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void validateHost(InetAddress host) throws IOException {
|
||||||
|
ServerSocket ss = null;
|
||||||
|
Socket s1 = null;
|
||||||
|
Socket s2 = null;
|
||||||
|
try {
|
||||||
|
ss = new ServerSocket();
|
||||||
|
ss.setReuseAddress(false);
|
||||||
|
ss.bind(new InetSocketAddress(host, 0));
|
||||||
|
s1 = new Socket(host, ss.getLocalPort());
|
||||||
|
s2 = ss.accept();
|
||||||
|
} finally {
|
||||||
|
if (s2 != null) {
|
||||||
|
try {
|
||||||
|
s2.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
// Ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (s1 != null) {
|
||||||
|
try {
|
||||||
|
s1.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
// Ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ss != null) {
|
||||||
|
try {
|
||||||
|
ss.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
// Ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an byte[] based on an ipAddressString. No error handling is
|
* Creates an byte[] based on an ipAddressString. No error handling is
|
||||||
* performed here.
|
* performed here.
|
||||||
*/
|
*/
|
||||||
public static byte[] createByteArrayFromIPAddressString(
|
public static byte[] createByteArrayFromIpAddressString(
|
||||||
String ipAddressString) {
|
String ipAddressString) {
|
||||||
|
|
||||||
if (isValidIPV4Address(ipAddressString)) {
|
if (isValidIpV4Address(ipAddressString)) {
|
||||||
StringTokenizer tokenizer = new StringTokenizer(ipAddressString,
|
StringTokenizer tokenizer = new StringTokenizer(ipAddressString,
|
||||||
".");
|
".");
|
||||||
String token;
|
String token;
|
||||||
|
@ -155,7 +307,7 @@ public final class IPUtil {
|
||||||
|
|
||||||
/** Converts a 4 character hex word into a 2 byte word equivalent */
|
/** Converts a 4 character hex word into a 2 byte word equivalent */
|
||||||
private static void convertToBytes(String hexWord, byte[] ipByteArray,
|
private static void convertToBytes(String hexWord, byte[] ipByteArray,
|
||||||
int byteIndex) {
|
int byteIndex) {
|
||||||
|
|
||||||
int hexWordLength = hexWord.length();
|
int hexWordLength = hexWord.length();
|
||||||
int hexWordIndex = 0;
|
int hexWordIndex = 0;
|
||||||
|
@ -229,7 +381,7 @@ public final class IPUtil {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isValidIP6Address(String ipAddress) {
|
public static boolean isValidIp6Address(String ipAddress) {
|
||||||
int length = ipAddress.length();
|
int length = ipAddress.length();
|
||||||
boolean doubleColon = false;
|
boolean doubleColon = false;
|
||||||
int numberOfColons = 0;
|
int numberOfColons = 0;
|
||||||
|
@ -279,7 +431,7 @@ public final class IPUtil {
|
||||||
if (numberOfPeriods > 3) {
|
if (numberOfPeriods > 3) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!isValidIP4Word(word.toString())) {
|
if (!isValidIp4Word(word.toString())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (numberOfColons != 6 && !doubleColon) {
|
if (numberOfColons != 6 && !doubleColon) {
|
||||||
|
@ -354,7 +506,7 @@ public final class IPUtil {
|
||||||
|
|
||||||
// Check if we have an IPv4 ending
|
// Check if we have an IPv4 ending
|
||||||
if (numberOfPeriods > 0) {
|
if (numberOfPeriods > 0) {
|
||||||
if (numberOfPeriods != 3 || !isValidIP4Word(word.toString())) {
|
if (numberOfPeriods != 3 || !isValidIp4Word(word.toString())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -378,7 +530,7 @@ public final class IPUtil {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isValidIP4Word(String word) {
|
public static boolean isValidIp4Word(String word) {
|
||||||
char c;
|
char c;
|
||||||
if (word.length() < 1 || word.length() > 3) {
|
if (word.length() < 1 || word.length() > 3) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -406,7 +558,7 @@ public final class IPUtil {
|
||||||
* @return true, if the string represents an IPV4 address in dotted
|
* @return true, if the string represents an IPV4 address in dotted
|
||||||
* notation, false otherwise
|
* notation, false otherwise
|
||||||
*/
|
*/
|
||||||
public static boolean isValidIPV4Address(String value) {
|
public static boolean isValidIpV4Address(String value) {
|
||||||
|
|
||||||
int periods = 0;
|
int periods = 0;
|
||||||
int i;
|
int i;
|
||||||
|
@ -450,4 +602,10 @@ public final class IPUtil {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A constructor to stop this class being constructed.
|
||||||
|
*/
|
||||||
|
private IpAddresses() {
|
||||||
|
// Unused
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,185 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2012 The Netty Project
|
|
||||||
*
|
|
||||||
* The Netty Project 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 io.netty.util;
|
|
||||||
|
|
||||||
import io.netty.logging.InternalLogger;
|
|
||||||
import io.netty.logging.InternalLoggerFactory;
|
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.FileReader;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.net.InetAddress;
|
|
||||||
import java.net.InetSocketAddress;
|
|
||||||
import java.net.NetworkInterface;
|
|
||||||
import java.net.ServerSocket;
|
|
||||||
import java.net.Socket;
|
|
||||||
import java.net.SocketException;
|
|
||||||
import java.util.Enumeration;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A class that holds a number of network-related constants.
|
|
||||||
*/
|
|
||||||
public final class NetworkConstants {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The {@link InetAddress} representing the host machine
|
|
||||||
*
|
|
||||||
* We cache this because some machines take almost forever to return from
|
|
||||||
* {@link InetAddress}.getLocalHost(). This may be due to incorrect
|
|
||||||
* configuration of the hosts and DNS client configuration files.
|
|
||||||
*/
|
|
||||||
public static final InetAddress LOCALHOST;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The loopback {@link NetworkInterface} on the current machine
|
|
||||||
*/
|
|
||||||
public static final NetworkInterface LOOPBACK_IF;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The SOMAXCONN value of the current machine. If failed to get the value, 3072 is used as a
|
|
||||||
* default value.
|
|
||||||
*/
|
|
||||||
public static final int SOMAXCONN;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The logger being used by this class
|
|
||||||
*/
|
|
||||||
private static final InternalLogger logger =
|
|
||||||
InternalLoggerFactory.getInstance(NetworkConstants.class);
|
|
||||||
|
|
||||||
static {
|
|
||||||
//Start the process of discovering localhost
|
|
||||||
InetAddress localhost;
|
|
||||||
try {
|
|
||||||
localhost = InetAddress.getLocalHost();
|
|
||||||
validateHost(localhost);
|
|
||||||
} catch (IOException e) {
|
|
||||||
// The default local host names did not work. Try hard-coded IPv4 address.
|
|
||||||
try {
|
|
||||||
localhost = InetAddress.getByAddress(new byte[] { 127, 0, 0, 1 });
|
|
||||||
validateHost(localhost);
|
|
||||||
} catch (IOException e1) {
|
|
||||||
// The hard-coded IPv4 address did not work. Try hard coded IPv6 address.
|
|
||||||
try {
|
|
||||||
localhost = InetAddress.getByAddress(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 });
|
|
||||||
validateHost(localhost);
|
|
||||||
} catch (IOException e2) {
|
|
||||||
throw new Error("Failed to resolve localhost - incorrect network configuration?", e2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
LOCALHOST = localhost;
|
|
||||||
|
|
||||||
//Prepare to get the local NetworkInterface
|
|
||||||
NetworkInterface loopbackInterface;
|
|
||||||
|
|
||||||
try {
|
|
||||||
//Automatically get the loopback interface
|
|
||||||
loopbackInterface = NetworkInterface.getByInetAddress(LOCALHOST);
|
|
||||||
} catch (SocketException e) {
|
|
||||||
//No? Alright. There is a backup!
|
|
||||||
loopbackInterface = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Check to see if a network interface was not found
|
|
||||||
if (loopbackInterface == null) {
|
|
||||||
try {
|
|
||||||
//Start iterating over all network interfaces
|
|
||||||
for (Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
|
|
||||||
interfaces.hasMoreElements();) {
|
|
||||||
//Get the "next" interface
|
|
||||||
NetworkInterface networkInterface = interfaces.nextElement();
|
|
||||||
|
|
||||||
//Check to see if the interface is a loopback interface
|
|
||||||
if (networkInterface.isLoopback()) {
|
|
||||||
//Phew! The loopback interface was found.
|
|
||||||
loopbackInterface = networkInterface;
|
|
||||||
//No need to keep iterating
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (SocketException e) {
|
|
||||||
//Nope. Can't do anything else, sorry!
|
|
||||||
logger.error("Failed to enumerate network interfaces", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Set the loopback interface constant
|
|
||||||
LOOPBACK_IF = loopbackInterface;
|
|
||||||
|
|
||||||
int somaxconn = 3072;
|
|
||||||
BufferedReader in = null;
|
|
||||||
try {
|
|
||||||
in = new BufferedReader(new FileReader("/proc/sys/net/core/somaxconn"));
|
|
||||||
somaxconn = Integer.parseInt(in.readLine());
|
|
||||||
} catch (Exception e) {
|
|
||||||
// Failed to get SOMAXCONN
|
|
||||||
} finally {
|
|
||||||
if (in != null) {
|
|
||||||
try {
|
|
||||||
in.close();
|
|
||||||
} catch (Exception e) {
|
|
||||||
// Ignored.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SOMAXCONN = somaxconn;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void validateHost(InetAddress host) throws IOException {
|
|
||||||
ServerSocket ss = null;
|
|
||||||
Socket s1 = null;
|
|
||||||
Socket s2 = null;
|
|
||||||
try {
|
|
||||||
ss = new ServerSocket();
|
|
||||||
ss.setReuseAddress(false);
|
|
||||||
ss.bind(new InetSocketAddress(host, 0));
|
|
||||||
s1 = new Socket(host, ss.getLocalPort());
|
|
||||||
s2 = ss.accept();
|
|
||||||
} finally {
|
|
||||||
if (s2 != null) {
|
|
||||||
try {
|
|
||||||
s2.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
// Ignore
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (s1 != null) {
|
|
||||||
try {
|
|
||||||
s1.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
// Ignore
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (ss != null) {
|
|
||||||
try {
|
|
||||||
ss.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
// Ignore
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A constructor to stop this class being constructed.
|
|
||||||
*/
|
|
||||||
private NetworkConstants() {
|
|
||||||
// Unused
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -19,16 +19,16 @@ import org.junit.Test;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
public class NetworkConstantsTest {
|
public class IpAddressesTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testLocalhost() {
|
public void testLocalhost() {
|
||||||
assertNotNull(NetworkConstants.LOCALHOST);
|
assertNotNull(IpAddresses.LOCALHOST);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testLoopback() {
|
public void testLoopback() {
|
||||||
assertNotNull(NetworkConstants.LOOPBACK_IF);
|
assertNotNull(IpAddresses.LOOPBACK_IF);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -20,7 +20,7 @@ import io.netty.logging.InternalLogger;
|
||||||
import io.netty.logging.InternalLoggerFactory;
|
import io.netty.logging.InternalLoggerFactory;
|
||||||
import io.netty.testsuite.transport.socket.SocketTestPermutation.Factory;
|
import io.netty.testsuite.transport.socket.SocketTestPermutation.Factory;
|
||||||
import io.netty.testsuite.util.TestUtils;
|
import io.netty.testsuite.util.TestUtils;
|
||||||
import io.netty.util.NetworkConstants;
|
import io.netty.util.IpAddresses;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
@ -47,7 +47,7 @@ public abstract class AbstractClientSocketTest {
|
||||||
for (Factory<Bootstrap> e: COMBO) {
|
for (Factory<Bootstrap> e: COMBO) {
|
||||||
cb = e.newInstance();
|
cb = e.newInstance();
|
||||||
addr = new InetSocketAddress(
|
addr = new InetSocketAddress(
|
||||||
NetworkConstants.LOCALHOST, TestUtils.getFreePort());
|
IpAddresses.LOCALHOST, TestUtils.getFreePort());
|
||||||
cb.remoteAddress(addr);
|
cb.remoteAddress(addr);
|
||||||
|
|
||||||
logger.info(String.format(
|
logger.info(String.format(
|
||||||
|
|
|
@ -21,7 +21,8 @@ import io.netty.logging.InternalLogger;
|
||||||
import io.netty.logging.InternalLoggerFactory;
|
import io.netty.logging.InternalLoggerFactory;
|
||||||
import io.netty.testsuite.transport.socket.SocketTestPermutation.Factory;
|
import io.netty.testsuite.transport.socket.SocketTestPermutation.Factory;
|
||||||
import io.netty.testsuite.util.TestUtils;
|
import io.netty.testsuite.util.TestUtils;
|
||||||
import io.netty.util.NetworkConstants;
|
import io.netty.util.IpAddresses;
|
||||||
|
|
||||||
import org.junit.Rule;
|
import org.junit.Rule;
|
||||||
import org.junit.rules.TestName;
|
import org.junit.rules.TestName;
|
||||||
|
|
||||||
|
@ -51,7 +52,7 @@ public abstract class AbstractDatagramTest {
|
||||||
sb = e.getKey().newInstance();
|
sb = e.getKey().newInstance();
|
||||||
cb = e.getValue().newInstance();
|
cb = e.getValue().newInstance();
|
||||||
addr = new InetSocketAddress(
|
addr = new InetSocketAddress(
|
||||||
NetworkConstants.LOCALHOST, TestUtils.getFreePort());
|
IpAddresses.LOCALHOST, TestUtils.getFreePort());
|
||||||
sb.localAddress(addr);
|
sb.localAddress(addr);
|
||||||
cb.localAddress(0).remoteAddress(addr);
|
cb.localAddress(0).remoteAddress(addr);
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ import io.netty.logging.InternalLogger;
|
||||||
import io.netty.logging.InternalLoggerFactory;
|
import io.netty.logging.InternalLoggerFactory;
|
||||||
import io.netty.testsuite.transport.socket.SocketTestPermutation.Factory;
|
import io.netty.testsuite.transport.socket.SocketTestPermutation.Factory;
|
||||||
import io.netty.testsuite.util.TestUtils;
|
import io.netty.testsuite.util.TestUtils;
|
||||||
import io.netty.util.NetworkConstants;
|
import io.netty.util.IpAddresses;
|
||||||
import org.junit.Rule;
|
import org.junit.Rule;
|
||||||
import org.junit.rules.TestName;
|
import org.junit.rules.TestName;
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ public abstract class AbstractSctpTest {
|
||||||
sb = e.getKey().newInstance();
|
sb = e.getKey().newInstance();
|
||||||
cb = e.getValue().newInstance();
|
cb = e.getValue().newInstance();
|
||||||
addr = new InetSocketAddress(
|
addr = new InetSocketAddress(
|
||||||
NetworkConstants.LOCALHOST, TestUtils.getFreePort());
|
IpAddresses.LOCALHOST, TestUtils.getFreePort());
|
||||||
sb.localAddress(addr);
|
sb.localAddress(addr);
|
||||||
cb.remoteAddress(addr);
|
cb.remoteAddress(addr);
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,8 @@ import io.netty.logging.InternalLogger;
|
||||||
import io.netty.logging.InternalLoggerFactory;
|
import io.netty.logging.InternalLoggerFactory;
|
||||||
import io.netty.testsuite.transport.socket.SocketTestPermutation.Factory;
|
import io.netty.testsuite.transport.socket.SocketTestPermutation.Factory;
|
||||||
import io.netty.testsuite.util.TestUtils;
|
import io.netty.testsuite.util.TestUtils;
|
||||||
import io.netty.util.NetworkConstants;
|
import io.netty.util.IpAddresses;
|
||||||
|
|
||||||
import org.junit.Rule;
|
import org.junit.Rule;
|
||||||
import org.junit.rules.TestName;
|
import org.junit.rules.TestName;
|
||||||
|
|
||||||
|
@ -46,7 +47,7 @@ public abstract class AbstractServerSocketTest {
|
||||||
for (Factory<ServerBootstrap> e: COMBO) {
|
for (Factory<ServerBootstrap> e: COMBO) {
|
||||||
sb = e.newInstance();
|
sb = e.newInstance();
|
||||||
addr = new InetSocketAddress(
|
addr = new InetSocketAddress(
|
||||||
NetworkConstants.LOCALHOST, TestUtils.getFreePort());
|
IpAddresses.LOCALHOST, TestUtils.getFreePort());
|
||||||
sb.localAddress(addr);
|
sb.localAddress(addr);
|
||||||
|
|
||||||
logger.info(String.format(
|
logger.info(String.format(
|
||||||
|
|
|
@ -21,7 +21,8 @@ import io.netty.logging.InternalLogger;
|
||||||
import io.netty.logging.InternalLoggerFactory;
|
import io.netty.logging.InternalLoggerFactory;
|
||||||
import io.netty.testsuite.transport.socket.SocketTestPermutation.Factory;
|
import io.netty.testsuite.transport.socket.SocketTestPermutation.Factory;
|
||||||
import io.netty.testsuite.util.TestUtils;
|
import io.netty.testsuite.util.TestUtils;
|
||||||
import io.netty.util.NetworkConstants;
|
import io.netty.util.IpAddresses;
|
||||||
|
|
||||||
import org.junit.Rule;
|
import org.junit.Rule;
|
||||||
import org.junit.rules.TestName;
|
import org.junit.rules.TestName;
|
||||||
|
|
||||||
|
@ -53,7 +54,7 @@ public abstract class AbstractSocketTest {
|
||||||
sb = e.getKey().newInstance();
|
sb = e.getKey().newInstance();
|
||||||
cb = e.getValue().newInstance();
|
cb = e.getValue().newInstance();
|
||||||
addr = new InetSocketAddress(
|
addr = new InetSocketAddress(
|
||||||
NetworkConstants.LOCALHOST, TestUtils.getFreePort());
|
IpAddresses.LOCALHOST, TestUtils.getFreePort());
|
||||||
sb.localAddress(addr);
|
sb.localAddress(addr);
|
||||||
cb.remoteAddress(addr);
|
cb.remoteAddress(addr);
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ import io.netty.channel.ChannelOption;
|
||||||
import io.netty.channel.socket.DatagramChannel;
|
import io.netty.channel.socket.DatagramChannel;
|
||||||
import io.netty.channel.socket.DatagramPacket;
|
import io.netty.channel.socket.DatagramPacket;
|
||||||
import io.netty.channel.socket.oio.OioDatagramChannel;
|
import io.netty.channel.socket.oio.OioDatagramChannel;
|
||||||
import io.netty.util.NetworkConstants;
|
import io.netty.util.IpAddresses;
|
||||||
import org.junit.Ignore;
|
import org.junit.Ignore;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
@ -56,9 +56,9 @@ public class DatagramMulticastTest extends AbstractDatagramTest {
|
||||||
|
|
||||||
cb.handler(mhandler);
|
cb.handler(mhandler);
|
||||||
|
|
||||||
sb.option(ChannelOption.IP_MULTICAST_IF, NetworkConstants.LOOPBACK_IF);
|
sb.option(ChannelOption.IP_MULTICAST_IF, IpAddresses.LOOPBACK_IF);
|
||||||
sb.option(ChannelOption.SO_REUSEADDR, true);
|
sb.option(ChannelOption.SO_REUSEADDR, true);
|
||||||
cb.option(ChannelOption.IP_MULTICAST_IF, NetworkConstants.LOOPBACK_IF);
|
cb.option(ChannelOption.IP_MULTICAST_IF, IpAddresses.LOOPBACK_IF);
|
||||||
cb.option(ChannelOption.SO_REUSEADDR, true);
|
cb.option(ChannelOption.SO_REUSEADDR, true);
|
||||||
cb.localAddress(addr.getPort());
|
cb.localAddress(addr.getPort());
|
||||||
|
|
||||||
|
@ -75,13 +75,13 @@ public class DatagramMulticastTest extends AbstractDatagramTest {
|
||||||
String group = "230.0.0.1";
|
String group = "230.0.0.1";
|
||||||
InetSocketAddress groupAddress = new InetSocketAddress(group, addr.getPort());
|
InetSocketAddress groupAddress = new InetSocketAddress(group, addr.getPort());
|
||||||
|
|
||||||
cc.joinGroup(groupAddress, NetworkConstants.LOOPBACK_IF).sync();
|
cc.joinGroup(groupAddress, IpAddresses.LOOPBACK_IF).sync();
|
||||||
|
|
||||||
sc.write(new DatagramPacket(Unpooled.copyInt(1), groupAddress)).sync();
|
sc.write(new DatagramPacket(Unpooled.copyInt(1), groupAddress)).sync();
|
||||||
assertTrue(mhandler.await());
|
assertTrue(mhandler.await());
|
||||||
|
|
||||||
// leave the group
|
// leave the group
|
||||||
cc.leaveGroup(groupAddress, NetworkConstants.LOOPBACK_IF).sync();
|
cc.leaveGroup(groupAddress, IpAddresses.LOOPBACK_IF).sync();
|
||||||
|
|
||||||
// sleep a second to make sure we left the group
|
// sleep a second to make sure we left the group
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
|
|
|
@ -29,7 +29,7 @@ import io.netty.channel.socket.SocketChannel;
|
||||||
import io.netty.handler.codec.spdy.SpdyConstants;
|
import io.netty.handler.codec.spdy.SpdyConstants;
|
||||||
import io.netty.handler.codec.spdy.SpdyFrameDecoder;
|
import io.netty.handler.codec.spdy.SpdyFrameDecoder;
|
||||||
import io.netty.handler.codec.spdy.SpdyFrameEncoder;
|
import io.netty.handler.codec.spdy.SpdyFrameEncoder;
|
||||||
import io.netty.util.NetworkConstants;
|
import io.netty.util.IpAddresses;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
|
@ -197,7 +197,7 @@ public class SocketSpdyEchoTest extends AbstractSocketTest {
|
||||||
Channel sc = sb.localAddress(0).bind().sync().channel();
|
Channel sc = sb.localAddress(0).bind().sync().channel();
|
||||||
int port = ((InetSocketAddress) sc.localAddress()).getPort();
|
int port = ((InetSocketAddress) sc.localAddress()).getPort();
|
||||||
|
|
||||||
Channel cc = cb.remoteAddress(NetworkConstants.LOCALHOST, port).connect().sync().channel();
|
Channel cc = cb.remoteAddress(IpAddresses.LOCALHOST, port).connect().sync().channel();
|
||||||
cc.write(frames);
|
cc.write(frames);
|
||||||
|
|
||||||
while (ch.counter < frames.writerIndex() - ignoredBytes) {
|
while (ch.counter < frames.writerIndex() - ignoredBytes) {
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package io.netty.testsuite.util;
|
package io.netty.testsuite.util;
|
||||||
|
|
||||||
import io.netty.util.NetworkConstants;
|
import io.netty.util.IpAddresses;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
|
@ -64,7 +64,7 @@ public final class TestUtils {
|
||||||
|
|
||||||
ss = new ServerSocket();
|
ss = new ServerSocket();
|
||||||
ss.setReuseAddress(false);
|
ss.setReuseAddress(false);
|
||||||
ss.bind(new InetSocketAddress(NetworkConstants.LOCALHOST, port));
|
ss.bind(new InetSocketAddress(IpAddresses.LOCALHOST, port));
|
||||||
ss.close();
|
ss.close();
|
||||||
|
|
||||||
return port;
|
return port;
|
||||||
|
|
|
@ -21,7 +21,7 @@ import io.netty.buffer.ByteBufAllocator;
|
||||||
import io.netty.channel.ChannelException;
|
import io.netty.channel.ChannelException;
|
||||||
import io.netty.channel.ChannelOption;
|
import io.netty.channel.ChannelOption;
|
||||||
import io.netty.channel.DefaultChannelConfig;
|
import io.netty.channel.DefaultChannelConfig;
|
||||||
import io.netty.util.NetworkConstants;
|
import io.netty.util.IpAddresses;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -36,7 +36,7 @@ import static com.sun.nio.sctp.SctpStandardSocketOptions.SO_SNDBUF;
|
||||||
public class DefaultSctpServerChannelConfig extends DefaultChannelConfig implements SctpServerChannelConfig {
|
public class DefaultSctpServerChannelConfig extends DefaultChannelConfig implements SctpServerChannelConfig {
|
||||||
|
|
||||||
private final SctpServerChannel serverChannel;
|
private final SctpServerChannel serverChannel;
|
||||||
private volatile int backlog = NetworkConstants.SOMAXCONN;
|
private volatile int backlog = IpAddresses.SOMAXCONN;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new instance.
|
* Creates a new instance.
|
||||||
|
|
|
@ -21,7 +21,7 @@ import io.netty.buffer.ByteBufAllocator;
|
||||||
import io.netty.channel.ChannelException;
|
import io.netty.channel.ChannelException;
|
||||||
import io.netty.channel.ChannelOption;
|
import io.netty.channel.ChannelOption;
|
||||||
import io.netty.channel.DefaultChannelConfig;
|
import io.netty.channel.DefaultChannelConfig;
|
||||||
import io.netty.util.NetworkConstants;
|
import io.netty.util.IpAddresses;
|
||||||
|
|
||||||
import java.net.ServerSocket;
|
import java.net.ServerSocket;
|
||||||
import java.net.SocketException;
|
import java.net.SocketException;
|
||||||
|
@ -34,7 +34,7 @@ public class DefaultServerSocketChannelConfig extends DefaultChannelConfig
|
||||||
implements ServerSocketChannelConfig {
|
implements ServerSocketChannelConfig {
|
||||||
|
|
||||||
private final ServerSocket socket;
|
private final ServerSocket socket;
|
||||||
private volatile int backlog = NetworkConstants.SOMAXCONN;
|
private volatile int backlog = IpAddresses.SOMAXCONN;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new instance.
|
* Creates a new instance.
|
||||||
|
|
|
@ -22,7 +22,7 @@ import io.netty.channel.ChannelException;
|
||||||
import io.netty.channel.ChannelOption;
|
import io.netty.channel.ChannelOption;
|
||||||
import io.netty.channel.DefaultChannelConfig;
|
import io.netty.channel.DefaultChannelConfig;
|
||||||
import io.netty.channel.socket.ServerSocketChannelConfig;
|
import io.netty.channel.socket.ServerSocketChannelConfig;
|
||||||
import io.netty.util.NetworkConstants;
|
import io.netty.util.IpAddresses;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.SocketOption;
|
import java.net.SocketOption;
|
||||||
|
@ -38,6 +38,7 @@ import java.util.concurrent.atomic.AtomicReference;
|
||||||
final class AioServerSocketChannelConfig extends DefaultChannelConfig
|
final class AioServerSocketChannelConfig extends DefaultChannelConfig
|
||||||
implements ServerSocketChannelConfig {
|
implements ServerSocketChannelConfig {
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
private final AtomicReference<AsynchronousServerSocketChannel> channel
|
private final AtomicReference<AsynchronousServerSocketChannel> channel
|
||||||
= new AtomicReference<AsynchronousServerSocketChannel>();
|
= new AtomicReference<AsynchronousServerSocketChannel>();
|
||||||
private volatile int backlog = NetworkConstants.SOMAXCONN;
|
private volatile int backlog = NetworkConstants.SOMAXCONN;
|
||||||
|
@ -53,6 +54,10 @@ final class AioServerSocketChannelConfig extends DefaultChannelConfig
|
||||||
*/
|
*/
|
||||||
AioServerSocketChannelConfig() {
|
AioServerSocketChannelConfig() {
|
||||||
}
|
}
|
||||||
|
=======
|
||||||
|
private final AsynchronousServerSocketChannel channel;
|
||||||
|
private volatile int backlog = IpAddresses.SOMAXCONN;
|
||||||
|
>>>>>>> 9e370a3... Merge IPUtil and NetworkConstants into IpAddresses and also make naming of methods consistent
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new instance with the given {@link AsynchronousServerSocketChannel} assigned to it.
|
* Creates a new instance with the given {@link AsynchronousServerSocketChannel} assigned to it.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user