< prev index next >

src/java.base/unix/native/libnet/NetworkInterface.c

Print this page
rev 14618 : 8158023: SocketExceptions contain too little information sometimes

*** 617,628 **** close(sock); (*env)->ReleaseStringUTFChars(env, name, name_utf); if (ret < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGLIFFLAGS failed"); return -1; } return flags; } --- 617,628 ---- close(sock); (*env)->ReleaseStringUTFChars(env, name, name_utf); if (ret < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "getFlags() failed"); return -1; } return flags; }
*** 1031,1042 **** if ((sock = socket(proto, SOCK_DGRAM, 0)) < 0) { // If EPROTONOSUPPORT is returned it means we don't have // support for this proto so don't throw an exception. if (errno != EPROTONOSUPPORT) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "Socket creation failed"); } return -1; } return sock; --- 1031,1042 ---- if ((sock = socket(proto, SOCK_DGRAM, 0)) < 0) { // If EPROTONOSUPPORT is returned it means we don't have // support for this proto so don't throw an exception. if (errno != EPROTONOSUPPORT) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "Socket creation failed"); } return -1; } return sock;
*** 1057,1073 **** struct ifreq if2; if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { if (errno == EPROTONOSUPPORT) { if ((sock = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "IPV6 Socket creation failed"); return -1; } } else { // errno is not NOSUPPORT ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "IPV4 Socket creation failed"); return -1; } } // Linux starting from 2.6.? kernel allows ioctl call with either IPv4 or --- 1057,1073 ---- struct ifreq if2; if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { if (errno == EPROTONOSUPPORT) { if ((sock = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "IPV6 Socket creation failed"); return -1; } } else { // errno is not NOSUPPORT ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "IPV4 Socket creation failed"); return -1; } } // Linux starting from 2.6.? kernel allows ioctl call with either IPv4 or
*** 1092,1110 **** #if defined(__linux__) // need to do a dummy SIOCGIFCONF to determine the buffer size. // SIOCGIFCOUNT doesn't work ifc.ifc_buf = NULL; if (ioctl(sock, SIOCGIFCONF, (char *)&ifc) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGIFCONF failed"); return ifs; } #elif defined(_AIX) ifc.ifc_buf = NULL; if (ioctl(sock, SIOCGSIZIFCONF, &(ifc.ifc_len)) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGSIZIFCONF failed"); return ifs; } #endif /* __linux__ */ CHECKED_MALLOC3(buf, char *, ifc.ifc_len); --- 1092,1110 ---- #if defined(__linux__) // need to do a dummy SIOCGIFCONF to determine the buffer size. // SIOCGIFCOUNT doesn't work ifc.ifc_buf = NULL; if (ioctl(sock, SIOCGIFCONF, (char *)&ifc) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGIFCONF) failed"); return ifs; } #elif defined(_AIX) ifc.ifc_buf = NULL; if (ioctl(sock, SIOCGSIZIFCONF, &(ifc.ifc_len)) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGSIZIFCONF) failed"); return ifs; } #endif /* __linux__ */ CHECKED_MALLOC3(buf, char *, ifc.ifc_len);
*** 1112,1123 **** ifc.ifc_buf = buf; #if defined(_AIX) siocgifconfRequest = CSIOCGIFCONF; #endif if (ioctl(sock, siocgifconfRequest, (char *)&ifc) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGIFCONF failed"); free(buf); return ifs; } // Iterate through each interface --- 1112,1123 ---- ifc.ifc_buf = buf; #if defined(_AIX) siocgifconfRequest = CSIOCGIFCONF; #endif if (ioctl(sock, siocgifconfRequest, (char *)&ifc) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGIFCONF) failed"); free(buf); return ifs; } // Iterate through each interface
*** 1208,1219 **** // use SIOCGSIZIFCONF to get size for SIOCGIFCONF ifc.ifc_buf = NULL; if (ioctl(sock, SIOCGSIZIFCONF, &(ifc.ifc_len)) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGSIZIFCONF failed"); return ifs; } bufsize = ifc.ifc_len; buf = (char *)malloc(bufsize); --- 1208,1219 ---- // use SIOCGSIZIFCONF to get size for SIOCGIFCONF ifc.ifc_buf = NULL; if (ioctl(sock, SIOCGSIZIFCONF, &(ifc.ifc_len)) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGSIZIFCONF) failed"); return ifs; } bufsize = ifc.ifc_len; buf = (char *)malloc(bufsize);
*** 1222,1233 **** return ifs; } ifc.ifc_len = bufsize; ifc.ifc_buf = buf; if (ioctl(sock, SIOCGIFCONF, (char *)&ifc) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl CSIOCGIFCONF failed"); free(buf); return ifs; } // Iterate through each interface --- 1222,1233 ---- return ifs; } ifc.ifc_len = bufsize; ifc.ifc_buf = buf; if (ioctl(sock, SIOCGIFCONF, (char *)&ifc) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGIFCONF) failed"); free(buf); return ifs; } // Iterate through each interface
*** 1307,1326 **** memset((char *)&if2, 0, sizeof(if2)); strncpy(if2.ifr_name, ifname, sizeof(if2.ifr_name) - 1); // Let's make sure the interface does have a broadcast address. if (ioctl(sock, SIOCGIFFLAGS, (char *)&if2) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGIFFLAGS failed"); return ret; } if (if2.ifr_flags & IFF_BROADCAST) { // It does, let's retrieve it if (ioctl(sock, SIOCGIFBRDADDR, (char *)&if2) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGIFBRDADDR failed"); return ret; } ret = brdcast_store; memcpy(ret, &if2.ifr_broadaddr, sizeof(struct sockaddr)); --- 1307,1326 ---- memset((char *)&if2, 0, sizeof(if2)); strncpy(if2.ifr_name, ifname, sizeof(if2.ifr_name) - 1); // Let's make sure the interface does have a broadcast address. if (ioctl(sock, SIOCGIFFLAGS, (char *)&if2) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGIFFLAGS) failed"); return ret; } if (if2.ifr_flags & IFF_BROADCAST) { // It does, let's retrieve it if (ioctl(sock, SIOCGIFBRDADDR, (char *)&if2) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGIFBRDADDR) failed"); return ret; } ret = brdcast_store; memcpy(ret, &if2.ifr_broadaddr, sizeof(struct sockaddr));
*** 1339,1350 **** struct ifreq if2; memset((char *)&if2, 0, sizeof(if2)); strncpy(if2.ifr_name, ifname, sizeof(if2.ifr_name) - 1); if (ioctl(sock, SIOCGIFNETMASK, (char *)&if2) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGIFNETMASK failed"); return -1; } mask = ntohl(((struct sockaddr_in*)&(if2.ifr_addr))->sin_addr.s_addr); ret = 0; --- 1339,1350 ---- struct ifreq if2; memset((char *)&if2, 0, sizeof(if2)); strncpy(if2.ifr_name, ifname, sizeof(if2.ifr_name) - 1); if (ioctl(sock, SIOCGIFNETMASK, (char *)&if2) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGIFNETMASK) failed"); return -1; } mask = ntohl(((struct sockaddr_in*)&(if2.ifr_addr))->sin_addr.s_addr); ret = 0;
*** 1409,1420 **** static struct ifreq ifr; int i; memset((char *)&ifr, 0, sizeof(ifr)); strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name) - 1); if (ioctl(sock, SIOCGIFHWADDR, &ifr) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGIFHWADDR failed"); return -1; } memcpy(buf, &ifr.ifr_hwaddr.sa_data, IFHWADDRLEN); --- 1409,1420 ---- static struct ifreq ifr; int i; memset((char *)&ifr, 0, sizeof(ifr)); strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name) - 1); if (ioctl(sock, SIOCGIFHWADDR, &ifr) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGIFHWADDR) failed"); return -1; } memcpy(buf, &ifr.ifr_hwaddr.sa_data, IFHWADDRLEN);
*** 1439,1450 **** JNU_ThrowNullPointerException(env, "network interface name is NULL"); return -1; } if (ioctl(sock, SIOCGIFMTU, (char *)&if2) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGIFMTU failed"); return -1; } return if2.ifr_mtu; } --- 1439,1450 ---- JNU_ThrowNullPointerException(env, "network interface name is NULL"); return -1; } if (ioctl(sock, SIOCGIFMTU, (char *)&if2) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGIFMTU) failed"); return -1; } return if2.ifr_mtu; }
*** 1481,1499 **** struct lifreq if2; if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { if (errno == EPROTONOSUPPORT) { if ((sock = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "IPV6 Socket creation failed"); return -1; } alreadyV6=1; } else { // errno is not NOSUPPORT ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "IPV4 Socket creation failed"); return -1; } } --- 1481,1499 ---- struct lifreq if2; if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { if (errno == EPROTONOSUPPORT) { if ((sock = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "IPV6 Socket creation failed"); return -1; } alreadyV6=1; } else { // errno is not NOSUPPORT ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "IPV4 Socket creation failed"); return -1; } }
*** 1508,1519 **** memset((char *)&if2, 0, sizeof(if2)); strncpy(if2.lifr_name, ifname, sizeof(if2.lifr_name) - 1); if (ioctl(sock, SIOCGLIFNETMASK, (char *)&if2) < 0) { close(sock); if ((sock = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "IPV6 Socket creation failed"); return -1; } } } --- 1508,1519 ---- memset((char *)&if2, 0, sizeof(if2)); strncpy(if2.lifr_name, ifname, sizeof(if2.lifr_name) - 1); if (ioctl(sock, SIOCGLIFNETMASK, (char *)&if2) < 0) { close(sock); if ((sock = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "IPV6 Socket creation failed"); return -1; } } }
*** 1553,1564 **** // Get the interface count numifs.lifn_family = family; numifs.lifn_flags = 0; if (ioctl(sock, SIOCGLIFNUM, (char *)&numifs) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGLIFNUM failed"); return ifs; } // Enumerate the interface configurations bufsize = numifs.lifn_count * sizeof (struct lifreq); --- 1553,1564 ---- // Get the interface count numifs.lifn_family = family; numifs.lifn_flags = 0; if (ioctl(sock, SIOCGLIFNUM, (char *)&numifs) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGLIFNUM) failed"); return ifs; } // Enumerate the interface configurations bufsize = numifs.lifn_count * sizeof (struct lifreq);
*** 1567,1578 **** ifc.lifc_family = family; ifc.lifc_flags = 0; ifc.lifc_len = bufsize; ifc.lifc_buf = buf; if (ioctl(sock, SIOCGLIFCONF, (char *)&ifc) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGLIFCONF failed"); free(buf); return ifs; } // Iterate through each interface --- 1567,1578 ---- ifc.lifc_family = family; ifc.lifc_flags = 0; ifc.lifc_len = bufsize; ifc.lifc_buf = buf; if (ioctl(sock, SIOCGLIFCONF, (char *)&ifc) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGLIFCONF) failed"); free(buf); return ifs; } // Iterate through each interface
*** 1635,1654 **** memset((char *)&if2, 0, sizeof(if2)); strncpy(if2.lifr_name, ifname, sizeof(if2.lifr_name) - 1); // Let's make sure the interface does have a broadcast address if (ioctl(sock, SIOCGLIFFLAGS, (char *)&if2) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGLIFFLAGS failed"); return ret; } if (if2.lifr_flags & IFF_BROADCAST) { // It does, let's retrieve it if (ioctl(sock, SIOCGLIFBRDADDR, (char *)&if2) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGLIFBRDADDR failed"); return ret; } ret = brdcast_store; memcpy(ret, &if2.lifr_broadaddr, sizeof(struct sockaddr)); --- 1635,1654 ---- memset((char *)&if2, 0, sizeof(if2)); strncpy(if2.lifr_name, ifname, sizeof(if2.lifr_name) - 1); // Let's make sure the interface does have a broadcast address if (ioctl(sock, SIOCGLIFFLAGS, (char *)&if2) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGLIFFLAGS) failed"); return ret; } if (if2.lifr_flags & IFF_BROADCAST) { // It does, let's retrieve it if (ioctl(sock, SIOCGLIFBRDADDR, (char *)&if2) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGLIFBRDADDR) failed"); return ret; } ret = brdcast_store; memcpy(ret, &if2.lifr_broadaddr, sizeof(struct sockaddr));
*** 1667,1678 **** struct lifreq if2; memset((char *)&if2, 0, sizeof(if2)); strncpy(if2.lifr_name, ifname, sizeof(if2.lifr_name) - 1); if (ioctl(sock, SIOCGLIFNETMASK, (char *)&if2) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGLIFNETMASK failed"); return -1; } mask = ntohl(((struct sockaddr_in*)&(if2.lifr_addr))->sin_addr.s_addr); ret = 0; --- 1667,1678 ---- struct lifreq if2; memset((char *)&if2, 0, sizeof(if2)); strncpy(if2.lifr_name, ifname, sizeof(if2.lifr_name) - 1); if (ioctl(sock, SIOCGLIFNETMASK, (char *)&if2) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGLIFNETMASK) failed"); return -1; } mask = ntohl(((struct sockaddr_in*)&(if2.lifr_addr))->sin_addr.s_addr); ret = 0;
*** 1718,1740 **** msg.buf = (char *)&dlpareq; msg.len = DL_PHYS_ADDR_REQ_SIZE; if (putmsg(fd, &msg, NULL, 0) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "putmsg failed"); return -1; } dlpaack = (dl_phys_addr_ack_t *)buf; msg.buf = (char *)buf; msg.len = 0; msg.maxlen = sizeof (buf); if (getmsg(fd, &msg, NULL, &flags) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "getmsg failed"); return -1; } if (msg.len < DL_PHYS_ADDR_ACK_SIZE || dlpaack->dl_primitive != DL_PHYS_ADDR_ACK) { JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", --- 1718,1740 ---- msg.buf = (char *)&dlpareq; msg.len = DL_PHYS_ADDR_REQ_SIZE; if (putmsg(fd, &msg, NULL, 0) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "putmsg() failed"); return -1; } dlpaack = (dl_phys_addr_ack_t *)buf; msg.buf = (char *)buf; msg.len = 0; msg.maxlen = sizeof (buf); if (getmsg(fd, &msg, NULL, &flags) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "getmsg() failed"); return -1; } if (msg.len < DL_PHYS_ADDR_ACK_SIZE || dlpaack->dl_primitive != DL_PHYS_ADDR_ACK) { JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException",
*** 1814,1825 **** struct lifreq if2; memset((char *)&if2, 0, sizeof(if2)); strncpy(if2.lifr_name, ifname, sizeof(if2.lifr_name) - 1); if (ioctl(sock, SIOCGLIFMTU, (char *)&if2) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGLIFMTU failed"); return -1; } return if2.lifr_mtu; } --- 1814,1825 ---- struct lifreq if2; memset((char *)&if2, 0, sizeof(if2)); strncpy(if2.lifr_name, ifname, sizeof(if2.lifr_name) - 1); if (ioctl(sock, SIOCGLIFMTU, (char *)&if2) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGLIFMTU) failed"); return -1; } return if2.lifr_mtu; }
*** 1854,1870 **** struct ifreq if2; if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { if (errno == EPROTONOSUPPORT) { if ((sock = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "IPV6 Socket creation failed"); return -1; } } else { // errno is not NOSUPPORT ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "IPV4 Socket creation failed"); return -1; } } return sock; --- 1854,1870 ---- struct ifreq if2; if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { if (errno == EPROTONOSUPPORT) { if ((sock = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "IPV6 Socket creation failed"); return -1; } } else { // errno is not NOSUPPORT ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "IPV4 Socket creation failed"); return -1; } } return sock;
*** 1881,1892 **** */ static netif *enumIPv4Interfaces(JNIEnv *env, int sock, netif *ifs) { struct ifaddrs *ifa, *origifa; if (getifaddrs(&origifa) != 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "getifaddrs() function failed"); return ifs; } for (ifa = origifa; ifa != NULL; ifa = ifa->ifa_next) { --- 1881,1892 ---- */ static netif *enumIPv4Interfaces(JNIEnv *env, int sock, netif *ifs) { struct ifaddrs *ifa, *origifa; if (getifaddrs(&origifa) != 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "getifaddrs() failed"); return ifs; } for (ifa = origifa; ifa != NULL; ifa = ifa->ifa_next) {
*** 1943,1954 **** struct ifaddrs *ifa, *origifa; struct sockaddr_in6 *sin6; struct in6_ifreq ifr6; if (getifaddrs(&origifa) != 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "getifaddrs() function failed"); return ifs; } for (ifa = origifa; ifa != NULL; ifa = ifa->ifa_next) { --- 1943,1954 ---- struct ifaddrs *ifa, *origifa; struct sockaddr_in6 *sin6; struct in6_ifreq ifr6; if (getifaddrs(&origifa) != 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "getifaddrs() failed"); return ifs; } for (ifa = origifa; ifa != NULL; ifa = ifa->ifa_next) {
*** 1960,1971 **** strlcpy(ifr6.ifr_name, ifa->ifa_name, sizeof(ifr6.ifr_name)); memcpy(&ifr6.ifr_addr, ifa->ifa_addr, MIN(sizeof(ifr6.ifr_addr), ifa->ifa_addr->sa_len)); if (ioctl(sock, SIOCGIFNETMASK_IN6, (caddr_t)&ifr6) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGIFNETMASK_IN6 failed"); freeifaddrs(origifa); freeif(ifs); return NULL; } --- 1960,1971 ---- strlcpy(ifr6.ifr_name, ifa->ifa_name, sizeof(ifr6.ifr_name)); memcpy(&ifr6.ifr_addr, ifa->ifa_addr, MIN(sizeof(ifr6.ifr_addr), ifa->ifa_addr->sa_len)); if (ioctl(sock, SIOCGIFNETMASK_IN6, (caddr_t)&ifr6) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGIFNETMASK_IN6) failed"); freeifaddrs(origifa); freeif(ifs); return NULL; }
*** 2020,2039 **** memset((char *)&if2, 0, sizeof(if2)); strncpy(if2.ifr_name, ifname, sizeof(if2.ifr_name) - 1); // Make sure the interface does have a broadcast address if (ioctl(sock, SIOCGIFFLAGS, (char *)&if2) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGIFFLAGS failed"); return ret; } if (if2.ifr_flags & IFF_BROADCAST) { // It does, let's retrieve it if (ioctl(sock, SIOCGIFBRDADDR, (char *)&if2) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGIFBRDADDR failed"); return ret; } ret = brdcast_store; memcpy(ret, &if2.ifr_broadaddr, sizeof(struct sockaddr)); --- 2020,2039 ---- memset((char *)&if2, 0, sizeof(if2)); strncpy(if2.ifr_name, ifname, sizeof(if2.ifr_name) - 1); // Make sure the interface does have a broadcast address if (ioctl(sock, SIOCGIFFLAGS, (char *)&if2) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGIFFLAGS) failed"); return ret; } if (if2.ifr_flags & IFF_BROADCAST) { // It does, let's retrieve it if (ioctl(sock, SIOCGIFBRDADDR, (char *)&if2) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGIFBRDADDR) failed"); return ret; } ret = brdcast_store; memcpy(ret, &if2.ifr_broadaddr, sizeof(struct sockaddr));
*** 2052,2063 **** struct ifreq if2; memset((char *)&if2, 0, sizeof(if2)); strncpy(if2.ifr_name, ifname, sizeof(if2.ifr_name) - 1); if (ioctl(sock, SIOCGIFNETMASK, (char *)&if2) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGIFNETMASK failed"); return -1; } mask = ntohl(((struct sockaddr_in*)&(if2.ifr_addr))->sin_addr.s_addr); ret = 0; --- 2052,2063 ---- struct ifreq if2; memset((char *)&if2, 0, sizeof(if2)); strncpy(if2.ifr_name, ifname, sizeof(if2.ifr_name) - 1); if (ioctl(sock, SIOCGIFNETMASK, (char *)&if2) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGIFNETMASK) failed"); return -1; } mask = ntohl(((struct sockaddr_in*)&(if2.ifr_addr))->sin_addr.s_addr); ret = 0;
*** 2108,2119 **** struct ifreq if2; memset((char *)&if2, 0, sizeof(if2)); strncpy(if2.ifr_name, ifname, sizeof(if2.ifr_name) - 1); if (ioctl(sock, SIOCGIFMTU, (char *)&if2) < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGIFMTU failed"); return -1; } return if2.ifr_mtu; } --- 2108,2119 ---- struct ifreq if2; memset((char *)&if2, 0, sizeof(if2)); strncpy(if2.ifr_name, ifname, sizeof(if2.ifr_name) - 1); if (ioctl(sock, SIOCGIFMTU, (char *)&if2) < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGIFMTU) failed"); return -1; } return if2.ifr_mtu; }
< prev index next >