Regarding the Enhancement request for a new method (ex : getIPv6AddressByName) to give IPv6 address for the given host name.

S, Chandra Shekar (CDI R&D) chandra-shekar.s at hpe.com
Fri Aug 24 14:46:39 UTC 2018


Hi Chris,

This works.  When this property is set in my application always , it will resolve to IPv6 address.
Suppose if in application some code flow path needs IPv4 address resolution and some other code path needs IPv6 address resolution for different hostnames, then this is not possible.
So, if there are different method to resolve differently for IPv4 and IPv4 address , that would be helpful.

Thanks & Regards
Shekar

From: Chris Hegarty [mailto:chris.hegarty at oracle.com]
Sent: Thursday, August 23, 2018 2:42 PM
To: S, Chandra Shekar (CDI R&D) <chandra-shekar.s at hpe.com>
Cc: net-dev at openjdk.java.net; Pallavi Sonal <pallavi.sonal at oracle.com>
Subject: Re: Regarding the Enhancement request for a new method (ex : getIPv6AddressByName) to give IPv6 address for the given host name.

Hi Shekar,

Have you tried `java.net.preferIPv6Addresses` [1]? Setting
that property to `true` should result in IPv6 addresses, if
there are any,  being returned before IPv4 addresses.

-Chris.

[1] https://docs.oracle.com/javase/10/docs/api/java/net/doc-files/net-properties.html#Ipv4IPv6


On 21 Aug 2018, at 18:21, S, Chandra Shekar (CDI R&D) <chandra-shekar.s at hpe.com<mailto:chandra-shekar.s at hpe.com>> wrote:

Hello Experts,

This is regarding the Enhancement request  for a new method to give IPv6 address for the given host name.
Currently we have a method InetAddress.getByName<https://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html#getByName(java.lang.String)>(String<https://docs.oracle.com/javase/7/docs/api/java/lang/String.html> host) to give the IPAddress for the given hostname.

If the DNS server resolves to both IPv4 and IPv6 addresses for the given hostname, this method will return only the first IPv4 address.
Actually this method queries the DNS server first for the IPv4 addresses (ie, with option -query=A) and then queries the DNS server for the IPv6 (ie, with option -query=AAAA) addresses.
It consolidates the both IPv4 address and IPv6 address into the list, and returns the first address from the consolidate list. As the IPv4 address will be the first in the list , it always returns the IPv4 address only.

If we need to get only IPv6 address for the given host name (especially in the IPv6Only environments), currently there is no such method/api for this.
Currently we have method InetAddress.getAllByName<https://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html#getAllByName(java.lang.String)>(String<https://docs.oracle.com/javase/7/docs/api/java/lang/String.html> host), which gives both IPv4 address and IPv6 address  list, by iterating this we can get the IPv6 address resolution.
But it is nice to have a separate method to get/resolve to IPv6address. Ex : getIPv6AddressByName(String<https://docs.oracle.com/javase/7/docs/api/java/lang/String.html> host) or getByName<https://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html#getByName(java.lang.String)>(String<https://docs.oracle.com/javase/7/docs/api/java/lang/String.html> host, AddressType addressType) – addressType will be passed by the call get IPv4/IPv6 address.
This new method can query the DNS only for the IPv6 address (ie, with option -query=AAAA) which will have performance improvement over other.

Thanks & Regards
Shekar

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/net-dev/attachments/20180824/2b828a35/attachment-0001.html>


More information about the net-dev mailing list