equal
deleted
inserted
replaced
433 return (jint)result; |
433 return (jint)result; |
434 } |
434 } |
435 |
435 |
436 JNIEXPORT void JNICALL |
436 JNIEXPORT void JNICALL |
437 Java_sun_nio_ch_Net_setIntOption0(JNIEnv *env, jclass clazz, jobject fdo, |
437 Java_sun_nio_ch_Net_setIntOption0(JNIEnv *env, jclass clazz, jobject fdo, |
438 jboolean mayNeedConversion, jint level, jint opt, jint arg) |
438 jboolean mayNeedConversion, jint level, |
|
439 jint opt, jint arg, jboolean isIPv6) |
439 { |
440 { |
440 int result; |
441 int result; |
441 struct linger linger; |
442 struct linger linger; |
442 u_char carg; |
443 u_char carg; |
443 void *parg; |
444 void *parg; |
476 if (n < 0) { |
477 if (n < 0) { |
477 JNU_ThrowByNameWithLastError(env, |
478 JNU_ThrowByNameWithLastError(env, |
478 JNU_JAVANETPKG "SocketException", |
479 JNU_JAVANETPKG "SocketException", |
479 "sun.nio.ch.Net.setIntOption"); |
480 "sun.nio.ch.Net.setIntOption"); |
480 } |
481 } |
|
482 #ifdef __linux__ |
|
483 if (level == IPPROTO_IPV6 && opt == IPV6_TCLASS && isIPv6) { |
|
484 // set the V4 option also |
|
485 setsockopt(fdval(env, fdo), IPPROTO_IP, IP_TOS, parg, arglen); |
|
486 } |
|
487 #endif |
481 } |
488 } |
482 |
489 |
483 JNIEXPORT jint JNICALL |
490 JNIEXPORT jint JNICALL |
484 Java_sun_nio_ch_Net_joinOrDrop4(JNIEnv *env, jobject this, jboolean join, jobject fdo, |
491 Java_sun_nio_ch_Net_joinOrDrop4(JNIEnv *env, jobject this, jboolean join, jobject fdo, |
485 jint group, jint interf, jint source) |
492 jint group, jint interf, jint source) |