RFR 8168840: InetAddress.getByName() throws java.net.UnknownHostException no such interface when used with virtual interfaces on Solaris
Chris Hegarty
chris.hegarty at oracle.com
Wed Dec 21 13:53:03 UTC 2016
Vyom,
Thank you for the explanation. Makes sense.
Your changes look fine as are, but maybe '250 *colonP = '\0';'
would be clearer ( though I do note that we do *name_colonP = 0;
elsewhere in this file ).
-Chris.
On 21/12/16 13:41, Vyom Tewari wrote:
> Hi Chris,
>
> If you create the Inet6Address using the following constructor
> "Inet6Address (String , byte[], String )" then it will call the
> following private method " initstr (hostName, addr, ifname);" and it you
> see the implementation of this method then you will see the below code.
>
> #######################################
>
> try {
> NetworkInterface nif = NetworkInterface.getByName (ifname);
> if (nif == null) {
> throw new UnknownHostException ("no such interface " +
> ifname);
> }
> initif (hostName, addr, nif);
>
> ########################################
>
>
> So this is the connection between Inet6Address and
> NetworkInterface.getByName but same is not the case for ipv4 address.
> As we added the scope name recently(not very recent but after
> jdk1.7.0_79) so if you pass the virtual sub interface interface
> like(2001:7a8:b0cd:1:0:0:0:17%net0:1) then it will fail to get the sub
> interface and UHE will be thrown.
>
> to handle this i did the code change.
>
>
> Thanks,
> Vyom
>
> On 12/21/2016 5:04 PM, Chris Hegarty wrote:
>> Hi Vyom,
>>
>> Sorry, I'm missing the connection between Inet6Address and
>> NetworkInterface.getByName, how do these interact?
>>
>> -Chris.
>>
>> On 21/12/16 10:20, Vyom Tewari wrote:
>>> incorporated the
>>> comments(http://cr.openjdk.java.net/~vtewari/8168840/webrev0.2/index.html
>>> <http://cr.openjdk.java.net/%7Evtewari/8168840/webrev0.2/index.html>).
>>>
>>>
>>> Thanks,
>>>
>>> Vyom
>>>
>>>
>>> On Wednesday 21 December 2016 02:58 PM, Langer, Christoph wrote:
>>>> Hi Vyom,
>>>>
>>>> looks good, thanks for the update.
>>>>
>>>> Minor formatting:
>>>> - Add a blank line between line 258/259 and 268/269 in the new file
>>>> version.
>>>> - line 259 //search the child list - add a space between "//" and
>>>> "search..."
>>>>
>>>> Disclaimer: I'm not an official reviewer.
>>>>
>>>> Best regards
>>>> Christoph
>>>>
>>>>> -----Original Message-----
>>>>> From: net-dev [mailto:net-dev-bounces at openjdk.java.net] On Behalf Of
>>>>> Vyom
>>>>> Tewari
>>>>> Sent: Mittwoch, 21. Dezember 2016 09:51
>>>>> Cc: net-dev <net-dev at openjdk.java.net>
>>>>> Subject: Re: RFR 8168840: InetAddress.getByName() throws
>>>>> java.net.UnknownHostException no such interface when used with virtual
>>>>> interfaces on Solaris
>>>>>
>>>>> Hi All,
>>>>>
>>>>> Please find the latest
>>>>> webrev(http://cr.openjdk.java.net/~vtewari/8168840/webrev0.1/index.html
>>>>>
>>>>> <http://cr.openjdk.java.net/%7Evtewari/8168840/webrev0.1/index.html>).
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Vyom
>>>>>
>>>>>
>>>>> On Tuesday 13 December 2016 01:38 PM, Langer, Christoph wrote:
>>>>>> Hi Vyom,
>>>>>>
>>>>>> thanks for looking at this. Overall your fix and test look good to
>>>>>> me.
>>>>>>
>>>>>> The coding to do the parent search and if required a child search in
>>>>> Java_java_net_NetworkInterface_getByName0 could be done a bit more
>>>>> straightforward, e.g. like this:
>>>>>> // search the list of interfaces by name
>>>>>> // for virtual interfaces we need to find the parent first
>>>>>> colonp = strchr(name_utf, ':');
>>>>>> if (colonp == NULL) {
>>>>>> searchName = name_utf;
>>>>>> } else {
>>>>>> jio_snprintf(pname, IFNAMESIZE, "%.*s", colonp - name_utf);
>>>>>> searchName = pname;
>>>>>> }
>>>>>> curr = ifs;
>>>>>> while (curr != NULL) {
>>>>>> if (strcmp(searchName, curr->name) == 0) {
>>>>>> break;
>>>>>> }
>>>>>> curr = curr->next;
>>>>>> }
>>>>>>
>>>>>> // search the child list
>>>>>> if (curr != NULL && colonp != NULL) {
>>>>>> curr = curr->childs;
>>>>>> while (curr != NULL) {
>>>>>> if (strcmp(name_utf, curr->name) == 0) {
>>>>>> break;
>>>>>> }
>>>>>> curr = curr->next;
>>>>>> }
>>>>>> }
>>>>>>
>>>>>> Best regards
>>>>>> Christoph
>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: net-dev [mailto:net-dev-bounces at openjdk.java.net] On Behalf Of
>>>>> Vyom
>>>>>>> Tewari
>>>>>>> Sent: Dienstag, 13. Dezember 2016 04:47
>>>>>>> To: net-dev <net-dev at openjdk.java.net>
>>>>>>> Subject: RFR 8168840: InetAddress.getByName() throws
>>>>>>> java.net.UnknownHostException no such interface when used with
>>>>>>> virtual
>>>>>>> interfaces on Solaris
>>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> Please review the code changes for below issue.
>>>>>>>
>>>>>>> BugId : https://bugs.openjdk.java.net/browse/JDK-8168840
>>>>>>>
>>>>>>> webrev :
>>>>>>> http://cr.openjdk.java.net/~vtewari/8168840/webrev0.0/index.html
>>>>>>> <http://cr.openjdk.java.net/%7Evtewari/8168840/webrev0.0/index.html>
>>>>>>>
>>>>>>> Thanks,
>>>>>>>
>>>>>>> Vyom
>>>
>
More information about the net-dev
mailing list