263 JNU_ThrowByName(env, JNU_JAVAIOPKG "InterruptedIOException", msg); 264 break; 265 default: 266 errno = errorNumber; 267 JNU_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", msg); 268 break; 269 } 270 } 271 272 273 jfieldID 274 NET_GetFileDescriptorID(JNIEnv *env) 275 { 276 jclass cls = (*env)->FindClass(env, "java/io/FileDescriptor"); 277 CHECK_NULL_RETURN(cls, NULL); 278 return (*env)->GetFieldID(env, cls, "fd", "I"); 279 } 280 281 jint IPv4_supported() 282 { 283 int fd = socket(AF_INET, SOCK_STREAM, 0) ; 284 if (fd < 0) { 285 return JNI_FALSE; 286 } 287 close(fd); 288 return JNI_TRUE; 289 } 290 291 #if defined(DONT_ENABLE_IPV6) 292 jint IPv6_supported() 293 { 294 return JNI_FALSE; 295 } 296 297 #else /* !DONT_ENABLE_IPV6 */ 298 299 jint IPv6_supported() 300 { 301 int fd; 302 void *ipv6_fn; 303 SOCKETADDRESS sa; 304 socklen_t sa_len = sizeof(SOCKETADDRESS); 305 306 fd = socket(AF_INET6, SOCK_STREAM, 0) ; 307 if (fd < 0) { 308 /* | 263 JNU_ThrowByName(env, JNU_JAVAIOPKG "InterruptedIOException", msg); 264 break; 265 default: 266 errno = errorNumber; 267 JNU_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", msg); 268 break; 269 } 270 } 271 272 273 jfieldID 274 NET_GetFileDescriptorID(JNIEnv *env) 275 { 276 jclass cls = (*env)->FindClass(env, "java/io/FileDescriptor"); 277 CHECK_NULL_RETURN(cls, NULL); 278 return (*env)->GetFieldID(env, cls, "fd", "I"); 279 } 280 281 jint IPv4_supported() 282 { 283 return JNI_FALSE; 284 } 285 286 #if defined(DONT_ENABLE_IPV6) 287 jint IPv6_supported() 288 { 289 return JNI_FALSE; 290 } 291 292 #else /* !DONT_ENABLE_IPV6 */ 293 294 jint IPv6_supported() 295 { 296 int fd; 297 void *ipv6_fn; 298 SOCKETADDRESS sa; 299 socklen_t sa_len = sizeof(SOCKETADDRESS); 300 301 fd = socket(AF_INET6, SOCK_STREAM, 0) ; 302 if (fd < 0) { 303 /* |