Top Description Fields Constructors Methods
org.keycloak.common.util

public Class NetworkUtils

extends Object
Class Inheritance
Imports
java.net.Inet4Address, .Inet6Address, .InetAddress, .InetSocketAddress, java.util.Arrays, .Locale

Utility methods related to networking.
Author
Brian Stansberry (c) 2011 Red Hat Inc.

Field Summary

Modifier and TypeField and Description
private static final boolean
private static final int
private static final int

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public static String

Returns:

String representing IPv6 in canonical form.
canonize
(String
String representing valid IPv6 address.
ipv6Address
)

Convert IPv6 adress into RFC 5952 form.

private static boolean
private static boolean
public static boolean
private static boolean
checkForPresence(final String key, final String value)

private static boolean
private static boolean
private static void
compactLongestZeroSequence(int[] hexRepresentatoin)

public static String
formatAddress(InetAddress inet)

Formats input address.

public static String
formatAddress(InetSocketAddress inet)

Converts socket address into string literal, which has form: 'address:port'.

private static String
formatAddress6(int[] hexRepresentation)

Converts IPV6 int[] representation into valid IPV6 string literal.

public static String
public static boolean
private static boolean

Returns:

true, if input string is an IPv4 address in IPv6 format.
isIPv4AddressInIPv6
(String
the address
ipv6Address
)

Check if it is an IPv4 in IPv6 format.

private static boolean

Returns:

true, if input string contains only hex digits and at least two colons, before '.' or '%' character.
mayBeIPv6Address
(String
Any string or null
input
)

Heuristic check if string might be an IPv6 address.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

can_bind_to_mcast_addrback to summary
private static final boolean can_bind_to_mcast_addr
IPV6_LENback to summary
private static final int IPV6_LEN
MAX_GROUP_LENGTHback to summary
private static final int MAX_GROUP_LENGTH

Constructor Detail

NetworkUtilsback to summary
private NetworkUtils()

Method Detail

canonizeback to summary
public static String canonize(String ipv6Address) throws IllegalArgumentException

Convert IPv6 adress into RFC 5952 form. E.g. 2001:db8:0:1:0:0:0:1 -> 2001:db8:0:1::1

Method is null safe, and if IPv4 address or host name is passed to the method it is returned wihout any processing.

Method also supports IPv4 in IPv6 (e.g. 0:0:0:0:0:ffff:192.0.2.1 -> ::ffff:192.0.2.1), and zone ID (e.g. fe80:0:0:0:f0f0:c0c0:1919:1234%4 -> fe80::f0f0:c0c0:1919:1234%4).

Parameters
ipv6Address:String

String representing valid IPv6 address.

Returns:String

String representing IPv6 in canonical form.

Exceptions
IllegalArgumentException:
if IPv6 format is unacceptable.
checkForHpback to summary
private static boolean checkForHp()
checkForLinuxback to summary
private static boolean checkForLinux()
checkForMacback to summary
public static boolean checkForMac()
checkForPresenceback to summary
private static boolean checkForPresence(final String key, final String value)
checkForSolarisback to summary
private static boolean checkForSolaris()
checkForWindowsback to summary
private static boolean checkForWindows()
compactLongestZeroSequenceback to summary
private static void compactLongestZeroSequence(int[] hexRepresentatoin)
formatAddressback to summary
public static String formatAddress(InetAddress inet)

Formats input address. For IPV4 returns simply host address, for IPV6 formats address according to RFC5952 rules. It does not embed IPV6 address in '[', ']', since those are part of IPV6 URI literal.

formatAddressback to summary
public static String formatAddress(InetSocketAddress inet)

Converts socket address into string literal, which has form: 'address:port'. Example:

  • 127.0.0.1:8080
  • dns.name.com:8080
  • [0fe:1::20]:8080
  • [::1]:8080
formatAddress6back to summary
private static String formatAddress6(int[] hexRepresentation)

Converts IPV6 int[] representation into valid IPV6 string literal. Sequence of '-1' values are converted into '::'.

formatPossibleIpv6Addressback to summary
public static String formatPossibleIpv6Address(String address)
isBindingToMulticastDressSupportedback to summary
public static boolean isBindingToMulticastDressSupported()
isIPv4AddressInIPv6back to summary
private static boolean isIPv4AddressInIPv6(String ipv6Address)

Check if it is an IPv4 in IPv6 format. e.g. 0:0:0:0:0:FFFF:127.0.0.1

Parameters
ipv6Address:String

the address

Returns:boolean

true, if input string is an IPv4 address in IPv6 format.

mayBeIPv6Addressback to summary
private static boolean mayBeIPv6Address(String input)

Heuristic check if string might be an IPv6 address.

Parameters
input:String

Any string or null

Returns:boolean

true, if input string contains only hex digits and at least two colons, before '.' or '%' character.