Package org.apache.sshd.common.util.net
Class SshdSocketAddress
- java.lang.Object
-
- java.net.SocketAddress
-
- org.apache.sshd.common.util.net.SshdSocketAddress
-
- All Implemented Interfaces:
java.io.Serializable
- Direct Known Subclasses:
LocalForwardingEntry
public class SshdSocketAddress extends java.net.SocketAddressA simple socket address holding the host name and port number. The reason it does not extend
InetSocketAddressis twofold:The
InetSocketAddressperforms a DNS resolution on the provided host name - which we don't want do use until we want to create a connection using this address (thus thetoInetSocketAddress()call which executes this queryIf empty host name is provided we replace it with the any address of 0.0.0.0
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringBROADCAST_ADDRESSstatic java.util.Comparator<java.net.InetAddress>BY_HOST_ADDRESSComparesInetAddress-es according to theirInetAddress.getHostAddress()value case insensitivestatic java.util.Comparator<java.net.SocketAddress>BY_HOST_AND_PORTComparesSocketAddress-es according to their host case insensitive and if equals, then according to their port value (if any)static java.lang.StringCARRIER_GRADE_NAT_PREFIXprivate java.lang.StringhostNamestatic java.lang.StringIPV4_ANYADDRstatic java.lang.StringIPV6_LONG_ANY_ADDRESSstatic java.lang.StringIPV6_LONG_LOCALHOSTstatic intIPV6_MAX_HEX_DIGITS_PER_GROUPMax.static intIPV6_MAX_HEX_GROUPSMax.static java.lang.StringIPV6_SHORT_ANY_ADDRESSstatic java.lang.StringIPV6_SHORT_LOCALHOSTstatic SshdSocketAddressLOCALHOST_ADDRESSA dummy placeholder that can be used instead ofnullsstatic java.lang.StringLOCALHOST_IPV4static java.lang.StringLOCALHOST_NAMEprivate intportstatic java.lang.StringPRIVATE_CLASS_A_PREFIXstatic java.lang.StringPRIVATE_CLASS_B_PREFIXstatic java.lang.StringPRIVATE_CLASS_C_PREFIXprivate static longserialVersionUIDstatic java.util.Set<java.lang.String>WELL_KNOWN_IPV4_ADDRESSESstatic java.util.Set<java.lang.String>WELL_KNOWN_IPV6_ADDRESSES
-
Constructor Summary
Constructors Constructor Description SshdSocketAddress(int port)SshdSocketAddress(java.lang.String hostName, int port)SshdSocketAddress(java.net.InetSocketAddress addr)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanequals(java.lang.Object o)static java.util.List<java.net.InetAddress>getExternalNetwork4Addresses()static java.net.InetAddressgetFirstExternalNetwork4Address()Returns the first external network address assigned to this machine or null if one is not found.java.lang.StringgetHostName()intgetPort()inthashCode()static booleanisCarrierGradeNatIPv4Address(java.lang.String addr)protected booleanisEquivalent(SshdSocketAddress that)static booleanisIPv4Address(java.lang.String addr)static booleanisIPv6Address(java.lang.String address)static booleanisLoopback(java.lang.String ip)static booleanisLoopback(java.net.InetAddress addr)static booleanisPrivateIPv4Address(java.lang.String addr)Checks if the address is one of the allocated private blocksstatic booleanisValidHostAddress(java.net.InetAddress addr)static booleanisValidIPv4AddressComponent(java.lang.CharSequence c)Checks if the provided argument is a valid IPv4 address component:static inttoAddressPort(java.net.SocketAddress addr)Attempts to resolve the port valuestatic java.lang.StringtoAddressString(java.net.InetAddress addr)static java.lang.StringtoAddressString(java.net.SocketAddress addr)java.net.InetSocketAddresstoInetSocketAddress()static java.net.InetSocketAddresstoInetSocketAddress(java.net.SocketAddress remoteAddress)Converts aSocketAddressinto anInetSocketAddressif possible:static SshdSocketAddresstoSshdSocketAddress(java.net.SocketAddress addr)java.lang.StringtoString()
-
-
-
Field Detail
-
LOCALHOST_NAME
public static final java.lang.String LOCALHOST_NAME
- See Also:
- Constant Field Values
-
LOCALHOST_IPV4
public static final java.lang.String LOCALHOST_IPV4
- See Also:
- Constant Field Values
-
IPV4_ANYADDR
public static final java.lang.String IPV4_ANYADDR
- See Also:
- Constant Field Values
-
WELL_KNOWN_IPV4_ADDRESSES
public static final java.util.Set<java.lang.String> WELL_KNOWN_IPV4_ADDRESSES
-
PRIVATE_CLASS_A_PREFIX
public static final java.lang.String PRIVATE_CLASS_A_PREFIX
- See Also:
- Constant Field Values
-
PRIVATE_CLASS_B_PREFIX
public static final java.lang.String PRIVATE_CLASS_B_PREFIX
- See Also:
- Constant Field Values
-
PRIVATE_CLASS_C_PREFIX
public static final java.lang.String PRIVATE_CLASS_C_PREFIX
- See Also:
- Constant Field Values
-
CARRIER_GRADE_NAT_PREFIX
public static final java.lang.String CARRIER_GRADE_NAT_PREFIX
- See Also:
- Constant Field Values
-
BROADCAST_ADDRESS
public static final java.lang.String BROADCAST_ADDRESS
- See Also:
- Constant Field Values
-
IPV6_MAX_HEX_GROUPS
public static final int IPV6_MAX_HEX_GROUPS
Max. number of hex groups (separated by ":") in an IPV6 address- See Also:
- Constant Field Values
-
IPV6_MAX_HEX_DIGITS_PER_GROUP
public static final int IPV6_MAX_HEX_DIGITS_PER_GROUP
Max. hex digits in each IPv6 group- See Also:
- Constant Field Values
-
IPV6_LONG_ANY_ADDRESS
public static final java.lang.String IPV6_LONG_ANY_ADDRESS
- See Also:
- Constant Field Values
-
IPV6_SHORT_ANY_ADDRESS
public static final java.lang.String IPV6_SHORT_ANY_ADDRESS
- See Also:
- Constant Field Values
-
IPV6_LONG_LOCALHOST
public static final java.lang.String IPV6_LONG_LOCALHOST
- See Also:
- Constant Field Values
-
IPV6_SHORT_LOCALHOST
public static final java.lang.String IPV6_SHORT_LOCALHOST
- See Also:
- Constant Field Values
-
WELL_KNOWN_IPV6_ADDRESSES
public static final java.util.Set<java.lang.String> WELL_KNOWN_IPV6_ADDRESSES
-
LOCALHOST_ADDRESS
public static final SshdSocketAddress LOCALHOST_ADDRESS
A dummy placeholder that can be used instead ofnulls
-
BY_HOST_ADDRESS
public static final java.util.Comparator<java.net.InetAddress> BY_HOST_ADDRESS
ComparesInetAddress-es according to theirInetAddress.getHostAddress()value case insensitive- See Also:
toAddressString(InetAddress)
-
BY_HOST_AND_PORT
public static final java.util.Comparator<java.net.SocketAddress> BY_HOST_AND_PORT
ComparesSocketAddress-es according to their host case insensitive and if equals, then according to their port value (if any)
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
hostName
private final java.lang.String hostName
-
port
private final int port
-
-
Method Detail
-
getHostName
public java.lang.String getHostName()
-
getPort
public int getPort()
-
toInetSocketAddress
public java.net.InetSocketAddress toInetSocketAddress()
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
isEquivalent
protected boolean isEquivalent(SshdSocketAddress that)
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equalsin classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
getFirstExternalNetwork4Address
public static java.net.InetAddress getFirstExternalNetwork4Address()
Returns the first external network address assigned to this machine or null if one is not found.- Returns:
- Inet4Address associated with an external interface DevNote: We actually return InetAddress here, as Inet4Addresses are final and cannot be mocked.
-
getExternalNetwork4Addresses
public static java.util.List<java.net.InetAddress> getExternalNetwork4Addresses()
- Returns:
- a
Listof local network addresses which are not multicast or localhost sorted according toBY_HOST_ADDRESS
-
isValidHostAddress
public static boolean isValidHostAddress(java.net.InetAddress addr)
- Parameters:
addr- TheInetAddressto be verified- Returns:
trueif the address is:- Not
null - An
Inet4Address - Not link local
- Not a multicast
- Not a loopback
- Not
- See Also:
InetAddress.isLinkLocalAddress(),InetAddress.isMulticastAddress(),InetAddress.isMulticastAddress()
-
isLoopback
public static boolean isLoopback(java.net.InetAddress addr)
- Parameters:
addr- TheInetAddressto be considered- Returns:
trueif the address is a loopback one. Note: ifInetAddress.isLoopbackAddress()returnsfalsethe address string is checked- See Also:
toAddressString(InetAddress),isLoopback(String)
-
isLoopback
public static boolean isLoopback(java.lang.String ip)
- Parameters:
ip- IP value to be tested- Returns:
trueif the IP is "localhost" or "127.x.x.x".
-
toSshdSocketAddress
public static SshdSocketAddress toSshdSocketAddress(java.net.SocketAddress addr)
-
toAddressString
public static java.lang.String toAddressString(java.net.SocketAddress addr)
-
toAddressPort
public static int toAddressPort(java.net.SocketAddress addr)
Attempts to resolve the port value- Parameters:
addr- TheSocketAddressto examine- Returns:
- The associated port value - negative if failed to resolve
-
toInetSocketAddress
public static java.net.InetSocketAddress toInetSocketAddress(java.net.SocketAddress remoteAddress)
Converts a
SocketAddressinto anInetSocketAddressif possible:- If already an
InetSocketAddressthen cast it as such - If an
SshdSocketAddressthen invoketoInetSocketAddress() - Otherwise, throw an exception
- Parameters:
remoteAddress- TheSocketAddress- ignored ifnull- Returns:
- The
InetSocketAddressinstance - Throws:
java.lang.ClassCastException- if argument is not already anInetSocketAddressor aSshdSocketAddress
- If already an
-
toAddressString
public static java.lang.String toAddressString(java.net.InetAddress addr)
-
isIPv4Address
public static boolean isIPv4Address(java.lang.String addr)
-
isPrivateIPv4Address
public static boolean isPrivateIPv4Address(java.lang.String addr)
Checks if the address is one of the allocated private blocks- Parameters:
addr- The address string- Returns:
trueif this is one of the allocated private blocks. Note: it assumes that the address string is indeed an IPv4 address- See Also:
isIPv4Address(String),PRIVATE_CLASS_A_PREFIX,PRIVATE_CLASS_B_PREFIX,PRIVATE_CLASS_C_PREFIX, Wiki page
-
isCarrierGradeNatIPv4Address
public static boolean isCarrierGradeNatIPv4Address(java.lang.String addr)
- Parameters:
addr- The address to be checked- Returns:
trueif the address is in the 100.64.0.0/10 range- See Also:
- RFC6598
-
isValidIPv4AddressComponent
public static boolean isValidIPv4AddressComponent(java.lang.CharSequence c)
Checks if the provided argument is a valid IPv4 address component:
- Not
null/empty - Has at most 3 digits
- Its value is ≤ 255
- Parameters:
c- TheCharSequenceto be validate- Returns:
trueif valid IPv4 address component
- Not
-
isIPv6Address
public static boolean isIPv6Address(java.lang.String address)
-
-