80 */ 81 #if defined(__solaris__) && !defined(TCP_EXCLBIND) 82 #define TCP_EXCLBIND 0x21 83 #endif 84 #if defined(__solaris__) && !defined(UDP_EXCLBIND) 85 #define UDP_EXCLBIND 0x0101 86 #endif 87 88 void setDefaultScopeID(JNIEnv *env, struct sockaddr *him) 89 { 90 #ifdef MACOSX 91 static jclass ni_class = NULL; 92 static jfieldID ni_defaultIndexID; 93 if (ni_class == NULL) { 94 jclass c = (*env)->FindClass(env, "java/net/NetworkInterface"); 95 CHECK_NULL(c); 96 c = (*env)->NewGlobalRef(env, c); 97 CHECK_NULL(c); 98 ni_defaultIndexID = (*env)->GetStaticFieldID( 99 env, c, "defaultIndex", "I"); 100 ni_class = c; 101 } 102 int defaultIndex; 103 struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)him; 104 if (sin6->sin6_family == AF_INET6 && (sin6->sin6_scope_id == 0)) { 105 defaultIndex = (*env)->GetStaticIntField(env, ni_class, 106 ni_defaultIndexID); 107 sin6->sin6_scope_id = defaultIndex; 108 } 109 #endif 110 } 111 112 int getDefaultScopeID(JNIEnv *env) { 113 static jclass ni_class = NULL; 114 static jfieldID ni_defaultIndexID; 115 if (ni_class == NULL) { 116 jclass c = (*env)->FindClass(env, "java/net/NetworkInterface"); 117 CHECK_NULL_RETURN(c, 0); 118 c = (*env)->NewGlobalRef(env, c); 119 CHECK_NULL_RETURN(c, 0); 120 ni_defaultIndexID = (*env)->GetStaticFieldID(env, c, 121 "defaultIndex", "I"); 122 ni_class = c; 123 } 124 int defaultIndex = 0; 125 defaultIndex = (*env)->GetStaticIntField(env, ni_class, 126 ni_defaultIndexID); 127 return defaultIndex; 128 } 129 130 #ifdef __solaris__ 131 static int init_tcp_max_buf, init_udp_max_buf; 132 static int tcp_max_buf; 133 static int udp_max_buf; 134 static int useExclBind = 0; 135 136 /* 137 * Get the specified parameter from the specified driver. The value 138 * of the parameter is assumed to be an 'int'. If the parameter 139 * cannot be obtained return -1 140 */ 141 int net_getParam(char *driver, char *param) | 80 */ 81 #if defined(__solaris__) && !defined(TCP_EXCLBIND) 82 #define TCP_EXCLBIND 0x21 83 #endif 84 #if defined(__solaris__) && !defined(UDP_EXCLBIND) 85 #define UDP_EXCLBIND 0x0101 86 #endif 87 88 void setDefaultScopeID(JNIEnv *env, struct sockaddr *him) 89 { 90 #ifdef MACOSX 91 static jclass ni_class = NULL; 92 static jfieldID ni_defaultIndexID; 93 if (ni_class == NULL) { 94 jclass c = (*env)->FindClass(env, "java/net/NetworkInterface"); 95 CHECK_NULL(c); 96 c = (*env)->NewGlobalRef(env, c); 97 CHECK_NULL(c); 98 ni_defaultIndexID = (*env)->GetStaticFieldID( 99 env, c, "defaultIndex", "I"); 100 CHECK_NULL(ni_defaultIndexID); 101 ni_class = c; 102 } 103 int defaultIndex; 104 struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)him; 105 if (sin6->sin6_family == AF_INET6 && (sin6->sin6_scope_id == 0)) { 106 defaultIndex = (*env)->GetStaticIntField(env, ni_class, 107 ni_defaultIndexID); 108 sin6->sin6_scope_id = defaultIndex; 109 } 110 #endif 111 } 112 113 int getDefaultScopeID(JNIEnv *env) { 114 static jclass ni_class = NULL; 115 static jfieldID ni_defaultIndexID; 116 if (ni_class == NULL) { 117 jclass c = (*env)->FindClass(env, "java/net/NetworkInterface"); 118 CHECK_NULL_RETURN(c, 0); 119 c = (*env)->NewGlobalRef(env, c); 120 CHECK_NULL_RETURN(c, 0); 121 ni_defaultIndexID = (*env)->GetStaticFieldID(env, c, 122 "defaultIndex", "I"); 123 CHECK_NULL_RETURN(ni_defaultIndexID, 0); 124 ni_class = c; 125 } 126 int defaultIndex = 0; 127 defaultIndex = (*env)->GetStaticIntField(env, ni_class, 128 ni_defaultIndexID); 129 return defaultIndex; 130 } 131 132 #ifdef __solaris__ 133 static int init_tcp_max_buf, init_udp_max_buf; 134 static int tcp_max_buf; 135 static int udp_max_buf; 136 static int useExclBind = 0; 137 138 /* 139 * Get the specified parameter from the specified driver. The value 140 * of the parameter is assumed to be an 'int'. If the parameter 141 * cannot be obtained return -1 142 */ 143 int net_getParam(char *driver, char *param) |