From 079604c6cf7c8bbce34b8645b42a29112f4fb778 Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Tue, 9 Mar 2021 07:43:25 -0500 Subject: [PATCH] get rid of deprecated vpnio code in android --- jni/CMakeLists.txt | 3 +- jni/lokinet_daemon.cpp | 1 - jni/lokinet_jni_vpnio.hpp | 144 -------------------------------------- jni/lokinet_vpn.cpp | 85 ---------------------- 4 files changed, 1 insertion(+), 232 deletions(-) delete mode 100644 jni/lokinet_jni_vpnio.hpp delete mode 100644 jni/lokinet_vpn.cpp diff --git a/jni/CMakeLists.txt b/jni/CMakeLists.txt index b7ec974b3..176d4a45e 100644 --- a/jni/CMakeLists.txt +++ b/jni/CMakeLists.txt @@ -1,7 +1,6 @@ add_library(lokinet-android SHARED lokinet_config.cpp - lokinet_daemon.cpp - lokinet_vpn.cpp) + lokinet_daemon.cpp) add_log_tag(lokinet-android) target_link_libraries(lokinet-android liblokinet) diff --git a/jni/lokinet_daemon.cpp b/jni/lokinet_daemon.cpp index 8eaf59cf4..465078851 100644 --- a/jni/lokinet_daemon.cpp +++ b/jni/lokinet_daemon.cpp @@ -1,6 +1,5 @@ #include "network_loki_lokinet_LokinetDaemon.h" #include "lokinet_jni_common.hpp" -#include "lokinet_jni_vpnio.hpp" #include #include diff --git a/jni/lokinet_jni_vpnio.hpp b/jni/lokinet_jni_vpnio.hpp deleted file mode 100644 index 42e76a114..000000000 --- a/jni/lokinet_jni_vpnio.hpp +++ /dev/null @@ -1,144 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include - -namespace lokinet -{ - struct VPNIO - { - static VPNIO* - Get(llarp_vpn_io* vpn) - { - return static_cast(vpn->user); - } - - virtual ~VPNIO() = default; - - llarp_vpn_io io; - llarp_vpn_ifaddr_info info{{0}, {0}, 0}; - std::unique_ptr> closeWaiter; - - void - Closed() - { - if (closeWaiter) - closeWaiter->set_value(); - } - - virtual void - InjectSuccess() = 0; - - virtual void - InjectFail() = 0; - - virtual void - Tick() = 0; - - VPNIO() - { - io.impl = nullptr; - io.user = this; - io.closed = [](llarp_vpn_io* vpn) { VPNIO::Get(vpn)->Closed(); }; - io.injected = [](llarp_vpn_io* vpn, bool good) { - VPNIO* ptr = VPNIO::Get(vpn); - if (good) - ptr->InjectSuccess(); - else - ptr->InjectFail(); - }; - io.tick = [](llarp_vpn_io* vpn) { VPNIO::Get(vpn)->Tick(); }; - } - - bool - Init(llarp::Context* ptr) - { - if (Ready()) - return false; - return llarp_vpn_io_init(ptr, &io); - } - - bool - Ready() const - { - return io.impl != nullptr; - } - - void - Close() - { - if (not Ready()) - return; - if (closeWaiter) - return; - closeWaiter = std::make_unique>(); - llarp_vpn_io_close_async(&io); - closeWaiter->get_future().wait(); - closeWaiter.reset(); - io.impl = nullptr; - } - - llarp_vpn_pkt_reader* - Reader() - { - return llarp_vpn_io_packet_reader(&io); - } - - llarp_vpn_pkt_writer* - Writer() - { - return llarp_vpn_io_packet_writer(&io); - } - - ssize_t - ReadPacket(void* dst, size_t len) - { - if (not Ready()) - return -1; - unsigned char* buf = (unsigned char*)dst; - return llarp_vpn_io_readpkt(Reader(), buf, len); - } - - bool - WritePacket(void* pkt, size_t len) - { - if (not Ready()) - return false; - unsigned char* buf = (unsigned char*)pkt; - return llarp_vpn_io_writepkt(Writer(), buf, len); - } - - void - SetIfName(std::string_view val) - { - const auto sz = std::min(val.size(), sizeof(info.ifname)); - std::copy_n(val.data(), sz, info.ifname); - } - - void - SetIfAddr(std::string_view val) - { - const auto sz = std::min(val.size(), sizeof(info.ifaddr)); - std::copy_n(val.data(), sz, info.ifaddr); - } - }; -} // namespace lokinet - -struct lokinet_jni_vpnio : public lokinet::VPNIO -{ - void - InjectSuccess() override - {} - - void - InjectFail() override - {} - - void - Tick() override - {} -}; diff --git a/jni/lokinet_vpn.cpp b/jni/lokinet_vpn.cpp deleted file mode 100644 index ade1fb484..000000000 --- a/jni/lokinet_vpn.cpp +++ /dev/null @@ -1,85 +0,0 @@ -#include "network_loki_lokinet_LokinetVPN.h" -#include "lokinet_jni_vpnio.hpp" -#include "lokinet_jni_common.hpp" -#include -#include -#include - -extern "C" -{ - JNIEXPORT jint JNICALL - Java_network_loki_lokinet_LokinetVPN_PacketSize(JNIEnv*, jclass) - { - return llarp::net::IPPacket::MaxSize; - } - - JNIEXPORT jobject JNICALL - Java_network_loki_lokinet_LokinetVPN_Alloc(JNIEnv* env, jclass) - { - lokinet_jni_vpnio* vpn = new lokinet_jni_vpnio(); - return env->NewDirectByteBuffer(vpn, sizeof(lokinet_jni_vpnio)); - } - - JNIEXPORT void JNICALL - Java_network_loki_lokinet_LokinetVPN_Free(JNIEnv* env, jclass, jobject buf) - { - lokinet_jni_vpnio* vpn = FromBuffer(env, buf); - if (vpn == nullptr) - return; - delete vpn; - } - JNIEXPORT void JNICALL - Java_network_loki_lokinet_LokinetVPN_Stop(JNIEnv* env, jobject self) - { - lokinet_jni_vpnio* vpn = GetImpl(env, self); - if (vpn) - { - vpn->Close(); - } - } - - JNIEXPORT jint JNICALL - Java_network_loki_lokinet_LokinetVPN_ReadPkt(JNIEnv* env, jobject self, jobject pkt) - { - lokinet_jni_vpnio* vpn = GetImpl(env, self); - if (vpn == nullptr) - return -1; - void* pktbuf = env->GetDirectBufferAddress(pkt); - auto pktlen = env->GetDirectBufferCapacity(pkt); - if (pktbuf == nullptr) - return -1; - return vpn->ReadPacket(pktbuf, pktlen); - } - - JNIEXPORT jboolean JNICALL - Java_network_loki_lokinet_LokinetVPN_WritePkt(JNIEnv* env, jobject self, jobject pkt) - { - lokinet_jni_vpnio* vpn = GetImpl(env, self); - if (vpn == nullptr) - return false; - void* pktbuf = env->GetDirectBufferAddress(pkt); - auto pktlen = env->GetDirectBufferCapacity(pkt); - if (pktbuf == nullptr) - return false; - return vpn->WritePacket(pktbuf, pktlen); - } - - JNIEXPORT void JNICALL - Java_network_loki_lokinet_LokinetVPN_SetInfo(JNIEnv* env, jobject self, jobject info) - { - lokinet_jni_vpnio* vpn = GetImpl(env, self); - if (vpn == nullptr) - return; - VisitObjectMemberStringAsStringView( - env, info, "ifaddr", [vpn](std::string_view val) -> bool { - vpn->SetIfAddr(val); - return true; - }); - VisitObjectMemberStringAsStringView( - env, info, "ifname", [vpn](std::string_view val) -> bool { - vpn->SetIfName(val); - return true; - }); - vpn->info.netmask = GetObjectMemberAsInt(env, info, "netmask"); - } -}