< prev index next >

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

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

*** 619,630 **** close(sock); (*env)->ReleaseStringUTFChars(env, name, name_utf); if (ret < 0) { ! NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", ! "ioctl SIOCGLIFFLAGS failed"); return -1; } return flags; } --- 619,630 ---- close(sock); (*env)->ReleaseStringUTFChars(env, name, name_utf); if (ret < 0) { ! JNU_ThrowByNameWithMessageAndLastError ! (env, JNU_JAVANETPKG "SocketException", "getFlags() failed"); return -1; } return flags; }
*** 1059,1070 **** 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; --- 1059,1070 ---- 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;
*** 1085,1101 **** 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 --- 1085,1101 ---- 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
*** 1120,1138 **** #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); --- 1120,1138 ---- #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);
*** 1140,1151 **** 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 --- 1140,1151 ---- 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
*** 1266,1277 **** // 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); --- 1266,1277 ---- // 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);
*** 1280,1291 **** 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 --- 1280,1291 ---- 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
*** 1366,1385 **** 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)); --- 1366,1385 ---- 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));
*** 1398,1409 **** 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; } return computeMaskFromAddress(&(if2.ifr_addr)); } --- 1398,1409 ---- 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; } return computeMaskFromAddress(&(if2.ifr_addr)); }
*** 1461,1472 **** 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); --- 1461,1472 ---- 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);
*** 1491,1502 **** 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; } --- 1491,1502 ---- 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; }
*** 1533,1551 **** 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; } } --- 1533,1551 ---- 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; } }
*** 1560,1571 **** 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; } } } --- 1560,1571 ---- 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; } } }
*** 1605,1616 **** // 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); --- 1605,1616 ---- // 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);
*** 1619,1630 **** 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 --- 1619,1630 ---- 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
*** 1687,1706 **** 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)); --- 1687,1706 ---- 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));
*** 1719,1730 **** 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; } return computeMaskFromAddress(&(if2.lifr_addr)); } --- 1719,1730 ---- 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; } return computeMaskFromAddress(&(if2.lifr_addr)); }
*** 1762,1784 **** 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", --- 1762,1784 ---- 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",
*** 1858,1869 **** 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; } --- 1858,1869 ---- 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; }
*** 1898,1914 **** 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; --- 1898,1914 ---- 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;
*** 1925,1936 **** */ 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) { struct sockaddr* ifa_broadaddr = NULL; --- 1925,1936 ---- */ 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) { struct sockaddr* ifa_broadaddr = NULL;
*** 1995,2006 **** 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) { --- 1995,2006 ---- 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) {
*** 2012,2023 **** 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; } --- 2012,2023 ---- 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; }
*** 2073,2092 **** 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)); --- 2073,2092 ---- 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));
*** 2105,2116 **** 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; } return computeMaskFromAddress(&(if2.ifr_addr)); } --- 2105,2116 ---- 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; } return computeMaskFromAddress(&(if2.ifr_addr)); }
*** 2154,2165 **** 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; } --- 2154,2165 ---- 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 >