Android VpnService protéger socket qui est stocké en code natif?

J’écris une application VPN et le socket utilisé pour la connexion VPN est géré dans mon code C natif, pas en java. Comment utiliser VpnService.protect() sur ce socket? J’ai remarqué qu’il a une VpnService.protect(int) , puis-je renvoyer l’int que socket retourne du code natif à Java et le protège de cette façon?

Exemple

 // Native Code int socket; JNIEXPORT jint JNICALL Java_com_my_package_Class_initializeSocket ( JNIEnv *env, jobject jobj ) { socket = socket(AF_INET, SOCK_DGRAM, 0); // . . . Handler other socket preparations return (jint)socket; } 

 // Java Code public native int initializeSocket(); . . . int socket = initializeSocket(); this.protect(socket); 

modifier

J’ai trouvé cette question décrivant le fonctionnement de la fonction de protect , et il semble que son implémentation en C soit assez simple car il semble qu’il s’agit simplement d’un setsockopt . Mais je suis aussi relativement nouveau en C, je ne peux donc pas vraiment savoir comment le répliquer.

Je voulais simplement vérifier que mes processus étaient valides. Après avoir effectué plusieurs tests, j’ai vérifié que cela fonctionnait.

Exemple

 // Native Code int socket; JNIEXPORT jint JNICALL Java_com_my_package_Class_initializeSocket ( JNIEnv *env, jobject jobj ) { socket = socket(AF_INET, SOCK_DGRAM, 0); // . . . Handler other socket preparations return (jint)socket; } 

 // Java Code public native int initializeSocket(); . . . int socket = initializeSocket(); this.protect(socket);