< prev index next >

src/java.base/unix/native/libnio/ch/Net.c

Print this page




 258     }
 259 
 260     /* By default, Linux uses the route default */
 261     if (domain == AF_INET6 && type == SOCK_DGRAM) {
 262         int arg = 1;
 263         if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, &arg,
 264                        sizeof(arg)) < 0) {
 265             JNU_ThrowByNameWithLastError(env,
 266                                          JNU_JAVANETPKG "SocketException",
 267                                          "Unable to set IPV6_MULTICAST_HOPS");
 268             close(fd);
 269             return -1;
 270         }
 271     }
 272 #endif
 273     return fd;
 274 }
 275 
 276 JNIEXPORT void JNICALL
 277 Java_sun_nio_ch_Net_bind0(JNIEnv *env, jclass clazz, jobject fdo, jboolean preferIPv6,
 278                           jboolean useExclBind, jobject iao, int port)
 279 {
 280     SOCKETADDRESS sa;
 281     int sa_len = 0;
 282     int rv = 0;
 283 
 284     if (NET_InetAddressToSockaddr(env, iao, port, &sa, &sa_len,
 285                                   preferIPv6) != 0) {
 286         return;



 287     }
 288 
 289     rv = NET_Bind(fdval(env, fdo), &sa, sa_len);
 290     if (rv != 0) {
 291         handleSocketError(env, errno);
 292     }
 293 }
 294 
 295 JNIEXPORT void JNICALL
 296 Java_sun_nio_ch_Net_listen(JNIEnv *env, jclass cl, jobject fdo, jint backlog)
 297 {
 298     if (listen(fdval(env, fdo), backlog) < 0)
 299         handleSocketError(env, errno);
 300 }
 301 
 302 JNIEXPORT jint JNICALL
 303 Java_sun_nio_ch_Net_connect0(JNIEnv *env, jclass clazz, jboolean preferIPv6,
 304                              jobject fdo, jobject iao, jint port)
 305 {
 306     SOCKETADDRESS sa;




 258     }
 259 
 260     /* By default, Linux uses the route default */
 261     if (domain == AF_INET6 && type == SOCK_DGRAM) {
 262         int arg = 1;
 263         if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, &arg,
 264                        sizeof(arg)) < 0) {
 265             JNU_ThrowByNameWithLastError(env,
 266                                          JNU_JAVANETPKG "SocketException",
 267                                          "Unable to set IPV6_MULTICAST_HOPS");
 268             close(fd);
 269             return -1;
 270         }
 271     }
 272 #endif
 273     return fd;
 274 }
 275 
 276 JNIEXPORT void JNICALL
 277 Java_sun_nio_ch_Net_bind0(JNIEnv *env, jclass clazz, jobject fdo, jboolean preferIPv6,
 278                           jboolean useExclBind, jobject iao, int port, int scopeId)
 279 {
 280     SOCKETADDRESS sa;
 281     int sa_len = 0;
 282     int rv = 0;
 283 
 284     if (NET_InetAddressToSockaddr(env, iao, port, &sa, &sa_len,
 285                                   preferIPv6) != 0) {
 286         return;
 287     }
 288     if (scopeId != -1) { // use the explicit scopeId, if there is one
 289         ((struct sockaddr_in6 *)&sa.sa)->sin6_scope_id = scopeId;
 290     }
 291 
 292     rv = NET_Bind(fdval(env, fdo), &sa, sa_len);
 293     if (rv != 0) {
 294         handleSocketError(env, errno);
 295     }
 296 }
 297 
 298 JNIEXPORT void JNICALL
 299 Java_sun_nio_ch_Net_listen(JNIEnv *env, jclass cl, jobject fdo, jint backlog)
 300 {
 301     if (listen(fdval(env, fdo), backlog) < 0)
 302         handleSocketError(env, errno);
 303 }
 304 
 305 JNIEXPORT jint JNICALL
 306 Java_sun_nio_ch_Net_connect0(JNIEnv *env, jclass clazz, jboolean preferIPv6,
 307                              jobject fdo, jobject iao, jint port)
 308 {
 309     SOCKETADDRESS sa;


< prev index next >