mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 15:24:43 +02:00
8210493: Bind to node- or linklocal ipv6 multicast address fails
Reviewed-by: alanb, chegar
This commit is contained in:
parent
9429c17b35
commit
cea9c21479
3 changed files with 401 additions and 3 deletions
|
@ -803,8 +803,12 @@ NET_InetAddressToSockaddr(JNIEnv *env, jobject iaObj, int port,
|
|||
|
||||
#ifdef __linux__
|
||||
/*
|
||||
* On Linux if we are connecting to a link-local address
|
||||
* we need to specify the interface in the scope_id (2.4 kernel only)
|
||||
* On Linux if we are connecting to a
|
||||
*
|
||||
* - link-local address
|
||||
* - multicast interface-local or link-local address
|
||||
*
|
||||
* we need to specify the interface in the scope_id.
|
||||
*
|
||||
* If the scope was cached then we use the cached value. If not cached but
|
||||
* specified in the Inet6Address we use that, but we first check if the
|
||||
|
@ -814,7 +818,9 @@ NET_InetAddressToSockaddr(JNIEnv *env, jobject iaObj, int port,
|
|||
* we try to determine a value from the routing table. In all these
|
||||
* cases the used value is cached for further use.
|
||||
*/
|
||||
if (IN6_IS_ADDR_LINKLOCAL(&sa->sa6.sin6_addr)) {
|
||||
if (IN6_IS_ADDR_LINKLOCAL(&sa->sa6.sin6_addr)
|
||||
|| IN6_IS_ADDR_MC_NODELOCAL(&sa->sa6.sin6_addr)
|
||||
|| IN6_IS_ADDR_MC_LINKLOCAL(&sa->sa6.sin6_addr)) {
|
||||
unsigned int cached_scope_id = 0, scope_id = 0;
|
||||
|
||||
if (ia6_cachedscopeidID) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue