< prev index next >

src/jdk.sctp/unix/native/libsctp/SctpNet.c

Print this page
rev 59105 : imported patch corelibs


 341     if (isaCls == 0) {
 342         initializeISA(env);
 343         CHECK_NULL_RETURN(isaCls, NULL);
 344     }
 345 
 346     return (*env)->NewObject(env, isaCls, isaCtrID, ia, port);
 347 }
 348 
 349 /*
 350  * Class:     sun_nio_ch_sctp_SctpNet
 351  * Method:    getLocalAddresses0
 352  * Signature: (I)[Ljava/net/SocketAddress;
 353  */
 354 JNIEXPORT jobjectArray JNICALL Java_sun_nio_ch_sctp_SctpNet_getLocalAddresses0
 355   (JNIEnv *env, jclass klass, jint fd)
 356 {
 357     void *addr_buf, *laddr;
 358     int i, addrCount;
 359     jobjectArray isaa;
 360 
 361 #ifdef __solaris__
 362     if ((addrCount = nio_sctp_getladdrs(fd, 0, (void **)&addr_buf)) == -1) {
 363 #else /* __linux__ */
 364     if ((addrCount = nio_sctp_getladdrs(fd, 0, (struct sockaddr **)&addr_buf)) == -1) {
 365 #endif
 366         handleSocketError(env, errno);
 367         return NULL;
 368     }
 369 
 370     if (addrCount < 1)
 371         return NULL;
 372 
 373     if (isaCls == 0) {
 374         initializeISA(env);
 375         CHECK_NULL_RETURN(isaCls, NULL);
 376     }
 377 
 378     isaa = (*env)->NewObjectArray(env, addrCount, isaCls, NULL);
 379     if (isaa == NULL) {
 380         nio_sctp_freeladdrs(addr_buf);
 381         return NULL;
 382     }
 383 
 384     laddr = addr_buf;
 385     for (i = 0; i < addrCount; i++) {


 390             isa = (*env)->NewObject(env, isaCls, isaCtrID, ia, port);
 391         if (isa == NULL)
 392             break;
 393         (*env)->SetObjectArrayElement(env, isaa, i, isa);
 394 
 395         if (((struct sockaddr *)addr_buf)->sa_family == AF_INET)
 396             addr_buf = ((struct sockaddr_in *)addr_buf) + 1;
 397         else
 398             addr_buf = ((struct sockaddr_in6 *)addr_buf) + 1;
 399     }
 400 
 401     nio_sctp_freeladdrs(laddr);
 402     return isaa;
 403 }
 404 
 405 jobjectArray getRemoteAddresses(JNIEnv *env, jint fd, sctp_assoc_t id) {
 406     void *addr_buf, *paddr;
 407     int i, addrCount;
 408     jobjectArray isaa;
 409 
 410 #if defined(__solaris__)
 411     if ((addrCount = nio_sctp_getpaddrs(fd, id, (void **)&addr_buf)) == -1) {
 412 #else /* __linux__ */
 413     if ((addrCount = nio_sctp_getpaddrs(fd, id, (struct sockaddr **)&addr_buf)) == -1) {
 414 #endif
 415         handleSocketError(env, errno);
 416         return NULL;
 417     }
 418 
 419     if (addrCount < 1)
 420         return NULL;
 421 
 422     if (isaCls == 0) {
 423         initializeISA(env);
 424         CHECK_NULL_RETURN(isaCls, NULL);
 425     }
 426 
 427     isaa = (*env)->NewObjectArray(env, addrCount, isaCls, NULL);
 428     if (isaa == NULL) {
 429         nio_sctp_freepaddrs(addr_buf);
 430         return NULL;
 431     }
 432 
 433     paddr = addr_buf;
 434     for (i = 0; i < addrCount; i++) {




 341     if (isaCls == 0) {
 342         initializeISA(env);
 343         CHECK_NULL_RETURN(isaCls, NULL);
 344     }
 345 
 346     return (*env)->NewObject(env, isaCls, isaCtrID, ia, port);
 347 }
 348 
 349 /*
 350  * Class:     sun_nio_ch_sctp_SctpNet
 351  * Method:    getLocalAddresses0
 352  * Signature: (I)[Ljava/net/SocketAddress;
 353  */
 354 JNIEXPORT jobjectArray JNICALL Java_sun_nio_ch_sctp_SctpNet_getLocalAddresses0
 355   (JNIEnv *env, jclass klass, jint fd)
 356 {
 357     void *addr_buf, *laddr;
 358     int i, addrCount;
 359     jobjectArray isaa;
 360 



 361     if ((addrCount = nio_sctp_getladdrs(fd, 0, (struct sockaddr **)&addr_buf)) == -1) {

 362         handleSocketError(env, errno);
 363         return NULL;
 364     }
 365 
 366     if (addrCount < 1)
 367         return NULL;
 368 
 369     if (isaCls == 0) {
 370         initializeISA(env);
 371         CHECK_NULL_RETURN(isaCls, NULL);
 372     }
 373 
 374     isaa = (*env)->NewObjectArray(env, addrCount, isaCls, NULL);
 375     if (isaa == NULL) {
 376         nio_sctp_freeladdrs(addr_buf);
 377         return NULL;
 378     }
 379 
 380     laddr = addr_buf;
 381     for (i = 0; i < addrCount; i++) {


 386             isa = (*env)->NewObject(env, isaCls, isaCtrID, ia, port);
 387         if (isa == NULL)
 388             break;
 389         (*env)->SetObjectArrayElement(env, isaa, i, isa);
 390 
 391         if (((struct sockaddr *)addr_buf)->sa_family == AF_INET)
 392             addr_buf = ((struct sockaddr_in *)addr_buf) + 1;
 393         else
 394             addr_buf = ((struct sockaddr_in6 *)addr_buf) + 1;
 395     }
 396 
 397     nio_sctp_freeladdrs(laddr);
 398     return isaa;
 399 }
 400 
 401 jobjectArray getRemoteAddresses(JNIEnv *env, jint fd, sctp_assoc_t id) {
 402     void *addr_buf, *paddr;
 403     int i, addrCount;
 404     jobjectArray isaa;
 405 



 406     if ((addrCount = nio_sctp_getpaddrs(fd, id, (struct sockaddr **)&addr_buf)) == -1) {

 407         handleSocketError(env, errno);
 408         return NULL;
 409     }
 410 
 411     if (addrCount < 1)
 412         return NULL;
 413 
 414     if (isaCls == 0) {
 415         initializeISA(env);
 416         CHECK_NULL_RETURN(isaCls, NULL);
 417     }
 418 
 419     isaa = (*env)->NewObjectArray(env, addrCount, isaCls, NULL);
 420     if (isaa == NULL) {
 421         nio_sctp_freepaddrs(addr_buf);
 422         return NULL;
 423     }
 424 
 425     paddr = addr_buf;
 426     for (i = 0; i < addrCount; i++) {


< prev index next >