992 |
optval = (*env)->CallIntMethod(env, val, mid); |
optval = (*env)->CallIntMethod(env, val, mid); |
993 |
if ((*env)->ExceptionOccurred(env)) |
if ((*env)->ExceptionOccurred(env)) |
994 |
return; |
return; |
995 |
|
|
996 |
rc = setsockopt(fd, IPPROTO_IP, IP_TTL, &optval, sizeof(int)); |
rc = setsockopt(fd, IPPROTO_IP, IP_TTL, &optval, sizeof(int)); |
997 |
break; |
break; |
998 |
|
|
1038 |
rc = setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, (void*)&optval, |
rc = setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, (void*)&optval, |
1039 |
sizeof(int)); |
sizeof(int)); |
1040 |
break; |
break; |
1041 |
|
|
1042 |
|
case SOCKOPT_SO_BINDADDR: |
1043 |
|
JCL_ThrowException(env, SOCKET_EXCEPTION, "This option cannot be set"); |
1044 |
|
break; |
1045 |
|
|
1046 |
default: |
default: |
1047 |
JCL_ThrowException(env, SOCKET_EXCEPTION, "Unrecognized option"); |
JCL_ThrowException(env, SOCKET_EXCEPTION, "Unrecognized option"); |
1048 |
return; |
return; |
1049 |
} |
} |
1050 |
|
|
1051 |
/* Check to see if above operations succeeded */ |
/* Check to see if above operations succeeded */ |
1186 |
return(_javanet_create_inetaddress(env, ntohl(si.sin_addr.s_addr))); |
return(_javanet_create_inetaddress(env, ntohl(si.sin_addr.s_addr))); |
1187 |
break; |
break; |
1188 |
|
|
1189 |
|
case SOCKOPT_SO_BINDADDR: |
1190 |
|
memset(&si, 0, sizeof(struct sockaddr_in)); |
1191 |
|
optlen = sizeof(struct sockaddr_in); |
1192 |
|
rc = getsockname(fd, (struct sockaddr *) &si, &optlen); |
1193 |
|
if (rc == -1) |
1194 |
|
{ |
1195 |
|
JCL_ThrowException(env, SOCKET_EXCEPTION, strerror(errno)); |
1196 |
|
return(0); |
1197 |
|
} |
1198 |
|
|
1199 |
|
return(_javanet_create_inetaddress(env, ntohl(si.sin_addr.s_addr))); |
1200 |
|
break; |
1201 |
|
|
1202 |
case SOCKOPT_SO_REUSEADDR: |
case SOCKOPT_SO_REUSEADDR: |
1203 |
optlen = sizeof(int); |
optlen = sizeof(int); |
1204 |
rc = getsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (void*)&optval, &optlen); |
rc = getsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (void*)&optval, &optlen); |