39 #define IPv4 1 40 #define IPv6 2 41 42 #define NET_ERROR(env, ex, msg) \ 43 { if (!(*env)->ExceptionOccurred(env)) JNU_ThrowByName(env, ex, msg) } 44 45 #define CHECK_NULL(x) if ((x) == NULL) return; 46 #define CHECK_NULL_RETURN(x, y) if ((x) == NULL) return y; 47 48 /************************************************************************ 49 * Cached field IDs 50 * 51 * The naming convention for field IDs is 52 * <class abbrv>_<fieldName>ID 53 * i.e. psi_timeoutID is PlainSocketImpl's timeout field's ID. 54 */ 55 extern jclass ia_class; 56 extern jfieldID ia_addressID; 57 extern jfieldID ia_familyID; 58 extern jfieldID ia_preferIPv6AddressID; 59 60 extern jclass ia4_class; 61 extern jmethodID ia4_ctrID; 62 63 /* NetworkInterface fields */ 64 extern jclass ni_class; 65 extern jfieldID ni_nameID; 66 extern jfieldID ni_indexID; 67 extern jfieldID ni_addrsID; 68 extern jfieldID ni_descID; 69 extern jmethodID ni_ctrID; 70 71 /* PlainSocketImpl fields */ 72 extern jfieldID psi_timeoutID; 73 extern jfieldID psi_fdID; 74 extern jfieldID psi_addressID; 75 extern jfieldID psi_portID; 76 extern jfieldID psi_localportID; 77 78 /* DatagramPacket fields */ 79 extern jfieldID dp_addressID; 80 extern jfieldID dp_portID; 81 extern jfieldID dp_bufID; 82 extern jfieldID dp_offsetID; 83 extern jfieldID dp_lengthID; 84 extern jfieldID dp_bufLengthID; 85 86 /* Inet6Address fields */ 87 extern jclass ia6_class; 88 extern jfieldID ia6_ipaddressID; 89 extern jfieldID ia6_scopeidID; 90 extern jfieldID ia6_cachedscopeidID; 91 extern jfieldID ia6_scopeidsetID; 92 extern jfieldID ia6_scopeifnameID; 93 extern jfieldID ia6_scopeifnamesetID; 94 extern jmethodID ia6_ctrID; 95 96 /************************************************************************ 97 * Utilities 98 */ 99 JNIEXPORT void JNICALL Java_java_net_InetAddress_init(JNIEnv *env, jclass cls); 100 JNIEXPORT void JNICALL Java_java_net_Inet4Address_init(JNIEnv *env, jclass cls); 101 JNIEXPORT void JNICALL Java_java_net_Inet6Address_init(JNIEnv *env, jclass cls); 102 JNIEXPORT void JNICALL Java_java_net_NetworkInterface_init(JNIEnv *env, jclass cls); 103 104 JNIEXPORT void JNICALL NET_ThrowNew(JNIEnv *env, int errorNum, char *msg); 105 int NET_GetError(); 106 107 void NET_ThrowCurrent(JNIEnv *env, char *msg); 108 109 jfieldID NET_GetFileDescriptorID(JNIEnv *env); 110 111 JNIEXPORT jint JNICALL ipv6_available() ; 112 113 void 114 NET_AllocSockaddr(struct sockaddr **him, int *len); 115 116 JNIEXPORT int JNICALL 117 NET_InetAddressToSockaddr(JNIEnv *env, jobject iaObj, int port, struct sockaddr *him, int *len, jboolean v4MappedAddress); 118 | 39 #define IPv4 1 40 #define IPv6 2 41 42 #define NET_ERROR(env, ex, msg) \ 43 { if (!(*env)->ExceptionOccurred(env)) JNU_ThrowByName(env, ex, msg) } 44 45 #define CHECK_NULL(x) if ((x) == NULL) return; 46 #define CHECK_NULL_RETURN(x, y) if ((x) == NULL) return y; 47 48 /************************************************************************ 49 * Cached field IDs 50 * 51 * The naming convention for field IDs is 52 * <class abbrv>_<fieldName>ID 53 * i.e. psi_timeoutID is PlainSocketImpl's timeout field's ID. 54 */ 55 extern jclass ia_class; 56 extern jfieldID ia_addressID; 57 extern jfieldID ia_familyID; 58 extern jfieldID ia_preferIPv6AddressID; 59 extern jfieldID ia_hostNameID; 60 61 extern jclass ia4_class; 62 extern jmethodID ia4_ctrID; 63 64 /* NetworkInterface fields */ 65 extern jclass ni_class; 66 extern jfieldID ni_nameID; 67 extern jfieldID ni_indexID; 68 extern jfieldID ni_addrsID; 69 extern jfieldID ni_descID; 70 extern jmethodID ni_ctrID; 71 72 /* PlainSocketImpl fields */ 73 extern jfieldID psi_timeoutID; 74 extern jfieldID psi_fdID; 75 extern jfieldID psi_addressID; 76 extern jfieldID psi_portID; 77 extern jfieldID psi_localportID; 78 79 /* DatagramPacket fields */ 80 extern jfieldID dp_addressID; 81 extern jfieldID dp_portID; 82 extern jfieldID dp_bufID; 83 extern jfieldID dp_offsetID; 84 extern jfieldID dp_lengthID; 85 extern jfieldID dp_bufLengthID; 86 87 /* Inet6Address fields */ 88 extern jclass ia6_class; 89 extern jfieldID ia6_ipaddressID; 90 extern jfieldID ia6_scopeidID; 91 extern jfieldID ia6_cachedscopeidID; 92 extern jfieldID ia6_scopeidsetID; 93 extern jfieldID ia6_scopeifnameID; 94 extern jfieldID ia6_scopeifnamesetID; 95 extern jmethodID ia6_ctrID; 96 97 /************************************************************************ 98 * Utilities 99 */ 100 void init(JNIEnv *env); 101 102 JNIEXPORT void JNICALL Java_java_net_InetAddress_init(JNIEnv *env, jclass cls); 103 JNIEXPORT void JNICALL Java_java_net_Inet4Address_init(JNIEnv *env, jclass cls); 104 JNIEXPORT void JNICALL Java_java_net_Inet6Address_init(JNIEnv *env, jclass cls); 105 JNIEXPORT void JNICALL Java_java_net_NetworkInterface_init(JNIEnv *env, jclass cls); 106 107 JNIEXPORT void JNICALL NET_ThrowNew(JNIEnv *env, int errorNum, char *msg); 108 int NET_GetError(); 109 110 void NET_ThrowCurrent(JNIEnv *env, char *msg); 111 112 jfieldID NET_GetFileDescriptorID(JNIEnv *env); 113 114 JNIEXPORT jint JNICALL ipv6_available() ; 115 116 void 117 NET_AllocSockaddr(struct sockaddr **him, int *len); 118 119 JNIEXPORT int JNICALL 120 NET_InetAddressToSockaddr(JNIEnv *env, jobject iaObj, int port, struct sockaddr *him, int *len, jboolean v4MappedAddress); 121 |