提交 17f33b79 编写于 作者: C chegar

6800805: java.net.NetworkInterface.getNetworkInterfaces() does not list IPv6...

6800805: java.net.NetworkInterface.getNetworkInterfaces() does not list IPv6 network interfaces correctly
Reviewed-by: jccollet
上级 9e042348
......@@ -969,13 +969,39 @@ netif *addif(JNIEnv *env, netif *ifs, char *if_name, int index, int family,
// Got access to parent, so create it if necessary.
strcpy(vname, name);
*unit = '\0';
}
else {
} else {
#if defined(__solaris__) && defined(AF_INET6)
struct lifreq lifr;
memset((char *) &lifr, 0, sizeof(lifr));
strcpy(lifr.lifr_name, vname);
/* Try with an IPv6 socket in case the interface has only IPv6
* addresses assigned to it */
close(sock);
sock = JVM_Socket(AF_INET6, SOCK_DGRAM, 0);
if (sock < 0) {
NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException",
"Socket creation failed");
return ifs; /* return untouched list */
}
if (ioctl(sock, SIOCGLIFFLAGS, (char *)&lifr) >= 0) {
// Got access to parent, so create it if necessary.
strcpy(vname, name);
*unit = '\0';
} else {
// failed to access parent interface do not create parent.
// We are a virtual interface with no parent.
isVirtual = 1;
vname[0] = 0;
}
#else
// failed to access parent interface do not create parent.
// We are a virtual interface with no parent.
isVirtual = 1;
vname[0] = 0;
#endif
}
}
close(sock);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册