RFR 8216417: cleanup of IPv6 scope-id handling

Alan Bateman Alan.Bateman at oracle.com
Mon Jun 10 15:49:32 UTC 2019


On 10/06/2019 15:18, Michael McMahon wrote:
> Hi,
>
> Could I get the following change to net/nio reviewed please?
>
> It is a general cleanup of IPv6 scope_id handling which removes
> a lot of native code trickery (mostly in Linux) and simplifies the 
> handling
> of scope_ids such that:
>
> a) when binding/connecting/sending to a link-local address on the same 
> machine,
>    it is allowed to use addresses without a scope_id. In this case, we 
> check local NetworkInterfaces
>    for the correct scope_id to use.
>
> b) when connecting/sending to a remote link-local address, then a 
> scope_id must be specified
>     at all times.
>
> Scope_ids should be handled consistently between net and NIO and 
> across all platforms now.
>
> http://cr.openjdk.java.net/~michaelm/8216417/webrev.2/index.html
This looks like a really good cleanup.

One thing I notice is that AbstractPlainSocketImpl.connect sets 
this.address before converting it to the scoped address. This impacts 
the address returned by Socket::getInetAddress so I think it needs to 
set this.address first.

DatagramChannel.send will need to use toScopeAddress(InetSocketAddress) 
for the "not connected" case, probably after the SM check. There is 
probably a slightly bigger question here on on SM checks and  whether 
it's interesting to have the scope ID in the address or not. Long 
standing behavior seems to be to call the SM with the address that the 
user has specified and this may or may not include the scope ID.

-Alan



More information about the nio-dev mailing list