RFR: JDK-6458027 - Disabling IPv6 on a specific network interface causes problems
Mark Sheppard
mark.sheppard at oracle.com
Mon Sep 16 04:23:16 PDT 2013
Not sure about Vista per se ... Initially I ran the test case on
windows 7 and the same failures existed
so on analysis and tracing lead me to the TwoStackPlainDatagramSocketImpl
I'm dependent on JPRT to handle the vista case ... if a Vista box exists
I can run the test explicitly on it to ensure nothing has been overlooked?
But, from my analysis the issue appeared to be the case that the
ipv6_available is
an OS level check, and this is insufficient as the individual
adapters/interfaces
may not be configured for IPv6, and so are handled as IPv4 interfaces.
regards
Mark
On 16/09/2013 12:11, Michael McMahon wrote:
> On 16/09/13 11:33, Chris Hegarty wrote:
>> Mark,
>>
>> From what I can see, I think the changes are correct.
>>
>> On 16/09/2013 11:10, Michael McMahon wrote:
>>> One comment so far. The ipv4mode parameter in
>>>
>>> getIPv4NetworkInterface()
>>>
>>> seems superfluous, with the call using parameter value "0"
>>> could be just elided to using the null return value directly.
>>
>> I think the param is needed to determine if the function should ever
>> return NULL, or force creation of the NI instance. From what I can
>> see, Mark's changes preserve the same behavior by using this param.
>>
>
> Right. I missed the return statement just before.
>
>>> I was a bit confused also that the new function is in the TwoStacks...
>>> module,
>>> but it seems this file contains native code common to both dual
>>> stack/two stacks
>>> mode. We probably should move this code to a different source file some
>>> time,
>>> but it might be useful to put a comment in at least to say that it is
>>> common
>>> to both modes.
>>
>> I'm not sure what what code you are referring to here, but as far as
>> I am aware there is no dual stack code in this file. Yes, there is
>> both IPv4 and IPv6, but both should be on separate sockets.
>>
>
> yep. Forget that as well. I thought it was being called from common
> code. So, I'm missing how this
> code is relevant then on Vista, which should be using the dual stack
> implementation then ?
>
> Michael
>
>
>> -Chris.
>>
>>>
>>> Michael
>>>
>>>
>>>
>>> On 15/09/13 12:34, Mark Sheppard wrote:
>>>> Hi
>>>> please oblige and review the webrev below which addresses the issue
>>>>
>>>> problem:
>>>> https://bugs.openjdk.java.net/browse/JDK-6458027
>>>>
>>>> webrev:
>>>> http://cr.openjdk.java.net/~msheppar/6458027/webrev/
>>>>
>>>> the core of the issue is that a windows platform may be IPv6
>>>> enabled, but
>>>> an individual adapter/interface may not be configured with for IPv6.
>>>> This causes a problem with the MulticastSocket.setNetworkInterface()
>>>> and MulticastSocket.getNetworkInterface() methods.
>>>>
>>>> The solution focuses on adding and additional check on the
>>>> individual interface for IPV6 enabling.
>>>>
>>>> The fallback position when an adapter is not configured for IPV6,
>>>> is to
>>>> handled it as IPV4, only.
>>>>
>>>> It should be noted that setting an Interface which does not have a
>>>> valid IP address bound to it will result in a SocketException. As
>>>> such, i
>>>> the onus in on the application to supply a validly configured
>>>> NetworkInterface object to the MulticastSocket.setNetworkInterface().
>>>>
>>>> With this in mind, the set of Interfaces constructed for the
>>>> associated test
>>>> is based on the interface being up, multicast, and valid IP address
>>>> configured.
>>>>
>>>> regards
>>>> Mark
>>>
>
More information about the net-dev
mailing list