Bubble android client. Fork of https://git.zx2c4.com/wireguard-android/
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /* SPDX-License-Identifier: Apache-2.0
  2. *
  3. * Copyright © 2017-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
  4. */
  5. #include <jni.h>
  6. #include <stdlib.h>
  7. #include <string.h>
  8. struct go_string { const char *str; long n; };
  9. extern int wgTurnOn(struct go_string ifname, int tun_fd, struct go_string settings);
  10. extern void wgTurnOff(int handle);
  11. extern int wgGetSocketV4(int handle);
  12. extern int wgGetSocketV6(int handle);
  13. extern char *wgGetConfig(int handle);
  14. extern char *wgVersion();
  15. JNIEXPORT jint JNICALL Java_com_wireguard_android_backend_GoBackend_wgTurnOn(JNIEnv *env, jclass c, jstring ifname, jint tun_fd, jstring settings)
  16. {
  17. const char *ifname_str = (*env)->GetStringUTFChars(env, ifname, 0);
  18. size_t ifname_len = (*env)->GetStringUTFLength(env, ifname);
  19. const char *settings_str = (*env)->GetStringUTFChars(env, settings, 0);
  20. size_t settings_len = (*env)->GetStringUTFLength(env, settings);
  21. int ret = wgTurnOn((struct go_string){
  22. .str = ifname_str,
  23. .n = ifname_len
  24. }, tun_fd, (struct go_string){
  25. .str = settings_str,
  26. .n = settings_len
  27. });
  28. (*env)->ReleaseStringUTFChars(env, ifname, ifname_str);
  29. (*env)->ReleaseStringUTFChars(env, settings, settings_str);
  30. return ret;
  31. }
  32. JNIEXPORT void JNICALL Java_com_wireguard_android_backend_GoBackend_wgTurnOff(JNIEnv *env, jclass c, jint handle)
  33. {
  34. wgTurnOff(handle);
  35. }
  36. JNIEXPORT jint JNICALL Java_com_wireguard_android_backend_GoBackend_wgGetSocketV4(JNIEnv *env, jclass c, jint handle)
  37. {
  38. return wgGetSocketV4(handle);
  39. }
  40. JNIEXPORT jint JNICALL Java_com_wireguard_android_backend_GoBackend_wgGetSocketV6(JNIEnv *env, jclass c, jint handle)
  41. {
  42. return wgGetSocketV6(handle);
  43. }
  44. JNIEXPORT jstring JNICALL Java_com_wireguard_android_backend_GoBackend_wgGetConfig(JNIEnv *env, jclass c, jint handle)
  45. {
  46. jstring ret;
  47. char *config = wgGetConfig(handle);
  48. if (!config)
  49. return NULL;
  50. ret = (*env)->NewStringUTF(env, config);
  51. free(config);
  52. return ret;
  53. }
  54. JNIEXPORT jstring JNICALL Java_com_wireguard_android_backend_GoBackend_wgVersion(JNIEnv *env, jclass c)
  55. {
  56. jstring ret;
  57. char *version = wgVersion();
  58. if (!version)
  59. return NULL;
  60. ret = (*env)->NewStringUTF(env, version);
  61. free(version);
  62. return ret;
  63. }